From d5f2b160291c5b11d367d36ef2b4a21ac1e3127c Mon Sep 17 00:00:00 2001 From: sequel21 Date: Fri, 25 Oct 2024 16:05:32 +0100 Subject: [PATCH 01/12] First iteration of updates to move to Crescendo network --- contracts/DigitalArt.cdc | 385 +- contracts/Evergreen.cdc | 72 +- contracts/SequelMarketplace.cdc | 79 +- contracts/standard/Burner.cdc | 50 + contracts/standard/ExampleNFT.cdc | 371 ++ contracts/standard/FUSD.cdc | 245 +- contracts/standard/FlowToken.cdc | 237 +- contracts/standard/FungibleToken.cdc | 145 +- .../standard/FungibleTokenMetadataViews.cdc | 185 + .../standard/FungibleTokenSwitchboard.cdc | 384 +- contracts/standard/MetadataViews.cdc | 935 +++-- contracts/standard/NFTStorefront.cdc | 199 +- contracts/standard/NonFungibleToken.cdc | 323 +- contracts/standard/ViewResolver.cdc | 58 + .../thirdparty/nft_catalog/NFTCatalog.cdc | 155 +- .../thirdparty/nft_catalog/NFTRetrieval.cdc | 42 +- contracts/thirdparty/versus/Art.cdc | 827 ++-- contracts/thirdparty/versus/Content.cdc | 210 +- flow.json | 358 +- lib/go/iinft/client.go | 48 +- lib/go/iinft/client_test.go | 17 +- lib/go/iinft/cmd/flocal/main.go | 5 +- lib/go/iinft/config.go | 12 +- lib/go/iinft/embedded.go | 14 +- lib/go/iinft/emulator/gateway.go | 300 -- lib/go/iinft/evergreen/cadence.go | 95 +- lib/go/iinft/go.mod | 248 +- lib/go/iinft/go.sum | 3350 ++++++++++------- lib/go/iinft/gwtf/account.go | 52 +- lib/go/iinft/gwtf/account_test.go | 7 +- lib/go/iinft/gwtf/asserts.go | 3 +- lib/go/iinft/gwtf/cadence.go | 16 +- lib/go/iinft/gwtf/cadence_test.go | 14 +- lib/go/iinft/gwtf/event.go | 25 +- lib/go/iinft/gwtf/event_test.go | 2 +- lib/go/iinft/gwtf/script.go | 36 +- lib/go/iinft/gwtf/script_test.go | 6 +- lib/go/iinft/gwtf/setup.go | 51 +- lib/go/iinft/gwtf/templates.go | 25 +- lib/go/iinft/gwtf/transaction.go | 85 +- lib/go/iinft/gwtf/transaction_test.go | 2 +- lib/go/iinft/internal/assets/assets.go | 242 +- lib/go/iinft/logger.go | 2 +- lib/go/iinft/scripts/engine.go | 16 +- lib/go/iinft/scripts/engine_test.go | 33 +- .../transactions/account_fund_flow.cdc | 23 +- lib/go/iinft/scripts/testing.go | 37 +- .../iinft/test/digitalart_integration_test.go | 131 +- lib/go/iinft/test/digitalart_test.go | 163 +- lib/go/iinft/test/digitalart_test.go.backup | 939 +++++ lib/go/iinft/test/evergreen_test.go | 25 +- lib/go/iinft/test/fusd_test.go | 16 +- .../test/marketplace_integration_test.go | 50 +- lib/go/iinft/test/marketplace_test.go | 145 +- lib/go/iinft/types.go | 69 +- lib/go/iinft/types_test.go | 2 +- 56 files changed, 7444 insertions(+), 4122 deletions(-) create mode 100644 contracts/standard/Burner.cdc create mode 100644 contracts/standard/ExampleNFT.cdc create mode 100644 contracts/standard/FungibleTokenMetadataViews.cdc create mode 100644 contracts/standard/ViewResolver.cdc delete mode 100644 lib/go/iinft/emulator/gateway.go create mode 100644 lib/go/iinft/test/digitalart_test.go.backup diff --git a/contracts/DigitalArt.cdc b/contracts/DigitalArt.cdc index 20a88dc..e96c8fd 100644 --- a/contracts/DigitalArt.cdc +++ b/contracts/DigitalArt.cdc @@ -1,4 +1,5 @@ import NonFungibleToken from "./standard/NonFungibleToken.cdc" +import ViewResolver from "/standard/ViewResolver.cdc" import MetadataViews from "./standard/MetadataViews.cdc" import Evergreen from "./Evergreen.cdc" @@ -9,39 +10,55 @@ import Evergreen from "./Evergreen.cdc" // // Source: https://github.com/piprate/sequel-flow-contracts // -pub contract DigitalArt: NonFungibleToken { +access(all) +contract DigitalArt: NonFungibleToken { // Events // - pub event ContractInitialized() - pub event Withdraw(id: UInt64, from: Address?) - pub event Deposit(id: UInt64, to: Address?) - pub event Minted(id: UInt64, asset: String, edition: UInt64, modID: UInt64) + access(all) + event ContractInitialized() + access(all) + event Withdraw(id: UInt64, from: Address?) + access(all) + event Deposit(id: UInt64, to: Address?) + access(all) + event Minted(id: UInt64, asset: String, edition: UInt64, modID: UInt64) // Named Paths // - pub let CollectionStoragePath: StoragePath - pub let CollectionPublicPath: PublicPath - pub let AdminStoragePath: StoragePath - pub let AdminPrivatePath: PrivatePath + access(all) + let CollectionStoragePath: StoragePath + access(all) + let CollectionPublicPath: PublicPath + access(all) + let AdminStoragePath: StoragePath + access(all) + let AdminPrivatePath: PrivatePath // The total number of DigitalArt NFTs that have been minted // - pub var totalSupply: UInt64 + access(all) + var totalSupply: UInt64 // Variable size dictionary of Master resources - access(self) var masters: {String: Master} + access(self) + var masters: {String: Master} // Master enables mint-on-demand functionality and defines a master copy of a token // that is used to mint a number of editions (limited by metadata.maxEditions). // Once all editions are minted, the master is 'closed' but remains on-chain // to prevent re-minting NFTs with the same asset ID. // - pub struct Master { - pub var metadata: Metadata? - pub var evergreenProfile: Evergreen.Profile? - pub var nextEdition: UInt64 - pub var closed: Bool + access(all) + struct Master { + access(all) + var metadata: Metadata? + access(all) + var evergreenProfile: Evergreen.Profile? + access(all) + var nextEdition: UInt64 + access(all) + var closed: Bool init(metadata: Metadata, evergreenProfile: Evergreen.Profile) { self.metadata = metadata @@ -50,13 +67,15 @@ pub contract DigitalArt: NonFungibleToken { self.closed = false } - pub fun newEditionID() : UInt64 { + access(all) + fun newEditionID() : UInt64 { let val = self.nextEdition self.nextEdition = self.nextEdition + UInt64(1) return val } - pub fun availableEditions() : UInt64 { + access(all) + fun availableEditions() : UInt64 { if !self.closed && self.metadata!.maxEdition >= self.nextEdition { return self.metadata!.maxEdition - self.nextEdition + UInt64(1) } else { @@ -66,7 +85,8 @@ pub contract DigitalArt: NonFungibleToken { // We close masters after all editions are minted instead of deleting master records // This process ensures nobody can ever mint tokens with the same asset ID. - pub fun close() { + access(all) + fun close() { self.metadata = nil self.evergreenProfile = nil self.nextEdition = 0 @@ -76,41 +96,67 @@ pub contract DigitalArt: NonFungibleToken { // Metadata defines Digital Art's metadata. // - pub struct Metadata { + access(all) + struct Metadata { // Name - pub let name: String + access(all) + let name: String + // Artist name - pub let artist: String + access(all) + let artist: String + // Description - pub let description: String + access(all) + let description: String + // Media type: Image, Audio, Video - pub let type: String + access(all) + let type: String + // A URI of the original digital art content. - pub let contentURI: String + access(all) + let contentURI: String + // A URI of the digital art preview content (i.e. a thumbnail). - pub let contentPreviewURI: String + access(all) + let contentPreviewURI: String + // MIME type (e.g. 'image/jpeg') - pub let mimetype: String + access(all) + let mimetype: String + // Edition number of the given NFT. Editions are unique for the same master, // identified by the asset ID. - pub var edition: UInt64 + access(all) + var edition: UInt64 + // The number of editions that may have been produced for the given master. // This number can't be exceeded by the contract, but there is no obligation // to mint all the declared editions. // If maxEdition == 1, the given NFT is one-of-a-kind. - pub let maxEdition: UInt64 + access(all) + let maxEdition: UInt64 + // The DID of the master's asset. This ID is the same // for all editions of a particular Digital Art NFT. - pub let asset: String + access(all) + let asset: String + // A URI of the full digital art's metadata JSON // as it existed at the time the master was sealed. - pub let metadataURI: String + access(all) + let metadataURI: String + // The ChainLocker record ID of the full metadata JSON // as it existed at the time the master was sealed. - pub let record: String + access(all) + let record: String + // The ChainLocker asset head ID of the full metadata JSON. // It can be used to retrieve the current metadata JSON (if changed). - pub let assetHead: String + access(all) + let assetHead: String init( name: String, @@ -142,7 +188,8 @@ pub contract DigitalArt: NonFungibleToken { self.assetHead = assetHead } - pub fun setEdition(edition: UInt64) { + access(all) + fun setEdition(edition: UInt64) { self.edition = edition } } @@ -150,24 +197,31 @@ pub contract DigitalArt: NonFungibleToken { // NFT // DigitalArt as an NFT // - pub resource NFT: NonFungibleToken.INFT, MetadataViews.Resolver, Evergreen.Token { + access(all) + resource NFT: NonFungibleToken.NFT, ViewResolver.Resolver, Evergreen.Token { // The token's ID - pub let id: UInt64 + access(all) + let id: UInt64 - pub let metadata: Metadata - pub let evergreenProfile: Evergreen.Profile + access(all) + let metadata: &Metadata + + access(all) + let evergreenProfile: &Evergreen.Profile // initializer // - init(initID: UInt64, metadata: Metadata, evergreenProfile: Evergreen.Profile) { + init(initID: UInt64, metadata: &Metadata, evergreenProfile: &Evergreen.Profile) { self.id = initID self.metadata = metadata self.evergreenProfile = evergreenProfile } - pub fun getViews(): [Type] { + access(all) + view fun getViews(): [Type] { return [ Type(), + Type(), Type(), Type(), Type(), @@ -176,8 +230,9 @@ pub contract DigitalArt: NonFungibleToken { ] } - pub fun resolveView(_ view: Type): AnyStruct? { - switch view { + access(all) + fun resolveView(_ type: Type): AnyStruct? { + switch type { case Type(): return MetadataViews.Display( name: self.metadata.name, @@ -186,54 +241,18 @@ pub contract DigitalArt: NonFungibleToken { url: DigitalArt.getWebFriendlyURL(url: self.metadata.contentPreviewURI) ) ) + case Type(): + return MetadataViews.Edition(name: nil, number: self.metadata.edition, max: self.metadata.maxEdition) case Type(): return MetadataViews.Royalties( self.evergreenProfile.buildRoyalties(defaultReceiverPath: MetadataViews.getRoyaltyReceiverPublicPath()) ) case Type(): - return MetadataViews.ExternalURL(url: "https://app.sequel.space/tokens/digital-art/".concat(self.id.toString())) + return MetadataViews.ExternalURL("https://app.sequel.space/tokens/digital-art/".concat(self.id.toString())) case Type(): - return MetadataViews.NFTCollectionData( - storagePath: DigitalArt.CollectionStoragePath, - publicPath: DigitalArt.CollectionPublicPath, - providerPath: /private/sequelDigitalArtCollection, - publicCollection: Type<&DigitalArt.Collection{DigitalArt.CollectionPublic}>(), - publicLinkedType: Type<&DigitalArt.Collection{DigitalArt.CollectionPublic,NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver,MetadataViews.ResolverCollection}>(), - providerLinkedType: Type<&DigitalArt.Collection{DigitalArt.CollectionPublic,NonFungibleToken.CollectionPublic,NonFungibleToken.Provider,MetadataViews.ResolverCollection}>(), - createEmptyCollectionFunction: (fun (): @NonFungibleToken.Collection { - return <-DigitalArt.createEmptyCollection() - }) - ) + return DigitalArt.resolveContractView(resourceType: Type<@NFT>(), viewType: type) case Type(): - let media = MetadataViews.Media( - file: MetadataViews.HTTPFile( - url: "https://sequel.space/home/img/flow-sequel-logo.png" - ), - mediaType: "image/png" - ) - return MetadataViews.NFTCollectionDisplay( - name: "Sequel Digital Art", - description: "Sequel is a social platform where everything is for fun and purely fictional.", - externalURL: MetadataViews.ExternalURL("https://sequel.space"), - squareImage: MetadataViews.Media( - file: MetadataViews.HTTPFile( - url: "https://sequel.space/home/img/flow-sequel-logo.png" - ), - mediaType: "image/png" - ), - bannerImage: MetadataViews.Media( - file: MetadataViews.HTTPFile( - url: "https://sequel.space/home/img/flow-sequel-banner.jpg" - ), - mediaType: "image/jpeg" - ), - socials: { - "instagram": MetadataViews.ExternalURL("https://www.instagram.com/sequelspace"), - "mastodon": MetadataViews.ExternalURL("https://mastodon.social/@sequel"), - "discord": MetadataViews.ExternalURL("https://discord.gg/YaR7BFuXNk"), - "twitter": MetadataViews.ExternalURL("https://twitter.com/sequelspace") - } - ) + return DigitalArt.resolveContractView(resourceType: Type<@NFT>(), viewType: type) case Type(): return self.metadata } @@ -241,23 +260,38 @@ pub contract DigitalArt: NonFungibleToken { return nil } - pub fun getAssetID(): String { + access(all) + fun getAssetID(): String { return self.metadata.asset } - pub fun getEvergreenProfile(): Evergreen.Profile { + access(all) + fun getEvergreenProfile(): &Evergreen.Profile { return self.evergreenProfile } + + access(all) + fun createEmptyCollection(): @{NonFungibleToken.Collection}{ + return <-create Collection() + } } // This is the interface that users can cast their DigitalArt Collection as // to allow others to deposit DigitalArt into their Collection. It also allows for reading - // the details of DigitalArt in the Collection. - pub resource interface CollectionPublic { - pub fun deposit(token: @NonFungibleToken.NFT) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT - pub fun borrowDigitalArt(id: UInt64): &DigitalArt.NFT? { + // the details of DigitalArt in the Collection. // REMOVE + access(all) + resource interface CollectionPublic { + access(all) + fun deposit(token: @{NonFungibleToken.NFT}) + + access(all) + view fun getIDs(): [UInt64] + + access(all) + view fun borrowNFT(_ id: UInt64): &{NonFungibleToken.NFT}? + + access(all) + fun borrowDigitalArt(id: UInt64): &DigitalArt.NFT? { // If the result isn't nil, the id of the returned reference // should be the same as the argument to the function post { @@ -270,38 +304,37 @@ pub contract DigitalArt: NonFungibleToken { // Collection // A collection of DigitalArt NFTs owned by an account // - pub resource Collection: + access(all) + resource Collection: CollectionPublic, Evergreen.CollectionPublic, - NonFungibleToken.Provider, - NonFungibleToken.Receiver, - NonFungibleToken.CollectionPublic, - MetadataViews.ResolverCollection { + NonFungibleToken.Collection, + ViewResolver.ResolverCollection { - // dictionary of NFT conforming tokens - // NFT is a resource type with an `UInt64` ID field - // - pub var ownedNFTs: @{UInt64: NonFungibleToken.NFT} + /// dictionary of NFT conforming tokens + /// NFT is a resource type with an `UInt64` ID field + access(all) + var ownedNFTs: @{UInt64: {NonFungibleToken.NFT}} - // withdraw - // Removes an NFT from the collection and moves it to the caller - // - pub fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { - let token <- self.ownedNFTs.remove(key: withdrawID) ?? panic("missing NFT") + /// withdraw removes an NFT from the collection and moves it to the caller + access(NonFungibleToken.Withdraw) fun withdraw(withdrawID: UInt64): @{NonFungibleToken.NFT} { + let token <- self.ownedNFTs.remove(key: withdrawID) + ?? panic("DigitalArt.Collection.withdraw: Could not withdraw an NFT with ID " + .concat(withdrawID.toString()) + .concat(". Check the submitted ID to make sure it is one that this collection owns.")) emit Withdraw(id: token.id, from: self.owner?.address) return <-token } - // deposit - // Takes a NFT and adds it to the collections dictionary - // and adds the ID to the id array - // - pub fun deposit(token: @NonFungibleToken.NFT) { + /// deposit takes a NFT and adds it to the collections dictionary + /// and adds the ID to the id array + access(all) + fun deposit(token: @{NonFungibleToken.NFT}) { let token <- token as! @DigitalArt.NFT - let id: UInt64 = token.id + let id = token.id // add the new token to the dictionary which removes the old one let oldToken <- self.ownedNFTs[id] <- token @@ -311,10 +344,9 @@ pub contract DigitalArt: NonFungibleToken { destroy oldToken } - // getIDs - // Returns an array of the IDs that are in the collection - // - pub fun getIDs(): [UInt64] { + /// getIDs returns an array of the IDs that are in the collection + access(all) + view fun getIDs(): [UInt64] { return self.ownedNFTs.keys } @@ -322,8 +354,9 @@ pub contract DigitalArt: NonFungibleToken { // Gets a reference to an NFT in the collection // so that the caller can read its metadata and call its methods // - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { - return (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! + access(all) + view fun borrowNFT(_ id: UInt64): &{NonFungibleToken.NFT}? { + return &self.ownedNFTs[id] } // borrowDigitalArt @@ -331,27 +364,43 @@ pub contract DigitalArt: NonFungibleToken { // exposing all of its fields (including the typeID). // This is safe as there are no functions that can be called on the DigitalArt. // - pub fun borrowDigitalArt(id: UInt64): &DigitalArt.NFT? { + access(all) + fun borrowDigitalArt(id: UInt64): &DigitalArt.NFT? { if self.ownedNFTs[id] != nil { - let ref = (&self.ownedNFTs[id] as auth &NonFungibleToken.NFT?)! + let ref = (&self.ownedNFTs[id] as &{NonFungibleToken.NFT}?)! return ref as! &DigitalArt.NFT } else { return nil } } - pub fun borrowViewResolver(id: UInt64): &AnyResource{MetadataViews.Resolver} { - let nft = (&self.ownedNFTs[id] as auth &NonFungibleToken.NFT?)! - return nft as! &DigitalArt.NFT + /// Borrow the view resolver for the specified NFT ID + access(all) + view fun borrowViewResolver(id: UInt64): &{ViewResolver.Resolver}? { + if let nft = &self.ownedNFTs[id] as &{NonFungibleToken.NFT}? { + return nft as &{ViewResolver.Resolver} + } + return nil } - pub fun borrowEvergreenToken(id: UInt64): &AnyResource{Evergreen.Token}? { + access(all) + fun borrowEvergreenToken(id: UInt64): &{Evergreen.Token}? { return self.borrowDigitalArt(id: id) } - // destructor - destroy() { - destroy self.ownedNFTs + access(all) + fun createEmptyCollection(): @{NonFungibleToken.Collection} { + return <-create Collection() + } + + access(all) + view fun getSupportedNFTTypes(): {Type: Bool} { + return { Type<@NFT>() : true} + } + + access(all) + view fun isSupportedNFTType(type: Type) : Bool { + return type == Type<@NFT>() } // initializer @@ -364,19 +413,22 @@ pub contract DigitalArt: NonFungibleToken { // createEmptyCollection // public function that anyone can call to create a new empty collection // - pub fun createEmptyCollection(): @NonFungibleToken.Collection { + access(all) + fun createEmptyCollection(nftType: Type): @{NonFungibleToken.Collection}{ return <- create Collection() } - pub fun getMetadata(address:Address, tokenId:UInt64) : Metadata? { + access(all) + fun getMetadata(address:Address, tokenId:UInt64) : &Metadata { let acct = getAccount(address) - let collectionRef = acct.getCapability(self.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>() + let collectionRef = acct.capabilities.get<&{DigitalArt.CollectionPublic}>(self.CollectionPublicPath)!.borrow() ?? panic("Could not borrow capability from public collection") return collectionRef.borrowDigitalArt(id: tokenId)!.metadata } - pub fun isClosed(masterId: String): Bool { + access(all) + fun isClosed(masterId: String): Bool { if DigitalArt.masters.containsKey(masterId) { let master = &DigitalArt.masters[masterId]! as &Master return master.closed @@ -385,7 +437,8 @@ pub contract DigitalArt: NonFungibleToken { } } - pub fun getWebFriendlyURL(url: String): String { + access(all) + fun getWebFriendlyURL(url: String): String { if url.slice(from: 0, upTo: 4) == "ipfs" { return "https://sequel.mypinata.cloud/ipfs/".concat(url.slice(from: 7, upTo: url.length)) } else { @@ -397,11 +450,13 @@ pub contract DigitalArt: NonFungibleToken { // Resource that an admin or something similar would own to be // able to mint new NFTs // - pub resource Admin { + access(all) + resource Admin { // sealMaster saves and freezes the master copy that then can be used // to mint NFT editions. - pub fun sealMaster(metadata: Metadata, evergreenProfile: Evergreen.Profile) { + access(all) + fun sealMaster(metadata: Metadata, evergreenProfile: Evergreen.Profile) { pre { metadata.asset != "" : "Empty asset ID" metadata.edition == UInt64(0) : "Edition should be zero" @@ -414,11 +469,13 @@ pub contract DigitalArt: NonFungibleToken { ) } - pub fun isSealed(masterId: String) : Bool { + access(all) + fun isSealed(masterId: String) : Bool { return DigitalArt.masters.containsKey(masterId) } - pub fun availableEditions(masterId: String) : UInt64 { + access(all) + fun availableEditions(masterId: String) : UInt64 { pre { DigitalArt.masters.containsKey(masterId) : "Master not found" } @@ -428,7 +485,8 @@ pub contract DigitalArt: NonFungibleToken { return master.availableEditions() } - pub fun evergreenProfile(masterId: String) : Evergreen.Profile { + access(all) + fun evergreenProfile(masterId: String) : &Evergreen.Profile { pre { DigitalArt.masters.containsKey(masterId) : "Master not found" } @@ -441,7 +499,8 @@ pub contract DigitalArt: NonFungibleToken { // mintEditionNFT mints a token from master with the given ID. // If it's a mint-on-demand, provide MOD ID to link it with the Marketplace database. // Otherwise, set modID to 0. - pub fun mintEditionNFT(masterId: String, modID: UInt64) : @DigitalArt.NFT { + access(all) + fun mintEditionNFT(masterId: String, modID: UInt64) : @DigitalArt.NFT { pre { DigitalArt.masters.containsKey(masterId) : "Master not found" } @@ -473,6 +532,54 @@ pub contract DigitalArt: NonFungibleToken { } } + access(all) + view fun getContractViews(resourceType: Type?): [Type] { + return [ + Type(), + Type() + ] + } + + access(all) + view fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? { + switch viewType { + case Type(): + return MetadataViews.NFTCollectionData( + storagePath: DigitalArt.CollectionStoragePath, + publicPath: DigitalArt.CollectionPublicPath, + publicCollection: Type<&DigitalArt.Collection>(), + publicLinkedType: Type<&DigitalArt.Collection>(), + createEmptyCollectionFunction: fun (): @{NonFungibleToken.Collection} { + return <-DigitalArt.createEmptyCollection(nftType: Type<@Collection>()) + } + ) + case Type(): + return MetadataViews.NFTCollectionDisplay( + name: "Sequel Digital Art", + description: "Sequel is a social platform where everything is for fun and purely fictional.", + externalURL: MetadataViews.ExternalURL("https://sequel.space"), + squareImage: MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: "https://sequel.space/home/img/flow-sequel-logo.png" + ), + mediaType: "image/png" + ), + bannerImage: MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: "https://sequel.space/home/img/flow-sequel-banner.jpg" + ), + mediaType: "image/jpeg" + ), + socials: { + "instagram": MetadataViews.ExternalURL("https://www.instagram.com/sequelspace"), + "mastodon": MetadataViews.ExternalURL("https://mastodon.social/@sequel"), + "twitter": MetadataViews.ExternalURL("https://twitter.com/sequelspace") + } + ) + } + return nil + } + // initializer // init() { @@ -489,8 +596,8 @@ pub contract DigitalArt: NonFungibleToken { // Create a Admin resource and save it to storage let admin <- create Admin() - self.account.save(<-admin, to: self.AdminStoragePath) + self.account.storage.save(<-admin, to: self.AdminStoragePath) emit ContractInitialized() } -} \ No newline at end of file +} diff --git a/contracts/Evergreen.cdc b/contracts/Evergreen.cdc index 5a09928..cb45828 100644 --- a/contracts/Evergreen.cdc +++ b/contracts/Evergreen.cdc @@ -7,32 +7,45 @@ import MetadataViews from "./standard/MetadataViews.cdc" // // Source: https://github.com/piprate/sequel-flow-contracts // -pub contract Evergreen { +access(all) +contract Evergreen { // Role defines a party in an NFT sale that may receive a commission fee // We deliberately abstract away from the concept of royalties in order // to support a broader variety of interactions with participant of NFT sales. - pub struct Role { + access(all) + struct Role { // id is an identifier of the role. Typical values: // * "Artist" - author of the NFT // * "Platform" - platform that minted the NFT or sponsored or facilitated the sale // * "Owner" - the current owner of the NFT (typically, the seller) - pub let id: String + access(all) + let id: String + // description is an optional field that described the role and/or the party. - pub let description: String + access(all) + let description: String + // initialSaleCommission is a commission rate charged by the role at the initial sale // (typically, immediately after minting). Allowed range: [0.0-1.0] - pub let initialSaleCommission: UFix64 + access(all) + let initialSaleCommission: UFix64 + // secondaryMarketCommission is a commission rate charged by the role // when the NFT is sold on the secondary market. Allowed range: [0.0-1.0] - pub let secondaryMarketCommission: UFix64 + access(all) + let secondaryMarketCommission: UFix64 + // address is the Flow address of the party that assumes this role. - pub let address: Address + access(all) + let address: Address + // receiverPath (optional) is a public path to the parties fungible token receiver. // If specified, any non-zero commission payment will be deposited // to this receiver at the parties address (if valid). // If not specified, the receiver will be determined by the fungible // token's type used in the sale. - pub let receiverPath: PublicPath? + access(all) + let receiverPath: PublicPath? init( id: String, @@ -50,7 +63,8 @@ pub contract Evergreen { self.receiverPath = receiverPath } - pub fun commissionRate(initialSale: Bool): UFix64 { + access(all) + fun commissionRate(initialSale: Bool): UFix64 { return (initialSale ? self.initialSaleCommission : self.secondaryMarketCommission) } } @@ -58,12 +72,18 @@ pub contract Evergreen { // Profile defined a list of roles for the given NFT. // Each role may receive a commission fee at every sale. // The structure of this commission is defined in each role structure. - pub struct Profile { + access(all) + struct Profile { // id is the profile DID, i.e. did:sequel:xyz - pub let id: String + access(all) + let id: String + // description is an optional field that described the purpose of this profile - pub let description: String - pub let roles: [Role] + access(all) + let description: String + + access(all) + let roles: [Role] init( id: String, @@ -75,7 +95,8 @@ pub contract Evergreen { self.roles = roles } - pub fun getRole(id: String): Role? { + access(all) + fun getRole(id: String): Role? { for role in self.roles { if (role.id == id) { return role @@ -84,7 +105,8 @@ pub contract Evergreen { return nil } - pub fun buildRoyalties(defaultReceiverPath: PublicPath?): [MetadataViews.Royalty] { + access(all) + fun buildRoyalties(defaultReceiverPath: PublicPath?): [MetadataViews.Royalty] { let royalties: [MetadataViews.Royalty] = [] for role in self.roles { @@ -94,7 +116,7 @@ pub contract Evergreen { } if path != nil { - let receiverCap = getAccount(role.address).getCapability<&{FungibleToken.Receiver}>(path!) + let receiverCap = getAccount(role.address).capabilities.get<&{FungibleToken.Receiver}>(path!) if receiverCap.check() { royalties.append(MetadataViews.Royalty( receiver: receiverCap, @@ -111,16 +133,22 @@ pub contract Evergreen { // Token defines an interface for "evergreen tokens" which are NFTs // that support Evergreen standard. - pub resource interface Token { + access(all) + resource interface Token { // getAssetID returns the asset ID (in DID format) that uniquely identifies // the NFT and all its editions. - pub fun getAssetID(): String + access(all) + fun getAssetID(): String + // getEvergreenProfile returns the token's Profile. - pub fun getEvergreenProfile(): Profile + access(all) + fun getEvergreenProfile(): &Profile } // An interface for reading the details of an evengreen token in the Collection. - pub resource interface CollectionPublic { - pub fun borrowEvergreenToken(id: UInt64): &AnyResource{Token}? + access(all) + resource interface CollectionPublic { + access(all) + fun borrowEvergreenToken(id: UInt64): &{Token}? } -} \ No newline at end of file +} diff --git a/contracts/SequelMarketplace.cdc b/contracts/SequelMarketplace.cdc index 74d6490..d0d63a5 100644 --- a/contracts/SequelMarketplace.cdc +++ b/contracts/SequelMarketplace.cdc @@ -8,18 +8,27 @@ import Evergreen from "./Evergreen.cdc" // // Source: https://github.com/piprate/sequel-flow-contracts // -pub contract SequelMarketplace { +access(all) +contract SequelMarketplace { // Payment // - pub struct Payment { - // role is the Evenrgreen role of the party that receives this payment - pub let role: String + access(all) + struct Payment { + // role is the Evergreen role of the party that receives this payment + access(all) + let role: String + // receiver is the receiving party's address - pub let receiver: Address + access(all) + let receiver: Address + // amount is the quantity of the fungible token that will be paid to the receiver. - pub let amount: UFix64 + access(all) + let amount: UFix64 + // rate is the percentage of the overall sale this payment represents. - pub let rate: UFix64 + access(all) + let rate: UFix64 init(role: String, receiver: Address, amount: UFix64, rate: UFix64) { self.role = role @@ -31,9 +40,13 @@ pub contract SequelMarketplace { // PaymentInstructions // - pub struct PaymentInstructions { - pub let payments: [Payment] - pub let saleCuts: [NFTStorefront.SaleCut] + access(all) + struct PaymentInstructions { + access(all) + let payments: [Payment] + + access(all) + let saleCuts: [NFTStorefront.SaleCut] init(payments: [Payment], saleCuts: [NFTStorefront.SaleCut]) { self.payments = payments @@ -44,7 +57,8 @@ pub contract SequelMarketplace { // TokenListed // Token available for purchase. // - pub event TokenListed( + access(all) + event TokenListed( storefrontAddress: Address, listingID: UInt64, nftType: String, @@ -59,7 +73,8 @@ pub contract SequelMarketplace { // TokenSold // Token was sold. // - pub event TokenSold( + access(all) + event TokenSold( storefrontAddress: Address, listingID: UInt64, nftType: String, @@ -73,7 +88,8 @@ pub contract SequelMarketplace { // TokenWithdrawn // Token listing was withdrawn. // - pub event TokenWithdrawn( + access(all) + event TokenWithdrawn( storefrontAddress: Address, listingID: UInt64, nftType: String, @@ -83,9 +99,10 @@ pub contract SequelMarketplace { ) // listToken - pub fun listToken( - storefront: &NFTStorefront.Storefront, - nftProviderCapability: Capability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic, Evergreen.CollectionPublic}>, + access(all) + fun listToken( + storefront: auth(NFTStorefront.CreateListing) &NFTStorefront.Storefront, + nftProviderCapability: Capability, nftType: Type, nftID: UInt64, sellerVaultPath: PublicPath, @@ -130,15 +147,16 @@ pub contract SequelMarketplace { return listingID } - pub fun buyToken( + access(all) + fun buyToken( storefrontAddress: Address, - storefront: &NFTStorefront.Storefront{NFTStorefront.StorefrontPublic}, + storefront: &NFTStorefront.Storefront, listingID: UInt64, - listing: &NFTStorefront.Listing{NFTStorefront.ListingPublic}, - paymentVault: @FungibleToken.Vault, + listing: &NFTStorefront.Listing, + paymentVault: @{FungibleToken.Vault}, buyerAddress: Address, metadataLink: String?, - ): @NonFungibleToken.NFT { + ): @{NonFungibleToken.NFT} { let details = listing.getDetails() emit TokenSold( @@ -157,13 +175,14 @@ pub contract SequelMarketplace { return <- item } - pub fun payForMintedTokens( + access(all) + fun payForMintedTokens( unitPrice: UFix64, numEditions: UInt64, sellerRole: String, sellerVaultPath: PublicPath, - paymentVault: @FungibleToken.Vault, - evergreenProfile: Evergreen.Profile, + paymentVault: @{FungibleToken.Vault}, + evergreenProfile: &Evergreen.Profile, ) { let seller = evergreenProfile.getRole(id: sellerRole)!.address @@ -203,9 +222,10 @@ pub contract SequelMarketplace { // withdrawToken // Cancel sale // - pub fun withdrawToken( + access(all) + fun withdrawToken( storefrontAddress: Address, - storefront: &NFTStorefront.Storefront, + storefront: auth(NFTStorefront.RemoveListing) &NFTStorefront.Storefront, listingID: UInt64, ) { let listing = storefront.borrowListing(listingResourceID: listingID) @@ -227,8 +247,9 @@ pub contract SequelMarketplace { // buildPayments constructs a list of payments based on the given Evengreen profile. // Any residual amount goes to the given seller's address. - pub fun buildPayments( - profile: Evergreen.Profile, + access(all) + fun buildPayments( + profile: &Evergreen.Profile, seller: Address, sellerRole: String, sellerVaultPath: PublicPath, @@ -254,7 +275,7 @@ pub contract SequelMarketplace { path = receiverPath! } - let receiverCap = getAccount(address).getCapability<&{FungibleToken.Receiver}>(path) + let receiverCap = getAccount(address).capabilities.get<&{FungibleToken.Receiver}>(path) if receiverCap.check() { payments.append(Payment(role: roleID, receiver: address, amount: amount, rate: rate)) saleCuts.append(NFTStorefront.SaleCut(receiver: receiverCap, amount: amount)) diff --git a/contracts/standard/Burner.cdc b/contracts/standard/Burner.cdc new file mode 100644 index 0000000..1e509a6 --- /dev/null +++ b/contracts/standard/Burner.cdc @@ -0,0 +1,50 @@ +/// Burner is a contract that can facilitate the destruction of any resource on flow. +/// +/// Contributors +/// - Austin Kline - https://twitter.com/austin_flowty +/// - Deniz Edincik - https://twitter.com/bluesign +/// - Bastian Müller - https://twitter.com/turbolent +access(all) contract Burner { + /// When Crescendo (Cadence 1.0) is released, custom destructors will be removed from cadece. + /// Burnable is an interface meant to replace this lost feature, allowing anyone to add a callback + /// method to ensure they do not destroy something which is not meant to be, + /// or to add logic based on destruction such as tracking the supply of a FT Collection + /// + /// NOTE: The only way to see benefit from this interface + /// is to always use the burn method in this contract. Anyone who owns a resource can always elect **not** + /// to destroy a resource this way + access(all) resource interface Burnable { + access(contract) fun burnCallback() + } + + /// burn is a global method which will destroy any resource it is given. + /// If the provided resource implements the Burnable interface, + /// it will call the burnCallback method and then destroy afterwards. + access(all) fun burn(_ toBurn: @AnyResource?) { + if toBurn == nil { + destroy toBurn + return + } + let r <- toBurn! + + if let s <- r as? @{Burnable} { + s.burnCallback() + destroy s + } else if let arr <- r as? @[AnyResource] { + while arr.length > 0 { + let item <- arr.removeFirst() + self.burn(<-item) + } + destroy arr + } else if let dict <- r as? @{HashableStruct: AnyResource} { + let keys = dict.keys + while keys.length > 0 { + let item <- dict.remove(key: keys.removeFirst())! + self.burn(<-item) + } + destroy dict + } else { + destroy r + } + } +} diff --git a/contracts/standard/ExampleNFT.cdc b/contracts/standard/ExampleNFT.cdc new file mode 100644 index 0000000..6c04d5e --- /dev/null +++ b/contracts/standard/ExampleNFT.cdc @@ -0,0 +1,371 @@ +/* +* +* This is an example implementation of a Flow Non-Fungible Token +* using the V2 standard. +* It is not part of the official standard but it assumed to be +* similar to how many NFTs would implement the core functionality. +* +* This contract does not implement any sophisticated classification +* system for its NFTs. It defines a simple NFT with minimal metadata. +* +*/ + +import "NonFungibleToken" +import "ViewResolver" +import "MetadataViews" + +access(all) contract ExampleNFT: NonFungibleToken { + + /// Standard Paths + access(all) let CollectionStoragePath: StoragePath + access(all) let CollectionPublicPath: PublicPath + + /// Path where the minter should be stored + /// The standard paths for the collection are stored in the collection resource type + access(all) let MinterStoragePath: StoragePath + + /// We choose the name NFT here, but this type can have any name now + /// because the interface does not require it to have a specific name any more + access(all) resource NFT: NonFungibleToken.NFT { + + access(all) let id: UInt64 + + /// From the Display metadata view + access(all) let name: String + access(all) let description: String + access(all) let thumbnail: String + + /// For the Royalties metadata view + access(self) let royalties: [MetadataViews.Royalty] + + /// Generic dictionary of traits the NFT has + access(self) let metadata: {String: AnyStruct} + + init( + name: String, + description: String, + thumbnail: String, + royalties: [MetadataViews.Royalty], + metadata: {String: AnyStruct}, + ) { + self.id = self.uuid + self.name = name + self.description = description + self.thumbnail = thumbnail + self.royalties = royalties + self.metadata = metadata + } + + /// createEmptyCollection creates an empty Collection + /// and returns it to the caller so that they can own NFTs + /// @{NonFungibleToken.Collection} + access(all) fun createEmptyCollection(): @{NonFungibleToken.Collection} { + return <-ExampleNFT.createEmptyCollection(nftType: Type<@ExampleNFT.NFT>()) + } + + access(all) view fun getViews(): [Type] { + return [ + Type(), + Type(), + Type(), + Type(), + Type(), + Type(), + Type(), + Type(), + Type() + ] + } + + access(all) fun resolveView(_ view: Type): AnyStruct? { + switch view { + case Type(): + return MetadataViews.Display( + name: self.name, + description: self.description, + thumbnail: MetadataViews.HTTPFile( + url: self.thumbnail + ) + ) + case Type(): + // There is no max number of NFTs that can be minted from this contract + // so the max edition field value is set to nil + let editionInfo = MetadataViews.Edition(name: "Example NFT Edition", number: self.id, max: nil) + let editionList: [MetadataViews.Edition] = [editionInfo] + return MetadataViews.Editions( + editionList + ) + case Type(): + return MetadataViews.Serial( + self.id + ) + case Type(): + return MetadataViews.Royalties( + self.royalties + ) + case Type(): + return MetadataViews.ExternalURL("https://example-nft.onflow.org/".concat(self.id.toString())) + case Type(): + return ExampleNFT.resolveContractView(resourceType: Type<@ExampleNFT.NFT>(), viewType: Type()) + case Type(): + return ExampleNFT.resolveContractView(resourceType: Type<@ExampleNFT.NFT>(), viewType: Type()) + case Type(): + // exclude mintedTime and foo to show other uses of Traits + let excludedTraits = ["mintedTime", "foo"] + let traitsView = MetadataViews.dictToTraits(dict: self.metadata, excludedNames: excludedTraits) + + // mintedTime is a unix timestamp, we should mark it with a displayType so platforms know how to show it. + let mintedTimeTrait = MetadataViews.Trait(name: "mintedTime", value: self.metadata["mintedTime"]!, displayType: "Date", rarity: nil) + traitsView.addTrait(mintedTimeTrait) + + // foo is a trait with its own rarity + let fooTraitRarity = MetadataViews.Rarity(score: 10.0, max: 100.0, description: "Common") + let fooTrait = MetadataViews.Trait(name: "foo", value: self.metadata["foo"], displayType: nil, rarity: fooTraitRarity) + traitsView.addTrait(fooTrait) + + return traitsView + case Type(): + // Implementing this view gives the project control over how the bridged NFT is represented as an + // ERC721 when bridged to EVM on Flow via the public infrastructure bridge. + + // Get the contract-level name and symbol values + let contractLevel = ExampleNFT.resolveContractView( + resourceType: nil, + viewType: Type() + ) as! MetadataViews.EVMBridgedMetadata? + + if let contractMetadata = contractLevel { + // Compose the token-level URI based on a base URI and the token ID, pointing to a JSON file. This + // would be a file you've uploaded and are hosting somewhere - in this case HTTP, but this could be + // IPFS, S3, a data URL containing the JSON directly, etc. + let baseURI = "https://example-nft.onflow.org/token-metadata/" + let uriValue = self.id.toString().concat(".json") + + return MetadataViews.EVMBridgedMetadata( + name: contractMetadata.name, + symbol: contractMetadata.symbol, + uri: MetadataViews.URI( + baseURI: baseURI, // defining baseURI results in a concatenation of baseURI and value + value: self.id.toString().concat(".json") + ) + ) + } else { + return nil + } + } + return nil + } + } + + // Deprecated: Only here for backward compatibility. + access(all) resource interface ExampleNFTCollectionPublic {} + + access(all) resource Collection: NonFungibleToken.Collection, ExampleNFTCollectionPublic { + /// dictionary of NFT conforming tokens + /// NFT is a resource type with an `UInt64` ID field + access(all) var ownedNFTs: @{UInt64: {NonFungibleToken.NFT}} + + init () { + self.ownedNFTs <- {} + } + + /// getSupportedNFTTypes returns a list of NFT types that this receiver accepts + access(all) view fun getSupportedNFTTypes(): {Type: Bool} { + let supportedTypes: {Type: Bool} = {} + supportedTypes[Type<@ExampleNFT.NFT>()] = true + return supportedTypes + } + + /// Returns whether or not the given type is accepted by the collection + /// A collection that can accept any type should just return true by default + access(all) view fun isSupportedNFTType(type: Type): Bool { + return type == Type<@ExampleNFT.NFT>() + } + + /// withdraw removes an NFT from the collection and moves it to the caller + access(NonFungibleToken.Withdraw) fun withdraw(withdrawID: UInt64): @{NonFungibleToken.NFT} { + let token <- self.ownedNFTs.remove(key: withdrawID) + ?? panic("ExampleNFT.Collection.withdraw: Could not withdraw an NFT with ID " + .concat(withdrawID.toString()) + .concat(". Check the submitted ID to make sure it is one that this collection owns.")) + + return <-token + } + + /// deposit takes a NFT and adds it to the collections dictionary + /// and adds the ID to the id array + access(all) fun deposit(token: @{NonFungibleToken.NFT}) { + let token <- token as! @ExampleNFT.NFT + let id = token.id + + // add the new token to the dictionary which removes the old one + let oldToken <- self.ownedNFTs[token.id] <- token + + destroy oldToken + + // This code is for testing purposes only + // Do not add to your contract unless you have a specific + // reason to want to emit the NFTUpdated event somewhere + // in your contract + let authTokenRef = (&self.ownedNFTs[id] as auth(NonFungibleToken.Update) &{NonFungibleToken.NFT}?)! + //authTokenRef.updateTransferDate(date: getCurrentBlock().timestamp) + ExampleNFT.emitNFTUpdated(authTokenRef) + } + + /// getIDs returns an array of the IDs that are in the collection + access(all) view fun getIDs(): [UInt64] { + return self.ownedNFTs.keys + } + + /// Gets the amount of NFTs stored in the collection + access(all) view fun getLength(): Int { + return self.ownedNFTs.length + } + + access(all) view fun borrowNFT(_ id: UInt64): &{NonFungibleToken.NFT}? { + return &self.ownedNFTs[id] + } + + /// Borrow the view resolver for the specified NFT ID + access(all) view fun borrowViewResolver(id: UInt64): &{ViewResolver.Resolver}? { + if let nft = &self.ownedNFTs[id] as &{NonFungibleToken.NFT}? { + return nft as &{ViewResolver.Resolver} + } + return nil + } + + /// createEmptyCollection creates an empty Collection of the same type + /// and returns it to the caller + /// @return A an empty collection of the same type + access(all) fun createEmptyCollection(): @{NonFungibleToken.Collection} { + return <-ExampleNFT.createEmptyCollection(nftType: Type<@ExampleNFT.NFT>()) + } + } + + /// createEmptyCollection creates an empty Collection for the specified NFT type + /// and returns it to the caller so that they can own NFTs + access(all) fun createEmptyCollection(nftType: Type): @{NonFungibleToken.Collection} { + return <- create Collection() + } + + /// Function that returns all the Metadata Views implemented by a Non Fungible Token + /// + /// @return An array of Types defining the implemented views. This value will be used by + /// developers to know which parameter to pass to the resolveView() method. + /// + access(all) view fun getContractViews(resourceType: Type?): [Type] { + return [ + Type(), + Type(), + Type() + ] + } + + /// Function that resolves a metadata view for this contract. + /// + /// @param view: The Type of the desired view. + /// @return A structure representing the requested view. + /// + access(all) fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? { + switch viewType { + case Type(): + let collectionData = MetadataViews.NFTCollectionData( + storagePath: self.CollectionStoragePath, + publicPath: self.CollectionPublicPath, + publicCollection: Type<&ExampleNFT.Collection>(), + publicLinkedType: Type<&ExampleNFT.Collection>(), + createEmptyCollectionFunction: (fun(): @{NonFungibleToken.Collection} { + return <-ExampleNFT.createEmptyCollection(nftType: Type<@ExampleNFT.NFT>()) + }) + ) + return collectionData + case Type(): + let media = MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: "https://assets.website-files.com/5f6294c0c7a8cdd643b1c820/5f6294c0c7a8cda55cb1c936_Flow_Wordmark.svg" + ), + mediaType: "image/svg+xml" + ) + return MetadataViews.NFTCollectionDisplay( + name: "The Example Collection", + description: "This collection is used as an example to help you develop your next Flow NFT.", + externalURL: MetadataViews.ExternalURL("https://example-nft.onflow.org"), + squareImage: media, + bannerImage: media, + socials: { + "twitter": MetadataViews.ExternalURL("https://twitter.com/flow_blockchain") + } + ) + case Type(): + // Implementing this view gives the project control over how the bridged NFT is represented as an ERC721 + // when bridged to EVM on Flow via the public infrastructure bridge. + + // Compose the contract-level URI. In this case, the contract metadata is located on some HTTP host, + // but it could be IPFS, S3, a data URL containing the JSON directly, etc. + return MetadataViews.EVMBridgedMetadata( + name: "ExampleNFT", + symbol: "XMPL", + uri: MetadataViews.URI( + baseURI: nil, // setting baseURI as nil sets the given value as the uri field value + value: "https://example-nft.onflow.org/contract-metadata.json" + ) + ) + } + return nil + } + + /// Resource that an admin or something similar would own to be + /// able to mint new NFTs + /// + access(all) resource NFTMinter { + + /// mintNFT mints a new NFT with a new ID + /// and returns it to the calling context + access(all) fun mintNFT( + name: String, + description: String, + thumbnail: String, + royalties: [MetadataViews.Royalty] + ): @ExampleNFT.NFT { + + let metadata: {String: AnyStruct} = {} + let currentBlock = getCurrentBlock() + metadata["mintedBlock"] = currentBlock.height + metadata["mintedTime"] = currentBlock.timestamp + + // this piece of metadata will be used to show embedding rarity into a trait + metadata["foo"] = "bar" + + // create a new NFT + var newNFT <- create NFT( + name: name, + description: description, + thumbnail: thumbnail, + royalties: royalties, + metadata: metadata, + ) + + return <-newNFT + } + } + + init() { + + // Set the named paths + self.CollectionStoragePath = /storage/exampleNFTCollection + self.CollectionPublicPath = /public/exampleNFTCollection + self.MinterStoragePath = /storage/exampleNFTMinter + + // Create a Collection resource and save it to storage + let collection <- create Collection() + self.account.storage.save(<-collection, to: self.CollectionStoragePath) + + // create a public capability for the collection + let collectionCap = self.account.capabilities.storage.issue<&ExampleNFT.Collection>(self.CollectionStoragePath) + self.account.capabilities.publish(collectionCap, at: self.CollectionPublicPath) + + // Create a Minter resource and save it to storage + let minter <- create NFTMinter() + self.account.storage.save(<-minter, to: self.MinterStoragePath) + } +} diff --git a/contracts/standard/FUSD.cdc b/contracts/standard/FUSD.cdc index ef45ba3..4904a2a 100644 --- a/contracts/standard/FUSD.cdc +++ b/contracts/standard/FUSD.cdc @@ -1,118 +1,163 @@ import FungibleToken from "./FungibleToken.cdc" +import MetadataViews from "./MetadataViews.cdc" +import FungibleTokenMetadataViews from "./FungibleTokenMetadataViews.cdc" -pub contract FUSD: FungibleToken { +access(all) contract FUSD: FungibleToken { - // Event that is emitted when the contract is created - pub event TokensInitialized(initialSupply: UFix64) - - // Event that is emitted when tokens are withdrawn from a Vault - pub event TokensWithdrawn(amount: UFix64, from: Address?) - - // Event that is emitted when tokens are deposited to a Vault - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) entitlement MinterProxyOwner // Event that is emitted when new tokens are minted - pub event TokensMinted(amount: UFix64) + access(all) event TokensMinted(amount: UFix64) // The storage path for the admin resource - pub let AdminStoragePath: StoragePath + access(all) let AdminStoragePath: StoragePath // The storage Path for minters' MinterProxy - pub let MinterProxyStoragePath: StoragePath + access(all) let MinterProxyStoragePath: StoragePath // The public path for minters' MinterProxy capability - pub let MinterProxyPublicPath: PublicPath - - // Event that is emitted when a new minter resource is created - pub event MinterCreated() + access(all) let MinterProxyPublicPath: PublicPath // Total supply of fusd in existence - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 + + // -------- ViewResolver Functions for MetadataViews -------- + access(all) view fun getContractViews(resourceType: Type?): [Type] { + return [ + Type(), + Type(), + Type(), + Type() + ] + } + + access(all) fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? { + switch viewType { + case Type(): + return FungibleTokenMetadataViews.FTView( + ftDisplay: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTDisplay?, + ftVaultData: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ) + case Type(): + let media = MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: "" + ), + mediaType: "" + ) + let medias = MetadataViews.Medias([media]) + return FungibleTokenMetadataViews.FTDisplay( + name: "Flow USD", + symbol: "FUSD", + description: "Deprecated version of Flow USD. Developers are advised to not use this contract any more", + externalURL: MetadataViews.ExternalURL(""), + logos: medias, + socials: {} + ) + case Type(): + return FungibleTokenMetadataViews.FTVaultData( + storagePath: /storage/fusdVault, + receiverPath: /public/fusdReceiver, + metadataPath: /public/fusdBalance, + receiverLinkedType: Type<&FUSD.Vault>(), + metadataLinkedType: Type<&FUSD.Vault>(), + createEmptyVaultFunction: (fun(): @{FungibleToken.Vault} { + return <-FUSD.createEmptyVault(vaultType: Type<@FUSD.Vault>()) + }) + ) + case Type(): + return FungibleTokenMetadataViews.TotalSupply( + totalSupply: FUSD.totalSupply + ) + } + return nil + } // Vault // - // Each user stores an instance of only the Vault in their storage - // The functions in the Vault are governed by the pre and post conditions - // in FungibleToken when they are called. - // The checks happen at runtime whenever a function is called. - // - // Resources can only be created in the context of the contract that they - // are defined in, so there is no way for a malicious user to create Vaults - // out of thin air. A special Minter resource needs to be defined to mint - // new tokens. - // - pub resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { + access(all) resource Vault: FungibleToken.Vault { // holds the balance of a users tokens - pub var balance: UFix64 + access(all) var balance: UFix64 // initialize the balance at resource creation time init(balance: UFix64) { self.balance = balance } + /// Called when a fungible token is burned via the `Burner.burn()` method + access(contract) fun burnCallback() { + if self.balance > 0.0 { + FUSD.totalSupply = FUSD.totalSupply - self.balance + } + self.balance = 0.0 + } + + access(all) view fun getViews(): [Type] { + return FUSD.getContractViews(resourceType: nil) + } + + access(all) fun resolveView(_ view: Type): AnyStruct? { + return FUSD.resolveContractView(resourceType: nil, viewType: view) + } + + /// getSupportedVaultTypes optionally returns a list of vault types that this receiver accepts + access(all) view fun getSupportedVaultTypes(): {Type: Bool} { + let supportedTypes: {Type: Bool} = {} + supportedTypes[self.getType()] = true + return supportedTypes + } + + access(all) view fun isSupportedVaultType(type: Type): Bool { + return self.getSupportedVaultTypes()[type] ?? false + } + + /// Asks if the amount can be withdrawn from this vault + access(all) view fun isAvailableToWithdraw(amount: UFix64): Bool { + return amount <= self.balance + } + // withdraw // - // Function that takes an integer amount as an argument - // and withdraws that amount from the Vault. - // It creates a new temporary Vault that is used to hold - // the money that is being transferred. It returns the newly - // created Vault to the context that called so it can be deposited - // elsewhere. - // - pub fun withdraw(amount: UFix64): @FungibleToken.Vault { + access(FungibleToken.Withdraw) fun withdraw(amount: UFix64): @{FungibleToken.Vault} { self.balance = self.balance - amount - emit TokensWithdrawn(amount: amount, from: self.owner?.address) return <-create Vault(balance: amount) } // deposit // - // Function that takes a Vault object as an argument and adds - // its balance to the balance of the owners Vault. - // It is allowed to destroy the sent Vault because the Vault - // was a temporary holder of the tokens. The Vault's balance has - // been consumed and therefore can be destroyed. - pub fun deposit(from: @FungibleToken.Vault) { + access(all) fun deposit(from: @{FungibleToken.Vault}) { let vault <- from as! @FUSD.Vault self.balance = self.balance + vault.balance - emit TokensDeposited(amount: vault.balance, to: self.owner?.address) vault.balance = 0.0 destroy vault } - destroy() { - FUSD.totalSupply = FUSD.totalSupply - self.balance + /// createEmptyVault allows any user to create a new Vault that has a zero balance + /// + access(all) fun createEmptyVault(): @{FungibleToken.Vault} { + return <- FUSD.createEmptyVault(vaultType: Type<@FUSD.Vault>()) } } // createEmptyVault // - // Function that creates a new Vault with a balance of zero - // and returns it to the calling context. A user must call this function - // and store the returned Vault in their storage in order to allow their - // account to be able to receive deposits of this token type. - // - pub fun createEmptyVault(): @FUSD.Vault { + access(all) fun createEmptyVault(vaultType: Type): @{FungibleToken.Vault} { + pre { + vaultType == Type<@FUSD.Vault>(): "Unsupported vault type requested" + } return <-create Vault(balance: 0.0) } // Minter - // - // Resource object that can mint new tokens. - // The admin stores this and passes it to the minter account as a capability wrapper resource. - // - pub resource Minter { + access(all) resource Minter { // mintTokens // // Function that mints new tokens, adds them to the total supply, // and returns them to the calling context. // - pub fun mintTokens(amount: UFix64): @FUSD.Vault { - pre { - amount > 0.0: "Amount minted must be greater than zero" - } + access(all) fun mintTokens(amount: UFix64): @FUSD.Vault { FUSD.totalSupply = FUSD.totalSupply + amount emit TokensMinted(amount: amount) return <-create Vault(balance: amount) @@ -120,8 +165,8 @@ pub contract FUSD: FungibleToken { } - pub resource interface MinterProxyPublic { - pub fun setMinterCapability(cap: Capability<&Minter>) + access(all) resource interface MinterProxyPublic { + access(all) fun setMinterCapability(cap: Capability<&Minter>) } // MinterProxy @@ -129,19 +174,18 @@ pub contract FUSD: FungibleToken { // Resource object holding a capability that can be used to mint new tokens. // The resource that this capability represents can be deleted by the admin // in order to unilaterally revoke minting capability if needed. - - pub resource MinterProxy: MinterProxyPublic { + access(all) resource MinterProxy: MinterProxyPublic { // access(self) so nobody else can copy the capability and use it. access(self) var minterCapability: Capability<&Minter>? // Anyone can call this, but only the admin can create Minter capabilities, // so the type system constrains this to being called by the admin. - pub fun setMinterCapability(cap: Capability<&Minter>) { + access(all) fun setMinterCapability(cap: Capability<&Minter>) { self.minterCapability = cap } - pub fun mintTokens(amount: UFix64): @FUSD.Vault { + access(MinterProxyOwner) fun mintTokens(amount: UFix64): @FUSD.Vault { return <- self.minterCapability! .borrow()! .mintTokens(amount:amount) @@ -150,58 +194,37 @@ pub contract FUSD: FungibleToken { init() { self.minterCapability = nil } - - } - - // createMinterProxy - // - // Function that creates a MinterProxy. - // Anyone can call this, but the MinterProxy cannot mint without a Minter capability, - // and only the admin can provide that. - // - pub fun createMinterProxy(): @MinterProxy { - return <- create MinterProxy() } // Administrator - // - // A resource that allows new minters to be created - // - // We will only want one minter for now, but might need to add or replace them in future. - // The Minter/Minter Proxy structure enables this. - // Ideally we would create this structure in a single function, generate the paths from the address - // and cache all of this information to enable easy revocation but String/Path comversion isn't yet supported. - // - pub resource Administrator { - - // createNewMinter - // - // Function that creates a Minter resource. - // This should be stored at a unique path in storage then a capability to it wrapped - // in a MinterProxy to be stored in a minter account's storage. - // This is done by the minter account running: - // transactions/fusd/minter/setup_fusd_minter.cdc - // then the admin account running: - // transactions/fusd/admin/deposit_fusd_minter.cdc - // - pub fun createNewMinter(): @Minter { - emit MinterCreated() - return <- create Minter() - } - - } + // kept for backwards compatibility + access(all) resource Administrator {} init() { self.AdminStoragePath = /storage/fusdAdmin self.MinterProxyPublicPath = /public/fusdMinterProxy self.MinterProxyStoragePath = /storage/fusdMinterProxy - self.totalSupply = 0.0 + self.totalSupply = 1000.0 + + let minter <- create Minter() + self.account.storage.save(<-minter, to: self.AdminStoragePath) + + let vault <- create Vault(balance: self.totalSupply) + + // Create a new FUSD Vault and put it in storage + self.account.storage.save(<-vault, to: /storage/fusdVault) - let admin <- create Administrator() - self.account.save(<-admin, to: self.AdminStoragePath) + // Create a public capability to the Vault that exposes the Vault interfaces + let vaultCap = self.account.capabilities.storage.issue<&FUSD.Vault>( + /storage/fusdVault + ) + self.account.capabilities.publish(vaultCap, at: /public/fusdBalance) - // Emit an event that shows that the contract was initialized - emit TokensInitialized(initialSupply: 0.0) + // Create a public Capability to the Vault's Receiver functionality + let receiverCap = self.account.capabilities.storage.issue<&FUSD.Vault>( + /storage/fusdVault + ) + self.account.capabilities.publish(receiverCap, at: /public/fusdReceiver) } -} \ No newline at end of file +} diff --git a/contracts/standard/FlowToken.cdc b/contracts/standard/FlowToken.cdc index a69a715..835cb1d 100644 --- a/contracts/standard/FlowToken.cdc +++ b/contracts/standard/FlowToken.cdc @@ -1,30 +1,26 @@ import FungibleToken from "./FungibleToken.cdc" +import MetadataViews from "./MetadataViews.cdc" +import FungibleTokenMetadataViews from "./FungibleTokenMetadataViews.cdc" -pub contract FlowToken: FungibleToken { +access(all) contract FlowToken: FungibleToken { // Total supply of Flow tokens in existence - pub var totalSupply: UFix64 - - // Event that is emitted when the contract is created - pub event TokensInitialized(initialSupply: UFix64) + access(all) var totalSupply: UFix64 // Event that is emitted when tokens are withdrawn from a Vault - pub event TokensWithdrawn(amount: UFix64, from: Address?) + access(all) event TokensWithdrawn(amount: UFix64, from: Address?) // Event that is emitted when tokens are deposited to a Vault - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) event TokensDeposited(amount: UFix64, to: Address?) // Event that is emitted when new tokens are minted - pub event TokensMinted(amount: UFix64) - - // Event that is emitted when tokens are destroyed - pub event TokensBurned(amount: UFix64) + access(all) event TokensMinted(amount: UFix64) // Event that is emitted when a new minter resource is created - pub event MinterCreated(allowedAmount: UFix64) + access(all) event MinterCreated(allowedAmount: UFix64) // Event that is emitted when a new burner resource is created - pub event BurnerCreated() + access(all) event BurnerCreated() // Vault // @@ -38,16 +34,38 @@ pub contract FlowToken: FungibleToken { // out of thin air. A special Minter resource needs to be defined to mint // new tokens. // - pub resource Vault: FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance { + access(all) resource Vault: FungibleToken.Vault { // holds the balance of a users tokens - pub var balance: UFix64 + access(all) var balance: UFix64 // initialize the balance at resource creation time init(balance: UFix64) { self.balance = balance } + /// Called when a fungible token is burned via the `Burner.burn()` method + access(contract) fun burnCallback() { + if self.balance > 0.0 { + FlowToken.totalSupply = FlowToken.totalSupply - self.balance + } + self.balance = 0.0 + } + + /// getSupportedVaultTypes optionally returns a list of vault types that this receiver accepts + access(all) view fun getSupportedVaultTypes(): {Type: Bool} { + return {self.getType(): true} + } + + access(all) view fun isSupportedVaultType(type: Type): Bool { + if (type == self.getType()) { return true } else { return false } + } + + /// Asks if the amount can be withdrawn from this vault + access(all) view fun isAvailableToWithdraw(amount: UFix64): Bool { + return amount <= self.balance + } + // withdraw // // Function that takes an integer amount as an argument @@ -57,9 +75,27 @@ pub contract FlowToken: FungibleToken { // created Vault to the context that called so it can be deposited // elsewhere. // - pub fun withdraw(amount: UFix64): @FungibleToken.Vault { + access(FungibleToken.Withdraw) fun withdraw(amount: UFix64): @{FungibleToken.Vault} { self.balance = self.balance - amount - emit TokensWithdrawn(amount: amount, from: self.owner?.address) + + // If the owner is the staking account, do not emit the contract defined events + // this is to help with the performance of the epoch transition operations + // Either way, event listeners should be paying attention to the + // FungibleToken.Withdrawn events anyway because those contain + // much more comprehensive metadata + // Additionally, these events will eventually be removed from this contract completely + // in favor of the FungibleToken events + if let address = self.owner?.address { + if address != 0xf8d6e0586b0a20c7 && + address != 0xf4527793ee68aede && + address != 0x9eca2b38b18b5dfe && + address != 0x8624b52f9ddcd04a + { + emit TokensWithdrawn(amount: amount, from: address) + } + } else { + emit TokensWithdrawn(amount: amount, from: nil) + } return <-create Vault(balance: amount) } @@ -70,16 +106,52 @@ pub contract FlowToken: FungibleToken { // It is allowed to destroy the sent Vault because the Vault // was a temporary holder of the tokens. The Vault's balance has // been consumed and therefore can be destroyed. - pub fun deposit(from: @FungibleToken.Vault) { + access(all) fun deposit(from: @{FungibleToken.Vault}) { let vault <- from as! @FlowToken.Vault self.balance = self.balance + vault.balance - emit TokensDeposited(amount: vault.balance, to: self.owner?.address) + + // If the owner is the staking account, do not emit the contract defined events + // this is to help with the performance of the epoch transition operations + // Either way, event listeners should be paying attention to the + // FungibleToken.Deposited events anyway because those contain + // much more comprehensive metadata + // Additionally, these events will eventually be removed from this contract completely + // in favor of the FungibleToken events + if let address = self.owner?.address { + if address != 0xf8d6e0586b0a20c7 && + address != 0xf4527793ee68aede && + address != 0x9eca2b38b18b5dfe && + address != 0x8624b52f9ddcd04a + { + emit TokensDeposited(amount: vault.balance, to: address) + } + } else { + emit TokensDeposited(amount: vault.balance, to: nil) + } vault.balance = 0.0 destroy vault } - destroy() { - FlowToken.totalSupply = FlowToken.totalSupply - self.balance + /// Get all the Metadata Views implemented by FlowToken + /// + /// @return An array of Types defining the implemented views. This value will be used by + /// developers to know which parameter to pass to the resolveView() method. + /// + access(all) view fun getViews(): [Type]{ + return FlowToken.getContractViews(resourceType: nil) + } + + /// Get a Metadata View from FlowToken + /// + /// @param view: The Type of the desired view. + /// @return A structure representing the requested view. + /// + access(all) fun resolveView(_ view: Type): AnyStruct? { + return FlowToken.resolveContractView(resourceType: nil, viewType: view) + } + + access(all) fun createEmptyVault(): @{FungibleToken.Vault} { + return <-create Vault(balance: 0.0) } } @@ -90,45 +162,93 @@ pub contract FlowToken: FungibleToken { // and store the returned Vault in their storage in order to allow their // account to be able to receive deposits of this token type. // - pub fun createEmptyVault(): @FungibleToken.Vault { + access(all) fun createEmptyVault(vaultType: Type): @FlowToken.Vault { return <-create Vault(balance: 0.0) } - pub resource Administrator { + /// Gets a list of the metadata views that this contract supports + access(all) view fun getContractViews(resourceType: Type?): [Type] { + return [Type(), + Type(), + Type(), + Type()] + } + + /// Get a Metadata View from FlowToken + /// + /// @param view: The Type of the desired view. + /// @return A structure representing the requested view. + /// + access(all) fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? { + switch viewType { + case Type(): + return FungibleTokenMetadataViews.FTView( + ftDisplay: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTDisplay?, + ftVaultData: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ) + case Type(): + let media = MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: FlowToken.getLogoURI() + ), + mediaType: "image/svg+xml" + ) + let medias = MetadataViews.Medias([media]) + return FungibleTokenMetadataViews.FTDisplay( + name: "FLOW Network Token", + symbol: "FLOW", + description: "FLOW is the native token for the Flow blockchain. It is required for securing the network, transaction fees, storage fees, staking, FLIP voting and may be used by applications built on the Flow Blockchain", + externalURL: MetadataViews.ExternalURL("https://flow.com"), + logos: medias, + socials: { + "twitter": MetadataViews.ExternalURL("https://twitter.com/flow_blockchain") + } + ) + case Type(): + let vaultRef = FlowToken.account.storage.borrow(from: /storage/flowTokenVault) + ?? panic("Could not borrow reference to the contract's Vault!") + return FungibleTokenMetadataViews.FTVaultData( + storagePath: /storage/flowTokenVault, + receiverPath: /public/flowTokenReceiver, + metadataPath: /public/flowTokenBalance, + receiverLinkedType: Type<&{FungibleToken.Receiver, FungibleToken.Vault}>(), + metadataLinkedType: Type<&{FungibleToken.Balance, FungibleToken.Vault}>(), + createEmptyVaultFunction: (fun (): @{FungibleToken.Vault} { + return <-vaultRef.createEmptyVault() + }) + ) + case Type(): + return FungibleTokenMetadataViews.TotalSupply(totalSupply: FlowToken.totalSupply) + } + return nil + } + + access(all) resource Administrator { // createNewMinter // // Function that creates and returns a new minter resource // - pub fun createNewMinter(allowedAmount: UFix64): @Minter { + access(all) fun createNewMinter(allowedAmount: UFix64): @Minter { emit MinterCreated(allowedAmount: allowedAmount) return <-create Minter(allowedAmount: allowedAmount) } - - // createNewBurner - // - // Function that creates and returns a new burner resource - // - pub fun createNewBurner(): @Burner { - emit BurnerCreated() - return <-create Burner() - } } // Minter // // Resource object that token admin accounts can hold to mint new tokens. // - pub resource Minter { + access(all) resource Minter { // the amount of tokens that the minter is allowed to mint - pub var allowedAmount: UFix64 + access(all) var allowedAmount: UFix64 // mintTokens // // Function that mints new tokens, adds them to the total supply, // and returns them to the calling context. // - pub fun mintTokens(amount: UFix64): @FlowToken.Vault { + access(all) fun mintTokens(amount: UFix64): @FlowToken.Vault { pre { amount > UFix64(0): "Amount minted must be greater than zero" amount <= self.allowedAmount: "Amount minted must be less than the allowed amount" @@ -144,55 +264,34 @@ pub contract FlowToken: FungibleToken { } } - // Burner - // - // Resource object that token admin accounts can hold to burn tokens. - // - pub resource Burner { - - // burnTokens - // - // Function that destroys a Vault instance, effectively burning the tokens. - // - // Note: the burned tokens are automatically subtracted from the - // total supply in the Vault destructor. - // - pub fun burnTokens(from: @FungibleToken.Vault) { - let vault <- from as! @FlowToken.Vault - let amount = vault.balance - destroy vault - emit TokensBurned(amount: amount) - } + /// Gets the Flow Logo XML URI from storage + access(all) view fun getLogoURI(): String { + return FlowToken.account.storage.copy(from: /storage/flowTokenLogoURI) ?? "" } - init(adminAccount: AuthAccount) { + init() { self.totalSupply = 0.0 // Create the Vault with the total supply of tokens and save it in storage // let vault <- create Vault(balance: self.totalSupply) - adminAccount.save(<-vault, to: /storage/flowTokenVault) + + self.account.storage.save(<-vault, to: /storage/flowTokenVault) // Create a public capability to the stored Vault that only exposes // the `deposit` method through the `Receiver` interface // - adminAccount.link<&FlowToken.Vault{FungibleToken.Receiver}>( - /public/flowTokenReceiver, - target: /storage/flowTokenVault - ) + let receiverCapability = self.account.capabilities.storage.issue<&FlowToken.Vault>(/storage/flowTokenVault) + self.account.capabilities.publish(receiverCapability, at: /public/flowTokenReceiver) // Create a public capability to the stored Vault that only exposes // the `balance` field through the `Balance` interface // - adminAccount.link<&FlowToken.Vault{FungibleToken.Balance}>( - /public/flowTokenBalance, - target: /storage/flowTokenVault - ) + let balanceCapability = self.account.capabilities.storage.issue<&FlowToken.Vault>(/storage/flowTokenVault) + self.account.capabilities.publish(balanceCapability, at: /public/flowTokenBalance) let admin <- create Administrator() - adminAccount.save(<-admin, to: /storage/flowTokenAdmin) + self.account.storage.save(<-admin, to: /storage/flowTokenAdmin) - // Emit an event that shows that the contract was initialized - emit TokensInitialized(initialSupply: self.totalSupply) } -} \ No newline at end of file +} diff --git a/contracts/standard/FungibleToken.cdc b/contracts/standard/FungibleToken.cdc index eca3737..cb619bb 100644 --- a/contracts/standard/FungibleToken.cdc +++ b/contracts/standard/FungibleToken.cdc @@ -4,7 +4,7 @@ ## `FungibleToken` contract interface -The interface that all fungible token contracts would have to conform to. +The interface that all Fungible Token contracts would have to conform to. If a users wants to deploy a new token contract, their contract would need to implement the FungibleToken interface. @@ -32,7 +32,7 @@ these interfaces to do various things with the tokens. For example, a faucet can be implemented by conforming to the Provider interface. -By using resources and interfaces, users of FungibleToken contracts +By using resources and interfaces, users of Fungible Token contracts can send and receive tokens peer-to-peer, without having to interact with a central ledger smart contract. To send tokens to another user, a user would simply withdraw the tokens from their Vault, then call @@ -40,38 +40,27 @@ the deposit function on another user's Vault to complete the transfer. */ -/// FungibleToken +/// The interface that Fungible Token contracts implement. /// -/// The interface that fungible token contracts implement. -/// -pub contract interface FungibleToken { +access(all) contract interface FungibleToken { + + // An entitlement for allowing the withdrawal of tokens from a Vault + access(all) entitlement Withdrawable /// The total number of tokens in existence. /// It is up to the implementer to ensure that the total supply /// stays accurate and up to date - /// - pub var totalSupply: UFix64 + access(all) var totalSupply: UFix64 - /// TokensInitialized - /// /// The event that is emitted when the contract is created - /// - pub event TokensInitialized(initialSupply: UFix64) + access(all) event TokensInitialized(initialSupply: UFix64) - /// TokensWithdrawn - /// /// The event that is emitted when tokens are withdrawn from a Vault - /// - pub event TokensWithdrawn(amount: UFix64, from: Address?) + access(all) event TokensWithdrawn(amount: UFix64, from: Address?) - /// TokensDeposited - /// /// The event that is emitted when tokens are deposited into a Vault - /// - pub event TokensDeposited(amount: UFix64, to: Address?) + access(all) event TokensDeposited(amount: UFix64, to: Address?) - /// Provider - /// /// The interface that enforces the requirements for withdrawing /// tokens from the implementing type. /// @@ -79,9 +68,9 @@ pub contract interface FungibleToken { /// because it leaves open the possibility of creating custom providers /// that do not necessarily need their own balance. /// - pub resource interface Provider { + access(all) resource interface Provider { - /// withdraw subtracts tokens from the owner's Vault + /// Subtracts tokens from the owner's Vault /// and returns a Vault with the removed tokens. /// /// The function's access level is public, but this is not a problem @@ -96,7 +85,10 @@ pub contract interface FungibleToken { /// capability that allows all users to access the provider /// resource through a reference. /// - pub fun withdraw(amount: UFix64): @Vault { + /// @param amount: The amount of tokens to be withdrawn from the vault + /// @return The Vault resource containing the withdrawn funds + /// + access(Withdrawable) fun withdraw(amount: UFix64): @Vault { post { // `result` refers to the return value result.balance == amount: @@ -105,8 +97,6 @@ pub contract interface FungibleToken { } } - /// Receiver - /// /// The interface that enforces the requirements for depositing /// tokens into the implementing type. /// @@ -115,24 +105,48 @@ pub contract interface FungibleToken { /// can do custom things with the tokens, like split them up and /// send them to different places. /// - pub resource interface Receiver { + access(all) resource interface Receiver { + + /// Takes a Vault and deposits it into the implementing resource type + /// + /// @param from: The Vault resource containing the funds that will be deposited + /// + access(all) fun deposit(from: @Vault) - /// deposit takes a Vault and deposits it into the implementing resource type + /// Below is referenced from the FLIP #69 https://github.com/onflow/flips/blob/main/flips/20230206-fungible-token-vault-type-discovery.md /// - pub fun deposit(from: @Vault) + /// Returns the dictionary of Vault types that the the receiver is able to accept in its `deposit` method + /// this then it would return `{Type<@FlowToken.Vault>(): true}` and if any custom receiver + /// uses the default implementation then it would return empty dictionary as its parent + /// resource doesn't conform with the `FungibleToken.Vault` resource. + /// + /// Custom receiver implementations are expected to upgrade their contracts to add an implementation + /// that supports this method because it is very valuable for various applications to have. + /// + /// @return dictionary of supported deposit vault types by the implementing resource. + /// + access(all) view fun getSupportedVaultTypes(): {Type: Bool} { + // Below check is implemented to make sure that run-time type would + // only get returned when the parent resource conforms with `FungibleToken.Vault`. + if self.getType().isSubtype(of: Type<@FungibleToken.Vault>()) { + return {self.getType(): true} + } else { + // Return an empty dictionary as the default value for resource who don't + // implement `FungibleToken.Vault`, such as `FungibleTokenSwitchboard`, `TokenForwarder` etc. + return {} + } + } } - /// Balance - /// /// The interface that contains the `balance` field of the Vault /// and enforces that when new Vaults are created, the balance /// is initialized correctly. /// - pub resource interface Balance { + access(all) resource interface Balance { /// The total balance of a vault /// - pub var balance: UFix64 + access(all) var balance: UFix64 init(balance: UFix64) { post { @@ -140,32 +154,49 @@ pub contract interface FungibleToken { "Balance must be initialized to the initial balance" } } + + /// Function that returns all the Metadata Views implemented by a Fungible Token + /// + /// @return An array of Types defining the implemented views. This value will be used by + /// developers to know which parameter to pass to the resolveView() method. + /// + access(all) view fun getViews(): [Type] { + return [] + } + + /// Function that resolves a metadata view for this fungible token by type. + /// + /// @param view: The Type of the desired view. + /// @return A structure representing the requested view. + /// + access(all) fun resolveView(_ view: Type): AnyStruct? { + return nil + } } - /// Vault - /// /// The resource that contains the functions to send and receive tokens. + /// The declaration of a concrete type in a contract interface means that + /// every Fungible Token contract that implements the FungibleToken interface + /// must define a concrete `Vault` resource that conforms to the `Provider`, `Receiver`, + /// and `Balance` interfaces, and declares their required fields and functions /// - pub resource Vault: Provider, Receiver, Balance { - - // The declaration of a concrete type in a contract interface means that - // every Fungible Token contract that implements the FungibleToken interface - // must define a concrete `Vault` resource that conforms to the `Provider`, `Receiver`, - // and `Balance` interfaces, and declares their required fields and functions + access(all) resource Vault: Provider, Receiver, Balance { /// The total balance of the vault - /// - pub var balance: UFix64 + access(all) var balance: UFix64 // The conforming type must declare an initializer - // that allows prioviding the initial balance of the Vault + // that allows providing the initial balance of the Vault // init(balance: UFix64) - /// withdraw subtracts `amount` from the Vault's balance + /// Subtracts `amount` from the Vault's balance /// and returns a new Vault with the subtracted balance /// - pub fun withdraw(amount: UFix64): @Vault { + /// @param amount: The amount of tokens to be withdrawn from the vault + /// @return The Vault resource containing the withdrawn funds + /// + access(Withdrawable) fun withdraw(amount: UFix64): @Vault { pre { self.balance >= amount: "Amount withdrawn must be less than or equal than the balance of the Vault" @@ -179,9 +210,17 @@ pub contract interface FungibleToken { } } - /// deposit takes a Vault and adds its balance to the balance of this Vault + /// Takes a Vault and deposits it into the implementing resource type /// - pub fun deposit(from: @Vault) { + /// @param from: The Vault resource containing the funds that will be deposited + /// + access(all) fun deposit(from: @Vault) { + // Assert that the concrete type of the deposited vault is the same + // as the vault that is accepting the deposit + pre { + from.isInstance(self.getType()): + "Cannot deposit an incompatible token type" + } post { self.balance == before(self.balance) + before(from.balance): "New Vault balance must be the sum of the previous balance and the deposited Vault" @@ -189,11 +228,13 @@ pub contract interface FungibleToken { } } - /// createEmptyVault allows any user to create a new Vault that has a zero balance + /// Allows any user to create a new Vault that has a zero balance + /// + /// @return The new Vault resource /// - pub fun createEmptyVault(): @Vault { + access(all) fun createEmptyVault(): @Vault { post { result.balance == 0.0: "The newly created Vault must have zero balance" } } -} \ No newline at end of file +} diff --git a/contracts/standard/FungibleTokenMetadataViews.cdc b/contracts/standard/FungibleTokenMetadataViews.cdc new file mode 100644 index 0000000..98e62ca --- /dev/null +++ b/contracts/standard/FungibleTokenMetadataViews.cdc @@ -0,0 +1,185 @@ +import "FungibleToken" +import "MetadataViews" +import "ViewResolver" + +/// This contract implements the metadata standard proposed +/// in FLIP-1087. +/// +/// Ref: https://github.com/onflow/flips/blob/main/application/20220811-fungible-tokens-metadata.md +/// +/// Structs and resources can implement one or more +/// metadata types, called views. Each view type represents +/// a different kind of metadata. +/// +access(all) contract FungibleTokenMetadataViews { + + /// FTView wraps FTDisplay and FTVaultData, and is used to give a complete + /// picture of a Fungible Token. Most Fungible Token contracts should + /// implement this view. + /// + access(all) struct FTView { + access(all) let ftDisplay: FTDisplay? + access(all) let ftVaultData: FTVaultData? + view init( + ftDisplay: FTDisplay?, + ftVaultData: FTVaultData? + ) { + self.ftDisplay = ftDisplay + self.ftVaultData = ftVaultData + } + } + + /// Helper to get a FT view. + /// + /// @param viewResolver: A reference to the resolver resource + /// @return A FTView struct + /// + access(all) fun getFTView(viewResolver: &{ViewResolver.Resolver}): FTView { + let maybeFTView = viewResolver.resolveView(Type()) + if let ftView = maybeFTView { + return ftView as! FTView + } + return FTView( + ftDisplay: self.getFTDisplay(viewResolver), + ftVaultData: self.getFTVaultData(viewResolver) + ) + } + + /// View to expose the information needed to showcase this FT. + /// This can be used by applications to give an overview and + /// graphics of the FT. + /// + access(all) struct FTDisplay { + /// The display name for this token. + /// + /// Example: "Flow" + /// + access(all) let name: String + + /// The abbreviated symbol for this token. + /// + /// Example: "FLOW" + access(all) let symbol: String + + /// A description the provides an overview of this token. + /// + /// Example: "The FLOW token is the native currency of the Flow network." + access(all) let description: String + + /// External link to a URL to view more information about the fungible token. + access(all) let externalURL: MetadataViews.ExternalURL + + /// One or more versions of the fungible token logo. + access(all) let logos: MetadataViews.Medias + + /// Social links to reach the fungible token's social homepages. + /// Possible keys may be "instagram", "twitter", "discord", etc. + access(all) let socials: {String: MetadataViews.ExternalURL} + + view init( + name: String, + symbol: String, + description: String, + externalURL: MetadataViews.ExternalURL, + logos: MetadataViews.Medias, + socials: {String: MetadataViews.ExternalURL} + ) { + self.name = name + self.symbol = symbol + self.description = description + self.externalURL = externalURL + self.logos = logos + self.socials = socials + } + } + + /// Helper to get FTDisplay in a way that will return a typed optional. + /// + /// @param viewResolver: A reference to the resolver resource + /// @return An optional FTDisplay struct + /// + access(all) fun getFTDisplay(_ viewResolver: &{ViewResolver.Resolver}): FTDisplay? { + if let maybeDisplayView = viewResolver.resolveView(Type()) { + if let displayView = maybeDisplayView as? FTDisplay { + return displayView + } + } + return nil + } + + /// View to expose the information needed store and interact with a FT vault. + /// This can be used by applications to setup a FT vault with proper + /// storage and public capabilities. + /// + access(all) struct FTVaultData { + /// Path in storage where this FT vault is recommended to be stored. + access(all) let storagePath: StoragePath + + /// Public path which must be linked to expose the public receiver capability. + access(all) let receiverPath: PublicPath + + /// Public path which must be linked to expose the balance and resolver public capabilities. + access(all) let metadataPath: PublicPath + + /// Type that should be linked at the `receiverPath`. This is a restricted type requiring + /// the `FungibleToken.Receiver` interface. + access(all) let receiverLinkedType: Type + + /// Type that should be linked at the `receiverPath`. This is a restricted type requiring + /// the `ViewResolver.Resolver` interfaces. + access(all) let metadataLinkedType: Type + + /// Function that allows creation of an empty FT vault that is intended + /// to store the funds. + access(all) let createEmptyVault: fun(): @{FungibleToken.Vault} + + view init( + storagePath: StoragePath, + receiverPath: PublicPath, + metadataPath: PublicPath, + receiverLinkedType: Type, + metadataLinkedType: Type, + createEmptyVaultFunction: fun(): @{FungibleToken.Vault} + ) { + pre { + receiverLinkedType.isSubtype(of: Type<&{FungibleToken.Receiver}>()): + "Receiver public type <".concat(receiverLinkedType.identifier) + .concat("> must be a subtype of <").concat(Type<&{FungibleToken.Receiver}>().identifier) + .concat(">.") + metadataLinkedType.isSubtype(of: Type<&{FungibleToken.Vault}>()): + "Metadata linked type <".concat(metadataLinkedType.identifier) + .concat("> must be a subtype of <").concat(Type<&{FungibleToken.Vault}>().identifier) + .concat(">.") + } + self.storagePath = storagePath + self.receiverPath = receiverPath + self.metadataPath = metadataPath + self.receiverLinkedType = receiverLinkedType + self.metadataLinkedType = metadataLinkedType + self.createEmptyVault = createEmptyVaultFunction + } + } + + /// Helper to get FTVaultData in a way that will return a typed Optional. + /// + /// @param viewResolver: A reference to the resolver resource + /// @return A optional FTVaultData struct + /// + access(all) fun getFTVaultData(_ viewResolver: &{ViewResolver.Resolver}): FTVaultData? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? FTVaultData { + return v + } + } + return nil + } + + /// View to expose the total supply of the Vault's token + access(all) struct TotalSupply { + access(all) let supply: UFix64 + + view init(totalSupply: UFix64) { + self.supply = totalSupply + } + } +} diff --git a/contracts/standard/FungibleTokenSwitchboard.cdc b/contracts/standard/FungibleTokenSwitchboard.cdc index eab4394..1e9aa80 100644 --- a/contracts/standard/FungibleTokenSwitchboard.cdc +++ b/contracts/standard/FungibleTokenSwitchboard.cdc @@ -1,230 +1,371 @@ import FungibleToken from "./FungibleToken.cdc" -/// FungibleTokenSwitchboard -/// /// The contract that allows an account to receive payments in multiple fungible -/// tokens using a single `{FungibleToken.Receiver}` capability +/// tokens using a single `{FungibleToken.Receiver}` capability. /// This capability should ideally be stored at the /// `FungibleTokenSwitchboard.ReceiverPublicPath = /public/GenericFTReceiver` -/// but it can be stored anywhere +/// but it can be stored anywhere. /// -pub contract FungibleTokenSwitchboard { +access(all) contract FungibleTokenSwitchboard { // Storage and Public Paths - pub let StoragePath: StoragePath - pub let PublicPath: PublicPath - pub let ReceiverPublicPath: PublicPath + access(all) let StoragePath: StoragePath + access(all) let PublicPath: PublicPath + access(all) let ReceiverPublicPath: PublicPath - /// VaultCapacityAdded - /// - /// The event that is emitted when a new vault capacity is added to a - /// switchboard resource + access(all) entitlement Owner + + /// The event that is emitted when a new vault capability is added to a + /// switchboard resource. /// - pub event VaultCapabilityAdded(type: Type, switchboardOwner: Address?, + access(all) event VaultCapabilityAdded(type: Type, switchboardOwner: Address?, capabilityOwner: Address?) - /// VaultCapacityRemoved - /// - /// The event that is emitted vault capacity is added removed from a - /// switchboard resource + /// The event that is emitted when a vault capability is removed from a + /// switchboard resource. /// - pub event VaultCapabilityRemoved(type: Type, switchboardOwner: Address?, + access(all) event VaultCapabilityRemoved(type: Type, switchboardOwner: Address?, capabilityOwner: Address?) - /// NotCompletedDeposit + /// The event that is emitted when a deposit can not be completed. /// - /// The event that is emitted when a deposit can not be completed - /// - pub event NotCompletedDeposit(type: Type, amount: UFix64, + access(all) event NotCompletedDeposit(type: Type, amount: UFix64, switchboardOwner: Address?) - /// SwitchboardPublic - /// /// The interface that enforces the method to allow anyone to check on the /// available capabilities of a switchboard resource and also exposes the - /// deposit method to deposit funds on it + /// deposit methods to deposit funds on it. /// - pub resource interface SwitchboardPublic { - pub fun getVaultTypes(): [Type] - pub fun deposit(from: @FungibleToken.Vault) - pub fun safeDeposit(from: @FungibleToken.Vault): @FungibleToken.Vault? + access(all) resource interface SwitchboardPublic { + access(all) view fun getVaultTypesWithAddress(): {Type: Address} + access(all) view fun getSupportedVaultTypes(): {Type: Bool} + access(all) view fun isSupportedVaultType(type: Type): Bool + access(all) fun deposit(from: @{FungibleToken.Vault}) + access(all) fun safeDeposit(from: @{FungibleToken.Vault}): @{FungibleToken.Vault}? + access(all) view fun safeBorrowByType(type: Type): &{FungibleToken.Receiver}? } - - /// Switchboard - /// /// The resource that stores the multiple fungible token receiver /// capabilities, allowing the owner to add and remove them and anyone to - /// deposit any fungible token among the available capabilities + /// deposit any fungible token among the available types. /// - pub resource Switchboard: FungibleToken.Receiver, SwitchboardPublic { + access(all) resource Switchboard: FungibleToken.Receiver, SwitchboardPublic { - /// receiverCapabilities - /// /// Dictionary holding the fungible token receiver capabilities, - /// indexed by the fungible token vault type + /// indexed by the fungible token vault type. /// access(contract) var receiverCapabilities: {Type: Capability<&{FungibleToken.Receiver}>} - /// addNewVault adds a new fungible token receiver capability - /// to the switchboard resource + /// Adds a new fungible token receiver capability to the switchboard + /// resource. /// - /// Parameters: capability: The capability to expose a certain fungible - /// token vault deposit function through {FungibleToken.Receiver} that - /// will be added to the switchboard + /// @param capability: The capability to expose a certain fungible + /// token vault deposit function through `{FungibleToken.Receiver}` that + /// will be added to the switchboard. /// - pub fun addNewVault(capability: Capability<&{FungibleToken.Receiver}>) { + access(Owner) fun addNewVault(capability: Capability<&{FungibleToken.Receiver}>) { // Borrow a reference to the vault pointed to by the capability we // want to store inside the switchboard let vaultRef = capability.borrow() - ?? panic ("Cannot borrow reference to vault from capability") - // We check if there is a previus capability for this token, if not - if (self.receiverCapabilities[vaultRef.getType()] == nil){ - // Use the vault reference type as key for storing the capability + ?? panic("FungibleTokenSwitchboard.Switchboard.addNewVault: Cannot borrow reference to vault from capability! " + .concat("Make sure that the capability path points to a Vault that has been properly initialized. ")) + + // Check if there is a previous capability for this token + if (self.receiverCapabilities[vaultRef.getType()] == nil) { + // use the vault reference type as key for storing the + // capability and then self.receiverCapabilities[vaultRef.getType()] = capability - // Emit the event that indicates that a new capability has been added + // emit the event that indicates that a new capability has been + // added emit VaultCapabilityAdded(type: vaultRef.getType(), - switchboardOwner: self.owner?.address, - capabilityOwner: capability.address) - }else{ + switchboardOwner: self.owner?.address, + capabilityOwner: capability.address) + } else { // If there was already a capability for that token, panic - panic("There is already a vault in the Switchboard for this token") + panic("FungibleTokenSwitchboard.Switchboard.addNewVault: Cannot add new Vault capability! " + .concat("There is already a vault in the Switchboard for this type <") + .concat(vaultRef.getType().identifier).concat(">.")) } } - /// addNewVaultsByPath adds a number of new fungible token receiver - /// capabilities by using the paths where they are - /// stored + /// Adds a number of new fungible token receiver capabilities by using + /// the paths where they are stored. /// - /// Parameters: paths: The paths where the public capabilities are stored - /// address: The address of the owner of the capabilities + /// @param paths: The paths where the public capabilities are stored. + /// @param address: The address of the owner of the capabilities. /// - pub fun addNewVaultsByPath(paths: [PublicPath], address: Address) { + access(Owner) fun addNewVaultsByPath(paths: [PublicPath], address: Address) { // Get the account where the public capabilities are stored let owner = getAccount(address) // For each path, get the saved capability and store it // into the switchboard's receiver capabilities dictionary for path in paths { - let capability = owner.getCapability<&{FungibleToken.Receiver}>(path) - // Borrow a reference to the vault pointed to by the capability we - // want to store inside the switchboard + let capability = owner.capabilities.get<&{FungibleToken.Receiver}>(path) + // Borrow a reference to the vault pointed to by the capability + // we want to store inside the switchboard // If the vault was borrowed successfully... if let vaultRef = capability.borrow() { - // ...and there is no previous capability added for that token - if (self.receiverCapabilities[vaultRef!.getType()] == nil){ + // ...and if there is no previous capability added for that token + if (self.receiverCapabilities[vaultRef!.getType()] == nil) { // Use the vault reference type as key for storing the // capability self.receiverCapabilities[vaultRef!.getType()] = capability - // Emit the event that indicates that a new capability has - // been added + // and emit the event that indicates that a new + // capability has been added emit VaultCapabilityAdded(type: vaultRef.getType(), - switchboardOwner: address, capabilityOwner: address) + switchboardOwner: self.owner?.address, + capabilityOwner: address, + ) } } } } - /// removeVault removes a fungible token receiver capability - /// from the switchboard resource + /// Adds a new fungible token receiver capability to the switchboard + /// resource specifying which `Type` of `@{FungibleToken.Vault}` can be + /// deposited to it. Use it to include in your switchboard "wrapper" + /// receivers such as a `@TokenForwarding.Forwarder`. It can also be + /// used to overwrite the type attached to a certain capability without + /// having to remove that capability first. + /// + /// @param capability: The capability to expose a certain fungible + /// token vault deposit function through `{FungibleToken.Receiver}` that + /// will be added to the switchboard. + /// + /// @param type: The type of fungible token that can be deposited to that + /// capability, rather than the `Type` from the reference borrowed from + /// said capability + /// + access(Owner) fun addNewVaultWrapper(capability: Capability<&{FungibleToken.Receiver}>, + type: Type) { + // Check if the capability is working + assert ( + capability.check(), + message: + "FungibleTokenSwitchboard.Switchboard.addNewVaultWrapper: Cannot borrow reference to a vault from the provided capability! " + .concat("Make sure that the capability path points to a Vault that has been properly initialized.") + ) + // Use the type parameter as key for the capability + self.receiverCapabilities[type] = capability + // emit the event that indicates that a new capability has been + // added + emit VaultCapabilityAdded( + type: type, + switchboardOwner: self.owner?.address, + capabilityOwner: capability.address, + ) + } + + /// Adds zero or more new fungible token receiver capabilities to the + /// switchboard resource specifying which `Type`s of `@{FungibleToken.Vault}`s + /// can be deposited to it. Use it to include in your switchboard "wrapper" + /// receivers such as a `@TokenForwarding.Forwarder`. It can also be + /// used to overwrite the types attached to certain capabilities without + /// having to remove those capabilities first. + /// + /// @param paths: The paths where the public capabilities are stored. + /// @param types: The types of the fungible token to be deposited on each path. + /// @param address: The address of the owner of the capabilities. + /// + access(Owner) fun addNewVaultWrappersByPath(paths: [PublicPath], types: [Type], + address: Address) { + // Get the account where the public capabilities are stored + let owner = getAccount(address) + // For each path, get the saved capability and store it + // into the switchboard's receiver capabilities dictionary + for i, path in paths { + let capability = owner.capabilities.get<&{FungibleToken.Receiver}>(path) + // Borrow a reference to the vault pointed to by the capability + // we want to store inside the switchboard + // If the vault was borrowed successfully... + if let vaultRef = capability.borrow() { + // Use the vault reference type as key for storing the capability + self.receiverCapabilities[types[i]] = capability + // and emit the event that indicates that a new capability has been added + emit VaultCapabilityAdded( + type: types[i], + switchboardOwner: self.owner?.address, + capabilityOwner: address, + ) + } + } + } + + /// Removes a fungible token receiver capability from the switchboard + /// resource. /// - /// Parameters: capability: The capability to a fungible token vault - /// to be removed from the switchboard + /// @param capability: The capability to a fungible token vault to be + /// removed from the switchboard. /// - pub fun removeVault(capability: Capability<&{FungibleToken.Receiver}>) { + access(Owner) fun removeVault(capability: Capability<&{FungibleToken.Receiver}>) { // Borrow a reference to the vault pointed to by the capability we // want to remove from the switchboard let vaultRef = capability.borrow() - ?? panic ("Cannot borrow reference to vault from capability") + ?? panic ("FungibleTokenSwitchboard.Switchboard.addNewVaultWrapper: Cannot borrow reference to a vault from the provided capability! " + .concat("Make sure that the capability path points to a Vault that has been properly initialized.")) + // Use the vault reference to find the capability to remove self.receiverCapabilities.remove(key: vaultRef.getType()) // Emit the event that indicates that a new capability has been // removed - emit VaultCapabilityRemoved(type: vaultRef.getType(), - switchboardOwner: self.owner?.address, capabilityOwner: capability.address) + emit VaultCapabilityRemoved( + type: vaultRef.getType(), + switchboardOwner: self.owner?.address, + capabilityOwner: capability.address, + ) } - /// deposit Takes a fungible token vault and routes it to the proper - /// fungible token receiver capability for depositing it + /// Takes a fungible token vault and routes it to the proper fungible + /// token receiver capability for depositing it. /// - /// Parameters: from: The deposited fungible token vault resource + /// @param from: The deposited fungible token vault resource. /// - pub fun deposit(from: @FungibleToken.Vault) { - let depositedVaultCapability = self - .receiverCapabilities[from.getType()] - ?? panic ("The deposited vault is not available on this switchboard") + access(all) fun deposit(from: @{FungibleToken.Vault}) { + // Get the capability from the ones stored at the switchboard + let depositedVaultCapability = self.receiverCapabilities[from.getType()] + ?? panic ("FungibleTokenSwitchboard.Switchboard.deposit: Cannot deposit Vault! " + .concat("The deposited vault of type <").concat(from.getType().identifier) + .concat("> is not available on this Fungible Token switchboard. ") + .concat("The recipient needs to initialize their account and switchboard to hold and receive the deposited vault type.")) + + // Borrow the reference to the desired vault let vaultRef = depositedVaultCapability.borrow() - ?? panic ("Can not borrow a reference to the the vault") - vaultRef.deposit(from: <- from) + ?? panic ("FungibleTokenSwitchboard.Switchboard.deposit: Cannot borrow reference to a vault " + .concat("from the type of the deposited Vault <").concat(from.getType().identifier) + .concat(">. Make sure that the capability path points to a Vault that has been properly initialized.")) + + vaultRef.deposit(from: <-from) } - /// safeDeposit Takes a fungible token vault and tries to route it to - /// the proper fungible token receiver capability for - /// depositing the funds, avoiding panicking if the vault is - /// not available + /// Takes a fungible token vault and tries to route it to the proper + /// fungible token receiver capability for depositing the funds, + /// avoiding panicking if the vault is not available. /// - /// Parameters: vaultType: The type of the ft vault that wants to be - /// deposited + /// @param vaultType: The type of the ft vault that wants to be + /// deposited. /// - /// Returns: The deposited fungible token vault resource, without the - /// funds if the deposit was succesful, or still containing the - /// funds if the reference to the needed vault was not found + /// @return The deposited fungible token vault resource, without the + /// funds if the deposit was successful, or still containing the funds + /// if the reference to the needed vault was not found. /// - pub fun safeDeposit(from: @FungibleToken.Vault): @FungibleToken.Vault? { + access(all) fun safeDeposit(from: @{FungibleToken.Vault}): @{FungibleToken.Vault}? { // Try to get the proper vault capability from the switchboard // If the desired vault is present on the switchboard... - if let depositedVaultCapability = self - .receiverCapabilities[from.getType()] { + if let depositedVaultCapability = self.receiverCapabilities[from.getType()] { // We try to borrow a reference to the vault from the capability // If we can borrow a reference to the vault... - if let vaultRef = depositedVaultCapability.borrow(){ + if let vaultRef = depositedVaultCapability.borrow() { // We deposit the funds on said vault - vaultRef.deposit(from: <- from - .withdraw(amount: from.balance)) + vaultRef.deposit(from: <-from.withdraw(amount: from.balance)) } } - // if deposit failed for some reason - if from.balance>0.0{ - emit NotCompletedDeposit(type: from.getType(), - amount: from.balance, - switchboardOwner: self.owner?.address) - return <- from + if from.balance > 0.0 { + emit NotCompletedDeposit( + type: from.getType(), + amount: from.balance, + switchboardOwner: self.owner?.address, + ) + return <-from } - destroy from return nil } - /// getVaultTypes function for get to know which tokens a certain - /// switchboard resource is prepared to receive + /// Checks that the capability tied to a type is valid + /// + /// @param vaultType: The type of the ft vault whose capability needs to be checked + /// + /// @return a boolean marking the capability for a type as valid or not + access(all) view fun checkReceiverByType(type: Type): Bool { + if self.receiverCapabilities[type] == nil { + return false + } + + return self.receiverCapabilities[type]!.check() + } + + /// Gets the receiver assigned to a provided vault type. + /// This is necessary because without it, it is not possible to look under the hood and see if a capability + /// is of an expected type or not. This helps guard against infinitely chained TokenForwarding or other invalid + /// malicious kinds of updates that could prevent listings from being made that are valid on storefronts. + /// + /// @param vaultType: The type of the ft vault whose capability needs to be checked + /// + /// @return an optional receiver capability for consumers of the switchboard to check/validate on their own + access(all) view fun safeBorrowByType(type: Type): &{FungibleToken.Receiver}? { + if !self.checkReceiverByType(type: type) { + return nil + } + + return self.receiverCapabilities[type]!.borrow() + } + + /// A getter function to know which tokens a certain switchboard + /// resource is prepared to receive along with the address where + /// those tokens will be deposited. /// - /// Returns: The keys from the dictionary of stored - /// {FungibleToken.Receiver} capabilities that can be efectively - /// borrowed + /// @return A dictionary mapping the `{FungibleToken.Receiver}` + /// type to the receiver owner's address + /// + access(all) view fun getVaultTypesWithAddress(): {Type: Address} { + let effectiveTypesWithAddress: {Type: Address} = {} + // Check if each capability is live + for vaultType in self.receiverCapabilities.keys { + if self.receiverCapabilities[vaultType]!.check() { + // and attach it to the owner's address + effectiveTypesWithAddress[vaultType] = self.receiverCapabilities[vaultType]!.address + } + } + return effectiveTypesWithAddress + } + + /// A getter function that returns the token types supported by this resource, + /// which can be deposited using the 'deposit' function. /// - pub fun getVaultTypes(): [Type] { - let efectitveTypes: [Type] = [] - for vaultType in self.receiverCapabilities.keys{ - if self.receiverCapabilities[vaultType]!.check(){ - efectitveTypes.append(vaultType) + /// @return Dictionary of FT types that can be deposited. + access(all) view fun getSupportedVaultTypes(): {Type: Bool} { + let supportedVaults: {Type: Bool} = {} + for receiverType in self.receiverCapabilities.keys { + if self.receiverCapabilities[receiverType]!.check() { + if receiverType.isSubtype(of: Type<@{FungibleToken.Vault}>()) { + supportedVaults[receiverType] = true + } + if receiverType.isSubtype(of: Type<@{FungibleToken.Receiver}>()) { + let receiverRef = self.receiverCapabilities[receiverType]!.borrow()! + let subReceiverSupportedTypes = receiverRef.getSupportedVaultTypes() + for subReceiverType in subReceiverSupportedTypes.keys { + if subReceiverType.isSubtype(of: Type<@{FungibleToken.Vault}>()) { + supportedVaults[subReceiverType] = true + } + } + } } } - return efectitveTypes + return supportedVaults + } + + /// Returns whether or not the given type is accepted by the Receiver + /// A vault that can accept any type should just return true by default + access(all) view fun isSupportedVaultType(type: Type): Bool { + let supportedVaults = self.getSupportedVaultTypes() + if let supported = supportedVaults[type] { + return supported + } else { return false } } init() { // Initialize the capabilities dictionary self.receiverCapabilities = {} } + } - /// createSwitchboard - /// /// Function that allows to create a new blank switchboard. A user must call - /// this function and store the returned resource in their storage + /// this function and store the returned resource in their storage. /// - pub fun createSwitchboard(): @Switchboard { - return <- create Switchboard() + access(all) fun createSwitchboard(): @Switchboard { + return <-create Switchboard() } init() { @@ -232,5 +373,4 @@ pub contract FungibleTokenSwitchboard { self.PublicPath = /public/fungibleTokenSwitchboardPublic self.ReceiverPublicPath = /public/GenericFTReceiver } - } diff --git a/contracts/standard/MetadataViews.cdc b/contracts/standard/MetadataViews.cdc index 753ab9e..8ce2303 100644 --- a/contracts/standard/MetadataViews.cdc +++ b/contracts/standard/MetadataViews.cdc @@ -1,101 +1,49 @@ -/** - -This contract implements the metadata standard proposed -in FLIP-0636. - -Ref: https://github.com/onflow/flow/blob/master/flips/20210916-nft-metadata.md - -Structs and resources can implement one or more -metadata types, called views. Each view type represents -a different kind of metadata, such as a creator biography -or a JPEG image file. -*/ - import FungibleToken from "./FungibleToken.cdc" import NonFungibleToken from "./NonFungibleToken.cdc" - -pub contract MetadataViews { - - /// A Resolver provides access to a set of metadata views. - /// - /// A struct or resource (e.g. an NFT) can implement this interface - /// to provide access to the views that it supports. - /// - pub resource interface Resolver { - pub fun getViews(): [Type] - pub fun resolveView(_ view: Type): AnyStruct? - } - - /// A ResolverCollection is a group of view resolvers index by ID. - /// - pub resource interface ResolverCollection { - pub fun borrowViewResolver(id: UInt64): &{Resolver} - pub fun getIDs(): [UInt64] - } - - /// NFTView is a group of views used to give a complete picture of an NFT - /// - pub struct NFTView { - pub let id: UInt64 - pub let uuid: UInt64 - pub let display: Display? - pub let externalURL: ExternalURL? - pub let collectionData: NFTCollectionData? - pub let collectionDisplay: NFTCollectionDisplay? - pub let royalties: Royalties? - pub let traits: Traits? - - init( - id : UInt64, - uuid : UInt64, - display : Display?, - externalURL : ExternalURL?, - collectionData : NFTCollectionData?, - collectionDisplay : NFTCollectionDisplay?, - royalties : Royalties?, - traits: Traits? - ) { - self.id = id - self.uuid = uuid - self.display = display - self.externalURL = externalURL - self.collectionData = collectionData - self.collectionDisplay = collectionDisplay - self.royalties = royalties - self.traits = traits - } - } +import ViewResolver from "./ViewResolver.cdc" + +/// This contract implements the metadata standard proposed +/// in FLIP-0636. +/// +/// Ref: https://github.com/onflow/flips/blob/main/application/20210916-nft-metadata.md +/// +/// Structs and resources can implement one or more +/// metadata types, called views. Each view type represents +/// a different kind of metadata, such as a creator biography +/// or a JPEG image file. +/// +access(all) contract MetadataViews { /// Display is a basic view that includes the name, description and /// thumbnail for an object. Most objects should implement this view. /// - pub struct Display { + access(all) struct Display { /// The name of the object. /// /// This field will be displayed in lists and therefore should /// be short an concise. /// - pub let name: String + access(all) let name: String /// A written description of the object. /// /// This field will be displayed in a detailed view of the object, /// so can be more verbose (e.g. a paragraph instead of a single line). /// - pub let description: String + access(all) let description: String /// A small thumbnail representation of the object. /// /// This field should be a web-friendly file (i.e JPEG, PNG) /// that can be displayed in lists, link previews, etc. /// - pub let thumbnail: AnyStruct{File} + access(all) let thumbnail: {File} - init( + view init( name: String, description: String, - thumbnail: AnyStruct{File} + thumbnail: {File} ) { self.name = name self.description = description @@ -103,8 +51,12 @@ pub contract MetadataViews { } } - /// A helper to get Display in a typesafe way - pub fun getDisplay(_ viewResolver: &{Resolver}) : Display? { + /// Helper to get Display in a typesafe way + /// + /// @param viewResolver: A reference to the resolver resource + /// @return An optional Display struct + /// + access(all) fun getDisplay(_ viewResolver: &{ViewResolver.Resolver}) : Display? { if let view = viewResolver.resolveView(Type()) { if let v = view as? Display { return v @@ -113,42 +65,39 @@ pub contract MetadataViews { return nil } - /// File is a generic interface that represents a file stored on or off chain. - /// - /// Files can be used to references images, videos and other media. + /// Generic interface that represents a file stored on or off chain. Files + /// can be used to references images, videos and other media. /// - pub struct interface File { - pub fun uri(): String + access(all) struct interface File { + access(all) view fun uri(): String } - /// HTTPFile is a file that is accessible at an HTTP (or HTTPS) URL. + /// View to expose a file that is accessible at an HTTP (or HTTPS) URL. /// - pub struct HTTPFile: File { - pub let url: String + access(all) struct HTTPFile: File { + access(all) let url: String - init(url: String) { + view init(url: String) { self.url = url } - pub fun uri(): String { + access(all) view fun uri(): String { return self.url } } - /// IPFSFile returns a thumbnail image for an object - /// stored as an image file in IPFS. - /// + /// View to expose a file stored on IPFS. /// IPFS images are referenced by their content identifier (CID) /// rather than a direct URI. A client application can use this CID /// to find and load the image via an IPFS gateway. /// - pub struct IPFSFile: File { + access(all) struct IPFSFile: File { /// CID is the content identifier for this IPFS file. /// /// Ref: https://docs.ipfs.io/concepts/content-addressing/ /// - pub let cid: String + access(all) let cid: String /// Path is an optional path to the file resource in an IPFS directory. /// @@ -156,18 +105,19 @@ pub contract MetadataViews { /// /// Ref: https://docs.ipfs.io/concepts/file-systems/ /// - pub let path: String? + access(all) let path: String? - init(cid: String, path: String?) { + view init(cid: String, path: String?) { self.cid = cid self.path = path } /// This function returns the IPFS native URL for this file. - /// /// Ref: https://docs.ipfs.io/how-to/address-ipfs-on-web/#native-urls /// - pub fun uri(): String { + /// @return The string containing the file uri + /// + access(all) view fun uri(): String { if let path = self.path { return "ipfs://".concat(self.cid).concat("/").concat(path) } @@ -176,123 +126,212 @@ pub contract MetadataViews { } } - /// Editions is an optional view for collections that issues multiple objects - /// with the same or similar metadata, for example an X of 100 set. This information is - /// useful for wallets and marketplaes. + /// A struct to represent a generic URI. May be used to represent the URI of + /// the NFT where the type of URI is not able to be determined (i.e. HTTP, + /// IPFS, etc.) /// - /// An NFT might be part of multiple editions, which is why the edition information - /// is returned as an arbitrary sized array + access(all) struct URI: File { + /// The base URI prefix, if any. Not needed for all URIs, but helpful + /// for some use cases For example, updating a whole NFT collection's + /// image host easily + /// + access(all) let baseURI: String? + /// The URI string value + /// NOTE: this is set on init as a concatenation of the baseURI and the + /// value if baseURI != nil + /// + access(self) let value: String + + access(all) view fun uri(): String { + return self.value + } + + init(baseURI: String?, value: String) { + self.baseURI = baseURI + self.value = baseURI != nil ? baseURI!.concat(value) : value + } + } + + access(all) struct Media { + + /// File for the media + /// + access(all) let file: {File} + + /// media-type comes on the form of type/subtype as described here + /// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types + /// + access(all) let mediaType: String + + view init(file: {File}, mediaType: String) { + self.file=file + self.mediaType=mediaType + } + } + + /// Wrapper view for multiple media views /// - pub struct Editions { + access(all) struct Medias { - /// An arbitrary-sized list for any number of editions - /// that the NFT might be a part of - pub let infoList: [Edition] + /// An arbitrary-sized list for any number of Media items + access(all) let items: [Media] - init(_ infoList: [Edition]) { - self.infoList = infoList + view init(_ items: [Media]) { + self.items = items } } - /// A helper to get Editions in a typesafe way - pub fun getEditions(_ viewResolver: &{Resolver}) : Editions? { - if let view = viewResolver.resolveView(Type()) { - if let v = view as? Editions { + /// Helper to get Medias in a typesafe way + /// + /// @param viewResolver: A reference to the resolver resource + /// @return A optional Medias struct + /// + access(all) fun getMedias(_ viewResolver: &{ViewResolver.Resolver}) : Medias? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? Medias { return v } } return nil } - /// Edition information for a single edition - pub struct Edition { - - /// The name of the edition - /// For example, this could be Set, Play, Series, - /// or any other way a project could classify its editions - pub let name: String? - - /// The edition number of the object. - /// - /// For an "24 of 100 (#24/100)" item, the number is 24. - /// - pub let number: UInt64 + /// View to represent a license according to https://spdx.org/licenses/ + /// This view can be used if the content of an NFT is licensed. + /// + access(all) struct License { + access(all) let spdxIdentifier: String - /// The max edition number of this type of objects. - /// - /// This field should only be provided for limited-editioned objects. - /// For an "24 of 100 (#24/100)" item, max is 100. - /// For an item with unlimited edition, max should be set to nil. - /// - pub let max: UInt64? + view init(_ identifier: String) { + self.spdxIdentifier = identifier + } + } - init(name: String?, number: UInt64, max: UInt64?) { - if max != nil { - assert(number <= max!, message: "The number cannot be greater than the max number!") + /// Helper to get License in a typesafe way + /// + /// @param viewResolver: A reference to the resolver resource + /// @return An optional License struct + /// + access(all) fun getLicense(_ viewResolver: &{ViewResolver.Resolver}) : License? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? License { + return v } - self.name = name - self.number = number - self.max = max } + return nil } - - /// A view representing a project-defined serial number for a specific NFT - /// Projects have different definitions for what a serial number should be - /// Some may use the NFTs regular ID and some may use a different classification system - /// The serial number is expected to be unique among other NFTs within that project + /// View to expose a URL to this item on an external site. + /// This can be used by applications like .find and Blocto to direct users + /// to the original link for an NFT or a project page that describes the NFT collection. + /// eg https://www.my-nft-project.com/overview-of-nft-collection /// - pub struct Serial { - pub let number: UInt64 + access(all) struct ExternalURL { + access(all) let url: String - init(_ number: UInt64) { - self.number = number + view init(_ url: String) { + self.url=url } } - /// A helper to get Serial in a typesafe way - pub fun getSerial(_ viewResolver: &{Resolver}) : Serial? { - if let view = viewResolver.resolveView(Type()) { - if let v = view as? Serial { + /// Helper to get ExternalURL in a typesafe way + /// + /// @param viewResolver: A reference to the resolver resource + /// @return An optional ExternalURL struct + /// + access(all) fun getExternalURL(_ viewResolver: &{ViewResolver.Resolver}) : ExternalURL? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? ExternalURL { return v } } return nil } - /* - * Royalty Views - * Defines the composable royalty standard that gives marketplaces a unified interface - * to support NFT royalties. - * - * Marketplaces can query this `Royalties` struct from NFTs - * and are expected to pay royalties based on these specifications. - * - */ - pub struct Royalties { + /// View that defines the composable royalty standard that gives marketplaces a + /// unified interface to support NFT royalties. + /// + access(all) struct Royalty { + + /// Generic FungibleToken Receiver for the beneficiary of the royalty + /// Can get the concrete type of the receiver with receiver.getType() + /// Recommendation - Users should create a new link for a FlowToken + /// receiver for this using `getRoyaltyReceiverPublicPath()`, and not + /// use the default FlowToken receiver. This will allow users to update + /// the capability in the future to use a more generic capability + access(all) let receiver: Capability<&{FungibleToken.Receiver}> + + /// Multiplier used to calculate the amount of sale value transferred to + /// royalty receiver. Note - It should be between 0.0 and 1.0 + /// Ex - If the sale value is x and multiplier is 0.56 then the royalty + /// value would be 0.56 * x. + /// Generally percentage get represented in terms of basis points + /// in solidity based smart contracts while cadence offers `UFix64` + /// that already supports the basis points use case because its + /// operations are entirely deterministic integer operations and support + /// up to 8 points of precision. + access(all) let cut: UFix64 + + /// Optional description: This can be the cause of paying the royalty, + /// the relationship between the `wallet` and the NFT, or anything else + /// that the owner might want to specify. + access(all) let description: String + + view init(receiver: Capability<&{FungibleToken.Receiver}>, cut: UFix64, description: String) { + pre { + cut >= 0.0 && cut <= 1.0 : + "MetadataViews.Royalty.init: Cannot initialize the Royalty Metadata View! " + .concat("The provided royalty cut value of ").concat(cut.toString()) + .concat(" is invalid. ") + .concat("It should be within the valid range between 0 and 1. i.e [0,1]") + } + self.receiver = receiver + self.cut = cut + self.description = description + } + } + + /// Wrapper view for multiple Royalty views. + /// Marketplaces can query this `Royalties` struct from NFTs + /// and are expected to pay royalties based on these specifications. + /// + access(all) struct Royalties { /// Array that tracks the individual royalties access(self) let cutInfos: [Royalty] - pub init(_ cutInfos: [Royalty]) { + access(all) view init(_ cutInfos: [Royalty]) { // Validate that sum of all cut multipliers should not be greater than 1.0 var totalCut = 0.0 for royalty in cutInfos { totalCut = totalCut + royalty.cut } - assert(totalCut <= 1.0, message: "Sum of cutInfos multipliers should not be greater than 1.0") + assert( + totalCut <= 1.0, + message: + "MetadataViews.Royalties.init: Cannot initialize Royalties Metadata View! " + .concat(" The sum of cutInfos multipliers is ") + .concat(totalCut.toString()) + .concat(" but it should not be greater than 1.0") + ) // Assign the cutInfos self.cutInfos = cutInfos } /// Return the cutInfos list - pub fun getRoyalties(): [Royalty] { + /// + /// @return An array containing all the royalties structs + /// + access(all) view fun getRoyalties(): [Royalty] { return self.cutInfos } } - /// A helper to get Royalties in a typesafe way - pub fun getRoyalties(_ viewResolver: &{Resolver}) : Royalties? { + /// Helper to get Royalties in a typesafe way + /// + /// @param viewResolver: A reference to the resolver resource + /// @return A optional Royalties struct + /// + access(all) fun getRoyalties(_ viewResolver: &{ViewResolver.Resolver}) : Royalties? { if let view = viewResolver.resolveView(Type()) { if let v = view as? Royalties { return v @@ -301,187 +340,356 @@ pub contract MetadataViews { return nil } - /// Struct to store details of a single royalty cut for a given NFT - pub struct Royalty { - - /// Generic FungibleToken Receiver for the beneficiary of the royalty - /// Can get the concrete type of the receiver with receiver.getType() - /// Recommendation - Users should create a new link for a FlowToken receiver for this using `getRoyaltyReceiverPublicPath()`, - /// and not use the default FlowToken receiver. - /// This will allow users to update the capability in the future to use a more generic capability - pub let receiver: Capability<&AnyResource{FungibleToken.Receiver}> - - /// Multiplier used to calculate the amount of sale value transferred to royalty receiver. - /// Note - It should be between 0.0 and 1.0 - /// Ex - If the sale value is x and multiplier is 0.56 then the royalty value would be 0.56 * x. - /// - /// Generally percentage get represented in terms of basis points - /// in solidity based smart contracts while cadence offers `UFix64` that already supports - /// the basis points use case because its operations - /// are entirely deterministic integer operations and support up to 8 points of precision. - pub let cut: UFix64 - - /// Optional description: This can be the cause of paying the royalty, - /// the relationship between the `wallet` and the NFT, or anything else that the owner might want to specify - pub let description: String - - init(recepient: Capability<&AnyResource{FungibleToken.Receiver}>, cut: UFix64, description: String) { - pre { - cut >= 0.0 && cut <= 1.0 : "Cut value should be in valid range i.e [0,1]" - } - self.receiver = recepient - self.cut = cut - self.description = description - } - } - /// Get the path that should be used for receiving royalties /// This is a path that will eventually be used for a generic switchboard receiver, /// hence the name but will only be used for royalties for now. - pub fun getRoyaltyReceiverPublicPath(): PublicPath { + /// + /// @return The PublicPath for the generic FT receiver + /// + access(all) view fun getRoyaltyReceiverPublicPath(): PublicPath { return /public/GenericFTReceiver } - /// Medias is an optional view for collections that issue objects with multiple Media sources in it + /// View to represent a single field of metadata on an NFT. + /// This is used to get traits of individual key/value pairs along with some + /// contextualized data about the trait /// - pub struct Medias { + access(all) struct Trait { + // The name of the trait. Like Background, Eyes, Hair, etc. + access(all) let name: String - /// An arbitrary-sized list for any number of Media items - pub let items: [Media] + // The underlying value of the trait, the rest of the fields of a trait provide context to the value. + access(all) let value: AnyStruct - init(_ items: [Media]) { - self.items = items + // displayType is used to show some context about what this name and value represent + // for instance, you could set value to a unix timestamp, and specify displayType as "Date" to tell + // platforms to consume this trait as a date and not a number + access(all) let displayType: String? + + // Rarity can also be used directly on an attribute. + // + // This is optional because not all attributes need to contribute to the NFT's rarity. + access(all) let rarity: Rarity? + + view init(name: String, value: AnyStruct, displayType: String?, rarity: Rarity?) { + self.name = name + self.value = value + self.displayType = displayType + self.rarity = rarity } } - /// A helper to get Medias in a typesafe way - pub fun getMedias(_ viewResolver: &{Resolver}) : Medias? { - if let view = viewResolver.resolveView(Type()) { - if let v = view as? Medias { + /// Wrapper view to return all the traits on an NFT. + /// This is used to return traits as individual key/value pairs along with + /// some contextualized data about each trait. + access(all) struct Traits { + access(all) let traits: [Trait] + + view init(_ traits: [Trait]) { + self.traits = traits + } + + /// Adds a single Trait to the Traits view + /// + /// @param Trait: The trait struct to be added + /// + access(all) fun addTrait(_ t: Trait) { + self.traits.append(t) + } + } + + /// Helper to get Traits view in a typesafe way + /// + /// @param viewResolver: A reference to the resolver resource + /// @return A optional Traits struct + /// + access(all) fun getTraits(_ viewResolver: &{ViewResolver.Resolver}) : Traits? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? Traits { return v } } return nil } - /// A view to represent Media, a file with an correspoiding mediaType. - pub struct Media { + /// Helper function to easily convert a dictionary to traits. For NFT + /// collections that do not need either of the optional values of a Trait, + /// this method should suffice to give them an array of valid traits. + /// + /// @param dict: The dictionary to be converted to Traits + /// @param excludedNames: An optional String array specifying the `dict` + /// keys that are not wanted to become `Traits` + /// @return The generated Traits view + /// + access(all) fun dictToTraits(dict: {String: AnyStruct}, excludedNames: [String]?): Traits { + // Collection owners might not want all the fields in their metadata included. + // They might want to handle some specially, or they might just not want them included at all. + if excludedNames != nil { + for k in excludedNames! { + dict.remove(key: k) + } + } - /// File for the media - pub let file: AnyStruct{File} + let traits: [Trait] = [] + for k in dict.keys { + let trait = Trait(name: k, value: dict[k]!, displayType: nil, rarity: nil) + traits.append(trait) + } - /// media-type comes on the form of type/subtype as described here https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types - pub let mediaType: String + return Traits(traits) + } - init(file: AnyStruct{File}, mediaType: String) { - self.file=file - self.mediaType=mediaType + /// Optional view for collections that issue multiple objects + /// with the same or similar metadata, for example an X of 100 set. This + /// information is useful for wallets and marketplaces. + /// An NFT might be part of multiple editions, which is why the edition + /// information is returned as an arbitrary sized array + /// + access(all) struct Edition { + + /// The name of the edition + /// For example, this could be Set, Play, Series, + /// or any other way a project could classify its editions + access(all) let name: String? + + /// The edition number of the object. + /// For an "24 of 100 (#24/100)" item, the number is 24. + access(all) let number: UInt64 + + /// The max edition number of this type of objects. + /// This field should only be provided for limited-editioned objects. + /// For an "24 of 100 (#24/100)" item, max is 100. + /// For an item with unlimited edition, max should be set to nil. + /// + access(all) let max: UInt64? + + view init(name: String?, number: UInt64, max: UInt64?) { + if max != nil { + assert( + number <= max!, + message: + "MetadataViews.Edition.init: Cannot intialize the Edition Metadata View! " + .concat("The provided edition number of ") + .concat(number.toString()) + .concat(" cannot be greater than the max edition number of ") + .concat(max!.toString()) + .concat(".") + ) + } + self.name = name + self.number = number + self.max = max } } - /// A license according to https://spdx.org/licenses/ + /// Wrapper view for multiple Edition views /// - /// This view can be used if the content of an NFT is licensed. - pub struct License { - pub let spdxIdentifier: String + access(all) struct Editions { - init(_ identifier: String) { - self.spdxIdentifier = identifier + /// An arbitrary-sized list for any number of editions + /// that the NFT might be a part of + access(all) let infoList: [Edition] + + view init(_ infoList: [Edition]) { + self.infoList = infoList } } - /// A helper to get License in a typesafe way - pub fun getLicense(_ viewResolver: &{Resolver}) : License? { - if let view = viewResolver.resolveView(Type()) { - if let v = view as? License { + /// Helper to get Editions in a typesafe way + /// + /// @param viewResolver: A reference to the resolver resource + /// @return An optional Editions struct + /// + access(all) fun getEditions(_ viewResolver: &{ViewResolver.Resolver}) : Editions? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? Editions { return v } } return nil } + /// View representing a project-defined serial number for a specific NFT + /// Projects have different definitions for what a serial number should be + /// Some may use the NFTs regular ID and some may use a different + /// classification system. The serial number is expected to be unique among + /// other NFTs within that project + /// + access(all) struct Serial { + access(all) let number: UInt64 + + view init(_ number: UInt64) { + self.number = number + } + } - /// A view to expose a URL to this item on an external site. + /// Helper to get Serial in a typesafe way /// - /// This can be used by applications like .find and Blocto to direct users to the original link for an NFT. - pub struct ExternalURL { - pub let url: String + /// @param viewResolver: A reference to the resolver resource + /// @return An optional Serial struct + /// + access(all) fun getSerial(_ viewResolver: &{ViewResolver.Resolver}) : Serial? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? Serial { + return v + } + } + return nil + } - init(_ url: String) { - self.url=url + /// View to expose rarity information for a single rarity + /// Note that a rarity needs to have either score or description but it can + /// have both + /// + access(all) struct Rarity { + /// The score of the rarity as a number + access(all) let score: UFix64? + + /// The maximum value of score + access(all) let max: UFix64? + + /// The description of the rarity as a string. + /// + /// This could be Legendary, Epic, Rare, Uncommon, Common or any other string value + access(all) let description: String? + + view init(score: UFix64?, max: UFix64?, description: String?) { + if score == nil && description == nil { + panic("MetadataViews.Rarity.init: Cannot initialize the Rarity Metadata View! " + .concat("The provided score and description are both `nil`. ") + .concat(" A Rarity needs to set score, description, or both")) + } + + self.score = score + self.max = max + self.description = description } } - /// A helper to get ExternalURL in a typesafe way - pub fun getExternalURL(_ viewResolver: &{Resolver}) : ExternalURL? { - if let view = viewResolver.resolveView(Type()) { - if let v = view as? ExternalURL { + /// Helper to get Rarity view in a typesafe way + /// + /// @param viewResolver: A reference to the resolver resource + /// @return A optional Rarity struct + /// + access(all) fun getRarity(_ viewResolver: &{ViewResolver.Resolver}) : Rarity? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? Rarity { return v } } return nil } - // A view to expose the information needed store and retrieve an NFT - // - // This can be used by applications to setup a NFT collection with proper storage and public capabilities. - pub struct NFTCollectionData { + /// NFTView wraps all Core views along `id` and `uuid` fields, and is used + /// to give a complete picture of an NFT. Most NFTs should implement this + /// view. + /// + access(all) struct NFTView { + access(all) let id: UInt64 + access(all) let uuid: UInt64 + access(all) let display: MetadataViews.Display? + access(all) let externalURL: MetadataViews.ExternalURL? + access(all) let collectionData: NFTCollectionData? + access(all) let collectionDisplay: NFTCollectionDisplay? + access(all) let royalties: Royalties? + access(all) let traits: Traits? + + view init( + id : UInt64, + uuid : UInt64, + display : MetadataViews.Display?, + externalURL : MetadataViews.ExternalURL?, + collectionData : NFTCollectionData?, + collectionDisplay : NFTCollectionDisplay?, + royalties : Royalties?, + traits: Traits? + ) { + self.id = id + self.uuid = uuid + self.display = display + self.externalURL = externalURL + self.collectionData = collectionData + self.collectionDisplay = collectionDisplay + self.royalties = royalties + self.traits = traits + } + } + + /// Helper to get an NFT view + /// + /// @param id: The NFT id + /// @param viewResolver: A reference to the resolver resource + /// @return A NFTView struct + /// + access(all) fun getNFTView(id: UInt64, viewResolver: &{ViewResolver.Resolver}) : NFTView { + let nftView = viewResolver.resolveView(Type()) + if nftView != nil { + return nftView! as! NFTView + } + + return NFTView( + id : id, + uuid: viewResolver.uuid, + display: MetadataViews.getDisplay(viewResolver), + externalURL : MetadataViews.getExternalURL(viewResolver), + collectionData : self.getNFTCollectionData(viewResolver), + collectionDisplay : self.getNFTCollectionDisplay(viewResolver), + royalties : self.getRoyalties(viewResolver), + traits : self.getTraits(viewResolver) + ) + } + + /// View to expose the information needed store and retrieve an NFT. + /// This can be used by applications to setup a NFT collection with proper + /// storage and public capabilities. + /// + access(all) struct NFTCollectionData { /// Path in storage where this NFT is recommended to be stored. - pub let storagePath: StoragePath + access(all) let storagePath: StoragePath /// Public path which must be linked to expose public capabilities of this NFT /// including standard NFT interfaces and metadataviews interfaces - pub let publicPath: PublicPath - - /// Private path which should be linked to expose the provider - /// capability to withdraw NFTs from the collection holding NFTs - pub let providerPath: PrivatePath + access(all) let publicPath: PublicPath - /// Public collection type that is expected to provide sufficient read-only access to standard - /// functions (deposit + getIDs + borrowNFT) - /// This field is for backwards compatibility with collections that have not used the standard - /// NonFungibleToken.CollectionPublic interface when setting up collections. For new - /// collections, this may be set to be equal to the type specified in `publicLinkedType`. - pub let publicCollection: Type + /// The concrete type of the collection that is exposed to the public + /// now that entitlements exist, it no longer needs to be restricted to a specific interface + access(all) let publicCollection: Type - /// Type that should be linked at the aforementioned public path. This is normally a - /// restricted type with many interfaces. Notably the `NFT.CollectionPublic`, - /// `NFT.Receiver`, and `MetadataViews.ResolverCollection` interfaces are required. - pub let publicLinkedType: Type - - /// Type that should be linked at the aforementioned private path. This is normally - /// a restricted type with at a minimum the `NFT.Provider` interface - pub let providerLinkedType: Type + /// Type that should be linked at the aforementioned public path + access(all) let publicLinkedType: Type /// Function that allows creation of an empty NFT collection that is intended to store /// this NFT. - pub let createEmptyCollection: ((): @NonFungibleToken.Collection) + access(all) let createEmptyCollection: fun(): @{NonFungibleToken.Collection} - init( + view init( storagePath: StoragePath, publicPath: PublicPath, - providerPath: PrivatePath, publicCollection: Type, publicLinkedType: Type, - providerLinkedType: Type, - createEmptyCollectionFunction: ((): @NonFungibleToken.Collection) + createEmptyCollectionFunction: fun(): @{NonFungibleToken.Collection} ) { pre { - publicLinkedType.isSubtype(of: Type<&{NonFungibleToken.CollectionPublic, NonFungibleToken.Receiver, MetadataViews.ResolverCollection}>()): "Public type must include NonFungibleToken.CollectionPublic, NonFungibleToken.Receiver, and MetadataViews.ResolverCollection interfaces." - providerLinkedType.isSubtype(of: Type<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic, MetadataViews.ResolverCollection}>()): "Provider type must include NonFungibleToken.Provider, NonFungibleToken.CollectionPublic, and MetadataViews.ResolverCollection interface." + publicLinkedType.isSubtype(of: Type<&{NonFungibleToken.Collection}>()): + "MetadataViews.NFTCollectionData.init: Cannot initialize the NFTCollectionData Metadata View! " + .concat("The Public linked type <") + .concat(publicLinkedType.identifier) + .concat("> is incorrect. It must be a subtype of the NonFungibleToken.Collection interface.") } self.storagePath=storagePath self.publicPath=publicPath - self.providerPath = providerPath self.publicCollection=publicCollection self.publicLinkedType=publicLinkedType - self.providerLinkedType = providerLinkedType self.createEmptyCollection=createEmptyCollectionFunction } } - /// A helper to get NFTCollectionData in a way that will return an typed Optional - pub fun getNFTCollectionData(_ viewResolver: &{Resolver}) : NFTCollectionData? { + /// Helper to get NFTCollectionData in a way that will return an typed Optional + /// + /// @param viewResolver: A reference to the resolver resource + /// @return A optional NFTCollectionData struct + /// + access(all) fun getNFTCollectionData(_ viewResolver: &{ViewResolver.Resolver}) : NFTCollectionData? { if let view = viewResolver.resolveView(Type()) { if let v = view as? NFTCollectionData { return v @@ -490,37 +698,37 @@ pub contract MetadataViews { return nil } - // A view to expose the information needed to showcase this NFT's collection - // - // This can be used by applications to give an overview and graphics of the NFT collection - // this NFT belongs to. - pub struct NFTCollectionDisplay { + /// View to expose the information needed to showcase this NFT's + /// collection. This can be used by applications to give an overview and + /// graphics of the NFT collection this NFT belongs to. + /// + access(all) struct NFTCollectionDisplay { // Name that should be used when displaying this NFT collection. - pub let name: String + access(all) let name: String // Description that should be used to give an overview of this collection. - pub let description: String + access(all) let description: String // External link to a URL to view more information about this collection. - pub let externalURL: ExternalURL + access(all) let externalURL: MetadataViews.ExternalURL // Square-sized image to represent this collection. - pub let squareImage: Media + access(all) let squareImage: MetadataViews.Media - // Banner-sized image for this collection, recommended to have a size near 1200x630. - pub let bannerImage: Media + // Banner-sized image for this collection, recommended to have a size near 1400x350. + access(all) let bannerImage: MetadataViews.Media // Social links to reach this collection's social homepages. // Possible keys may be "instagram", "twitter", "discord", etc. - pub let socials: {String: ExternalURL} + access(all) let socials: {String: MetadataViews.ExternalURL} - init( + view init( name: String, description: String, - externalURL: ExternalURL, - squareImage: Media, - bannerImage: Media, - socials: {String: ExternalURL} + externalURL: MetadataViews.ExternalURL, + squareImage: MetadataViews.Media, + bannerImage: MetadataViews.Media, + socials: {String: MetadataViews.ExternalURL} ) { self.name = name self.description = description @@ -531,8 +739,13 @@ pub contract MetadataViews { } } - /// A helper to get NFTCollectionDisplay in a way that will return an typed Optional - pub fun getNFTCollectionDisplay(_ viewResolver: &{Resolver}) : NFTCollectionDisplay? { + /// Helper to get NFTCollectionDisplay in a way that will return a typed + /// Optional + /// + /// @param viewResolver: A reference to the resolver resource + /// @return A optional NFTCollection struct + /// + access(all) fun getNFTCollectionDisplay(_ viewResolver: &{ViewResolver.Resolver}) : NFTCollectionDisplay? { if let view = viewResolver.resolveView(Type()) { if let v = view as? NFTCollectionDisplay { return v @@ -540,129 +753,53 @@ pub contract MetadataViews { } return nil } + /// This view may be used by Cadence-native projects to define their + /// contract- and token-level metadata according to EVM-compatible formats. + /// Several ERC standards (e.g. ERC20, ERC721, etc.) expose name and symbol + /// values to define assets as well as contract- & token-level metadata view + /// `tokenURI(uint256)` and `contractURI()` methods. This view enables + /// Cadence projects to define in their own contracts how they would like + /// their metadata to be defined when bridged to EVM. + /// + access(all) struct EVMBridgedMetadata { - // A view to represent a single field of metadata on an NFT. - // - // This is used to get traits of individual key/value pairs along with some contextualized data about the trait - pub struct Trait { - // The name of the trait. Like Background, Eyes, Hair, etc. - pub let name: String - - // The underlying value of the trait, the rest of the fields of a trait provide context to the value. - pub let value: AnyStruct - - // displayType is used to show some context about what this name and value represent - // for instance, you could set value to a unix timestamp, and specify displayType as "Date" to tell - // platforms to consume this trait as a date and not a number - pub let displayType: String? - - // Rarity can also be used directly on an attribute. - // - // This is optional because not all attributes need to contribute to the NFT's rarity. - pub let rarity: Rarity? - - init(name: String, value: AnyStruct, displayType: String?, rarity: Rarity?) { - self.name = name - self.value = value - self.displayType = displayType - self.rarity = rarity - } - } - - // A view to return all the traits on an NFT. - // - // This is used to return traits as individual key/value pairs along with some contextualized data about each trait. - pub struct Traits { - pub let traits: [Trait] - - init(_ traits: [Trait]) { - self.traits = traits - } - - pub fun addTrait(_ t: Trait) { - self.traits.append(t) - } - } - - /// A helper to get Traits view in a typesafe way - pub fun getTraits(_ viewResolver: &{Resolver}) : Traits? { - if let view = viewResolver.resolveView(Type()) { - if let v = view as? Traits { - return v - } - } - return nil - } - - // A helper function to easily convert a dictionary to traits. For NFT collections that do not need either of the - // optional values of a Trait, this method should suffice to give them an array of valid traits. - pub fun dictToTraits(dict: {String: AnyStruct}, excludedNames: [String]?): Traits { - // Collection owners might not want all the fields in their metadata included. - // They might want to handle some specially, or they might just not want them included at all. - if excludedNames != nil { - for k in excludedNames! { - dict.remove(key: k) - } - } - - let traits: [Trait] = [] - for k in dict.keys { - let trait = Trait(name: k, value: dict[k]!, displayType: nil, rarity: nil) - traits.append(trait) - } - - return Traits(traits) - } - - /// Rarity information for a single rarity - // - /// Note that a rarity needs to have either score or description but it can have both - pub struct Rarity { - /// The score of the rarity as a number + /// The name of the asset /// - pub let score: UFix64? + access(all) let name: String - /// The maximum value of score + /// The symbol of the asset /// - pub let max: UFix64? + access(all) let symbol: String - /// The description of the rarity as a string. + /// The URI of the asset - this can either be contract-level or + /// token-level URI depending on where the metadata is resolved. It + /// is recommended to reference EVM metadata standards for how to best + /// prepare your view's formatted value. /// - /// This could be Legendary, Epic, Rare, Uncommon, Common or any other string value - pub let description: String? - - init(score: UFix64?, max: UFix64?, description: String?) { - if score == nil && description == nil { - panic("A Rarity needs to set score, description or both") - } + /// For example, while you may choose to take advantage of onchain + /// metadata, as is the case for most Cadence NFTs, you may also choose + /// to represent your asset's metadata in IPFS and assign this value as + /// an IPFSFile struct pointing to that IPFS file. Alternatively, you + /// may serialize your NFT's metadata and assign it as a JSON string + /// data URL representating the NFT's onchain metadata at the time this + /// view is resolved. + /// + access(all) let uri: {File} - self.score = score - self.max = max - self.description = description + init(name: String, symbol: String, uri: {File}) { + self.name = name + self.symbol = symbol + self.uri = uri } } - /// A helper to get Rarity view in a typesafe way - pub fun getRarity(_ viewResolver: &{Resolver}) : Rarity? { - if let view = viewResolver.resolveView(Type()) { - if let v = view as? Rarity { + access(all) fun getEVMBridgedMetadata(_ viewResolver: &{ViewResolver.Resolver}) : EVMBridgedMetadata? { + if let view = viewResolver.resolveView(Type()) { + if let v = view as? EVMBridgedMetadata { return v } } return nil } - pub fun getNFTView(id: UInt64, viewResolver: &{Resolver}) : NFTView { - return NFTView( - id : id, - uuid: viewResolver.uuid, - display: self.getDisplay(viewResolver), - externalURL : self.getExternalURL(viewResolver), - collectionData : self.getNFTCollectionData(viewResolver), - collectionDisplay : self.getNFTCollectionDisplay(viewResolver), - royalties : self.getRoyalties(viewResolver), - traits : self.getTraits(viewResolver) - ) - } - -} \ No newline at end of file +} diff --git a/contracts/standard/NFTStorefront.cdc b/contracts/standard/NFTStorefront.cdc index e53e0f5..2f3b2d8 100644 --- a/contracts/standard/NFTStorefront.cdc +++ b/contracts/standard/NFTStorefront.cdc @@ -1,7 +1,10 @@ -import FungibleToken from "./FungibleToken.cdc" -import NonFungibleToken from "./NonFungibleToken.cdc" +import "FungibleToken" +import "NonFungibleToken" +import "Burner" -/// NFTStorefront +/// NB: This contract is no longer supported. NFT Storefront V2 is recommended +/// +/// NFTStorefront. /// /// A general purpose sale support contract for Flow NonFungibleTokens. /// @@ -21,12 +24,10 @@ import NonFungibleToken from "./NonFungibleToken.cdc" /// Marketplaces and other aggregators can watch for Listing events /// and list items of interest. /// -pub contract NFTStorefront { - /// NFTStorefrontInitialized - /// This contract has been deployed. - /// Event consumers can now expect events from this contract. - /// - pub event NFTStorefrontInitialized() +access(all) contract NFTStorefront { + + access(all) entitlement CreateListing + access(all) entitlement RemoveListing /// StorefrontInitialized /// A Storefront resource has been created. @@ -40,14 +41,14 @@ pub contract NFTStorefront { /// If the seller moves the Storefront while the listing is valid, /// that is on them. /// - pub event StorefrontInitialized(storefrontResourceID: UInt64) + access(all) event StorefrontInitialized(storefrontResourceID: UInt64) /// StorefrontDestroyed /// A Storefront has been destroyed. /// Event consumers can now stop processing events from this Storefront. /// Note that we do not specify an address. /// - pub event StorefrontDestroyed(storefrontResourceID: UInt64) + access(all) event StorefrontDestroyed(storefrontResourceID: UInt64) /// ListingAvailable /// A listing has been created and added to a Storefront resource. @@ -55,7 +56,7 @@ pub contract NFTStorefront { /// the state of the accounts they refer to may be changed outside of the /// NFTStorefront workflow, so be careful to check when using them. /// - pub event ListingAvailable( + access(all) event ListingAvailable( storefrontAddress: Address, listingResourceID: UInt64, nftType: Type, @@ -67,7 +68,7 @@ pub contract NFTStorefront { /// ListingCompleted /// The listing has been resolved. It has either been purchased, or removed and destroyed. /// - pub event ListingCompleted( + access(all) event ListingCompleted( listingResourceID: UInt64, storefrontResourceID: UInt64, purchased: Bool, @@ -77,28 +78,28 @@ pub contract NFTStorefront { /// StorefrontStoragePath /// The location in storage that a Storefront resource should be located. - pub let StorefrontStoragePath: StoragePath + access(all) let StorefrontStoragePath: StoragePath /// StorefrontPublicPath /// The public location for a Storefront link. - pub let StorefrontPublicPath: PublicPath + access(all) let StorefrontPublicPath: PublicPath /// SaleCut /// A struct representing a recipient that must be sent a certain amount /// of the payment when a token is sold. /// - pub struct SaleCut { + access(all) struct SaleCut { /// The receiver for the payment. /// Note that we do not store an address to find the Vault that this represents, /// as the link or resource that we fetch in this way may be manipulated, /// so to find the address that a cut goes to you must get this struct and then /// call receiver.borrow()!.owner.address on it. /// This can be done efficiently in a script. - pub let receiver: Capability<&{FungibleToken.Receiver}> + access(all) let receiver: Capability<&{FungibleToken.Receiver}> /// The amount of the payment FungibleToken that will be paid to the receiver. - pub let amount: UFix64 + access(all) let amount: UFix64 /// initializer /// @@ -112,24 +113,24 @@ pub contract NFTStorefront { /// ListingDetails /// A struct containing a Listing's data. /// - pub struct ListingDetails { + access(all) struct ListingDetails { /// The Storefront that the Listing is stored in. /// Note that this resource cannot be moved to a different Storefront, /// so this is OK. If we ever make it so that it *can* be moved, /// this should be revisited. - pub var storefrontID: UInt64 + access(all) var storefrontID: UInt64 /// Whether this listing has been purchased or not. - pub var purchased: Bool + access(all) var purchased: Bool /// The Type of the NonFungibleToken.NFT that is being listed. - pub let nftType: Type + access(all) let nftType: Type /// The ID of the NFT within that type. - pub let nftID: UInt64 + access(all) let nftID: UInt64 /// The Type of the FungibleToken that payments must be made in. - pub let salePaymentVaultType: Type + access(all) let salePaymentVaultType: Type /// The amount that must be paid in the specified FungibleToken. - pub let salePrice: UFix64 + access(all) let salePrice: UFix64 /// This specifies the division of payment between recipients. - pub let saleCuts: [SaleCut] + access(all) let saleCuts: [SaleCut] /// setToPurchased /// Irreversibly set this listing as purchased. @@ -178,22 +179,22 @@ pub contract NFTStorefront { /// ListingPublic /// An interface providing a useful public interface to a Listing. /// - pub resource interface ListingPublic { + access(all) resource interface ListingPublic { /// borrowNFT /// This will assert in the same way as the NFT standard borrowNFT() /// if the NFT is absent, for example if it has been sold via another listing. /// - pub fun borrowNFT(): &NonFungibleToken.NFT + access(all) fun borrowNFT(): &{NonFungibleToken.NFT}? /// purchase /// Purchase the listing, buying the token. /// This pays the beneficiaries and returns the token to the buyer. /// - pub fun purchase(payment: @FungibleToken.Vault): @NonFungibleToken.NFT + access(all) fun purchase(payment: @{FungibleToken.Vault}): @{NonFungibleToken.NFT} /// getDetails /// - pub fun getDetails(): ListingDetails + access(all) fun getDetails(): ListingDetails } @@ -202,7 +203,35 @@ pub contract NFTStorefront { /// A resource that allows an NFT to be sold for an amount of a given FungibleToken, /// and for the proceeds of that sale to be split between several recipients. /// - pub resource Listing: ListingPublic { + access(all) resource Listing: ListingPublic, Burner.Burnable { + // Event to be emitted when this listing is destroyed. + // If the listing has not been purchased, we regard it as completed here. + // There is a separate event in purchase for purchased listings + access(all) event ResourceDestroyed( + listingResourceID: UInt64 = self.uuid, + storefrontResourceID: UInt64 = self.details.storefrontID, + purchased: Bool = self.details.purchased, + nftType: String = self.details.nftType.identifier, + nftID: UInt64 = self.details.nftID + ) + + access(contract) fun burnCallback() { + // If the listing has not been purchased, we regard it as completed here. + // Otherwise we regard it as completed in purchase(). + // This is because we destroy the listing in Storefront.removeListing() + // or Storefront.cleanup() . + // If we change this destructor, revisit those functions. + if !self.details.purchased { + emit ListingCompleted( + listingResourceID: self.uuid, + storefrontResourceID: self.details.storefrontID, + purchased: self.details.purchased, + nftType: self.details.nftType, + nftID: self.details.nftID + ) + } + } + /// The simple (non-Capability, non-complex) details of the sale access(self) let details: ListingDetails @@ -210,19 +239,18 @@ pub contract NFTStorefront { /// This capability allows the resource to withdraw *any* NFT, so you should be careful when giving /// such a capability to a resource and always check its code to make sure it will use it in the /// way that it claims. - access(contract) let nftProviderCapability: Capability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}> + access(contract) let nftProviderCapability: Capability /// borrowNFT /// This will assert in the same way as the NFT standard borrowNFT() /// if the NFT is absent, for example if it has been sold via another listing. /// - pub fun borrowNFT(): &NonFungibleToken.NFT { - let ref = self.nftProviderCapability.borrow()!.borrowNFT(id: self.getDetails().nftID) - //- CANNOT DO THIS IN PRECONDITION: "member of restricted type is not accessible: isInstance" - // result.isInstance(self.getDetails().nftType): "token has wrong type" - assert(ref.isInstance(self.getDetails().nftType), message: "token has wrong type") - assert(ref.id == self.getDetails().nftID, message: "token has wrong ID") - return (ref as &NonFungibleToken.NFT?)! + access(all) fun borrowNFT(): &{NonFungibleToken.NFT}? { + let ref = self.nftProviderCapability.borrow()!.borrowNFT(self.getDetails().nftID) + assert(ref != nil, message: "Could not borrow a reference to the NFT") + assert(ref!.isInstance(self.getDetails().nftType), message: "token has wrong type") + assert(ref?.id == self.getDetails().nftID, message: "token has wrong ID") + return (ref as &{NonFungibleToken.NFT}?) } /// getDetails @@ -230,7 +258,7 @@ pub contract NFTStorefront { /// This avoids having more public variables and getter methods for them, and plays /// nicely with scripts (which cannot return resources). /// - pub fun getDetails(): ListingDetails { + access(all) fun getDetails(): ListingDetails { return self.details } @@ -238,7 +266,7 @@ pub contract NFTStorefront { /// Purchase the listing, buying the token. /// This pays the beneficiaries and returns the token to the buyer. /// - pub fun purchase(payment: @FungibleToken.Vault): @NonFungibleToken.NFT { + access(all) fun purchase(payment: @{FungibleToken.Vault}): @{NonFungibleToken.NFT} { pre { self.details.purchased == false: "listing has already been purchased" payment.isInstance(self.details.salePaymentVaultType): "payment vault is not requested fungible token" @@ -296,29 +324,10 @@ pub contract NFTStorefront { return <-nft } - /// destructor - /// - destroy () { - // If the listing has not been purchased, we regard it as completed here. - // Otherwise we regard it as completed in purchase(). - // This is because we destroy the listing in Storefront.removeListing() - // or Storefront.cleanup() . - // If we change this destructor, revisit those functions. - if !self.details.purchased { - emit ListingCompleted( - listingResourceID: self.uuid, - storefrontResourceID: self.details.storefrontID, - purchased: self.details.purchased, - nftType: self.details.nftType, - nftID: self.details.nftID - ) - } - } - /// initializer /// init ( - nftProviderCapability: Capability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>, + nftProviderCapability: Capability, nftType: Type, nftID: UInt64, salePaymentVaultType: Type, @@ -343,10 +352,11 @@ pub contract NFTStorefront { let provider = self.nftProviderCapability.borrow() assert(provider != nil, message: "cannot borrow nftProviderCapability") + let nft = provider!.borrowNFT(self.details.nftID) // This will precondition assert if the token is not available. - let nft = provider!.borrowNFT(id: self.details.nftID) - assert(nft.isInstance(self.details.nftType), message: "token is not of specified type") - assert(nft.id == self.details.nftID, message: "token does not have specified ID") + assert(nft != nil, message: "Could not borrow a reference to the NFT") + assert(nft!.isInstance(self.details.nftType), message: "token is not of specified type") + assert(nft?.id == self.details.nftID, message: "token does not have specified ID") } } @@ -354,12 +364,12 @@ pub contract NFTStorefront { /// An interface for adding and removing Listings within a Storefront, /// intended for use by the Storefront's own /// - pub resource interface StorefrontManager { + access(all) resource interface StorefrontManager { /// createListing /// Allows the Storefront owner to create and insert Listings. /// - pub fun createListing( - nftProviderCapability: Capability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>, + access(CreateListing) fun createListing( + nftProviderCapability: Capability, nftType: Type, nftID: UInt64, salePaymentVaultType: Type, @@ -368,32 +378,42 @@ pub contract NFTStorefront { /// removeListing /// Allows the Storefront owner to remove any sale listing, acepted or not. /// - pub fun removeListing(listingResourceID: UInt64) + access(RemoveListing) fun removeListing(listingResourceID: UInt64) } /// StorefrontPublic /// An interface to allow listing and borrowing Listings, and purchasing items via Listings /// in a Storefront. /// - pub resource interface StorefrontPublic { - pub fun getListingIDs(): [UInt64] - pub fun borrowListing(listingResourceID: UInt64): &Listing{ListingPublic}? - pub fun cleanup(listingResourceID: UInt64) + access(all) resource interface StorefrontPublic { + access(all) view fun getListingIDs(): [UInt64] + access(all) view fun borrowListing(listingResourceID: UInt64): &{ListingPublic}? { + post { + result == nil || result!.getType() == Type<@Listing>(): + "Cannot borrow a non-NFTStorefront.Listing!" + } + } + access(all) fun cleanup(listingResourceID: UInt64) } /// Storefront /// A resource that allows its owner to manage a list of Listings, and anyone to interact with them /// in order to query their details and purchase the NFTs that they represent. /// - pub resource Storefront : StorefrontManager, StorefrontPublic { + access(all) resource Storefront: StorefrontManager, StorefrontPublic { + // Event to be emitted when this storefront is destroyed. + access(all) event ResourceDestroyed( + storefrontResourceID: UInt64 = self.uuid + ) + /// The dictionary of Listing uuids to Listing resources. access(self) var listings: @{UInt64: Listing} /// insert /// Create and publish a Listing for an NFT. /// - pub fun createListing( - nftProviderCapability: Capability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>, + access(CreateListing) fun createListing( + nftProviderCapability: Capability, nftType: Type, nftID: UInt64, salePaymentVaultType: Type, @@ -415,7 +435,7 @@ pub contract NFTStorefront { let oldListing <- self.listings[listingResourceID] <- listing // Note that oldListing will always be nil, but we have to handle it. - destroy oldListing + Burner.burn(<-oldListing) emit ListingAvailable( storefrontAddress: self.owner?.address!, @@ -433,27 +453,27 @@ pub contract NFTStorefront { /// removeListing /// Remove a Listing that has not yet been purchased from the collection and destroy it. /// - pub fun removeListing(listingResourceID: UInt64) { + access(RemoveListing) fun removeListing(listingResourceID: UInt64) { let listing <- self.listings.remove(key: listingResourceID) ?? panic("missing Listing") // This will emit a ListingCompleted event. - destroy listing + Burner.burn(<-listing) } /// getListingIDs /// Returns an array of the Listing resource IDs that are in the collection /// - pub fun getListingIDs(): [UInt64] { + access(all) view fun getListingIDs(): [UInt64] { return self.listings.keys } /// borrowSaleItem /// Returns a read-only view of the SaleItem for the given listingID if it is contained by this collection. /// - pub fun borrowListing(listingResourceID: UInt64): &Listing{ListingPublic}? { + access(all) view fun borrowListing(listingResourceID: UInt64): &{ListingPublic}? { if self.listings[listingResourceID] != nil { - return &self.listings[listingResourceID] as! &Listing{ListingPublic}? + return &self.listings[listingResourceID] as &{ListingPublic}? } else { return nil } @@ -464,23 +484,14 @@ pub contract NFTStorefront { /// Anyone can call, but at present it only benefits the account owner to do so. /// Kind purchasers can however call it if they like. /// - pub fun cleanup(listingResourceID: UInt64) { + access(all) fun cleanup(listingResourceID: UInt64) { pre { self.listings[listingResourceID] != nil: "could not find listing with given id" } let listing <- self.listings.remove(key: listingResourceID)! assert(listing.getDetails().purchased == true, message: "listing is not purchased, only admin can remove") - destroy listing - } - - /// destructor - /// - destroy () { - destroy self.listings - - // Let event consumers know that this storefront will no longer exist - emit StorefrontDestroyed(storefrontResourceID: self.uuid) + Burner.burn(<-listing) } /// constructor @@ -496,14 +507,12 @@ pub contract NFTStorefront { /// createStorefront /// Make creating a Storefront publicly accessible. /// - pub fun createStorefront(): @Storefront { + access(all) fun createStorefront(): @Storefront { return <-create Storefront() } init () { self.StorefrontStoragePath = /storage/NFTStorefront self.StorefrontPublicPath = /public/NFTStorefront - - emit NFTStorefrontInitialized() } } diff --git a/contracts/standard/NonFungibleToken.cdc b/contracts/standard/NonFungibleToken.cdc index 8b8cd27..2c6a8b5 100644 --- a/contracts/standard/NonFungibleToken.cdc +++ b/contracts/standard/NonFungibleToken.cdc @@ -2,20 +2,28 @@ ## The Flow Non-Fungible Token standard -## `NonFungibleToken` contract interface +## `NonFungibleToken` contract -The interface that all non-fungible token contracts could conform to. -If a user wants to deploy a new nft contract, their contract would need -to implement the NonFungibleToken interface. +The interface that all Non-Fungible Token contracts should conform to. +If a user wants to deploy a new NFT contract, their contract should implement +The types defined here -Their contract would have to follow all the rules and naming -that the interface specifies. +/// Contributors (please add to this list if you contribute!): +/// - Joshua Hannan - https://github.com/joshuahannan +/// - Bastian Müller - https://twitter.com/turbolent +/// - Dete Shirley - https://twitter.com/dete73 +/// - Bjarte Karlsen - https://twitter.com/0xBjartek +/// - Austin Kline - https://twitter.com/austin_flowty +/// - Giovanni Sanchez - https://twitter.com/gio_incognito +/// - Deniz Edincik - https://twitter.com/bluesign +/// +/// Repo reference: https://github.com/onflow/flow-nft -## `NFT` resource +## `NFT` resource interface The core resource type that represents an NFT in the smart contract. -## `Collection` Resource +## `Collection` Resource interface The resource that stores a user's NFT collection. It includes a few functions to allow the owner to easily @@ -26,10 +34,8 @@ move tokens in and out of the collection. These interfaces declare functions with some pre and post conditions that require the Collection to follow certain naming and behavior standards. -They are separate because it gives the user the ability to share a reference -to their Collection that only exposes the fields and functions in one or more -of the interfaces. It also gives users the ability to make custom resources -that implement these interfaces to do various things with the tokens. +They are separate because it gives developers the ability to define functions +that can use any type that implements these interfaces By using resources and interfaces, users of NFT smart contracts can send and receive tokens peer-to-peer, without having to interact with a central ledger @@ -41,104 +47,247 @@ Collection to complete the transfer. */ -// The main NFT contract interface. Other NFT contracts will -// import and implement this interface -// -pub contract interface NonFungibleToken { - - // The total number of tokens of this type in existence - pub var totalSupply: UInt64 - - // Event that emitted when the NFT contract is initialized - // - pub event ContractInitialized() - - // Event that is emitted when a token is withdrawn, - // indicating the owner of the collection that it was withdrawn from. - // - // If the collection is not in an account's storage, `from` will be `nil`. - // - pub event Withdraw(id: UInt64, from: Address?) - - // Event that emitted when a token is deposited to a collection. - // - // It indicates the owner of the collection that it was deposited to. - // - pub event Deposit(id: UInt64, to: Address?) - - // Interface that the NFTs have to conform to - // - pub resource interface INFT { - // The unique ID that each NFT has - pub let id: UInt64 +import "ViewResolver" + +/// The main NFT contract interface. Other NFT contracts will import +/// and implement this interface as well the interfaces defined in this interface +/// +access(all) contract interface NonFungibleToken: ViewResolver { + + /// An entitlement for allowing the withdrawal of tokens from a Vault + access(all) entitlement Withdraw + + /// An entitlement for allowing updates and update events for an NFT + access(all) entitlement Update + + /// Event that contracts should emit when the metadata of an NFT is updated + /// It can only be emitted by calling the `emitNFTUpdated` function + /// with an `Update` entitled reference to the NFT that was updated + /// The entitlement prevents spammers from calling this from other users' collections + /// because only code within a collection or that has special entitled access + /// to the collections methods will be able to get the entitled reference + /// + /// The event makes it so that third-party indexers can monitor the events + /// and query the updated metadata from the owners' collections. + /// + access(all) event Updated(type: String, id: UInt64, uuid: UInt64, owner: Address?) + access(all) view fun emitNFTUpdated(_ nftRef: auth(Update) &{NonFungibleToken.NFT}) + { + emit Updated(type: nftRef.getType().identifier, id: nftRef.id, uuid: nftRef.uuid, owner: nftRef.owner?.address) } - // Requirement that all conforming NFT smart contracts have - // to define a resource called NFT that conforms to INFT - pub resource NFT: INFT { - pub let id: UInt64 + + /// Event that is emitted when a token is withdrawn, + /// indicating the type, id, uuid, the owner of the collection that it was withdrawn from, + /// and the UUID of the resource it was withdrawn from, usually a collection. + /// + /// If the collection is not in an account's storage, `from` will be `nil`. + /// + access(all) event Withdrawn(type: String, id: UInt64, uuid: UInt64, from: Address?, providerUUID: UInt64) + + /// Event that emitted when a token is deposited to a collection. + /// Indicates the type, id, uuid, the owner of the collection that it was deposited to, + /// and the UUID of the collection it was deposited to + /// + /// If the collection is not in an account's storage, `from`, will be `nil`. + /// + access(all) event Deposited(type: String, id: UInt64, uuid: UInt64, to: Address?, collectionUUID: UInt64) + + /// Interface that the NFTs must conform to + /// + access(all) resource interface NFT: ViewResolver.Resolver { + + /// unique ID for the NFT + access(all) let id: UInt64 + + /// Event that is emitted automatically every time a resource is destroyed + /// The type information is included in the metadata event so it is not needed as an argument + access(all) event ResourceDestroyed(id: UInt64 = self.id, uuid: UInt64 = self.uuid) + + /// createEmptyCollection creates an empty Collection that is able to store the NFT + /// and returns it to the caller so that they can own NFTs + /// + /// @return A an empty collection that can store this NFT + /// + access(all) fun createEmptyCollection(): @{Collection} { + post { + result.getLength() == 0: + "NonFungibleToken.NFT.createEmptyCollection: Cannot create an empty collection! " + .concat("The created NonFungibleToken Collection has a non-zero length. ") + .concat(" A newly created collection must be empty!") + result.isSupportedNFTType(type: self.getType()): + "NonFungibleToken.NFT.createEmptyCollection: Cannot create an empty collection! " + .concat("The created NonFungibleToken Collection does not support NFTs of type <") + .concat(self.getType().identifier) + .concat(">. The collection must support NFTs of type <") + .concat(self.getType().identifier).concat(">.") + } + } + + /// Gets all the NFTs that this NFT directly owns + /// + /// @return A dictionary of all subNFTS keyed by type + /// + access(all) view fun getAvailableSubNFTS(): {Type: [UInt64]} { + return {} + } + + /// Get a reference to an NFT that this NFT owns + /// Both arguments are optional to allow the NFT to choose + /// how it returns sub NFTs depending on what arguments are provided + /// For example, if `type` has a value, but `id` doesn't, the NFT + /// can choose which NFT of that type to return if there is a "default" + /// If both are `nil`, then NFTs that only store a single NFT can just return + /// that. This helps callers who aren't sure what they are looking for + /// + /// @param type: The Type of the desired NFT + /// @param id: The id of the NFT to borrow + /// + /// @return A structure representing the requested view. + access(all) fun getSubNFT(type: Type, id: UInt64) : &{NonFungibleToken.NFT}? { + return nil + } } - // Interface to mediate withdraws from the Collection - // - pub resource interface Provider { - // withdraw removes an NFT from the collection and moves it to the caller - pub fun withdraw(withdrawID: UInt64): @NFT { + /// Interface to mediate withdrawals from a resource, usually a Collection + /// + access(all) resource interface Provider { + + // We emit withdraw events from the provider interface because conficting withdraw + // events aren't as confusing to event listeners as conflicting deposit events + + /// withdraw removes an NFT from the collection and moves it to the caller + /// It does not specify whether the ID is UUID or not + /// + /// @param withdrawID: The id of the NFT to withdraw from the collection + /// @return @{NFT}: The NFT that was withdrawn + /// + access(Withdraw) fun withdraw(withdrawID: UInt64): @{NFT} { post { - result.id == withdrawID: "The ID of the withdrawn token must be the same as the requested ID" + result.id == withdrawID: + "NonFungibleToken.Provider.withdraw: Cannot withdraw NFT! " + .concat("The ID of the withdrawn NFT (") + .concat(result.id.toString()) + .concat(") must be the same as the requested ID (") + .concat(withdrawID.toString()) + .concat(").") + emit Withdrawn(type: result.getType().identifier, id: result.id, uuid: result.uuid, from: self.owner?.address, providerUUID: self.uuid) } } } - // Interface to mediate deposits to the Collection - // - pub resource interface Receiver { + /// Interface to mediate deposits to the Collection + /// + access(all) resource interface Receiver { + + /// deposit takes an NFT as an argument and adds it to the Collection + /// @param token: The NFT to deposit + access(all) fun deposit(token: @{NFT}) + + /// getSupportedNFTTypes returns a list of NFT types that this receiver accepts + /// @return A dictionary of types mapped to booleans indicating if this + /// reciever supports it + access(all) view fun getSupportedNFTTypes(): {Type: Bool} - // deposit takes an NFT as an argument and adds it to the Collection - // - pub fun deposit(token: @NFT) + /// Returns whether or not the given type is accepted by the collection + /// A collection that can accept any type should just return true by default + /// @param type: An NFT type + /// @return A boolean indicating if this receiver can recieve the desired NFT type + access(all) view fun isSupportedNFTType(type: Type): Bool } - // Interface that an account would commonly - // publish for their collection - pub resource interface CollectionPublic { - pub fun deposit(token: @NFT) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NFT + /// Kept for backwards-compatibility reasons + access(all) resource interface CollectionPublic { + access(all) fun deposit(token: @{NFT}) + access(all) view fun getLength(): Int + access(all) view fun getIDs(): [UInt64] + access(all) fun forEachID(_ f: fun (UInt64): Bool): Void + access(all) view fun borrowNFT(_ id: UInt64): &{NFT}? } - // Requirement for the the concrete resource type - // to be declared in the implementing contract - // - pub resource Collection: Provider, Receiver, CollectionPublic { + /// Requirement for the concrete resource type in the implementing contract + /// to implement this interface. Since this interface inherits from + /// all the other necessary interfaces, resources that implement it do not + /// also need to include the other interfaces in their conformance lists + /// + access(all) resource interface Collection: Provider, Receiver, CollectionPublic, ViewResolver.ResolverCollection { - // Dictionary to hold the NFTs in the Collection - pub var ownedNFTs: @{UInt64: NFT} + /// Field that contains all the NFTs that the collection owns + access(all) var ownedNFTs: @{UInt64: {NonFungibleToken.NFT}} - // withdraw removes an NFT from the collection and moves it to the caller - pub fun withdraw(withdrawID: UInt64): @NFT + /// deposit takes a NFT as an argument and stores it in the collection + /// @param token: The NFT to deposit into the collection + access(all) fun deposit(token: @{NonFungibleToken.NFT}) { + pre { + // We emit the deposit event in the `Collection` interface + // because the `Collection` interface is almost always the final destination + // of tokens and deposit emissions from custom receivers could be confusing + // and hard to reconcile to event listeners + emit Deposited(type: token.getType().identifier, id: token.id, uuid: token.uuid, to: self.owner?.address, collectionUUID: self.uuid) + } + } - // deposit takes a NFT and adds it to the collections dictionary - // and adds the ID to the id array - pub fun deposit(token: @NFT) + /// Gets the amount of NFTs stored in the collection + /// @return An integer indicating the size of the collection + access(all) view fun getLength(): Int { + return self.ownedNFTs.length + } - // getIDs returns an array of the IDs that are in the collection - pub fun getIDs(): [UInt64] + /// Allows a given function to iterate through the list + /// of owned NFT IDs in a collection without first + /// having to load the entire list into memory + access(all) fun forEachID(_ f: fun (UInt64): Bool): Void { + self.ownedNFTs.forEachKey(f) + } - // Returns a borrowed reference to an NFT in the collection - // so that the caller can read data and call methods from it - pub fun borrowNFT(id: UInt64): &NFT { - pre { - self.ownedNFTs[id] != nil: "NFT does not exist in the collection!" + /// Borrows a reference to an NFT stored in the collection + /// If the NFT with the specified ID is not in the collection, + /// the function should return `nil` and not panic. + /// + /// @param id: The desired nft id in the collection to return a referece for. + /// @return An optional reference to the NFT + access(all) view fun borrowNFT(_ id: UInt64): &{NonFungibleToken.NFT}? { + post { + (result == nil) || (result?.id == id): + "NonFungibleToken.Collection.borrowNFT: Cannot borrow NFT reference! " + .concat("The ID of the returned reference (") + .concat(result!.id.toString()) + .concat(") does not match the ID that was specified (") + .concat(id.toString()) + .concat(")") + } + } + + /// createEmptyCollection creates an empty Collection of the same type + /// and returns it to the caller + /// @return A an empty collection of the same type + access(all) fun createEmptyCollection(): @{Collection} { + post { + result.getType() == self.getType(): + "NonFungibleToken.Collection.createEmptyCollection: Cannot create empty collection! " + .concat("The created collection type <") + .concat(result.getType().identifier) + .concat("> does not have the same type as the collection that was used to create it <") + .concat(self.getType().identifier) + .concat(">.") + result.getLength() == 0: + "NonFungibleToken.Collection.createEmptyCollection: Cannot create empty collection! " + .concat("The created collection has a non-zero length.") + .concat(" A newly created collection must be empty!") } } } - // createEmptyCollection creates an empty Collection - // and returns it to the caller so that they can own NFTs - pub fun createEmptyCollection(): @Collection { + /// createEmptyCollection creates an empty Collection for the specified NFT type + /// and returns it to the caller so that they can own NFTs + /// @param nftType: The desired nft type to return a collection for. + /// @return An array of NFT Types that the implementing contract defines. + access(all) fun createEmptyCollection(nftType: Type): @{NonFungibleToken.Collection} { post { - result.getIDs().length == 0: "The created collection must be empty!" + result.getIDs().length == 0: + "NonFungibleToken.createEmptyCollection: Cannot create empty collection! " + .concat("The created collection has a non-zero length. ") + .concat("A newly created collection must be empty!") } } -} \ No newline at end of file +} diff --git a/contracts/standard/ViewResolver.cdc b/contracts/standard/ViewResolver.cdc new file mode 100644 index 0000000..2922b25 --- /dev/null +++ b/contracts/standard/ViewResolver.cdc @@ -0,0 +1,58 @@ +// Taken from the NFT Metadata standard, this contract exposes an interface to let +// anyone borrow a contract and resolve views on it. +// +// This will allow you to obtain information about a contract without necessarily knowing anything about it. +// All you need is its address and name and you're good to go! +access(all) contract interface ViewResolver { + + /// Function that returns all the Metadata Views implemented by the resolving contract. + /// Some contracts may have multiple resource types that support metadata views + /// so there is an optional parameter to specify which resource type the caller + /// is requesting views for. + /// Some contract-level views may be type-agnostic. In that case, the contract + /// should return the same views regardless of what type is passed in. + /// + /// @param resourceType: An optional resource type to return views for + /// @return An array of Types defining the implemented views. This value will be used by + /// developers to know which parameter to pass to the resolveView() method. + /// + access(all) view fun getContractViews(resourceType: Type?): [Type] + + /// Function that resolves a metadata view for this token. + /// Some contracts may have multiple resource types that support metadata views + /// so there there is an optional parameter for specify which resource type the caller + /// is looking for views for. + /// Some contract-level views may be type-agnostic. In that case, the contract + /// should return the same views regardless of what type is passed in. + /// + /// @param resourceType: An optional resource type to return views for + /// @param view: The Type of the desired view. + /// @return A structure representing the requested view. + /// + access(all) fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? + + /// Provides access to a set of metadata views. A struct or + /// resource (e.g. an NFT) can implement this interface to provide access to + /// the views that it supports. + /// + access(all) resource interface Resolver { + + /// Same as getViews above, but on a specific NFT instead of a contract + access(all) view fun getViews(): [Type] + + /// Same as resolveView above, but on a specific NFT instead of a contract + access(all) fun resolveView(_ view: Type): AnyStruct? + } + + /// A group of view resolvers indexed by ID. + /// + access(all) resource interface ResolverCollection { + access(all) view fun borrowViewResolver(id: UInt64): &{Resolver}? { + return nil + } + + access(all) view fun getIDs(): [UInt64] { + return [] + } + } +} diff --git a/contracts/thirdparty/nft_catalog/NFTCatalog.cdc b/contracts/thirdparty/nft_catalog/NFTCatalog.cdc index 5b4698e..7282a5f 100644 --- a/contracts/thirdparty/nft_catalog/NFTCatalog.cdc +++ b/contracts/thirdparty/nft_catalog/NFTCatalog.cdc @@ -10,19 +10,17 @@ import MetadataViews from "../../standard/MetadataViews.cdc" // To make an addition to the catalog you can propose an NFT and provide its metadata. // An Admin can approve a proposal which would add the NFT to the catalog -pub contract NFTCatalog { +access(all) contract NFTCatalog { // EntryAdded // An NFT collection has been added to the catalog - pub event EntryAdded( + access(all) event EntryAdded( collectionIdentifier : String, contractName : String, contractAddress : Address, nftType : Type, storagePath: StoragePath, publicPath: PublicPath, - privatePath: PrivatePath, publicLinkedType : Type, - privateLinkedType : Type, displayName : String, description: String, externalURL : String @@ -30,16 +28,14 @@ pub contract NFTCatalog { // EntryUpdated // An NFT Collection has been updated in the catalog - pub event EntryUpdated( + access(all) event EntryUpdated( collectionIdentifier : String, contractName : String, contractAddress : Address, nftType : Type, storagePath: StoragePath, publicPath: PublicPath, - privatePath: PrivatePath, publicLinkedType : Type, - privateLinkedType : Type, displayName : String, description: String, externalURL : String @@ -47,23 +43,23 @@ pub contract NFTCatalog { // EntryRemoved // An NFT Collection has been removed from the catalog - pub event EntryRemoved(collectionIdentifier : String, nftType: Type) + access(all) event EntryRemoved(collectionIdentifier : String, nftType: Type) // ProposalEntryAdded // A new proposal to make an addtion to the catalog has been made - pub event ProposalEntryAdded(proposalID : UInt64, collectionIdentifier : String, message: String, status: String, proposer : Address) + access(all) event ProposalEntryAdded(proposalID : UInt64, collectionIdentifier : String, message: String, status: String, proposer : Address) // ProposalEntryUpdated // A proposal has been updated - pub event ProposalEntryUpdated(proposalID : UInt64, collectionIdentifier : String, message: String, status: String, proposer : Address) + access(all) event ProposalEntryUpdated(proposalID : UInt64, collectionIdentifier : String, message: String, status: String, proposer : Address) // ProposalEntryRemoved // A proposal has been removed from storage - pub event ProposalEntryRemoved(proposalID : UInt64) + access(all) event ProposalEntryRemoved(proposalID : UInt64) - pub let ProposalManagerStoragePath: StoragePath + access(all) let ProposalManagerStoragePath: StoragePath - pub let ProposalManagerPublicPath: PublicPath + access(all) let ProposalManagerPublicPath: PublicPath access(self) let catalog: {String : NFTCatalog.NFTCatalogMetadata} // { collectionIdentifier -> Metadata } access(self) let catalogTypeData: {String : {String : Bool}} // Additional view to go from { NFT Type Identifier -> {Collection Identifier : Bool } } @@ -75,17 +71,20 @@ pub contract NFTCatalog { // NFTCatalogProposalManager // Used to authenticate proposals made to the catalog - pub resource interface NFTCatalogProposalManagerPublic { - pub fun getCurrentProposalEntry(): String? + access(all) resource interface NFTCatalogProposalManagerPublic { + access(all) view fun getCurrentProposalEntry(): String? } - pub resource NFTCatalogProposalManager : NFTCatalogProposalManagerPublic { + + access(all) entitlement ProposalActionOwner + + access(all) resource NFTCatalogProposalManager: NFTCatalogProposalManagerPublic { access(self) var currentProposalEntry: String? - pub fun getCurrentProposalEntry(): String? { + access(all) view fun getCurrentProposalEntry(): String? { return self.currentProposalEntry } - pub fun setCurrentProposalEntry(identifier: String?) { + access(ProposalActionOwner) fun setCurrentProposalEntry(identifier: String?) { self.currentProposalEntry = identifier } @@ -95,19 +94,19 @@ pub contract NFTCatalog { } - pub resource Snapshot { - pub var catalogSnapshot: {String : NFTCatalogMetadata} - pub var shouldUseSnapshot: Bool + access(all) resource Snapshot { + access(all) var catalogSnapshot: {String : NFTCatalogMetadata} + access(all) var shouldUseSnapshot: Bool - pub fun setPartialSnapshot(_ snapshotKey: String, _ snapshotEntry: NFTCatalogMetadata) { + access(all) fun setPartialSnapshot(_ snapshotKey: String, _ snapshotEntry: NFTCatalogMetadata) { self.catalogSnapshot[snapshotKey] = snapshotEntry } - pub fun setShouldUseSnapshot(_ shouldUseSnapshot: Bool) { + access(all) fun setShouldUseSnapshot(_ shouldUseSnapshot: Bool) { self.shouldUseSnapshot = shouldUseSnapshot } - pub fun getCatalogSnapshot(): {String : NFTCatalogMetadata} { + access(all) view fun getCatalogSnapshot(): {String : NFTCatalogMetadata} { return self.catalogSnapshot } @@ -117,45 +116,39 @@ pub contract NFTCatalog { } } - pub fun createEmptySnapshot(): @Snapshot { + access(all) fun createEmptySnapshot(): @Snapshot { return <- create Snapshot() } // NFTCollectionData // Represents information about an NFT collection resource - // Note: Not suing the struct from Metadata standard due to + // Note: Not using the struct from Metadata standard due to // inability to store functions - pub struct NFTCollectionData { + access(all) struct NFTCollectionData { - pub let storagePath : StoragePath - pub let publicPath : PublicPath - pub let privatePath: PrivatePath - pub let publicLinkedType: Type - pub let privateLinkedType: Type + access(all) let storagePath : StoragePath + access(all) let publicPath : PublicPath + access(all) let publicLinkedType: Type init( storagePath : StoragePath, publicPath : PublicPath, - privatePath : PrivatePath, publicLinkedType : Type, - privateLinkedType : Type ) { self.storagePath = storagePath self.publicPath = publicPath - self.privatePath = privatePath self.publicLinkedType = publicLinkedType - self.privateLinkedType = privateLinkedType } } // NFTCatalogMetadata // Represents data about an NFT - pub struct NFTCatalogMetadata { - pub let contractName : String - pub let contractAddress : Address - pub let nftType: Type - pub let collectionData: NFTCollectionData - pub let collectionDisplay: MetadataViews.NFTCollectionDisplay + access(all) struct NFTCatalogMetadata { + access(all) let contractName : String + access(all) let contractAddress : Address + access(all) let nftType: Type + access(all) let collectionData: NFTCollectionData + access(all) let collectionDisplay: MetadataViews.NFTCollectionDisplay init (contractName : String, contractAddress : Address, nftType: Type, collectionData : NFTCollectionData, collectionDisplay : MetadataViews.NFTCollectionDisplay) { self.contractName = contractName @@ -169,13 +162,13 @@ pub contract NFTCatalog { // NFTCatalogProposal // Represents a proposal to the catalog // Includes data about an NFT - pub struct NFTCatalogProposal { - pub let collectionIdentifier : String - pub let metadata : NFTCatalogMetadata - pub let message : String - pub let status : String - pub let proposer : Address - pub let createdTime : UFix64 + access(all) struct NFTCatalogProposal { + access(all) let collectionIdentifier : String + access(all) let metadata : NFTCatalogMetadata + access(all) let message : String + access(all) let status : String + access(all) let proposer : Address + access(all) let createdTime : UFix64 init(collectionIdentifier : String, metadata : NFTCatalogMetadata, message : String, status : String, proposer : Address) { self.collectionIdentifier = collectionIdentifier @@ -192,8 +185,8 @@ pub contract NFTCatalog { If obtaining all elements from the catalog is essential, please use the getCatalogKeys and forEachCatalogKey methods instead. */ - pub fun getCatalog() : {String : NFTCatalogMetadata} { - let snapshot = self.account.borrow<&NFTCatalog.Snapshot>(from: /storage/CatalogSnapshot) + access(all) view fun getCatalog() : {String : NFTCatalogMetadata} { + let snapshot = self.account.storage.borrow<&NFTCatalog.Snapshot>(from: /storage/CatalogSnapshot) if snapshot != nil { let snapshot = snapshot! if snapshot.shouldUseSnapshot { @@ -206,23 +199,23 @@ pub contract NFTCatalog { } } - pub fun getCatalogKeys(): [String] { + access(all) view fun getCatalogKeys(): [String] { return self.catalog.keys } - pub fun forEachCatalogKey(_ function: ((String): Bool)) { + access(all) fun forEachCatalogKey(_ function: fun (String): Bool) { self.catalog.forEachKey(function) } - pub fun getCatalogEntry(collectionIdentifier : String) : NFTCatalogMetadata? { + access(all) view fun getCatalogEntry(collectionIdentifier : String) : NFTCatalogMetadata? { return self.catalog[collectionIdentifier] } - pub fun getCollectionsForType(nftTypeIdentifier: String) : {String : Bool}? { + access(all) view fun getCollectionsForType(nftTypeIdentifier: String) : {String : Bool}? { return self.catalogTypeData[nftTypeIdentifier] } - pub fun getCatalogTypeData() : {String : {String : Bool}} { + access(all) view fun getCatalogTypeData() : {String : {String : Bool}} { return self.catalogTypeData } @@ -231,12 +224,10 @@ pub contract NFTCatalog { // @param metadata: The Metadata for the NFT collection that will be stored in the catalog // @param message: A message to the catalog owners // @param proposer: Who is making the proposition(the address needs to be verified) - pub fun proposeNFTMetadata(collectionIdentifier : String, metadata : NFTCatalogMetadata, message : String, proposer : Address) : UInt64 { - let proposerManagerCap = getAccount(proposer).getCapability<&NFTCatalogProposalManager{NFTCatalog.NFTCatalogProposalManagerPublic}>(NFTCatalog.ProposalManagerPublicPath) - - assert(proposerManagerCap.check(), message : "Proposer needs to set up a manager") - - let proposerManagerRef = proposerManagerCap.borrow()! + access(all) fun proposeNFTMetadata(collectionIdentifier : String, metadata : NFTCatalogMetadata, message : String, proposer : Address) : UInt64 { + let proposerManagerRef = getAccount(proposer).capabilities.borrow<&NFTCatalogProposalManager>( + NFTCatalog.ProposalManagerPublicPath + ) ?? panic("Proposer needs to set up a manager") assert(proposerManagerRef.getCurrentProposalEntry()! == collectionIdentifier, message: "Expected proposal entry does not match entry for the proposer") @@ -250,41 +241,39 @@ pub contract NFTCatalog { // Withdraw a proposal from the catalog // @param proposalID: The ID of proposal you want to withdraw - pub fun withdrawNFTProposal(proposalID : UInt64) { + access(all) fun withdrawNFTProposal(proposalID : UInt64) { pre { self.catalogProposals[proposalID] != nil : "Invalid Proposal ID" } let proposal = self.catalogProposals[proposalID]! let proposer = proposal.proposer - let proposerManagerCap = getAccount(proposer).getCapability<&NFTCatalogProposalManager{NFTCatalog.NFTCatalogProposalManagerPublic}>(NFTCatalog.ProposalManagerPublicPath) - - assert(proposerManagerCap.check(), message : "Proposer needs to set up a manager") - - let proposerManagerRef = proposerManagerCap.borrow()! + let proposerManagerRef = getAccount(proposer).capabilities.borrow<&NFTCatalogProposalManager>( + NFTCatalog.ProposalManagerPublicPath + ) ?? panic("Proposer needs to set up a manager") assert(proposerManagerRef.getCurrentProposalEntry()! == proposal.collectionIdentifier, message: "Expected proposal entry does not match entry for the proposer") self.removeCatalogProposal(proposalID : proposalID) } - pub fun getCatalogProposals() : {UInt64 : NFTCatalogProposal} { + access(all) view fun getCatalogProposals() : {UInt64 : NFTCatalogProposal} { return self.catalogProposals } - pub fun getCatalogProposalEntry(proposalID : UInt64) : NFTCatalogProposal? { + access(all) view fun getCatalogProposalEntry(proposalID : UInt64) : NFTCatalogProposal? { return self.catalogProposals[proposalID] } - pub fun getCatalogProposalKeys() : [UInt64] { + access(all) view fun getCatalogProposalKeys() : [UInt64] { return self.catalogProposals.keys } - pub fun forEachCatalogProposalKey(_ function: ((UInt64): Bool)) { + access(all) fun forEachCatalogProposalKey(_ function: fun (UInt64): Bool) { self.catalogProposals.forEachKey(function) } - pub fun createNFTCatalogProposalManager(): @NFTCatalogProposalManager { + access(all) fun createNFTCatalogProposalManager(): @NFTCatalogProposalManager { return <-create NFTCatalogProposalManager() } @@ -304,9 +293,7 @@ pub contract NFTCatalog { nftType: metadata.nftType, storagePath: metadata.collectionData.storagePath, publicPath: metadata.collectionData.publicPath, - privatePath: metadata.collectionData.privatePath, publicLinkedType : metadata.collectionData.publicLinkedType, - privateLinkedType : metadata.collectionData.privateLinkedType, displayName : metadata.collectionDisplay.name, description: metadata.collectionDisplay.description, externalURL : metadata.collectionDisplay.externalURL.url @@ -333,9 +320,7 @@ pub contract NFTCatalog { nftType: metadata.nftType, storagePath: metadata.collectionData.storagePath, publicPath: metadata.collectionData.publicPath, - privatePath: metadata.collectionData.privatePath, publicLinkedType : metadata.collectionData.publicLinkedType, - privateLinkedType : metadata.collectionData.privateLinkedType, displayName : metadata.collectionDisplay.name, description: metadata.collectionDisplay.description, externalURL : metadata.collectionDisplay.externalURL.url @@ -353,6 +338,22 @@ pub contract NFTCatalog { emit EntryRemoved(collectionIdentifier : collectionIdentifier, nftType: removedType) } + // This function is not preferred, and was used for the following issue: + // https://github.com/onflow/cadence/issues/2649 + // If a contract's type is no longer resolvable in cadence and crashing, + // this function can be used to remove it from the catalog. + access(account) fun removeCatalogEntryUnsafe(collectionIdentifier: String, nftTypeIdentifier: String) { + // Remove the catalog entry + self.catalog.remove(key: collectionIdentifier) + + // Remove the type entry + if (self.catalogTypeData[nftTypeIdentifier]!.keys.length == 1) { + self.catalogTypeData.remove(key: nftTypeIdentifier) + } else { + self.catalogTypeData[nftTypeIdentifier]!.remove(key: collectionIdentifier) + } + } + access(account) fun updateCatalogProposal(proposalID: UInt64, proposalMetadata : NFTCatalogProposal) { self.catalogProposals[proposalID] = proposalMetadata diff --git a/contracts/thirdparty/nft_catalog/NFTRetrieval.cdc b/contracts/thirdparty/nft_catalog/NFTRetrieval.cdc index b1f7193..5d88653 100644 --- a/contracts/thirdparty/nft_catalog/NFTRetrieval.cdc +++ b/contracts/thirdparty/nft_catalog/NFTRetrieval.cdc @@ -1,14 +1,15 @@ import MetadataViews from "../../standard/MetadataViews.cdc" import NFTCatalog from "./NFTCatalog.cdc" +import ViewResolver from "../../standard/ViewResolver.cdc" // NFTRetrieval // // A helper contract to get NFT's in a users account // leveraging the NFTCatalog Smart Contract -pub contract NFTRetrieval { +access(all) contract NFTRetrieval { - pub fun getRecommendedViewsTypes(version: String) : [Type] { + access(all) view fun getRecommendedViewsTypes(version: String) : [Type] { switch version { case "v1": return [ @@ -21,10 +22,9 @@ pub contract NFTRetrieval { default: panic("Version not supported") } - return [] } - pub fun getNFTIDsFromCap(collectionIdentifier: String, collectionCap : Capability<&AnyResource{MetadataViews.ResolverCollection}>) : [UInt64] { + access(all) fun getNFTIDsFromCap(collectionIdentifier: String, collectionCap : Capability<&{ViewResolver.ResolverCollection}>) : [UInt64] { pre { NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier) != nil : "Invalid collection identifier" } @@ -42,7 +42,7 @@ pub contract NFTRetrieval { for id in collectionRef.getIDs() { let nftResolver = collectionRef.borrowViewResolver(id: id) - let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver) + let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver!) if nftViews.display!.name == value.collectionDisplay.name { ids.append(id) } @@ -53,7 +53,7 @@ pub contract NFTRetrieval { return [] } - pub fun getNFTCountFromCap(collectionIdentifier: String, collectionCap : Capability<&AnyResource{MetadataViews.ResolverCollection}>) : UInt64 { + access(all) fun getNFTCountFromCap(collectionIdentifier: String, collectionCap : Capability<&{ViewResolver.ResolverCollection}>) : UInt64 { pre { NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier) != nil : "Invalid collection identifier" } @@ -69,7 +69,7 @@ pub contract NFTRetrieval { var count : UInt64 = 0 for id in collectionRef.getIDs() { let nftResolver = collectionRef.borrowViewResolver(id: id) - let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver) + let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver!) if nftViews.display!.name == value.collectionDisplay.name { count = count + 1 } @@ -79,7 +79,7 @@ pub contract NFTRetrieval { return 0 } - pub fun getAllMetadataViewsFromCap(collectionIdentifier: String, collectionCap : Capability<&AnyResource{MetadataViews.ResolverCollection}>) : {String: AnyStruct} { + access(all) fun getAllMetadataViewsFromCap(collectionIdentifier: String, collectionCap : Capability<&{ViewResolver.ResolverCollection}>) : {String: AnyStruct} { pre { NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier) != nil : "Invalid collection identifier" } @@ -92,7 +92,7 @@ pub contract NFTRetrieval { if collectionCap.check() { let collectionRef = collectionCap.borrow()! for id in collectionRef.getIDs() { - let nftResolver = collectionRef.borrowViewResolver(id: id) + let nftResolver = collectionRef.borrowViewResolver(id: id)! let supportedNftViewTypes = nftResolver.getViews() for supportedViewType in supportedNftViewTypes { if let view = nftResolver.resolveView(supportedViewType) { @@ -108,7 +108,7 @@ pub contract NFTRetrieval { return items } - pub fun getNFTViewsFromCap(collectionIdentifier: String, collectionCap : Capability<&AnyResource{MetadataViews.ResolverCollection}>) : [MetadataViews.NFTView] { + access(all) fun getNFTViewsFromCap(collectionIdentifier: String, collectionCap : Capability<&{ViewResolver.ResolverCollection}>) : [MetadataViews.NFTView] { pre { NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier) != nil : "Invalid collection identifier" } @@ -122,7 +122,7 @@ pub contract NFTRetrieval { let collectionRef = collectionCap.borrow()! for id in collectionRef.getIDs() { let nftResolver = collectionRef.borrowViewResolver(id: id) - let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver) + let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver!) if !hasMultipleCollections { items.append(nftViews) } else if nftViews.display!.name == value.collectionDisplay.name { @@ -135,7 +135,7 @@ pub contract NFTRetrieval { return items } - pub fun getNFTViewsFromIDs(collectionIdentifier : String, ids: [UInt64], collectionCap : Capability<&AnyResource{MetadataViews.ResolverCollection}>) : [MetadataViews.NFTView] { + access(all) fun getNFTViewsFromIDs(collectionIdentifier : String, ids: [UInt64], collectionCap : Capability<&{ViewResolver.ResolverCollection}>) : [MetadataViews.NFTView] { pre { NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier) != nil : "Invalid collection identifier" } @@ -152,7 +152,7 @@ pub contract NFTRetrieval { continue } let nftResolver = collectionRef.borrowViewResolver(id: id) - let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver) + let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver!) if !hasMultipleCollections { items.append(nftViews) } else if nftViews.display!.name == value.collectionDisplay.name { @@ -166,7 +166,7 @@ pub contract NFTRetrieval { return items } - access(contract) fun hasMultipleCollections(nftTypeIdentifier : String): Bool { + access(contract) view fun hasMultipleCollections(nftTypeIdentifier : String): Bool { let typeCollections = NFTCatalog.getCollectionsForType(nftTypeIdentifier: nftTypeIdentifier)! var numberOfCollections = 0 for identifier in typeCollections.keys { @@ -184,13 +184,13 @@ pub contract NFTRetrieval { //LEGACY - DO NOT USE - pub struct BaseNFTViewsV1 { - pub let id: UInt64 - pub let display: MetadataViews.Display? - pub let externalURL: MetadataViews.ExternalURL? - pub let collectionData: MetadataViews.NFTCollectionData? - pub let collectionDisplay: MetadataViews.NFTCollectionDisplay? - pub let royalties: MetadataViews.Royalties? + access(all) struct BaseNFTViewsV1 { + access(all) let id: UInt64 + access(all) let display: MetadataViews.Display? + access(all) let externalURL: MetadataViews.ExternalURL? + access(all) let collectionData: MetadataViews.NFTCollectionData? + access(all) let collectionDisplay: MetadataViews.NFTCollectionDisplay? + access(all) let royalties: MetadataViews.Royalties? init( id : UInt64, diff --git a/contracts/thirdparty/versus/Art.cdc b/contracts/thirdparty/versus/Art.cdc index fd1aff7..9559540 100644 --- a/contracts/thirdparty/versus/Art.cdc +++ b/contracts/thirdparty/versus/Art.cdc @@ -1,372 +1,469 @@ import NonFungibleToken from "../../standard/NonFungibleToken.cdc" +import ViewResolver from "../../standard/ViewResolver.cdc" import FungibleToken from "../../standard/FungibleToken.cdc" import MetadataViews from "../../standard/MetadataViews.cdc" import Content from "./Content.cdc" /// A NFT contract to store art -pub contract Art: NonFungibleToken { - - pub let CollectionStoragePath: StoragePath - pub let CollectionPublicPath: PublicPath - - pub var totalSupply: UInt64 - - pub event ContractInitialized() - pub event Withdraw(id: UInt64, from: Address?) - pub event Deposit(id: UInt64, to: Address?) - pub event Created(id: UInt64, metadata: Metadata) - pub event Editioned(id: UInt64, from: UInt64, edition: UInt64, maxEdition: UInt64) - - //The public interface can show metadata and the content for the Art piece - pub resource interface Public { - pub let id: UInt64 - pub let metadata: Metadata - - //these three are added because I think they will be in the standard. Atleast dieter thinks it will be needed - pub let name: String - pub let description: String - pub let schema: String? - - pub fun content() : String? - - access(account) let royalty: {String: Royalty} - pub fun cacheKey() : String - - } - - pub struct Metadata { - pub let name: String - pub let artist: String - pub let artistAddress:Address - pub let description: String - pub let type: String - pub let edition: UInt64 - pub let maxEdition: UInt64 - - - init(name: String, - artist: String, - artistAddress:Address, - description: String, - type: String, - edition: UInt64, - maxEdition: UInt64) { - self.name=name - self.artist=artist - self.artistAddress=artistAddress - self.description=description - self.type=type - self.edition=edition - self.maxEdition=maxEdition - } - - } - - pub struct Royalty{ - pub let wallet:Capability<&{FungibleToken.Receiver}> - pub let cut: UFix64 - - /// @param wallet : The wallet to send royalty too - init(wallet:Capability<&{FungibleToken.Receiver}>, cut: UFix64 ){ - self.wallet=wallet - self.cut=cut - } - } - - pub resource NFT: NonFungibleToken.INFT, Public, MetadataViews.Resolver { - //TODO: tighten up the permission here. - pub let id: UInt64 - pub let name: String - pub let description: String - - pub let schema: String? - //content can either be embedded in the NFT as and URL or a pointer to a Content collection to be stored onChain - //a pointer will be used for all editions of the same Art when it is editioned - pub let contentCapability:Capability<&Content.Collection>? - pub let contentId: UInt64? - pub let url: String? - pub let metadata: Metadata - access(account) let royalty: {String: Royalty} - - init(initID: UInt64, - metadata: Metadata, - contentCapability:Capability<&Content.Collection>?, - contentId: UInt64?, - url: String?, - royalty:{String: Royalty}) { - - self.id = initID - self.metadata=metadata - self.contentCapability=contentCapability - self.contentId=contentId - self.url=url - self.royalty=royalty - self.schema=nil - self.name = metadata.name - self.description=metadata.description - } - - pub fun cacheKey() : String { - if self.url != nil { - return self.url! - } - return self.contentId!.toString() - } - - //return the content for this NFT - pub fun content() : String { - if self.url != nil { - return self.url! - } - - let contentCollection= self.contentCapability!.borrow()! - return contentCollection.content(self.contentId!) - } - - pub fun getViews() : [Type] { - - var views : [Type]=[] - views.append(Type()) - views.append(Type()) - views.append(Type()) - views.append(Type()) - views.append(Type()) - return views - } - - pub fun resolveView(_ type: Type): AnyStruct? { - - if type == Type() { - let externalURL = MetadataViews.ExternalURL("https://versus.auctin") - let squareImage = MetadataViews.Media(file: MetadataViews.HTTPFile(url: "https://pbs.twimg.com/profile_images/1295757455679528963/ibkAIRww_400x400.jpg"), mediaType: "image/jpeg") - let bannerImage = MetadataViews.Media(file: MetadataViews.HTTPFile(url: "https://pbs.twimg.com/profile_images/1295757455679528963/ibkAIRww_400x400.jpg"), mediaType: "image/jpeg") - return MetadataViews.NFTCollectionDisplay(name: "Versus", description: "Curated auction house for fine art", externalURL: externalURL, squareImage: squareImage, bannerImage: bannerImage, socials: {"twitter" : MetadataViews.ExternalURL("https://twitter.com/FlowVersus")}) - } - - if type == Type() { - return MetadataViews.NFTCollectionData(storagePath: Art.CollectionStoragePath, - publicPath: Art.CollectionPublicPath, - providerPath: /private/versusArtCollection, - publicCollection: Type<&Art.Collection{NonFungibleToken.CollectionPublic, NonFungibleToken.Receiver, MetadataViews.ResolverCollection, Art.CollectionPublic}>(), - publicLinkedType: Type<&Art.Collection{NonFungibleToken.CollectionPublic, NonFungibleToken.Receiver, MetadataViews.ResolverCollection, Art.CollectionPublic}>(), - providerLinkedType: Type<&Art.Collection{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic, NonFungibleToken.Receiver, MetadataViews.ResolverCollection, Art.CollectionPublic}>(), - createEmptyCollectionFunction: fun(): @NonFungibleToken.Collection {return <- Art.createEmptyCollection()} - ) - } - - if type == Type() { - let royalties : [MetadataViews.Royalty] = [] - for royaltyKey in self.royalty.keys { - let value = self.royalty[royaltyKey]! - royalties.append(MetadataViews.Royalty(recepient: value.wallet, cut: value.cut, description: royaltyKey)) - } - return MetadataViews.Royalties(cutInfos: royalties) - } - - if type == Type() { - return MetadataViews.Display(name: self.name, description: self.description, thumbnail: MetadataViews.HTTPFile(url: "https://res.cloudinary.com/dxra4agvf/image/upload/c_fill,w_200/f_auto/maincache".concat(self.cacheKey()))) - } - - if type == Type() { - return MetadataViews.Edition(name:nil, number: self.metadata.edition, max: self.metadata.maxEdition) - } - - return nil - } - - } - - - //Standard NFT collectionPublic interface that can also borrowArt as the correct type - pub resource interface CollectionPublic { - - pub fun deposit(token: @NonFungibleToken.NFT) - pub fun getIDs(): [UInt64] - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT - pub fun borrowArt(id: UInt64): &{Art.Public}? - } - - - pub resource Collection: CollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.CollectionPublic, MetadataViews.ResolverCollection { - // dictionary of NFT conforming tokens - // NFT is a resource type with an `UInt64` ID field - pub var ownedNFTs: @{UInt64: NonFungibleToken.NFT} - - init () { - self.ownedNFTs <- {} - } - - // used after settlement to burn remaining art that was not sold - access(account) fun burnAll() { - for key in self.ownedNFTs.keys{ - log("burning art with key=".concat(key.toString())) - destroy <- self.ownedNFTs.remove(key: key) - } - } - - // withdraw removes an NFT from the collection and moves it to the caller - pub fun withdraw(withdrawID: UInt64): @NonFungibleToken.NFT { - let token <- self.ownedNFTs.remove(key: withdrawID) ?? panic("missing NFT") - - emit Withdraw(id: token.id, from: self.owner?.address) - - return <-token - } - - // deposit takes a NFT and adds it to the collections dictionary - // and adds the ID to the id array - pub fun deposit(token: @NonFungibleToken.NFT) { - let token <- token as! @Art.NFT - - let id: UInt64 = token.id - - // add the new token to the dictionary which removes the old one - let oldToken <- self.ownedNFTs[id] <- token - - emit Deposit(id: id, to: self.owner?.address) - - destroy oldToken - } - - // getIDs returns an array of the IDs that are in the collection - pub fun getIDs(): [UInt64] { - return self.ownedNFTs.keys - } - - // borrowNFT gets a reference to an NFT in the collection - // so that the caller can read its metadata and call its methods - pub fun borrowNFT(id: UInt64): &NonFungibleToken.NFT { - return (&self.ownedNFTs[id] as &NonFungibleToken.NFT?)! - } - - // borrowArt returns a borrowed reference to a Art - // so that the caller can read data and call methods from it. - // - // Parameters: id: The ID of the NFT to get the reference for - // - // Returns: A reference to the NFT - pub fun borrowArt(id: UInt64): &{Art.Public}? { - if self.ownedNFTs[id] != nil { - let ref = (&self.ownedNFTs[id] as auth &NonFungibleToken.NFT?)! - return ref as! &Art.NFT - } else { - return nil - } - } - - pub fun borrowViewResolver(id: UInt64): &AnyResource{MetadataViews.Resolver} { - pre { - self.ownedNFTs[id] != nil : "NFT does not exist" - } - let nft = (&self.ownedNFTs[id] as auth &NonFungibleToken.NFT?)! - return nft as! &Art.NFT - } - - - destroy() { - destroy self.ownedNFTs - } - } - - // public function that anyone can call to create a new empty collection - pub fun createEmptyCollection(): @NonFungibleToken.Collection { - return <- create Collection() - } - - - - pub struct ArtData { - pub let metadata: Art.Metadata - pub let id: UInt64 - pub let cacheKey: String - init(metadata: Art.Metadata, id: UInt64, cacheKey: String) { - self.metadata= metadata - self.id=id - self.cacheKey=cacheKey - } - } - - - - pub fun getContentForArt(address:Address, artId:UInt64) : String? { - - let account=getAccount(address) - if let artCollection= account.getCapability(self.CollectionPublicPath).borrow<&{Art.CollectionPublic}>() { - return artCollection.borrowArt(id: artId)!.content() - } - return nil - } - - // We cannot return the content here since it will be too big to run in a script - pub fun getArt(address:Address) : [ArtData] { - - var artData: [ArtData] = [] - let account=getAccount(address) - - if let artCollection= account.getCapability(self.CollectionPublicPath).borrow<&{Art.CollectionPublic}>() { - for id in artCollection.getIDs() { - var art=artCollection.borrowArt(id: id) - artData.append(ArtData( metadata: art!.metadata, id: id, cacheKey: art!.cacheKey())) - } - } - return artData - } - - //This method can only be called from another contract in the same account. In Versus case it is called from the VersusAdmin that is used to administer the solution - access(account) fun createArtWithContent(name: String, artist:String, artistAddress:Address, description: String, url: String, type: String, royalty: {String: Royalty}, edition: UInt64, maxEdition: UInt64) : @Art.NFT { - var newNFT <- create NFT( - initID: Art.totalSupply, - metadata: Metadata( - name: name, - artist: artist, - artistAddress: artistAddress, - description:description, - type:type, - edition:edition, - maxEdition: maxEdition - ), - contentCapability:nil, - contentId:nil, - url:url, - royalty:royalty - ) - emit Created(id: Art.totalSupply, metadata: newNFT.metadata) - - Art.totalSupply = Art.totalSupply + UInt64(1) - return <- newNFT - } - - //This method can only be called from another contract in the same account. In Versus case it is called from the VersusAdmin that is used to administer the solution - access(account) fun createArtWithPointer(name: String, artist: String, artistAddress:Address, description: String, type: String, contentCapability:Capability<&Content.Collection>, contentId: UInt64, royalty: {String: Royalty}) : @Art.NFT{ - - let metadata=Metadata( name: name, artist: artist, artistAddress: artistAddress, description:description, type:type, edition:1, maxEdition:1) - var newNFT <- create NFT(initID: Art.totalSupply,metadata: metadata, contentCapability:contentCapability, contentId:contentId, url:nil, royalty:royalty) - emit Created(id: Art.totalSupply, metadata: newNFT.metadata) - - Art.totalSupply = Art.totalSupply + UInt64(1) - return <- newNFT - } - - //This method can only be called from another contract in the same account. In Versus case it is called from the VersusAdmin that is used to administer the solution - access(account) fun makeEdition(original: &NFT, edition: UInt64, maxEdition:UInt64) : @Art.NFT { - let metadata=Metadata( name: original.metadata.name, artist:original.metadata.artist, artistAddress:original.metadata.artistAddress, description:original.metadata.description, type:original.metadata.type, edition: edition, maxEdition:maxEdition) - var newNFT <- create NFT(initID: Art.totalSupply, metadata: metadata , contentCapability: original.contentCapability, contentId:original.contentId, url:original.url, royalty:original.royalty) - emit Created(id: Art.totalSupply, metadata: newNFT.metadata) - emit Editioned(id: Art.totalSupply, from: original.id, edition:edition, maxEdition:maxEdition) - - Art.totalSupply = Art.totalSupply + UInt64(1) - return <- newNFT - } - - - init() { - // Initialize the total supply - self.totalSupply = 0 - self.CollectionPublicPath=/public/versusArtCollection - self.CollectionStoragePath=/storage/versusArtCollection - - self.account.save<@NonFungibleToken.Collection>(<- Art.createEmptyCollection(), to: Art.CollectionStoragePath) - self.account.link<&{Art.CollectionPublic}>(Art.CollectionPublicPath, target: Art.CollectionStoragePath) - emit ContractInitialized() - } +access(all) +contract Art: NonFungibleToken{ + + + access(all) + let CollectionStoragePath: StoragePath + + access(all) + let CollectionPublicPath: PublicPath + + access(all) + var totalSupply: UInt64 + + access(all) + event ContractInitialized() + + access(all) + event Created(id: UInt64, metadata: Metadata) + + access(all) + event Editioned(id: UInt64, from: UInt64, edition: UInt64, maxEdition: UInt64) + + //The public interface can show metadata and the content for the Art piece + access(all) + resource interface Public{ + access(all) + let id: UInt64 + + access(all) + let metadata: Metadata + + //these three are added because I think they will be in the standard. Atleast dieter thinks it will be needed + access(all) + let name: String + + access(all) + let description: String + + access(all) + let schema: String? + + access(all) + fun content(): String? + + access(account) + let royalty:{ String: Royalty} + + access(all) + view fun cacheKey(): String + + access(all) + view fun getMetadata(): Metadata + + } + + + + access(all) + struct Metadata{ + access(all) + let name: String + + access(all) + let artist: String + + access(all) + let artistAddress: Address + + access(all) + let description: String + + access(all) + let type: String + + access(all) + let edition: UInt64 + + access(all) + let maxEdition: UInt64 + + init(name: String, artist: String, artistAddress: Address, description: String, type: String, edition: UInt64, maxEdition: UInt64){ + self.name = name + self.artist = artist + self.artistAddress = artistAddress + self.description = description + self.type = type + self.edition = edition + self.maxEdition = maxEdition + } + } + + access(all) + struct Royalty{ + access(all) + let wallet: Capability<&{FungibleToken.Receiver}> + + access(all) + let cut: UFix64 + + /// @param wallet : The wallet to send royalty too + init(wallet: Capability<&{FungibleToken.Receiver}>, cut: UFix64){ + self.wallet = wallet + self.cut = cut + } + } + + access(all) + resource NFT: NonFungibleToken.NFT, Public, ViewResolver.Resolver{ + access(all) + let id: UInt64 + + access(all) + let name: String + + access(all) + let description: String + + access(all) + let schema: String? + + //content can either be embedded in the NFT as and URL or a pointer to a Content collection to be stored onChain + //a pointer will be used for all editions of the same Art when it is editioned + access(all) + let contentCapability: Capability<&Content.Collection>? + + access(all) + let contentId: UInt64? + + access(all) + let url: String? + + access(all) + let metadata: Metadata + + access(account) + let royalty:{ String: Royalty} + + init(initID: UInt64, metadata: Metadata, contentCapability: Capability<&Content.Collection>?, contentId: UInt64?, url: String?, royalty:{ String: Royalty}){ + self.id = initID + self.metadata = metadata + self.contentCapability = contentCapability + self.contentId = contentId + self.url = url + self.royalty = royalty + self.schema = nil + self.name = metadata.name + self.description = metadata.description + } + + access(all) + view fun getMetadata(): Metadata{ + return self.metadata + } + + access(all) + view fun getRoyalty(): {String: Royalty}{ + return self.royalty + } + + access(all) + view fun cacheKey(): String{ + if self.url != nil{ + return self.url! + } + return (self.contentId!).toString() + } + + //return the content for this NFT + access(all) + fun content(): String{ + if self.url != nil{ + return self.url! + } + let contentCollection = (self.contentCapability!).borrow()! + return contentCollection.content(self.contentId!) + } + + access(all) + view fun getViews(): [Type]{ + var views: [Type] = [ + Type(), + Type(), + Type(), + Type(), + Type(), + Type()] + return views + } + + access(all) + view fun resolveView(_ type: Type): AnyStruct?{ + if type == Type(){ + return MetadataViews.ExternalURL("https://www.versus.auction/piece/".concat((self.owner!).address.toString()).concat("/").concat(self.id.toString())) + } + if type == Type(){ + return Art.resolveContractView(resourceType: Type<@NFT>(), viewType: type) + } + if type == Type(){ + return Art.resolveContractView(resourceType: Type<@NFT>(), viewType:type) + } + if type == Type(){ + var royalties: [MetadataViews.Royalty] = [] + for royaltyKey in self.royalty.keys{ + let value = self.royalty[royaltyKey]! + royalties=royalties.concat([MetadataViews.Royalty(receiver: value.wallet, cut: value.cut, description: royaltyKey)]) + } + return MetadataViews.Royalties(royalties) + } + if type == Type(){ + return MetadataViews.Display(name: self.name, description: self.description, thumbnail: MetadataViews.HTTPFile(url: "https://res.cloudinary.com/dxra4agvf/image/upload/c_fill,w_200/f_auto/maincache".concat(self.cacheKey()))) + } + if type == Type(){ + return MetadataViews.Edition(name: nil, number: self.metadata.edition, max: self.metadata.maxEdition) + } + return nil + } + + access(all) + fun createEmptyCollection(): @{NonFungibleToken.Collection}{ + return <-create Collection() + } + } + + //Standard NFT collectionPublic interface that can also borrowArt as the correct type + access(all) + resource interface CollectionPublic{ + access(all) + fun deposit(token: @{NonFungibleToken.NFT}) + + access(all) + fun getIDs(): [UInt64] + + access(all) + view fun borrowNFT(_ id: UInt64): &{NonFungibleToken.NFT}? + + access(all) + fun borrowArt(id: UInt64): &{Art.Public}? + } + + access(all) + resource Collection: CollectionPublic, NonFungibleToken.Provider, NonFungibleToken.Receiver, NonFungibleToken.Collection, NonFungibleToken.CollectionPublic, ViewResolver.ResolverCollection{ + // dictionary of NFT conforming tokens + // NFT is a resource type with an `UInt64` ID field + access(all) + var ownedNFTs: @{UInt64:{NonFungibleToken.NFT}} + + init(){ + self.ownedNFTs <-{} + } + + // used after settlement to burn remaining art that was not sold + access(account) + fun burnAll(){ + for key in self.ownedNFTs.keys{ + log("burning art with key=".concat(key.toString())) + destroy <-self.ownedNFTs.remove(key: key) + } + } + + // withdraw removes an NFT from the collection and moves it to the caller + access(NonFungibleToken.Withdraw) + fun withdraw(withdrawID: UInt64): @{NonFungibleToken.NFT}{ + let token <- self.ownedNFTs.remove(key: withdrawID) ?? panic("missing NFT") + return <-token + } + + // deposit takes a NFT and adds it to the collections dictionary + // and adds the ID to the id array + access(all) + fun deposit(token: @{NonFungibleToken.NFT}){ + let token <- token as! @Art.NFT + let id: UInt64 = token.id + + // add the new token to the dictionary which removes the old one + let oldToken <- self.ownedNFTs[id] <- token + destroy oldToken + } + + // getIDs returns an array of the IDs that are in the collection + access(all) + view fun getIDs(): [UInt64]{ + return self.ownedNFTs.keys + } + + // borrowNFT gets a reference to an NFT in the collection + // so that the caller can read its metadata and call its methods + access(all) + view fun borrowNFT(_ id: UInt64): &{NonFungibleToken.NFT}?{ + return &self.ownedNFTs[id] + } + + // borrowArt returns a borrowed reference to a Art + // so that the caller can read data and call methods from it. + // + // Parameters: id: The ID of the NFT to get the reference for + // + // Returns: A reference to the NFT + access(all) + fun borrowArt(id: UInt64): &{Art.Public}? { + + if self.ownedNFTs[id] != nil{ + let ref = (&self.ownedNFTs[id] as &{NonFungibleToken.NFT}?)! + return ref as! &Art.NFT + } else{ + return nil + } + } + + access(all) + view fun borrowViewResolver(id: UInt64): &{ViewResolver.Resolver}?{ + pre{ + self.ownedNFTs[id] != nil: + "NFT does not exist" + } + + return &self.ownedNFTs[id] + } + + access(all) + fun createEmptyCollection(): @{NonFungibleToken.Collection}{ + return <-create Collection() + } + + + access(all) view fun getIDsWithTypes(): {Type: [UInt64]} { + return { Type<@NFT>() : self.ownedNFTs.keys} + } + + access(all) view fun getSupportedNFTTypes(): {Type: Bool} { + return { Type<@NFT>() : true} + } + + access(all) view fun getLength() : Int { + return self.ownedNFTs.length + } + + access(all) view fun isSupportedNFTType(type: Type) : Bool { + return type == Type<@NFT>() + } + + + } + + // public function that anyone can call to create a new empty collection + access(all) + fun createEmptyCollection(nftType: Type): @{NonFungibleToken.Collection}{ + return <-create Collection() + } + + access(all) + struct ArtData{ + access(all) + let metadata: Art.Metadata + + access(all) + let id: UInt64 + + access(all) + let cacheKey: String + + init(metadata: Art.Metadata, id: UInt64, cacheKey: String){ + self.metadata = metadata + self.id = id + self.cacheKey = cacheKey + } + } + + access(all) + fun getContentForArt(address: Address, artId: UInt64): String?{ + let account = getAccount(address) + if let artCollection = account.capabilities.borrow<&{Art.CollectionPublic}>(self.CollectionPublicPath) { + return (artCollection.borrowArt(id: artId)!).content() + } + return nil + } + + // We cannot return the content here since it will be too big to run in a script + access(all) + fun getArt(address: Address): [ArtData]{ + var artData: [ArtData] = [] + let account = getAccount(address) + if let artCollection = account.capabilities.borrow<&{Art.CollectionPublic}>(self.CollectionPublicPath){ + for id in artCollection.getIDs(){ + var art = artCollection.borrowArt(id: id)! + artData.append(ArtData(metadata: art.getMetadata(), id: id, cacheKey: art.cacheKey())) + } + } + return artData + } + + //This method can only be called from another contract in the same account. In Versus case it is called from the VersusAdmin that is used to administer the solution + access(account) + fun createArtWithContent(name: String, artist: String, artistAddress: Address, description: String, url: String, type: String, royalty:{ String: Royalty}, edition: UInt64, maxEdition: UInt64): @Art.NFT{ + var newNFT <- create NFT(initID: Art.totalSupply, metadata: Metadata(name: name, artist: artist, artistAddress: artistAddress, description: description, type: type, edition: edition, maxEdition: maxEdition), contentCapability: nil, contentId: nil, url: url, royalty: royalty) + emit Created(id: Art.totalSupply, metadata: newNFT.metadata) + Art.totalSupply = Art.totalSupply + 1 + return <-newNFT + } + + //This method can only be called from another contract in the same account. In Versus case it is called from the VersusAdmin that is used to administer the solution + access(account) + fun createArtWithPointer(name: String, artist: String, artistAddress: Address, description: String, type: String, contentCapability: Capability<&Content.Collection>, contentId: UInt64, royalty:{ String: Royalty}): @Art.NFT{ + let metadata = Metadata(name: name, artist: artist, artistAddress: artistAddress, description: description, type: type, edition: 1, maxEdition: 1) + var newNFT <- create NFT(initID: Art.totalSupply, metadata: metadata, contentCapability: contentCapability, contentId: contentId, url: nil, royalty: royalty) + emit Created(id: Art.totalSupply, metadata: newNFT.metadata) + Art.totalSupply = Art.totalSupply + 1 + return <-newNFT + } + + //This method can only be called from another contract in the same account. In Versus case it is called from the VersusAdmin that is used to administer the solution + access(account) + fun makeEdition(original: &NFT, edition: UInt64, maxEdition: UInt64): @Art.NFT{ + let metadata = Metadata(name: original.metadata.name, artist: original.metadata.artist, artistAddress: original.metadata.artistAddress, description: original.metadata.description, type: original.metadata.type, edition: edition, maxEdition: maxEdition) + var newNFT <- create NFT(initID: Art.totalSupply, metadata: metadata, contentCapability: original.contentCapability, contentId: original.contentId, url: original.url, royalty: original.getRoyalty()) + emit Created(id: Art.totalSupply, metadata: newNFT.metadata) + emit Editioned(id: Art.totalSupply, from: original.id, edition: edition, maxEdition: maxEdition) + Art.totalSupply = Art.totalSupply + 1 + return <-newNFT + } + + access(all) view fun getContractViews(resourceType: Type?): [Type] { + return [ + Type(), + Type() + ] + } + + access(all) view fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? { + switch viewType { + case Type(): + let collectionData= MetadataViews.NFTCollectionData( + storagePath: Art.CollectionStoragePath, + publicPath: Art.CollectionPublicPath, + publicCollection: Type<&Art.Collection>(), + publicLinkedType: Type<&Art.Collection>(), + createEmptyCollectionFunction: fun (): @{NonFungibleToken.Collection}{ + return <-Art.createEmptyCollection(nftType: Type<@Collection>()) + } + ) + return collectionData + case Type(): + let externalURL = MetadataViews.ExternalURL("https://versus.auction") + let squareImage = MetadataViews.Media(file: MetadataViews.HTTPFile(url: "https://pbs.twimg.com/profile_images/1295757455679528963/ibkAIRww_400x400.jpg"), mediaType: "image/jpeg") + let bannerImage = MetadataViews.Media(file: MetadataViews.HTTPFile(url: "https://pbs.twimg.com/profile_images/1295757455679528963/ibkAIRww_400x400.jpg"), mediaType: "image/jpeg") + return MetadataViews.NFTCollectionDisplay(name: "Versus", description: "Curated auction house for fine art", externalURL: externalURL, squareImage: squareImage, bannerImage: bannerImage, socials:{ "twitter": MetadataViews.ExternalURL("https://twitter.com/FlowVersus")}) + + } + return nil + } + + + init(){ + // Initialize the total supply + self.totalSupply = 0 + self.CollectionPublicPath = /public/versusArtCollection + self.CollectionStoragePath = /storage/versusArtCollection + self.account.storage.save<@{NonFungibleToken.Collection}>(<-Art.createEmptyCollection(nftType: Type<@Collection>()), to: Art.CollectionStoragePath) + var _capForLinked1 = self.account.capabilities.storage.issue<&{Art.CollectionPublic}>(Art.CollectionStoragePath) + self.account.capabilities.publish(_capForLinked1, at: Art.CollectionPublicPath) + emit ContractInitialized() + } } diff --git a/contracts/thirdparty/versus/Content.cdc b/contracts/thirdparty/versus/Content.cdc index 6464fad..034ad6d 100644 --- a/contracts/thirdparty/versus/Content.cdc +++ b/contracts/thirdparty/versus/Content.cdc @@ -1,101 +1,111 @@ - -pub contract Content { - - pub var totalSupply: UInt64 - - pub let CollectionStoragePath: StoragePath - pub let CollectionPrivatePath: PrivatePath - - pub event ContractInitialized() - pub event Withdraw(id: UInt64, from: Address?) - pub event Deposit(id: UInt64, to: Address?) - pub event Created(id: UInt64) - - pub resource Blob { - pub let id: UInt64 - - access(contract) var content: String - - init(initID: UInt64, content: String) { - self.id = initID - self.content=content - } - } - - //return the content for this NFT - pub resource interface PublicContent { - pub fun content(_ id: UInt64): String? - } - - pub resource Collection: PublicContent { - pub var contents: @{UInt64: Blob} - - init () { - self.contents <- {} - } - - // withdraw removes an NFT from the collection and moves it to the caller - pub fun withdraw(withdrawID: UInt64): @Blob { - let token <- self.contents.remove(key: withdrawID) ?? panic("missing content") - - emit Withdraw(id: token.id, from: self.owner?.address) - - return <-token - } - - // deposit takes a NFT and adds it to the collections dictionary - // and adds the ID to the id array - pub fun deposit(token: @Blob) { - - let id: UInt64 = token.id - - // add the new token to the dictionary which removes the old one - let oldToken <- self.contents[id] <- token - - emit Deposit(id: id, to: self.owner?.address) - - destroy oldToken - } - - // getIDs returns an array of the IDs that are in the collection - pub fun getIDs(): [UInt64] { - return self.contents.keys - } - - pub fun content(_ id: UInt64) : String { - return self.contents[id]?.content ?? panic("Content blob does not exist") - } - - destroy() { - destroy self.contents - } - } - - access(account) fun createEmptyCollection(): @Content.Collection { - return <- create Collection() - } - - - access(account) fun createContent(_ content: String) : @Content.Blob { - - var newNFT <- create Blob(initID: Content.totalSupply, content:content) - emit Created(id: Content.totalSupply) - - Content.totalSupply = Content.totalSupply + UInt64(1) - return <- newNFT - } - - init() { - // Initialize the total supply - self.totalSupply = 0 - self.CollectionPrivatePath=/private/versusContentCollection - self.CollectionStoragePath=/storage/versusContentCollection - - let account =self.account - account.save(<- Content.createEmptyCollection(), to: Content.CollectionStoragePath) - account.link<&Content.Collection>(Content.CollectionPrivatePath, target: Content.CollectionStoragePath) - - emit ContractInitialized() - } +access(all) +contract Content{ + + access(all) entitlement Owner + + access(all) + var totalSupply: UInt64 + + access(all) + let CollectionStoragePath: StoragePath + + access(all) + let CollectionPrivatePath: PrivatePath + + access(all) + event ContractInitialized() + + access(all) + event Withdraw(id: UInt64, from: Address?) + + access(all) + event Deposit(id: UInt64, to: Address?) + + access(all) + event Created(id: UInt64) + + access(all) + resource Blob{ + access(all) + let id: UInt64 + + access(contract) + var content: String + + init(initID: UInt64, content: String){ + self.id = initID + self.content = content + } + } + + //return the content for this NFT + access(all) + resource interface PublicContent{ + access(all) + fun content(_ id: UInt64): String? + } + + access(all) + resource Collection: PublicContent{ + access(all) + var contents: @{UInt64: Blob} + + init(){ + self.contents <-{} + } + + // withdraw removes an NFT from the collection and moves it to the caller + access(Owner) + fun withdraw(withdrawID: UInt64): @Blob{ + let token <- self.contents.remove(key: withdrawID) ?? panic("missing content") + emit Withdraw(id: token.id, from: self.owner?.address) + return <-token + } + + // deposit takes a NFT and adds it to the collections dictionary + // and adds the ID to the id array + access(all) + fun deposit(token: @Blob){ + let id: UInt64 = token.id + + // add the new token to the dictionary which removes the old one + let oldToken <- self.contents[id] <- token + emit Deposit(id: id, to: self.owner?.address) + destroy oldToken + } + + // getIDs returns an array of the IDs that are in the collection + access(all) + fun getIDs(): [UInt64]{ + return self.contents.keys + } + + access(all) + fun content(_ id: UInt64): String{ + return self.contents[id]?.content ?? panic("Content blob does not exist") + } + } + + access(account) + fun createEmptyCollection(): @Content.Collection{ + return <-create Collection() + } + + access(account) + fun createContent(_ content: String): @Content.Blob{ + var newNFT <- create Blob(initID: Content.totalSupply, content: content) + emit Created(id: Content.totalSupply) + Content.totalSupply = Content.totalSupply + 1 + return <-newNFT + } + + init(){ + // Initialize the total supply + self.totalSupply = 0 + self.CollectionPrivatePath = /private/versusContentCollection + self.CollectionStoragePath = /storage/versusContentCollection + let account = self.account + account.storage.save(<-Content.createEmptyCollection(), to: Content.CollectionStoragePath) + emit ContractInitialized() + } } - diff --git a/flow.json b/flow.json index 197bffc..9d1bc1a 100644 --- a/flow.json +++ b/flow.json @@ -1,165 +1,197 @@ { - "emulators": { - "default": { - "port": 3569, - "serviceAccount": "emulator-account" - } - }, - "contracts": { - "FungibleToken": { - "source": "./contracts/standard/FungibleToken.cdc", - "aliases": { - "emulator": "0xee82856bf20e2aa6", - "testnet": "0x9a0766d93b6608b7", - "mainnet": "0xf233dcee88fe0abe" - } - }, - "FlowToken": { - "source": "./contracts/standard/FlowToken.cdc", - "aliases": { - "emulator": "0x0ae53cb6e3f42a79", - "testnet": "0x7e60df042a9c0868", - "mainnet": "0x1654653399040a61" - } - }, - "NonFungibleToken": { - "source": "./contracts/standard/NonFungibleToken.cdc", - "aliases": { - "testnet": "0x631e88ae7f1d7c20", - "mainnet": "0x1d7e57aa55817448" - } - }, - "FUSD": { - "source": "./contracts/standard/FUSD.cdc", - "aliases": { - "testnet": "0xe223d8a629e49c68", - "mainnet": "0x3c5959b568896393" - } - }, - "NFTStorefront": { - "source": "./contracts/standard/NFTStorefront.cdc", - "aliases": { - "testnet": "0x94b06cfca1d8a476", - "mainnet": "0x4eb8a10cb9f87357" - } - }, - "MetadataViews": { - "source": "./contracts/standard/MetadataViews.cdc", - "aliases": { - "testnet": "0x631e88ae7f1d7c20", - "mainnet": "0x1d7e57aa55817448" - } - }, - "FungibleTokenSwitchboard": { - "source": "./contracts/standard/FungibleTokenSwitchboard.cdc", - "aliases": { - "testnet": "0x745b085dafdd4fc0", - "mainnet": "0x3cb7ceeb625a600a" - } - }, - "NFTCatalog": { - "source": "./contracts/thirdparty/nft_catalog/NFTCatalog.cdc", - "aliases": { - "mainnet": "0x49a7cda3a1eecc29", - "testnet": "0x324c34e1c517e4db" - } - }, - "NFTRetrieval": { - "source": "./contracts/thirdparty/nft_catalog/NFTRetrieval.cdc", - "aliases": { - "mainnet": "0x49a7cda3a1eecc29", - "testnet": "0x324c34e1c517e4db" - } - }, - "Art": { - "source": "./contracts/thirdparty/versus/Art.cdc", - "aliases": { - "mainnet": "0xd796ff17107bbff6", - "testnet": "0x99ca04281098b33d" - } - }, - "Content": { - "source": "./contracts/thirdparty/versus/Content.cdc", - "aliases": { - "mainnet": "0xd796ff17107bbff6", - "testnet": "0x99ca04281098b33d" - } - }, - "Evergreen": { - "source": "./contracts/Evergreen.cdc", - "aliases": { - "testnet": "0x745b085dafdd4fc0", - "mainnet": "0x3cb7ceeb625a600a" - } - }, - "DigitalArt": { - "source": "./contracts/DigitalArt.cdc", - "aliases": { - "testnet": "0x745b085dafdd4fc0", - "mainnet": "0x3cb7ceeb625a600a" - } - }, - "SequelMarketplace": { - "source": "./contracts/SequelMarketplace.cdc", - "aliases": { - "testnet": "0x745b085dafdd4fc0", - "mainnet": "0x3cb7ceeb625a600a" - } - } - }, - "networks": { - "emulator": "127.0.0.1:3569", - "mainnet": "access.mainnet.nodes.onflow.org:9000", - "testnet": "access.devnet.nodes.onflow.org:9000" - }, - "accounts": { - "emulator-account": { - "address": "0xf8d6e0586b0a20c7", - "key": "7cc3a167907702780552edebe976d4ad85213d7fd214e7fbc89b587043ec117b" - }, - "emulator-sequel-admin": { - "address": "0x01cf0e2f2f715450", - "key": "bc85264399410a518dc97149f9589883c0f8472dab8fb4d7abc80d7bb6b28447" - }, - "emulator-sequel-platform": { - "address": "0x179b6b1cb6755e31", - "key": "c70856e54b2b25888ac13ad975ba652d0c95108d60d7df5754fc0649616975de" - }, - "emulator-user1": { - "address": "0xf3fcd2c1a78f5eee", - "key": "80025f0d1f2fd1ba0e18f447681fdd6a68a62ea86c2c2fefa811df086d40db3c" - }, - "emulator-user2": { - "address": "0xe03daebed8ca0615", - "key": "76e26282dafb246d58778187d37d72efade3679c06ba423855388acdf8bb1e3d" - }, - "emulator-user3": { - "address": "0x045a1763c93006ca", - "key": "1c6f9682cc8e70128e356f95d13f41d2fc6c9493397b69e0ff0b1f6f2f0ec02b" - } - }, - "deployments": { - "emulator": { - "emulator-account": [ - "MetadataViews", - "NonFungibleToken", - "FUSD", - "NFTStorefront", - "NFTCatalog", - "NFTRetrieval", - "Art", - "Content" - ], - "emulator-sequel-admin": [ - "FungibleTokenSwitchboard", - "Evergreen", - "DigitalArt", - "SequelMarketplace" - ], - "emulator-sequel-platform": [], - "emulator-user1": [], - "emulator-user2": [], - "emulator-user3": [] - } - } + "contracts": { + "Art": { + "source": "./contracts/thirdparty/versus/Art.cdc", + "aliases": { + "mainnet": "d796ff17107bbff6", + "testnet": "99ca04281098b33d" + } + }, + "Burner": { + "source": "./contracts/standard/Burner.cdc", + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "testing": "0000000000000007", + "testnet": "9a0766d93b6608b7" + } + }, + "Content": { + "source": "./contracts/thirdparty/versus/Content.cdc", + "aliases": { + "mainnet": "d796ff17107bbff6", + "testnet": "99ca04281098b33d" + } + }, + "DigitalArt": { + "source": "./contracts/DigitalArt.cdc", + "aliases": { + "mainnet": "3cb7ceeb625a600a", + "testnet": "745b085dafdd4fc0" + } + }, + "Evergreen": { + "source": "./contracts/Evergreen.cdc", + "aliases": { + "mainnet": "3cb7ceeb625a600a", + "testnet": "745b085dafdd4fc0" + } + }, + "FUSD": { + "source": "./contracts/standard/FUSD.cdc", + "aliases": { + "mainnet": "3c5959b568896393", + "testnet": "e223d8a629e49c68" + } + }, + "FlowToken": { + "source": "./contracts/standard/FlowToken.cdc", + "aliases": { + "emulator": "0ae53cb6e3f42a79", + "mainnet": "1654653399040a61", + "testing": "0000000000000003", + "testnet": "7e60df042a9c0868" + } + }, + "FungibleToken": { + "source": "./contracts/standard/FungibleToken.cdc", + "aliases": { + "emulator": "ee82856bf20e2aa6", + "mainnet": "f233dcee88fe0abe", + "testing": "0000000000000007", + "testnet": "9a0766d93b6608b7" + } + }, + "FungibleTokenMetadataViews": { + "source": "./contracts/standard/FungibleTokenMetadataViews.cdc", + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "f233dcee88fe0abe", + "testing": "0000000000000007", + "testnet": "9a0766d93b6608b7" + } + }, + "FungibleTokenSwitchboard": { + "source": "./contracts/standard/FungibleTokenSwitchboard.cdc", + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "f233dcee88fe0abe", + "testing": "0000000000000007", + "testnet": "9a0766d93b6608b7" + } + }, + "MetadataViews": { + "source": "./contracts/standard/MetadataViews.cdc", + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1d7e57aa55817448", + "testing": "0000000000000001", + "testnet": "631e88ae7f1d7c20" + } + }, + "NFTCatalog": { + "source": "./contracts/thirdparty/nft_catalog/NFTCatalog.cdc", + "aliases": { + "mainnet": "49a7cda3a1eecc29", + "testnet": "324c34e1c517e4db" + } + }, + "NFTRetrieval": { + "source": "./contracts/thirdparty/nft_catalog/NFTRetrieval.cdc", + "aliases": { + "mainnet": "49a7cda3a1eecc29", + "testnet": "324c34e1c517e4db" + } + }, + "NFTStorefront": { + "source": "./contracts/standard/NFTStorefront.cdc", + "aliases": { + "mainnet": "4eb8a10cb9f87357", + "testnet": "94b06cfca1d8a476" + } + }, + "NonFungibleToken": { + "source": "./contracts/standard/NonFungibleToken.cdc", + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1d7e57aa55817448", + "testing": "0000000000000001", + "testnet": "631e88ae7f1d7c20" + } + }, + "SequelMarketplace": { + "source": "./contracts/SequelMarketplace.cdc", + "aliases": { + "mainnet": "3cb7ceeb625a600a", + "testnet": "745b085dafdd4fc0" + } + }, + "ViewResolver": { + "source": "./contracts/standard/ViewResolver.cdc", + "aliases": { + "emulator": "f8d6e0586b0a20c7", + "mainnet": "1d7e57aa55817448", + "testing": "0000000000000001", + "testnet": "631e88ae7f1d7c20" + } + } + }, + "networks": { + "emulator": "127.0.0.1:3569", + "mainnet": "access.mainnet.nodes.onflow.org:9000", + "testing": "127.0.0.1:3569", + "testnet": "access.devnet.nodes.onflow.org:9000" + }, + "accounts": { + "emulator-account": { + "address": "f8d6e0586b0a20c7", + "key": "7cc3a167907702780552edebe976d4ad85213d7fd214e7fbc89b587043ec117b" + }, + "emulator-sequel-admin": { + "address": "179b6b1cb6755e31", + "key": "c70856e54b2b25888ac13ad975ba652d0c95108d60d7df5754fc0649616975de" + }, + "emulator-sequel-platform": { + "address": "f3fcd2c1a78f5eee", + "key": "80025f0d1f2fd1ba0e18f447681fdd6a68a62ea86c2c2fefa811df086d40db3c" + }, + "emulator-user1": { + "address": "e03daebed8ca0615", + "key": "76e26282dafb246d58778187d37d72efade3679c06ba423855388acdf8bb1e3d" + }, + "emulator-user2": { + "address": "045a1763c93006ca", + "key": "1c6f9682cc8e70128e356f95d13f41d2fc6c9493397b69e0ff0b1f6f2f0ec02b" + }, + "emulator-user3": { + "address": "120e725050340cab", + "key": "93b14b35e2bd2e3d96d0deac56b8199b8a02dedef52c295d1d61c22f494de81b" + } + }, + "deployments": { + "emulator": { + "emulator-account": [ + "Burner", + "ViewResolver", + "MetadataViews", + "NonFungibleToken", + "FungibleTokenMetadataViews", + "FUSD", + "NFTStorefront", + "NFTCatalog", + "NFTRetrieval", + "Art", + "Content" + ], + "emulator-sequel-admin": [ + "FungibleTokenSwitchboard", + "Evergreen", + "DigitalArt", + "SequelMarketplace" + ], + "emulator-sequel-platform": [], + "emulator-user1": [], + "emulator-user2": [], + "emulator-user3": [] + } + } } diff --git a/lib/go/iinft/client.go b/lib/go/iinft/client.go index b9a3e98..9036cc3 100644 --- a/lib/go/iinft/client.go +++ b/lib/go/iinft/client.go @@ -5,12 +5,11 @@ import ( "os" "path" - "github.com/onflow/flow-cli/pkg/flowkit" - "github.com/onflow/flow-cli/pkg/flowkit/gateway" - "github.com/onflow/flow-cli/pkg/flowkit/services" - "github.com/piprate/sequel-flow-contracts/lib/go/iinft/emulator" + "github.com/onflow/flow-emulator/emulator" + "github.com/onflow/flowkit/v2" + "github.com/onflow/flowkit/v2/config" + "github.com/onflow/flowkit/v2/gateway" "github.com/piprate/sequel-flow-contracts/lib/go/iinft/gwtf" - "github.com/rs/zerolog/log" "github.com/spf13/afero" ) @@ -25,12 +24,19 @@ var _ flowkit.ReaderWriter = (*fileLoader)(nil) func (f *fileLoader) ReadFile(source string) ([]byte, error) { source = path.Join(f.baseDir, source) - log.Info().Str("filepath", source).Msg("Loading file") return f.fsLoader.ReadFile(source) } func (f *fileLoader) WriteFile(filename string, data []byte, perm os.FileMode) error { - return errors.New("file writing not allowed for FlowKit") + return errors.New("file writing not allowed in fileLoader") +} + +func (f *fileLoader) MkdirAll(path string, perm os.FileMode) error { + return errors.New("directory creation not allowed in fileLoader") +} + +func (f *fileLoader) Stat(path string) (os.FileInfo, error) { + return nil, errors.New("operation Stat not supported in fileLoader") } // NewGoWithTheFlowFS creates a new local go with the flow client @@ -54,33 +60,41 @@ func NewGoWithTheFlowError(baseLoader flowkit.ReaderWriter, network string, inMe } logger := NewFlowKitLogger() - var service *services.Services + var service *flowkit.Flowkit + if inMemory { // YAY, we can run it inline in memory! acc, _ := state.EmulatorServiceAccount() - var gw *emulator.Gateway + pk, _ := acc.Key.PrivateKey() + var gw *gateway.EmulatorGateway if enableTxFees { - gw = emulator.NewGatewayWithOpts(acc, emulator.WithTransactionFees()) + gw = gateway.NewEmulatorGatewayWithOpts(&gateway.EmulatorKey{ + PublicKey: (*pk).PublicKey(), + SigAlgo: acc.Key.SigAlgo(), + HashAlgo: acc.Key.HashAlgo(), + }, gateway.WithEmulatorOptions(emulator.WithTransactionFeesEnabled(true))) } else { - gw = emulator.NewGatewayWithOpts(acc) + gw = gateway.NewEmulatorGateway(&gateway.EmulatorKey{ + PublicKey: (*pk).PublicKey(), + SigAlgo: acc.Key.SigAlgo(), + HashAlgo: acc.Key.HashAlgo(), + }) } - service = services.NewServices(gw, state, logger) + service = flowkit.NewFlowkit(state, config.EmulatorNetwork, gw, logger) } else { - network, err := state.Networks().ByName(network) + networkDef, err := state.Networks().ByName(network) if err != nil { return nil, err } - host := network.Host - gw, err := gateway.NewGrpcGateway(host) + gw, err := gateway.NewGrpcGateway(*networkDef) if err != nil { return nil, err } - service = services.NewServices(gw, state, logger) + service = flowkit.NewFlowkit(state, *networkDef, gw, logger) } return &gwtf.GoWithTheFlow{ State: state, Services: service, - Network: network, Logger: logger, PrependNetworkToAccountNames: true, }, nil diff --git a/lib/go/iinft/client_test.go b/lib/go/iinft/client_test.go index 0635e83..6bc90b2 100644 --- a/lib/go/iinft/client_test.go +++ b/lib/go/iinft/client_test.go @@ -1,6 +1,7 @@ package iinft import ( + "context" "os" "testing" "time" @@ -18,10 +19,12 @@ func TestNewGoWithTheFlowFS(t *testing.T) { client, err := NewGoWithTheFlowFS("../../..", "emulator", true, false) require.NoError(t, err) - _, err = client.CreateAccountsE("emulator-account") + ctx := context.Background() + + _, err = client.CreateAccountsE(ctx, "emulator-account") require.NoError(t, err) - err = client.InitializeContractsE() + err = client.InitializeContractsE(ctx) require.NoError(t, err) } @@ -29,10 +32,12 @@ func TestNewGoWithTheFlowEmbedded(t *testing.T) { client, err := NewGoWithTheFlowEmbedded("emulator", true, false) require.NoError(t, err) - _, err = client.CreateAccountsE("emulator-account") + ctx := context.Background() + + _, err = client.CreateAccountsE(ctx, "emulator-account") require.NoError(t, err) - err = client.InitializeContractsE() + err = client.InitializeContractsE(ctx) require.NoError(t, err) } @@ -40,6 +45,8 @@ func TestNewGoWithTheFlowEmbedded_WithTxFees(t *testing.T) { client, err := NewGoWithTheFlowEmbedded("emulator", true, true) require.NoError(t, err) - _, err = client.DoNotPrependNetworkToAccountNames().CreateAccountsE("emulator-account") + ctx := context.Background() + + _, err = client.DoNotPrependNetworkToAccountNames().CreateAccountsE(ctx, "emulator-account") require.NoError(t, err) } diff --git a/lib/go/iinft/cmd/flocal/main.go b/lib/go/iinft/cmd/flocal/main.go index 4f45660..9fcd1a6 100644 --- a/lib/go/iinft/cmd/flocal/main.go +++ b/lib/go/iinft/cmd/flocal/main.go @@ -6,6 +6,7 @@ package main */ import ( + "context" "flag" "os" "time" @@ -32,10 +33,10 @@ func main() { os.Exit(-1) } - client.CreateAccounts("emulator-account") + client.CreateAccounts(context.Background(), "emulator-account") adminAcct := client.Account(sequelAdminName) - if err = scripts.FundAccountWithFlowE(client, adminAcct.Address(), amount); err != nil { + if err = scripts.FundAccountWithFlowE(client, adminAcct.Address, amount); err != nil { panic(err) } } diff --git a/lib/go/iinft/config.go b/lib/go/iinft/config.go index a59cd4a..9b84d8a 100644 --- a/lib/go/iinft/config.go +++ b/lib/go/iinft/config.go @@ -1,22 +1,22 @@ package iinft import ( - "github.com/onflow/flow-cli/pkg/flowkit" "github.com/onflow/flow-go-sdk" "github.com/onflow/flow-go-sdk/crypto" + "github.com/onflow/flowkit/v2/accounts" ) -func LoadFlowKitAccount(addrStr, keyStr string) (flowkit.Account, error) { - acct := flowkit.Account{} +func LoadFlowKitAccount(addrStr, keyStr string) (accounts.Account, error) { + acct := accounts.Account{} key, err := crypto.DecodePrivateKeyHex(crypto.ECDSA_P256, keyStr) if err != nil { return acct, err } - acct.SetName("Sequel") - acct.SetAddress(flow.HexToAddress(addrStr)) - acct.SetKey(flowkit.NewHexAccountKeyFromPrivateKey(0, crypto.SHA3_256, key)) + acct.Name = "Sequel" + acct.Address = flow.HexToAddress(addrStr) + acct.Key = accounts.NewHexKeyFromPrivateKey(0, crypto.SHA3_256, key) return acct, nil } diff --git a/lib/go/iinft/embedded.go b/lib/go/iinft/embedded.go index 097b4f6..9b1a5c4 100644 --- a/lib/go/iinft/embedded.go +++ b/lib/go/iinft/embedded.go @@ -4,9 +4,8 @@ import ( "errors" "os" - "github.com/onflow/flow-cli/pkg/flowkit" + "github.com/onflow/flowkit/v2" "github.com/piprate/sequel-flow-contracts/lib/go/iinft/internal/assets" - "github.com/rs/zerolog/log" ) //go:generate go run github.com/kevinburke/go-bindata/go-bindata -prefix ../../.. -o internal/assets/assets.go -pkg assets -nometadata -nomemcopy ../../../contracts/... ../../../flow.json @@ -19,10 +18,17 @@ type ( var _ flowkit.ReaderWriter = (*embeddedFileLoader)(nil) func (f *embeddedFileLoader) ReadFile(source string) ([]byte, error) { - log.Info().Str("filepath", source).Msg("Loading embedded file") return assets.Asset(source) } func (f *embeddedFileLoader) WriteFile(filename string, data []byte, perm os.FileMode) error { - return errors.New("file writing not allowed for FlowKit") + return errors.New("operation WriteFile not allowed in embeddedFileLoader") +} + +func (f *embeddedFileLoader) MkdirAll(path string, perm os.FileMode) error { + return errors.New("operation MkdirAll not allowed in embeddedFileLoader") +} + +func (f *embeddedFileLoader) Stat(path string) (os.FileInfo, error) { + return nil, errors.New("operation Stat not allowed in embeddedFileLoader") } diff --git a/lib/go/iinft/emulator/gateway.go b/lib/go/iinft/emulator/gateway.go deleted file mode 100644 index b9a1a59..0000000 --- a/lib/go/iinft/emulator/gateway.go +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Flow CLI - * - * Copyright 2019 Dapper Labs, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package emulator - -import ( - "context" - "fmt" - - "github.com/onflow/cadence" - jsoncdc "github.com/onflow/cadence/encoding/json" - emulator "github.com/onflow/flow-emulator" - "github.com/onflow/flow-emulator/convert/sdk" - "google.golang.org/grpc/status" - - "github.com/onflow/flow-emulator/server/backend" - "github.com/onflow/flow-go-sdk" - flowGo "github.com/onflow/flow-go/model/flow" - "github.com/sirupsen/logrus" - - "github.com/onflow/flow-cli/pkg/flowkit" - "github.com/onflow/flow-cli/pkg/flowkit/config" -) - -/* -Gateway is a copy of github.com/onflow/flow-cli/pkg/flowkit/gateway/EmulatorGateway -with an added option to enable transaction fees -*/ -type Gateway struct { - emulator *emulator.Blockchain - backend *backend.Backend - ctx context.Context - logger *logrus.Logger - enableTxFees bool -} - -func UnwrapStatusError(err error) error { - return fmt.Errorf(status.Convert(err).Message()) -} - -func NewGateway(serviceAccount *flowkit.Account) *Gateway { - return NewGatewayWithOpts(serviceAccount) -} - -func NewGatewayWithOpts(serviceAccount *flowkit.Account, opts ...func(*Gateway)) *Gateway { - - logger := logrus.New() - logger.SetLevel(logrus.ErrorLevel) - - gateway := &Gateway{ - ctx: context.Background(), - logger: logger, - } - for _, opt := range opts { - opt(gateway) - } - gateway.emulator = newEmulator(serviceAccount, gateway.enableTxFees) - gateway.backend = backend.New(gateway.logger, gateway.emulator) - gateway.backend.EnableAutoMine() - - return gateway -} - -func WithLogger(logger *logrus.Logger) func(g *Gateway) { - return func(g *Gateway) { - g.logger = logger - } -} - -func WithContext(ctx context.Context) func(g *Gateway) { - return func(g *Gateway) { - g.ctx = ctx - } -} - -func WithTransactionFees() func(g *Gateway) { - return func(g *Gateway) { - g.enableTxFees = true - } -} - -func (g *Gateway) SetContext(ctx context.Context) { - g.ctx = ctx -} - -func newEmulator(serviceAccount *flowkit.Account, enableTxFees bool) *emulator.Blockchain { - var opts []emulator.Option - if serviceAccount != nil && serviceAccount.Key().Type() == config.KeyTypeHex { - privKey, _ := serviceAccount.Key().PrivateKey() - - opts = append(opts, emulator.WithServicePublicKey( - (*privKey).PublicKey(), - serviceAccount.Key().SigAlgo(), - serviceAccount.Key().HashAlgo(), - )) - } - - if enableTxFees { - opts = append(opts, emulator.WithTransactionFeesEnabled(enableTxFees)) - } - - b, err := emulator.NewBlockchain(opts...) - if err != nil { - panic(err) - } - - return b -} - -func (g *Gateway) GetAccount(address flow.Address) (*flow.Account, error) { - account, err := g.backend.GetAccount(g.ctx, address) - if err != nil { - return nil, UnwrapStatusError(err) - } - return account, nil -} - -func (g *Gateway) SendSignedTransaction(tx *flowkit.Transaction) (*flow.Transaction, error) { - err := g.backend.SendTransaction(context.Background(), *tx.FlowTransaction()) - if err != nil { - return nil, UnwrapStatusError(err) - } - return tx.FlowTransaction(), nil -} - -func (g *Gateway) GetTransactionResult(tx *flow.Transaction, waitSeal bool) (*flow.TransactionResult, error) { - result, err := g.backend.GetTransactionResult(g.ctx, tx.ID()) - if err != nil { - return nil, UnwrapStatusError(err) - } - return result, nil -} - -func (g *Gateway) GetTransaction(id flow.Identifier) (*flow.Transaction, error) { - transaction, err := g.backend.GetTransaction(g.ctx, id) - if err != nil { - return nil, UnwrapStatusError(err) - } - return transaction, nil -} - -func (g *Gateway) Ping() error { - err := g.backend.Ping(g.ctx) - if err != nil { - return UnwrapStatusError(err) - } - return nil -} - -func (g *Gateway) ExecuteScript(script []byte, arguments []cadence.Value) (cadence.Value, error) { - - args, err := cadenceValuesToMessages(arguments) - if err != nil { - return nil, UnwrapStatusError(err) - } - - result, err := g.backend.ExecuteScriptAtLatestBlock(g.ctx, script, args) - if err != nil { - return nil, UnwrapStatusError(err) - } - - value, err := messageToCadenceValue(result) - if err != nil { - return nil, UnwrapStatusError(err) - } - - return value, nil -} - -func (g *Gateway) GetLatestBlock() (*flow.Block, error) { - block, err := g.backend.GetLatestBlock(g.ctx, true) - if err != nil { - return nil, UnwrapStatusError(err) - } - - return convertBlock(block), nil -} - -func cadenceValuesToMessages(values []cadence.Value) ([][]byte, error) { - msgs := make([][]byte, len(values)) - for i, val := range values { - msg, err := jsoncdc.Encode(val) - if err != nil { - return nil, fmt.Errorf("convert: %w", err) - } - msgs[i] = msg - } - return msgs, nil -} - -func messageToCadenceValue(m []byte) (cadence.Value, error) { - v, err := jsoncdc.Decode(nil, m) - if err != nil { - return nil, fmt.Errorf("convert: %w", err) - } - - return v, nil -} - -func convertBlock(block *flowGo.Block) *flow.Block { - return &flow.Block{ - BlockHeader: flow.BlockHeader{ - ID: flow.Identifier(block.Header.ID()), - ParentID: flow.Identifier(block.Header.ParentID), - Height: block.Header.Height, - Timestamp: block.Header.Timestamp, - }, - BlockPayload: flow.BlockPayload{ - CollectionGuarantees: nil, - Seals: nil, - }, - } -} - -func (g *Gateway) GetEvents( - eventType string, - startHeight uint64, - endHeight uint64, -) ([]flow.BlockEvents, error) { - events := make([]flow.BlockEvents, 0) - - for height := startHeight; height <= endHeight; height++ { - events = append(events, g.getBlockEvent(height, eventType)) - } - - return events, nil -} - -func (g *Gateway) getBlockEvent(height uint64, eventType string) flow.BlockEvents { - block, _ := g.backend.GetBlockByHeight(g.ctx, height) - events, _ := g.backend.GetEventsForBlockIDs(g.ctx, eventType, []flow.Identifier{flow.Identifier(block.ID())}) - - result := flow.BlockEvents{ - BlockID: flow.Identifier(block.ID()), - Height: block.Header.Height, - BlockTimestamp: block.Header.Timestamp, - Events: []flow.Event{}, - } - - for _, e := range events { - if e.BlockID == block.ID() { - result.Events, _ = sdk.FlowEventsToSDK(e.Events) - return result - } - } - - return result -} - -func (g *Gateway) GetCollection(id flow.Identifier) (*flow.Collection, error) { - collection, err := g.backend.GetCollectionByID(g.ctx, id) - if err != nil { - return nil, UnwrapStatusError(err) - } - return collection, nil -} - -func (g *Gateway) GetBlockByID(id flow.Identifier) (*flow.Block, error) { - block, err := g.backend.GetBlockByID(g.ctx, id) - if err != nil { - return nil, UnwrapStatusError(err) - } - return convertBlock(block), nil -} - -func (g *Gateway) GetBlockByHeight(height uint64) (*flow.Block, error) { - block, err := g.backend.GetBlockByHeight(g.ctx, height) - if err != nil { - return nil, UnwrapStatusError(err) - } - return convertBlock(block), nil -} - -func (g *Gateway) GetLatestProtocolStateSnapshot() ([]byte, error) { - snapshot, err := g.backend.GetLatestProtocolStateSnapshot(g.ctx) - if err != nil { - return nil, UnwrapStatusError(err) - } - return snapshot, nil -} - -// SecureConnection placeholder func to complete gateway interface implementation -func (g *Gateway) SecureConnection() bool { - return false -} diff --git a/lib/go/iinft/evergreen/cadence.go b/lib/go/iinft/evergreen/cadence.go index a1657c7..ec000df 100644 --- a/lib/go/iinft/evergreen/cadence.go +++ b/lib/go/iinft/evergreen/cadence.go @@ -18,21 +18,23 @@ func RoleFromCadence(val cadence.Value) (*Role, error) { } valStruct, ok := val.(cadence.Struct) - if !ok || valStruct.StructType.QualifiedIdentifier != "Evergreen.Role" || len(valStruct.Fields) != 6 { + if !ok || valStruct.StructType.QualifiedIdentifier != "Evergreen.Role" || len(valStruct.FieldsMappedByName()) != 6 { return nil, errors.New("bad Evergreen Role value") } + fieldMap := valStruct.FieldsMappedByName() + var receiverPath string - if opt := valStruct.Fields[5].(cadence.Optional).Value; opt != nil { + if opt := fieldMap["receiverPath"].(cadence.Optional).Value; opt != nil { receiverPath = opt.String() } res := Role{ - ID: valStruct.Fields[0].ToGoValue().(string), - Description: valStruct.Fields[1].ToGoValue().(string), - InitialSaleCommission: iinft.ToFloat64(valStruct.Fields[2]), - SecondaryMarketCommission: iinft.ToFloat64(valStruct.Fields[3]), - Address: flow.BytesToAddress(valStruct.Fields[4].(cadence.Address).Bytes()), + ID: string(fieldMap["id"].(cadence.String)), + Description: string(fieldMap["description"].(cadence.String)), + InitialSaleCommission: iinft.ToFloat64(fieldMap["initialSaleCommission"]), + SecondaryMarketCommission: iinft.ToFloat64(fieldMap["secondaryMarketCommission"]), + Address: flow.BytesToAddress(fieldMap["address"].(cadence.Address).Bytes()), ReceiverPath: receiverPath, } @@ -55,14 +57,15 @@ func RoleToCadence(role *Role, evergreenAddr flow.Address) (cadence.Value, error iinft.UFix64FromFloat64(role.SecondaryMarketCommission), cadence.BytesToAddress(role.Address.Bytes()), cadence.NewOptional(receiverPath), - }).WithType(&cadence.StructType{ - Location: common.AddressLocation{ + }).WithType(cadence.NewStructType( + common.AddressLocation{ Address: common.Address(evergreenAddr), Name: common.AddressLocationPrefix, }, - QualifiedIdentifier: "Evergreen.Role", - Fields: roleCadenceFields, - }), nil + "Evergreen.Role", + roleCadenceFields, + nil, + )), nil } func ProfileFromCadence(val cadence.Value) (*Profile, error) { @@ -74,17 +77,19 @@ func ProfileFromCadence(val cadence.Value) (*Profile, error) { } valStruct, ok := val.(cadence.Struct) - if !ok || valStruct.StructType.QualifiedIdentifier != "Evergreen.Profile" || len(valStruct.Fields) != 3 { + if !ok || valStruct.StructType.QualifiedIdentifier != "Evergreen.Profile" || len(valStruct.FieldsMappedByName()) != 3 { return nil, errors.New("bad Evergreen Profile value") } + fieldMap := valStruct.FieldsMappedByName() + res := Profile{ - ID: valStruct.Fields[0].ToGoValue().(string), - Description: valStruct.Fields[1].ToGoValue().(string), + ID: string(fieldMap["id"].(cadence.String)), + Description: string(fieldMap["description"].(cadence.String)), Roles: []*Role{}, } - rolesArray, ok := valStruct.Fields[2].(cadence.Array) + rolesArray, ok := fieldMap["roles"].(cadence.Array) if !ok { return nil, errors.New("bad Evergreen Profile value") } @@ -116,54 +121,64 @@ func ProfileToCadence(profile *Profile, evergreenAddr flow.Address) (cadence.Val cadence.String(profile.ID), cadence.String(profile.Description), cadence.NewArray(roles), - }).WithType(&cadence.StructType{ - Location: common.AddressLocation{ + }).WithType(cadence.NewStructType( + common.AddressLocation{ Address: common.Address(evergreenAddr), Name: common.AddressLocationPrefix, }, - QualifiedIdentifier: "Evergreen.Profile", - Fields: profileCadenceFields, - }), nil + "Evergreen.Profile", + profileCadenceFields(evergreenAddr), + nil, + )), nil } var roleCadenceFields = []cadence.Field{ { Identifier: "id", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "description", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "initialSaleCommission", - Type: cadence.UFix64Type{}, + Type: cadence.UFix64Type, }, { Identifier: "secondaryMarketCommission", - Type: cadence.UFix64Type{}, + Type: cadence.UFix64Type, }, { Identifier: "address", - Type: cadence.AddressType{}, + Type: cadence.AddressType, }, { Identifier: "receiverPath", - Type: cadence.OptionalType{}, + Type: cadence.NewOptionalType(cadence.StringType), }, } -var profileCadenceFields = []cadence.Field{ - { - Identifier: "id", - Type: cadence.StringType{}, - }, - { - Identifier: "description", - Type: cadence.StringType{}, - }, - { - Identifier: "roles", - Type: cadence.DictionaryType{}, - }, +func profileCadenceFields(evergreenAddr flow.Address) []cadence.Field { + return []cadence.Field{ + { + Identifier: "id", + Type: cadence.StringType, + }, + { + Identifier: "description", + Type: cadence.StringType, + }, + { + Identifier: "roles", + Type: cadence.NewDictionaryType(cadence.StringType, cadence.NewStructType( + common.AddressLocation{ + Address: common.Address(evergreenAddr), + Name: common.AddressLocationPrefix, + }, + "Evergreen.Role", + roleCadenceFields, + nil)), + }, + } } diff --git a/lib/go/iinft/go.mod b/lib/go/iinft/go.mod index 424966a..18af423 100644 --- a/lib/go/iinft/go.mod +++ b/lib/go/iinft/go.mod @@ -1,23 +1,239 @@ module github.com/piprate/sequel-flow-contracts/lib/go/iinft -go 1.16 +go 1.22 + +toolchain go1.22.3 require ( github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de - github.com/ethereum/go-ethereum v1.10.21 // indirect - github.com/klauspost/cpuid v1.2.1 // indirect - github.com/onflow/cadence v0.28.0 - github.com/onflow/cadence-tools/test v0.2.1-0.20221012182900-f46efb551c55 // indirect - github.com/onflow/flow-cli/pkg/flowkit v0.0.0-20221012181819-8d43a4be0028 - github.com/onflow/flow-emulator v0.38.1 - github.com/onflow/flow-go v0.28.1-0.20221021192700-74146556857a - github.com/onflow/flow-go-sdk v0.29.0 - github.com/rs/zerolog v1.26.1 - github.com/sirupsen/logrus v1.8.1 - github.com/spf13/afero v1.9.0 - github.com/stretchr/testify v1.8.0 - golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect - google.golang.org/grpc v1.46.2 + github.com/onflow/cadence v1.0.0 + github.com/onflow/flow-emulator v1.0.1 + github.com/onflow/flow-go-sdk v1.0.0 + github.com/onflow/flowkit/v2 v2.0.1 + github.com/rs/zerolog v1.29.0 + github.com/spf13/afero v1.10.0 + github.com/stretchr/testify v1.9.0 ) -replace github.com/onflow/flow-go-sdk v0.29.0 => github.com/piprate/flow-go-sdk v0.0.0-20221023084314-834a334dce58 +require ( + cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go/compute v1.24.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/kms v1.15.7 // indirect + cloud.google.com/go/storage v1.37.0 // indirect + github.com/DataDog/zstd v1.5.2 // indirect + github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect + github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/SaveTheRbtz/mph v0.1.1-0.20240117162131-4166ec7869bc // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/VictoriaMetrics/fastcache v1.12.2 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.1 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/coreos/go-semver v0.3.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.0 // indirect + github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/ef-ds/deque v1.0.4 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-ethereum v1.13.10 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/frankban/quicktest v1.14.6 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fxamacker/cbor/v2 v2.4.1-0.20230228173756-c0c9f774e40c // indirect + github.com/fxamacker/circlehash v0.3.0 // indirect + github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/glebarez/go-sqlite v1.22.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.5.1 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-redis/redis/v8 v8.11.5 // indirect + github.com/gofrs/flock v0.8.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.2.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/gosuri/uilive v0.0.4 // indirect + github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/holiman/bloomfilter/v2 v2.0.3 // indirect + github.com/holiman/uint256 v1.3.0 // indirect + github.com/huandu/go-clone v1.6.0 // indirect + github.com/huandu/go-clone/generic v1.7.2 // indirect + github.com/huin/goupnp v1.3.0 // indirect + github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/invopop/jsonschema v0.7.0 // indirect + github.com/ipfs/bbloom v0.0.4 // indirect + github.com/ipfs/boxo v0.17.1-0.20240131173518-89bceff34bf1 // indirect + github.com/ipfs/go-block-format v0.2.0 // indirect + github.com/ipfs/go-cid v0.4.1 // indirect + github.com/ipfs/go-datastore v0.6.0 // indirect + github.com/ipfs/go-ipfs-util v0.0.3 // indirect + github.com/ipfs/go-ipld-format v0.6.0 // indirect + github.com/ipfs/go-log/v2 v2.5.1 // indirect + github.com/ipfs/go-metrics-interface v0.0.1 // indirect + github.com/jackpal/go-nat-pmp v1.0.2 // indirect + github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect + github.com/jbenet/goprocess v0.1.4 // indirect + github.com/k0kubun/pp v3.0.1+incompatible // indirect + github.com/kevinburke/go-bindata v3.24.0+incompatible // indirect + github.com/klauspost/compress v1.17.4 // indirect + github.com/klauspost/cpuid/v2 v2.2.6 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-libp2p v0.32.2 // indirect + github.com/libp2p/go-libp2p-pubsub v0.10.0 // indirect + github.com/libp2p/go-msgio v0.3.0 // indirect + github.com/lmars/go-slip10 v0.0.0-20190606092855-400ba44fee12 // indirect + github.com/logrusorgru/aurora v2.0.3+incompatible // indirect + github.com/logrusorgru/aurora/v4 v4.0.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect + github.com/minio/sha256-simd v1.0.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr v0.12.2 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.9.0 // indirect + github.com/multiformats/go-multihash v0.2.3 // indirect + github.com/multiformats/go-multistream v0.5.0 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/onflow/atree v0.8.0-rc.6 // indirect + github.com/onflow/crypto v0.25.2 // indirect + github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1 // indirect + github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1 // indirect + github.com/onflow/flow-ft/lib/go/contracts v1.0.0 // indirect + github.com/onflow/flow-ft/lib/go/templates v1.0.0 // indirect + github.com/onflow/flow-go v0.38.0-preview.0.0.20241002124048-21cfe5aea5a8 // indirect + github.com/onflow/flow-nft/lib/go/contracts v1.2.1 // indirect + github.com/onflow/flow-nft/lib/go/templates v1.2.0 // indirect + github.com/onflow/flow/protobuf/go/flow v0.4.7 // indirect + github.com/onflow/go-ethereum v1.14.7 // indirect + github.com/onflow/sdks v0.6.0-preview.1 // indirect + github.com/onflow/wal v1.0.2 // indirect + github.com/onsi/gomega v1.29.0 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect + github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/pierrec/lz4 v2.6.1+incompatible // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.45.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/psiemens/graceland v1.0.0 // indirect + github.com/psiemens/sconfig v0.1.0 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/rivo/uniseg v0.4.4 // indirect + github.com/rogpeppe/go-internal v1.10.0 // indirect + github.com/sethvargo/go-retry v0.2.3 // indirect + github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect + github.com/slok/go-http-metrics v0.10.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cobra v1.8.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/status-im/keycard-go v0.2.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect + github.com/subosito/gotenv v1.4.2 // indirect + github.com/supranational/blst v0.3.11 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect + github.com/texttheater/golang-levenshtein/levenshtein v0.0.0-20200805054039-cae8b0eaed6c // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/turbolent/prettier v0.0.0-20220320183459-661cc755135d // indirect + github.com/tyler-smith/go-bip39 v1.1.0 // indirect + github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect + github.com/vmihailenco/msgpack/v4 v4.3.11 // indirect + github.com/vmihailenco/tagparser v0.1.1 // indirect + github.com/x448/float16 v0.8.4 // indirect + github.com/zeebo/blake3 v0.2.3 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect + golang.org/x/crypto v0.26.0 // indirect + golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/oauth2 v0.17.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect + gonum.org/v1/gonum v0.14.0 // indirect + google.golang.org/api v0.162.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/grpc v1.63.2 // indirect + google.golang.org/protobuf v1.33.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/blake3 v1.3.0 // indirect + modernc.org/libc v1.37.6 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.7.2 // indirect + modernc.org/sqlite v1.28.0 // indirect + rsc.io/tmplfunc v0.0.3 // indirect +) diff --git a/lib/go/iinft/go.sum b/lib/go/iinft/go.sum index b72cd92..cfd419b 100644 --- a/lib/go/iinft/go.sum +++ b/lib/go/iinft/go.sum @@ -1,8 +1,6 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +cloud.google.com/go v0.0.0-20170206221025-ce650573d812/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= @@ -34,371 +32,1224 @@ cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= +cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= +cloud.google.com/go/accessapproval v1.7.2/go.mod h1:/gShiq9/kK/h8T/eEn1BTzalDvk0mZxJlhfw0p+Xuc0= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= +cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= +cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= +cloud.google.com/go/accesscontextmanager v1.8.2/go.mod h1:E6/SCRM30elQJ2PKtFMs2YhfJpZSNcJyejhuzoId4Zk= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= +cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/aiplatform v1.50.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= +cloud.google.com/go/aiplatform v1.51.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= +cloud.google.com/go/aiplatform v1.51.1/go.mod h1:kY3nIMAVQOK2XDqDPHaOuD9e+FdMA6OOpfBjsvaFSOo= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/analytics v0.21.4/go.mod h1:zZgNCxLCy8b2rKKVfC1YkC2vTrpfZmeRCySM3aUbskA= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= +cloud.google.com/go/apigateway v1.6.2/go.mod h1:CwMC90nnZElorCW63P2pAYm25AtQrHfuOkbRSHj0bT8= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= +cloud.google.com/go/apigeeconnect v1.6.2/go.mod h1:s6O0CgXT9RgAxlq3DLXvG8riw8PYYbU/v25jqP3Dy18= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= +cloud.google.com/go/apigeeregistry v0.7.2/go.mod h1:9CA2B2+TGsPKtfi3F7/1ncCCsL62NXBRfM6iPoGSM+8= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= +cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= +cloud.google.com/go/appengine v1.8.2/go.mod h1:WMeJV9oZ51pvclqFN2PqHoGnys7rK0rz6s3Mp6yMvDo= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= +cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= +cloud.google.com/go/area120 v0.8.2/go.mod h1:a5qfo+x77SRLXnCynFWPUZhnZGeSgvQ+Y0v1kSItkh4= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= +cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= +cloud.google.com/go/artifactregistry v1.14.2/go.mod h1:Xk+QbsKEb0ElmyeMfdHAey41B+qBq3q5R5f5xD4XT3U= +cloud.google.com/go/artifactregistry v1.14.3/go.mod h1:A2/E9GXnsyXl7GUvQ/2CjHA+mVRoWAXC0brg2os+kNI= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= +cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= +cloud.google.com/go/asset v1.15.0/go.mod h1:tpKafV6mEut3+vN9ScGvCHXHj7FALFVta+okxFECHcg= +cloud.google.com/go/asset v1.15.1/go.mod h1:yX/amTvFWRpp5rcFq6XbCxzKT8RJUam1UoboE179jU4= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= +cloud.google.com/go/assuredworkloads v1.11.2/go.mod h1:O1dfr+oZJMlE6mw0Bp0P1KZSlj5SghMBvTpZqIcUAW4= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= +cloud.google.com/go/automl v1.13.2/go.mod h1:gNY/fUmDEN40sP8amAX3MaXkxcqPIn7F1UIIPZpy4Mg= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= +cloud.google.com/go/baremetalsolution v1.2.0/go.mod h1:68wi9AwPYkEWIUT4SvSGS9UJwKzNpshjHsH4lzk8iOw= +cloud.google.com/go/baremetalsolution v1.2.1/go.mod h1:3qKpKIw12RPXStwQXcbhfxVj1dqQGEvcmA+SX/mUR88= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= +cloud.google.com/go/batch v1.4.1/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= +cloud.google.com/go/batch v1.5.0/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= +cloud.google.com/go/batch v1.5.1/go.mod h1:RpBuIYLkQu8+CWDk3dFD/t/jOCGuUpkpX+Y0n1Xccs8= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= +cloud.google.com/go/beyondcorp v0.6.1/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= +cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= +cloud.google.com/go/beyondcorp v1.0.1/go.mod h1:zl/rWWAFVeV+kx+X2Javly7o1EIQThU4WlkynffL/lk= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= +cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/bigquery v1.55.0/go.mod h1:9Y5I3PN9kQWuid6183JFhOGOW3GcirA5LpsKCUn+2ec= +cloud.google.com/go/bigquery v1.56.0/go.mod h1:KDcsploXTEY7XT3fDQzMUZlpQLHzE4itubHrnmhUrZA= cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= +cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= +cloud.google.com/go/billing v1.17.0/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= +cloud.google.com/go/billing v1.17.1/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= +cloud.google.com/go/billing v1.17.2/go.mod h1:u/AdV/3wr3xoRBk5xvUzYMS1IawOAPwQMuHgHMdljDg= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= +cloud.google.com/go/binaryauthorization v1.7.0/go.mod h1:Zn+S6QqTMn6odcMU1zDZCJxPjU2tZPV1oDl45lWY154= +cloud.google.com/go/binaryauthorization v1.7.1/go.mod h1:GTAyfRWYgcbsP3NJogpV3yeunbUIjx2T9xVeYovtURE= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= +cloud.google.com/go/certificatemanager v1.7.2/go.mod h1:15SYTDQMd00kdoW0+XY5d9e+JbOPjp24AvF48D8BbcQ= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= +cloud.google.com/go/channel v1.17.0/go.mod h1:RpbhJsGi/lXWAUM1eF4IbQGbsfVlg2o8Iiy2/YLfVT0= +cloud.google.com/go/channel v1.17.1/go.mod h1:xqfzcOZAcP4b/hUDH0GkGg1Sd5to6di1HOJn/pi5uBQ= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.14.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.14.1/go.mod h1:K7wGc/3zfvmYWOWwYTgF/d/UVJhS4pu+HAy7PL7mCsU= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= +cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= +cloud.google.com/go/clouddms v1.7.0/go.mod h1:MW1dC6SOtI/tPNCciTsXtsGNEM0i0OccykPvv3hiYeM= +cloud.google.com/go/clouddms v1.7.1/go.mod h1:o4SR8U95+P7gZ/TX+YbJxehOCsM+fe6/brlrFquiszk= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= +cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/cloudtasks v1.12.2/go.mod h1:A7nYkjNlW2gUoROg1kvJrQGhJP/38UaWwsnuBDOBVUk= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1 h1:2sMmt8prCn7DPaG4Pmh0N3Inmc8cT8ae5k1M6VJ9Wqc= cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.21.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/contactcenterinsights v1.11.0/go.mod h1:hutBdImE4XNZ1NV4vbPJKSFOnQruhC5Lj9bZqWMTKiU= +cloud.google.com/go/contactcenterinsights v1.11.1/go.mod h1:FeNP3Kg8iteKM80lMwSk3zZZKVxr+PGnAId6soKuXwE= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= +cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/container v1.26.0/go.mod h1:YJCmRet6+6jnYYRS000T6k0D0xUXQgBSaJ7VwI8FBj4= +cloud.google.com/go/container v1.26.1/go.mod h1:5smONjPRUxeEpDG7bMKWfDL4sauswqEtnBK1/KKpR04= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= +cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= +cloud.google.com/go/containeranalysis v0.11.0/go.mod h1:4n2e99ZwpGxpNcz+YsFT1dfOHPQFGcAC8FN2M2/ne/U= +cloud.google.com/go/containeranalysis v0.11.1/go.mod h1:rYlUOM7nem1OJMKwE1SadufX0JP3wnXj844EtZAwWLY= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= +cloud.google.com/go/datacatalog v1.14.0/go.mod h1:h0PrGtlihoutNMp/uvwhawLQ9+c63Kz65UFqh49Yo+E= +cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/datacatalog v1.17.1/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= +cloud.google.com/go/datacatalog v1.18.0/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= +cloud.google.com/go/datacatalog v1.18.1/go.mod h1:TzAWaz+ON1tkNr4MOcak8EBHX7wIRX/gZKM+yTVsv+A= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= +cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= +cloud.google.com/go/dataflow v0.9.2/go.mod h1:vBfdBZ/ejlTaYIGB3zB4T08UshH70vbtZeMD+urnUSo= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= +cloud.google.com/go/dataform v0.8.2/go.mod h1:X9RIqDs6NbGPLR80tnYoPNiO1w0wenKTb8PxxlhTMKM= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= +cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= +cloud.google.com/go/datafusion v1.7.2/go.mod h1:62K2NEC6DRlpNmI43WHMWf9Vg/YvN6QVi8EVwifElI0= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= +cloud.google.com/go/datalabeling v0.8.2/go.mod h1:cyDvGHuJWu9U/cLDA7d8sb9a0tWLEletStu2sTmg3BE= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.9.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.10.1/go.mod h1:1MzmBv8FvjYfc7vDdxhnLFNskikkB+3vl475/XdCDhs= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= +cloud.google.com/go/dataproc/v2 v2.2.0/go.mod h1:lZR7AQtwZPvmINx5J87DSOOpTfof9LVZju6/Qo4lmcY= +cloud.google.com/go/dataproc/v2 v2.2.1/go.mod h1:QdAJLaBjh+l4PVlVZcmrmhGccosY/omC1qwfQ61Zv/o= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= +cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= +cloud.google.com/go/dataqna v0.8.2/go.mod h1:KNEqgx8TTmUipnQsScOoDpq/VlXVptUqVMZnt30WAPs= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= +cloud.google.com/go/datastore v1.12.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.14.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/datastream v1.10.1/go.mod h1:7ngSYwnw95YFyTd5tOGBxHlOZiL+OtpjheqU7t2/s/c= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= +cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/deploy v1.13.1/go.mod h1:8jeadyLkH9qu9xgO3hVWw8jVr29N1mnW42gRJT8GY6g= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dialogflow v1.43.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= +cloud.google.com/go/dialogflow v1.44.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= +cloud.google.com/go/dialogflow v1.44.1/go.mod h1:n/h+/N2ouKOO+rbe/ZnI186xImpqvCVj2DdsWS/0EAk= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= +cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= +cloud.google.com/go/dlp v1.10.2/go.mod h1:ZbdKIhcnyhILgccwVDzkwqybthh7+MplGC3kZVZsIOQ= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= +cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/documentai v1.22.1/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= +cloud.google.com/go/documentai v1.23.0/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= +cloud.google.com/go/documentai v1.23.2/go.mod h1:Q/wcRT+qnuXOpjAkvOV4A+IeQl04q2/ReT7SSbytLSo= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= +cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= +cloud.google.com/go/domains v0.9.2/go.mod h1:3YvXGYzZG1Temjbk7EyGCuGGiXHJwVNmwIf+E/cUp5I= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= +cloud.google.com/go/edgecontainer v1.1.2/go.mod h1:wQRjIzqxEs9e9wrtle4hQPSR1Y51kqN75dgF7UllZZ4= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= +cloud.google.com/go/essentialcontacts v1.6.3/go.mod h1:yiPCD7f2TkP82oJEFXFTou8Jl8L6LBRPeBEkTaO0Ggo= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/eventarc v1.13.1/go.mod h1:EqBxmGHFrruIara4FUQ3RHlgfCn7yo1HYsu2Hpt/C3Y= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= +cloud.google.com/go/filestore v1.7.2/go.mod h1:TYOlyJs25f/omgj+vY7/tIG/E7BX369triSPzE4LdgE= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= +cloud.google.com/go/firestore v1.12.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= +cloud.google.com/go/firestore v1.13.0/go.mod h1:QojqqOh8IntInDUSTAh0c8ZsPYAr68Ma8c5DWOy8xb8= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= +cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= +cloud.google.com/go/functions v1.15.2/go.mod h1:CHAjtcR6OU4XF2HuiVeriEdELNcnvRZSk1Q8RMqy4lE= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gaming v1.10.1/go.mod h1:XQQvtfP8Rb9Rxnxm5wFVpAp9zCQkJi2bLIb7iHGwB3s= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= +cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= +cloud.google.com/go/gkebackup v1.3.1/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= +cloud.google.com/go/gkebackup v1.3.2/go.mod h1:OMZbXzEJloyXMC7gqdSB+EOEQ1AKcpGYvO3s1ec5ixk= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= +cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= +cloud.google.com/go/gkeconnect v0.8.2/go.mod h1:6nAVhwchBJYgQCXD2pHBFQNiJNyAd/wyxljpaa6ZPrY= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= +cloud.google.com/go/gkehub v0.14.2/go.mod h1:iyjYH23XzAxSdhrbmfoQdePnlMj2EWcvnR+tHdBQsCY= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= +cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/gkemulticloud v1.0.1/go.mod h1:AcrGoin6VLKT/fwZEYuqvVominLriQBCKmbjtnbMjG8= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= +cloud.google.com/go/gsuiteaddons v1.6.2/go.mod h1:K65m9XSgs8hTF3X9nNTPi8IQueljSdYo9F+Mi+s4MyU= cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/kms v1.0.0/go.mod h1:nhUehi+w7zht2XrUfvTRNpxrfayBHqP4lu2NSywui/0= -cloud.google.com/go/kms v1.4.0 h1:iElbfoE61VeLhnZcGOltqL8HIly8Nhbe5t6JlH9GXjo= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= +cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= +cloud.google.com/go/iap v1.9.0/go.mod h1:01OFxd1R+NFrg78S+hoPV5PxEzv22HXaNqUUlmNHFuY= +cloud.google.com/go/iap v1.9.1/go.mod h1:SIAkY7cGMLohLSdBR25BuIxO+I4fXJiL06IBL7cy/5Q= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= +cloud.google.com/go/ids v1.4.2/go.mod h1:3vw8DX6YddRu9BncxuzMyWn0g8+ooUjI2gslJ7FH3vk= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= +cloud.google.com/go/iot v1.7.2/go.mod h1:q+0P5zr1wRFpw7/MOgDXrG/HVA+l+cSwdObffkrpnSg= cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/profiler v0.3.0/go.mod h1:9wYk9eY4iZHsev8TQb61kh3wiOiSyz/xOYixWPzweCU= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= +cloud.google.com/go/kms v1.11.0/go.mod h1:hwdiYC0xjnWsKQQCQQmIQnS9asjYVSK6jtXm+zFqXLM= +cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/kms v1.15.2/go.mod h1:3hopT4+7ooWRCjc2DxgnpESFxhIraaI2IpAVUEhbT/w= +cloud.google.com/go/kms v1.15.3/go.mod h1:AJdXqHxS2GlPyduM99s9iGqi2nwbviBbhV/hdmt4iOQ= +cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= +cloud.google.com/go/kms v1.15.7 h1:7caV9K3yIxvlQPAcaFffhlT7d1qpxjB1wHBtjWa13SM= +cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= +cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= +cloud.google.com/go/language v1.11.0/go.mod h1:uDx+pFDdAKTY8ehpWbiXyQdz8tDSYLJbQcXsCkjYyvQ= +cloud.google.com/go/language v1.11.1/go.mod h1:Xyid9MG9WOX3utvDbpX7j3tXDmmDooMyMDqgUVpH17U= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= +cloud.google.com/go/lifesciences v0.9.2/go.mod h1:QHEOO4tDzcSAzeJg7s2qwnLM2ji8IRpQl4p6m5Z9yTA= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= +cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= +cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= +cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= +cloud.google.com/go/managedidentities v1.6.2/go.mod h1:5c2VG66eCa0WIq6IylRk3TBW83l161zkFvCj28X7jn8= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= +cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/maps v1.4.1/go.mod h1:BxSa0BnW1g2U2gNdbq5zikLlHUuHW0GFWh7sgML2kIY= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= +cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= +cloud.google.com/go/mediatranslation v0.8.2/go.mod h1:c9pUaDRLkgHRx3irYE5ZC8tfXGrMYwNZdmDqKMSfFp8= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= +cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= +cloud.google.com/go/memcache v1.10.2/go.mod h1:f9ZzJHLBrmd4BkguIAa/l/Vle6uTHzHokdnzSWOdQ6A= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/metastore v1.13.0/go.mod h1:URDhpG6XLeh5K+Glq0NOt74OfrPKTwS62gEPZzb5SOk= +cloud.google.com/go/metastore v1.13.1/go.mod h1:IbF62JLxuZmhItCppcIfzBBfUFq0DIB9HPDoLgWrVOU= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= +cloud.google.com/go/monitoring v1.16.0/go.mod h1:Ptp15HgAyM1fNICAojDMoNc/wUmn67mLHQfyqbw+poY= +cloud.google.com/go/monitoring v1.16.1/go.mod h1:6HsxddR+3y9j+o/cMJH6q/KJ/CBTvM/38L/1m7bTRJ4= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= +cloud.google.com/go/networkconnectivity v1.13.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= +cloud.google.com/go/networkconnectivity v1.14.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= +cloud.google.com/go/networkconnectivity v1.14.1/go.mod h1:LyGPXR742uQcDxZ/wv4EI0Vu5N6NKJ77ZYVnDe69Zug= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= +cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= +cloud.google.com/go/networkmanagement v1.9.0/go.mod h1:UTUaEU9YwbCAhhz3jEOHr+2/K/MrBk2XxOLS89LQzFw= +cloud.google.com/go/networkmanagement v1.9.1/go.mod h1:CCSYgrQQvW73EJawO2QamemYcOb57LvrDdDU51F0mcI= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= +cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= +cloud.google.com/go/networksecurity v0.9.2/go.mod h1:jG0SeAttWzPMUILEHDUvFYdQTl8L/E/KC8iZDj85lEI= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= +cloud.google.com/go/notebooks v1.10.0/go.mod h1:SOPYMZnttHxqot0SGSFSkRrwE29eqnKPBJFqgWmiK2k= +cloud.google.com/go/notebooks v1.10.1/go.mod h1:5PdJc2SgAybE76kFQCWrTfJolCOUQXF97e+gteUUA6A= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= +cloud.google.com/go/optimization v1.5.0/go.mod h1:evo1OvTxeBRBu6ydPlrIRizKY/LJKo/drDMMRKqGEUU= +cloud.google.com/go/optimization v1.5.1/go.mod h1:NC0gnUD5MWVAF7XLdoYVPmYYVth93Q6BUzqAq3ZwtV8= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= +cloud.google.com/go/orchestration v1.8.2/go.mod h1:T1cP+6WyTmh6LSZzeUhvGf0uZVmJyTx7t8z7Vg87+A0= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= +cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= +cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= +cloud.google.com/go/orgpolicy v1.11.2/go.mod h1:biRDpNwfyytYnmCRWZWxrKF22Nkz9eNVj9zyaBdpm1o= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= +cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= +cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= +cloud.google.com/go/osconfig v1.12.2/go.mod h1:eh9GPaMZpI6mEJEuhEjUJmaxvQ3gav+fFEJon1Y8Iw0= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= +cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= +cloud.google.com/go/oslogin v1.11.0/go.mod h1:8GMTJs4X2nOAUVJiPGqIWVcDaF0eniEto3xlOxaboXE= +cloud.google.com/go/oslogin v1.11.1/go.mod h1:OhD2icArCVNUxKqtK0mcSmKL7lgr0LVlQz+v9s1ujTg= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= +cloud.google.com/go/phishingprotection v0.8.2/go.mod h1:LhJ91uyVHEYKSKcMGhOa14zMMWfbEdxG032oT6ECbC8= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= +cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0= +cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= +cloud.google.com/go/policytroubleshooter v1.9.0/go.mod h1:+E2Lga7TycpeSTj2FsH4oXxTnrbHJGRlKhVZBLGgU64= +cloud.google.com/go/policytroubleshooter v1.9.1/go.mod h1:MYI8i0bCrL8cW+VHN1PoiBTyNZTstCg2WUw2eVC4c4U= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= +cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= +cloud.google.com/go/privatecatalog v0.9.2/go.mod h1:RMA4ATa8IXfzvjrhhK8J6H4wwcztab+oZph3c6WmtFc= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= +cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= +cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.0/go.mod h1:QuE8EdU9dEnesG8/kG3XuJyNsjEqMlMzg3v3scCJ46c= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.1/go.mod h1:JZYZJOeZjgSSTGP4uz7NlQ4/d1w5hGmksVgM0lbEij0= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= +cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= +cloud.google.com/go/recommendationengine v0.8.2/go.mod h1:QIybYHPK58qir9CV2ix/re/M//Ty10OxjnnhWdaKS1Y= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= +cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= +cloud.google.com/go/recommender v1.11.0/go.mod h1:kPiRQhPyTJ9kyXPCG6u/dlPLbYfFlkwHNRwdzPVAoII= +cloud.google.com/go/recommender v1.11.1/go.mod h1:sGwFFAyI57v2Hc5LbIj+lTwXipGu9NW015rkaEM5B18= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= +cloud.google.com/go/redis v1.13.2/go.mod h1:0Hg7pCMXS9uz02q+LoEVl5dNHUkIQv+C/3L76fandSA= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= +cloud.google.com/go/resourcemanager v1.9.2/go.mod h1:OujkBg1UZg5lX2yIyMo5Vz9O5hf7XQOSV7WxqxxMtQE= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= +cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= +cloud.google.com/go/resourcesettings v1.6.2/go.mod h1:mJIEDd9MobzunWMeniaMp6tzg4I2GvD3TTmPkc8vBXk= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= +cloud.google.com/go/retail v1.14.2/go.mod h1:W7rrNRChAEChX336QF7bnMxbsjugcOCPU44i5kbLiL8= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= +cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= +cloud.google.com/go/run v1.3.0/go.mod h1:S/osX/4jIPZGg+ssuqh6GNgg7syixKe3YnprwehzHKU= +cloud.google.com/go/run v1.3.1/go.mod h1:cymddtZOzdwLIAsmS6s+Asl4JoXIDm/K1cpZTxV4Q5s= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= +cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= +cloud.google.com/go/scheduler v1.10.2/go.mod h1:O3jX6HRH5eKCA3FutMw375XHZJudNIKVonSCHv7ropY= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= +cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= +cloud.google.com/go/secretmanager v1.11.2/go.mod h1:MQm4t3deoSub7+WNwiC4/tRYgDBHJgJPvswqQVB1Vss= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= +cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= +cloud.google.com/go/security v1.15.2/go.mod h1:2GVE/v1oixIRHDaClVbHuPcZwAqFM28mXuAKCfMgYIg= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= +cloud.google.com/go/securitycenter v1.23.1/go.mod h1:w2HV3Mv/yKhbXKwOCu2i8bCuLtNP1IMHuiYQn4HJq5s= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicedirectory v1.11.1/go.mod h1:tJywXimEWzNzw9FvtNjsQxxJ3/41jseeILgwU/QLrGI= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= +cloud.google.com/go/shell v1.7.2/go.mod h1:KqRPKwBV0UyLickMn0+BY1qIyE98kKyI216sH/TuHmc= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= +cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= +cloud.google.com/go/spanner v1.49.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= +cloud.google.com/go/spanner v1.50.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= +cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= +cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= +cloud.google.com/go/speech v1.19.1/go.mod h1:WcuaWz/3hOlzPFOVo9DUsblMIHwxP589y6ZMtaG+iAA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1 h1:F6IlQJZrZM++apn9V5/VfS3gbTUYg98PS3EMQAzqtfg= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storage v1.37.0 h1:WI8CsaFO8Q9KjPVtsZ5Cmi0dXV25zMoX0FklT7c3Jm4= +cloud.google.com/go/storage v1.37.0/go.mod h1:i34TiT2IhiNDmcj65PqwCjcoUX7Z5pLzS8DEmoiFq1k= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= +cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= +cloud.google.com/go/storagetransfer v1.10.1/go.mod h1:rS7Sy0BtPviWYTTJVWCSV4QrbBitgPeuK4/FKa4IdLs= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= +cloud.google.com/go/talent v1.6.3/go.mod h1:xoDO97Qd4AK43rGjJvyBHMskiEf3KulgYzcH6YWOVoo= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= +cloud.google.com/go/texttospeech v1.7.2/go.mod h1:VYPT6aTOEl3herQjFHYErTlSZJ4vB00Q2ZTmuVgluD4= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= +cloud.google.com/go/tpu v1.6.2/go.mod h1:NXh3NDwt71TsPZdtGWgAG5ThDfGd32X1mJ2cMaRlVgU= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= +cloud.google.com/go/trace v1.10.2/go.mod h1:NPXemMi6MToRFcSxRl2uDnu/qAlAQ3oULUphcHGh1vA= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.9.0/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.9.1/go.mod h1:TWIgDZknq2+JD4iRcojgeDtqGEp154HN/uL6hMvylS8= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/video v1.20.0/go.mod h1:U3G3FTnsvAGqglq9LxgqzOiBc/Nt8zis8S+850N2DUM= +cloud.google.com/go/video v1.20.1/go.mod h1:3gJS+iDprnj8SY6pe0SwLeC5BUW80NjhwX7INWEuWGU= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= +cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= +cloud.google.com/go/videointelligence v1.11.2/go.mod h1:ocfIGYtIVmIcWk1DsSGOoDiXca4vaZQII1C85qtoplc= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= +cloud.google.com/go/vision/v2 v2.7.3/go.mod h1:V0IcLCY7W+hpMKXK1JYE0LV5llEqVmj+UJChjvA1WsM= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= +cloud.google.com/go/vmmigration v1.7.2/go.mod h1:iA2hVj22sm2LLYXGPT1pB63mXHhrH1m/ruux9TwWLd8= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vmwareengine v1.0.1/go.mod h1:aT3Xsm5sNx0QShk1Jc1B8OddrxAScYLwzVoaiXfdzzk= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= +cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= +cloud.google.com/go/vpcaccess v1.7.2/go.mod h1:mmg/MnRHv+3e8FJUjeSibVFvQF1cCy2MsFaFqxeY1HU= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= +cloud.google.com/go/webrisk v1.9.2/go.mod h1:pY9kfDgAqxUpDBOrG4w8deLfhvJmejKB0qd/5uQIPBc= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= +cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= +cloud.google.com/go/websecurityscanner v1.6.2/go.mod h1:7YgjuU5tun7Eg2kpKgGnDuEOXWIrh8x8lWrJT4zfmas= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= +cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= +cloud.google.com/go/workflows v1.12.0/go.mod h1:PYhSk2b6DhZ508tj8HXKaBh+OFe+xdl0dHF/tJdzPQM= +cloud.google.com/go/workflows v1.12.1/go.mod h1:5A95OhD/edtOhQd/O741NSfIMezNTbCwLM1P1tBRGHM= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= -dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= -dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= -git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0/go.mod h1:ceIuwmxDWptoW3eCqSXlnPsZFKh4X+R38dWPv7GS9Vs= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0/go.mod h1:c+Lifp3EDEamAkPVzMooRNOK6CZjNSdEnf1A7jsI9u4= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= -github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4= +github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= +github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= +github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190129172621-c8b1d7a94ddf/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI= -github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= +github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= +github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/SaveTheRbtz/mph v0.1.1-0.20240117162131-4166ec7869bc h1:DCHzPQOcU/7gwDTWbFQZc5qHMPS1g0xTO56k8NXsv9M= +github.com/SaveTheRbtz/mph v0.1.1-0.20240117162131-4166ec7869bc/go.mod h1:LJM5a3zcIJ/8TmZwlUczvROEJT8ntOdhdG9jjcR1B0I= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VictoriaMetrics/fastcache v1.5.3/go.mod h1:+jv9Ckb+za/P1ZRg/sulP5Ni1v49daAVERr0H3CuscE= -github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/a8m/envsubst v1.3.0 h1:GmXKmVssap0YtlU3E230W98RWtWCyIZzjtf1apWWyAg= -github.com/a8m/envsubst v1.3.0/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY= -github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= -github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/aclements/go-gg v0.0.0-20170118225347-6dbb4e4fefb0/go.mod h1:55qNq4vcpkIuHowELi5C8e+1yUHtoLoOUR9QU5j7Tes= +github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20210923152817-c3b6e2f0c527/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw= -github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= -github.com/aws/aws-sdk-go-v2 v1.9.0 h1:+S+dSqQCN3MSU5vJRu1HqHrq00cJn6heIMU7X9hcsoo= -github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2 v1.21.2/go.mod h1:ErQhvNuEMhJjweavOYhxVkn2RUx7kQXVATHrjKtxIpM= +github.com/aws/aws-sdk-go-v2 v1.23.1/go.mod h1:i1XDttT4rnf6vxc9AuskLc6s7XBee8rlLilKlc03uAA= +github.com/aws/aws-sdk-go-v2 v1.27.0 h1:7bZWKoXhzI+mMR/HjdMx8ZCC5+6fY0lS5tr0bbgiLlo= +github.com/aws/aws-sdk-go-v2 v1.27.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= -github.com/aws/aws-sdk-go-v2/config v1.8.0/go.mod h1:w9+nMZ7soXCe5nT46Ri354SNhXDQ6v+V5wqDjnZE+GY= +github.com/aws/aws-sdk-go-v2/config v1.18.45/go.mod h1:ZwDUgFnQgsazQTnWfeLWk5GjeqTQTL8lMkoE1UXzxdE= +github.com/aws/aws-sdk-go-v2/config v1.25.5/go.mod h1:Bf4gDvy4ZcFIK0rqDu1wp9wrubNba2DojiPB2rt6nvI= github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= -github.com/aws/aws-sdk-go-v2/credentials v1.4.0/go.mod h1:dgGR+Qq7Wjcd4AOAW5Rf5Tnv3+x7ed6kETXyS9WCuAY= +github.com/aws/aws-sdk-go-v2/credentials v1.13.43/go.mod h1:zWJBz1Yf1ZtX5NGax9ZdNjhhI4rgjfgsyk6vTY1yfVg= +github.com/aws/aws-sdk-go-v2/credentials v1.16.4/go.mod h1:Kdh/okh+//vQ/AjEt81CjvkTo64+/zIE4OewP7RpfXk= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.0/go.mod h1:CpNzHK9VEFUCknu50kkB8z58AH2B5DvPP7ea1LHve/Y= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13/go.mod h1:f/Ib/qYjhV2/qdsf79H3QP/eRE4AkVyEf6sk7XfZ1tg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.5/go.mod h1:VhnExhw6uXy9QzetvpXDolo1/hjhx4u9qukBGkuUwjs= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.5.1 h1:VGkV9KmhGqOQWnHyi4gLG98kE6OecT42fdrCGFWxJsc= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.5.1/go.mod h1:PLlnMiki//sGnCJiW+aVpvP/C8Kcm8mEj/IVm9+9qk4= -github.com/aws/aws-sdk-go-v2/internal/ini v1.2.2/go.mod h1:BQV0agm+JEhqR+2RT5e1XTFIDcAAV0eW6z2trp+iduw= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0 h1:gceOysEWNNwLd6cki65IMBZ4WAM0MwgBQq2n7kejoT8= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.3.0/go.mod h1:v8ygadNyATSm6elwJ/4gzJwcFhri9RqS8skgHKiwXPU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43/go.mod h1:auo+PiyLl0n1l8A0e8RIeR8tOzYPfZZH/JNlrJ8igTQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.4/go.mod h1:xEhvbJcyUf/31yfGSQBe01fukXwXJ0gxDp7rLfymWE0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37/go.mod h1:Qe+2KtKml+FEsQF/DHmDV+xjtche/hwoF75EG4UlHW8= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.4/go.mod h1:dYvTNAggxDZy6y1AF7YDwXsPuHFy/VNEpEI/2dWK9IU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45/go.mod h1:lD5M20o09/LCuQ2mE62Mb/iSdSlCNuj6H5ci7tW7OsE= +github.com/aws/aws-sdk-go-v2/internal/ini v1.7.1/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1/go.mod h1:l9ymW25HOqymeU2m1gbUQ3rUIsTwKs8gYHXkqDQUhiI= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0 h1:VNJ5NLBteVXEwE2F1zEXVmyIH58mZ6kIQGJoC7C+vkg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0/go.mod h1:R1KK+vY8AfalhG1AOu5e35pOD2SdoPKQCFLTvnxiohk= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37/go.mod h1:vBmDnwWXWxNPFRMmG2m/3MKOe+xEcMDo1tanpaWCcck= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.4/go.mod h1:aYCGNjyUCUelhofxlZyj63srdxWUSsBSGg5l6MCuXuE= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 h1:Wx0rlZoEJR7JwlSZcHnEa7CNjrSIyVxMFWGAaXy4fJY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9/go.mod h1:aVMHdE0aHO3v+f/iw01fmXV/5DbfQ3Bi9nN7nd9bE9Y= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.0 h1:HWsM0YQWX76V6MOp07YuTYacm8k7h69ObJuw7Nck+og= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.0/go.mod h1:LKb3cKNQIMh+itGnEpKGcnL/6OIjPZqrtYah1w5f+3o= +github.com/aws/aws-sdk-go-v2/service/kms v1.26.3/go.mod h1:N3++/sLV97B8Zliz7KRqNcojOX7iMBZWKiuit5FKtH0= github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/route53 v1.30.2/go.mod h1:TQZBt/WaQy+zTHoW++rnl8JBrmZ0VO6EUbVua1+foCA= github.com/aws/aws-sdk-go-v2/service/s3 v1.15.0 h1:nPLfLPfglacc29Y949sDxpr3X/blaY40s3B85WT2yZU= github.com/aws/aws-sdk-go-v2/service/s3 v1.15.0/go.mod h1:Iv2aJVtVSm/D22rFoX99cLG4q4uB7tppuCsulGe98k4= github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= -github.com/aws/aws-sdk-go-v2/service/sso v1.4.0/go.mod h1:+1fpWnL96DL23aXPpMGbsmKe8jLTEfbjuQoA4WS1VaA= +github.com/aws/aws-sdk-go-v2/service/sso v1.15.2/go.mod h1:gsL4keucRCgW+xA85ALBpRFfdSLH4kHOVSnLMSuBECo= +github.com/aws/aws-sdk-go-v2/service/sso v1.17.3/go.mod h1:oA6VjNsLll2eVuUoF2D+CMyORgNzPEW/3PyUdq6WQjI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3/go.mod h1:a7bHA82fyUXOm+ZSWKU6PIoBxrjSprdLoM8xPYvzYVg= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.20.1/go.mod h1:hHL974p5auvXlZPIjJTblXJpbkfK4klBczlsEaMCGVY= github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= -github.com/aws/aws-sdk-go-v2/service/sts v1.7.0/go.mod h1:0qcSMCyASQPN2sk/1KQLQ2Fh6yq8wm0HSDAimPhzCoM= +github.com/aws/aws-sdk-go-v2/service/sts v1.23.2/go.mod h1:Eows6e1uQEsc4ZaHANmsPRzAKcVDrcmjjWiih2+HUUQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.25.4/go.mod h1:feTnm2Tk/pJxdX+eooEsxvlvTWBvDm6CasRZ+JOs2IY= github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= -github.com/aws/smithy-go v1.8.0 h1:AEwwwXQZtUwP5Mz506FeXXrKBe0jA8gVM+1gEcSRooc= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/aws/smithy-go v1.15.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aws/smithy-go v1.17.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= +github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= +github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.2.2/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bits-and-blooms/bitset v1.3.0 h1:h7mv5q31cthBTd7V4kLAZaIThj1e8vPGcSqpPue9KVI= -github.com/bits-and-blooms/bitset v1.3.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bits-and-blooms/bitset v1.5.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= -github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= -github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btcd v0.0.0-20190605094302-a0d1e3e36d50/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= -github.com/btcsuite/btcd/btcec/v2 v2.2.1 h1:xP60mv8fvp+0khmrN0zTdPC3cNm24rfeE6lh2R/Yv3E= github.com/btcsuite/btcd/btcec/v2 v2.2.1/go.mod h1:9/CSmJxmuvqzX9Wh2fXMWToLOHhPd11lSPuIupwTkI8= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/bytecodealliance/wasmtime-go v0.22.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= -github.com/bytecodealliance/wasmtime-go v0.40.0/go.mod h1:q320gUxqyI8yB+ZqRuaJOEnGkAnHh6WtJjMaT2CW4wI= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 h1:KdUfX2zKommPRa+PD0sWZUyXe9w277ABlgELO7H04IM= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/bytecodealliance/wasmtime-go/v7 v7.0.0/go.mod h1:bu6fic7trDt20w+LMooX7j3fsOwv4/ln6j8gAdP6vmA= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= -github.com/c-bata/go-prompt v0.2.5/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/c-bata/go-prompt v0.2.6/go.mod h1:/LMAke8wD2FsNu9EXNdHxNLbd9MedkPnCdfpU9wwHfY= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18/go.mod h1:HD5P3vAIAh+Y2GAxg0PrPN1P8WkepXGpjbUPDHJqqKM= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.0 h1:+eqR0HfOetur4tgnC8ftU5imRnhi4te+BadWS95c5AM= github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/readline v1.5.0 h1:lSwwFrbNviGePhkewF1az4oLmcwqCZijQ2/Wi3BGHAI= github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/chzyer/test v0.0.0-20210722231415-061457976a23 h1:dZ0/VyGgQdVGAss6Ju0dt5P0QltE0SFY5Woh6hbIfiQ= github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= +github.com/cloudflare/cloudflare-go v0.79.0/go.mod h1:gkHQf9xEubaQPEuerBuoinR9P8bf8a05Lq0X6WKy1Oc= github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e h1:0XBUw73chJ1VYSsfvcPvVT7auykAJce9FpRr10L6Qhw= github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230428030218-4003588d1b74/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= +github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= +github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= +github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= +github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.4/go.mod h1:nLNQtsF7Sl2HxNebu77i1R0oDlhiTG+kO4JTrUzo6IA= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20191213151349-ff969a566b00/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/consensys/gnark-crypto v0.10.0/go.mod h1:Iq/P3HHl0ElSjsg2E1gsMwhAyxnxoKK5nVyZKd+/KhU= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-ipa v0.0.0-20230601170251-1830d0757c80/go.mod h1:gzbVz57IDJgQ9rLQwfSk696JGWof8ftznEL9GoAv3NI= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/dapperlabs/testingdock v0.4.4/go.mod h1:HeTbuHG1J4yt4n7NlZSyuk5c5fmyz6hECbyV+36Ku7Q= +github.com/dave/astrid v0.0.0-20170323122508-8c2895878b14/go.mod h1:Sth2QfxfATb/nW4EsrSi2KyJmbcniZ8TgTaji17D6ms= +github.com/dave/brenda v1.1.0/go.mod h1:4wCUr6gSlu5/1Tk7akE5X7UorwiQ8Rij0SKH3/BGMOM= +github.com/dave/courtney v0.3.0/go.mod h1:BAv3hA06AYfNUjfjQr+5gc6vxeBVOupLqrColj+QSD8= +github.com/dave/dst v0.27.2/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= +github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dave/jennifer v1.5.0/go.mod h1:4MnyiFIlZS3l5tSDn8VnzE6ffAhYBMB2SZntBsZGUok= +github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= +github.com/dave/patsy v0.0.0-20210517141501-957256f50cba/go.mod h1:qfR88CgEGLoiqDaE+xxDCi5QA5v4vUoW0UCX2Nd5Tlc= +github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= -github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= -github.com/dgraph-io/badger v1.6.0-rc1/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU= -github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= -github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= -github.com/dgraph-io/badger/v2 v2.2007.3/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de h1:t0UHb5vdojIDUqktM6+xJAfScFBsVpXZmqC9dsgJmeA= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= +github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= -github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/cli v0.0.0-20191105005515-99c5edceb48d/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.6.0-rc.1.0.20171207180435-f4118485915a+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20190513124817-8c8457b0f2f8/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.6.2/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dop251/goja v0.0.0-20200219165308-d1232e640a87/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= +github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= -github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/ef-ds/deque v1.0.4 h1:iFAZNmveMT9WERAkqLJ+oaABF9AcVQ5AjXem/hroniI= github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg= -github.com/elastic/gosigar v0.8.1-0.20180330100440-37f05ff46ffa/go.mod h1:cdorVVzy1fhmEqmtgqkoE3bYtCfSCkVyjTyCIo22xvs= -github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= +github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= -github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -408,140 +1259,177 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.9.9/go.mod h1:a9TqabFudpDu1nucId+k9S8R9whYaHnGBLKFouA5EAo= -github.com/ethereum/go-ethereum v1.9.13/go.mod h1:qwN9d1GLyDh0N7Ab8bMGd0H9knaji2jOBm2RrMGjXls= -github.com/ethereum/go-ethereum v1.10.21 h1:5lqsEx92ZaZzRyOqBEXux4/UR06m296RGzN3ol3teJY= -github.com/ethereum/go-ethereum v1.10.21/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= -github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.0.1/go.mod h1:0vj8bNkYbSTNS2PIyH87KZaeN4x9zpL9Qt8fQC7d+vs= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= +github.com/ethereum/go-ethereum v1.13.5/go.mod h1:yMTu38GSuyxaYzQMViqNmQ1s3cE84abZexQmTgenWk0= +github.com/ethereum/go-ethereum v1.13.10 h1:Ppdil79nN+Vc+mXfge0AuUgmKWuVv4eMqzoIVSdqZek= +github.com/ethereum/go-ethereum v1.13.10/go.mod h1:sc48XYQxCzH3fG9BcrXCOOgQk2JfZzNAmIKnceogzsA= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= +github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/gencodec v0.0.0-20220412091415-8bb9e558978c/go.mod h1:AzA8Lj6YtixmJWL+wkKoBGsLWy9gFrAzi4g+5bCKwpY= -github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e/go.mod h1:AzA8Lj6YtixmJWL+wkKoBGsLWy9gFrAzi4g+5bCKwpY= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ= -github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= +github.com/flynn/noise v1.0.1 h1:vPp/jdQLXC6ppsXSj/pM3W1BIJ5FEHE2TulSJBpb43Y= +github.com/flynn/noise v1.0.1/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fxamacker/cbor/v2 v2.2.1-0.20201006223149-25f67fca9803/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/cbor/v2 v2.2.1-0.20210927235116-3d6d5d1de29b/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/cbor/v2 v2.4.1-0.20220515183430-ad2eae63303f h1:dxTR4AaxCwuQv9LAVTAC2r1szlS+epeuPT5ClLKT6ZY= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fxamacker/cbor/v2 v2.4.1-0.20220515183430-ad2eae63303f/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/fxamacker/circlehash v0.1.0/go.mod h1:3aq3OfVvsWtkWMb6A1owjOQFA+TLsD5FgJflnaQwtMM= +github.com/fxamacker/cbor/v2 v2.4.1-0.20230228173756-c0c9f774e40c h1:5tm/Wbs9d9r+qZaUFXk59CWDD0+77PBqDREffYkyi5c= +github.com/fxamacker/cbor/v2 v2.4.1-0.20230228173756-c0c9f774e40c/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/fxamacker/circlehash v0.3.0 h1:XKdvTtIJV9t7DDUtsf0RIpC1OcxZtPbmgIH7ekx28WA= github.com/fxamacker/circlehash v0.3.0/go.mod h1:3aq3OfVvsWtkWMb6A1owjOQFA+TLsD5FgJflnaQwtMM= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/gammazero/deque v0.1.0 h1:f9LnNmq66VDeuAlSAapemq/U7hJ2jpIWa4c09q8Dlik= github.com/gammazero/deque v0.1.0/go.mod h1:KQw7vFau1hHuM8xmI9RbgKFbAsQFWmBpqQ2KenFLk6M= +github.com/gammazero/workerpool v1.1.2 h1:vuioDQbgrz4HoaCi2q1HLlOXdpbap5AET7xu5/qj87g= github.com/gammazero/workerpool v1.1.2/go.mod h1:UelbXcO0zCIGFcufcirHhq2/xtLXJdQ29qZNlXG9OjQ= github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61/go.mod h1:Q0X6pkwTILDlzrGEckF6HKjXe48EgsY/l7K7vhY4MW8= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/gballet/go-verkle v0.0.0-20230607174250-df487255f46b/go.mod h1:CDncRYVRSDqwakm282WEkjfaAj1hxU/v5RXxk5nXOiI= github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +github.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ= +github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/latin-modern v0.3.0/go.mod h1:ysEQXnuT/sCDOAONxC7ImeEDVINbltClhasMAqEtRK0= github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.3.0/go.mod h1:jdJ+cqF+F4SUL2V+qxBth8fvBpBDS7yloUL5Fi8GTGY= github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= -github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= -github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= -github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= -github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= -github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= -github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= -github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= +github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9/go.mod h1:gWuR/CrFDDeVRFQwHPvsv9soJVB/iqymhuZQuJ3a9OM= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= -github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= -github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.14.1 h1:9c50NUPC30zyuKprjL3vNZ0m5oG+jU0zvx4AqHGnv4k= +github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-test/deep v1.0.5/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= -github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= -github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -553,9 +1441,7 @@ github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3K github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2-0.20190517061210-b285ee9cfc6c/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= @@ -570,18 +1456,26 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= +github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82/go.mod h1:PxC8OnwL11+aosOB5+iEPoV3picfs8tUpkVd0pDo+Kg= +github.com/gonum/internal v0.0.0-20181124074243-f884aa714029/go.mod h1:Pu4dmpkhSyOzRwuXkOgAvijx4o+4YMUJJo9OvPYMkks= +github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2EAE789SSiSJNqxPaC0aE9J8NTOI0Jo/A= +github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -595,18 +1489,27 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -622,130 +1525,128 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20220412212628-83db2b799d1f/go.mod h1:Pt31oes+eGImORns3McJn8zHefuQl2rG8l6xQjGYB4U= -github.com/google/pprof v0.0.0-20220818150347-1763105d910c/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= +github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= +github.com/google/pprof v0.0.0-20231229205709-960ae82b1e42 h1:dHLYa5D8/Ta0aLR2XcPsrkpAgGeFs6thhMcQK0oQ0n8= +github.com/google/pprof v0.0.0-20231229205709-960ae82b1e42/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/safehtml v0.0.2/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go v0.0.0-20161107002406-da06d194a00e/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0 h1:dS9eYAjhrE2RjmzYw2XAPvcXfmcQLtFEQWn0CR82awk= github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uilive v0.0.4 h1:hUEBpQDj8D8jXgtCdBu7sWsy5sbW/5GhuO8KBwJ2jyY= github.com/gosuri/uilive v0.0.4/go.mod h1:V/epo5LjjlDE5RJUcqx8dbw+zc93y5Ya3yg8tfZ74VI= -github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware/providers/zerolog/v2 v2.0.0-rc.2/go.mod h1:BL7w7qd2l/j9jgY6WMhYutfOFQc0I8RTVwtjpnAMoTM= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-20200501113911-9a95f0fdbfea/go.mod h1:GugMBs30ZSAkckqXEAIEGyYdDH6EgqowG8ppA3Zt+AY= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= -github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU= +github.com/guptarohit/asciigraph v0.5.5/go.mod h1:dYl5wwK4gNsnFf9Zp+l06rFiDZ5YtXM6x7SRWZ3KGag= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.0.0-20160813221303-0a025b7e63ad/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.3.0 h1:4wdcm/tnd0xXdu7iS3ruNvxkWwrb4aeBQv19ayYn8F4= +github.com/holiman/uint256 v1.3.0/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v0.0.0-20161224104101-679507af18f3/go.mod h1:MZ2ZmwcBpvOoJ22IJsc7va19ZwoheaBk43rKg12SKag= -github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= +github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= +github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc= +github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= +github.com/huandu/go-clone/generic v1.7.2 h1:47pQphxs1Xc9cVADjOHN+Bm5D0hNagwH9UXErbxgVKA= +github.com/huandu/go-clone/generic v1.7.2/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/improbable-eng/grpc-web v0.12.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= -github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= @@ -754,145 +1655,51 @@ github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19y github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= -github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI= +github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= +github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= -github.com/ipfs/go-bitswap v0.1.8/go.mod h1:TOWoxllhccevbWFUR2N7B1MTSVVge1s6XSMiCSA4MzM= -github.com/ipfs/go-bitswap v0.3.4/go.mod h1:4T7fvNv/LmOys+21tnLzGKncMeeXUYUd1nUiJ2teMvI= -github.com/ipfs/go-bitswap v0.5.0/go.mod h1:WwyyYD33RHCpczgHjpx+xjWYIy8l41K+l5EMy4/ctSM= -github.com/ipfs/go-bitswap v0.8.0/go.mod h1:/h8sBij8UVEaNWl8ABzpLRA5Y1cttdNUnpeGo2AA/LQ= -github.com/ipfs/go-bitswap v0.9.0/go.mod h1:zkfBcGWp4dQTQd0D0akpudhpOVUAJT9GbH9tDmR8/s4= -github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= -github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= -github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= -github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= -github.com/ipfs/go-blockservice v0.1.4/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU= -github.com/ipfs/go-blockservice v0.2.0/go.mod h1:Vzvj2fAnbbyly4+T7D5+p9n3+ZKVHA2bRMMo1QoILtQ= -github.com/ipfs/go-blockservice v0.4.0/go.mod h1:kRjO3wlGW9mS1aKuiCeGhx9K1DagQ10ACpVO59qgAx4= -github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= -github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= -github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/ipfs/go-cid v0.1.0/go.mod h1:rH5/Xv83Rfy8Rw6xG+id3DYAMUVmem1MowoKwdXmN2o= -github.com/ipfs/go-cid v0.2.0 h1:01JTiihFq9en9Vz0lc0VDWvZe/uBonGpzo4THP0vcQ0= -github.com/ipfs/go-cid v0.2.0/go.mod h1:P+HXFDF4CVhaVayiEb4wkAy7zBHxBwsJyt0Y5U6MLro= -github.com/ipfs/go-cidutil v0.0.2/go.mod h1:ewllrvrxG6AMYStla3GD7Cqn+XYSLqjK0vc+086tB6s= -github.com/ipfs/go-cidutil v0.1.0/go.mod h1:e7OEVBMIv9JaOxt9zaGEmAoSlXW9jdFZ5lP/0PwcfpA= -github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.1.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= -github.com/ipfs/go-datastore v0.4.0/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.5/go.mod h1:eXTcaaiN6uOlVCLS9GjJUJtlvJfM3xk23w3fyfrmmJs= -github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= -github.com/ipfs/go-datastore v0.5.1 h1:WkRhLuISI+XPD0uk3OskB0fYFSyqK8Ob5ZYew9Qa1nQ= -github.com/ipfs/go-datastore v0.5.1/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= +github.com/ipfs/boxo v0.17.1-0.20240131173518-89bceff34bf1 h1:5H/HYvdmbxp09+sAvdqJzyrWoyCS6OroeW9Ym06Tb+0= +github.com/ipfs/boxo v0.17.1-0.20240131173518-89bceff34bf1/go.mod h1:pIZgTWdm3k3pLF9Uq6MB8JEcW07UDwNJjlXW1HELW80= +github.com/ipfs/go-block-format v0.2.0 h1:ZqrkxBA2ICbDRbK8KJs/u0O3dlp6gmAuuXUJNiW1Ycs= +github.com/ipfs/go-block-format v0.2.0/go.mod h1:+jpL11nFx5A/SPpsoBn6Bzkra/zaArfSmsknbPMYgzM= +github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= +github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= -github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= -github.com/ipfs/go-ds-badger v0.0.5/go.mod h1:g5AuuCGmr7efyzQhLL8MzwqcauPojGPUaHzfGTzuE3s= -github.com/ipfs/go-ds-badger v0.0.7/go.mod h1:qt0/fWzZDoPW6jpQeqUjR5kBfhDNB65jd9YlmAvpQBk= -github.com/ipfs/go-ds-badger v0.2.1/go.mod h1:Tx7l3aTph3FMFrRS838dcSJh+jjA7cX9DrGVwx/NOwE= -github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk= -github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= -github.com/ipfs/go-ds-badger2 v0.1.3/go.mod h1:TPhhljfrgewjbtuL/tczP8dNrBYwwk+SdPYbms/NO9w= -github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= -github.com/ipfs/go-ds-leveldb v0.1.0/go.mod h1:hqAW8y4bwX5LWcCtku2rFNX3vjDZCy5LZCg+cSZvYb8= -github.com/ipfs/go-ds-leveldb v0.4.1/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= -github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= -github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= -github.com/ipfs/go-fetcher v1.5.0/go.mod h1:5pDZ0393oRF/fHiLmtFZtpMNBQfHOYNPtryWedVuSWE= -github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08= -github.com/ipfs/go-ipfs-blockstore v0.1.4/go.mod h1:Jxm3XMVjh6R17WvxFEiyKBLUGr86HgIYJW/D/MwqeYQ= -github.com/ipfs/go-ipfs-blockstore v0.2.0/go.mod h1:SNeEpz/ICnMYZQYr7KNZTjdn7tEPB/99xpe8xI1RW7o= -github.com/ipfs/go-ipfs-blockstore v1.2.0 h1:n3WTeJ4LdICWs/0VSfjHrlqpPpl6MZ+ySd3j8qz0ykw= -github.com/ipfs/go-ipfs-blockstore v1.2.0/go.mod h1:eh8eTFLiINYNSNawfZOC7HOxNTxpB1PFuA5E1m/7exE= -github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= -github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-ds-help v0.0.1/go.mod h1:gtP9xRaZXqIQRh1HRpp595KbBEdgqWFxefeVKOV8sxo= -github.com/ipfs/go-ipfs-ds-help v0.1.1/go.mod h1:SbBafGJuGsPI/QL3j9Fc5YPLeAu+SzOkI0gFwAg+mOs= -github.com/ipfs/go-ipfs-ds-help v1.1.0 h1:yLE2w9RAsl31LtfMt91tRZcrx+e61O5mDxFRR994w4Q= -github.com/ipfs/go-ipfs-ds-help v1.1.0/go.mod h1:YR5+6EaebOhfcqVCyqemItCLthrpVNot+rsOU/5IatU= -github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM= -github.com/ipfs/go-ipfs-exchange-interface v0.1.0/go.mod h1:ych7WPlyHqFvCi/uQI48zLZuAWVP5iTQPXEfVaw5WEI= -github.com/ipfs/go-ipfs-exchange-interface v0.2.0/go.mod h1:z6+RhJuDQbqKguVyslSOuVDhqF9JtTrO3eptSAiW2/Y= -github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0= -github.com/ipfs/go-ipfs-exchange-offline v0.1.0/go.mod h1:YdJXa+yPF1na+gfYHYejtLwHFpuKv22eatApNiSfanM= -github.com/ipfs/go-ipfs-exchange-offline v0.3.0/go.mod h1:MOdJ9DChbb5u37M1IcbrRB02e++Z7521fMxqCNRrz9s= -github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= -github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= -github.com/ipfs/go-ipfs-provider v0.7.0/go.mod h1:mgjsWgDt9j19N1REPxRa31p+eRIQmjNt5McNdQQ5CsA= -github.com/ipfs/go-ipfs-routing v0.1.0/go.mod h1:hYoUkJLyAUKhF58tysKpids8RNDPO42BVMgK5dNsoqY= -github.com/ipfs/go-ipfs-routing v0.2.0/go.mod h1:384byD/LHKhAgKE3NmwOjXCpDzhczROMBzidoYV7tfM= -github.com/ipfs/go-ipfs-routing v0.2.1/go.mod h1:xiNNiwgjmLqPS1cimvAw6EyB9rkVDbiocA4yY+wRNLM= -github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= -github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= -github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= -github.com/ipfs/go-ipld-format v0.3.0 h1:Mwm2oRLzIuUwEPewWAWyMuuBQUsn3awfFEYVb8akMOQ= -github.com/ipfs/go-ipld-format v0.3.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= -github.com/ipfs/go-ipns v0.2.0/go.mod h1:3cLT2rbvgPZGkHJoPO1YMJeh6LtkxopCkKFcio/wE24= -github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= -github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk= -github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A= -github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kPgcs= +github.com/ipfs/go-ipfs-util v0.0.3 h1:2RFdGez6bu2ZlZdI+rWfIdbQb1KudQp3VGwPtdNCmE0= +github.com/ipfs/go-ipfs-util v0.0.3/go.mod h1:LHzG1a0Ig4G+iZ26UUOMjHd+lfM84LZCrn17xAKWBvs= +github.com/ipfs/go-ipld-format v0.6.0 h1:VEJlA2kQ3LqFSIm5Vu6eIlSxD/Ze90xtc4Meten1F5U= +github.com/ipfs/go-ipld-format v0.6.0/go.mod h1:g4QVMTn3marU3qXchwjpKPKgJv+zF+OlaKMyhJ4LHPg= github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= -github.com/ipfs/go-log/v2 v2.0.2/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= -github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= -github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= -github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM= -github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= -github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g= -github.com/ipfs/go-log/v2 v2.5.0/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg= github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= -github.com/ipfs/go-peertaskqueue v0.1.1/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= -github.com/ipfs/go-peertaskqueue v0.2.0/go.mod h1:5/eNrBEbtSKWCG+kQK8K8fGNixoYUnr+P7jivavs9lY= -github.com/ipfs/go-peertaskqueue v0.7.0/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68ow0Rrb04donIU= -github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= -github.com/ipld/go-ipld-prime v0.9.0/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= -github.com/ipld/go-ipld-prime v0.11.0/go.mod h1:+WIAkokurHmZ/KwzDOMUuoeJgaRQktHtEaLglS3ZeV8= -github.com/ipld/go-ipld-prime v0.14.1/go.mod h1:QcE4Y9n/ZZr8Ijg5bGPT0GqYWgZ1704nH0RDcQtgTP0= -github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= -github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/ipld/go-ipld-prime v0.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH9C2E= +github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ= +github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= +github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= +github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= +github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= +github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= -github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= -github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267/go.mod h1:h1nSAbGFqGVzn6Jyl1R/iCcBUHN4g+gW1u9CoBTrb9E= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= -github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= @@ -900,1031 +1707,662 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= -github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= -github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/k0kubun/pp v3.0.1+incompatible h1:3tqvf7QgUnZ5tXO6pNAZlrvHgl6DvifjDrd9g2S9Z40= +github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= +github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapdz1EwA= github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/kevinburke/go-bindata v3.22.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= -github.com/kevinburke/go-bindata v3.23.0+incompatible h1:rqNOXZlqrYhMVVAsQx8wuc+LaA73YcfbQ407wAykyS8= +github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= +github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= +github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= +github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/go-bindata v3.23.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/go-bindata v3.24.0+incompatible h1:qajFA3D0pH94OTLU4zcCCKCDgR+Zr2cZK/RPJHDdFoY= +github.com/kevinburke/go-bindata v3.24.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= +github.com/kilic/bls12-381 v0.1.0/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhdmfzw1ig= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A= -github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= +github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.2.1 h1:vJi+O/nMdFt0vqm8NZBI6wzALWdA2X+egi0ogNyrC/w= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= -github.com/klauspost/cpuid/v2 v2.0.14/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= -github.com/klauspost/cpuid/v2 v2.1.0 h1:eyi1Ad2aNJMW95zcSbmGg7Cg6cq3ADwLpMAP96d8rF0= -github.com/klauspost/cpuid/v2 v2.1.0/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.0/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc= +github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= -github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= -github.com/koron/go-ssdp v0.0.3/go.mod h1:b2MxI6yh02pKrsyNoQUsk4+YNikaGhe4894J+Q5lDvA= +github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= +github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= -github.com/lib/pq v0.0.0-20170810061220-e42267488fe3/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= -github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E= +github.com/libp2p/go-addr-util v0.1.0 h1:acKsntI33w2bTU7tC9a0SaPimJGfSI0bFKC18ChxeVI= github.com/libp2p/go-addr-util v0.1.0/go.mod h1:6I3ZYuFr2O/9D+SoyM0zEw0EF3YkldtTX406BpdQMqw= -github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= -github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= -github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= -github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU= -github.com/libp2p/go-conn-security-multistream v0.2.1/go.mod h1:cR1d8gA0Hr59Fj6NhaTpFhJZrjSYuNmhpT2r25zYR70= -github.com/libp2p/go-eventbus v0.1.0/go.mod h1:vROgu5cs5T7cv7POWlWxBaVLxfSegC5UGQf8A2eEmx4= -github.com/libp2p/go-eventbus v0.2.1/go.mod h1:jc2S4SoEVPP48H9Wpzm5aiGwUCBMfGhVhhBjyhhCJs8= -github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= -github.com/libp2p/go-flow-metrics v0.0.2/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= -github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= +github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.1.1/go.mod h1:I00BRo1UuUSdpuc8Q2mN7yDF/oTUTRAX6JWpTiK9Rp8= -github.com/libp2p/go-libp2p v0.6.1/go.mod h1:CTFnWXogryAHjXAKEbOf1OWY+VeAP3lDMZkfEI5sT54= -github.com/libp2p/go-libp2p v0.7.0/go.mod h1:hZJf8txWeCduQRDC/WSqBGMxaTHCOYHt2xSU1ivxn0k= -github.com/libp2p/go-libp2p v0.7.4/go.mod h1:oXsBlTLF1q7pxr+9w6lqzS1ILpyHsaBPniVO7zIHGMw= -github.com/libp2p/go-libp2p v0.8.1/go.mod h1:QRNH9pwdbEBpx5DTJYg+qxcVaDMAz3Ee/qDKwXujH5o= -github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t2DTVAJxMo= -github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= -github.com/libp2p/go-libp2p v0.22.0 h1:2Tce0kHOp5zASFKJbNzRElvh0iZwdtG5uZheNW8chIw= -github.com/libp2p/go-libp2p v0.22.0/go.mod h1:UDolmweypBSjQb2f7xutPnwZ/fxioLbMBxSjRksxxU4= -github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo= -github.com/libp2p/go-libp2p-asn-util v0.2.0/go.mod h1:WoaWxbHKBymSN41hWSq/lGKJEca7TNm58+gGJi2WsLI= -github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8= -github.com/libp2p/go-libp2p-autonat v0.1.1/go.mod h1:OXqkeGOY2xJVWKAGV2inNF5aKN/djNA3fdpCWloIudE= -github.com/libp2p/go-libp2p-autonat v0.2.0/go.mod h1:DX+9teU4pEEoZUqR1PiMlqliONQdNbfzE1C718tcViI= -github.com/libp2p/go-libp2p-autonat v0.2.1/go.mod h1:MWtAhV5Ko1l6QBsHQNSuM6b1sRkXrpk0/LqCr+vCVxI= -github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/nBwNHoeyyT4IWV6A= -github.com/libp2p/go-libp2p-autonat v0.4.0/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk= -github.com/libp2p/go-libp2p-autonat v0.4.2/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk= -github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= -github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU= -github.com/libp2p/go-libp2p-blankhost v0.2.0/go.mod h1:eduNKXGTioTuQAUcZ5epXi9vMl+t4d8ugUBRQ4SqaNQ= -github.com/libp2p/go-libp2p-circuit v0.1.0/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= -github.com/libp2p/go-libp2p-circuit v0.1.4/go.mod h1:CY67BrEjKNDhdTk8UgBX1Y/H5c3xkAcs3gnksxY7osU= -github.com/libp2p/go-libp2p-circuit v0.2.1/go.mod h1:BXPwYDN5A8z4OEY9sOfr2DUQMLQvKt/6oku45YUmjIo= -github.com/libp2p/go-libp2p-circuit v0.4.0/go.mod h1:t/ktoFIUzM6uLQ+o1G6NuBl2ANhBKN9Bc8jRIk31MoA= -github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= -github.com/libp2p/go-libp2p-core v0.0.2/go.mod h1:9dAcntw/n46XycV4RnlBq3BpgrmyUi9LuoTNdPrbUco= -github.com/libp2p/go-libp2p-core v0.0.3/go.mod h1:j+YQMNz9WNSkNezXOsahp9kwZBKBvxLpKD316QWSJXE= -github.com/libp2p/go-libp2p-core v0.0.4/go.mod h1:jyuCQP356gzfCFtRKyvAbNkyeuxb7OlyhWZ3nls5d2I= -github.com/libp2p/go-libp2p-core v0.2.0/go.mod h1:X0eyB0Gy93v0DZtSYbEM7RnMChm9Uv3j7yRXjO77xSI= -github.com/libp2p/go-libp2p-core v0.2.2/go.mod h1:8fcwTbsG2B+lTgRJ1ICZtiM5GWCWZVoVrLaDRvIRng0= -github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= -github.com/libp2p/go-libp2p-core v0.2.5/go.mod h1:6+5zJmKhsf7yHn1RbmYDu08qDUpIUxGdqHuEZckmZOA= -github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw= -github.com/libp2p/go-libp2p-core v0.3.1/go.mod h1:thvWy0hvaSBhnVBaW37BvzgVV68OUhgJJLAa6almrII= -github.com/libp2p/go-libp2p-core v0.4.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= -github.com/libp2p/go-libp2p-core v0.5.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= -github.com/libp2p/go-libp2p-core v0.5.1/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= -github.com/libp2p/go-libp2p-core v0.5.3/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= -github.com/libp2p/go-libp2p-core v0.5.4/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= -github.com/libp2p/go-libp2p-core v0.5.5/go.mod h1:vj3awlOr9+GMZJFH9s4mpt9RHHgGqeHCopzbYKZdRjM= -github.com/libp2p/go-libp2p-core v0.5.6/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.5.7/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.6.0/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.6.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.7.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.2/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.5/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.10.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg= -github.com/libp2p/go-libp2p-core v0.19.0/go.mod h1:AkA+FUKQfYt1FLNef5fOPlo/naAWjKy/RCjkcPjqzYg= -github.com/libp2p/go-libp2p-core v0.20.0/go.mod h1:6zR8H7CvQWgYLsbG4on6oLNSGcyKaYFSEYyDt51+bIY= -github.com/libp2p/go-libp2p-core v0.20.1 h1:fQz4BJyIFmSZAiTbKV8qoYhEH5Dtv/cVhZbG3Ib/+Cw= -github.com/libp2p/go-libp2p-core v0.20.1/go.mod h1:6zR8H7CvQWgYLsbG4on6oLNSGcyKaYFSEYyDt51+bIY= -github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= -github.com/libp2p/go-libp2p-discovery v0.1.0/go.mod h1:4F/x+aldVHjHDHuX85x1zWoFTGElt8HnoDzwkFZm29g= -github.com/libp2p/go-libp2p-discovery v0.2.0/go.mod h1:s4VGaxYMbw4+4+tsoQTqh7wfxg97AEdo4GYBt6BadWg= -github.com/libp2p/go-libp2p-discovery v0.3.0/go.mod h1:o03drFnz9BVAZdzC/QUQ+NeQOu38Fu7LJGEOK2gQltw= -github.com/libp2p/go-libp2p-discovery v0.5.0/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug= -github.com/libp2p/go-libp2p-kad-dht v0.18.0/go.mod h1:Gb92MYIPm3K2pJLGn8wl0m8wiKDvHrYpg+rOd0GzzPA= -github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio= -github.com/libp2p/go-libp2p-kbucket v0.4.7/go.mod h1:XyVo99AfQH0foSf176k4jY1xUJ2+jUJIZCSDm7r2YKk= -github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= -github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= -github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= -github.com/libp2p/go-libp2p-mplex v0.2.2/go.mod h1:74S9eum0tVQdAfFiKxAyKzNdSuLqw5oadDq7+L/FELo= -github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek= -github.com/libp2p/go-libp2p-mplex v0.4.0/go.mod h1:yCyWJE2sc6TBTnFpjvLuEJgTSw/u+MamvzILKdX7asw= -github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g= -github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= -github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE= -github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw= -github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= -github.com/libp2p/go-libp2p-noise v0.1.1/go.mod h1:QDFLdKX7nluB7DEnlVPbz7xlLHdwHFA9HiohJRr3vwM= -github.com/libp2p/go-libp2p-noise v0.2.0/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q= -github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= -github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= -github.com/libp2p/go-libp2p-peerstore v0.1.3/go.mod h1:BJ9sHlm59/80oSkpWgr1MyY1ciXAXV397W6h1GH/uKI= -github.com/libp2p/go-libp2p-peerstore v0.1.4/go.mod h1:+4BDbDiiKf4PzpANZDAT+knVdLxvqh7hXOujessqdzs= -github.com/libp2p/go-libp2p-peerstore v0.2.0/go.mod h1:N2l3eVIeAitSg3Pi2ipSrJYnqhVnMNQZo9nkSCuAbnQ= -github.com/libp2p/go-libp2p-peerstore v0.2.1/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= -github.com/libp2p/go-libp2p-peerstore v0.2.2/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= -github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= -github.com/libp2p/go-libp2p-peerstore v0.2.7/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= -github.com/libp2p/go-libp2p-peerstore v0.8.0/go.mod h1:9geHWmNA3YDlQBjL/uPEJD6vpDK12aDNlUNHJ6kio/s= -github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA= -github.com/libp2p/go-libp2p-pubsub v0.8.1-0.20220908052023-8866ca88a105/go.mod h1:e4kT+DYjzPUYGZeWk4I+oxCSYTXizzXii5LDRRhjKSw= -github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqUEJqjiiY8xmEuq3HUDS993MkA= -github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q= -github.com/libp2p/go-libp2p-record v0.1.2/go.mod h1:pal0eNcT5nqZaTV7UGhqeGqxFgGdsU/9W//C8dqjQDk= +github.com/libp2p/go-libp2p v0.32.2 h1:s8GYN4YJzgUoyeYNPdW7JZeZ5Ee31iNaIBfGYMAY4FQ= +github.com/libp2p/go-libp2p v0.32.2/go.mod h1:E0LKe+diV/ZVJVnOJby8VC5xzHF0660osg71skcxJvk= +github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= +github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= +github.com/libp2p/go-libp2p-kad-dht v0.25.2 h1:FOIk9gHoe4YRWXTu8SY9Z1d0RILol0TrtApsMDPjAVQ= +github.com/libp2p/go-libp2p-kad-dht v0.25.2/go.mod h1:6za56ncRHYXX4Nc2vn8z7CZK0P4QiMcrn77acKLM2Oo= +github.com/libp2p/go-libp2p-kbucket v0.6.3 h1:p507271wWzpy2f1XxPzCQG9NiN6R6lHL9GiSErbQQo0= +github.com/libp2p/go-libp2p-kbucket v0.6.3/go.mod h1:RCseT7AH6eJWxxk2ol03xtP9pEHetYSPXOaJnOiD8i0= +github.com/libp2p/go-libp2p-pubsub v0.10.0 h1:wS0S5FlISavMaAbxyQn3dxMOe2eegMfswM471RuHJwA= +github.com/libp2p/go-libp2p-pubsub v0.10.0/go.mod h1:1OxbaT/pFRO5h+Dpze8hdHQ63R0ke55XTs6b6NwLLkw= +github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0= github.com/libp2p/go-libp2p-record v0.2.0/go.mod h1:I+3zMkvvg5m2OcSdoL0KPljyJyvNDFGKX7QdlpYUcwk= -github.com/libp2p/go-libp2p-routing-helpers v0.2.3/go.mod h1:795bh+9YeoFl99rMASoiVgHdi5bjack0N1+AFAdbvBw= -github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= -github.com/libp2p/go-libp2p-secio v0.2.0/go.mod h1:2JdZepB8J5V9mBp79BmwsaPQhRPNN2NrnB2lKQcdy6g= -github.com/libp2p/go-libp2p-secio v0.2.1/go.mod h1:cWtZpILJqkqrSkiYcDBh5lA3wbT2Q+hz3rJQq3iftD8= -github.com/libp2p/go-libp2p-secio v0.2.2/go.mod h1:wP3bS+m5AUnFA+OFO7Er03uO1mncHG0uVwGrwvjYlNY= -github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= -github.com/libp2p/go-libp2p-swarm v0.2.2/go.mod h1:fvmtQ0T1nErXym1/aa1uJEyN7JzaTNyBcHImCxRpPKU= -github.com/libp2p/go-libp2p-swarm v0.2.3/go.mod h1:P2VO/EpxRyDxtChXz/VPVXyTnszHvokHKRhfkEgFKNM= -github.com/libp2p/go-libp2p-swarm v0.2.8/go.mod h1:JQKMGSth4SMqonruY0a8yjlPVIkb0mdNSwckW7OYziM= -github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk= -github.com/libp2p/go-libp2p-swarm v0.4.0/go.mod h1:XVFcO52VoLoo0eitSxNQWYq4D6sydGOweTOAjJNraCw= -github.com/libp2p/go-libp2p-swarm v0.5.0/go.mod h1:sU9i6BoHE0Ve5SKz3y9WfKrh8dUat6JknzUehFx8xW4= -github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.0.4/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.1.0/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= -github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= -github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc= -github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g= -github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= -github.com/libp2p/go-libp2p-testing v0.11.0/go.mod h1:qG4sF27dfKFoK9KlVzK2y52LQKhp0VEmLjV5aDqr1Hg= +github.com/libp2p/go-libp2p-routing-helpers v0.7.3 h1:u1LGzAMVRK9Nqq5aYDVOiq/HaB93U9WWczBzGyAC5ZY= +github.com/libp2p/go-libp2p-routing-helpers v0.7.3/go.mod h1:cN4mJAD/7zfPKXBcs9ze31JGYAZgzdABEm+q/hkswb8= +github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= -github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M= -github.com/libp2p/go-libp2p-tls v0.4.1 h1:1ByJUbyoMXvYXDoW6lLsMxqMViQNXmt+CfQqlnCpY+M= -github.com/libp2p/go-libp2p-tls v0.4.1/go.mod h1:EKCixHEysLNDlLUoKxv+3f/Lp90O2EXNjTr0UQDnrIw= -github.com/libp2p/go-libp2p-transport-upgrader v0.1.1/go.mod h1:IEtA6or8JUbsV07qPW4r01GnTenLW4oi3lOPbUMGJJA= -github.com/libp2p/go-libp2p-transport-upgrader v0.2.0/go.mod h1:mQcrHj4asu6ArfSoMuyojOdjx73Q47cYD7s5+gZOlns= -github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D1dwydnTmKRPXiAR/fyvi1dXuL4o= -github.com/libp2p/go-libp2p-transport-upgrader v0.4.0/go.mod h1:J4ko0ObtZSmgn5BX5AmegP+dK3CSnU2lMCKsSq/EY0s= -github.com/libp2p/go-libp2p-transport-upgrader v0.4.2/go.mod h1:NR8ne1VwfreD5VIWIU62Agt/J18ekORFU/j1i2y8zvk= -github.com/libp2p/go-libp2p-xor v0.1.0/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQJscoIL/u6InY= -github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= -github.com/libp2p/go-libp2p-yamux v0.2.1/go.mod h1:1FBXiHDk1VyRM1C0aez2bCfHQ4vMZKkAQzZbkSQt5fI= -github.com/libp2p/go-libp2p-yamux v0.2.2/go.mod h1:lIohaR0pT6mOt0AZ0L2dFze9hds9Req3OfS+B+dv4qw= -github.com/libp2p/go-libp2p-yamux v0.2.5/go.mod h1:Zpgj6arbyQrmZ3wxSZxfBmbdnWtbZ48OpsfmQVTErwA= -github.com/libp2p/go-libp2p-yamux v0.2.7/go.mod h1:X28ENrBMU/nm4I3Nx4sZ4dgjZ6VhLEn0XhIoZ5viCwU= -github.com/libp2p/go-libp2p-yamux v0.2.8/go.mod h1:/t6tDqeuZf0INZMTgd0WxIRbtK2EzI2h7HbFm9eAKI4= -github.com/libp2p/go-libp2p-yamux v0.4.0/go.mod h1:+DWDjtFMzoAwYLVkNZftoucn7PelNoy5nm3tZ3/Zw30= -github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po= -github.com/libp2p/go-libp2p-yamux v0.5.1/go.mod h1:dowuvDu8CRWmr0iqySMiSxK+W0iL5cMVO9S94Y6gkv4= -github.com/libp2p/go-libp2p-yamux v0.5.4/go.mod h1:tfrXbyaTqqSU654GTvK3ocnSZL3BuHoeTSqhcel1wsE= -github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= -github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M= -github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= -github.com/libp2p/go-mplex v0.0.3/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= -github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= -github.com/libp2p/go-mplex v0.1.1/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= -github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= -github.com/libp2p/go-mplex v0.2.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= -github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= -github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= -github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= -github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= -github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA= -github.com/libp2p/go-msgio v0.2.0/go.mod h1:dBVM1gW3Jk9XqHkU4eKdGvVHdLa51hoGfll6jMJMSlY= -github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= -github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo= -github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU= -github.com/libp2p/go-nat v0.1.0/go.mod h1:X7teVkwRHNInVNWQiO/tAiAVRwSr5zoRz4YSTC3uRBM= -github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= -github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= -github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A= -github.com/libp2p/go-netroute v0.1.6/go.mod h1:AqhkMh0VuWmfgtxKPp3Oc1LdU5QSWS7wl0QLhSZqXxQ= -github.com/libp2p/go-netroute v0.2.0/go.mod h1:Vio7LTzZ+6hoT4CMZi5/6CpY3Snzh2vgZhWgxMNwlQI= -github.com/libp2p/go-openssl v0.0.2/go.mod h1:v8Zw2ijCSWBQi8Pq5GAixw6DbFfa9u6VIYDXnvOXkc0= -github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo= -github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc= -github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= -github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ= -github.com/libp2p/go-reuseport v0.2.0/go.mod h1:bvVho6eLMm6Bz5hmU0LYN3ixd3nPPvtIlaURZZgOY4k= -github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= -github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM= -github.com/libp2p/go-reuseport-transport v0.0.4/go.mod h1:trPa7r/7TJK/d+0hdBLOCGvpQQVOU74OXbNCIMkufGw= -github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-sockaddr v0.1.1/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-stream-muxer v0.0.1/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= -github.com/libp2p/go-stream-muxer-multistream v0.2.0/go.mod h1:j9eyPol/LLRqT+GPLSxvimPhNph4sfYfMoDPd7HkzIc= -github.com/libp2p/go-stream-muxer-multistream v0.3.0/go.mod h1:yDh8abSIzmZtqtOt64gFJUXEryejzNb0lisTt+fAMJA= -github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2nHGctwtInJVpipc= -github.com/libp2p/go-tcp-transport v0.1.1/go.mod h1:3HzGvLbx6etZjnFlERyakbaYPdfjg2pWP97dFZworkY= -github.com/libp2p/go-tcp-transport v0.2.0/go.mod h1:vX2U0CnWimU4h0SGSEsg++AzvBcroCGYw28kh94oLe0= -github.com/libp2p/go-tcp-transport v0.2.1/go.mod h1:zskiJ70MEfWz2MKxvFB/Pv+tPIB1PpPUrHIWQ8aFw7M= -github.com/libp2p/go-tcp-transport v0.2.3/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU= -github.com/libp2p/go-ws-transport v0.1.0/go.mod h1:rjw1MG1LU9YDC6gzmwObkPd/Sqwhw7yT74kj3raBFuo= -github.com/libp2p/go-ws-transport v0.2.0/go.mod h1:9BHJz/4Q5A9ludYWKoGCFC5gUElzlHoKzu0yY9p/klM= -github.com/libp2p/go-ws-transport v0.3.0/go.mod h1:bpgTJmRZAvVHrgHybCVyqoBmyLQ1fiZuEaBYusP5zsk= -github.com/libp2p/go-ws-transport v0.4.0/go.mod h1:EcIEKqf/7GDjth6ksuS/6p7R49V4CBY6/E7R/iyhYUA= -github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.2.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.0/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.5/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.7/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux v1.4.0/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux/v2 v2.0.0/go.mod h1:NVWira5+sVUIU6tu1JWvaRn1dRnG+cawOJiflsAM+7U= -github.com/libp2p/go-yamux/v2 v2.2.0/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ= -github.com/libp2p/go-yamux/v3 v3.1.2/go.mod h1:jeLEQgLXqE2YqX1ilAClIfCMDY+0uXQUKmmb/qp0gT4= -github.com/libp2p/zeroconf/v2 v2.2.0/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= +github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= +github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= +github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= +github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= +github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= +github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= +github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= +github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= +github.com/lmars/go-slip10 v0.0.0-20190606092855-400ba44fee12 h1:qFV7dBLhw5z4hka5gjtIzg1Kq9ie8t8P7Cy0uIxRyAQ= +github.com/lmars/go-slip10 v0.0.0-20190606092855-400ba44fee12/go.mod h1:QIsK6U93yCP6TnGsShCv5wl4gcz/mpCHl+aToBsl5Sc= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8= -github.com/lucas-clemente/quic-go v0.28.1/go.mod h1:oGz5DKK41cJt5+773+BSO9BXDsREY4HLf7+0odGAPO0= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/m4ksio/wal v1.0.0 h1:PucHOZPz58BgWowe+Gf+gZUbgEdd4zFx+He45SGkHG0= -github.com/m4ksio/wal v1.0.0/go.mod h1:S3UyatBTuMdoI5QTuz2DWb8Csd9568vYrFAmMI/bnMw= +github.com/logrusorgru/aurora/v4 v4.0.0 h1:sRjfPpun/63iADiSvGGjgA1cAYegEWMPCJdUpJYn9JA= +github.com/logrusorgru/aurora/v4 v4.0.0/go.mod h1:lP0iIa2nrnT/qoFXcOZSrZQpJ1o6n2CUf/hyHi2Q4ZQ= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= -github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= -github.com/marten-seemann/qtls v0.10.0/go.mod h1:UvMd1oaYDACI99/oZUYLzMCkBXQVT0aGm99sJhbT8hs= -github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= -github.com/marten-seemann/qtls-go1-16 v0.1.5/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= -github.com/marten-seemann/qtls-go1-17 v0.1.2/go.mod h1:C2ekUKcDdz9SDWxec1N/MvcXBpaX9l3Nx67XaR84L5s= -github.com/marten-seemann/qtls-go1-18 v0.1.2/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4= -github.com/marten-seemann/qtls-go1-19 v0.1.0-beta.1/go.mod h1:5HTDWtVudo/WFsHKRNuOhWlbdjrfs5JHrYb0wIJqGpI= -github.com/marten-seemann/qtls-go1-19 v0.1.0/go.mod h1:5HTDWtVudo/WFsHKRNuOhWlbdjrfs5JHrYb0wIJqGpI= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= -github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= -github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0= -github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.28/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= +github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= +github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= +github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= -github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= -github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= -github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= -github.com/multiformats/go-base32 v0.0.4 h1:+qMh4a2f37b4xTNs6mqitDinryCI+tfO2dRVMN9mjSE= -github.com/multiformats/go-base32 v0.0.4/go.mod h1:jNLFzjPZtp3aIARHbJRZIaPuspdH0J6q39uUM5pnABM= -github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= -github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= -github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.1.0/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= -github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE= -github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y= -github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI= -github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc= -github.com/multiformats/go-multiaddr v0.3.3/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0= -github.com/multiformats/go-multiaddr v0.4.1/go.mod h1:3afI9HfVW8csiF8UZqtpYRiDyew8pRX7qLIGHu9FLuM= -github.com/multiformats/go-multiaddr v0.6.0 h1:qMnoOPj2s8xxPU5kZ57Cqdr0hHhARz7mFsPMIiYNqzg= -github.com/multiformats/go-multiaddr v0.6.0/go.mod h1:F4IpaKZuPP360tOMn2Tpyu0At8w23aRyVqeK0DbFeGM= -github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-dns v0.2.0/go.mod h1:TJ5pr5bBO7Y1B18djPuRsVkduhQH2YqYSbxWJzYGdK0= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.12.2 h1:9G9sTY/wCYajKa9lyfWPmpZAwe6oV+Wb1zcmMS1HG24= +github.com/multiformats/go-multiaddr v0.12.2/go.mod h1:GKyaTYjZRdcUhyOetrxTk9z0cW+jA/YrnqTOvKgi44M= +github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= -github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= -github.com/multiformats/go-multiaddr-net v0.0.1/go.mod h1:nw6HSxNmCIQH27XPGBuX+d1tnvM7ihcFwHMSstNAVUU= -github.com/multiformats/go-multiaddr-net v0.1.0/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= -github.com/multiformats/go-multiaddr-net v0.1.1/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= -github.com/multiformats/go-multiaddr-net v0.1.2/go.mod h1:QsWt3XK/3hwvNxZJp92iMQKME1qHfpYmyIjFVsSOY6Y= -github.com/multiformats/go-multiaddr-net v0.1.3/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.1.5/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= -github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= -github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= -github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= -github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= -github.com/multiformats/go-multicodec v0.3.0/go.mod h1:qGGaQmioCDh+TeFOnxrbU0DaIPw8yFgAZgFG0V7p1qQ= -github.com/multiformats/go-multicodec v0.4.1/go.mod h1:1Hj/eHRaVWSXiSNNfcEPcwZleTmdNP81xlxDLnWU9GQ= -github.com/multiformats/go-multicodec v0.5.0 h1:EgU6cBe/D7WRwQb1KmnBvU7lrcFGMggZVTPtOW9dDHs= -github.com/multiformats/go-multicodec v0.5.0/go.mod h1:DiY2HFaEp5EhEXb/iYzVAunmyX/aSFMxq2KMKfWEues= -github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= -github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= -github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.9/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= -github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= -github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= -github.com/multiformats/go-multihash v0.0.16/go.mod h1:zhfEIgVnB/rPMfxgFw15ZmGoNaKyNUIE4IWHG/kC+Ag= -github.com/multiformats/go-multihash v0.1.0/go.mod h1:RJlXsxt6vHGaia+S8We0ErjhojtKzPP2AH4+kYM7k84= -github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= -github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= -github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= -github.com/multiformats/go-multistream v0.1.1/go.mod h1:KmHZ40hzVxiaiwlj3MEbYgK9JFk2/9UktWZAF54Du38= -github.com/multiformats/go-multistream v0.2.0/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= -github.com/multiformats/go-multistream v0.2.1/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= -github.com/multiformats/go-multistream v0.2.2/go.mod h1:UIcnm7Zuo8HKG+HkWgfQsGL+/MIEhyTqbODbIUwSXKs= -github.com/multiformats/go-multistream v0.3.3/go.mod h1:ODRoqamLUsETKS9BNcII4gcRsJBU5VAwRIv7O39cEXg= -github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= -github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= +github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= +github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE= +github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= +github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= -github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onflow/atree v0.1.0-beta1.0.20211027184039-559ee654ece9/go.mod h1:+6x071HgCF/0v5hQcaE5qqjc2UqN5gCU8h5Mk6uqpOg= -github.com/onflow/atree v0.4.0 h1:+TbNisavAkukAKhgQ4plWnvR9o5+SkwPIsi3jaeAqKs= -github.com/onflow/atree v0.4.0/go.mod h1:7Qe1xaW0YewvouLXrugzMFUYXNoRQ8MT/UsVAWx1Ndo= -github.com/onflow/cadence v0.15.0/go.mod h1:KMzDF6cIv6nb5PJW9aITaqazbmJX8MMeibFcpPP385M= -github.com/onflow/cadence v0.20.1/go.mod h1:7mzUvPZUIJztIbr9eTvs+fQjWWHTF8veC+yk4ihcNIA= -github.com/onflow/cadence v0.28.0 h1:18A1V9xqGewibEhuzqBNEoNvqG6OwVqHg7gKu3UliaM= -github.com/onflow/cadence v0.28.0/go.mod h1:h+SbY8RNl6Q6sT6l/2cvpUZUJNCbzJya+3Bkwe/0YwY= -github.com/onflow/cadence-tools/test v0.2.0/go.mod h1:Gql0ehC9dQ61Ukbm9TXfTM0EZ1UNuYfIsuGrysZfRSE= -github.com/onflow/cadence-tools/test v0.2.1-0.20221012182900-f46efb551c55 h1:l/JqX4qnukAf2rCfZ0afPvK13eNPeL6gbv2GAweuVuE= -github.com/onflow/cadence-tools/test v0.2.1-0.20221012182900-f46efb551c55/go.mod h1:Gql0ehC9dQ61Ukbm9TXfTM0EZ1UNuYfIsuGrysZfRSE= -github.com/onflow/flow v0.3.2 h1:z3IuKOjM9Tvf0pXfloTbrLxM5nTunI47cklsDd+wxBE= -github.com/onflow/flow v0.3.2/go.mod h1:lzyAYmbu1HfkZ9cfnL5/sjrrsnJiUU8fRL26CqLP7+c= -github.com/onflow/flow-cli/pkg/flowkit v0.0.0-20221012181819-8d43a4be0028 h1:GYVjnhSVmEP/ZyJgYvtedVv/S8cG0FvDaum7rP7dtZE= -github.com/onflow/flow-cli/pkg/flowkit v0.0.0-20221012181819-8d43a4be0028/go.mod h1:ivZRm/zqZbuFNd39VyYj+ubk78iA8Uj+ilmhrwNEFmc= -github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20220720151516-797b149ceaaa h1:hcEp3INfkLh9jFODC9PHPQeisAd9rterujabee9il8w= -github.com/onflow/flow-core-contracts/lib/go/contracts v0.11.2-0.20220720151516-797b149ceaaa/go.mod h1:T6yhM+kWrFxiP6F3hh8lh9DcocHfmv48P4ITnjLhKSk= -github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20220720151516-797b149ceaaa h1:0brc9iDezo2Gc7yH3p7+La1iFe4WRDg6HYT6llyP8+E= -github.com/onflow/flow-core-contracts/lib/go/templates v0.11.2-0.20220720151516-797b149ceaaa/go.mod h1:JB2hWVxUjhMshUDNVQKfn4dzhhawOO+i3XjlhLMV5MM= -github.com/onflow/flow-emulator v0.38.0/go.mod h1:Rw3DFRyOGC+ukYLUPK/ggVy74ZRr6+8qvVMi20icGbI= -github.com/onflow/flow-emulator v0.38.1 h1:ZfkbhCe2TA4tiZTuhGjuuzUCg+9Z4VWzh40dCtykSZk= -github.com/onflow/flow-emulator v0.38.1/go.mod h1:EK8PWAwcCV5eEP1V1f0ummHW2QZSbeGmb42+SztmE2U= -github.com/onflow/flow-ft/lib/go/contracts v0.5.0 h1:Cg4gHGVblxcejfNNG5Mfj98Wf4zbY76O0Y28QB0766A= -github.com/onflow/flow-ft/lib/go/contracts v0.5.0/go.mod h1:1zoTjp1KzNnOPkyqKmWKerUyf0gciw+e6tAEt0Ks3JE= -github.com/onflow/flow-go v0.26.14-test-synchronization.0.20221011174222-54840e416e81/go.mod h1:WmDshMvR2IEQa4NOaz+edoSIR25b9zC22NuB64efvcM= -github.com/onflow/flow-go v0.26.14-test-synchronization.0.20221012204608-ed91c80fee2b/go.mod h1:WmDshMvR2IEQa4NOaz+edoSIR25b9zC22NuB64efvcM= -github.com/onflow/flow-go v0.28.1-0.20221021192700-74146556857a h1:VVhvDXMEn1vyTg2JmayJTjSsFzfEQImAjX77GAi0h8M= -github.com/onflow/flow-go v0.28.1-0.20221021192700-74146556857a/go.mod h1:lNbN/bqUMITOiq+imWhKOWtDCOAvFT6/zovB+bI/MQg= -github.com/onflow/flow-go-sdk v0.20.0/go.mod h1:52QZyLwU3p3UZ2FXOy+sRl4JPdtvJoae1spIUBOFxA8= -github.com/onflow/flow-go-sdk v0.24.0/go.mod h1:IoptMLPyFXWvyd9yYA6/4EmSeeozl6nJoIv4FaEMg74= -github.com/onflow/flow-go/crypto v0.12.0/go.mod h1:oXuvU0Dr4lHKgye6nHEFbBXIWNv+dBQUzoVW5Go38+o= -github.com/onflow/flow-go/crypto v0.21.3/go.mod h1:vI6V4CY3R6c4JKBxdcRiR/AnjBfL8OSD97bJc60cLuQ= -github.com/onflow/flow-go/crypto v0.24.4/go.mod h1:dkVL98P6GHR48iD9zCB6XlnkJX8IQd00FKgt1reV90w= -github.com/onflow/flow-go/crypto v0.24.5-0.20220824182031-69d634eb5bae h1:4IMhev7aW62eWvasu8aveVRbYT3kLV67fu7gJCrGzs4= -github.com/onflow/flow-go/crypto v0.24.5-0.20220824182031-69d634eb5bae/go.mod h1:HogZhChVfQs1RhQkDnf+cL0pm6leFvr/SI7JS2bAwrk= -github.com/onflow/flow-nft/lib/go/contracts v0.0.0-20220727161549-d59b1e547ac4/go.mod h1:YsvzYng4htDgRB9sa9jxdwoTuuhjK8WYWXTyLkIigZY= -github.com/onflow/flow/protobuf/go/flow v0.1.9/go.mod h1:kRugbzZjwQqvevJhrnnCFMJZNmoSJmxlKt6hTGXZojM= -github.com/onflow/flow/protobuf/go/flow v0.2.2/go.mod h1:gQxYqCfkI8lpnKsmIjwtN2mV/N2PIwc1I+RUK4HPIc8= -github.com/onflow/flow/protobuf/go/flow v0.3.1 h1:4I8ykG6naR3n8Or6eXrZDaGVaoztb3gP2KJ6XKyDufg= -github.com/onflow/flow/protobuf/go/flow v0.3.1/go.mod h1:gQxYqCfkI8lpnKsmIjwtN2mV/N2PIwc1I+RUK4HPIc8= -github.com/onflow/fusd/lib/go/contracts v0.0.0-20211021081023-ae9de8fb2c7e/go.mod h1:CRX9eXtc9zHaRVTW1Xh4Cf5pZgKkQuu1NuSEVyHXr/0= -github.com/onflow/go-bitswap v0.0.0-20221017184039-808c5791a8a8/go.mod h1:73C8FlT4L/Qe4Cf5iXUNL8b2pvu4zs5dJMMJ5V2TjUI= -github.com/onflow/nft-storefront v0.0.1/go.mod h1:Bp2PiIjPjXRX+5iXjk/4aop5AXGGSEo6rdfLXE02kXE= -github.com/onflow/nft-storefront/lib/go/contracts v0.0.0-20220714155620-011db20fe754/go.mod h1:E3ScfQb5XcWJCIAdtIeEnr5i5l2y60GT0BTXeIHseWg= -github.com/onflow/sdks v0.4.4 h1:aJPGJJLAN+mlBWAQxsyuJXeRRMFeLwU6Mp4e/YL6bdU= -github.com/onflow/sdks v0.4.4/go.mod h1:F0dj0EyHC55kknLkeD10js4mo14yTdMotnWMslPirrU= +github.com/onflow/atree v0.6.1-0.20230711151834-86040b30171f/go.mod h1:xvP61FoOs95K7IYdIYRnNcYQGf4nbF/uuJ0tHf4DRuM= +github.com/onflow/atree v0.8.0-rc.6 h1:GWgaylK24b5ta2Hq+TvyOF7X5tZLiLzMMn7lEt59fsA= +github.com/onflow/atree v0.8.0-rc.6/go.mod h1:yccR+LR7xc1Jdic0mrjocbHvUD7lnVvg8/Ct1AA5zBo= +github.com/onflow/cadence v1.0.0-M3/go.mod h1:odXGZZ/wGNA5mwT8bC9v8u8EXACHllB2ABSZK65TGL8= +github.com/onflow/cadence v1.0.0 h1:bvT75F2LZJvDCBmmajAv7QLISK6Qp30FAKcSwqNNH+o= +github.com/onflow/cadence v1.0.0/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU= +github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= +github.com/onflow/crypto v0.25.2 h1:GjHunqVt+vPcdqhxxhAXiMIF3YiLX7gTuTR5O+VG2ns= +github.com/onflow/crypto v0.25.2/go.mod h1:fY7eLqUdMKV8EGOw301unP8h7PvLVy8/6gVR++/g0BY= +github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1 h1:q9tXLIALwQ76bO4bmSrhtTkyc2cZF4/gH11ix9E3F5k= +github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1/go.mod h1:u/mkP/B+PbV33tEG3qfkhhBlydSvAKxfLZSfB4lsJHg= +github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1 h1:FfhMBAb78p6VAWkJ+iqdKLErGQVQgxk5w6DP5ZruWX8= +github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1/go.mod h1:NgbMOYnMh0GN48VsNKZuiwK7uyk38Wyo8jN9+C9QE30= +github.com/onflow/flow-emulator v1.0.1 h1:yQc/YOzj4jJ4hPhWtzDTR4KXTq02LNXySMsU1ZK1uEw= +github.com/onflow/flow-emulator v1.0.1/go.mod h1:xDln3yR7WNfv+45RojHlezV0N8QziMrII16agWaOwFE= +github.com/onflow/flow-ft/lib/go/contracts v1.0.0 h1:mToacZ5NWqtlWwk/7RgIl/jeKB/Sy/tIXdw90yKHcV0= +github.com/onflow/flow-ft/lib/go/contracts v1.0.0/go.mod h1:PwsL8fC81cjnUnTfmyL/HOIyHnyaw/JA474Wfj2tl6A= +github.com/onflow/flow-ft/lib/go/templates v1.0.0 h1:6cMS/lUJJ17HjKBfMO/eh0GGvnpElPgBXx7h5aoWJhs= +github.com/onflow/flow-ft/lib/go/templates v1.0.0/go.mod h1:uQ8XFqmMK2jxyBSVrmyuwdWjTEb+6zGjRYotfDJ5pAE= +github.com/onflow/flow-go v0.38.0-preview.0.0.20241002124048-21cfe5aea5a8 h1:gQcr59aPL9YjsUkgYwcc8ec8h2bw3ttX03553S/aW34= +github.com/onflow/flow-go v0.38.0-preview.0.0.20241002124048-21cfe5aea5a8/go.mod h1:kdaRKWlvm1vC8Lhf2uI4XvDxS+AvfWvrWZr2CFOz8y8= +github.com/onflow/flow-go-sdk v1.0.0-M1/go.mod h1:TDW0MNuCs4SvqYRUzkbRnRmHQL1h4X8wURsCw9P9beo= +github.com/onflow/flow-go-sdk v1.0.0 h1:Ha4fQm1MMKsyaqMkQLCN3rA/yaQKG6DGwiIfx06j40c= +github.com/onflow/flow-go-sdk v1.0.0/go.mod h1:iZkW2IWieVUZKK06mQCxpjJzPDgS0VtGpTaP/rKu6J4= +github.com/onflow/flow-nft/lib/go/contracts v1.2.1 h1:woAAS5z651sDpi7ihAHll8NvRS9uFXIXkL6xR+bKFZY= +github.com/onflow/flow-nft/lib/go/contracts v1.2.1/go.mod h1:2gpbza+uzs1k7x31hkpBPlggIRkI53Suo0n2AyA2HcE= +github.com/onflow/flow-nft/lib/go/templates v1.2.0 h1:JSQyh9rg0RC+D1930BiRXN8lrtMs+ubVMK6aQPon6Yc= +github.com/onflow/flow-nft/lib/go/templates v1.2.0/go.mod h1:p+2hRvtjLUR3MW1NsoJe5Gqgr2eeH49QB6+s6ze00w0= +github.com/onflow/flow/protobuf/go/flow v0.3.2-0.20231121210617-52ee94b830c2/go.mod h1:NA2pX2nw8zuaxfKphhKsk00kWLwfd+tv8mS23YXO4Sk= +github.com/onflow/flow/protobuf/go/flow v0.4.7 h1:iP6DFx4wZ3ETORsyeqzHu7neFT3d1CXF6wdK+AOOjmc= +github.com/onflow/flow/protobuf/go/flow v0.4.7/go.mod h1:NA2pX2nw8zuaxfKphhKsk00kWLwfd+tv8mS23YXO4Sk= +github.com/onflow/flowkit/v2 v2.0.1 h1:GIZ2irR7OTO8wXx7ntYkQp/aaqX6M6Tg5I8wR6xWFI8= +github.com/onflow/flowkit/v2 v2.0.1/go.mod h1:vT6Ml14Vti69UW3n5jbW/kY4a1Qyc/NwM1jT7Tcr/sQ= +github.com/onflow/go-ethereum v1.14.7 h1:gg3awYqI02e3AypRdpJKEvNTJ6kz/OhAqRti0h54Wlc= +github.com/onflow/go-ethereum v1.14.7/go.mod h1:zV14QLrXyYu5ucvcwHUA0r6UaqveqbXaehAVQJlSW+I= +github.com/onflow/sdks v0.5.1-0.20230912225508-b35402f12bba/go.mod h1:F0dj0EyHC55kknLkeD10js4mo14yTdMotnWMslPirrU= +github.com/onflow/sdks v0.6.0-preview.1 h1:mb/cUezuqWEP1gFZNAgUI4boBltudv4nlfxke1KBp9k= +github.com/onflow/sdks v0.6.0-preview.1/go.mod h1:F0dj0EyHC55kknLkeD10js4mo14yTdMotnWMslPirrU= +github.com/onflow/wal v1.0.2 h1:5bgsJVf2O3cfMNK12fiiTyYZ8cOrUiELt3heBJfHOhc= +github.com/onflow/wal v1.0.2/go.mod h1:iMC8gkLqu4nkbkAla5HkSBb+FGyQOZiWz3DYm2wSXCk= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/ginkgo/v2 v2.13.2 h1:Bi2gGVkfn6gQcjNjZJVO8Gf0FHzMPf2phUei9tejVMs= +github.com/onsi/ginkgo/v2 v2.13.2/go.mod h1:XStQ8QcGwLyF4HdfcZB8SFOS/MWCgDuXMSBe6zrvLgM= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= +github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= +github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= -github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= -github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw= -github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= +github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/piprate/flow-go-sdk v0.0.0-20221023084314-834a334dce58 h1:ifFSRXJDxgYZ3sUq5/tf0LiDCrloqIeAmXjbpSJ+ivc= -github.com/piprate/flow-go-sdk v0.0.0-20221023084314-834a334dce58/go.mod h1:TuYfXCuyMmV3e6WFt9Lox6/9K9kxNaMrFciQffhOems= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= -github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= +github.com/pkg/term v1.2.0-beta.2/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/polydawn/refmt v0.89.0 h1:ADJTApkvkeBZsN0tBTx8QjpD9JkmxbKp0cxfr9qszm4= +github.com/polydawn/refmt v0.89.0/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.0/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7/go.mod h1:IToEjHuttnUzwZI5KBSM/LOOW3qLbbrHOEfp3SbECGY= +github.com/psiemens/graceland v1.0.0 h1:L580AVV4Q2XLcPpmvxJRH9UpEAYr/eu2jBKmMglhvM8= github.com/psiemens/graceland v1.0.0/go.mod h1:1Tof+vt1LbmcZFE0lzgdwMN0QBymAChG3FRgDx8XisU= -github.com/psiemens/sconfig v0.0.0-20190623041652-6e01eb1354fc/go.mod h1:+MLKqdledP/8G3rOBpknbLh0IclCf4WneJUtS26JB2U= github.com/psiemens/sconfig v0.1.0 h1:xfWqW+TRpih7mXZIqKYTmpRhlZLQ1kbxV8EjllPv76s= github.com/psiemens/sconfig v0.1.0/go.mod h1:+MLKqdledP/8G3rOBpknbLh0IclCf4WneJUtS26JB2U= +github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs= +github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.40.1 h1:X3AGzUNFs0jVuO3esAGnTfvdgvL4fq655WaOi1snv1Q= +github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c= +github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY= +github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= +github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.1-0.20211004051800-57c86be7915a h1:s7GrsqeorVkFR1vGmQ6WVL9nup0eyQCC+YVUeSQLH/Q= -github.com/rivo/uniseg v0.2.1-0.20211004051800-57c86be7915a/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= -github.com/robertkrimen/otto v0.0.0-20170205013659-6a77b7cbc37d/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= -github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= -github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= -github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= -github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= +github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/schollz/progressbar/v3 v3.7.6/go.mod h1:Y9mmL2knZj3LUaBDyBEzFdPrymIr08hnlFMZmfxwbx4= -github.com/schollz/progressbar/v3 v3.8.3/go.mod h1:pWnVCjSBZsT2X3nx9HfRdnCDrpbevliMeoEVhStwHko= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= +github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/fasthash v1.0.2/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sethvargo/go-retry v0.2.3 h1:oYlgvIvsju3jNbottWABtbnoLC+GDtLdBHxKWxQm/iU= github.com/sethvargo/go-retry v0.2.3/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil/v3 v3.22.2/go.mod h1:WapW1AOOPlHyXr+yOyw3uYx36enocrtSoSBy0L5vUHY= -github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= -github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= -github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= -github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= -github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= -github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= -github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= -github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= -github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= -github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= -github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= -github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= -github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= -github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= -github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= -github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= -github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/slok/go-http-metrics v0.10.0 h1:rh0LaYEKza5eaYRGDXujKrOln57nHBi4TtVhmNEpbgM= +github.com/slok/go-http-metrics v0.10.0/go.mod h1:lFqdaS4kWMfUKCSukjC47PdCeTk+hXDUVm8kLHRqJ38= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= -github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= -github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= -github.com/spf13/afero v1.9.0 h1:sFSLUHgxdnN32Qy38hK3QkYBFXZj9DKjVjCUCtD7juY= -github.com/spf13/afero v1.9.0/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= -github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= -github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/testify v1.1.5-0.20170601210322-f6abca593680/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v0.0.0-20170601210322-f6abca593680/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.7.3/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= -github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs= -github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= -github.com/supranational/blst v0.3.4/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/supranational/blst v0.3.8-0.20220526154634-513d2456b344 h1:m+8fKfQwCAy1QjzINvKe/pYtLjo2dl59x2w9YSEJxuY= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/supranational/blst v0.3.8-0.20220526154634-513d2456b344/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= -github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/texttheater/golang-levenshtein/levenshtein v0.0.0-20200805054039-cae8b0eaed6c h1:HelZ2kAFadG0La9d+4htN4HzQ68Bm2iM9qKMSMES6xg= +github.com/texttheater/golang-levenshtein/levenshtein v0.0.0-20200805054039-cae8b0eaed6c/go.mod h1:JlzghshsemAMDGZLytTFY8C1JQxQPhnatWqNwUXjggo= github.com/thoas/go-funk v0.9.2 h1:oKlNYv0AY5nyf9g+/GhMgS/UO2ces0QRdPKwkhY3VCk= github.com/thoas/go-funk v0.9.2/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= -github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo= -github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= -github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ= -github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/turbolent/prettier v0.0.0-20220320183459-661cc755135d h1:5JInRQbk5UBX8JfUvKh2oYTLMVwj3p6n+wapDDm7hko= github.com/turbolent/prettier v0.0.0-20220320183459-661cc755135d/go.mod h1:Nlx5Y115XQvNcIdIy7dZXaNSUpzwBSge4/Ivk93/Yog= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJdv5KE= -github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE= -github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef h1:wHSqTBrZW24CsNJDfeh9Ex6Pm0Rcpc7qrgKBiL44vF4= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/urfave/cli/v2 v2.10.2/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= +github.com/urfave/cli/v2 v2.24.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= -github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.11 h1:Q47CePddpNGNhk4GCnAx9DDtASi2rasatE0cd26cZoE= github.com/vmihailenco/msgpack/v4 v4.3.11/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/wangjia184/sortedset v0.0.0-20160527075905-f5d03557ba30/go.mod h1:YkocrP2K2tcw938x9gCOmT5G5eCD6jsTz0SZuyAqwIE= -github.com/warpfork/go-testmark v0.3.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0= -github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= -github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= -github.com/whyrusleeping/go-logging v0.0.1/go.mod h1:lDPYj54zutzG1XYfHAhcc7oNXEburHQBn+Iqd4yS4vE= -github.com/whyrusleeping/go-notifier v0.0.0-20170827234753-097c5d47330f/go.mod h1:cZNvX9cFybI01GriPRMXDtczuvUhgbcYr9iCGaNlRv8= -github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= -github.com/whyrusleeping/mdns v0.0.0-20180901202407-ef14215e6b30/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= -github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= -github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= -github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee/go.mod h1:m2aV4LZI4Aez7dP5PMyVKEHhUyEJ/RjmPEDOpDvudHg= github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= -github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= -github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY= github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/blake3 v0.2.0/go.mod h1:G9pM4qQwjRzF1/v7+vabMj/c5mWpGZ2Wzo3Eb4z0pb4= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= -github.com/zeebo/pcg v1.0.0/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= -go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= -go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= -go.opentelemetry.io/otel v1.8.0 h1:zcvBFizPbpa1q7FehvFiHbQwGzmPILebO0tyqIR5Djg= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.8.0 h1:ao8CJIShCaIbaMsGxy+jp2YHSudketpDgDRcbirov78= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.8.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.8.0 h1:LrHL1A3KqIgAgi6mK7Q0aczmzU414AONAGT5xtnp+uo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.8.0/go.mod h1:w8aZL87GMOvOBa2lU/JlVXE1q4chk/0FX+8ai4513bw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.8.0 h1:00hCSGLIxdYK/Z7r8GkaX0QIlfvgU3tmnLlQvcnix6U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.8.0/go.mod h1:twhIvtDQW2sWP1O2cT1N8nkSBgKCRZv2z6COTTBrf8Q= -go.opentelemetry.io/otel/sdk v1.8.0 h1:xwu69/fNuwbSHWe/0PGS888RmjWY181OmcXDQKu7ZQk= -go.opentelemetry.io/otel/sdk v1.8.0/go.mod h1:uPSfc+yfDH2StDM/Rm35WE8gXSNdvCg023J6HeGNO0c= -go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= -go.opentelemetry.io/otel/trace v1.8.0 h1:cSy0DF9eGI5WIfNwZ1q2iUyGj00tGzP24dE1lOlHrfY= +go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= +go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= +go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.18.0 h1:W5hyXNComRa23tGpKwG+FRAc4rfF6ZUg1JReK+QHS80= -go.opentelemetry.io/proto/otlp v0.18.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/dig v1.17.1 h1:Tga8Lz8PcYNsWsyHMZ1Vm0OQOUaJNDyvPImgbAu9YSc= +go.uber.org/dig v1.17.1/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= +go.uber.org/fx v1.20.1 h1:zVwVQGS8zYvhh9Xxcu4w1M6ESyeMzebzj2NbSayZ4Mk= +go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.22.0 h1:Zcye5DUgBloQ9BaT4qc9BnjOFog5TvBSAGkJ3Nf70c0= -go.uber.org/zap v1.22.0/go.mod h1:H4siCOZOrAolnUPJEkfaSjDqyP+BDS0DdDWzwcgt3+U= -go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= -golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190618222545-ea8f1a30c443/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8 h1:GIAS/yBem/gq2MUqgNIzUHW7cJMmx3TGZOrnyYaNQ6c= -golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1940,8 +2378,13 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= -golang.org/x/exp v0.0.0-20220713135740-79cabaa25d75 h1:x03zeu7B2B11ySp+daztnwM5oBJ/8wGUSqrwcw9L0RA= -golang.org/x/exp v0.0.0-20220713135740-79cabaa25d75/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA= +golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1955,7 +2398,8 @@ golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeap golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/image v0.5.0/go.mod h1:FVC7BI/5Ym8R25iw5OLsgshdUBbT1h5jZTpA+mvAdZ4= +golang.org/x/image v0.6.0/go.mod h1:MXLdDR43H7cDJq5GEGXEVeeNhPgi+YYEQ2pC1byI1x0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1979,41 +2423,39 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0-dev.0.20220818022119-ed83ed61efb9 h1:VtCrPQXM5Wo9l7XN64SjBMczl48j8mkP+2e3OhYlz+0= -golang.org/x/mod v0.6.0-dev.0.20220818022119-ed83ed61efb9/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -2040,16 +2482,12 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -2057,15 +2495,33 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220812174116-3211cb980234 h1:RDqmgfe7SvlMWoqC3xwQ2blLO3fcWcxMa3eBLRdRW7E= -golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/oauth2 v0.0.0-20170207211851-4464e7848382/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2080,13 +2536,27 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= +golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= +golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5/go.mod h1:UBKtEnL8aqnd+0JHqZ+2qoMDwtuy6cYhhKNoHLBiTQc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2098,63 +2568,49 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190526052359-791d8a0f4d09/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191206220618-eeba5f6aabab/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2172,61 +2628,47 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200918174421-af09f7315aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201008064518-c1f3e3309c71/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201014080544-cc95f250f6bc/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210223095934-7937bea0104d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210910150752-751e447fb3d0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025112917-711f33c9992c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2234,21 +2676,56 @@ golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 h1:CBpWXWQpIRjzmkkA+M7q9Fqnwd2mZr3AFqexg8YTfoM= -golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2257,27 +2734,43 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181130052023-1c3d964395ce/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -2286,25 +2779,18 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191126055441-b0650ceb63d9/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -2325,13 +2811,11 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200828161849-5deb26317202/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201020161133-226fd2f889ca/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -2341,39 +2825,48 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.8-0.20211029000441-d6a9af8af023/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= gonum.org/v1/gonum v0.6.1/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/gonum v0.13.0/go.mod h1:/WPYRckkfWrhWefxyYTfrTtQR0KH4iyHNuzxqXAKyAU= +gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= +gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.0/go.mod h1:JWIHJ7U20drSQb/aDpTetJzfC1KlAPldJLpkSy88dvQ= gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= -google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.0.0-20170206182103-3d017632ea10/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -2390,7 +2883,6 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.31.0/go.mod h1:CL+9IBCa2WWU6gRuBWaKqGWLFFwbEUXkfeMkHLQWYWo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= @@ -2404,8 +2896,6 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= @@ -2413,29 +2903,53 @@ google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/S google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.81.0 h1:o8WF5AvfidafWbFjsRyupxyEQJNUWxLZJCK5NXrxZZ8= -google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= +google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.139.0/go.mod h1:CVagp6Eekz9CjGZ718Z+sloknzkDJE7Vc1Ckj9+viBk= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= +google.golang.org/api v0.151.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= +google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= -google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= @@ -2463,7 +2977,6 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200831141814-d751682dd103/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -2492,12 +3005,7 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211007155348-82e027067bd4/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -2509,32 +3017,138 @@ google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2 google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd h1:e0TwkXOdbnH/1x5rc5MZ/VYyiZ4v+RdVfrGMqEwT68I= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= +google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= +google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= +google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= +google.golang.org/genproto v0.0.0-20230821184602-ccc8af3d0e93/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= +google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= +google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= +google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:SUBoKXbI1Efip18FClrQVGjWcyd0QZd8KkvdP34t7ww= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230807174057-1744710a1577/go.mod h1:NjCQG/D8JandXxM57PZbAJL1DCNL6EypA0vPPwfsc7c= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20231030173426-d783a09b4405/go.mod h1:GRUCuLdzVqZte8+Dl/D4N25yLzcGqqWaYkeVOwulFqw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/grpc v0.0.0-20170208002647-2a6bf6142e96/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= @@ -2556,8 +3170,26 @@ google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ5 google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2 h1:u+MLGgVf7vRdjEYZ8wDFhAVNmhkbJ5hmrA1LMWK1CAQ= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2573,39 +3205,33 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI= -gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/olebedev/go-duktape.v3 v3.0.0-20190213234257-ec84240a7772/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= -gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200316214253-d7b0ff38cac9/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= -gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8= -gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -2617,15 +3243,12 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2634,20 +3257,77 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= launchpad.net/gocheck v0.0.0-20140225173054-000000000087 h1:Izowp2XBH6Ya6rv+hqbceQyw/gSGoXfH/UPoTGduL54= launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= -lukechampine.com/blake3 v1.1.6/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= -lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= -pgregory.net/rapid v0.4.7 h1:MTNRktPuv5FNqOO151TM9mDTa+XHcX6ypYeISDVD14g= +lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= +lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.37.0/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.0.0-20220904174949-82d86e1b6d56/go.mod h1:YSXjPL62P2AMSxBphRHPn7IkzhVHqkvOnRKAKh+W6ZI= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/libc v1.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA= +modernc.org/libc v1.18.0/go.mod h1:vj6zehR5bfc98ipowQOM2nIDUZnVew/wNC/2tOGS+q0= +modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0= +modernc.org/libc v1.21.4/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI= +modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug= +modernc.org/libc v1.37.6 h1:orZH3c5wmhIQFTXF+Nt+eeauyd+ZIt2BX6ARe+kD+aw= +modernc.org/libc v1.37.6/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= +modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/sqlite v1.18.2/go.mod h1:kvrTLEWgxUcHa2GfHBQtanR1H9ht3hTJNtKpzH9k1u0= +modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ= +modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/tcl v1.13.2/go.mod h1:7CLiGIPo1M8Rv1Mitpv5akc2+8fxUd2y2UzC/MfMzy0= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/lib/go/iinft/gwtf/account.go b/lib/go/iinft/gwtf/account.go index a8cfaa6..adec00b 100644 --- a/lib/go/iinft/gwtf/account.go +++ b/lib/go/iinft/gwtf/account.go @@ -1,15 +1,18 @@ package gwtf import ( + "context" "fmt" "log" "sort" - "github.com/onflow/flow-go-sdk/crypto" + "github.com/onflow/flow-go-sdk" + "github.com/onflow/flowkit/v2" + "github.com/onflow/flowkit/v2/accounts" ) -func (f *GoWithTheFlow) CreateAccounts(saAccountName string) *GoWithTheFlow { - gwtf, err := f.CreateAccountsE(saAccountName) +func (f *GoWithTheFlow) CreateAccounts(ctx context.Context, saAccountName string) *GoWithTheFlow { + gwtf, err := f.CreateAccountsE(ctx, saAccountName) if err != nil { log.Fatal(err) } @@ -18,53 +21,56 @@ func (f *GoWithTheFlow) CreateAccounts(saAccountName string) *GoWithTheFlow { } // CreateAccountsE ensures that all accounts present in the deployment block for the given network is present -func (f *GoWithTheFlow) CreateAccountsE(saAccountName string) (*GoWithTheFlow, error) { +func (f *GoWithTheFlow) CreateAccountsE(ctx context.Context, saAccountName string) (*GoWithTheFlow, error) { p := f.State signerAccount, err := p.Accounts().ByName(saAccountName) if err != nil { return nil, err } - accounts := p.AccountNamesForNetwork(f.Network) - sort.Strings(accounts) + accountList := *p.AccountsForNetwork(f.Services.Network()) + accountNames := accountList.Names() + sort.Strings(accountNames) - f.Logger.Info(fmt.Sprintf("%v\n", accounts)) + f.Logger.Info(fmt.Sprintf("%v\n", accountNames)) - for _, accountName := range accounts { - f.Logger.Info(fmt.Sprintf("Ensuring account with name '%s' is present", accountName)) + for _, accountName := range accountNames { + f.Logger.Debug(fmt.Sprintf("Ensuring account with name '%s' is present", accountName)) // this error can never happen here, there is a test for it. account, _ := p.Accounts().ByName(accountName) - if _, err := f.Services.Accounts.Get(account.Address()); err == nil { - f.Logger.Info("Account is present") + if _, err := f.Services.GetAccount(ctx, account.Address); err == nil { + f.Logger.Debug("Account is present") continue } - a, err := f.Services.Accounts.Create( + a, _, err := f.Services.CreateAccount( + ctx, signerAccount, - []crypto.PublicKey{account.Key().ToConfig().PrivateKey.PublicKey()}, - []int{1000}, - []crypto.SignatureAlgorithm{account.Key().SigAlgo()}, - []crypto.HashAlgorithm{account.Key().HashAlgo()}, - []string{}) + []accounts.PublicKey{{ + Public: account.Key.ToConfig().PrivateKey.PublicKey(), + Weight: flow.AccountKeyWeightThreshold, + SigAlgo: account.Key.SigAlgo(), + HashAlgo: account.Key.HashAlgo(), + }}) if err != nil { return nil, err } f.Logger.Info("Account created " + a.Address.String()) - if a.Address.String() != account.Address().String() { + if a.Address.String() != account.Address.String() { // this condition happens when we create accounts defined in flow.json // after some other accounts were created manually. // In this case, account addresses may not match the expected values - f.Logger.Error("Account address mismatch. Expected " + account.Address().String() + ", got " + a.Address.String()) + f.Logger.Error("Account address mismatch. Expected " + account.Address.String() + ", got " + a.Address.String()) } } return f, nil } // InitializeContracts installs all contracts in the deployment block for the configured network -func (f *GoWithTheFlow) InitializeContracts() *GoWithTheFlow { - if err := f.InitializeContractsE(); err != nil { +func (f *GoWithTheFlow) InitializeContracts(ctx context.Context) *GoWithTheFlow { + if err := f.InitializeContractsE(ctx); err != nil { log.Fatal(err) } @@ -73,9 +79,9 @@ func (f *GoWithTheFlow) InitializeContracts() *GoWithTheFlow { // InitializeContractsE installs all contracts in the deployment block for the configured network // and returns an error if it fails. -func (f *GoWithTheFlow) InitializeContractsE() error { +func (f *GoWithTheFlow) InitializeContractsE(ctx context.Context) error { f.Logger.Info("Deploying contracts") - if _, err := f.Services.Project.Deploy(f.Network, false); err != nil { + if _, err := f.Services.DeployProject(ctx, flowkit.UpdateExistingContract(true)); err != nil { return err } diff --git a/lib/go/iinft/gwtf/account_test.go b/lib/go/iinft/gwtf/account_test.go index 3472b4c..caec0a3 100644 --- a/lib/go/iinft/gwtf/account_test.go +++ b/lib/go/iinft/gwtf/account_test.go @@ -1,9 +1,10 @@ package gwtf import ( + "context" "testing" - "github.com/onflow/flow-cli/pkg/flowkit/output" + "github.com/onflow/flowkit/v2/output" "github.com/stretchr/testify/assert" ) @@ -11,7 +12,7 @@ func TestErrorsInAccountCreation(t *testing.T) { t.Run("Should give error on wrong saAccount name", func(t *testing.T) { g := NewGoWithTheFlow([]string{"../../../../flow.json"}, "emulator", true, output.NoneLog) - _, err := g.CreateAccountsE("foobar") + _, err := g.CreateAccountsE(context.Background(), "foobar") assert.Error(t, err) assert.Contains(t, err.Error(), "could not find account with name foobar") }) @@ -24,7 +25,7 @@ func TestErrorsInAccountCreation(t *testing.T) { t.Run("Should fail when creating local accounts in the wrong order", func(t *testing.T) { g := NewGoWithTheFlow([]string{"fixtures/wrong_account_order_emulator.json"}, "emulator", true, output.NoneLog) - _, err := g.CreateAccountsE("emulator-first") + _, err := g.CreateAccountsE(context.Background(), "emulator-first") assert.Error(t, err) assert.Contains(t, err.Error(), "could not find account with address 179b6b1cb6755e3") }) diff --git a/lib/go/iinft/gwtf/asserts.go b/lib/go/iinft/gwtf/asserts.go index e8a44d7..6f1fc9e 100644 --- a/lib/go/iinft/gwtf/asserts.go +++ b/lib/go/iinft/gwtf/asserts.go @@ -1,6 +1,7 @@ package gwtf import ( + "context" "strings" "testing" "time" @@ -17,7 +18,7 @@ type TransactionResult struct { func (tb FlowTransactionBuilder) Test(t *testing.T) TransactionResult { locale, _ := time.LoadLocation("UTC") time.Local = locale - events, err := tb.RunE() + events, err := tb.RunE(context.Background()) formattedEvents := make([]*FormatedEvent, len(events)) for i, event := range events { ev := ParseEvent(event, uint64(0), time.Unix(0, 0), []string{}) diff --git a/lib/go/iinft/gwtf/cadence.go b/lib/go/iinft/gwtf/cadence.go index ed33495..7be1822 100644 --- a/lib/go/iinft/gwtf/cadence.go +++ b/lib/go/iinft/gwtf/cadence.go @@ -24,18 +24,18 @@ func CadenceValueToJSONString(value cadence.Value) string { return string(j) } -// CadenceValueToInterface convert a candence.Value into interface{} +// CadenceValueToInterface convert a cadence.Value into interface{} func CadenceValueToInterface(field cadence.Value) interface{} { if field == nil { return "" } - switch field := field.(type) { + switch typedField := field.(type) { case cadence.Optional: - return CadenceValueToInterface(field.Value) + return CadenceValueToInterface(typedField.Value) case cadence.Dictionary: result := map[string]interface{}{} - for _, item := range field.Pairs { + for _, item := range typedField.Pairs { key, err := strconv.Unquote(item.Key.String()) if err != nil { result[item.Key.String()] = CadenceValueToInterface(item.Value) @@ -47,15 +47,13 @@ func CadenceValueToInterface(field cadence.Value) interface{} { return result case cadence.Struct: result := map[string]interface{}{} - subStructNames := field.StructType.Fields - - for j, subField := range field.Fields { - result[subStructNames[j].Identifier] = CadenceValueToInterface(subField) + for name, subField := range typedField.FieldsMappedByName() { + result[name] = CadenceValueToInterface(subField) } return result case cadence.Array: var result []interface{} - for _, item := range field.Values { + for _, item := range typedField.Values { result = append(result, CadenceValueToInterface(item)) } return result diff --git a/lib/go/iinft/gwtf/cadence_test.go b/lib/go/iinft/gwtf/cadence_test.go index ebd94d6..1ed7d78 100644 --- a/lib/go/iinft/gwtf/cadence_test.go +++ b/lib/go/iinft/gwtf/cadence_test.go @@ -60,15 +60,11 @@ func TestCadenceValueToJSONString(t *testing.T) { }) t.Run("Struct", func(t *testing.T) { - s := cadence.Struct{ - Fields: []cadence.Value{NewCadenceString("bar")}, - StructType: &cadence.StructType{ - Fields: []cadence.Field{{ - Identifier: "foo", - Type: cadence.StringType{}, - }}, - }, - } + s := cadence.NewStruct([]cadence.Value{NewCadenceString("bar")}) + s.StructType = cadence.NewStructType(nil, "", []cadence.Field{{ + Identifier: "foo", + Type: cadence.StringType, + }}, nil) value := CadenceValueToJSONString(s) assert.Equal(t, `{ "foo": "bar" diff --git a/lib/go/iinft/gwtf/event.go b/lib/go/iinft/gwtf/event.go index 0bcccee..efd2253 100644 --- a/lib/go/iinft/gwtf/event.go +++ b/lib/go/iinft/gwtf/event.go @@ -12,6 +12,7 @@ import ( "time" "github.com/onflow/flow-go-sdk" + "github.com/onflow/flowkit/v2" ) // EventFetcherBuilder builder to hold info about eventhook context. @@ -22,9 +23,8 @@ type EventFetcherBuilder struct { EndAtCurrentHeight bool EndIndex uint64 ProgressFile string - context.Context - NumberOfWorkers int - EventBatchSize uint64 + NumberOfWorkers int + EventBatchSize uint64 } // EventFetcher create an event fetcher builder. @@ -149,7 +149,7 @@ func readProgressFromFile(fileName string) (int64, error) { } // Run runs the eventfetcher returning events or an error -func (e EventFetcherBuilder) Run() ([]*FormatedEvent, error) { +func (e EventFetcherBuilder) Run(ctx context.Context) ([]*FormatedEvent, error) { // if we have a progress file read the value from it and set it as oldHeight if e.ProgressFile != "" { @@ -177,11 +177,11 @@ func (e EventFetcherBuilder) Run() ([]*FormatedEvent, error) { endIndex := e.EndIndex if e.EndAtCurrentHeight { - blockHeight, err := e.GoWithTheFlow.Services.Blocks.GetLatestBlockHeight() + block, err := e.GoWithTheFlow.Services.GetBlock(ctx, flowkit.LatestBlockQuery) if err != nil { return nil, err } - endIndex = blockHeight + endIndex = block.Height } fromIndex := e.FromIndex @@ -201,7 +201,10 @@ func (e EventFetcherBuilder) Run() ([]*FormatedEvent, error) { events = append(events, key) } - blockEvents, err := e.GoWithTheFlow.Services.Events.Get(events, uint64(fromIndex), endIndex, e.EventBatchSize, e.NumberOfWorkers) + blockEvents, err := e.GoWithTheFlow.Services.GetEvents(ctx, events, uint64(fromIndex), endIndex, &flowkit.EventWorker{ + Count: e.NumberOfWorkers, + BlocksPerWorker: e.EventBatchSize, + }) if err != nil { return nil, err } @@ -261,17 +264,11 @@ func FormatEvents(blockEvents []flow.BlockEvents, ignoreFields map[string][]stri // ParseEvent parses a flow event into a more terse representation func ParseEvent(event flow.Event, blockHeight uint64, time time.Time, ignoreFields []string) *FormatedEvent { - fieldNames := make([]string, len(event.Value.EventType.Fields)) - for i, eventTypeFields := range event.Value.EventType.Fields { - fieldNames[i] = eventTypeFields.Identifier - } - finalFields := map[string]interface{}{} - for id, field := range event.Value.Fields { + for name, field := range event.Value.FieldsMappedByName() { skip := false - name := fieldNames[id] for _, ignoreField := range ignoreFields { if ignoreField == name { diff --git a/lib/go/iinft/gwtf/event_test.go b/lib/go/iinft/gwtf/event_test.go index 251d34e..6616fad 100644 --- a/lib/go/iinft/gwtf/event_test.go +++ b/lib/go/iinft/gwtf/event_test.go @@ -4,7 +4,7 @@ import ( "os" "testing" - "github.com/onflow/flow-cli/pkg/flowkit/output" + "github.com/onflow/flowkit/v2/output" "github.com/stretchr/testify/assert" ) diff --git a/lib/go/iinft/gwtf/script.go b/lib/go/iinft/gwtf/script.go index 25a0931..69b8849 100644 --- a/lib/go/iinft/gwtf/script.go +++ b/lib/go/iinft/gwtf/script.go @@ -1,7 +1,9 @@ package gwtf import ( + "context" "fmt" + "github.com/onflow/flowkit/v2" "log" "os" @@ -42,7 +44,7 @@ func (t FlowScriptBuilder) AccountArgument(key string) FlowScriptBuilder { f := t.GoWithTheFlow account := f.Account(key) - return t.Argument(cadence.BytesToAddress(account.Address().Bytes())) + return t.Argument(cadence.BytesToAddress(account.Address.Bytes())) } // RawAccountArgument add an account from a string as an argument @@ -194,13 +196,13 @@ func (t FlowScriptBuilder) UFix64Argument(value string) FlowScriptBuilder { } // Run executes a read only script -func (t FlowScriptBuilder) Run() { - result := t.RunFailOnError() +func (t FlowScriptBuilder) Run(ctx context.Context) { + result := t.RunFailOnError(ctx) log.Printf("Script run from result: %v\n", CadenceValueToJSONString(result)) } // RunReturns executes a read only script -func (t FlowScriptBuilder) RunReturns() (cadence.Value, error) { +func (t FlowScriptBuilder) RunReturns(ctx context.Context) (cadence.Value, error) { f := t.GoWithTheFlow scriptFilePath := fmt.Sprintf("./scripts/%s.cdc", t.FileName) @@ -214,11 +216,15 @@ func (t FlowScriptBuilder) RunReturns() (cadence.Value, error) { } } - result, err := f.Services.Scripts.Execute( - script, - t.Arguments, - scriptFilePath, - f.Network) + result, err := f.Services.ExecuteScript( + ctx, + flowkit.Script{ + Code: script, + Args: t.Arguments, + Location: scriptFilePath, + }, + flowkit.LatestScriptQuery, + ) if err != nil { return nil, err } @@ -229,8 +235,8 @@ func (t FlowScriptBuilder) RunReturns() (cadence.Value, error) { return result, nil } -func (t FlowScriptBuilder) RunFailOnError() cadence.Value { - result, err := t.RunReturns() +func (t FlowScriptBuilder) RunFailOnError(ctx context.Context) cadence.Value { + result, err := t.RunReturns(ctx) if err != nil { t.GoWithTheFlow.Logger.Error(fmt.Sprintf("Error executing script: %s output %v", t.FileName, err)) os.Exit(1) @@ -239,11 +245,11 @@ func (t FlowScriptBuilder) RunFailOnError() cadence.Value { } // RunReturnsJSONString runs the script and returns pretty printed json string -func (t FlowScriptBuilder) RunReturnsJSONString() string { - return CadenceValueToJSONString(t.RunFailOnError()) +func (t FlowScriptBuilder) RunReturnsJSONString(ctx context.Context) string { + return CadenceValueToJSONString(t.RunFailOnError(ctx)) } // RunReturnsInterface runs the script and returns interface{} -func (t FlowScriptBuilder) RunReturnsInterface() interface{} { - return CadenceValueToInterface(t.RunFailOnError()) +func (t FlowScriptBuilder) RunReturnsInterface(ctx context.Context) interface{} { + return CadenceValueToInterface(t.RunFailOnError(ctx)) } diff --git a/lib/go/iinft/gwtf/script_test.go b/lib/go/iinft/gwtf/script_test.go index 9ea80c2..9e72dcf 100644 --- a/lib/go/iinft/gwtf/script_test.go +++ b/lib/go/iinft/gwtf/script_test.go @@ -1,17 +1,19 @@ package gwtf import ( + "context" "testing" "github.com/onflow/cadence" - "github.com/onflow/flow-cli/pkg/flowkit/output" + "github.com/onflow/flowkit/v2/output" "github.com/stretchr/testify/assert" ) func TestSetupFails(t *testing.T) { g := NewGoWithTheFlow([]string{"../../../../flow.json"}, "emulator", true, output.NoneLog) - _, err := g.CreateAccountsE("foobar") + ctx := context.Background() + _, err := g.CreateAccountsE(ctx, "foobar") assert.Error(t, err) assert.Contains(t, err.Error(), "could not find account with name foobar") } diff --git a/lib/go/iinft/gwtf/setup.go b/lib/go/iinft/gwtf/setup.go index 4f5a10a..86602a7 100644 --- a/lib/go/iinft/gwtf/setup.go +++ b/lib/go/iinft/gwtf/setup.go @@ -1,34 +1,37 @@ package gwtf import ( + "context" "fmt" "log" - "github.com/onflow/flow-cli/pkg/flowkit" - "github.com/onflow/flow-cli/pkg/flowkit/config" - "github.com/onflow/flow-cli/pkg/flowkit/gateway" - "github.com/onflow/flow-cli/pkg/flowkit/output" - "github.com/onflow/flow-cli/pkg/flowkit/services" + "github.com/onflow/flowkit/v2" + "github.com/onflow/flowkit/v2/accounts" + "github.com/onflow/flowkit/v2/config" + "github.com/onflow/flowkit/v2/gateway" + "github.com/onflow/flowkit/v2/output" "github.com/spf13/afero" ) // GoWithTheFlow Entire configuration to work with Go With the Flow type GoWithTheFlow struct { - State *flowkit.State - Services *services.Services - Network string + State *flowkit.State + Services flowkit.Services + //Network string Logger output.Logger PrependNetworkToAccountNames bool } // NewGoWithTheFlowInMemoryEmulator this method is used to create an in memory emulator, deploy all contracts for the emulator and create all accounts func NewGoWithTheFlowInMemoryEmulator() *GoWithTheFlow { - return NewGoWithTheFlow(config.DefaultPaths(), "emulator", true, output.InfoLog).InitializeContracts().CreateAccounts("emulator-account") + ctx := context.Background() + return NewGoWithTheFlow(config.DefaultPaths(), "emulator", true, output.InfoLog).InitializeContracts(ctx).CreateAccounts(ctx, "emulator-account") } // NewTestingEmulator create new emulator that ignore all log messages func NewTestingEmulator() *GoWithTheFlow { - return NewGoWithTheFlow(config.DefaultPaths(), "emulator", true, output.NoneLog).InitializeContracts().CreateAccounts("emulator-account") + ctx := context.Background() + return NewGoWithTheFlow(config.DefaultPaths(), "emulator", true, output.NoneLog).InitializeContracts(ctx).CreateAccounts(ctx, "emulator-account") } // NewGoWithTheFlowForNetwork creates a new gwtf client for the provided network @@ -67,9 +70,9 @@ func (f *GoWithTheFlow) DoNotPrependNetworkToAccountNames() *GoWithTheFlow { } // Account fetch an account from flow.json, prefixing the name with network- as default (can be turned off) -func (f *GoWithTheFlow) Account(key string) *flowkit.Account { +func (f *GoWithTheFlow) Account(key string) *accounts.Account { if f.PrependNetworkToAccountNames { - key = fmt.Sprintf("%s-%s", f.Network, key) + key = fmt.Sprintf("%s-%s", f.Services.Network().Name, key) } account, err := f.State.Accounts().ByName(key) @@ -90,28 +93,32 @@ func NewGoWithTheFlowError(paths []string, network string, inMemory bool, logLev } logger := output.NewStdoutLogger(logLevel) - var service *services.Services + var service flowkit.Services if inMemory { // YAY, we can run it inline in memory! acc, _ := state.EmulatorServiceAccount() - gw := gateway.NewEmulatorGateway(acc) - service = services.NewServices(gw, state, logger) + pk, _ := acc.Key.PrivateKey() + gw := gateway.NewEmulatorGateway(&gateway.EmulatorKey{ + PublicKey: (*pk).PublicKey(), + SigAlgo: acc.Key.SigAlgo(), + HashAlgo: acc.Key.HashAlgo(), + }) + service = flowkit.NewFlowkit(state, config.EmulatorNetwork, gw, logger) } else { - network, err := state.Networks().ByName(network) + networkDef, err := state.Networks().ByName(network) if err != nil { return nil, err } - host := network.Host - gw, err := gateway.NewGrpcGateway(host) + gw, err := gateway.NewGrpcGateway(*networkDef) if err != nil { return nil, err } - service = services.NewServices(gw, state, logger) + service = flowkit.NewFlowkit(state, *networkDef, gw, logger) } return &GoWithTheFlow{ - State: state, - Services: service, - Network: network, + State: state, + Services: service, + //Network: network, Logger: logger, PrependNetworkToAccountNames: true, }, nil diff --git a/lib/go/iinft/gwtf/templates.go b/lib/go/iinft/gwtf/templates.go index 8034423..d7d0721 100644 --- a/lib/go/iinft/gwtf/templates.go +++ b/lib/go/iinft/gwtf/templates.go @@ -2,6 +2,7 @@ package gwtf import ( "bufio" + "context" "encoding/base64" "fmt" "io" @@ -69,13 +70,13 @@ func fileAsBase64(path string) (string, error) { } // UploadFile reads a file, base64 encodes it and chunk upload to /storage/upload -func (f *GoWithTheFlow) UploadFile(filename, accountName string) error { +func (f *GoWithTheFlow) UploadFile(ctx context.Context, filename, accountName string) error { content, err := fileAsBase64(filename) if err != nil { return err } - return f.UploadString(content, accountName) + return f.UploadString(ctx, content, accountName) } func getURL(url string) ([]byte, error) { @@ -90,39 +91,39 @@ func getURL(url string) ([]byte, error) { } // DownloadAndUploadFile reads a file, base64 encodes it and chunk upload to /storage/upload -func (f *GoWithTheFlow) DownloadAndUploadFile(url, accountName string) error { +func (f *GoWithTheFlow) DownloadAndUploadFile(ctx context.Context, url, accountName string) error { body, err := getURL(url) if err != nil { return err } encoded := base64.StdEncoding.EncodeToString(body) - return f.UploadString(encoded, accountName) + return f.UploadString(ctx, encoded, accountName) } // DownloadImageAndUploadAsDataURL download an image and upload as data url -func (f *GoWithTheFlow) DownloadImageAndUploadAsDataURL(url, accountName string) error { +func (f *GoWithTheFlow) DownloadImageAndUploadAsDataURL(ctx context.Context, url, accountName string) error { body, err := getURL(url) if err != nil { return err } content := contentAsImageDataURL(body) - return f.UploadString(content, accountName) + return f.UploadString(ctx, content, accountName) } // UploadImageAsDataURL will upload a image file from the filesystem into /storage/upload of the given account -func (f *GoWithTheFlow) UploadImageAsDataURL(filename, accountName string) error { +func (f *GoWithTheFlow) UploadImageAsDataURL(ctx context.Context, filename, accountName string) error { content, err := fileAsImageData(filename) if err != nil { return err } - return f.UploadString(content, accountName) + return f.UploadString(ctx, content, accountName) } -// UploadString will upload the given string data in 1mb chunkts to /storage/upload of the given account -func (f *GoWithTheFlow) UploadString(content, accountName string) error { +// UploadString will upload the given string data in 1mb chunks to /storage/upload of the given account +func (f *GoWithTheFlow) UploadString(ctx context.Context, content, accountName string) error { // unload previous content if any. if _, err := f.Transaction(` transaction { @@ -132,7 +133,7 @@ func (f *GoWithTheFlow) UploadString(content, accountName string) error { log(existing) } } - `).SignProposeAndPayAs(accountName).RunE(); err != nil { + `).SignProposeAndPayAs(accountName).RunE(ctx); err != nil { return err } @@ -148,7 +149,7 @@ func (f *GoWithTheFlow) UploadString(content, accountName string) error { log(part) } } - `).SignProposeAndPayAs(accountName).StringArgument(part).RunE(); err != nil { + `).SignProposeAndPayAs(accountName).StringArgument(part).RunE(ctx); err != nil { return err } } diff --git a/lib/go/iinft/gwtf/transaction.go b/lib/go/iinft/gwtf/transaction.go index 7fa556a..e43359e 100644 --- a/lib/go/iinft/gwtf/transaction.go +++ b/lib/go/iinft/gwtf/transaction.go @@ -1,16 +1,19 @@ package gwtf import ( + "context" "errors" "fmt" + "github.com/onflow/flowkit/v2" + "github.com/onflow/flowkit/v2/transactions" "log" "os" "time" "github.com/araddon/dateparse" "github.com/onflow/cadence" - "github.com/onflow/flow-cli/pkg/flowkit" "github.com/onflow/flow-go-sdk" + "github.com/onflow/flowkit/v2/accounts" ) // TransactionFromFile will start a flow transaction builder @@ -19,7 +22,7 @@ func (f *GoWithTheFlow) TransactionFromFile(filename string) FlowTransactionBuil GoWithTheFlow: f, FileName: filename, Arguments: []cadence.Value{}, - PayloadSigners: []*flowkit.Account{}, + PayloadSigners: []*accounts.Account{}, GasLimit: 9999, } } @@ -31,7 +34,7 @@ func (f *GoWithTheFlow) Transaction(content string) FlowTransactionBuilder { FileName: "inline", Content: content, Arguments: []cadence.Value{}, - PayloadSigners: []*flowkit.Account{}, + PayloadSigners: []*accounts.Account{}, GasLimit: 9999, } } @@ -71,7 +74,7 @@ func (tb FlowTransactionBuilder) SignProposeAndPayAs(signer string) FlowTransact // SignProposeAndPayAsService set the payer, proposer and envelope signer func (tb FlowTransactionBuilder) SignProposeAndPayAsService() FlowTransactionBuilder { - key := fmt.Sprintf("%s-account", tb.GoWithTheFlow.Network) + key := fmt.Sprintf("%s-account", tb.GoWithTheFlow.Services.Network().Name) account, err := tb.GoWithTheFlow.State.Accounts().ByName(key) if err != nil { log.Fatal(err) @@ -94,7 +97,7 @@ func (tb FlowTransactionBuilder) AccountArgument(key string) FlowTransactionBuil f := tb.GoWithTheFlow account := f.Account(key) - return tb.Argument(cadence.BytesToAddress(account.Address().Bytes())) + return tb.Argument(cadence.BytesToAddress(account.Address.Bytes())) } // StringArgument add a String Argument to the transaction @@ -268,18 +271,18 @@ func (tb FlowTransactionBuilder) PayloadSigner(value string) FlowTransactionBuil } // RunPrintEventsFull will run a transaction and print all events -func (tb FlowTransactionBuilder) RunPrintEventsFull() { - PrintEvents(tb.Run(), map[string][]string{}) +func (tb FlowTransactionBuilder) RunPrintEventsFull(ctx context.Context) { + PrintEvents(tb.Run(ctx), map[string][]string{}) } // RunPrintEvents will run a transaction and print all events ignoring some fields -func (tb FlowTransactionBuilder) RunPrintEvents(ignoreFields map[string][]string) { - PrintEvents(tb.Run(), ignoreFields) +func (tb FlowTransactionBuilder) RunPrintEvents(ctx context.Context, ignoreFields map[string][]string) { + PrintEvents(tb.Run(ctx), ignoreFields) } -// Run run the transaction -func (tb FlowTransactionBuilder) Run() []flow.Event { - events, err := tb.RunE() +// Run runs the transaction +func (tb FlowTransactionBuilder) Run(ctx context.Context) []flow.Event { + events, err := tb.RunE(ctx) if err != nil { tb.GoWithTheFlow.Logger.Error(fmt.Sprintf("Error executing script: %s output %v", tb.FileName, err)) os.Exit(1) @@ -288,7 +291,7 @@ func (tb FlowTransactionBuilder) Run() []flow.Event { } // RunE runs returns error -func (tb FlowTransactionBuilder) RunE() ([]flow.Event, error) { +func (tb FlowTransactionBuilder) RunE(ctx context.Context) ([]flow.Event, error) { if tb.Proposer == nil { return nil, errors.New("you need to set the proposer") @@ -310,33 +313,47 @@ func (tb FlowTransactionBuilder) RunE() ([]flow.Event, error) { } authorizers := make([]flow.Address, len(authorizerAccounts)) - var signers []*flowkit.Account + var signers []*accounts.Account for i, signer := range authorizerAccounts { - authorizers[i] = signer.Address() - if signer.Name() != tb.Payer.Name() { + authorizers[i] = signer.Address + if signer.Name != tb.Payer.Name { signers = append(signers, signer) } - signerNames[signer.Name()] = true + signerNames[signer.Name] = true } - if _, found := signerNames[tb.Proposer.Name()]; !found && tb.Proposer.Name() != tb.Payer.Name() { + if _, found := signerNames[tb.Proposer.Name]; !found && tb.Proposer.Name != tb.Payer.Name { return nil, errors.New("proposer doesn't match any authorizers or the payer") } // we append the Payer at the end here so that it signs last signers = append(signers, tb.Payer) - tx, err := tb.GoWithTheFlow.Services.Transactions.Build( - tb.Proposer.Address(), - authorizers, - tb.Payer.Address(), - tb.Proposer.Key().Index(), - code, - codeFileName, + tx, err := tb.GoWithTheFlow.Services.BuildTransaction( + ctx, + transactions.AddressesRoles{ + Proposer: tb.Proposer.Address, + Authorizers: authorizers, + Payer: tb.Payer.Address, + }, + tb.Proposer.Key.Index(), + flowkit.Script{ + Code: code, + Args: tb.Arguments, + Location: codeFileName, + }, tb.GasLimit, - tb.Arguments, - tb.GoWithTheFlow.Network, - true, + // + ////tb.Proposer.Address, + ////authorizers, + ////tb.Payer.Address, + //tb.Proposer.Key.Index(), + //code, + //codeFileName, + //tb.GasLimit, + //tb.Arguments, + //tb.GoWithTheFlow.Network, + //true, ) if err != nil { return nil, err @@ -354,9 +371,7 @@ func (tb FlowTransactionBuilder) RunE() ([]flow.Event, error) { } } - txBytes := []byte(fmt.Sprintf("%x", tx.FlowTransaction().Encode())) - _, res, err := tb.GoWithTheFlow.Services.Transactions.SendSigned(txBytes, true) - + _, res, err := tb.GoWithTheFlow.Services.SendSignedTransaction(ctx, tx) if err != nil { return nil, err } @@ -387,9 +402,9 @@ type FlowTransactionBuilder struct { FileName string Content string Arguments []cadence.Value - Proposer *flowkit.Account - Payer *flowkit.Account - MainSigner *flowkit.Account - PayloadSigners []*flowkit.Account + Proposer *accounts.Account + Payer *accounts.Account + MainSigner *accounts.Account + PayloadSigners []*accounts.Account GasLimit uint64 } diff --git a/lib/go/iinft/gwtf/transaction_test.go b/lib/go/iinft/gwtf/transaction_test.go index 1b9039a..c574af4 100644 --- a/lib/go/iinft/gwtf/transaction_test.go +++ b/lib/go/iinft/gwtf/transaction_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/onflow/cadence" - "github.com/onflow/flow-cli/pkg/flowkit/output" + "github.com/onflow/flowkit/v2/output" "github.com/stretchr/testify/assert" ) diff --git a/lib/go/iinft/internal/assets/assets.go b/lib/go/iinft/internal/assets/assets.go index ffb8b9b..6d8c692 100644 --- a/lib/go/iinft/internal/assets/assets.go +++ b/lib/go/iinft/internal/assets/assets.go @@ -1,20 +1,25 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// contracts/DigitalArt.cdc (18.815kB) -// contracts/Evergreen.cdc (5.104kB) -// contracts/SequelMarketplace.cdc (9.762kB) -// contracts/standard/FUSD.cdc (7.393kB) -// contracts/standard/FlowToken.cdc (7.085kB) -// contracts/standard/FungibleToken.cdc (6.984kB) -// contracts/standard/FungibleTokenSwitchboard.cdc (10.656kB) -// contracts/standard/MetadataViews.cdc (23.979kB) -// contracts/standard/NFTStorefront.cdc (20.528kB) -// contracts/standard/NonFungibleToken.cdc (4.825kB) -// contracts/thirdparty/nft_catalog/NFTCatalog.cdc (16.209kB) -// contracts/thirdparty/nft_catalog/NFTRetrieval.cdc (8.865kB) -// contracts/thirdparty/versus/Art.cdc (13.246kB) -// contracts/thirdparty/versus/Content.cdc (2.489kB) -// flow.json (4.565kB) +// contracts/DigitalArt.cdc (20.533kB) +// contracts/Evergreen.cdc (5.402kB) +// contracts/SOURCES.md (1.358kB) +// contracts/SequelMarketplace.cdc (10.006kB) +// contracts/standard/Burner.cdc (1.998kB) +// contracts/standard/ExampleNFT.cdc (16.847kB) +// contracts/standard/FUSD.cdc (8.715kB) +// contracts/standard/FlowToken.cdc (13.194kB) +// contracts/standard/FungibleToken.cdc (10.011kB) +// contracts/standard/FungibleTokenMetadataViews.cdc (6.915kB) +// contracts/standard/FungibleTokenSwitchboard.cdc (19.265kB) +// contracts/standard/MetadataViews.cdc (29.885kB) +// contracts/standard/NFTStorefront.cdc (21.491kB) +// contracts/standard/NonFungibleToken.cdc (13.753kB) +// contracts/standard/ViewResolver.cdc (2.706kB) +// contracts/thirdparty/nft_catalog/NFTCatalog.cdc (16.598kB) +// contracts/thirdparty/nft_catalog/NFTRetrieval.cdc (8.973kB) +// contracts/thirdparty/versus/Art.cdc (17.353kB) +// contracts/thirdparty/versus/Content.cdc (2.981kB) +// flow.json (5.016kB) package assets @@ -24,7 +29,6 @@ import ( "crypto/sha256" "fmt" "io" - "io/ioutil" "os" "path/filepath" "strings" @@ -84,7 +88,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _contractsDigitalartCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x3c\x5d\x73\x1b\x37\x92\xcf\xd6\xaf\x68\xf3\xc1\x22\xeb\x28\xd2\xa9\xda\xba\xad\x62\x99\x71\xb4\x96\x75\xcb\xbb\x58\x71\x49\x72\x72\x57\x29\xd7\x2d\x38\xd3\x24\x11\x0d\x81\x09\x80\x11\xcd\x78\xfd\xdf\xaf\xf0\x35\x03\xcc\x60\x48\xda\x4e\x6e\x2b\x7a\xb0\xc9\x19\xa0\xbb\xd1\xdf\x68\x34\x48\xb7\x25\x17\x0a\x6e\x38\xbb\xae\xd8\x9a\x2e\x0b\xbc\xe7\x0f\xc8\x60\x25\xf8\x16\x06\x93\xa9\x54\x84\xe5\x44\xe4\xd3\xf6\x88\x49\x96\x67\x83\x33\x37\xfd\x0d\x2a\x92\x13\x45\x7e\xa4\xb8\x93\xdd\xb9\xd1\xeb\x68\xe2\xeb\x47\x14\x6b\x81\x01\xc2\xfa\x89\x1d\x77\x36\x9d\xc2\x15\x5d\x53\x45\x8a\x4b\xa1\x20\xc7\x15\x65\x28\xe1\xe6\xfa\x5e\x82\xda\x10\x05\x02\x4b\x81\x12\x99\x82\xdc\x0e\x03\x22\x14\x50\x06\x77\xf8\x6b\x85\xc5\x44\x03\xb8\x43\x84\x8d\x52\xa5\x9c\x4d\xa7\xd2\x3e\x96\x25\xc9\x10\x56\x5c\xc0\x96\x0b\x84\x1c\x15\xa1\x85\xd4\xa3\x5b\x18\x95\x5e\xac\x04\x59\x95\x2d\x82\xcd\x0b\xf0\x6b\xf4\x33\xef\x78\x25\x32\x9c\xd5\xe8\xd6\x54\x6d\xaa\xe5\x24\xe3\xdb\x69\x49\x4b\x41\x14\x3a\x0a\x2e\x56\x05\xdf\x5d\x64\x9c\x29\x41\x32\x25\xf5\xf4\xb2\x5a\x82\x7f\x10\x90\x30\xeb\x4a\xe7\xe3\xd9\x19\x00\xc0\x74\xaa\xe9\x61\x4a\xba\x6f\xe6\x3f\x0d\x05\xf5\x53\x78\xe5\x60\x2d\x18\x55\x94\x14\xf4\x37\xcc\x87\xa3\xd6\x98\x9f\xa8\xda\xe4\x82\xec\x86\x34\x9f\xc1\xbb\x05\x53\xff\xfe\x97\xb1\x91\xc5\x0c\x2e\xf3\x5c\xa0\x94\x2f\xdb\x53\xae\xb0\xe4\x92\xaa\x68\x86\xe2\xfd\xe3\xdf\x50\xa6\x30\x8f\x86\x13\x29\x51\xcd\xe0\x4e\x09\xca\xd6\x63\xc0\x9c\x2a\xca\x59\xf3\x7e\xcb\xf3\xc5\x95\xff\x3a\xaa\x17\x7b\x43\xb6\x98\xc3\x5b\xa2\x36\x9d\x15\x17\xa8\xd7\x5b\x14\x98\x69\x48\x77\x8a\x0b\xb2\x46\x3d\x52\x63\xa9\xbf\xf4\x0c\x7f\x5b\x2d\x0b\x9a\xd9\xd1\xcd\xe7\x68\xf0\x65\xbe\xa5\xa7\x81\x35\x23\xdf\x0a\xfa\x48\x94\x1b\x19\x7c\xa9\x97\x72\xbf\x41\x50\x5c\xab\x2b\xab\xb6\x4b\x14\xc0\x57\xa1\xd6\x35\xfa\xbd\x21\x8f\x08\x4b\xad\x70\x5b\xc3\xc7\xf6\xc2\x1f\x89\xb0\x80\xee\xaa\xb2\x2c\xf6\x9e\x69\x35\xa2\x1f\x89\xa0\x64\x59\x20\x48\xfa\x1b\x42\x4e\xcd\x82\x89\xd8\x6b\x84\x6f\x88\x54\x28\x40\xa0\x34\x5a\x6b\x99\x4a\xb2\x0c\xa5\x1c\x4a\x2c\x56\x23\x03\x7d\x6b\x46\xc9\x19\x7c\xb4\xf2\x9a\xb9\x79\x9f\x6a\x1c\x0e\x0e\x32\x8d\x48\x1a\x42\x2f\x38\xbb\xc8\x71\x4b\x58\x0e\xab\x8a\x59\xa4\x05\x55\x7b\xd0\x4f\xbc\x15\x13\x07\x1b\x32\x5e\x1a\x82\x88\xb5\x2a\x0f\xd7\x30\x80\x4a\xa8\x24\xe6\xa0\xb8\x01\x0c\x24\xe0\x98\x53\x1c\x09\xc3\x82\x6e\xa9\xc2\x1c\x96\x7b\xd8\x3a\x6f\x33\xd9\x92\x0f\xaf\xdd\x80\xd1\xc4\xc3\xfc\x81\x65\x08\xa4\x28\x9a\xb9\x44\xa0\xe3\xed\x18\xd4\x06\x3d\x4d\x54\xc2\x79\x56\x70\x89\xf9\x39\x2c\x2b\xed\x68\xb6\x84\x32\x09\x9c\x5d\x64\x1b\x42\x1b\x22\x39\x94\xc2\x6a\xba\xc0\x0b\x0d\x88\xb2\xb5\x15\xe0\x8e\xaa\x8d\x01\x29\xc9\x16\xad\xd2\xc3\xe2\x6a\xd2\x16\xa1\x54\xa2\xca\x94\xe7\xe2\x47\xf3\x3c\x14\xaf\x5f\xd0\xac\xf6\xb3\x2f\x3b\x63\xd0\xfb\xa5\xb7\x82\xaf\x68\x81\xb3\xc6\x53\x4d\xdc\xa3\xee\x24\x86\x1f\xd4\xeb\xd8\xf6\x3a\x63\x2c\x0b\x66\xf0\x37\xce\x8b\xb3\xfa\x2d\x65\x54\x0d\xbb\x74\x8d\x4f\xa1\x63\x04\xc1\x1a\xf5\x9f\x56\xb5\x89\x07\x06\xf3\x7a\xbd\xdd\x41\x6d\xe8\x30\xef\x20\xec\x4e\x0a\x56\x09\x73\xf8\xa6\x3b\xc0\x2e\x11\xe6\xb0\x22\x85\x6c\x00\x7c\x3a\x8b\x98\xb1\xaa\x18\x30\xdc\x39\x48\x8b\xab\xe1\x08\x3c\xd3\x5a\xeb\xd1\x5e\xe0\x91\x14\x30\xef\xe0\x3f\x46\x5c\xe7\xd1\xbf\x39\x0c\xc3\x6f\x46\xd1\x5c\x81\xaa\x12\x4c\x63\x39\x44\x2e\x79\x24\xb4\xd0\x36\xe9\xcd\xa0\x9f\x66\xba\x82\xa7\x21\x33\x9e\x3d\x8b\xc5\xf2\x34\xb0\x26\xf8\x36\x41\x69\x0c\x2e\xa0\xb1\x1f\xcc\xc5\xe9\xeb\xfd\x04\x58\x48\xec\x47\xf2\x3c\x1e\x9d\x62\xca\x74\x0a\x3f\xa1\x55\x67\xef\xd2\x80\xac\xb4\xc5\xf5\x78\x03\xa0\x4c\x2a\x24\xb9\x76\x34\x39\x16\x68\xec\x7a\xeb\x5d\x66\xc6\x45\x2e\x43\xe0\xf7\x1b\x2a\xa1\x14\x5c\x7b\x4f\x40\x26\x2b\x81\x12\x18\x5f\xf2\x7c\x0f\x19\x61\x46\x51\xad\x07\x73\x29\xc5\x21\xef\x10\x4a\xd1\x90\x3c\x1c\x1d\x31\x1a\x46\x8b\x93\xec\x25\x39\x2e\xd6\xc2\xe7\x07\x4c\x44\x89\x2a\xb4\x90\x80\xc7\x3a\x0e\x78\x72\xbc\x83\x77\x11\x0d\x2e\x85\x3a\x97\x8d\x63\xee\x73\x80\x7e\xfa\xc7\x90\xaf\x3a\xe8\x47\x3c\xd1\xe6\xc5\xc8\x16\x7d\xfe\x10\x0e\xbe\x14\x8a\x4a\xfb\xba\x33\x87\x98\x77\xa9\x59\x57\x28\x33\x41\xcb\xc8\x42\xfd\xac\xbc\x79\x97\x9a\xfa\x06\x73\x4a\x40\xed\x4b\x9c\xc1\x62\x4b\xd6\x38\x86\xcb\x2a\xa7\x7c\x0c\x3f\xd2\x1c\x79\x07\x9c\x1d\x99\x20\x1c\xde\xdd\x2e\xb4\xa6\x69\x85\xe0\x82\xae\x29\x23\x45\x94\xd2\xea\xcc\x10\x99\x9a\x74\x40\xba\x17\xef\x6e\x17\x47\x01\x87\xf0\x74\xd0\xa2\xb8\xf3\xd3\x61\x48\x27\x38\xd1\x11\x78\x53\x6d\x97\x8c\xd0\x62\xd4\x8b\xea\xad\x9d\xda\x83\xf1\xcd\xe2\xcd\x6b\xb3\x4e\x18\xe2\x64\x3d\x81\x73\xaa\xf9\x32\xfd\xa5\xc4\xf5\xf9\xa8\x03\x72\x4b\xb7\xd8\xc7\x14\xaf\x92\x4d\xc0\xd7\x8b\x58\xd3\x47\x64\x3a\xc0\x4e\xfc\x00\x6b\xb5\x15\xa3\xbf\x56\x36\xa7\xaf\xad\xca\x9a\xeb\x38\x04\x4a\x73\x64\x8a\xae\xa8\x4d\x16\xf4\xc8\xb4\xe9\x99\xa8\xda\x13\x1c\x5d\x02\x97\x48\x44\x4c\xca\xb2\x25\xfb\x20\x6f\x2b\x05\xcf\xab\x0c\xf3\x9a\x32\xbb\x00\x4b\xda\xa4\xe3\x42\x1c\xd0\x8c\xb0\x73\x05\x4b\x04\xfc\x90\x21\xe6\x0d\xb5\x7e\x87\x30\x36\x59\x89\xda\xa0\x40\x9d\xab\x30\x0e\x7c\x59\xd0\x35\x89\xb4\xd8\xe6\x27\x36\x6f\x2a\x0a\xab\x03\x98\x15\x44\x60\x5e\xd3\x1c\x91\xb0\x58\x41\xe0\xa1\xe7\x73\xf8\x66\x1c\x33\x5d\xe3\xe2\x0c\x2f\xf8\xea\x82\x5c\x3c\x50\x96\x77\xb5\xa4\x01\xd0\xc7\xb8\xab\xc5\x95\x97\xa6\x65\xc3\xb9\xb4\x52\x98\x58\x1e\x2c\xae\x34\x1a\x2f\xc5\x70\xb6\xe6\x61\xe4\xaf\x4d\xd6\x58\x6a\xdb\xce\xaa\x82\x88\xd0\xe5\x18\x1d\xe9\xba\x81\x70\xef\xd1\x6b\x29\xab\xaa\x88\xcc\x2f\x70\x5f\xf0\x9f\x77\x3f\xdc\x84\x13\x89\x04\xaa\x00\x3f\x50\xa9\xa3\x06\x31\x42\x01\x45\xb7\x18\xa6\x93\x3b\x22\x41\x22\x29\x30\xc5\x30\x07\xb9\xc7\xa0\x34\xc7\x5e\xe9\x94\xf3\x7b\x9e\x3d\xd4\xc1\x07\x1a\x1e\x1a\x62\xff\x38\xf2\x2c\xbe\x53\x28\xb3\x96\xb4\xd1\x41\xf3\x10\x75\xb1\xc6\x29\x13\x1e\x97\x58\xa7\xf9\x02\x95\xa0\xf8\x68\xe9\xcb\x2a\x21\xb4\x7b\x8a\x00\xc0\x90\xae\x20\xdb\x10\xb6\xc6\x7c\x34\x39\x7b\xf2\x24\x12\xee\xdf\x91\x34\xd4\xc6\x29\x6b\x14\xd9\xc2\x20\x32\x8e\xde\xc4\xa1\x22\x7e\x97\x08\x08\xf1\x80\xd0\x9b\xc5\x6f\xba\x9e\x3a\xf9\xbe\xeb\x5e\xe3\x61\x6d\x97\x19\xbf\x6d\x6f\xa6\xe3\xa9\x1d\xd3\x6c\x2d\x3c\xda\x98\xc7\x53\xbb\x4a\x3a\x6e\xe5\xa4\xa1\x9a\x24\xe0\x46\x72\xd1\x4f\xd3\x3b\x01\x2d\x16\x9d\xa8\x84\x96\x5f\xbf\xb4\x92\x81\xb9\x13\x51\x77\x40\x20\x1e\x98\x87\xc2\xea\x0e\x35\x31\x6a\x6e\xe4\x95\xc8\x78\x6a\x59\xc1\x3c\x10\x5c\xef\xc0\x46\x68\xcd\xf8\xe6\x59\x22\x75\x73\x42\xd4\xfb\x1d\xf7\x31\x91\xbf\xd5\x39\x19\xf6\x6d\x20\x42\x6f\x1d\x88\x37\xc1\x39\x63\x9b\x73\x2b\x8a\xfe\x54\xd2\x2e\x20\xf8\xd6\x1d\xea\xfc\xcf\xdc\x49\xbc\x07\x95\x96\xb6\x47\xa7\x3f\x1f\xda\xa8\x48\xf4\xe9\xe7\xb0\xa5\xbe\xc9\xb4\xb7\x9f\x2d\xed\x8c\xf4\xe6\xfa\xde\x7f\x0c\xaa\x2b\x44\x02\x61\xc1\xbb\x3a\x11\xf5\x95\x10\xfd\xae\x5b\x76\x9b\x2c\x6e\xae\xef\xc7\x71\xb1\x73\x72\x8b\x92\x17\x8f\x28\xc6\xc1\x46\xd7\x17\xe9\x3c\x55\x75\xbd\xe7\x01\xd9\xb9\x8e\x6e\x1d\x17\xdb\x14\xc7\xce\x7a\xa3\x43\xb3\xcd\xee\x0c\x39\x61\xd7\x1d\x6d\x84\x68\x5d\x11\x14\xc1\xe3\xd8\x55\xea\x7f\x9a\x22\xdc\x38\x41\xc6\x89\xbb\xfd\x84\x00\xa9\xd6\x0c\x8b\xe0\xff\xa1\x12\x90\x50\xb8\x35\x2a\x23\xbe\xe1\x68\x06\x3f\xdf\xef\x4b\x7c\xdf\x22\xd3\xed\x2b\x7f\xee\x6c\x38\xf5\xe0\x17\xb1\x0a\x5c\x51\x59\x16\x64\xff\xed\x70\x34\x3e\x65\xf8\x2d\xdf\x93\x42\x51\x94\xa7\x4e\x78\xfd\x41\xa1\x60\xa4\x78\x77\xfb\xfd\xa9\x53\x6e\xae\xef\x9b\xf2\xe6\x15\x51\xe4\xcb\x26\x1e\x5b\x58\x63\x53\x13\x0f\xe6\xdb\x61\xbc\x73\x7f\x7f\x48\x0c\xc2\x1a\x8f\x46\x3d\xfc\x5f\xd0\xbe\x72\x66\x00\x8f\x66\x70\xc9\xf6\x77\x66\x5b\xf8\xb2\xad\x40\x3b\xaa\xb2\x8d\x19\x9c\xa8\x07\x64\x44\xe2\x61\x19\xcd\x3a\x73\xa0\x91\x77\x72\xd2\x30\x39\x03\xea\x0c\x22\xd2\x5a\x13\xbe\xba\xec\xf2\x7f\x51\xf6\x10\x4f\x0c\x5e\xf5\xcf\xaf\x77\x67\xb3\x16\xad\x7f\xbf\xbf\x7f\x7b\x4d\x0b\xec\x27\x56\xff\x55\xa2\x98\x05\x9e\x70\xb2\x46\xf5\x13\x2e\xaf\x05\x45\x96\x17\xfb\x77\xb7\xdf\x0f\xcd\x88\x98\xb0\x4e\x34\x1b\xf5\xe2\x48\xbf\xe9\x3e\xed\x13\x53\x68\x1b\x9f\x21\xa8\x7a\x5a\xff\xea\x93\x5e\x63\xb2\xac\x68\x91\x37\xb3\x73\x5c\x91\xaa\x50\xb7\x98\x21\x7d\x44\x61\xcb\xf7\x31\xaa\x35\x2a\x3b\x7e\x5f\x8f\xaa\x4f\x0c\x86\xa3\xaf\x5d\x7f\x6c\xea\x9f\xc1\x81\x60\xa2\x15\xe1\xc0\x9f\x40\x91\xb2\x9c\x84\x87\x5e\x53\x5b\x7e\x9a\xba\xcd\xcd\x05\x11\x6a\x3a\xd0\x32\xce\x88\x1a\x3a\xef\x3c\x51\xdc\xa6\x69\xc3\x51\x62\x49\x7d\xc4\xa7\x9c\xce\x67\x2c\xa1\x33\xfd\x80\x30\xc3\x83\x98\x40\x9d\x93\x27\x40\xfd\xc6\x54\x06\xe7\x3e\x49\x28\x8d\x68\x0f\x00\x11\xfc\x91\xe6\x5e\x59\xa6\xa5\x3d\xec\x71\xa7\x7c\x0d\xd4\x06\xe8\x31\x7a\x9a\x91\xd6\x19\xbe\x78\x96\xa4\xed\xe3\x01\x8a\x3f\x25\x5d\x76\x8c\xe6\x7b\xca\x1e\x30\xbf\x37\xfb\x88\x2f\x44\x33\xee\x64\x48\xc7\x47\x78\xab\x19\xa7\xd3\xa8\x06\xc0\x91\x35\x38\xae\xff\x8b\x56\xf1\xd6\xa1\xff\xca\x55\x64\x02\x89\xc2\xd7\xdb\x52\xed\x9b\x29\xd7\xee\xbc\x6c\x06\x43\x1d\x23\x75\x8a\xf2\xdd\x01\x12\x13\x41\x30\xfc\x73\xa6\xf6\xe2\x22\xe0\x40\x12\xed\xb0\xdf\xab\x7f\xfa\x5a\xb7\xd6\x93\x55\xa4\x9d\x83\xcd\x79\x73\xaa\x13\xc0\x18\x8c\x29\xb6\xf6\x7b\x05\x9b\x81\x7e\x71\x58\x1c\xa4\x5a\x04\xa6\x1b\xbe\xc5\x29\xdd\xae\xa7\xe6\xbc\xde\x9d\xdd\x17\x7c\xcd\x27\x25\x5b\x0f\xfa\x03\x61\xbf\xd0\xcd\xda\xac\xc6\x0e\x6c\x69\xb4\x17\x52\x9a\xef\x27\x78\xcf\xd3\x12\x97\x81\xed\x91\x08\x6b\x66\x83\x13\x53\x17\x3f\x95\x4a\x20\x20\x79\x46\x49\x01\x65\x41\xd4\x8a\x8b\x2d\xec\x4c\x51\x52\x07\xdb\xbd\xda\x50\xb6\xd6\xa3\x56\x5c\xd8\x33\x29\x96\x43\x59\x09\x2c\xf6\xb0\x72\x87\xd1\xc5\xe4\x00\x56\x6c\x02\x5b\x5b\xb6\x61\xcc\x4b\x0a\x6f\x70\x40\x0a\xf2\xd7\x8a\x08\x34\x25\xfb\x36\xdc\x23\x6a\x06\x5f\xa5\x6a\xf0\x87\xa8\x1b\x1c\x56\x39\xf8\x3c\xb5\x3b\x02\x6d\x49\x18\x43\xf1\xe7\x60\x9d\xa5\x75\xf2\x4b\xf9\x7b\x33\xef\x97\x12\xbf\x8c\x7b\xd6\x58\xe4\xec\x88\xdf\x1e\x50\x26\x15\x59\x0b\xb2\x1d\x9c\xa4\xf7\xbb\xdd\x6e\x52\x4f\x31\xfd\x46\x96\x03\x47\x0d\xc1\x20\xdb\x12\xa9\x78\xce\xd9\x69\xb8\xfc\xe8\x89\x5d\xcb\xf4\x3b\x8b\xea\x28\x96\x9c\xca\x8c\x8b\xfc\x34\x24\x6e\xf0\x64\xbd\x9e\xfe\x0f\xb9\xfd\xeb\xdf\xae\xab\xff\xbe\x79\x38\x8a\x42\xed\xa8\x52\x28\x4e\x43\xe1\x06\x77\xb9\xd5\x1f\x09\x3f\x3b\x10\xa6\xb7\xc8\x07\xd3\xe2\x68\xf7\x75\x16\xa3\x4f\x15\x29\xc2\x23\xdd\x74\xad\xe3\x52\x4a\x54\x8b\x2b\x9d\x4a\xd8\xbc\x3e\x5d\xed\x88\xb7\x7d\x71\xa1\x30\x0d\xf8\x75\x6b\x43\xa5\x31\x74\x4a\x40\x07\x90\x1d\xa8\xd9\x40\x54\xc8\x33\xc7\x42\xee\x4c\x88\x32\x85\x62\x45\x32\xb4\xa7\x6d\x95\x44\x21\xcd\x19\x42\x46\xa4\x39\xdd\xa0\x22\xac\xf6\x05\xa9\x12\xf1\x7d\x63\xa0\x38\x90\xa2\xe0\x3b\xe0\x6a\xa3\xa7\x2b\x0e\xb9\xed\x6b\x0b\xa7\x52\xa6\xb8\x03\xd8\x40\x99\xc0\x42\x01\x29\xa4\x83\x60\x43\x9b\x40\x92\xfb\xb2\xb6\xe9\x5c\xaa\x7b\x0a\x5b\x9d\x5d\x94\x99\x97\x01\xb8\x6e\xf5\xb1\x59\x60\x3b\x13\x6d\x75\x07\x69\x29\x38\xb2\x87\x66\x5b\x97\x4a\x15\x6f\xae\xef\x47\x29\xd9\x2d\xae\x6c\xf9\xcb\x16\xf8\xde\x77\x86\x2c\xb9\x10\x7c\x77\x73\x7d\x1f\xb4\xee\x8d\x66\xf0\x2c\x85\xa0\x67\x72\xb3\xee\x16\x8c\xc0\x2a\x6e\xae\xef\xdb\x25\x1e\x7b\x0e\xa9\xd9\x24\x50\x56\x85\x02\x2a\xd9\xb9\xd2\x7a\x6e\x0f\x23\x69\xee\xcf\x96\xac\x2e\x61\x0e\x02\x57\x28\x90\x65\xd8\x06\x24\x37\xbc\x2a\x72\x58\x62\xd8\x6a\x61\x8f\x7d\xc5\xba\xda\xa2\xe9\xc7\x70\xe7\x54\x36\xef\x8e\x20\x94\x5c\xaa\x84\xa7\x1e\x3a\xc2\xe6\xa6\xa1\x62\x04\xff\xfc\xa7\x7f\xf4\xd2\x14\x37\xe7\x40\xf3\x1e\x23\x1f\xbc\x22\x8c\x71\xe5\x38\x14\xaa\x46\xbd\x86\x99\x29\x17\x37\x27\x68\xdd\x55\x6a\x53\xa0\x2c\xe3\x42\x60\xa6\x06\x2d\x1f\xd1\x67\x43\x8d\x32\xf9\x27\x97\x90\x35\xc6\x91\xe8\x40\xe4\x3b\x66\x0f\x9e\x09\x03\x92\x65\xbc\x62\xaa\xb7\x64\x1e\x6c\x5b\x23\x7a\x3a\x9b\xa9\xe8\x6d\xe3\x2c\x0e\x8f\xeb\xdf\x81\x1d\x1e\x56\x6f\x37\x0f\x0f\x3b\x8c\xfc\xd8\x26\xcf\xf7\xe3\x3a\xae\xc6\x4d\x96\x37\xd7\xf7\x90\x71\xa6\x13\x63\xed\x78\x6d\xf5\x25\x1c\xee\x0e\xd5\x49\xc3\x4a\x73\x2e\x64\xda\x83\x08\x83\x7f\x58\xab\xf9\x87\xd6\x87\x15\xc5\x22\x4f\x55\xec\x7d\xc3\x82\x11\x98\x16\xdd\x0c\xbe\xfb\x68\x27\x26\xce\x31\x6e\xae\xef\xe3\xc6\xa8\x9d\xeb\x02\x0e\x9f\xdd\xe2\x96\x3f\xa2\x3f\x29\xb1\xfd\xd9\xb6\xff\xa0\x71\xa7\x2c\x07\x3b\x88\xd6\x56\x94\x91\xa2\x48\x9f\x2a\x78\xd7\xe0\x91\x0d\xfd\x87\xa0\xd5\xb7\xc7\x7f\x25\x1a\xec\x6c\xfb\xf5\x0b\xd7\x43\x56\xaf\x7b\x22\x0c\xd9\xc3\x07\xdc\xcf\xa0\x41\x30\x82\x97\x2f\xa1\x24\x8c\x66\xc3\xc1\x96\x4a\xe9\x5a\x34\x07\xa3\x38\xa0\xe2\x96\xb6\x5a\xa2\x0d\x9a\x09\xcd\x7d\x53\x74\x8d\x4d\xbc\x9c\x10\xdb\xf0\x3c\x4a\x06\xe5\x17\x17\x4d\x2b\x2b\x74\x3a\xd1\x9c\xd3\x0e\x1f\xdd\x93\x07\xd3\x12\xab\x97\xab\x19\x4b\xf2\x3c\xe2\x6b\xcd\x76\x19\x28\x58\x08\xa0\x9e\xa4\xac\xf3\x70\x13\x69\x0e\x44\x08\xb2\x3f\x24\x92\x93\x62\xc8\x21\x21\xd8\x0f\x44\x3e\x85\xef\x62\xd7\x7e\xd6\x99\xd3\x04\x02\x98\xd7\xec\x3d\x6b\xbb\x6d\x92\xe7\x86\x7a\x86\x3b\x07\xdc\x2d\x27\x30\xae\xdd\x86\x66\x1b\x10\x4e\x4f\x4d\xe3\x54\x91\x03\x67\xd8\xc1\xc9\x8b\xfc\x3e\xad\x2f\x3f\xd3\xfc\x7d\xbd\x80\x84\x32\x84\xcd\xee\x5a\x0b\x14\x3f\x45\x07\x72\x94\x4a\xf0\x7d\x8d\xb7\x47\x0b\x6c\x10\x8e\x8d\x4e\x2b\x8f\x31\x3a\x23\x34\x1f\x01\x16\x57\xae\xb5\x88\x08\xf4\x29\x44\x16\xbb\xf3\x1e\xd1\x76\x03\xfd\x81\x74\xac\x31\xa3\x07\xdc\xcb\x1e\xaa\xeb\xbc\x20\x7c\xf8\x1f\xa8\xac\x0b\xf3\x01\x4a\x27\x58\xae\x61\xe8\x00\xb9\x20\xb9\x5d\x57\xe3\x3a\x4c\x26\xa7\xd3\x29\xa0\x2a\x68\xba\xd1\xda\xad\x07\xf8\xa7\x1b\x1e\xb5\x5f\x7e\x55\xf6\x92\xe6\xc8\xf0\x59\x42\x55\x88\x4c\x83\x78\x39\x7a\x7a\x90\x5d\x8d\x55\x7c\x29\xd7\xcc\xa9\x75\x10\xa1\xa3\xa6\x36\xfc\xa0\xd5\x94\xad\x4d\x6f\x14\x5f\x19\x26\x99\x60\x21\x61\x48\x59\x56\x54\xb9\x89\x3d\x1b\x1b\x5b\x16\x57\xa3\x6e\xdf\x19\x95\x20\xc9\xca\x67\x47\x02\x8d\xaa\x31\x5e\xa7\x45\x4e\x01\x5d\xaf\x8e\x91\x95\x36\x36\x03\x34\xb0\xf9\xe3\x32\xf9\xc2\xa4\x90\xae\x52\xa6\xfb\xd4\x24\x60\x89\x0c\xcd\x36\x2e\xad\x60\xde\x2b\x47\x52\xa9\xcd\x71\x61\xb6\x94\x42\x83\xd4\x6e\xae\x45\x6c\x9c\x81\x1d\x69\x56\x6e\xb7\xe0\x26\xdb\x95\x63\x9e\xe9\xcc\xc3\xe7\x1d\x2d\xae\x5d\xb2\xfd\xad\x4b\x1c\x3e\xa6\x13\x95\x4f\x09\xcf\xcd\x56\xea\x77\x61\x8d\x5f\xd2\x4a\x1d\x64\x4b\xef\xc2\xea\xfc\xcf\x60\x38\xb0\xb4\x56\x77\xc5\xa7\xb6\x7a\x84\x6e\x2c\xa9\x67\x34\x1f\xf5\x06\x63\xdb\x80\xcc\x9b\xb4\xc5\x39\xf0\x4e\xd7\xb5\x77\xec\x31\xdb\x7a\xe0\x9e\xd0\x65\x01\xe9\xbe\xee\x1a\xb2\x0e\x4d\x1f\xfb\x33\xfa\x64\x21\xdf\xbf\xb4\xc7\x3c\xb5\xfd\xba\xf8\xc1\xf6\x9c\xa1\xdb\x2d\x17\x85\x76\x38\x16\x08\x10\x13\x6b\x51\xc3\x6a\xfb\xea\x20\xdd\x37\x0d\xe9\xe9\xe3\x83\x93\x8f\x29\xea\x0c\xc9\xa3\xee\x1c\x42\xb8\x15\x06\x31\xcc\x6b\xf6\xd0\x05\xdc\x99\xbb\x6d\x36\xb6\x91\x7b\x91\xcf\x7c\xbf\x50\x70\x4b\x26\xc0\x69\x9a\x03\xb3\x4c\x2b\xfd\x1a\xd5\xa5\xdd\xcb\x0c\xeb\xe8\x1d\x0e\x6b\x16\x7f\x6b\xfc\x87\x9e\x36\x59\xa3\x7a\x45\x4a\xb2\xa4\x05\x55\x7b\x7b\x4c\x9a\x3a\x26\x1c\x3d\x75\xca\xf7\xe2\xd9\xb1\xf3\xb9\xb3\x27\x4f\x9e\x34\x49\xe9\x2b\xb3\x4b\x0d\xf6\x85\x59\x8d\xcd\xa6\xde\x4e\x9a\x0d\x71\x61\xee\xea\x38\x1a\x51\x9e\xb6\x02\xc7\xad\xd1\xd3\xb8\xc0\xd4\x62\x38\x95\xaf\x4c\xc3\xff\xd0\x76\x87\x2e\xea\xb6\xbd\x91\xbd\x08\x14\x30\x96\x86\xbb\xc6\x89\xbb\x58\x61\x5a\x06\x08\x65\xf2\xbf\x70\x5f\xc3\x48\x25\x90\xae\xfb\x74\x1e\x39\x0e\x07\xe4\x67\x3f\xf1\xfd\x53\x13\x76\xed\xfd\xa8\x94\xd1\xbb\x56\x6a\x7b\x49\xa1\x31\x96\x94\x1b\x76\x33\xda\x37\x7d\xd2\x4a\x97\x6a\x8d\xa8\xf9\xd0\x29\xa4\xd1\x15\x54\xa2\x98\xc8\x82\x66\x38\xb4\xbb\x85\xe7\x63\xa8\xca\x7b\x3e\x83\xbf\x8c\x60\x3e\x87\x01\x2d\x57\x72\x90\xa6\xa8\x5d\xd3\xde\xee\x4b\xca\x4c\xf7\x45\xc1\xab\x7c\xaa\x67\x36\xc7\xf4\x6d\x3c\x7f\xf5\x78\xf4\x8b\x02\xd9\x5a\x6d\x82\x73\xfb\x43\x8c\xa8\x44\xd1\xeb\x5d\xcc\x4d\x46\xff\xe5\xb6\xde\x9c\x5a\x37\x02\x44\xbf\x05\x2e\x40\x72\x9d\x8e\x69\x5e\x48\xba\xa5\x05\x11\xb0\x33\xca\xcc\x77\x26\x69\x5f\xa2\x07\x61\xae\x21\xfa\x76\x74\xed\x6c\x6a\xdf\x99\xaa\x27\x18\xec\xad\x9d\xb5\x44\x52\xb8\x6b\x72\x92\xd8\xcd\x69\x0e\x2b\x81\xf8\x9b\xdb\x00\x84\xf7\x09\x7d\x5e\xc9\xc2\xfe\xe2\x10\x9a\x27\x45\xa7\x5b\xdd\x66\xf8\xa6\x37\xd1\xe3\xfc\xf2\x0b\x6f\x31\xeb\x4b\x91\x48\x0e\xe2\xb2\xab\xce\x6b\x06\x03\x98\xc1\xc0\xb8\xd9\xfa\x8a\x42\xe7\xc4\xa1\x9e\x86\x4d\xcb\xbe\xbb\x42\xf5\x7c\x64\xe6\xbb\xe7\x4d\x1d\xec\x37\x14\xbc\x1f\x4e\x7c\xcd\xab\xbe\x8d\xa5\x41\xbd\x69\x5e\x35\xd0\xcc\xf6\x88\x3e\x62\x07\xe2\xd3\x63\x6e\x21\x5a\xb0\x43\x20\xed\x7d\x2c\x9d\xfe\xef\x5d\x3f\x7a\x5f\x75\x4b\xff\xa5\x9c\x46\x04\xf6\x3d\xcc\xdd\xbd\xca\xee\xd1\x52\x23\x4d\xff\xa9\x7b\xb6\xd0\x95\xee\xc1\xfb\x86\xc9\x0c\xa3\x71\xaa\x77\x66\x41\x5d\xa7\x0a\x1d\xaf\x0a\x8d\x85\x9e\xea\x5d\x0f\xa1\xee\x5e\x04\x4c\xd1\x90\xbc\x18\x98\x54\xd6\x93\x3d\x7e\x23\x54\x1d\xda\x56\xbc\x62\x1d\x79\xfe\x1e\x31\xe1\x40\x50\x48\xdc\x81\x3c\xc4\xa9\xb6\x78\x93\x8c\x3a\x76\xc2\xf1\x67\xe7\x59\x9b\x09\x7d\x5b\x5b\xed\x3d\x1d\x5b\xb5\x0f\xd5\x5f\xa5\xbf\xc3\x6d\xb3\x16\x7f\xbb\xc4\x5f\x75\xb4\xd7\x88\xc2\xab\x56\xb6\xd6\x4f\xd5\xb9\xb9\x0e\x1e\xdd\x1c\x1f\xfb\x2e\x1f\x78\xf3\xc3\x95\xab\x68\x15\x94\x3d\x00\x55\x0d\xc4\x37\x44\x3c\xa0\x2a\x0b\x92\x21\x68\x1b\x5e\x12\x89\x11\xf4\x1f\xf4\x6e\x76\x47\x25\x8e\x41\xfb\x50\xf3\xd3\x02\x1a\xd2\xf3\xae\xab\x8f\xd7\xd3\x11\x7d\xfb\x77\x09\x60\xd6\xae\x76\xfd\xe9\xf5\x40\x3b\x4d\xa1\x86\xfd\xb6\x03\xdf\xea\xa4\x66\x8b\x52\x9a\xd3\xff\xc1\x0d\xb7\x3f\xa0\xe1\xee\xb4\xba\x90\xda\xae\xab\x86\x6d\xec\xe6\x9a\x82\x01\x5f\x5f\x0a\xee\x8c\xc5\xe0\x46\x83\x19\x1a\x5f\xbc\x8e\xc6\xd7\x0e\x3f\x75\x89\xc0\x7d\x18\x75\xea\x8b\xd1\xa6\xa7\xbd\x81\xb7\x77\xe3\x77\x5a\xa0\xcd\x26\x45\x6b\x44\x27\x3e\xf8\x26\xf9\x80\xdb\xc1\x8f\x31\x74\xe3\xc9\x97\xc5\x9c\xa3\x66\x09\x26\xf6\x74\xab\x97\xc1\x4f\x6f\xf4\x50\xe8\x6f\xfc\xc4\x61\x33\xf8\x49\x0e\xf7\xa1\xd6\x7d\xf3\x5f\x0b\x57\x1a\x36\xcc\xfb\x5e\x84\xb7\xbc\xdb\x35\x9e\x03\xaa\x37\x9f\xc3\xf3\x44\x55\x25\xcc\xfe\x5b\xba\x91\x3e\x2f\x7f\x71\xe1\xa4\xdb\x9b\xf9\xb6\x77\xee\x2e\x3f\x35\xf7\x22\x46\xf1\xc5\x8e\x3b\x54\xc0\x2b\x61\x3a\xaa\x72\x28\xeb\xdf\x26\x01\xbf\x97\x4f\xf6\xa4\xc2\x1c\xa6\xae\x89\xf5\x40\xa7\x68\x1f\xa0\x66\xbf\xa9\xe1\xd8\x9d\xe1\xc9\x60\xda\xbf\x64\x12\x92\x92\xd7\xb3\x9b\xdc\x3f\x9e\x18\xfc\x96\x89\xc1\xed\xba\x5d\xdb\x13\x23\xf7\x5e\x33\xd3\x16\x20\xcd\xaf\x9e\x48\xa3\x09\x31\x82\x58\x77\x9e\x9f\xc5\x6f\xfd\x9d\xfd\x39\x7c\x8c\xa3\xd0\x2b\x6f\xca\x76\xc7\x50\x6f\x20\xf4\xde\x40\xef\x12\xdc\x21\x8a\x5b\x63\x5c\x11\x30\x33\x1a\x1b\x37\x10\x02\x1d\xb2\xb7\x99\x6c\xb1\x60\xa2\x61\x0d\x5f\x5c\x98\x39\xc1\x41\x40\x9b\x9f\x81\x4a\x1b\x1b\xec\xff\x15\x9e\x4f\x67\x9f\xfe\x2f\x00\x00\xff\xff\xd2\xee\x0c\x3e\x7f\x49\x00\x00" +var _contractsDigitalartCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x7c\x5f\x73\xdb\xb6\xb2\xf8\x73\xfc\x29\x36\x7a\x48\xa4\xf9\xc9\x52\x3a\x73\xe6\x77\x67\x34\x51\xd3\x34\x8e\xef\xf1\xbd\x8d\x9b\x89\x95\xf6\xa1\x93\x39\x07\x22\x57\x12\x6a\x0a\x60\x01\xd0\x8a\xea\xe3\xef\x7e\x07\xff\x48\x80\x04\x25\xd9\xed\xed\xdc\x93\x87\xd6\x22\xb1\x8b\xc5\xfe\xc7\x62\x41\xba\x2d\xb9\x50\x70\xcd\xd9\x65\xc5\xd6\x74\x59\xe0\x82\xdf\x22\x83\x95\xe0\x5b\x18\x4c\xa6\x52\x11\x96\x13\x91\x4f\xdb\x23\x26\x59\x9e\x0d\xce\x1c\xf8\x4f\x14\x77\x9f\x50\xf2\xe2\x0e\x85\x03\x6d\x20\xc3\x97\x11\xd4\x07\x54\x24\x27\x8a\xe8\x01\xb2\x3b\x63\xf4\x3a\x02\x7c\x7f\x87\x62\x2d\x30\x20\xb3\x7e\x62\xc7\x9d\x4d\xa7\x70\x41\xd7\x54\x91\xe2\xad\x50\x90\xe3\x8a\x32\x94\x70\x7d\xb9\x90\xa0\x36\x44\x81\xc0\x52\xa0\x44\xa6\x20\xb7\xc3\x80\x08\x05\x94\xc1\x0d\xfe\x56\x61\x31\xd1\x08\x6e\x10\x61\xa3\x54\x29\x67\xd3\xa9\xb4\x8f\x65\x49\x32\x84\x15\x17\xb0\xe5\x02\x21\x47\x45\x68\x21\xf5\xe8\xd6\x8c\x4a\xb3\x48\x82\xac\xca\x16\xc1\xe6\x05\xf8\x35\x7a\xc8\x1b\x5e\x89\x0c\x67\xf5\x74\x6b\xaa\x36\xd5\x72\x92\xf1\xed\xb4\xa4\xa5\x20\x0a\x1d\x05\xe7\xab\x82\xef\xce\x33\xce\x94\x20\x99\x92\x1a\x9c\x64\x19\x4a\x39\x24\x45\x31\x3a\xf3\x2f\x02\x52\x66\x5d\xd9\xde\x9f\x9d\x01\x00\x4c\xa7\x9a\x2e\xa6\xa4\xfb\x65\xfe\x17\x62\xd3\xbf\x51\x8f\x80\x77\x0e\xef\x15\xa3\x8a\x92\x82\xfe\x8e\xf9\x70\x74\x60\xfc\xcf\x54\x6d\x72\x41\x76\x43\x9a\xcf\xe0\xf3\x15\x53\xff\xff\x6f\x63\x23\xab\x19\xbc\xcd\x73\x81\x52\xbe\x39\x04\x7e\x81\x25\x97\x54\x45\xd0\x8a\x9f\x06\xfb\x81\x32\x85\x79\x04\x4a\xa4\x44\x35\x83\x1b\x25\x28\x5b\x8f\x01\x73\xaa\x28\x67\xcd\xfb\x2d\xcf\xaf\x2e\xfc\xcf\x51\xcd\x9c\x6b\xb2\xc5\x1c\x3e\x12\xb5\x39\xc8\xa1\x02\x35\x7f\x8a\x02\x33\x8d\xf5\x46\x71\x41\xd6\xa8\xa1\xf4\x8c\xf5\x8f\x13\x40\x3f\x56\xcb\x82\x66\x16\xb2\xf9\xbb\x17\xf0\x6d\xbe\xa5\x8f\x9f\xce\x40\x7d\x14\xf4\x8e\x28\x07\x15\xfc\xa8\x97\xbe\xd8\x20\x28\xae\xcd\x82\x55\xdb\x25\x0a\xe0\xab\x50\xbb\x1b\x3b\xda\x90\x3b\x84\xa5\x56\xec\xad\xe1\xfb\x21\x46\xdd\x11\x61\x91\xde\x54\x65\x59\xec\x3d\xc3\xeb\x49\x7f\x22\x82\x92\x65\x81\x20\xe9\xef\x08\x39\x35\x4c\x21\x62\xaf\x27\xff\x40\xa4\x42\x01\x02\xa5\xb1\x14\x19\x4e\x20\xb1\x58\x35\x33\x6c\xcd\x48\x39\x83\x7b\x2b\xef\x99\x83\x7d\xa8\xe7\x71\xb8\x90\xe9\xc9\xa4\x21\xfc\x9c\xb3\xf3\x1c\xb7\x84\xe5\xb0\xaa\x98\x9d\xb8\xa0\x6a\x0f\xfa\x89\xf7\x1e\xc4\xe1\x86\x8c\x97\x86\x28\x62\xad\xd9\xe3\x35\x0c\xa1\x12\x2a\x89\x39\x28\x6e\x10\x03\x09\x38\xe8\x14\x4f\xc2\xb0\xa0\x5b\xaa\x30\x87\xe5\x1e\xb6\xce\xcb\x4d\xb6\xe4\xeb\x7b\x37\x60\x34\xf1\x38\x7f\x64\x19\x02\x29\x8a\x06\x96\x08\x74\xbc\x1e\x83\xda\xa0\xa7\x89\x4a\x78\x99\x15\x5c\x62\xfe\x12\x96\x95\x76\x70\x5b\x42\x99\x04\xce\xce\xb3\x0d\xa1\x0d\x91\x1c\x4a\x61\x2d\x45\xe0\xb9\x46\x44\xd9\xda\x0a\x74\x47\xd5\xc6\xa0\x94\x64\x8b\xd6\x68\xe0\xea\x62\x72\x48\xa4\x52\x89\x2a\x53\x9e\xa3\xf7\xe6\x59\x6a\x5c\x2d\x1c\xb7\xd8\x59\xed\xfb\xdf\x1c\x85\x41\xef\x3b\x3f\x0a\xbe\xa2\x05\xce\x1a\x6f\x3a\x71\x8f\x8e\x23\x61\xf8\x55\xbd\x8f\xed\xfe\x28\x8c\x65\xe7\x0c\xbe\xe7\xbc\x38\xab\xdf\x50\x46\xd5\xb0\xbb\x8e\xf1\x29\x74\x8e\x20\xe0\x91\xe1\x1f\x16\xab\x89\x47\x06\xf3\x9a\x3f\xdd\x41\x6d\xec\x30\xef\x4c\xd8\x05\x0a\x56\x0d\x73\xf8\xa6\x3b\xc0\x2e\x11\xe6\xb0\x22\x85\x6c\x10\x3c\x9c\x1d\x64\xce\xaa\x62\xc0\x70\xe7\x30\x5f\x5d\x0c\x47\xe0\x99\xda\x5a\x9f\xf6\x38\x77\xa4\x80\x79\x87\x9e\x63\xc4\x76\x1e\xfd\x3f\x37\xc3\xf0\x9b\x51\x04\x2b\x50\x55\x82\xe9\x59\x1e\x43\x3e\xb9\x23\xb4\xd0\xf6\xef\x4d\xae\x7f\x0d\x74\x05\xcf\x43\x66\xbd\x78\x11\x8b\xed\x79\x60\xb9\xf0\x6d\x82\xf2\x18\x5d\x40\x73\x3f\x9a\xf3\xd3\xd7\xff\x00\x58\x48\xec\x9f\xe4\x55\x3c\x3a\xc5\xa4\xe9\x14\x7e\x46\xab\xee\xde\x7d\x02\x59\x69\x8b\xee\xf1\x3c\x40\x99\x54\x48\x72\xed\xd4\x72\x2c\xd0\xf8\x90\xad\x77\xd1\x19\x17\xb9\x0c\x91\x2f\x36\x54\x42\x29\xb8\x16\x05\x20\x93\x95\x40\x09\x8c\x2f\x79\xbe\x87\x8c\x30\xa3\xc8\xd6\x5b\xba\xb4\xe9\x90\x27\x3a\x24\x55\xb3\x84\xe1\xe8\x88\x91\x31\x5a\x9c\x64\x5f\xc9\x71\xb1\x96\xbe\x3a\x60\x52\x4a\x54\xa1\x45\x05\x3c\xd7\x31\xc8\x93\xe3\x83\x8b\x8b\xae\xf0\x56\xa8\x97\xb2\x09\x0a\xa7\x38\x5f\x8f\xea\x3e\xe4\xb9\x4e\x5e\x0e\xf2\x4b\x9b\x26\x23\x5b\xf4\x79\x51\xa4\x0e\x6f\x85\xa2\xd2\xbe\x3f\x8a\x84\x98\xb1\x49\x34\x17\x28\x33\x41\xcb\xc8\xde\xfb\xd0\xe4\xcd\xd8\x24\xae\x0f\x98\x53\x02\x6a\x5f\xe2\x0c\xae\xb6\x64\x8d\x63\x78\x5b\xe5\x94\x8f\xe1\x27\x9a\x23\x3f\x8a\xdf\x42\xa6\xd6\x0a\x9f\x3f\x5d\x69\x4d\xd6\x0a\xc7\x05\x5d\x53\x46\x8a\x68\x5b\xa0\xb3\x6a\x64\xea\xb0\xfe\xe9\x39\xdc\xc0\xcf\x9f\xae\x8e\xcf\x14\x4e\xa0\x23\x32\xc5\x9d\x87\x87\x21\x9d\xe0\x44\xa7\x17\x9b\x6a\xbb\x64\x84\x16\xa3\x93\xe7\xfe\x68\x51\xf5\x91\xf0\xe1\xea\xc3\x7b\xc3\x0a\x18\xe2\x64\x3d\x81\x97\x54\xb3\x72\xfa\x6b\x89\xeb\x97\xa3\xa3\x73\x6c\xe9\x16\x7b\xf9\xe8\xad\xa2\xc9\x77\xf4\x32\xd7\xf4\x0e\x99\xce\x2f\x26\x7e\x80\x75\x24\x15\xa3\xbf\x55\x76\x2b\x55\x1b\xba\xf5\x20\xe3\x10\x29\xcd\x91\x29\xba\xa2\x36\x57\xd2\x23\x4f\xf3\x06\x26\x71\x68\xc5\xfb\xd8\x25\x61\x2a\x31\x33\x29\xdc\x96\xec\x83\xbc\xb6\x14\x3c\xaf\x32\xcc\x6b\x52\xed\x8a\x2c\xad\x93\x8e\x9b\x73\x48\x33\xc2\x5e\x2a\x58\x22\xe0\xd7\x0c\x31\x6f\xc8\xf7\x3b\xb4\xb1\xc9\xd2\xd4\x06\x05\xea\xdc\x8d\x71\xe0\xcb\x82\xae\x49\x64\x2b\x36\x5f\xb3\x79\x64\x51\x58\xb5\xc1\xac\x20\x02\xf3\x9a\xe6\x88\x84\xab\x15\x04\x51\x64\x3e\x87\x6f\xc6\xb1\x14\xf4\x5c\x9c\xe1\x39\x5f\x9d\x93\xf3\x5b\xca\xf2\xe3\x8a\xd5\x20\xec\xe5\xe4\xc5\xd5\x85\x97\xb7\xe5\xcb\x4b\x69\xe5\x34\xb1\x4c\xb9\xba\xd0\xf3\x7a\x39\x87\xd0\x9a\xa9\x51\x90\x31\x69\x75\xa9\x7d\x4a\x56\x15\x44\x84\x7e\xd1\x68\xd1\x71\x77\x14\x6e\xf6\xfa\xcd\x6f\x55\x15\x91\x91\x07\x4e\x17\xfe\xeb\xe6\xc7\xeb\x10\x90\x48\xa0\x0a\xf0\x2b\x95\x3a\xf6\x11\x23\x36\x50\x74\x8b\x61\x02\xbe\x23\x12\x24\x92\x02\x4f\x61\xa9\x9b\xa9\xcf\x4a\x35\x4f\xdf\xe9\xac\xfd\x07\x9e\xdd\xd6\x31\x15\x1a\x2e\x1b\xea\xff\x3a\x7a\xed\xfc\x27\x91\x6a\xcd\x73\xa3\x93\x83\x43\xe4\xc6\x5a\xab\x4c\x1a\xb0\xc4\x7a\xeb\x24\x50\x09\x8a\x77\x96\xe0\xac\x12\x42\x7b\xc5\x08\x01\x0c\xe9\x0a\xb2\x0d\x61\x6b\xcc\x47\x93\xb3\x67\xcf\x42\xda\x9f\x3d\xab\x35\xe1\xef\x48\x12\x84\x9b\x24\x3e\x8a\xdd\x61\x28\x1c\x47\x6f\xe2\xf8\x16\xbf\x4b\x04\xad\x78\x40\xe8\x2d\xe3\x37\xdd\x58\x91\x7c\xdf\xf5\xe7\xf1\xb0\xb6\x4b\x8e\xdf\xb6\x4b\x1d\x31\x68\xc7\xb0\x5b\x0b\x8f\xca\x26\x31\x68\x57\x81\xc7\xad\xac\x3c\xd4\x98\x04\xde\x48\x2e\xfa\x69\x7a\x6f\xa4\xc5\xa2\x53\xb1\xd0\x6d\xd4\x2f\xad\x64\x60\xee\x44\xd4\x1d\x10\x88\x07\xe6\xa1\xb0\xba\x43\x4d\x4c\x9c\x1b\x79\x25\x72\xba\x5a\x56\x30\x0f\x04\xd7\x3b\xb0\x11\x5a\x33\xbe\x79\x96\x48\x4e\x9d\x10\xf5\x0e\xd0\xfd\x99\xc8\x50\xeb\xac\x13\xfb\xb6\x50\xa1\xef\x0f\xc4\x9b\xe0\x9c\xb1\xd2\xb9\x15\x45\x7f\xb2\x6c\x17\x10\xfc\xea\x0e\x75\xae\x69\xee\x24\xde\x33\x95\x96\xb6\x9f\x4e\xff\xfd\x98\xad\x9a\x44\x9f\x70\x0f\x5b\xea\x9c\x4c\xf4\xfb\xd9\xd4\xce\xc1\xaf\x2f\x17\xfe\xcf\xa0\xb6\x45\x24\x10\x16\xbc\x4b\xa6\xde\xbe\x0e\xa5\xc7\x75\x0b\xac\x93\xeb\xcb\xc5\x38\xaa\x89\x4f\xfc\x1f\xe3\xa0\x28\xe0\x8b\xb1\x9e\xbe\xba\xee\x76\x8b\xec\xa5\x0e\x9a\x47\xfd\x72\x53\xe4\x3c\xcc\xc6\x30\xe6\xcc\xe0\x85\xdf\x31\x1c\x07\xea\xd6\x34\x5e\x74\x8a\x1a\x51\x38\xa0\x75\x81\x58\x04\x8f\x63\xbf\xab\xff\xd3\xd4\x5b\xc7\x29\xca\x52\xd5\x94\xee\xcc\x49\xf9\x53\xad\x68\x76\x8a\xbf\xa0\xd4\x72\x44\x7f\x4d\x56\xaf\x95\x78\x8d\xca\x1c\x63\x0c\x47\x33\xf8\x65\xb1\x2f\xf1\x4b\x8b\x76\xb7\x5b\xff\xa5\xb3\x8d\xd7\x83\x5f\xc7\x47\x21\x17\x54\x96\x05\xd9\x7f\x3b\x1c\x8d\x4f\x19\xee\xac\xe7\xd4\xe1\x9f\xf8\x9e\x14\x8a\xa2\x3c\x19\xff\x57\x85\x82\x91\xe2\xf3\xa7\x1f\x4e\x05\xb9\xbe\x5c\x34\x75\xef\x0b\xa2\xc8\xd3\x00\x8f\xf1\xa1\x31\xeb\x89\x47\xf3\xed\x30\x2e\x9f\x7c\x79\x8c\x2b\x12\xd6\x8a\x35\x29\xc3\x7f\xb8\xd8\xae\x27\x1a\xcd\xe0\x2d\xdb\xdf\x98\xfd\xf8\x9b\xb6\x52\xee\xa8\xca\x36\x76\xcf\xd5\x2d\xd2\x64\x44\xe2\x61\x11\xcf\x3a\x30\xd0\xa8\x4b\x12\x68\x98\x84\x80\x3a\xc9\x89\x2c\xc1\x44\xd8\x2e\xfb\xfc\xbf\x28\xc1\x89\x01\x83\x57\xfd\xf0\xf5\x0e\x76\xd6\xa2\xf5\xef\x8b\xc5\xc7\x4b\x5a\x60\x3f\xb1\xfa\x5f\x25\x8a\x59\xe0\x9c\x27\x6b\x54\x3f\xe3\xf2\x52\x50\x64\x79\xb1\xff\xfc\xe9\x87\xa1\x19\x11\x13\xd6\x09\xb8\xa3\xde\x39\xd2\x6f\xba\x4f\xfb\xc4\xd4\x98\xd6\x23\xc4\xe4\xa3\x99\x95\x06\xa3\xc5\xd8\xed\x1a\xdb\x0b\x71\x01\x6c\xac\x43\x79\xfb\x5d\x13\xdd\x4f\xa7\x36\xb4\xec\x47\xd0\x5b\x83\xf5\xcb\x2a\xe9\x37\x27\xcb\x8a\x16\x79\x03\x9d\xe3\x8a\x54\x85\xfa\x84\x19\xd2\x3b\x14\xf6\xf4\x29\x9e\x6a\x8d\xca\x8e\xdf\xd7\xa3\xea\x83\xb0\xe1\xe8\x0f\x4b\x2b\x72\x54\x8f\x91\x58\x03\x38\x1c\xf8\x33\x5a\x52\x96\x93\xf0\x58\x78\x6a\x8b\x97\x53\xb7\xa9\x3c\x27\x42\x4d\x07\x5a\x19\x33\xa2\x86\x2e\x34\x4d\x14\xb7\x29\xef\x70\x94\x58\x4d\x1f\xdd\x29\x6f\x79\x90\xfa\xc0\x62\x9c\xcb\xf2\x07\xb8\xc6\x75\xf9\xec\x65\x51\x3b\xb0\xd7\xdf\x5d\x5f\x2e\xb4\x1f\x35\x11\xcb\x3c\xd7\x0e\xeb\xa9\x24\x9e\xe6\xbc\xfe\x0c\x2a\xe1\x18\x99\xe9\x10\x70\x90\xae\xc8\xd0\xa2\x81\x41\x88\x08\xc6\x87\x75\xe2\x13\x82\xc8\x1a\xd5\x5b\x9d\x07\x5f\x5d\xe8\x64\xc0\xaa\x43\x3a\x19\x88\x2d\x3e\xce\xd5\x4f\x9b\xe8\x7d\xcb\x24\xf5\x8c\xdd\x3c\xea\xc0\xec\x4f\x4d\x7c\x4c\x35\x5e\x20\x51\xf8\x7e\x5b\xaa\x7d\xa3\x1b\x9a\x82\xef\xee\x3b\x19\x73\x33\xe0\x21\x49\xcc\xeb\x73\x8b\x0d\x42\x4c\xbd\x99\xbd\x29\x3a\xb9\x8a\x13\x65\x0a\xc5\x8a\x64\x68\x8b\x7b\x95\x44\x21\x4d\xb9\x21\x23\xd2\x54\x46\xa8\x08\xd3\xff\x06\x3f\x10\x7f\xec\x0f\x8a\x03\x29\x0a\xbe\x03\xae\x36\x1a\x5c\x71\xc8\x6d\x8b\x42\x08\x4a\x99\xe2\x0e\x61\x83\x65\x02\x57\x0a\x48\x21\x1d\x06\x69\x2a\x5e\x02\x49\xee\xf7\xbd\xe6\xe0\xb8\x6e\x25\x69\x1d\xb4\x53\x66\x5e\x86\xe8\x34\xc0\xa7\xf7\x1f\x7e\xfc\xe9\xfd\xe1\x9d\x49\xb3\xee\x76\x87\xc1\x91\x73\x5a\x2d\x3a\xb7\xba\xa1\x71\x69\x49\x81\x5d\x5f\x2e\x1e\x46\xa7\x27\xbf\x57\x17\x36\xf5\xb5\x39\xff\x97\x13\x01\x97\x5c\x08\xbe\xbb\xbe\x5c\x0c\xff\x11\xec\x75\xb4\x0e\xa7\x09\x7a\x73\x5c\x29\x2d\xca\x86\xc5\xc3\x18\x6f\xe0\x2e\xae\x2f\x17\xed\x5c\xce\x56\x58\xb5\x44\x04\xca\xaa\x50\x40\x25\x7b\xa9\x6c\x08\x37\xba\x96\xfb\x8a\x97\x55\x5b\xcc\x41\xe0\x0a\x05\xb2\x0c\xdb\x88\xe4\x86\x57\x45\x0e\x4b\x0c\x0f\xba\x6c\x85\x5b\xac\xab\x2d\x9a\xd3\x30\x57\x3d\xb3\x1d\x09\x11\x86\x92\x4b\x95\xc8\x27\x87\x8e\xb0\xb9\x39\xbe\x1a\xc1\xbf\xfe\xe5\x1f\xbd\x31\x3b\xa3\x39\xd0\xbc\xc7\xfb\x0d\xde\x11\xc6\xb8\x72\x1c\x0a\xb5\xb0\x5e\xc3\xcc\x6c\x50\x9b\xba\x5e\x77\x95\xda\xea\x28\xcb\xb8\x10\x98\xa9\x41\xcb\x79\xf6\x99\x6b\xa3\xa0\xfe\xc9\x5b\xc8\x1a\x3b\x4c\xf4\x9e\xf0\x1d\xb3\x25\x75\xc2\xb4\xa4\x79\xc5\xd4\x49\xdb\xf5\x66\xa6\x98\x07\x6d\x13\x89\x13\xda\xc6\x61\x1e\x1e\x77\xc0\xab\xc5\x03\x93\xa5\x81\xc0\xf3\xdc\x87\x7b\xea\x69\xab\x15\xe6\xfa\x72\x01\x19\x67\x2b\x2e\xb6\x3a\x72\xd8\xac\x23\x1a\xef\xea\xfc\xa4\x59\xb7\xd9\x7d\x98\x53\x55\xc2\xe0\x9f\x56\xdd\xff\xa9\x05\xb9\xa2\x58\xe4\x87\x8d\x91\x08\xcb\x6e\xcd\x78\xed\x0a\x2c\xf4\x0c\xd2\x26\xf8\x10\x93\xbe\x73\x8d\x60\x20\x70\xcb\xef\xd0\xd7\x56\x6c\xdf\x9e\x3d\x0f\x69\xfc\x2d\xcb\xc1\x0e\xa2\xb5\xee\x67\xa4\x28\x82\x52\x82\x23\xb0\x33\xb3\xef\x37\x1b\x19\x1b\xf7\x93\x0e\xfd\x1f\x41\x77\x57\xaf\x33\x4b\x74\x2e\xd8\x5e\xbd\xd7\xee\x30\xbe\x66\xc2\xc4\xae\x65\x78\x8b\xfb\x19\x34\x53\x74\xb3\x90\x37\x6f\xa0\x24\x8c\x66\xc3\x41\xe0\x56\x02\x5f\xee\x61\x67\xf0\xce\xf8\x02\x6d\x7d\x35\xc3\x1c\xa3\x8c\xd0\xae\x2e\x60\xd0\x9b\x7b\xfb\x14\xb3\xa1\x24\xcc\x32\x8f\x82\x0d\x26\xf0\x6e\x83\xd9\xad\x75\x43\xd5\x72\x4b\x95\x42\x53\xbc\x57\x1c\xb6\xe4\x56\x3f\x14\xa8\x45\x62\x8f\x8e\x6c\x18\x55\x3a\xc2\x86\x36\xba\x63\x72\x32\x18\x8d\xe2\x04\x09\xb7\xb4\xd5\x0b\x68\x58\x3a\xa1\xb9\xef\x06\xac\x39\x2b\xde\x4c\x88\xed\xee\x1b\x25\x93\xac\xd7\xe7\x4d\xaf\x15\xb4\xdb\x17\xa6\x75\x38\x56\xe4\xd6\x74\x6a\x69\xd6\x69\x7d\x22\x79\x1e\xa9\x53\x4d\xb1\x0c\xac\x2a\xc2\x54\x43\x29\xeb\xea\x1c\x24\xcd\x81\x08\x41\xf6\x7f\x56\xe8\x3c\xa4\x6e\xf6\x0f\x22\x9f\xc3\x77\x71\x3c\x3a\xeb\xc0\x98\x6a\x97\x67\xea\x59\x3b\xc6\x90\x3c\x37\xc4\x33\xdc\x39\xa4\x6e\x35\x81\x47\xd9\x6d\x68\xb6\xa9\xcd\xd3\x9c\x81\x17\xb9\x16\x74\x67\x2e\x5e\xe4\x8b\xb4\x45\xfc\x42\xf3\x2f\x35\xe1\x09\x15\x08\xfb\x39\xb5\xec\x15\x3f\x45\xf2\x39\x4a\x25\xf8\xbe\x9e\xb7\x4f\xf6\x36\xbd\x70\x8a\x62\x3c\x8c\x91\x94\x0f\x52\xfa\x9d\xd1\x59\xa2\xd5\x98\xb5\xf4\xe0\xa9\x19\xcc\x81\x9c\xb9\x71\x14\xb7\xb8\x97\x69\xaa\x9b\xd4\x26\x7c\xf8\x9f\xa8\xac\xdb\xf6\xd1\x54\x27\x9e\xee\xdc\xb6\x97\x70\x9d\x4b\x70\x6f\x95\xde\x63\x9a\x0c\x57\xa7\x99\x40\x55\x70\xb2\xa9\x95\x5b\x0f\xf0\x4f\x37\x3c\xea\xd4\xf9\x5f\xca\xca\xd2\xbc\x7a\xd1\xd5\xa1\x83\xbc\x6a\x4c\xe1\xa9\x2c\x33\xb5\xfd\x20\x97\x88\x3a\x0d\xf0\xab\xd6\x51\xb6\x36\xc7\xd1\x7c\x65\x38\x64\xa2\xa3\x84\x21\x65\x59\x51\xe5\x26\xda\x6e\x6c\x30\xbd\xba\x18\x75\xcf\xfe\xa9\x04\x49\x56\x3e\x8f\x13\x68\x34\x8e\xf1\x3a\x81\x73\x7a\xe8\xce\x3a\x8d\xa0\xb4\xa5\x19\xa4\x81\xa1\x9f\x2a\x90\x3f\x9c\xce\xd2\x55\xca\x8e\x9f\x9b\xd4\x31\x91\x5b\xda\x93\xe0\x15\xcc\x61\x98\x90\x9d\x5e\x75\x9f\x02\x8c\x9e\x77\x90\x39\x25\xd0\xf8\xb4\xa3\x6b\x51\x1a\x27\x8e\x47\x3a\xdc\xda\x7d\x5a\x3d\x3d\x6e\x53\xf8\xde\x66\xb6\x9a\xdd\x46\x99\x45\x7d\x63\xc1\x77\xa1\x94\x98\xd9\x66\x13\xad\x3f\x47\x0e\x60\x5a\xf6\x10\xe6\x74\x2d\x29\xdc\x27\xf3\xbd\x8e\x5d\xd0\x95\x6d\xca\x5a\x29\x98\xa7\xac\xe3\x10\x87\x0f\x70\x67\xa5\x2c\x60\x9a\x88\x1e\xce\xf5\xb0\xf7\x84\x5d\xbf\xe5\x46\x9d\x32\x1b\x1a\xdb\xfc\x68\x9d\x81\xf5\x79\x08\xc3\x82\xa4\x86\xd3\x7c\xf4\x17\x54\x22\xd2\x54\x1d\x2b\x45\x9c\x1c\x51\x6e\xec\xe5\x10\x23\xe0\xc5\xbe\x44\x13\x5f\xee\x6d\x59\xeb\x7b\xce\x8b\x9e\xf9\xef\xa3\x5a\x18\xcc\x4c\xa3\x61\x52\xe7\x0f\x12\x40\x65\x7b\xfe\x61\x70\xa0\x01\x96\x84\x34\x05\xf6\xa8\x7a\x1e\xd1\xd1\xe3\xba\x4f\x38\x0f\x84\x74\xc3\x66\xad\xfa\x3a\xb1\xb8\xef\xdf\x3c\x26\x65\xeb\x5f\x96\xb6\xe0\xe1\x1d\xb0\xcb\x03\xd8\x5e\xe7\xb1\xb6\x06\x54\x14\x3a\x62\x38\x89\x12\x93\x29\xa1\xc6\xd5\x8e\xb4\x3d\x3b\xcb\x7e\xed\x62\x2b\xb5\x08\x0f\x88\x4e\x2d\x7a\xd5\x5a\x06\x7d\x6a\xe6\xd6\x9e\x22\x65\x8d\xca\x57\x39\x87\x2e\xa9\x9a\xb9\x4b\x33\x63\x9b\x9d\x5d\xe5\x33\x7f\x78\x1e\x9c\xb7\x06\x02\x30\x9d\x33\x59\xa6\x7d\xd0\x1a\xd5\x5b\xbb\xb9\x1e\xd6\x19\x5a\x38\xac\x61\xd1\x27\x13\x16\x34\xd8\x24\x23\x25\x59\xd2\x82\x2a\x8a\xa6\x9e\xff\xfa\xc5\x7d\x72\xf7\x63\x37\xd0\x0f\xdf\xda\xd2\x78\xea\x16\xcc\xe8\xb9\x33\xfe\xe1\xe8\xec\xd9\xb3\x67\xcd\x6e\xaa\xd9\x2d\xb9\x5a\x45\x3d\xe7\xde\x6e\x2c\x9d\xd8\x1b\xfa\x06\x41\x6a\xe9\x18\x1c\x11\x9f\xf6\x32\x8e\x61\xa3\xe7\x71\x35\xf8\x00\xff\xa9\x7c\x67\xda\x7f\x87\xb6\xc9\xea\xaa\x6e\x71\x19\x75\xec\x89\x86\x55\x8d\x89\x6b\xbb\x36\x67\x57\x84\x32\xf9\xdf\xb8\xaf\x71\xa4\xf6\x0a\xae\x89\x6b\x1e\x05\x4e\x87\xe4\x17\x0f\xf8\xe5\xb9\xf1\xfc\xf6\x76\x46\xca\x90\x5d\x13\xa3\x6d\x59\x6e\x2c\x2c\x15\x6f\x1d\x44\xfb\x9e\xc0\x71\x7d\x4c\x9d\xd7\xd5\x3c\xe9\x54\xbf\xe9\x0a\x2a\x51\x4c\x64\x41\x33\x1c\xda\x2d\xe2\xab\x31\x54\xe5\x82\xcf\xe0\x6f\x23\xed\x74\x06\xb4\x5c\xc9\x41\x9a\xba\x41\xeb\xba\xde\x76\x5f\x52\x66\x8e\x04\x0b\x5e\xe5\x53\x0d\xd9\x1c\xc9\xb4\xe7\xf9\x0f\x3f\x8f\x7e\x51\x20\x5b\xab\x4d\xb0\x7d\x3e\xc4\x94\x4a\x14\xbd\xee\xc9\xdc\xb7\xf2\x3f\x3e\xd5\xf5\x18\xeb\x87\x80\xe8\xb7\xc0\x05\x48\xae\xb3\x71\xcd\x0b\x49\xb7\xb4\x20\x02\x76\x46\xc9\xf9\xce\xec\xd9\x96\xe8\x51\x98\x0b\x52\xbe\x29\x54\x7b\x2b\xed\x22\x4f\xaa\x7d\x19\x4a\xe2\xd2\x92\x69\x00\x74\x97\x77\x24\xb1\xe5\x99\x1c\x56\x02\xf1\x77\xb7\x17\x0c\x6f\x3c\xf9\x2d\x06\x0b\xbb\xf5\x42\x6c\x9e\x2c\x9d\x3c\x75\xdb\x53\xfb\xfb\x7b\x3c\x0d\x4f\xbf\x56\x13\x8b\xa5\x14\x89\x6c\x31\x3e\x47\xd1\x59\xee\x60\x00\x33\x18\x18\xbf\x5d\x77\x15\x77\xca\x2c\xed\xc3\x58\xad\x82\xee\x22\xc6\xab\x91\x81\x77\xcf\x9b\x7a\xee\xef\x28\x78\x3f\x9e\xf8\xb2\x48\x7d\xa7\x43\xa3\xfa\xd0\xbc\x6a\xb0\x99\x9d\x33\xbd\xc3\x0e\xc6\xe7\xc7\xdc\x47\xb4\x60\x37\x81\xb4\xb7\x3a\xf4\xce\x70\xef\xda\x3f\xfb\xaa\xb4\xfa\x5f\xca\xb9\x44\x68\xbf\xc0\xdc\xdd\xfe\xea\x1e\x0e\x37\xd2\xf4\x7f\x75\xfb\x04\xba\xd2\x3d\x78\xab\xe9\x51\x59\x1f\x95\x37\x66\x81\x5d\x67\x7c\x30\xbb\x39\xd5\x2b\x3f\x86\x94\xee\x75\xa3\x14\x4d\xc9\xeb\x47\x49\x65\x3e\x39\x72\x34\x42\xd7\xe1\x72\xc5\x2b\xd6\x91\xf7\x9f\x11\x5b\x0e\x04\x97\xc4\x4d\xab\xc7\x70\xae\xad\x0e\x49\xc6\x1d\x3d\xd2\xfc\x77\x67\x62\x9b\x0b\xcf\x7b\xd2\x6d\xed\x7e\x1d\x9f\xb5\x13\xd6\x3f\xa5\xbf\xa6\x6a\x53\x23\xdf\xfd\xed\x6f\x58\xd9\x9b\x01\xe1\x75\x0a\x7b\xc8\x45\xd5\x4b\x73\xe3\x35\xba\x1c\x3b\x86\x52\xf0\x3b\x9a\x23\x7c\xf8\xf1\xc2\x15\x47\x0b\xca\x6e\x81\xaa\x06\xe3\x07\x22\x6e\x51\x95\x05\xc9\x10\xb4\xd1\x2f\x89\xc4\x08\xfb\x8f\x6a\x83\x62\x47\x25\x8e\x41\x3b\x5d\x73\xfb\x5a\x63\x7a\x75\x3c\x56\xc4\xeb\xeb\xe8\x42\xfb\x2a\x37\xcc\xda\x15\xd4\x7f\x7b\xbd\xd0\x5e\x57\xa8\x61\xbf\x71\xc1\xb7\x3a\x63\xda\xa2\x94\x64\x8d\x33\x18\x5c\x73\xfb\xad\x02\x77\xb5\xce\xc5\xe8\xc1\x28\x41\x5a\xd0\x1c\x69\xd1\xd7\x77\x13\x3b\x63\x31\x68\x33\x36\x43\xe3\xfb\xa0\xd1\xf8\x3a\x62\xa4\x3a\x79\xd1\x37\x31\x45\x20\xf5\xbe\xce\x6d\xc9\xda\x25\x21\x7b\xa5\x77\xa7\x05\xda\x6c\x94\xb4\x46\x74\x02\x8c\x6f\x36\x0d\xb8\x1d\xdc\x41\xef\x06\xa4\xa7\x05\xad\xa3\x66\x0a\x26\x78\x45\x3f\x4d\x65\x3c\xf8\x5a\x41\x0f\x85\xbe\x0d\x3f\x8e\xbb\xc1\x57\x0c\x9a\x2e\x31\xab\xfb\xe6\x7f\xad\xb9\xd2\xb8\x61\xde\xf7\x22\xbc\x6c\xda\xae\x51\x1d\x50\xbd\xf9\x1c\x5e\x25\x2a\x51\xe1\x36\xa3\xa5\x1b\xe9\x8e\x9a\xd7\xe7\x4e\xba\xa7\xed\x34\xc2\xa2\x4a\xd8\x42\x24\x13\x3d\x44\x6f\x52\x0d\xb8\xc9\xe6\xdb\x27\xb5\xad\x9e\xde\x1a\x55\x83\x7d\x39\x69\x69\xa7\x75\x48\xbd\x09\x5b\xa3\x0e\x75\xa6\xba\xae\x54\x3f\xb8\x25\xb4\x3f\xd6\x88\x96\x6c\xa1\xeb\x80\xa6\x9b\x09\x65\xf8\x3d\x8b\x64\xdd\x20\xf8\xc8\x45\xba\xed\xb4\x0c\x3e\xa3\x71\xa0\xf2\x70\x0c\x41\xd0\x2a\x60\x59\xf1\x22\x89\x2c\xd9\x7c\xdc\x60\xf9\x81\xb2\x5b\xcc\x83\x16\xb6\x47\x62\x49\xd6\x96\x2e\x5d\x39\x6b\x66\x34\xe3\xd1\x75\xcc\x84\xac\x5e\x9f\x07\x64\x9d\x50\xcf\x7a\xfd\x5d\x44\x7b\xfa\x94\xf9\xa1\xf3\x74\xf4\x04\x2d\x3b\xd0\x4b\x78\x82\xa2\x1d\xea\x88\xb6\xfd\xb7\x03\xfb\xc5\x9f\xf0\xa2\xe1\x20\x2d\x8b\xa8\x17\xda\x83\x99\x3e\x0b\xc9\x33\x4a\x0a\x28\x0b\xa2\x56\x5c\x6c\x61\x67\x4e\x7f\x74\x34\xd8\xdb\x4d\x3d\xb5\x7d\x5f\x66\x2b\xc0\x72\x28\x2b\x81\xc5\x1e\x56\xee\x14\xb6\x98\xf4\xcc\x88\x4d\xdf\x69\xbb\x53\x36\xd9\x92\x1a\xb6\xa3\x0e\x7a\x34\x4a\xfe\x56\x11\x81\xe6\x06\x75\x1b\xa7\xb9\x62\xdd\xdf\xe4\x6b\x43\xdd\x93\xdb\xb8\x93\x54\x4e\x37\x7c\x8b\x53\xba\x5d\x4f\xcd\x87\x8d\xdc\x47\x8e\x0a\xbe\xe6\x93\x92\xad\xfb\x9b\x1e\x7a\x16\x07\x26\x82\xe7\x94\x58\x55\x1d\xd8\xdb\xcd\xbd\x98\x7a\xb0\x2c\x09\x63\x28\xfe\x6f\xb3\xc8\xd2\x38\xf9\xb5\xfc\xb3\x98\xf4\x6b\x89\x8f\xe3\x92\x55\x7a\x39\x3b\xe0\x5d\x06\x94\x49\x45\xd6\x82\x6c\x07\x27\xe9\xef\x6e\xb7\x9b\xd4\x20\xe6\xeb\x57\x76\xb5\x07\x15\xda\x4c\xa4\x53\x0c\x9e\x73\x76\xda\x3c\x7e\xf4\xc4\xae\x61\xfa\x9d\x9d\xe6\xe0\x0c\x6a\x47\x95\x42\x71\xda\x04\x6e\x70\x77\x09\x8f\x76\x94\x0f\xed\x24\xc5\x1f\xc7\x35\x25\xc6\xf6\x19\x8b\x2b\x04\x9a\xbb\x56\xa3\xf8\x7e\xd9\x0d\x2a\xe0\x95\x30\xae\x2f\x87\xb2\xfe\xb4\x15\xf8\x53\x97\x64\x9c\x85\x39\x4c\x5d\x60\x76\xab\x69\xa2\xc5\xbb\x6e\x43\x42\x6f\x41\x5f\xe3\xb1\x61\xf1\x64\x34\xed\x8f\x5c\x85\xa4\xe4\x35\x74\x53\x64\x8d\x01\x83\x4f\x5b\x99\xb9\xed\xcf\x0e\x60\xb4\xf5\xad\x99\x69\xcf\xfa\xcd\x47\xb0\xa4\xc9\x8a\xe3\x09\xe2\x3c\xfa\xd5\x59\xfc\xd6\x7f\x46\x65\x0e\xf7\xf1\x0e\xfd\x9d\xdf\xd6\xd8\x72\x6c\x5d\x9d\xd5\x61\x41\x92\x3b\x74\xcd\x4a\x6e\x8d\x35\xa4\x39\x95\x31\x10\xcd\x7e\xc7\x60\x08\x12\x49\x7b\xdd\xd2\x1e\xd8\x4c\x1c\x82\x89\xc6\x39\x7c\x7d\x6e\x60\x83\xc6\x9b\x36\x5f\x83\x34\xdf\xec\x4b\xfa\x3f\xf8\xf6\x70\xf6\x70\xf6\x3f\x01\x00\x00\xff\xff\xb8\xe1\xf5\xd9\x35\x50\x00\x00" func contractsDigitalartCdcBytes() ([]byte, error) { return bindataRead( @@ -100,11 +104,11 @@ func contractsDigitalartCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/DigitalArt.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xac, 0xeb, 0xc5, 0x61, 0xe6, 0x43, 0xad, 0x58, 0x16, 0x88, 0x2a, 0xf6, 0xa0, 0x2b, 0x1b, 0xe9, 0x32, 0x3e, 0x13, 0xa4, 0xb4, 0x91, 0x1d, 0xf, 0x2e, 0xe8, 0x91, 0x2f, 0x1a, 0x6b, 0xe5}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0x5b, 0x74, 0x34, 0xf9, 0xcc, 0x13, 0xd9, 0x80, 0x96, 0x42, 0x69, 0x7c, 0xb, 0x46, 0xc3, 0xc5, 0x14, 0x56, 0xca, 0x83, 0xa0, 0xde, 0xdd, 0x3b, 0xc3, 0xa6, 0x33, 0xe7, 0x13, 0x4e, 0xce}} return a, nil } -var _contractsEvergreenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x58\x41\x6f\xeb\x38\x0e\xbe\xf7\x57\x70\x7a\x98\x4d\x16\xad\xf3\x16\x18\xcc\xc1\xd8\x6c\xd1\x6d\xa7\x40\x0f\xf3\xb6\xe8\xeb\xec\x1e\x8a\x1e\x14\x8b\x4e\x88\xca\x92\x57\x92\x9b\xf1\x3c\xf4\xbf\x2f\x28\xd9\x8e\x9c\x38\xe9\xbe\x01\x5e\x4e\xb1\x25\xf2\x23\x3f\x52\x24\x65\xaa\x6a\x63\x3d\xdc\x35\x7a\x4d\x2b\x85\x4f\xe6\x15\x35\x94\xd6\x54\x70\x9e\x2d\x9c\x17\x5a\x0a\x2b\x17\xa3\xe5\xac\x90\xc5\xf9\x59\x27\xf8\xd9\xe8\x0f\x64\xf7\x77\x8c\xc4\x7f\x45\x2f\xa4\xf0\xe2\xdf\x84\x5b\x77\x28\x3b\x5a\x8e\x82\x67\x8b\x05\xfc\xf2\x86\x76\x6d\x11\x35\x14\x46\x7b\x2b\x0a\x0f\x12\x4b\xd2\xe8\x40\x80\x35\x0a\x2f\x57\xc2\xa1\x84\xca\x48\x54\x50\x1a\x0b\x92\x9c\xb7\xb4\x6a\x3c\xe9\x35\xd4\xd6\x14\x88\xd2\xb1\x2a\x53\x42\x6d\xa9\x12\xb6\x05\xa1\x25\x38\x2c\x0c\x43\xb7\xe0\x84\x42\xc7\xcb\x9f\xef\x9e\x5c\x76\xb6\x58\xf0\xee\x2f\xa6\xb1\x05\xe6\xb0\xf1\xbe\x76\xf9\x62\xb1\x26\xbf\x69\x56\x59\x61\xaa\x45\x4d\xb5\x15\x1e\x17\x0e\xff\xdb\xa0\xba\x2c\x95\xd9\x5e\xf6\xd6\x31\xd2\x59\xdd\xac\x76\xe6\xee\x3c\xf8\x7a\x06\x00\xb0\x58\xc0\xa3\x51\x98\xb8\x51\x0b\xeb\x5b\x20\x0d\x42\xb3\x09\xc1\x1e\xf0\x1b\xe1\xa1\x12\x2d\x58\x2c\x90\xde\x10\x04\x14\xa6\xaa\xc8\x39\x32\x1a\x4a\xc4\x5e\xd9\x7f\x58\x95\xa2\x15\xb2\x4d\xaa\x05\xb1\x72\x11\x58\x6c\x45\x1b\x79\xf6\x1b\x64\x7b\x0a\xac\x3d\xbb\x69\x4d\x2b\x94\x27\x74\x8c\x69\xac\x44\xdb\xeb\xf2\x06\x5c\x53\x87\x70\x09\x58\x59\x23\x24\x5a\x78\x13\x96\xd0\xb7\x2c\x49\xda\x23\xeb\x26\xa3\x1d\x6c\xc9\x6f\x82\xed\x54\x50\x2d\xb4\xef\x18\x8c\x74\x66\x41\x25\x13\xe1\xbc\x6d\x0a\x1f\x7d\x8e\x0c\x74\x60\x24\x81\x1c\xfb\x4c\x12\xb5\xa7\x92\xd0\xb2\x0a\x36\x96\x03\x9b\xc1\x53\x5b\x53\x21\x14\xbc\x09\xd5\xa0\xcb\x53\xd9\xbf\xc2\xf9\xb5\xf5\xe4\xfc\x39\x5c\x82\x68\xfc\xc6\x0c\xb2\x9f\xef\x9e\xf6\x76\x3e\x28\xe1\x4b\x63\x2b\xde\x5b\x77\xff\x3b\x7e\xd9\x21\xd9\x8b\x81\xb1\xe0\x6a\xa3\x9d\xb1\x28\xf9\xa1\x14\x05\x29\xf2\xa2\xdf\xc3\x9e\xed\xe9\xfe\xd7\x56\xa3\x65\xc5\x81\xe3\xc6\x5a\x64\x22\xf8\x65\x62\x0f\xcc\x7c\x74\x45\xb5\x17\x51\x11\x2a\x85\x76\x3e\xe8\x62\x9e\x14\x7a\x20\x99\xc3\x17\x6f\x49\xaf\x53\x18\x89\xae\xb0\x54\x33\xeb\x1d\x63\x26\x3c\x08\x05\x25\xa1\x92\xd1\x97\xb8\x6b\xd5\x99\xca\x0c\x72\x9a\x2f\x8c\x0d\xcf\x21\xc7\xb2\x03\xc0\x44\xf5\x14\x32\x69\xf2\x24\xd4\x17\xa1\xf0\x66\x97\x7c\x6c\x43\x9a\x8c\x9c\x78\x50\x6c\x84\x5d\xa3\x84\x55\x9b\xe0\xfb\xf0\xbf\xd3\x72\x40\x5f\xca\x0a\x55\x15\x4a\xea\x32\xb8\xf4\x68\x43\x6c\x48\xaf\xe7\x19\x5c\x2b\x65\xb6\x28\xc1\x0a\xbd\xc6\x1c\x9e\x3f\x65\x9f\x2e\xff\x96\x7d\x7a\x39\xa4\x6f\xca\xdc\x1c\x7e\xbb\xa3\xdf\x7f\xfe\x29\x45\x1e\xce\xfe\xaf\xc2\xbe\xa2\xff\x13\xbe\xa5\xda\xb6\x1b\xd4\x43\xa8\xc9\x81\x33\x4a\x82\xd1\x5d\xa4\xfb\x2a\x53\x05\xa8\x6f\xf0\xe6\xa8\x91\x53\x1e\x09\x29\x2d\x3a\xc7\xf0\x0c\x7b\xa7\xcc\x76\x78\xd7\x25\x62\x2c\x33\x21\x57\x84\x73\x4d\x85\xbc\x95\x5c\x3c\x6c\x07\xe8\x9d\x70\x0e\xd7\xf1\x4f\x0a\xd6\x95\x24\xfb\x20\xfc\x06\x66\x7d\x32\xce\x23\x79\x75\xb3\x52\x54\x40\xcd\x6b\xde\x0c\xc8\x5c\x6e\xca\xae\x39\x80\x0f\xfd\xa3\x57\x93\xa5\xba\xef\x4b\x70\x35\x16\x5c\x0e\xe4\x05\x08\xdd\x82\x36\xfa\xf2\x0f\xb4\x26\x0d\x4b\x2d\xda\x8a\x4f\xda\x96\x94\x82\x15\x57\xc0\xda\x38\xf2\x28\x53\x55\x01\x9d\x1d\xec\x70\xfa\x7c\xec\xcd\xe9\xf9\x99\x51\xc9\x35\x86\xe4\x7c\xdf\x12\x6d\x7c\x6a\x4d\x08\x7e\xaf\x6c\x07\xed\xd1\x56\xa4\x77\xf9\xd1\xbb\x39\xb6\xe5\x15\xf5\x5f\x1c\xf8\xb6\x46\x68\xb8\x63\x91\x1e\x6a\xca\x21\xfb\x29\xc3\x39\x3c\x04\x4a\xf9\xff\xd5\xd9\xb0\x95\x93\x7d\x36\x3c\x85\x37\x43\xf5\xb8\x18\xbd\x9f\x38\xe4\xe3\x0d\x27\xcf\xcd\x78\xeb\x87\x49\x39\xde\xbe\x9f\x45\xe3\xd5\xe3\x5e\xf6\x3b\xe6\x49\xcb\x88\xf0\xaa\xcc\x48\xc2\x12\x48\x1e\x2e\xa4\x85\x72\x99\xba\x3d\xa1\x63\xb2\xb2\x2d\xa7\xa9\x38\x14\x3f\x5e\x40\x96\xc7\x29\x3a\x54\xd3\x67\xe0\xb2\x27\xea\x70\xcb\xe8\xac\x2d\x47\x94\x0d\x9b\xdf\xcf\x46\x09\x54\x36\x3a\x39\x2b\x8f\xc2\xe3\x2c\x71\x2b\x87\x7f\x1a\xa3\xe6\x7d\xbc\xf6\x08\xb6\xe8\x1b\xab\x21\x15\x80\xab\x53\x94\xe5\x1f\x10\x32\x4f\xac\x4c\x6c\x5d\x2c\xe0\xc1\x9a\x92\x86\x41\x48\x82\x00\x45\xae\x1b\x50\x78\x20\x2b\xbb\xd6\xb5\xa6\x37\x0c\x83\x51\xd6\x4b\xfe\x22\x8a\x4d\xec\x30\xa7\x06\x24\x3e\xee\xf8\x86\xdd\x80\x37\x08\x3f\xf1\xa1\x0b\x33\x49\x63\x31\xd6\x46\x72\xa9\x28\xb9\xc1\x24\xd2\x80\x03\xd6\x20\x74\x30\xdb\xf4\x9e\x4c\x8c\x37\xa1\xde\x74\xcb\xb7\xf7\xb7\x17\x40\x19\x66\x20\x49\xe6\x71\x7a\xcc\x7f\x6f\xff\xf8\x8e\x63\x40\xdd\xd8\xda\xb8\x9d\x9b\x9d\x29\xdf\x34\x07\x0c\x35\x89\xa3\x92\xc3\x33\x4f\x72\x2f\xdf\xa5\x0e\x8d\x11\xfa\xb7\xdf\xad\x06\xc4\x34\x5b\x46\xd8\x53\x87\x69\x8d\x9e\x4d\x9a\xed\x1c\x9b\xe7\x61\xa0\xbd\xda\x33\x8d\x53\x36\xe4\x0a\xe9\x14\x62\xbc\x29\x50\x54\xc2\x2c\xf4\x5d\xf6\x83\x1d\xd9\x77\x72\xa0\x24\x9e\xc7\xd1\xc8\xb1\xb3\xf4\xf8\x53\x27\xa7\x49\x9d\x72\x6c\xd5\x90\x92\x8f\xfd\x75\x60\x26\xb1\x14\x8d\xf2\x8f\xc7\xca\xf2\x3c\x87\xe7\xf1\x3d\x2d\xca\xb6\x2f\x7b\xd6\xc7\x74\xe9\xd4\x1e\x17\x5a\xc2\xf3\xcb\xff\xc7\xdf\x81\xef\x6f\xc2\xc6\x11\x23\x86\x2f\x9b\xac\x8b\x09\xdb\x71\xef\x92\x09\x39\xc2\x74\xa7\x6d\x82\x83\x09\xe2\x8f\x42\xfc\x70\x0a\x22\xed\xec\x37\xa2\x86\x25\x67\xd6\x75\x51\x98\x46\xfb\x98\x0e\x5d\x1b\x98\x67\x6b\xf4\x37\xa2\x16\x2b\xbe\x7f\xb4\x7f\xff\xf1\xeb\xf8\x5e\xdd\x5b\xf7\xfe\x8f\x19\xa3\xfe\x30\x9f\x84\xa3\x32\x45\xcb\x8a\x0d\x16\xaf\xb3\x63\x89\x06\xe1\xfc\x75\x21\xcb\x44\x5d\xa3\x96\xb3\xc9\xb8\xcd\x8e\xca\x43\xd2\xd3\xf3\x14\xfb\xe2\xa4\x48\xd1\xf8\x3c\x46\xf1\x68\x17\x39\xad\x60\x54\x58\x82\xa2\x63\xe7\x3e\xfd\xcd\xa7\x59\x7b\xff\xf0\x9c\x4d\x1d\xb4\x81\xba\xa3\xed\x2e\x7e\x33\x19\x6e\xfd\x3a\x5e\xa6\x4b\x51\x60\x48\xfb\x73\x1c\xbe\x13\x84\x59\xd1\x9d\xc3\x76\x43\xc5\x06\x84\x0d\x17\x0b\x37\xdc\xd1\xb9\xca\xf7\xb7\xf4\xdd\xc7\x85\xfe\x43\xca\xae\x39\x59\x74\xe1\x1b\x46\x02\x14\x6d\x18\xb5\x29\xce\x40\xe7\xd0\xdf\xdf\x76\xae\xc4\x9e\x25\xf8\x1d\xdc\xdf\xf2\x24\xc0\x8d\x8b\x6d\xac\x84\x9f\x47\xf8\x46\x13\x37\xaf\x76\x77\x75\x1f\xdd\x0f\xfa\xbb\x90\xd0\x12\x84\x52\x40\xde\x01\x4a\x0a\x9f\x0d\xb2\xa9\xea\xda\x59\x30\x9b\x4f\xf5\xbd\x35\xfa\xc1\xcd\xbe\xd3\xa6\xa6\xf6\xa3\x75\xb7\x36\x09\xb0\xaf\x80\x91\x1e\x92\x5e\xb8\x0b\xd3\xf5\x7e\x60\x2c\x0a\x49\x7a\x1d\xa0\x24\x7a\x41\x2a\xdc\xa8\x84\xe6\xe1\x42\x27\x11\xeb\x27\xfa\x1b\xa3\x14\x86\x6f\x24\x27\x63\xb1\xdb\x16\x2b\x6c\x12\x96\xa1\x3c\x1b\x6b\xcd\x76\xb0\x3d\x44\x2f\x34\xa1\xdf\xee\xb5\xff\xf9\xa7\x79\x0e\x3f\x5e\xeb\xf6\xb1\xd3\xfd\x35\xac\xbf\x5f\x75\x0e\xbd\xff\x2f\x00\x00\xff\xff\x76\x70\x5e\xeb\xf0\x13\x00\x00" +var _contractsEvergreenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\x51\x8f\xdb\x38\x0e\x7e\xcf\xaf\xe0\xce\xc3\x5e\x72\x98\x71\x7a\xc0\x62\x1f\x8c\xcb\x15\x73\xed\x0e\x30\x0f\xdb\x1b\xb4\xb3\x77\x0f\x45\x1f\x14\x8b\x4e\x88\xca\x92\x4f\x92\x27\xeb\x2d\xe6\xbf\x1f\x28\xd9\x8e\x9c\xb1\x93\xee\x2d\xba\x79\x8a\x2d\x91\xfc\xf8\x91\x22\x69\x51\x55\x1b\xeb\xe1\xae\xd1\x3b\xda\x2a\x7c\x34\x9f\x51\x43\x69\x4d\x05\x57\xd9\xda\x79\xa1\xa5\xb0\x72\x3d\x5a\xce\x0a\x59\x5c\x2d\x3a\xc1\x77\x46\x5f\x90\x3d\xdd\x31\x12\xff\x19\xbd\x90\xc2\x8b\x7f\x13\x1e\xdc\x4b\xd9\xd1\x72\x14\x5c\xac\xd7\xf0\xd3\x13\xda\x9d\x45\xd4\x50\x18\xed\xad\x28\x3c\x48\x2c\x49\xa3\x03\x01\xd6\x28\xbc\xd9\x0a\x87\x12\x2a\x23\x51\x41\x69\x2c\x48\x72\xde\xd2\xb6\xf1\xa4\x77\x50\x5b\x53\x20\x4a\xc7\xaa\x4c\x09\xb5\xa5\x4a\xd8\x16\x84\x96\xe0\xb0\x30\x6c\xba\x05\x27\x14\x3a\x5e\x7e\x77\xf7\xe8\xb2\xc5\x7a\xcd\xbb\x3f\x98\xc6\x16\x98\xc3\xde\xfb\xda\xe5\xeb\xf5\x8e\xfc\xbe\xd9\x66\x85\xa9\xd6\x35\xd5\x56\x78\x5c\x3b\xfc\x6f\x83\xea\xa6\x54\xe6\x70\xd3\xa3\x63\x4b\x0b\x51\x14\xe8\xdc\x52\x28\xb5\x5a\x0c\xb0\x8f\x9e\x7c\x59\x00\x00\xac\xd7\xf0\xde\x28\x4c\xdc\xa9\x85\xf5\x2d\x90\x06\xa1\x19\x4a\xc0\x05\x7e\x2f\x3c\x54\xa2\x05\x8b\x05\xd2\x13\x82\x80\xc2\x54\x15\x39\x47\x46\x43\x89\xd8\x2b\xfb\x0f\xab\x52\xb4\x45\xc6\xa6\x5a\x10\x5b\x17\x0d\x8b\x83\x68\x23\xdf\x7e\x8f\x4c\x63\x81\xb5\x67\x77\xad\x69\x85\xf2\x84\x8e\x6d\x1a\x2b\xd1\xf6\xba\xbc\x01\xd7\xd4\x21\x6c\x02\xb6\xd6\x08\x89\x16\x9e\x84\x25\xf4\x2d\x4b\x92\xf6\xc8\xba\xc9\x68\x07\x07\xf2\xfb\x80\x9d\x0a\xaa\x85\xf6\x1d\x93\x91\xd6\x2c\xa8\x4c\x09\xe1\x67\xe7\x6d\x53\xf8\xe8\x7f\x64\xa3\x33\x4c\x12\xc8\xb1\xff\x24\x51\x7b\x2a\x09\x2d\xab\x63\xe0\x1c\xec\x0c\x1e\xdb\x9a\x0a\xa1\xe0\x49\xa8\x06\x5d\x9e\xca\xfe\x15\xae\x6e\xad\x27\xe7\xaf\xe0\x06\x44\xe3\xf7\x66\x90\x7d\x77\xf7\x78\xb2\xf3\x41\x09\x5f\x1a\x5b\xf1\xde\xba\xfb\xdf\x71\xcd\xce\xc9\x5e\x0c\x8c\x05\x57\x1b\xed\x8c\x45\xc9\x0f\xa5\x28\x48\x91\x17\xfd\x1e\xf6\xf2\x44\xf7\xbf\x0e\x1a\x2d\x2b\x0e\x7c\x37\xd6\x22\x93\xc2\x2f\x13\x3c\xb0\xf4\xd1\x15\xd5\x5e\x47\x45\xa8\x14\xda\xd5\xa0\xeb\x94\x33\xfe\x29\xf4\x40\x32\x87\x0f\xde\x92\xde\x2d\x52\xbb\x12\x5d\x61\xa9\xe6\x90\x74\x14\x9a\xf0\x20\x14\x94\x84\x4a\x46\xe7\xe2\xae\x6d\x87\x9d\x29\xe5\xb3\xb0\x36\x36\x3c\x87\x04\xcc\x2e\x22\x48\x4c\x4d\x42\x21\x4d\x9e\x84\xfa\x20\x14\xbe\x39\xa6\x2a\x83\x4a\x53\x97\xd3\x14\x8a\xbd\xb0\x3b\x94\xb0\x6d\x13\x40\x3e\xfc\xef\xb4\xbc\x20\x38\xe5\x8d\xaa\x0a\x25\x75\xf9\x5e\x7a\xb4\x21\x7a\xa4\x77\xab\x0c\x6e\x95\x32\x07\x94\x60\x85\xde\x61\x0e\x1f\x5f\x65\xaf\x6e\xfe\x96\xbd\xfa\x74\x99\xe0\x29\xf8\x39\xfc\x72\x47\xbf\xfe\xf8\xc3\xc8\xd1\xa1\x84\xfc\x2c\xec\x67\xf4\xff\x87\xb3\xa9\xb6\xc3\x1e\xf5\x90\x1d\xe4\xc0\x19\x25\xc1\xe8\x2e\x39\xfa\x62\x55\x05\x53\x7f\xc0\xbd\x59\xd0\x93\x2e\x0a\x29\x2d\x3a\xc7\x78\x18\xc7\x9d\x32\x87\xe1\x5d\x97\xcc\xb1\x6c\x85\xf4\x12\xce\x35\x15\xf2\x56\x72\xf1\xc0\x5e\x84\xd3\x29\xcb\xe1\x36\xfe\x19\x59\xef\x6a\x9e\x7d\x10\x7e\x0f\xcb\x3e\xa1\x57\x91\xde\xba\xd9\x2a\x2a\xa0\xe6\x35\x6f\x06\x28\x5c\xcf\xca\xae\x0b\x81\x0f\x8d\xaa\x57\x93\xa5\xba\xef\x4b\x70\x35\x16\x5c\x63\xe4\x35\x08\xdd\x82\x36\xfa\xe6\x37\xb4\x26\x0d\x5c\x2d\xda\x8a\x8f\xef\x81\x94\x82\x2d\x97\xd8\xda\x38\xf2\x28\x53\x55\xc1\x3a\x7b\xdc\xd9\xe9\x53\xb8\x87\xd3\x13\xb6\xa4\x92\x0b\x17\xc9\xd5\x29\x12\x6d\x7c\x8a\x26\xa4\x47\xaf\xec\x68\xda\xa3\xad\x48\x1f\x33\xa8\x77\x73\x8c\xe5\x33\xea\xbf\x38\xf0\x6d\x8d\xd0\x70\x6b\x24\x3d\x14\xaa\xcb\xe1\x48\x19\xcf\xe1\x21\x50\xcc\xff\x5f\x1f\xe3\xc2\xe7\x63\x39\x3c\x85\x37\x43\x49\xba\x1e\xbd\x9f\x28\x14\xe3\x0d\x67\x8f\xda\x78\xeb\xc5\xb4\x1d\x6f\x3f\x4d\xab\xf1\xea\xbc\x97\xfd\x8e\x55\xd2\x97\xa2\x79\x55\x66\x24\x61\x03\x24\x5f\x2e\xa4\xc5\x77\x93\xba\x3d\xa1\x63\xb2\x38\x6e\xa6\xa9\x78\x29\x3e\x5f\x72\x36\xf3\x14\xbd\x54\xd3\x67\xe4\xa6\x27\xea\xe5\x96\xd1\xd9\xdb\x8c\x28\x1b\x36\x3f\x2f\xce\x26\x54\xd9\xe8\xe4\x2c\xbd\x17\x1e\x97\x89\x9b\x39\xfc\xd3\x18\xb5\xea\xe3\x77\x42\xb8\x45\xdf\x58\x0d\xa9\x00\xbc\x3e\x47\x61\x7e\x81\xa0\x55\x82\x3a\xc1\xbe\x5e\xc3\x83\x35\x25\x0d\x93\x98\x04\x01\x8a\x5c\x37\x21\xf1\x64\x58\x76\xed\x71\x47\x4f\x18\x26\xb3\xac\x97\xfc\x49\x14\xfb\xd8\xb4\xce\x4d\x68\x5c\x0e\xf0\x09\xbb\x49\x73\x10\x7e\xe4\x43\x19\x06\xa1\xc6\x62\x2c\xa6\xe4\x52\x51\x72\x03\x24\xd2\x80\x83\xad\x41\xe8\xec\x70\xd5\x7b\x35\x31\x5f\x85\xda\xd4\x2d\xbf\xbd\x7f\x7b\x0d\x94\x61\x06\x92\x64\x1e\x47\xda\xfc\xd7\xf6\xb7\x3f\x73\x0e\xa9\x1b\x5b\x1b\x77\xe4\xa0\xc3\xf6\xc7\x06\x91\xd9\x0a\xc7\x31\xcd\xe1\x23\x0f\x9f\x9f\xbe\x49\x55\x1b\x5b\xe8\xdf\x7e\xb3\x8a\x12\x93\x74\x13\xcd\xfe\x9e\xa3\xb9\x43\xcf\x10\x97\x47\x47\x57\x79\x98\xc9\x5f\x9f\x40\xe5\x03\x10\x32\x8f\x74\x6a\x72\xbc\x29\x50\x56\xc2\x32\xb4\x7d\xf6\x8b\x1d\x3b\x75\x7a\xa0\x28\x9e\xee\xd1\x08\x74\x44\x3e\xff\xd4\xc9\x69\x52\xbf\xc7\xd1\x6d\x43\x4a\xbe\xef\xbf\x76\x96\x12\x4b\xd1\x28\xff\x7e\xae\x09\xac\x72\xf8\x38\xfe\x1c\x8d\xb2\xed\xa7\x13\x6f\x62\x3a\x75\x6a\xe7\x85\x36\xf0\xf1\xd3\xd7\xf1\xf9\x82\x8b\x27\x61\xe3\x80\x13\xc3\x9b\x4d\x56\xe1\x84\xfd\xb8\x77\xc3\x04\xcd\x30\xdf\x69\x9b\xe0\x60\x22\x10\xb3\x26\xbe\x3b\x67\x22\x9d\x23\xde\x88\x1a\x36\x9c\x69\xb7\x45\x61\x1a\xed\x63\x7a\x74\x4d\x67\x95\x15\xa2\x16\x5b\xfe\x9e\x22\x74\xd9\x0e\xfd\xdf\xbf\xff\x32\xbe\x41\xe8\x01\x3e\xff\x63\xc9\x86\xbf\x5b\x4d\x5a\xa4\x32\x35\x98\x15\x7b\x2c\x3e\x2f\xe7\x72\x0f\xc2\x11\xed\xa2\x96\x89\xba\x46\x2d\x97\x93\xa1\x5b\xce\xca\x43\x32\x44\xe4\xa9\xed\xeb\xb3\x22\x45\xe3\xf3\x18\xc8\xd9\x36\x75\x5e\xc1\xa8\xf6\x04\x45\x73\xa5\x21\xfd\xad\xa6\x59\x7b\xbe\x78\xf4\xa6\xce\xde\x40\xdd\x6c\x3f\x8d\xb7\x43\xc3\xbd\x86\x8e\xd7\x05\xa5\x28\x30\x64\xfe\x15\x0e\x37\x21\x61\x58\x75\x57\x70\xd8\x53\xb1\x07\x61\xc3\xb7\x8f\x1b\x6e\x21\xb8\x53\xf4\xf7\x10\xc7\xeb\x93\xfe\xca\x68\xba\xfb\x59\x74\xe1\xe6\x26\x31\x1a\xf1\x8c\xfa\x20\x27\xa4\x73\xe8\xef\xdf\x76\x6e\xc5\xa6\x28\xf8\x1d\xdc\xbf\xe5\xb1\x83\x3b\x23\xe3\xad\x84\x5f\x45\x28\x8d\x26\xee\x8e\xed\xf1\x72\xc2\x8d\x26\xef\xee\xd3\x4d\x68\x09\x42\x29\x20\xef\x00\x25\x85\x4b\x92\xf3\x83\x77\x57\x8c\x3b\x44\xcb\xd5\x64\x63\xdd\xa1\x1f\x38\xe8\x7b\x7b\x8a\xbd\x1f\xfc\xbb\xb5\xaf\xb2\x78\xaa\x90\x4d\x7f\xff\x90\x74\xdf\x63\x50\x6f\x4f\xc3\x68\x51\x48\xd2\xbb\x60\x5b\xa2\x17\xa4\xc2\x17\xa1\xd0\x3c\xeb\xe8\x24\xbe\xfd\x07\xc8\x1b\xa3\x14\x86\x3b\xa3\xaf\x8e\xdc\x51\x24\x96\xe7\x24\x88\xb3\xb5\xde\x58\x6b\x0e\x83\x63\x21\xf6\xa1\xc3\xfd\x72\xaf\xfd\x8f\x3f\xb0\x83\x5f\xc2\xcb\xe7\xd7\x9d\x87\xcf\x8b\xff\x05\x00\x00\xff\xff\x1a\xb8\x31\x9c\x1a\x15\x00\x00" func contractsEvergreenCdcBytes() ([]byte, error) { return bindataRead( @@ -120,11 +124,31 @@ func contractsEvergreenCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/Evergreen.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xec, 0xc4, 0xf9, 0x4f, 0x73, 0x46, 0xa0, 0x63, 0xca, 0x6c, 0x77, 0x92, 0x53, 0xfe, 0x9a, 0xb3, 0x9d, 0x19, 0xce, 0x12, 0xa0, 0x83, 0x3a, 0x4, 0xbb, 0x3f, 0xab, 0xd8, 0x54, 0xbd, 0xc5}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0xf9, 0x8e, 0x6b, 0x7, 0xc2, 0xe2, 0xe5, 0xaf, 0x19, 0xb4, 0xa9, 0xa1, 0x28, 0xee, 0x5e, 0xc8, 0xb5, 0xd1, 0x96, 0x91, 0xcb, 0x66, 0x7f, 0xe4, 0xa1, 0x52, 0x4a, 0x2c, 0x15, 0x26, 0x42}} return a, nil } -var _contractsSequelmarketplaceCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x5a\x5f\x8f\x1b\xb7\x11\x7f\xbf\x4f\x31\x77\x0f\xae\x54\xe8\x56\x0e\x10\xe4\x41\xb0\xec\xb8\x97\x18\x30\x60\xbb\x87\x3b\x27\x7d\x30\xee\x81\xda\x9d\x95\x08\x53\xe4\x86\xe4\x4a\x51\x8d\xfb\xee\x05\xff\xec\x2e\xc9\xa5\x4e\xaa\xeb\xb4\xa9\x1e\xa4\x5d\x92\x33\x1c\xce\x1f\xce\x8f\x43\xd1\x6d\x23\xa4\x86\x37\x2d\x5f\xd3\x15\xc3\x8f\xe2\x33\x72\xa8\xa5\xd8\xc2\x55\x31\x57\x9a\xf0\x8a\xc8\x6a\x1e\x75\x17\x65\x55\x5e\x5d\x78\xc2\x0f\x6f\x3e\xde\x6b\x21\xb1\x96\x82\xeb\x31\x61\xd4\x1d\x11\xbe\x47\x4d\x2a\xa2\xc9\xaf\x14\xf7\x6a\x4c\x18\x75\xc7\x33\x0a\x7e\x42\xda\x74\x44\x44\xfe\xf3\x0e\xe5\x5a\x62\x40\xd7\xb7\xb8\x71\x17\xf3\x39\xdc\xe3\x6f\x2d\xb2\xf7\x44\x7e\x46\xdd\x30\x52\x22\x34\x52\xec\x68\x85\x0a\x4a\xc1\x77\xc8\x29\xf2\x12\xa1\x6e\x79\xa9\xa9\xe0\x0a\xb4\x80\x52\x22\xd1\x08\x8c\x2a\x4d\xf9\x5a\x41\x2d\xa4\xe7\x63\x94\xa4\x80\xf2\x58\x59\xc5\xc5\x7c\x6e\xe7\x12\xad\x2c\x71\x01\x1b\xad\x1b\xb5\x98\xcf\xd7\x54\x6f\xda\x55\x51\x8a\xed\xbc\xa1\x8d\x24\x1a\xe7\xca\xb2\xb9\xae\x99\xd8\x5f\x97\x82\x6b\x49\x4a\xad\x0c\x79\xd3\xae\xa0\x6b\xc8\x08\xfd\xe5\x02\x00\x60\x3e\x87\x5b\x72\xd8\x22\xd7\xfe\xd5\xfe\x18\x52\xa5\x65\x5b\xea\xae\xd7\x0f\xf7\x24\x52\x30\x04\xaa\x40\x6f\xd0\xe8\x8c\x7b\xa5\xd9\x66\x51\xdb\xe6\x86\x48\x7d\x00\xbd\x21\x1a\x24\x96\x48\x77\x68\x86\x53\x05\x4d\x30\x5d\x37\x17\x43\x6d\x89\x17\x70\xaf\x25\xe5\xeb\x68\x2e\x47\x2d\xbb\xf9\xdc\x3b\xe5\x6b\x37\xc5\x5f\x14\x90\xaa\x92\xa8\xd4\x98\xa3\xa7\x5c\xc0\xeb\x64\xc4\x7c\x0e\x64\x2b\x5a\xae\x3b\xa6\xbf\xb5\x84\x6b\xaa\x0f\x9d\xf4\xb5\x77\x11\xd0\xd6\x8b\xec\x32\xf6\x94\x31\x58\x99\x95\xd1\xca\xd8\x74\x10\x06\x65\x31\x9a\xdc\xf1\x5f\xc0\x2f\x6f\xe8\xef\x3f\x7c\x1f\x2d\xc8\x78\x82\x9f\xb7\x41\x59\x22\xd7\x64\xdd\xeb\x4d\xec\x50\x12\xc6\x40\x11\x33\x7b\xa0\x30\x90\xd8\x48\x54\xc8\xb5\x1a\xcf\x66\x78\xf6\x73\xf5\xbd\x94\x53\x3d\x09\xf5\x3a\x1b\xeb\x64\x96\x48\x3a\x8b\x78\x4d\x03\xbb\x9b\x8f\x42\x56\x17\xd6\xcc\x4b\x6b\xb0\x4c\x67\x67\xae\x65\x3f\xd7\x78\x90\x57\xfe\xd2\xcf\x9d\xe1\x62\x74\xb4\xb4\xa2\xf4\x9d\x8f\x17\xee\x3b\xf1\xdb\xb7\xdc\x79\xaa\x09\xb5\xa7\x7d\x38\x1c\x19\xac\xab\xd3\xa1\xd7\xb3\x5a\xc0\x27\x4f\xf0\x30\x1a\x63\xac\x72\xd3\xda\x31\x71\xbc\xde\xbb\x8e\x87\x44\xf9\x19\x9e\xb3\xd3\x4c\xb2\x5a\xef\x58\xc1\xb2\x97\x74\x3c\xa8\x63\x0d\xcb\x7e\x96\xa3\xfa\xb3\xdb\xdf\x3b\xaa\x34\x56\x51\x13\x90\x1d\xa1\x8c\x18\xef\x37\xdb\x54\xd3\xca\x72\x43\x14\x16\xa9\x72\x71\x67\xbc\x32\xe0\x32\xe9\xa7\x52\xfd\x9a\xbc\x97\x0d\xee\xd6\x8f\xf1\x7b\xe1\xdb\x9f\x16\xf0\xcb\x5b\xae\x7f\xf8\x7e\xe8\xe2\xb5\xfe\x78\x68\x06\xaf\x0d\x3b\x72\xe3\xbd\x3e\x7e\x25\x2d\x3b\x42\xd8\x48\x5a\xf6\x4e\x3d\x22\x8c\xcc\xd3\x77\x12\xa5\x50\x8f\x59\x6d\x7d\xf2\x79\x47\xf9\xe7\xae\xf7\x95\xeb\x9e\xc6\xba\xbd\x17\x2c\xd1\xec\x9e\x28\x50\x82\x55\x4f\xe9\xd2\x50\xfd\xff\x69\x72\xd5\x1e\x50\x1e\x17\xf1\x7c\xa5\xfd\x83\xea\x4d\x25\xc9\x9e\xc7\x9a\xf3\x6b\xb4\x1a\xdc\x77\x43\x9e\x52\x63\xcf\xe7\x7f\xa6\xcb\xdd\x99\x4a\x4c\xb4\x60\x24\xb0\x2b\xe8\x57\x55\xb7\x7c\x68\xcd\x2d\x67\x01\xcf\x92\x8d\xa4\x7f\x8c\xa4\xbc\x75\x38\x45\xde\x90\x86\xac\x28\xa3\xfa\xb0\x80\xe1\xf9\xc5\xb3\x2f\x23\x70\xd4\x51\xcc\x46\xc8\xaa\xb8\x11\x8c\xa1\xdd\x4c\x6f\xdb\x15\xa3\xe5\x6c\x40\x4f\xa3\xbe\xc7\x97\x19\x35\x9a\xef\x93\x4a\x54\xc8\x18\x4a\xeb\x8f\xb7\x44\x6f\x16\xe0\x18\x9a\xe7\xa7\xbc\x36\xe6\x7d\xc4\x67\xf1\x77\x2d\xc9\x9d\x60\x68\xe2\x7f\x10\xde\xb4\x3c\x9c\xe7\xba\x9d\xbc\xc1\x7e\x6d\xb2\x84\x03\x0d\xcb\xbc\xca\x8b\x95\x90\x52\xec\x27\xd3\x4b\xff\xd4\xcf\xec\xec\x4b\xab\x85\x53\xc6\xf4\x32\x62\xea\x34\x61\x36\xf6\xc1\xce\x62\xcf\x51\x5e\x16\x1d\x00\x8a\xc6\xd3\x30\xdb\x2d\x5d\x7a\x58\xb5\x94\x55\x7e\xa7\x53\x93\x28\x7d\x34\x52\xd4\xd4\x20\x05\x2b\x7c\xb1\x46\xdd\xcb\x75\xeb\xba\x26\xd3\x59\x9a\x70\x98\x01\x12\xee\x37\xd7\x77\x67\xa1\xc7\xd5\xdf\x8d\x94\x57\xb9\x01\x81\x5d\x93\x86\x59\x22\x9c\x35\xa0\xfd\x89\x7b\x2a\xac\x0d\xc9\x9d\x87\x1a\x8e\x57\x7c\x3e\x58\xa3\xbe\x13\x07\xc2\xf4\xa1\x1f\xd5\xfb\x50\xba\x26\x93\xb4\x29\x61\x26\x11\x2f\xa0\x26\x4c\x25\xd3\x85\x2e\x33\x3c\x4f\x63\xcd\xf7\x7b\x48\x6c\x2c\x77\x06\x78\xe7\x3a\x63\xe5\x1f\x89\xcd\x6c\xf3\x2c\xa5\x74\x1e\xef\x1f\x46\xbd\x26\xa8\xec\x4f\xa2\x7f\xc2\xf0\x76\x14\x36\x69\x20\x8d\x69\x1c\x6e\x09\x7d\xab\x18\x01\x8d\x40\x1d\xb8\xa5\x47\x20\x02\xe4\x37\xe4\x9c\x33\x05\x7b\x72\xff\xf8\xb4\x16\x0a\x5a\x21\xd7\xb4\xa6\x29\xab\xe3\x0a\x19\xef\x21\x69\xcb\x51\xa6\xc7\xbd\x73\xc0\x17\x91\xc6\xba\xe6\x78\xb0\xc7\x1b\x7d\xfc\xbd\x36\xef\x6f\x7f\x4a\x5d\x34\xde\x8f\xc2\xb7\x59\xce\x02\x12\x75\x2b\xf9\xa0\xb8\x10\x04\x76\xc9\x65\xd5\x1e\x8e\xe6\x96\xe3\xa9\xf2\xac\xfc\xf3\xe5\x58\x87\x4f\x0c\x67\x65\x5e\xdf\x35\x9a\xc6\xc7\xd2\x97\x6c\xeb\x68\x82\xd0\x9e\x0b\xf8\x31\xce\x66\xb6\xf5\x9b\xc0\x99\x05\xfc\x38\xca\x95\x1f\xde\x7c\x4c\x52\x44\x85\x9a\x50\x66\x36\x66\xbf\x38\x63\xf1\x9f\x5c\xe3\x24\x1b\x40\x31\x2e\x3c\x62\xa4\x51\xd3\x57\x47\x92\x17\xb0\x38\x33\xa2\x82\xe1\xa7\x23\xab\x1b\x9c\xdb\x84\x4e\x45\x59\x44\x3b\x8e\xb8\xd8\x70\xe1\xdb\xb9\x51\x94\x0b\x22\x9b\x4f\x35\x6e\xe1\xc5\x75\x6f\xaf\xee\x5c\xd4\x9d\xf1\x16\xf0\xe2\x3a\x5c\xea\x34\x13\x28\x45\xc9\x90\xf0\xb6\x99\x78\x26\x77\xa8\x6c\x81\x27\x32\xc8\x34\x8d\xdd\x17\xd7\x76\xf2\x5c\xe4\x36\xe4\xf0\x46\xc8\xf7\x94\x6b\xac\xac\x97\x04\x59\xbd\xe5\x54\xdf\xe6\x91\x0f\x6f\xb7\x3f\x57\xd4\x6e\x46\xc7\x20\xd7\x5d\x58\x36\xf8\x7a\x38\x76\x2a\xd0\x30\x01\x19\x8b\x00\x45\xfa\x26\x1f\x57\x49\x00\xf5\x70\x28\xe5\xe0\xf2\x3d\x43\x0b\xa4\x86\xb5\x4c\xbf\x31\x4c\x4a\xa7\xfd\x3a\x6c\x34\x3c\x7f\x03\x78\xd4\x1b\x1c\xfe\xea\x2d\x3e\x09\x0c\x3d\xfd\xef\x01\x27\x2d\xdb\x27\x70\xd3\xa7\x87\x20\xb2\xe6\x73\xb8\x23\x7a\x83\x12\xf4\x86\x70\x20\x2b\x21\xed\x39\x4f\x6f\x10\xb4\x24\x5c\x11\x6b\x1a\xa0\x35\x10\x7e\x88\x8a\x81\x64\xa5\xcc\x69\x6f\xbf\x31\x07\x6b\x33\xfa\x00\x5a\x18\xe7\x03\x1a\x38\xd8\x7c\x6e\x3a\x15\xf2\xca\x97\x25\x5d\x31\xcd\xd7\xef\x18\x51\x1a\x76\x84\xd1\x6a\x28\xe5\x41\x64\xfe\xbe\x8e\x0b\x84\xed\xc9\x21\xaa\x21\x36\xad\x76\x65\x3c\xef\x8c\x44\x0d\x4c\xc7\x95\xc1\x1d\x91\x20\x51\xd1\xaa\x25\xec\xae\x2f\xc3\x3d\xfb\x12\xc7\x47\xd7\xf3\xf8\xca\x1c\x20\x28\x1b\x54\x55\x0b\x09\x65\x6b\x3c\x36\x8f\xbf\x92\xa2\x11\xad\xa3\x22\x28\x2c\x0d\x71\x5f\x9e\xeb\x4f\x21\x09\x55\x17\x16\x5e\x4f\x37\xad\x36\xdb\x4f\x18\xd1\x45\x77\xfc\x9e\x74\x85\x43\xc3\xd7\x3d\x4f\x47\xbc\xfa\xf9\x2a\x6c\x84\xa2\x7a\x52\x4b\xb1\x5d\x04\x3c\x6f\xda\x2c\x55\xac\xa6\x63\xc5\xc4\xc7\x8b\xe1\x29\x34\xcc\x6b\xed\x4b\xa7\x82\x72\x3d\xb3\xce\xc3\x58\xcf\x42\xc1\x1e\x25\x82\xf1\xac\x1d\x02\xe1\xd5\x50\xf1\x9a\x19\x03\xf2\xc8\x53\xec\xa2\x5d\xf1\x77\x43\x76\x18\x4e\xf3\x4f\x94\xc2\xe1\x35\x05\x0c\x6b\x3d\xd8\x9a\xd6\xb1\xce\x56\x84\x11\x5e\x22\xbc\x84\xe7\xc5\xf3\x44\xe5\x06\xf7\x49\x3d\x19\xad\xf9\xd2\xda\x7f\x06\x5b\x54\x8a\xac\xcd\x41\xea\x83\xe8\x7d\xd5\x8d\x0d\x6a\xc3\x7e\x69\x57\xb1\x32\x53\xa6\x97\x23\x3b\xe4\x53\xd6\x23\x20\x53\x98\x08\x5a\xa1\xd2\x52\x1c\xa2\x95\x5d\xc4\xa6\x18\xaa\x8b\x9d\x97\x0c\xa5\x8c\xf9\x1c\x6e\x8c\x12\x5c\x6d\x3b\x2d\xdd\x98\x6c\x16\xd1\xfc\x01\x60\xf4\x24\xd8\x4c\x93\x4c\x57\x75\x8a\xce\x71\x2e\x72\xba\x73\xdc\x79\x99\xdc\x7c\x5e\xbd\x82\x86\x70\x5a\x4e\xae\x3a\xb6\x5c\x68\xa8\x45\xcb\x2b\x13\xd3\x83\x98\x57\x09\xf2\xf8\xf7\xb1\x62\xa6\xf8\x75\x44\x91\x7f\x46\xc0\xb8\xfb\x83\x90\x62\x0e\xd9\x05\x76\x95\xb8\x15\x3b\x3c\xdf\xae\x83\xaf\xc7\x09\xa3\x14\x7e\x77\x56\x40\x2c\x0d\x88\x7e\x37\x50\xb0\x22\x0a\x2b\x10\x6e\x8f\x59\xd3\x1d\x72\x7b\x83\xe6\x2e\xd0\x3c\xba\xe8\xea\x9a\xf0\xda\xa6\x3c\x1f\xeb\xfe\xd2\x64\x2d\x50\x75\xe9\xcb\xd1\xbb\xec\x33\x5c\x84\x15\xc9\xe1\x2e\x0b\x66\x9a\x13\x78\x0b\x02\x14\x33\x8e\xb6\xff\x18\x22\xe6\x71\x69\x16\x94\xe4\xe8\x23\xb8\xf1\x37\x21\xd8\x79\x55\xbd\xee\x84\x96\xbf\x10\x8a\x82\x2e\x73\x35\x00\x4b\xf8\xf4\x10\x83\xd0\x53\x37\x39\x8e\x24\x0f\x01\xdc\x15\xd7\x77\xc5\xf3\x78\x62\x52\x75\xd6\x82\xa5\x35\xa0\xbd\xc1\x33\xfe\xd7\xdd\xe1\x91\x74\x17\xec\xb7\xff\x54\x61\xaf\xe2\xdb\xbc\x19\x6c\x5b\xa5\xef\xdb\xb2\x44\xac\x9c\xde\xd2\xfc\xdf\x25\x23\x23\xdc\xcb\xa5\xcd\x56\xcf\x9e\xb9\x2b\xcb\x17\x56\xd8\x30\x1f\xd9\x25\x18\x96\xb0\x42\xb3\x85\x49\xc2\xd7\x08\x9f\x9e\x17\xc5\x77\x0f\xe1\x26\x06\x2e\x23\x5a\x2e\x97\xcb\x4c\x0a\xec\xd7\xde\xdd\x0b\x36\x1e\xc6\xda\x0b\xc0\xd1\x50\xa3\xc6\x86\xe8\x0d\x2c\x73\x1e\x33\x1a\x6e\xa6\x0e\xfa\x7d\x62\xcd\x88\x60\x3d\xd3\xf1\x0d\x09\x2e\x47\x03\x1f\xc7\x32\x85\x58\xeb\x86\x34\xb0\x84\x35\xea\xd7\x65\x69\x16\x34\xf1\x16\x9b\x9a\x8d\x3b\x2a\xb8\x1f\xc1\x7e\x2f\x27\x46\x8c\x31\x2e\x0a\x56\x72\x43\x9a\xa2\xdc\x60\xf9\x39\x0b\xe1\x20\x28\x3e\x15\xa4\x69\x90\x57\x13\xef\x55\xfe\x42\xd8\x39\x55\x78\x21\x4c\xd2\x0b\x61\xf7\xdb\xb9\x90\xf9\x9e\x8e\x45\x82\xa0\x30\xd8\xcd\x94\x8d\x85\xc9\x30\x53\xb0\x86\x74\xb6\x23\x33\x24\x41\x13\xbd\x5e\xc7\xd7\xc4\xe1\x27\x85\x56\x89\x57\x87\xcd\x19\xef\xee\x36\x5e\xf9\xb4\x9b\x8f\x9c\xc3\x61\x27\x5a\x87\xd1\x76\xd4\x46\x16\x10\x6c\xa9\x52\x06\x10\x24\x7f\x3b\xe8\xb1\x7b\xd9\xfb\x8c\x3d\x05\x6c\x09\xaf\x88\x16\xf2\x10\xe2\x3f\xda\x50\xb4\xd8\x61\x24\xcf\x69\xc8\x6c\x98\xba\xff\x74\x0c\x39\xc8\xbc\xa7\x67\x8a\x61\x6f\xb2\x5e\x54\xd0\x6a\x66\xe9\x0a\x92\xdf\x89\x6c\x5f\xd8\xe4\x87\x97\x62\x6b\x97\x2c\xb8\xd1\xfd\x24\xda\xcd\x83\x97\xe9\xcc\xd5\xe0\xa7\xa7\x64\x1e\xf6\xfc\x3f\xb1\xc0\x36\x78\x43\x47\xcc\x9d\x05\x06\x79\x83\xd2\x40\x57\x46\x48\x84\x4d\x6b\x02\x11\xfb\x99\x3d\x85\x67\x05\xf1\x65\xa5\x4c\x12\x0c\xfe\xaf\xd0\xd7\xa8\x83\x24\xd7\x3d\x75\xf8\xe7\xf1\xe2\x5f\x01\x00\x00\xff\xff\x57\x96\xe5\x1d\x22\x26\x00\x00" +var _contractsSourcesMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xd4\xcd\x8e\xda\x30\x10\xc0\xf1\x3b\x4f\x81\xd4\x4b\x39\x04\xf3\x51\xa2\xd0\x63\x8b\xb8\xb5\x07\x02\xbd\x54\x55\x35\xb6\x27\xc4\x5a\xe3\x41\xf6\x84\x88\xb7\x5f\x45\x08\x36\x59\x02\x59\xb4\x5c\x10\x87\xe4\xff\xf3\x8c\xac\x7c\xe9\xa7\x54\x78\x85\xa1\xd7\x8b\xfa\x7f\x03\x83\xd3\xe0\xb5\xf8\x51\x78\x87\x7e\xa8\xb4\xfa\xf7\x35\x67\xde\x87\xef\x42\x6c\x0d\xe7\x85\x1c\x2a\xda\x09\x72\x99\xa5\x52\x54\x3f\x51\xc6\x42\x5a\x92\x62\x07\x81\xd1\x0b\x45\x8e\x3d\x28\x0e\xa2\x60\x63\x0d\x1f\x6b\xad\x41\xc3\x58\x5a\x2a\xd7\xf4\x82\xae\x93\x50\xe4\x31\x7a\x0b\xb7\x73\x97\x5c\x8b\x54\xb8\xad\x91\x16\x3f\xa6\xdd\x1c\xa8\x91\xe9\x50\x7e\x21\x83\x06\x86\x3f\x06\xcb\xf0\x24\xb2\xd1\xec\xf0\xd3\xd2\xb0\xca\x25\x81\xd7\x4f\xd2\x6b\xc5\x16\x7b\x93\x2e\xee\x3a\x45\xd0\x67\xc4\xb8\x3a\xb1\x49\x17\xd7\xb9\xc7\xb6\xe7\x6e\x0e\xd0\xb1\xb1\xdf\xcb\x75\xca\xe4\x31\xf3\xe4\xf8\x1e\xe3\x32\x8e\xc2\xe5\xc9\x13\x36\x4b\xe2\x89\x92\x2a\xc6\x78\x8a\xdf\x46\x38\x4e\xe6\x72\xa6\x13\x35\x05\x39\x8d\xc7\x73\x48\x40\x4f\xe2\x19\x8c\x74\xed\x38\x0d\xaf\xe5\x38\xe4\x1e\xbb\xa9\xb7\x07\x7f\x9f\xba\xc6\xaa\x95\xac\x30\x90\x3d\xa0\xff\x04\x54\xcf\x5c\x10\xce\x8d\xd7\x7b\xf0\x7c\xac\x36\xf7\x5f\x01\x83\xa5\x6d\x35\xfe\xcf\xd3\xdf\xae\x0f\x4b\xb5\xef\xf3\x5b\xb5\x5b\x03\x1a\x9d\xc2\xe6\x42\x6b\xc5\x0e\x7b\x85\xec\x0d\x1e\xc0\x3e\x51\x6f\x34\x07\xbd\xd7\x00\x00\x00\xff\xff\x41\x3d\xb2\x07\x4e\x05\x00\x00" + +func contractsSourcesMdBytes() ([]byte, error) { + return bindataRead( + _contractsSourcesMd, + "contracts/SOURCES.md", + ) +} + +func contractsSourcesMd() (*asset, error) { + bytes, err := contractsSourcesMdBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "contracts/SOURCES.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0xf, 0x5, 0x9a, 0x9, 0xa1, 0x82, 0x1a, 0x29, 0x3b, 0x9d, 0x26, 0x68, 0xe7, 0x49, 0x13, 0xca, 0x43, 0x18, 0xec, 0x17, 0x1a, 0xe1, 0x6, 0x9d, 0x86, 0xca, 0x91, 0xbb, 0x8f, 0xc5, 0x2f}} + return a, nil +} + +var _contractsSequelmarketplaceCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x5a\x5f\x6f\xdb\x38\x12\x7f\xcf\xa7\x98\xe4\x21\x67\x2f\x1c\xb9\x0b\x2c\xf6\xc1\x88\xdb\xeb\x65\xb7\x40\x81\xb6\x17\x24\xdd\xbd\x87\x22\x0f\xb4\x34\xb2\x89\xd2\xa4\x96\xa4\x9c\xf5\x15\xf9\xee\x07\xfe\x91\x44\x52\x74\xec\xed\xf5\xee\xf6\xf2\x90\x48\x22\x39\x33\x9c\xbf\x3f\x0e\x43\xb7\x8d\x90\x1a\xde\xb4\x7c\x4d\x57\x0c\x3f\x8a\xcf\xc8\xa1\x96\x62\x0b\x17\xc5\x5c\x69\xc2\x2b\x22\xab\x79\x34\x5c\x94\x55\x79\x71\xe6\x17\x7e\x78\xf3\xf1\x5e\x0b\x89\xb5\x14\x5c\x8f\x17\x46\xc3\xd1\xc2\xf7\xa8\x49\x45\x34\xf9\x95\xe2\xa3\x1a\x2f\x8c\x86\x63\x8e\x82\x1f\x91\x36\x9d\x11\x2d\xff\x79\x87\x72\x2d\x31\x58\xd7\x7f\x71\xf3\xce\xe6\x73\xb8\xc7\xdf\x5a\x64\xef\x89\xfc\x8c\xba\x61\xa4\x44\x68\xa4\xd8\xd1\x0a\x15\x94\x82\xef\x90\x53\xe4\x25\x42\xdd\xf2\x52\x53\xc1\x15\x68\x01\xa5\x44\xa2\x11\x18\x55\x9a\xf2\xb5\x82\x5a\x48\x4f\xc7\x28\x49\x01\xe5\xb1\xb2\x8a\xb3\xf9\xdc\xf2\x12\xad\x2c\x71\x01\x1b\xad\x1b\xb5\x98\xcf\xd7\x54\x6f\xda\x55\x51\x8a\xed\xbc\xa1\x8d\x24\x1a\xe7\xca\x92\xb9\xaa\x99\x78\xbc\x2a\x05\xd7\x92\x94\x5a\x99\xe5\xa4\x2c\x51\xa9\x09\x61\x6c\x7a\xd6\x0d\x64\x84\xff\x72\x06\x00\x30\x9f\xc3\x2d\xd9\x6f\x91\x6b\xff\x6a\xff\x84\x24\xcc\xbb\xd2\xb2\x2d\x75\x37\xd3\x2f\xf5\xcb\xa5\x60\x08\x54\x81\xde\x60\xa0\x47\xfb\x55\xd4\xf6\x6b\x43\xa4\xde\x83\xde\x10\x0d\x12\x4b\xa4\x3b\x34\xb3\xa9\x82\x26\xe0\x9c\x63\x6b\x7e\x18\x6a\x4b\x6c\x01\xf7\x5a\x52\xbe\x3e\x8b\x78\x3b\x72\xb2\xe3\xef\xde\x29\x5f\x3b\x9e\x7f\x51\x40\xaa\x4a\xa2\x52\xc7\x59\x78\x4a\x0b\x78\xed\x57\x84\x7c\xc8\x56\xb4\x5c\x77\x5c\x7e\x6b\x09\xd7\x54\xef\xbb\xfd\xd5\xde\xaf\x40\x5b\xd7\xb3\x1b\x7d\xa4\x8c\xc1\xca\xec\x9d\x56\xc6\x11\x06\xe9\x50\x16\x47\xa5\x71\xfc\x16\xf0\xcb\x1b\xfa\xfb\x8f\x3f\xc4\x5b\x36\xfe\xe4\x05\x69\x50\x96\xc8\x35\x59\xf7\xaa\x16\x3b\x94\x84\x31\x50\xc4\x88\x13\xe8\x18\x24\x36\x12\x15\x72\xad\x8e\xb3\x37\x3c\xc6\xcc\x29\xa7\x7a\x12\x9a\x62\x36\xd6\xda\x2c\x11\x7d\x16\xd1\x9a\x06\x9e\x63\xdd\x0a\x59\x5d\x58\x4f\x59\x5a\x1b\x67\x06\x3b\x03\x2f\x7b\x5e\xe3\x49\xde\x3a\x4b\xcf\x3b\x43\xc5\xe8\x6c\x69\x45\xe9\x07\x9f\xce\xdc\xef\x24\x0a\xde\x72\xe7\xeb\x26\x80\x4f\x8f\x88\x70\x55\xb0\xc7\x43\xfa\xf5\x36\x51\x0b\xf8\xe4\x09\x3c\x9c\x1d\x5d\x64\x4c\x7a\xd3\xda\x45\x71\xca\xb8\x77\x03\x0f\x89\xa5\x32\x4c\x66\xc7\x89\x64\x4d\xd4\x91\x82\x65\x2f\xfa\x78\x52\x47\x1a\x96\x3d\x97\x83\xca\xb6\x19\xf8\x1d\x55\x1a\xab\xe8\x13\x90\x1d\xa1\x8c\x98\x58\x32\x99\xb2\x69\x65\xb9\x21\x0a\x8b\xe7\x2c\x81\x3b\xe3\xde\x01\xc5\x49\xcf\x56\xf5\xfb\xf3\xee\x39\xf8\xe9\xa0\x5a\x97\x9a\xdf\xfe\xb4\x80\x5f\xde\x72\xfd\xe3\x0f\xc3\x10\xaf\xf5\xc7\x7d\x33\xb8\x7b\x38\x90\x9b\xef\x75\xf3\x2b\x69\xd9\x81\x85\x8d\xa4\x65\x1f\x0d\xa3\x85\x91\xa9\x06\x7f\x50\x0a\xf5\x98\xd4\xd6\xd7\xc2\x77\x94\x7f\xee\x46\x5f\xb9\xe1\x69\xac\xe7\x7b\xc1\x12\x2d\x3f\x12\x05\x4a\xb0\xea\x54\xbd\x1a\x0a\xff\x7f\x5a\x5d\xb5\x7b\x94\x87\x45\x3c\x5d\x81\xff\xa0\x7a\x53\x49\xf2\xc8\x63\x2d\xfa\x3d\x5a\x6d\x3e\x76\x53\x4e\x55\x69\x4f\xf3\x7f\xa6\xd7\xdd\x89\x0a\x4d\x34\x62\x24\xb0\x3b\xc8\xee\xb0\x6e\xf9\x30\x23\xb7\xb5\x05\x90\x56\x6f\x26\x71\xf2\xb9\xb1\x28\xe9\x9d\xdb\xdb\x14\x2e\x93\xd4\xd4\x3f\x46\x7b\xba\x75\xe0\x4b\xde\x90\x86\xac\x28\xa3\x7a\xbf\x80\xe1\xf9\xda\xb1\x49\x41\x5f\xa7\xf6\x29\x5c\x7e\x19\x0d\xde\x08\xc6\xd0\x26\xf1\xd9\x80\x64\x82\xaf\xb7\xed\x8a\xd1\xf2\xe9\x65\x46\xe7\xe6\xf7\x51\x8d\x2b\x64\x0c\xa5\x75\xe4\x5b\xa2\x37\x0b\x70\x04\xcd\xf3\x73\xee\x1e\xd3\x3e\xe0\xec\xf8\xbb\x96\xe4\x4e\x30\x34\x49\x64\x10\xde\x7c\x79\x38\xcd\xe7\x3b\x79\x83\x02\x60\xca\x8e\xc3\x34\xcb\xbc\xc6\x8b\x95\x90\x52\x3c\x4e\xa6\xe7\xfe\xa9\xe7\xec\x1c\x80\x56\x0b\xa7\x8c\xe9\x79\x5c\xcb\xac\x26\x4c\xa5\x18\xcc\x2c\x1e\x39\xca\xf3\x82\xa4\xf0\xcb\xcc\xa7\x61\x7d\x5d\xba\x7a\xb3\x6a\x29\xab\x7c\xba\x54\x93\xa8\x1e\x35\x52\xd4\xd4\xe0\x14\x2b\x7c\xb1\x46\xdd\xcb\x75\xeb\x86\x26\xd3\x59\x5a\xc1\x98\x81\x31\xee\x6f\x6e\xec\xce\x02\x9f\x8b\xbf\x1b\x29\x2f\x72\x13\x02\xbb\x26\x1f\x66\x89\x70\xd6\x80\xf6\x4f\x3c\x52\x61\x6d\x96\xdc\x79\xa0\xe3\x68\xc5\x67\x9e\x35\xea\x3b\xb1\x27\x4c\xef\xfb\x59\xbd\x0f\xa5\x7b\x32\x28\x80\x12\x66\x2a\xfb\x02\x6a\xc2\x54\xc2\x2e\x74\x99\xe1\x79\x1a\x6b\xbe\x4f\x38\xb1\xb1\xca\x30\x62\x63\xe5\x1f\x08\xcd\xec\xe7\x59\xba\xd2\x79\xbc\x7f\x18\x8d\x9a\xa0\xb2\x7f\x12\xfd\x13\x86\xb7\xa3\xb0\x49\x03\x69\xbc\xc6\x01\xa1\xd0\xb7\x8a\x11\x72\x09\xd4\x81\x5b\x7a\x00\x67\x40\x3e\x7b\xe7\x9c\x29\x48\xe0\xfd\xe3\xf3\x5a\x28\x68\x85\x5c\xd3\x9a\xa6\xa4\x0e\x2b\x64\x9c\x43\xd2\x2f\x07\x89\x1e\xf6\xce\x01\xa4\x44\x1a\xeb\x3e\xc7\x93\x3d\x68\xe9\xe3\xef\xb5\x79\x7f\xfb\x53\xea\xa2\x71\x3e\x0a\xdf\x66\x39\x0b\x48\xd4\xad\xe4\x83\xe2\x42\x54\x99\xab\x44\xab\x76\x7f\xb0\x10\x1d\xae\xb1\x61\xb1\x3a\xa1\x14\x3d\x53\x92\xfd\xd0\x88\x8c\x8f\x9b\x7c\xd2\x5f\xc0\x5f\xbf\xc4\x75\xc9\x7e\x7e\xfa\x26\xc0\xc6\x10\x1f\xd5\xbd\x0f\x6f\x3e\x3e\x25\x59\xbf\x42\x4d\x28\x33\xb9\xd6\xef\xc1\x18\xf1\x27\xf7\x71\x92\x8d\x89\x18\x23\x1e\xd0\xf5\xe8\xd3\x57\x07\x87\x17\xb0\x38\x31\x48\x82\xe9\xc7\x83\xa5\x9b\x9c\xcb\x2b\xc7\x02\x27\x5a\x3b\x0e\xa2\xd8\x74\xe1\xdb\xa9\x81\x91\x8b\x0b\x5b\x22\x35\x6e\xe1\xfa\xaa\xb7\x57\x77\x76\xea\xce\x81\x0b\xb8\xbe\x0a\xb7\x3a\xcd\xf8\x7b\x51\x32\x24\xbc\x6d\x26\x9e\xc8\x1d\x2a\xdb\x87\x8a\x0c\x32\x4d\xc3\xf1\xfa\xca\x32\x3f\x16\x8c\x0d\xd9\xbf\x11\xf2\x3d\xe5\x1a\x2b\xeb\x31\x41\xd1\x6e\x39\xd5\xb7\x79\x60\xc3\xdb\xed\xcf\x15\xb5\xb9\xe6\x10\xa2\xba\x0b\x7b\x12\x5f\x8f\xb6\x8e\x07\x1e\x26\x28\x62\x01\x97\x03\xd4\xf2\xdf\x7c\xa0\x25\xf1\xd4\x03\x9e\x94\x84\xab\xe8\x0c\x2d\x54\x1a\xb6\x33\xfd\xc6\x40\x28\x65\xfb\x75\xe8\x67\x78\xfe\x06\x00\xa8\xb7\x39\x7c\xe7\x8d\x3e\x09\x6c\x3d\xfd\xef\x41\x23\x2d\xdb\x67\x90\xd1\xa7\x87\x69\xd4\x7f\xbb\x23\x7a\x83\x12\xf4\x86\x70\x20\x2b\x21\xed\x11\x50\x6f\x10\xb4\x24\x5c\x11\x6b\x1a\xa0\x35\x10\xbe\x8f\xda\x93\x64\xa5\xcc\xe1\xef\x71\x63\xce\xdf\x66\xf6\x1e\xb4\x30\xfe\x07\x34\x28\x26\xf3\xb9\x19\x54\xc8\x2b\xdf\x39\x75\xcd\x3b\xdf\x40\x64\x44\x69\xd8\x11\x46\xab\xa1\x97\x08\x91\xf9\xfb\xee\x33\x10\xf6\x48\xf6\x2a\x24\xdc\xb4\xda\xb5\x0d\xbd\x33\x12\x35\x10\x1d\xb7\x26\x77\x44\x82\x44\x45\xab\x96\xb0\xbb\xbe\xcd\x77\x99\x44\x48\x37\xf2\xf4\xca\x1c\x11\x28\x1b\x54\x55\x0b\x09\x65\x6b\x3c\x36\x8f\xb0\x92\x3e\x13\xad\xa3\x36\x2c\x2c\xcd\xe2\xbe\xfd\xd7\x9f\x33\x92\x55\x10\x37\xd4\x6e\x5a\x6d\xb2\x51\x18\xd4\x45\x77\x32\x9f\x74\x8d\x49\x43\xd7\x3d\x4f\x47\xb4\x7a\x7e\x15\x36\x42\x51\x3d\xa9\xa5\xd8\x2e\x02\x9a\x37\x6d\x76\x55\xac\xa6\x43\xcd\xca\xa7\xb3\xe1\x29\x34\xcc\x6b\xed\x5b\xb5\x82\x72\x3d\xb3\xce\xc3\x58\x4f\x42\xc1\x23\x4a\x04\xe3\x59\x3b\x04\xc2\xab\xa1\x49\x36\x33\x06\xe4\x91\xa7\xd8\x4d\xbb\xee\xf3\x86\xec\x30\x64\xf3\x4f\x94\xc2\x21\x32\x05\x0c\x6b\x3d\xd8\x9a\xd6\xb1\xce\x56\x84\x11\x5e\x22\xbc\x84\x17\xc5\x8b\x44\xe5\x06\xd9\x49\x3d\x19\xed\xf9\xdc\xda\x7f\x06\x5b\x54\x8a\xac\xcd\x51\xe9\x83\xe8\x7d\xd5\xcd\x0d\x7a\xd1\x7e\x6b\x17\xb1\x32\x53\xa2\xe7\x23\x3b\xe4\x2b\xd8\x13\x20\x53\x98\x08\x5a\xa1\xd2\x52\xec\xa3\x9d\x9d\xc5\xa6\x18\x1a\x92\x9d\x97\x0c\x9d\x8d\xf9\x1c\x6e\x8c\x12\x5c\x2f\xfd\xb9\xae\x8e\x29\x6e\xd1\xfa\xaf\x87\x9b\x99\xde\xc8\x1d\x6e\xc5\xee\x0f\xf5\x46\x0e\x00\xd2\xb4\x24\x75\xed\xab\xe8\x5c\xe7\xe2\xac\x3b\xd7\x9d\x06\x03\xcc\xcf\xab\x57\xd0\x10\x4e\xcb\xc9\x45\x47\x96\x0b\x0d\xb5\x68\x79\x65\x32\xc0\x20\xe6\x45\x02\x5b\xfe\x38\xd0\xcc\x74\xce\x0e\xa8\xfa\xcf\x88\x36\x77\xff\x21\x98\x99\x83\x85\x81\x5d\x65\xe8\x45\x27\xd8\x75\x88\x8c\xb8\xbc\x94\xc2\xe7\x72\x05\xc4\xae\x01\xd1\xe7\x0e\x05\x2b\xa2\xb0\x02\xe1\x32\xd2\x9a\xee\x90\xc3\xcf\x3b\xe4\xee\x46\xd0\x63\x91\xae\x41\x0a\xaf\x6d\x81\xf4\x99\xc1\x5f\xe1\xac\x05\xaa\xae\xd8\xb9\xf5\xae\x56\x0d\x17\x79\xc5\x33\x87\xbd\x2c\x0c\x6a\x8e\x41\x35\x08\x00\xd0\x38\x38\xff\x6d\x80\x99\x47\xb5\x59\x3c\x93\x5b\x1f\x21\x95\xbf\x09\xc1\x4e\x6b\xf9\x75\xa7\xbd\xfc\xfd\x54\x14\x81\x99\xcb\x07\x58\xc2\xa7\x87\x18\xbf\x1e\xbb\x37\x72\x4b\xf2\xe8\xc1\xdd\xbe\x7d\x5f\xbc\x88\x19\x93\xaa\x33\x17\x2c\xad\x05\xed\xe5\xa2\x71\xc6\xee\x7a\x91\xa4\x49\xb3\xaf\x1c\xa9\xc2\x5e\xc5\x17\x8d\x33\xd8\xb6\x4a\xdf\xb7\x65\x89\x58\x39\xbd\xa5\xd0\xa1\xab\x63\x46\xb8\x97\x4b\x5b\xe8\x2e\x2f\xdd\xed\xea\xb5\x15\x36\x2c\x65\x76\x0b\x86\x24\xac\xd0\xe4\x33\x49\xf8\x1a\xe1\xd3\x8b\xa2\xf8\xfe\x21\xcc\x68\xe0\x8a\xa9\xa5\x72\xbe\xcc\x54\x4f\x88\x2e\x78\x61\xe9\xfc\x03\xbe\x73\x77\x93\xa3\xa9\x46\x8d\x0d\xd1\x1b\x58\xe6\x3c\x66\x34\xdd\xb0\x0e\xc6\x7d\x4d\xce\x88\x60\x3d\xd3\xd1\x0d\x17\x9c\x8f\x26\x3e\x8d\x65\x0a\x61\xda\x0d\x69\x60\x09\x6b\xd4\xaf\xcb\xd2\x6c\x68\xe2\x2d\x36\x2d\xca\xae\xc7\x47\xd1\x42\xf3\xeb\x83\xc8\xf1\xe5\xc4\x48\x32\x46\x55\xc1\x66\x6e\x48\x53\x94\x1b\x2c\x3f\x67\x01\x20\x04\xcd\xa9\x82\x34\x0d\xf2\x6a\xe2\x1d\xcb\x5f\x57\x3b\xbf\x0a\xaf\xab\x49\x7a\x5d\xed\xfe\x76\x5e\x64\x7e\x4f\xc7\x22\x41\xd0\x38\xec\x38\x65\xc3\x61\x32\x70\x0a\xf6\x90\x72\x3b\xc0\x21\x89\x9b\xe8\xf5\x2a\xbe\xc4\x0e\x7f\x52\x60\x96\x38\x76\xf8\x39\xe3\xe0\x5d\x22\x96\xcf\x7b\xfa\xc8\x3f\x1c\xf2\xa2\x75\x18\x70\x07\x6d\x64\x01\xc2\x96\x2a\x65\x00\x42\xf2\x5f\x13\x3d\xf2\xef\x3d\x67\x6f\xcf\x10\x5b\xc2\x2b\xa2\x85\xdc\x87\xe8\x91\x36\x14\x2d\x96\x18\xc9\x73\x1c\x70\x1b\xa2\xee\x7f\x56\x86\x9a\x64\xde\xd3\x13\xc9\x90\x9e\xac\x17\x15\xb4\x9a\xd9\x75\x05\xc9\x27\x23\x3b\x16\x7e\xf2\xd3\x4b\xb1\xb5\x5b\x16\xdc\xe8\x7e\x12\x25\xf4\xe0\x65\x3a\x73\x3d\xfa\xe9\x31\x99\x87\xb4\xff\x27\x16\xd8\x06\x6f\xe8\x88\xb9\x93\xc4\x20\x6f\xd0\x58\xe8\x9a\x10\x89\xb0\x69\x47\x21\x22\x3f\xb3\x67\xf8\xac\x20\xbe\x47\x95\xa9\x83\xc1\x3f\x48\xf4\x3d\xec\xa0\xce\x75\x4f\x1d\x1e\x7a\x3a\xfb\x57\x00\x00\x00\xff\xff\x92\xfd\x9c\x2d\x16\x27\x00\x00" func contractsSequelmarketplaceCdcBytes() ([]byte, error) { return bindataRead( @@ -140,11 +164,51 @@ func contractsSequelmarketplaceCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/SequelMarketplace.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x7e, 0x61, 0x55, 0xe7, 0x4b, 0x75, 0xc9, 0x35, 0x97, 0xe4, 0x31, 0xc2, 0xf1, 0x7d, 0xae, 0xab, 0x37, 0x4a, 0xec, 0x7, 0x15, 0xe0, 0xc3, 0x5b, 0xcb, 0x68, 0x83, 0xce, 0xd8, 0x2e, 0x25}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7b, 0x43, 0x9f, 0x8, 0x9f, 0x12, 0x99, 0x7b, 0x39, 0xe5, 0xed, 0xb7, 0x7, 0x39, 0x35, 0xf9, 0xe2, 0x2, 0xf4, 0xf4, 0x3, 0xb5, 0xd8, 0xde, 0x5f, 0x81, 0x7f, 0x15, 0x55, 0xf6, 0x4d, 0x4}} + return a, nil +} + +var _contractsStandardBurnerCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x54\x41\x8b\xe3\x46\x13\xbd\xfb\x57\xbc\xbd\xd9\xc3\x8c\xbd\xdf\xd5\xec\x7c\xbb\xb3\xce\x2e\x09\x21\x09\x24\x03\x39\x84\xb0\xb4\x5a\x25\xab\x71\xab\xda\x74\x97\x46\x28\x8b\xff\x59\x6e\xf9\x63\xa1\x5a\x96\xac\x71\x66\x20\x87\x0c\x0c\x98\xee\x57\xf5\x5e\xbd\x7a\xad\xcd\x66\x83\x8f\x6d\x64\x8a\x70\x09\x06\x36\xb0\x44\x63\x05\x52\x1b\x81\x35\x8c\xca\x58\xe7\x9d\x18\x21\x48\x4d\x28\x29\x49\x6c\xad\xb8\xc0\x08\x15\x0c\xf7\x88\x94\x42\x1b\x2d\x21\x30\x2a\x1f\xba\xf5\x62\xb3\xd9\xe8\x3f\x76\xda\xcd\x15\xad\x84\x98\xf2\xc1\x1d\x1e\xda\x24\x8e\xf1\xbd\x77\x4c\xb8\x43\x2d\x72\x4c\xdb\xcd\x46\x3a\x27\x42\x71\x6d\x43\xb3\x31\x19\xf2\x45\x5b\x49\x7f\x2e\xfb\x86\xd8\xfd\x81\x4f\xa5\x63\xeb\x0e\xaf\xd4\x15\xbe\xa5\xe4\xf6\x7c\x2e\xf9\x68\x92\x38\xc3\xf8\xe1\xaf\x3f\xbd\xa7\xf8\x4a\x91\xb4\xb1\x08\x9e\x58\x16\xc6\x5a\x4a\x69\x69\xbc\x5f\x5d\x6c\x38\x7b\xf3\x75\x01\x00\xda\xf7\xd7\x9a\x18\xbb\x48\xc9\x12\x97\x01\xcb\x9d\x29\x89\x2d\xe1\x7f\xeb\xb7\x2b\xb5\x30\x92\x27\x93\xa8\xbc\x85\x6d\x93\x84\x66\x32\x2c\xc4\x84\xce\x79\x8f\x82\x10\xa9\x09\x4f\x54\xa2\x8a\xa1\x81\x35\x25\x59\x5a\x4f\x0c\x4a\x69\x0a\x4f\x79\x21\x0c\xc7\x42\xb1\x32\x96\xd0\x90\x61\x81\x04\x44\x3a\x7a\x3d\x90\xda\x25\xf8\x90\x04\x15\x19\x69\x23\xdd\xc2\x78\x1f\x3a\xc7\x7b\x5d\x4c\x60\x52\xb4\x29\x4b\x5d\xac\xf1\xbe\x30\xf6\x30\xd1\x34\x24\x75\x28\x15\x40\x9c\xda\x98\xb7\xdb\xa3\x0c\xe0\x20\x83\xe8\xd0\x23\x05\x85\x69\xbf\xae\x76\xb6\x56\x49\x7a\x3d\x29\x29\xe8\x76\x6a\x18\xe2\xc8\xe6\xc3\xde\x59\x14\x6a\x83\x66\x62\x1e\x99\xd4\xda\x1a\x26\x41\xdd\x3d\x68\x5f\xcd\x54\x6a\x8f\x47\xdf\xe7\x38\xe1\xf3\x23\x76\xc1\x7b\xca\xf0\xb1\xf7\xc4\xf1\xe3\x4f\x8f\x9f\xb6\x78\xac\x35\x6b\xbe\x47\x67\x7a\xe5\x4c\x44\x28\x88\xa9\x72\x32\x58\x9a\x8d\x99\x8c\x9b\xaa\x5d\xca\x0a\x7d\x67\xfa\x84\x36\x0d\x81\x2e\xda\xc8\xa3\x19\x8e\x87\xd2\x71\xfd\x6b\x3c\x0c\x36\x76\x75\x40\xe8\x58\x5f\xc8\x94\x76\x7d\x1c\xe7\x5e\xa4\x7a\x71\x73\xc3\x41\x6e\x6e\x26\x3a\x09\x93\x8f\xb3\xb2\x4c\xd0\x99\x3e\xc3\xe6\x99\x9b\x10\x97\x8d\x4f\x51\x18\xf2\x37\xab\x18\x15\xae\x50\xb5\x9c\x67\xd8\x9d\x17\xbc\x5c\x65\xec\x69\x31\xe9\xc8\x13\xe6\xd7\xbd\xf7\xa1\x30\x7e\x9c\x76\x58\x69\xce\xe4\xa4\x73\xfe\x9c\x9d\x68\xd5\xde\x3d\x11\x5f\xd2\xf9\x5d\x95\x5d\x3b\xc6\xf0\xe4\x4a\x2a\x67\xe8\xe6\xe8\xa9\x21\x96\x94\x01\x97\x14\x8f\xd3\x5c\x92\xe2\x64\x60\xd5\x4c\x4e\x3b\x18\xf5\x8f\xea\x0c\x97\x7a\xc7\x17\x6d\x95\x50\xec\x4c\x2c\xd3\xfa\x1f\xde\x8d\x26\x2c\xbf\x40\x82\x52\x6f\xf1\xe1\x81\xfb\x9f\xcf\xe2\xde\xaf\x66\x0e\xba\xea\x8c\xc1\xfd\x3d\xd8\xf9\xd9\x95\xfe\x8d\x74\x03\xe6\xd9\x55\x24\x99\x1f\x9d\xa6\x5f\x9e\x04\x11\xef\xee\xce\x45\x6f\x16\x73\x32\xbd\x4c\x7a\x19\x61\xd2\x7b\x7c\xf8\x3a\x5a\x73\xba\x62\x4e\xeb\x17\xf6\x78\x2d\x2b\x5d\xe8\x41\x3e\xd1\xc8\x60\x62\x9c\x71\xfc\x36\x1b\xfe\xf7\x2b\x9a\xae\x76\x9e\x14\xbf\xf6\xc4\x7b\xa9\xf1\x7f\xbc\xbd\x82\x8c\x33\x39\xa1\x46\xbb\x2a\x78\xf8\x66\x7d\x76\x31\xc9\x95\xb4\xac\x9d\x7c\x95\xe5\x2f\xdf\xdd\x69\xd5\x73\xc4\xe9\xc5\x51\x4c\x8c\xaf\x0c\x53\x3a\x2b\x73\xc7\xbe\x35\xa9\x56\xc7\x7e\xc9\xdf\x91\x2d\x66\xd3\x5d\x9b\xa8\xe5\x07\xea\x13\xee\x73\x97\xb5\xfe\x7e\x61\x7c\x3d\xfe\xf7\xf3\xe7\x4e\x83\x01\xcb\x03\xf5\xdb\xa1\xfc\x99\x23\xab\x37\xff\x89\x27\xca\x74\x6d\xca\xcb\xf9\x8c\x57\x39\x3c\x2d\x4e\x8b\xbf\x03\x00\x00\xff\xff\xc4\xa6\xc0\xc9\xce\x07\x00\x00" + +func contractsStandardBurnerCdcBytes() ([]byte, error) { + return bindataRead( + _contractsStandardBurnerCdc, + "contracts/standard/Burner.cdc", + ) +} + +func contractsStandardBurnerCdc() (*asset, error) { + bytes, err := contractsStandardBurnerCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "contracts/standard/Burner.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x52, 0x10, 0xdf, 0x88, 0xd1, 0x0, 0x10, 0xac, 0x24, 0x72, 0xa5, 0x9c, 0x3c, 0xbd, 0x20, 0xd4, 0x67, 0x83, 0x3c, 0x9a, 0x8d, 0xc5, 0x79, 0xa5, 0x9, 0xe9, 0xf2, 0x45, 0xa6, 0x51, 0x34, 0x5d}} + return a, nil +} + +var _contractsStandardExamplenftCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x3b\x6b\x73\x1b\x37\x92\xdf\xf5\x2b\x3a\xfc\x90\x23\x73\x34\x65\xe7\xb5\xbb\x2c\x33\x4e\x22\x59\x39\x5e\xd9\x5a\x97\x44\x3b\x57\xe5\x52\x79\xc1\x99\xa6\x88\x68\x06\x60\x00\x8c\x68\x96\x4b\xff\xfd\xaa\x1b\xf3\xc0\xbc\x48\xca\xbe\x5c\xdd\xf1\x83\x44\xce\xa0\x1b\xdd\x8d\x46\xa3\x5f\x38\xfd\xe6\xe4\x9b\x93\x6f\x00\x16\x6b\x69\x41\x5a\x10\x0a\xf0\xa3\x48\x37\x09\x82\xa4\xbf\x29\x2a\x27\x9c\xd4\x0a\xf4\x0a\x04\x5c\x24\x7a\x0b\x97\x5a\x3d\xb9\xc8\xd4\xad\x5c\x26\x08\x0b\x7d\x87\x8a\x30\x64\x56\xaa\x5b\x70\x6b\x84\x77\xdf\x82\x75\x42\xc5\xc2\xc4\x13\x7a\x33\x77\x84\x59\x69\x07\x1b\x61\x1c\x21\xa2\x51\x7a\xb5\x92\x91\x14\x49\x39\x16\x96\x99\x03\xe9\x40\x58\x9b\xa5\x18\x83\xd3\xb0\x44\x82\xb7\x32\x95\x89\x30\xf4\x60\xad\xb7\x90\x0a\xb5\x83\xcb\x8b\x85\x85\xad\xce\x92\xb8\xa2\x93\xd1\x46\xda\x20\xac\x32\x15\x11\xd1\x22\x91\x6e\x37\x09\x38\x8c\xb4\x72\x46\x44\x0e\x62\x8d\x9e\xa4\x0a\x9a\xd0\x5a\xbd\x59\x4b\xeb\x64\x24\x1c\xc6\x10\x25\xc2\x5a\xb9\xa2\x5f\x52\x33\x93\x76\x67\x1d\xa6\xb0\xd2\x06\xa4\xb3\x4c\xc5\x84\xf8\x8b\x71\x25\x15\x5a\x10\x44\x2c\x09\xef\xf2\x62\x01\x5b\xe9\xd6\x90\x4a\x25\x53\x91\x40\x8a\x4e\xc4\xc2\x09\xa6\xe6\xf4\xe4\x44\xa6\x1b\x6d\x1c\x0c\x2e\xb5\x2a\x64\xc9\xa2\x1c\x94\x6f\xde\x49\xdc\x5e\xa1\xd5\xc9\x3d\x9a\xea\xe9\xeb\x1c\x0f\xbd\xb5\x83\x93\x13\x11\x45\x68\xed\x50\x24\xc9\xa8\xe2\xee\xa5\x5f\xc2\xcb\x8b\xc5\x14\x9a\x13\xc0\xa7\x93\x13\x00\x80\xd3\xd3\x53\xb8\x2e\x44\xff\x46\xb8\xb5\xe5\xc7\x21\xbe\x04\x1d\x9c\xe9\x24\x41\x16\xe6\xb5\xd3\x46\xdc\x22\x0d\x9d\x42\xf0\xe3\x00\xd8\x9b\x6c\x99\xc8\xc8\x43\x55\xdf\x2b\x1a\xe8\x17\x6c\xd7\x68\x90\xd7\x2f\x95\xca\xa1\x01\xbb\xe6\xb5\x5d\x22\x58\xa7\x0d\xc6\xe5\xf0\xc5\x1a\x2b\x8d\xd9\x10\xd9\xbc\x1a\x7e\xe9\x8b\x39\x41\x98\x02\x10\xa4\x6a\xbe\x34\x68\x75\x66\x22\x04\xb7\xdb\x60\x27\xf5\xaf\x99\x88\x5e\x86\x4b\x62\x7e\x47\x88\xd6\x5a\x5b\x4f\xba\x12\xa9\x5f\x78\x62\x66\xcc\xea\xec\x48\xe9\x68\x1a\x88\x84\x82\xb5\xb8\x47\x56\x33\x1e\xa9\xf4\xb6\x44\xb4\xc4\x48\x64\x39\x1a\x9e\x7b\x25\x22\xac\x94\xd4\xe0\x9f\x99\x34\x48\xbb\x83\x36\x01\xa3\x01\xbb\xc1\x88\x94\xd3\x63\x23\xb4\xa9\x36\x6d\x7e\x4a\x6e\x3b\xb5\x61\x42\xf4\xe6\x1a\xd1\x25\x09\x19\x4f\xe1\xed\x5c\xb9\x1f\xbf\xaf\xc6\x10\xc1\x17\x46\xa7\x4c\xed\xb9\xb4\x9b\x44\xec\x4a\xfd\x86\x7b\x89\xdb\x5e\x74\x44\x2a\xc9\xd2\x48\x75\xdb\x3b\x28\x46\x1b\x19\xb9\xa1\xb5\x3a\x38\xd6\xad\xb3\x74\xa9\x84\x4c\xca\x91\x75\x32\x73\xd5\xb8\xd2\x3b\x91\x38\x89\x76\x3f\x9d\x16\x93\x95\xc7\x6b\x0a\x80\x29\xbc\xaf\x6d\xb9\x89\x47\xb5\xbb\xa9\x4f\xf4\x1b\x2a\x34\x32\x82\x58\x7a\xc3\x63\x76\x6c\xe7\x8c\x20\x33\x41\x14\xb0\x5e\x08\xdb\x3f\x63\x41\xd8\x14\x3e\x79\x4e\xa6\xf0\x8b\xda\x5d\x3b\x93\x45\xee\xa1\x9a\x4c\x2a\xe9\x86\xe5\x2f\xfa\x84\x32\x1d\xd7\xde\x74\x08\xb2\x3e\xa0\x25\xbd\xfa\xeb\xc3\x42\xa8\x8f\xdf\xcb\x42\x35\x74\x04\x9f\x6a\x60\x24\x83\x89\x8c\x61\xe6\xbf\x65\x99\x8c\xdb\xef\x59\xc9\x67\xcc\x6c\xfb\x65\xc0\x28\xcc\x42\xb6\xdb\x43\x4b\x96\x61\x56\xb1\xdf\x1e\x56\xb2\x0e\xb3\x4a\x0c\xed\x61\xa5\x36\xcd\x4a\xe6\xcb\x41\x0f\x75\x0d\x89\x0c\x0a\x87\x2f\xd3\x8d\xdb\x55\xc6\x31\x7f\xea\xcf\x5d\x7a\x15\x18\xce\x1a\xb4\x50\x31\x18\x74\x99\x51\x36\xb7\x02\x6c\xd4\x44\x92\x90\xb1\xa4\x5f\x82\xcf\xbf\x1d\x1b\x1a\xbd\x55\x7c\x36\xd5\x50\xfc\xfc\xa9\xb5\xf9\xab\xc9\x1e\x3a\x77\xd8\x2a\x53\xdd\x74\x0f\x47\xd3\x03\xf8\x1a\x6b\xec\x69\x87\xe7\x4f\xaa\xa3\x69\xd2\x8d\x59\xad\xdc\x62\xb7\xc1\x29\xd0\xdf\xe7\x3f\x07\xe3\x2f\x2f\x16\x3f\x0d\x47\xa3\x2e\x01\x87\x44\xd3\xc6\x66\xca\x6f\xd1\xb1\xb6\x12\xb1\xef\x09\xdb\x4d\x37\x51\xef\x6b\x0f\xe9\xc3\x53\xd7\x35\x3e\xb7\x73\x3f\x0d\x47\xe3\x63\x86\x97\x06\xe7\x58\x80\x97\xb1\x24\xf6\x8f\x1f\xff\xd1\xa1\x51\x22\x79\x7b\xf5\xea\x58\x90\xcb\x8b\x45\x25\xe7\x73\xe1\xc4\xe7\x01\x3e\x4e\x10\xd7\x68\xa4\x48\x8e\x1d\xbd\x60\x83\x79\xb4\x0c\xde\xbd\xfe\xd5\xc8\xf8\x16\xe3\xe2\xf9\x4f\xc3\x51\x0d\xf0\xe6\x90\xb2\x90\x9e\x18\xef\x64\x11\xce\xe1\x07\x56\x1f\xaf\x7c\xa3\xc0\x7c\xbd\x68\xda\xac\xad\x74\xd1\xda\xeb\xda\xa7\x16\xad\x91\xb0\xb8\x5f\x89\xa6\x2d\x18\xa8\x14\xb2\x13\x68\xd8\x09\x01\xe5\x01\x50\x5a\xc9\xb6\xe8\x8a\x4f\xed\x3c\x68\x1a\xce\x7e\xb0\xe0\x94\xa8\x53\xf6\x1f\x8b\xc5\x9b\x0b\x99\x60\x3f\x69\xf4\xc9\x4c\x32\x6d\xd8\xde\xde\xf1\xa3\xce\x37\xed\xa7\x7d\x02\x0e\x76\x51\xb7\x84\xbd\x07\x49\xae\x14\x79\x56\x90\x8a\x8f\xa0\xb2\x74\x89\x86\x8e\x6b\x0e\x2a\xd8\x92\x92\x11\x5d\xe6\xce\x68\x0c\x2b\xef\xec\x04\xf1\x43\x1f\x6e\xeb\xed\x32\xa1\x45\x4f\x0a\xac\x24\x26\x31\xdc\x8b\x24\xe3\x49\x2d\xb2\xf5\x56\x3d\x42\x20\x4f\x20\x87\x9c\xab\x95\x86\x19\x74\x32\x38\xf4\x6b\x3e\xc8\xad\x23\x7b\x17\xf9\xab\xc1\x38\xe7\x68\x5a\x1c\xac\x63\xa2\x67\x4a\x53\x76\x8b\x37\x98\xf3\x95\xb4\xae\x75\xd8\xe7\x88\x6f\x60\x06\xef\x03\xda\x6e\x8e\x57\xe1\x62\x59\xfa\x15\x25\x98\xff\x0b\x55\xa0\x34\x38\x8f\xd8\x62\x1e\xa6\x9f\xba\x5c\x90\x5f\x48\x59\x78\x26\x3c\x82\xb8\x12\xec\x00\x7d\xdd\x6e\xca\xe3\xc9\xac\x9f\x2c\x8f\x20\x34\x00\x1c\x0e\xd6\xce\x6d\xec\xf4\xf4\x34\xcf\x26\x3c\x51\x2b\x37\xd1\x6a\x95\xe8\xed\x44\x9b\xdb\xd3\xc1\x24\xd2\x2a\x12\x6e\x98\x8b\x76\xe2\xb4\x77\x19\x87\xa3\xd1\xf1\xa4\x76\x9d\x68\x7b\x09\x0e\xbc\x89\xdc\xea\x9f\xe5\x3b\x9a\xad\x7f\x11\x2b\xed\x75\x40\xc6\x6c\xf5\x83\x21\x87\x69\xfa\x5c\x8e\x8e\x3b\x2e\xfe\xd7\x99\x2a\xc9\x3a\x9e\xaf\xf2\x60\xef\x35\xcb\xf8\x31\x4a\xb2\xb8\xb0\xb9\x0b\xc9\x31\x6d\x0c\x2b\xad\xc9\x5e\xda\xb5\xde\x82\x76\x6b\x34\x90\x59\xb4\x64\xad\x3d\xca\x7e\x8b\xe6\xf1\xc5\x7e\x18\xd9\xae\x41\x85\x7a\x30\x86\xc1\x4a\xeb\x41\xb7\x0d\xe3\xc0\x92\xc1\x88\xf8\x96\x0d\xa6\x18\x6f\xa1\x3d\xde\x21\xfd\x98\xd6\x83\x81\x71\x39\xf7\xa5\x48\x29\x78\xaa\x93\x32\x3a\xe9\x13\x41\xc0\xba\xb4\x20\x20\x53\xf2\x23\x38\x99\xa2\x75\x22\xdd\x8c\x61\x8b\x45\x5e\x24\x15\xe6\x8e\xe2\x00\x4e\x31\x09\x88\xfd\x8a\x90\xdc\xe9\x08\xda\x24\xc2\xad\xb4\x49\x2d\xdc\x29\xbd\xe5\xa4\x59\x21\x42\xe9\x26\xbd\x2c\x57\xd3\x33\xa1\x2d\xbe\xf9\x69\x71\xf2\xd4\x64\xc9\xa7\x5b\x43\x0a\x35\x71\xdf\x7c\x35\x0e\x89\x9c\xc2\xe0\x5c\x38\x82\x34\xc2\x48\xb7\xdb\x73\x38\x55\xeb\x30\x11\xb1\x97\xe0\xb0\x41\x68\xbf\x40\x49\x79\x58\x92\x8c\xc5\x4b\x8b\x94\x81\xe2\x23\x3f\x73\xaf\x30\x56\xda\xaf\xf0\x15\x0f\x6b\xc9\xc2\x3f\x1e\xda\x48\x1b\x9c\xc2\xb3\xa7\x93\xa7\xf9\x29\xfb\xec\x29\x7f\xaf\xb9\x5a\x83\x33\x9d\xa6\x5a\x0d\xfa\x8f\xdf\x62\xb6\xfd\x32\x27\x8d\xed\x13\x36\x6b\x73\x43\xc8\x4a\x26\x95\x84\xeb\x0c\x1d\x2f\xec\x02\xae\x47\xca\xb9\x0d\xaa\x20\x8f\x3f\x67\xba\xbc\xf7\x5e\xf3\x30\x2f\xf2\xb4\x3e\xcb\x2c\xad\xf7\xbd\x6f\xe5\x3d\xfa\x04\xcb\xc6\xe8\x3f\x30\x72\xde\x45\xd3\x09\xe8\x7b\x34\x5e\xf5\xd7\x08\x4b\x3f\x11\xfb\x49\xd2\x82\xc1\x8d\x41\x8b\xec\xdc\x09\x0a\xbe\xfb\x66\x7d\x79\x75\xf6\xb7\x6f\x9f\xc1\x76\x8d\xaa\xc4\xe1\x34\xbc\x7c\xf7\x1a\xb4\xf2\xd9\xf0\x7b\x29\xfc\xfc\x9c\xdb\x04\xa9\x56\x46\x58\x8e\x19\x32\x53\x4c\x3c\xe9\xd5\xd0\xdf\xb0\x48\x5b\x7b\x8b\xfd\x24\xc1\x7b\x4c\x8a\x94\x5e\x0c\x76\x97\x2e\x75\xe2\xd7\xbc\xdf\xd6\x15\xd0\xaf\x18\x78\x76\xe8\x44\xd8\xeb\xae\xd7\x8f\x0b\x52\xa1\xbd\xc3\xf7\x1e\x1b\x87\x03\xb4\xf0\x33\x02\x61\xbf\x6a\xfa\x14\x2d\x0c\x2f\xba\x65\x29\x57\x35\x49\xbc\xae\x12\x33\x75\xe1\xb4\x83\xb5\x60\x35\xce\x74\xba\x29\xb2\xb9\x4e\xdf\xa1\xca\x97\xe3\xed\xd5\x1c\x96\xc2\x62\x4c\xab\x2e\xf8\x2b\x3f\xa3\x15\x2a\xc7\xc2\xfc\x7c\x0c\x1b\x2d\x73\x15\xd5\x20\xe0\x3f\xaf\xff\x79\x09\x2b\x99\xe0\x84\xcb\x0f\xfb\xa6\xde\x16\xf9\x6e\xc1\x00\xb0\xd3\xd9\xbf\xdd\x23\x64\x9b\x44\x8b\x98\xd4\x54\xc5\x9c\xd5\x5e\x6b\xcb\xf8\xad\x4e\xd1\x67\xcd\x9f\xf8\x14\x37\x45\x27\x44\x17\x05\x65\x41\xf2\x39\xca\xf1\xee\x9b\x7b\xfe\xe6\xe2\x7a\x0c\xd7\xdf\x8d\xe9\x28\x21\xa1\xbd\xbd\x7a\xc5\x62\x13\x52\x15\x45\x1d\x66\x25\x96\x06\x23\x97\xec\xc6\x80\x2e\xea\x3e\x48\x20\x57\x49\x92\x11\x89\x68\x06\x87\x5c\x41\x2f\xe8\xc2\x92\x9d\x0e\xf6\xa2\xcd\x8c\x7c\xc7\xa1\xd4\x0c\xda\x9e\x63\xe1\x53\x0e\x26\x7f\x58\x36\xb7\xbd\xa8\xba\xfd\xd7\x96\xae\xed\xdf\x29\xde\x2a\x37\x35\xee\x40\x0c\x4e\x1f\xbf\xa9\x3b\x40\xfd\x8b\xfd\xc0\x99\x91\xcd\x38\xfc\xed\xd5\x7c\x3f\xa5\xf4\xc9\x17\x64\x5a\x7c\x19\xd3\xca\x73\xdd\x8a\x96\xb8\x58\x2e\x83\x36\x4b\x9c\x25\x95\x12\xe0\xc5\x89\xaa\x2c\x00\x16\xa3\x48\x19\xd9\x24\x1d\x9c\x35\x3c\xac\xf6\xaf\xd5\x3e\x2c\x7b\x6c\x46\xe7\x9b\x07\xc0\xc4\xe2\x9e\xbd\x9e\xaf\x7f\x5f\x14\xfe\x70\xd2\xff\xab\x03\xd4\x0f\x78\x28\xea\x42\x70\x4e\xc7\x0b\x97\x10\xa7\xf0\x4f\x95\xec\xb8\x20\xc4\x65\xaa\xa5\x88\xee\xb6\xc2\xc4\x10\xe9\x74\x23\x9c\x5c\x4a\x5f\xa1\x84\xbe\xa2\x4d\x55\x0c\xaa\x6c\x7a\xb3\xb6\x06\x9f\xf2\xa9\x3b\x31\x54\xa3\x3b\xaa\x3f\xd5\xcb\xf1\xde\x09\x6a\x89\xe4\x7a\x8d\x83\x8e\xd4\x48\x2b\xf2\x37\xbd\xdd\xbb\x43\x55\x4f\x3c\xe7\x87\xae\xa8\x17\xde\x72\xdf\x55\xc1\xbf\x7c\x7d\xe9\x5f\x30\x3f\xf7\xc9\x92\xee\xac\xae\x30\xe4\xb6\x61\x7c\x79\xb1\xb0\x53\xf8\xf9\x93\x87\x9a\x42\x3b\x0b\x7d\x79\xb1\x78\x68\x54\x4c\x60\xd8\x59\x74\x28\x11\xc2\xf3\x27\x24\xc5\x6a\x41\x6b\x0c\xdc\xa2\xbb\xce\x36\x1b\x6d\x1c\x8f\xa6\x83\xce\x96\xd9\x78\x01\x89\xb4\xae\x90\x84\xe3\x77\x79\x36\x9e\x3d\x8d\x08\x25\x79\x22\xc4\xcb\xc6\xb5\xea\x3f\xad\x8c\x75\x6b\xa2\xe1\x68\x0a\x9f\xfc\x09\xfb\xab\xd6\x49\x33\xb1\x4e\x46\xd1\x16\x30\x0c\xd0\x18\x3e\x0b\x19\x63\xce\x6b\xa3\xdf\xf7\x04\x84\x37\x30\x03\x67\x1a\x3b\x3c\xd7\xfd\x3a\x86\x3e\xa9\x5d\xe5\x02\xda\xae\x91\xe3\x36\x6d\xb8\x96\x49\x87\x09\x79\x6d\xca\x6b\x01\x29\x06\x8b\x06\x63\x58\xee\x1a\xa5\xda\x1a\xbe\x5f\xc2\x1a\x6e\x99\xa5\xf3\xc0\x5c\xfe\x64\x7c\x79\x80\xf4\x47\x66\x5d\xe5\x9b\x66\x48\xb8\x63\x5c\x89\x2c\x71\xfb\x97\x40\xda\xe6\x0a\x0c\x5d\xe9\xde\x8c\xbc\x50\xbb\xcb\x08\x3c\xfd\x6c\xd6\x17\x61\xf7\x89\x89\xb6\x41\x6c\xc4\x16\x0c\xa6\xfa\xde\x97\x82\x48\x93\x56\x45\x85\x35\x2c\x6b\xab\x18\xfc\xa0\x66\x0d\xa8\xc9\x54\x6b\x53\xfc\x9e\x4f\xe3\x53\xde\xc5\xa4\xc3\xe2\xcb\xfc\xbc\xa8\xf3\x76\x57\x76\x68\x4f\x75\x68\x9e\x77\x7c\x9e\x3f\x69\x6c\xa7\x89\xe7\x65\x78\x87\xbb\x29\x54\x53\xb4\x8d\xf5\x8b\x17\xb0\x11\x4a\x46\xc3\x41\x20\xaf\xca\xfc\x4c\x0a\xd8\x29\x9c\xf1\xb2\x92\x02\x95\x02\xcb\x05\xc5\x76\x64\x7e\x0e\xfd\x8e\x43\x71\xd6\x54\x94\x84\xe9\xa6\x83\x60\x83\x09\x9c\xad\x31\xba\x63\x71\xdb\x6c\x99\x4a\x47\xda\x3a\x3f\xa7\x25\x48\xc5\x1d\x3d\xf4\xc5\x79\x69\x41\x2b\x0c\xb6\x7f\xb0\x76\x7a\xab\xec\x64\x30\x6a\x38\x25\x65\x5d\x8c\x25\xd9\xa7\x23\x31\x6e\xb4\xa5\x25\x17\x77\xdc\x64\x42\x6c\xb3\x43\x18\xc7\x35\x55\x28\x67\xb3\x81\x91\x6e\xd5\x11\x19\x8a\xc6\x7b\x0e\xb8\xe7\x80\x9c\x4b\x23\x76\xbd\x35\x92\x9c\x82\x21\x93\xd9\xab\x21\x4d\x23\x5b\x53\x11\xff\x85\x5c\xfc\xc6\xe6\x68\x81\x70\x2d\x98\x87\x4f\x64\x5c\x97\x17\xb1\x10\x7b\xa7\x5b\xe1\x36\xc7\x99\x33\x11\x9c\x4b\xdb\xb5\x8c\xd6\xe5\x8e\xe2\x76\xa3\x84\x9c\x77\x6c\xcd\xa5\x93\x78\xd1\xad\xc4\xef\x0b\x0a\x6e\x4a\xea\xeb\xb4\xc4\x68\x9d\xd1\xbb\x12\x45\x8b\xd2\xbc\xe5\x28\x66\x2b\xc7\x5d\x2a\xe8\x9d\xf7\x4d\x66\x28\xce\x20\x6d\x49\x76\x4d\xa8\x73\xcd\x6a\xce\x6c\x6a\x8a\x03\x4c\xd5\xd8\x93\xa9\x04\xad\xa5\x87\xcd\x2e\x90\x26\x16\x83\xc2\x6a\x16\xcd\x56\x28\xd6\x10\x4c\xa5\x2b\x5a\x11\xde\x6e\x62\xee\x70\xc2\x7b\x54\xae\x8a\x25\x9a\x48\xa4\xaa\xcf\xdf\x92\x9e\xc8\xdc\x9a\x79\xbf\xc2\x15\xcc\x60\xf8\x75\x43\x84\x24\x3c\x0a\xb0\x33\xb7\x6e\x9b\x24\x4f\xc4\x08\xbe\xee\x56\xa6\x17\xa3\xaf\x1a\xf4\x84\xb3\x4d\x32\x86\x5e\x18\xa1\xec\x0a\xcd\xb9\x70\x38\xa4\x07\x53\x3a\x44\xcf\x32\x63\x50\xb9\x5f\x13\x1d\xdd\x0d\x47\x93\x32\x85\x56\xdf\xeb\x81\x16\x92\x6c\x2a\xb1\x0c\xc3\x89\x7a\x0d\xf7\x2d\xba\xf9\x79\xe0\x07\x28\xbf\x85\x8a\xfe\x36\x7a\xc7\x86\x80\xa2\xb6\x56\x13\xd2\x41\x3f\x60\x7e\xee\xeb\xd6\xde\x28\xf7\x54\xae\x1b\x56\xf7\x0e\x77\xbd\xa7\xf1\x6f\x98\x37\xa2\x88\x54\x67\xca\x95\xe5\xae\xbe\x2e\xa9\x83\x04\xbe\x42\x75\xeb\xd6\x44\xe3\x5c\xb9\xa3\xc8\x4b\x18\xe2\x50\x45\xb6\x9c\x63\xa9\x8d\xd1\xdb\xcb\x8b\xc5\xf0\x43\xd0\x86\x34\x9a\xf6\xea\x4b\x37\x11\x1d\x2a\xd9\x27\xa3\x5f\x79\x46\x16\x04\x53\x91\xe7\x4e\x4c\xd9\x61\x96\x6f\xb6\x3c\x91\x34\x3f\x3f\x86\x81\xb0\x8d\x6f\xd8\xe0\x23\x7c\x37\x29\xbe\xb4\x18\xc9\x53\x1b\x6a\xe5\x60\xd6\xc5\x0e\xed\xb0\x23\x65\x12\xc8\x85\xd0\x31\x60\x37\x11\x8f\x8d\x80\x6a\x82\x7c\x74\xaf\x4b\xb1\x69\xac\x48\x83\xb6\x3c\x38\xa2\xf9\xa5\x36\xf0\xe7\x9c\xb4\x5f\xaa\x39\xa2\x23\xe6\xf8\xff\xd4\xf2\x02\x61\xa4\xf9\x39\x92\xee\xd6\xe5\x52\x1e\x5f\xd8\x6c\x74\x9c\x28\x6b\x0c\x3f\x46\xae\xa5\x4c\x73\xc4\x10\xae\x4f\x53\x36\x17\x79\x17\xb0\xa7\xb7\xb4\xd3\x49\xc2\xec\x94\x19\x42\xce\xa1\x54\x7d\xc0\x3e\x0e\x11\x14\x2b\x43\xa3\xcb\x39\x47\x7c\xd2\x52\xb7\xc0\xf4\xfb\xe0\xb0\xcc\xab\xb0\x73\x15\xa0\xbe\xe7\x84\x8d\xf7\x0c\x7c\x4f\xc0\x56\x26\x09\x2c\x11\x32\xcb\x33\x97\xc8\x8b\x4f\x8c\xf7\x98\xe8\x0d\x1a\x4b\x0b\xc1\x05\x1d\xef\xdd\x6c\x84\x11\x29\x3a\xe4\xc6\xe8\x8d\xb0\xb6\x58\xa8\xb0\x9f\x65\x04\x29\xba\xb5\x8e\x27\x35\xe2\xfb\x6c\x7a\x98\x25\xb6\x1d\x85\xc3\x17\x5d\x9d\x54\x9d\x5d\x54\x9f\xd5\x7e\xf4\xb9\xad\x47\x8f\xce\x3c\xdf\x1c\x52\x15\x16\x20\x79\xda\xb5\x76\xd1\x7c\xef\x04\x7d\x20\x93\xb6\x4e\xf0\xb2\x14\x5d\x44\x6b\x5f\xf9\x28\x4c\x4f\x8c\x56\x9a\x5c\x0b\x26\x6d\x35\x82\xaa\x6e\x50\x56\x28\x0a\x25\x32\xf8\x67\x86\xd6\x35\x81\x3b\x37\xdd\x71\x55\xe0\x17\xcd\x9a\x6f\x5f\xbf\x53\xd0\xeb\xc4\xcc\xd4\xcd\xdc\x97\xd5\xe6\x7d\xce\x3e\x1c\xd6\x2a\x81\xb5\x10\x75\xe7\x3a\x6d\xd8\xad\xcd\x87\x64\x67\xeb\x7a\x77\x72\x75\x13\x34\xa9\x37\x60\xab\x9e\xf5\x7d\xa0\x61\x96\x8d\x85\xf1\x75\x67\x40\xdb\xd9\xd9\x56\x61\x79\x25\xd5\x9d\xcf\xaa\x7c\x1e\x96\x4e\x6b\x5b\xe8\xf6\x14\x86\xab\xec\xf1\xc7\x58\xf8\xf9\x2b\x8e\xb4\xf0\xf3\xd0\x7e\xdc\x7e\x92\x13\x51\xd7\x9a\xcf\x50\xc9\x3d\xcd\x15\xbe\x1f\x3b\x96\x6d\x65\x7c\x4d\x4f\xbb\x15\x70\x25\x13\x7c\x7c\x87\x1c\x77\xc7\x95\x25\x12\x61\x2d\x3a\x3b\xd9\xe2\xd2\x4a\x87\x4f\x08\xa5\x9d\x44\x3a\x3d\xfd\x61\xf5\xe3\xb7\xff\xf8\x3e\x7a\x1a\xfd\x4d\xfc\x3d\x8a\xe3\x1f\xbf\xff\x6e\xf9\x2c\xfa\xfb\xb7\x4f\x1b\x2f\xc4\x0f\x3f\x44\xcb\x67\xd1\x3f\xbe\xfb\xf1\xc3\x45\xa2\xb7\x1f\x7e\xd7\x26\x4e\x85\xb9\x9b\xd8\xfb\xdb\xee\xfc\x48\x8f\x26\x31\xf7\x79\xa9\x5e\xa6\xe2\x16\x4f\xed\xfd\xed\xbf\x7f\x4c\x93\x36\x96\xde\x15\x3a\x2c\xfc\x6e\xb1\xe4\xd5\x6e\x32\x9e\x45\x7f\x5b\x05\x39\xe8\xa6\xb7\x5e\x6f\x5f\x34\x72\x2f\xd2\xfa\xe3\x55\xd4\x2e\x38\x39\x0d\x6b\x4c\x36\x1c\x4d\xe7\xa7\xac\x0f\x77\x15\x7e\x74\xf9\x55\xa7\x8b\xc5\xa4\x67\x46\xac\xba\x9d\x9a\xab\xfe\x88\x46\xa8\x41\x8f\xfc\xed\x9f\x99\x30\x38\x27\xc9\x4f\xfd\x62\x74\x8f\x5b\x0a\xa5\xd0\x1c\x1e\x67\x75\x24\x45\x62\xa7\x7b\x36\xf7\xc0\x6d\xa5\x73\x68\x06\x47\xb1\x93\x0f\x66\xe5\x24\x66\x3e\x2c\x29\xd8\x8e\xd6\x42\xf6\x15\x73\x1e\x0e\x68\xce\x17\xf6\x09\xfc\xe5\x3d\x02\x79\x33\x40\xd7\xc4\x7f\x41\x7f\x40\xa3\x1a\xdd\xe8\x0f\x78\x7b\x35\x9f\xc0\x3c\x28\xfb\x8e\x6b\xa3\x2a\xb7\x45\x5a\x48\xb4\xbf\xcd\xa6\x15\x27\x7a\xb8\x40\xcc\x65\xe4\xb6\xa6\x9c\x9e\x16\x97\xf0\x8a\xb2\xf1\xff\x58\x6d\xf8\x8b\x2a\xae\xf5\x6e\xd7\xcb\x8b\x45\xcf\x9e\x2c\x0a\xab\x83\xff\x7a\xfd\xe6\x55\xcf\x98\xc7\xd6\x4f\xcb\xba\x29\x77\xd3\x9c\x9e\x82\x45\xe7\xc2\x92\xa9\xb0\xf4\x8a\x1e\xdb\xa0\xb8\xe1\x9d\x7b\xe1\x1f\x65\x46\x86\x7d\xc0\xbd\x73\xe5\xd5\xd2\x43\x15\xf3\x52\x19\xca\x4b\x85\x5c\x43\xed\xb6\xef\x7b\x76\xdd\x43\xd3\x87\x2f\x42\xfa\xc0\x33\xbe\x2a\x6b\x76\x9c\xcb\x52\x20\xe2\x54\x2a\xd0\x86\x95\xc9\xad\xb9\x17\x21\xbf\xa0\xe9\x7b\x18\x28\x1e\xf4\x77\x37\x0b\x1c\x62\xe9\xad\x6d\x2a\x95\xe3\xb4\x6d\x19\x2e\x76\x79\xb0\xe1\x85\x35\x7f\x11\x2f\xbc\xa0\x76\x9a\xf7\xc9\xd1\x2e\xa5\xff\xe4\xa4\xe7\x28\x8b\x6e\x38\xfa\x19\xe4\x66\xf6\x47\xb4\x44\x3f\xc9\x13\x3f\x76\x17\x86\xc8\x9f\xce\xe7\xfb\xbf\x73\xed\xaa\x1c\x4e\xce\x5c\xdd\xb7\x0a\x65\x05\xa5\x2b\xb3\xe7\x5e\x56\xbb\x40\xc8\x3e\x79\x90\x41\x85\x59\x3b\xa7\x5a\x03\x68\xb6\xfc\xf1\x98\xc1\x0d\xcc\x6a\x68\x26\x6b\x94\xb7\x6b\xb7\x17\xd2\x37\x0b\x36\x01\xcb\xfc\x6d\x2b\xc3\xce\xf6\x6f\x23\x31\xe2\x10\xab\xb4\x7a\xb5\x98\xba\x68\x7d\xc4\x74\x89\x71\x4c\xeb\xed\x5b\xe2\x40\x2a\x6e\xd2\xe1\xd6\xb5\x1e\xaa\xb8\xab\x0e\x66\x30\x58\x0a\x33\x68\xcd\x9e\xe7\x20\x4a\x05\xac\xbd\xbf\x17\xe4\x48\x6c\x69\x49\xaa\x74\x45\x4b\x8b\x2a\x4d\xea\x6e\x1b\xa9\xe9\xd2\xde\xdb\x1a\x81\x52\x95\x5f\xdb\xa3\x02\xdd\x2a\xbf\xb6\x47\x55\x0a\x53\xf6\xb4\xd6\xc6\xf4\x15\xb1\x3c\xbf\xdd\xd9\x2a\xbe\xb8\x38\xaa\x6f\x65\xb8\xce\xdb\xdf\x88\xf9\xfc\x3a\x6f\x15\x76\xf6\xc6\x70\x30\x83\xd3\x3c\xdc\x2b\x4c\x64\xcd\xbb\xec\x43\x51\x85\x72\x84\xc1\x1f\xc8\x47\x20\x68\xdd\x06\xee\x9e\xdf\x0f\xab\xb1\x77\x56\x28\xc8\x59\xc7\xed\x63\x6e\xef\x13\xf7\xc5\xad\xde\x1c\x61\x09\x5e\x8f\x8c\xf7\xa5\xbc\x4a\x42\x45\x14\xe9\x4c\xb9\x49\x8e\x6a\x42\xd8\x87\xcf\x9f\x44\x41\x93\x87\xd3\xfb\x82\xe3\x51\x8d\xfa\x52\xbd\x73\xd7\x25\x12\x1b\xe1\x1b\x56\x3a\xae\x5c\xf7\xd0\x7d\x26\x36\x45\xab\x56\x41\x5d\x89\x46\xa2\x2d\x49\x95\xd6\x66\xfd\xe1\xee\x3e\x8a\x3b\x25\x50\x9b\x83\xc9\xb7\xeb\x61\x8d\xaa\x31\x08\xb7\x27\xd6\x1f\x75\xaf\x63\x7e\x1e\x3d\x66\x0d\xf3\x0b\xed\x35\x1b\xe0\xd1\x1c\xb9\x7c\x1e\x41\xb0\x74\x2d\x7d\x2c\x32\x9f\x0f\x27\xff\x1d\x00\x00\xff\xff\x6c\xb6\x54\xe9\xcf\x41\x00\x00" + +func contractsStandardExamplenftCdcBytes() ([]byte, error) { + return bindataRead( + _contractsStandardExamplenftCdc, + "contracts/standard/ExampleNFT.cdc", + ) +} + +func contractsStandardExamplenftCdc() (*asset, error) { + bytes, err := contractsStandardExamplenftCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "contracts/standard/ExampleNFT.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xee, 0x18, 0xbe, 0x2e, 0xc1, 0xd4, 0x88, 0x60, 0xfc, 0xaf, 0x1a, 0xa8, 0x6b, 0x94, 0xb, 0x58, 0xba, 0xa1, 0x80, 0x75, 0xb4, 0x68, 0xb3, 0x7f, 0xd6, 0x52, 0x56, 0xc7, 0xc5, 0xf9, 0x94, 0x1c}} return a, nil } -var _contractsStandardFusdCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x59\xcd\x92\x1b\xb7\x11\xbe\xeb\x29\xda\x3a\x44\xdc\xf2\x8a\xd4\x21\x95\xc3\x96\x64\x7b\x13\x4b\x55\x3a\x24\xb5\x65\xc9\xf1\xd1\x85\x99\x69\x92\x88\x66\x80\x09\x80\x21\x45\xbb\xf4\xee\xa9\x6e\xfc\x0c\x00\x0e\xb9\xbb\x95\xbd\x2c\x39\x83\xfe\x41\xf7\xd7\xdd\x1f\x40\x39\x8c\xda\x38\xf8\x30\xa9\x9d\x6c\x7a\xfc\xac\xbf\xa0\x82\xad\xd1\x03\xbc\x5c\x6f\x8a\xa7\xeb\xb6\x6b\x5f\xbe\x78\x31\x4e\x0d\xb4\x5a\x39\x23\x5a\x07\x1f\x7e\xfd\xf4\xf3\x5d\x25\xfc\xe7\x8b\x17\x00\x00\x9b\x0d\xbc\x3f\xa0\x72\xe0\xf6\xc2\x81\xb4\x80\x83\x74\x0e\x3b\x38\xee\x51\x81\xdb\xe3\xac\x45\x5a\x68\x0d\x0a\x87\x1d\x4b\x92\x05\x64\x51\x56\x68\x3f\x2a\xe9\xa4\xe8\xe5\x1f\xd8\xad\xa4\xff\xfc\x69\x1a\xc7\xfe\x74\x07\xbf\x7e\x90\x5f\xff\xf6\xd7\x9b\x27\x59\x64\x5d\x20\x0c\xc2\x51\xba\x7d\x67\xc4\x31\x6c\x54\xc0\xbf\xc5\xd4\xbb\x45\xdb\xbf\xc5\xa5\x2b\x31\xe8\x49\xb9\x68\xf2\x96\x45\xef\xe0\xbe\xeb\x0c\x5a\xfb\xe3\x73\x5d\xe8\x70\xd4\x56\xd2\x1b\xa7\xaf\x3a\xf0\x73\x5c\x78\xe6\x80\xd3\xcf\x34\xaf\xf0\x98\xbb\x30\x48\x75\x29\xe2\xff\xe4\x57\x95\xc5\xd9\xc6\xe7\x3d\x82\x75\xda\x88\x1d\xc2\x28\xdc\x1e\xb6\xda\x70\x46\x45\x37\x48\x05\x06\xad\x9e\x4c\x8b\x49\x75\x8f\x0e\xee\xe9\xd5\x27\x2f\xf4\x20\xdc\xfe\x0e\xb2\x2f\x8b\x9a\x1f\xa2\x66\x76\xd4\xd8\x57\xc0\x6e\x99\x07\xa3\xbf\x9e\x0a\xdd\xd9\xf3\x27\x59\x18\xa7\xa6\x97\xed\xec\xfa\x92\x01\x68\xc5\x28\x1a\xd9\x4b\x77\xd1\xd6\x03\xab\xf1\xa6\xe6\xcf\x4f\xc9\x84\xe0\x5c\x78\xb3\x29\x5c\x97\xcb\xc0\xdb\xfc\x87\x7f\xb7\xca\xf2\xa0\x9d\xe8\xc1\x72\x2d\x80\xde\xc2\x76\xb2\x1d\x48\x05\xf8\x55\x5a\x87\x2a\xcb\xc0\x41\x18\x70\xb4\xba\x2c\x9c\xa4\x69\xc6\xdf\x66\x93\xfc\x17\xed\x1e\x26\x8b\x86\x33\x82\x16\x84\x02\xa9\xac\x13\xaa\x45\xb2\xa6\x55\x7f\xe2\xac\xb3\x30\xd9\x75\x7b\x94\x26\xe6\x2f\x0f\xf8\x76\x52\xad\x93\x5a\xd9\xb0\x2a\x88\x10\x0a\x77\xfa\x80\x46\x61\x07\x8d\x57\x36\x1a\x04\xa1\x3a\x18\xb5\x75\xd4\x21\x3a\xc9\x82\x51\x9b\x54\x55\xb7\x89\xdd\xe4\xc4\xda\x5a\xd1\xf7\xd8\xad\x73\xdb\xed\x1e\xdb\x2f\x16\xf6\x62\x1c\x29\xf2\x0e\xcc\xa4\x9c\x1c\x90\x25\xf1\x80\x06\x44\xf2\x8f\x53\x50\xa8\x88\x9a\x7e\x09\x49\xa2\xf7\xca\x6f\xbd\xc1\x98\xae\xb8\x2b\x6a\x68\xf8\xd5\x51\x70\x8a\xfe\xc6\x18\x20\x1f\xa3\x36\xdf\x01\xb6\x52\xb1\xec\x2d\x58\x4d\xaf\x0d\x43\x40\x69\x38\x8a\x13\xe3\x52\xc0\x20\x7a\xd9\x4a\x3d\x59\x9f\x08\xa7\x83\x49\x1f\xc0\x14\x15\x3d\x05\xa3\x52\x81\x90\x66\x0d\xf7\x60\x47\x6c\xa5\xe8\x03\x76\x66\x90\x29\xc4\xce\x92\xa2\x66\x76\xc1\x69\xc6\x62\xd4\x36\xf7\x89\x22\x0a\x84\xa3\xa4\x86\xed\x57\x9d\x7f\xfd\x60\xf4\x41\x76\x68\x6e\xab\xe7\xbf\x60\x8b\xf2\x70\xfe\xfc\xef\xa2\x67\x30\x85\x89\x11\xcc\xef\x75\x4f\x1e\xee\x11\x9a\xf0\x5e\x6f\x41\x70\x00\x6c\xf0\x2b\x2d\x8f\xd8\x0e\x2b\x4b\x5c\x27\xc8\xc4\xf1\x51\x28\x25\x24\xc4\xdd\x70\x50\x29\xff\x04\x8c\x24\x4b\x82\xab\x4a\xf3\x0d\xfc\x99\xde\xd3\x9f\xc5\x7e\xbb\x8e\x2a\xdf\x45\xe5\x69\xc9\xb7\xc2\x93\x38\x77\xb2\x67\xf9\xeb\x0f\x11\x85\x1e\x2f\xe2\x4b\xac\x39\x87\x3b\x82\x29\x77\x63\x10\xfc\x50\x98\xdd\x34\x60\xc8\x59\x44\x95\xea\x92\x09\xeb\x95\x04\x19\x1e\x73\xa9\xee\xd6\xb9\xd0\x47\x17\x20\x65\x43\x57\x72\x48\x8c\x40\x98\x53\x28\xd2\xd8\xc0\x26\xeb\x91\x42\xe9\xc9\x15\x90\xda\x41\x2b\x3c\xa5\x95\x0d\x4a\xb5\x03\x67\x84\xb2\x5b\x34\x06\xbb\x35\x59\x31\xe8\x26\xa3\x7c\x62\x15\x1e\xfb\x53\xae\x24\x16\x52\x30\xa9\x8b\x72\x62\xbd\xbe\x2c\xa9\x52\xa4\xe3\x1a\x6c\xb2\x21\x9a\xab\xc2\xde\xe2\x91\x8a\x69\xbd\x14\x66\x02\xcc\x76\x52\x29\x4e\xf5\x8c\xbb\x83\x9f\x4a\x8c\x7a\x8f\xae\x26\xbd\xf8\xfa\x3a\xc4\xbc\x10\xa0\xe6\x7f\x91\x50\xf8\xff\x91\x50\xb0\x32\x7d\x54\x68\x7e\x5c\x0b\x3f\xdd\x6f\x0a\x5d\x3e\x8e\xf0\xf6\x75\xde\x09\x66\x98\x7a\x6d\x37\x17\x10\x18\x22\xf6\x1c\x00\x86\x9c\xe8\xe6\x3f\xd8\xd6\xe8\x63\xc8\x89\xae\xb3\x45\xbd\x39\x9b\x8a\x2c\x64\x32\x2b\x64\xfa\xca\xdb\xb3\xcb\x60\x94\x16\x44\xdf\xeb\xa3\x07\x5b\x87\xd6\x19\xed\x27\x83\x25\x83\xde\x99\x06\x5b\x31\x59\x9c\x21\x5d\x54\x19\xf9\x98\xc1\x98\x00\x8b\x26\xda\x0e\x8d\x8d\x47\x03\x8b\xbe\x9a\xbd\xdd\x8b\x62\x23\x0d\xa2\x22\x10\xda\x69\xc0\x8e\xb7\xca\x4d\x7a\xab\x79\xd0\x04\x04\xb2\x7f\x71\x5e\xe4\x08\x0b\xa1\x5e\xf9\xb4\x2e\xa1\xaa\xee\x25\x44\x2f\x0e\xbc\xbf\xb7\xaf\x03\x33\xb5\xdf\xc1\x4f\xc4\xb1\xd7\xe5\x2e\x1f\x03\xe1\xf7\x5e\xcf\xba\x6e\x47\x15\x16\xcf\xb9\x65\x21\xe6\x29\xe6\xa3\x80\x2c\x64\xe0\x1d\xbc\x59\xbf\x29\xde\xc7\x1c\x1e\x8a\x2d\x64\xb8\x0c\x0b\x56\x75\x3c\x78\xe3\x19\x6b\x81\x77\xe7\x8f\x5e\x17\x1b\xcf\xb4\x67\x36\x52\x7f\x79\x3f\x8c\xee\xb4\x44\x75\x4a\xe0\x97\xfd\xd0\x23\x8e\xfa\x05\x88\x1c\xc8\x7f\xa0\xd1\x69\x9e\xab\x2e\xf5\x37\x39\xf7\x2f\xd1\xf7\xd4\x09\x43\x1f\xa3\xa9\xcc\x53\x7c\x98\xac\xef\x67\x34\xb0\x6d\x22\x1f\xb9\x32\x66\x5c\xac\xc4\xab\x4d\xad\xb1\x66\x59\xf4\x40\x9b\xce\x73\x03\x2e\x1c\xff\x3e\x29\x6b\x5b\x9e\x00\x7e\xe0\x8b\xa6\xe7\x9a\x34\x7e\x20\x47\x8c\xda\x40\x1e\xc2\x78\x05\x77\x1a\xf1\x6c\xf4\x13\xa6\xeb\x30\xae\xb8\x5f\x26\x7c\x66\xf9\x7b\xa4\x4b\xbd\x59\xbf\xb9\xa9\x52\xe4\x89\xca\x05\xda\x15\xdb\x4f\x18\x05\x8a\xf9\xca\x02\x51\xe1\xb2\xf6\xa7\x90\x40\x5a\x79\x5b\x4c\x28\x85\xb5\x98\xa7\x27\xd0\xef\x18\x21\xee\x1a\x33\xe9\x87\xa3\x21\xc6\x38\x33\xa7\xcb\x5c\x28\x50\xac\x92\xc5\x90\xf6\xcf\x25\x59\xb9\xd6\x6c\x69\xb9\xcd\x36\x74\xcb\x6d\x95\xfc\x1c\xa2\xbf\x2e\x63\xfb\xb7\xf5\xdc\xcf\xa6\xeb\x70\x09\x7f\xd7\xe6\xe1\xec\xee\xd2\x44\x5c\xca\x30\x4b\x1b\xac\x9e\xd0\x5f\x20\x1d\x3f\x50\x96\xef\xe0\xe5\xbd\xff\xea\x8f\x9b\x1e\xfc\x0d\xc2\x8e\x71\x41\xc7\x46\xa1\xb8\x96\x5e\x16\x7a\xbe\x3d\xbb\x13\x7c\xff\xc8\xe0\xad\xce\xb4\xf5\x9c\x7c\x02\x68\x2f\x8c\xd6\xf0\xaf\x80\x04\x23\x62\x2b\x12\x38\xb2\xf3\x62\x16\xb0\x18\x7c\x8b\x2e\x1c\xf1\x12\xfc\x56\xad\x18\xef\x60\xfe\xfe\xf6\x2f\x7e\xc5\x0f\xcb\x65\x33\x9f\x89\x2f\xd7\x0e\xcd\x41\x82\x43\x81\xf2\x54\x50\x0d\x26\x86\x77\xad\xb6\xd2\x0e\xc3\x99\x86\x0f\x4c\x49\x9b\xc1\xd1\x20\xcd\x69\x3b\x0f\xc8\x1e\xdd\x7c\xba\xe3\xd2\xcc\xce\x72\xa9\x75\x4d\x4a\xf6\x84\x07\xd1\xf7\xa4\xe6\xa0\xbf\xf8\x02\x65\xfc\xce\x06\xe4\x96\x0f\x30\x34\x6f\x2f\xd5\x21\x87\xe2\x6e\x31\xee\x45\xd1\xb4\x2d\x5a\xbb\xa2\xe9\x71\x43\xac\x52\xe9\x46\x77\x27\x66\x8f\xec\x7b\xab\xc7\x53\xa8\xa2\x64\x9d\x0a\x8d\x68\x87\xcc\x6a\xa9\xd0\x43\x47\x91\xa1\xca\xe4\x62\x16\x7f\x2c\x7c\xb9\x57\x27\xad\x82\xd9\x38\x16\x6e\xa1\xa1\x43\x5d\x3c\x63\xfb\x9e\xc6\x2b\x3c\x36\x43\xd3\x49\xde\x49\xb4\x45\x53\xb0\xa1\x69\x9c\x46\x04\x7b\xb2\x0e\x07\xa6\x32\xce\x08\xa9\x6c\x6c\xf6\x81\xaa\x07\x6e\x9d\xe7\xe8\x9c\xcf\x3c\x0b\xa4\x4b\x84\xb9\x0e\x0c\xbc\x23\xef\x97\x08\xc1\xff\xd7\x94\x52\x15\x2f\x9b\xfd\xae\x58\xbc\x6e\xb4\x31\xfa\xb8\xba\xa9\x1e\x9f\x9b\xbe\x42\xac\xf9\xa0\xf8\xd4\x3d\x2b\xd9\x5f\xe8\x20\x89\xa7\x5c\xae\xe9\x4b\x44\x25\x93\x48\xe5\x7a\x19\x55\x94\xe5\xf2\xaa\x4b\x29\xed\x3b\x34\x13\x1d\x3d\xb9\xa4\x33\xc3\xff\x6d\xce\x50\x16\x90\x39\xfa\xe3\x3f\xfb\x76\x85\x3e\x64\x96\x99\x3f\xe4\x9e\x2c\x10\x88\x12\xf0\x41\xac\x0a\x1b\x5f\x2e\x4a\x02\xb7\xd3\x35\x85\xb8\xaf\x7a\x16\x93\x24\x9b\x5d\xc0\xc5\xdb\x90\xfc\xee\x6d\x16\xff\x0d\xe1\x28\xfb\xde\xef\xf7\x28\x14\xd5\x64\xe2\x0e\x5b\x6d\x40\xe9\xa3\x8f\xea\x20\x77\x7b\xc7\xed\x89\xb9\x58\xd7\x81\x26\xf6\x30\xf6\x82\x4d\xe3\x40\x0d\x6f\x3b\xb9\xc9\x60\xd1\x52\xfd\xc6\x36\x21\xdc\x3e\x0e\xd6\x99\xa9\xa5\x95\x80\x8a\x48\x9b\xaf\xd8\x24\xf6\xb1\x43\x6e\x94\x47\x84\xa3\x9e\xfa\x2e\xc6\x88\xcb\x7a\x96\x95\x0a\x04\x58\xa9\x76\xfd\x7c\x05\x77\x0b\x3b\x54\x68\xfc\x6a\x7f\x7d\x6b\xe7\xfb\x81\x40\xf0\xf3\x44\xb7\xa2\xa5\x17\x14\x82\x40\x12\xa5\xda\x6a\x33\x84\x0b\x13\x1d\x3c\x04\x14\xd6\x77\xee\xd6\xbf\xa1\x90\x7c\x72\x46\xaa\xdd\x86\x6f\x72\x5b\x3d\x1c\xd0\x58\x7f\xcb\xa6\x5e\x39\x38\xa1\x63\x36\xa3\x8d\xab\xee\xdb\x8a\xae\x5e\xe4\xb6\x6a\xe2\x7e\xdb\xff\xc2\x63\x46\x1e\xe1\x11\xa6\x55\x17\x4d\x45\xf0\x52\x62\x28\x92\x7b\x0e\x6e\xe3\xef\xa4\xe9\x0c\x48\x75\x31\x29\xf9\xdf\x29\x5c\x7c\x07\x9e\x49\x44\xdc\xf9\x8b\xdd\x7c\xb6\xf2\x5d\x85\xe7\x91\x5d\x79\x23\x55\x96\x6c\x00\x60\x30\xc2\x6f\x4b\x72\xfa\xca\x46\x33\xe7\x4e\x4a\x0b\x1d\x41\x32\x74\xef\x8a\xd5\x9a\x49\x29\xa9\x76\x77\xc5\x8d\x8d\x11\xca\x0a\x7f\x21\xbb\xd9\x4e\xb6\xdb\x78\xa1\x8d\x45\x37\x8d\xbf\xd3\x93\xdf\xfd\x93\x75\xdb\xb5\xd5\x5d\x8f\xca\x8a\xfe\x79\x46\x58\x66\x13\x8e\x1c\x57\xac\x9c\x8d\x81\x2a\xcb\x59\xd3\xa8\x5a\x2e\xb3\xbd\xfa\xb2\x3c\x5f\x70\xa1\xa9\xac\x2e\x71\xba\xb3\xc6\xce\x4d\xbd\xfe\x29\x03\xde\xc1\x26\xa4\x87\x77\x7a\x9f\x48\x4e\x12\x59\xfc\xd5\x80\xe4\xfc\x4f\x11\x2c\x56\x77\xfd\x25\xe1\x2b\x56\x73\xf1\x52\xbe\x24\xce\x74\x3c\x4f\xef\x7b\x74\x21\x97\x73\x4c\x8a\x82\xcb\x42\xc3\xba\x42\xca\xd7\x56\x1c\x70\xf5\xf6\x35\xcb\x66\xf7\x04\x75\x68\x6e\x8a\x72\x7d\x4f\xf9\x11\x2a\xfc\xaa\xc1\xd5\x68\xf7\x3a\xde\x55\x16\x57\xe6\x47\x61\xb3\x8b\xdb\xb9\x7a\x32\x42\x7f\xe5\x67\xc1\xec\x78\xf9\xed\x7f\x01\x00\x00\xff\xff\xab\x8d\xa4\x47\xe1\x1c\x00\x00" +var _contractsStandardFusdCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x39\x4f\x6f\xdb\x38\xf6\xf7\x7c\x8a\x37\x39\xcc\x48\x98\xc4\xce\x0f\xf8\x61\x0f\x46\xdc\x4c\x9a\x34\xd8\xc3\x14\x5b\xb4\xe9\xec\xa1\x28\x76\x68\xe9\x39\xe6\x86\x26\xb5\x24\x65\xc7\x53\xe4\xbb\x2f\x1e\x29\xc9\x14\x45\x39\x6e\x66\x17\x58\x1f\x12\x9b\x7a\xff\xff\xf3\x89\xaf\x2b\xa5\x2d\xdc\xd5\xf2\x81\x2f\x04\xde\xab\x47\x94\xb0\xd4\x6a\x0d\xa7\x93\x69\xef\x74\x52\x94\xc5\xe9\x49\x03\xff\x1e\x2d\x2b\x99\x65\xbf\x71\xdc\x9a\x0e\xbe\x77\xda\x83\xef\x51\x4a\x23\x8f\x83\x78\x4a\x27\xac\x28\xd0\x98\x8c\x09\x91\x43\xa1\xa4\xd5\xac\xb0\x70\xf7\xf9\xd3\xed\x2c\x12\xff\xdb\xc9\x09\x00\x40\x08\x8f\xd2\x72\x2b\x70\x8d\xd2\xc2\x7b\x2e\x2d\xea\x0f\x5a\x3d\xed\xfe\xb6\x95\xa8\x3d\xf4\x74\x0a\xef\x36\xf4\xd8\xae\x98\x05\x6e\x00\xd7\xdc\x5a\x2c\x61\xbb\x42\x09\x12\xb7\x60\x89\xb8\x01\xa6\x11\xd6\x44\xa2\x1c\x72\x71\x04\x9c\x10\xc6\x71\x29\x33\xb6\x56\xb5\xb4\x33\xf8\x7c\xc7\x9f\xfe\xf2\xff\x79\xc7\xeb\x7e\x85\x60\xac\xd2\xec\x01\xa1\x62\x76\x05\x4b\xa5\xc1\xae\x10\x58\xb9\xe6\x12\x34\x1a\x55\xeb\x02\x07\x2c\x04\x5a\xb8\x26\x90\x4f\x1e\xf9\x03\xb3\xab\x19\x04\x3f\x92\x1c\x3e\xb4\x1c\x9c\xe0\xda\xfc\x14\x1a\x21\xc9\x23\x78\x7e\x14\xa7\xaa\x5e\x08\x5e\xec\x55\x49\x31\x82\x82\x55\x6c\xc1\x05\xb7\x2f\xf2\xfc\xe0\xc8\x79\x96\xfb\xef\x7b\x8e\xca\x32\x01\xa6\xae\x2a\xb1\x03\xb5\x84\x65\x6d\x4a\xe0\x12\xf0\x89\x1b\x8b\x32\x61\xb7\x0d\xd3\x60\x09\xeb\x93\x43\x6a\x1d\xd2\x51\x3c\x6f\x3e\x40\x11\xf7\x11\x8d\x12\x1b\xd4\x14\x57\x85\xe5\x4a\x1a\xa7\x53\x3f\x6e\x5b\x8c\x21\x2b\x8e\x5b\x58\xd6\x12\x1e\xd0\xde\x34\x71\xea\x50\xb2\xd6\xab\xf7\xbb\x0a\x67\x40\x7f\xaf\xf2\x19\x7c\xa1\x2f\x5f\xe1\x9b\x23\x44\x1f\x8d\xb6\xd6\x12\xbe\x74\x07\xf4\x21\xa0\xcb\x03\x39\x72\x77\x4f\xff\xdf\x64\xf9\xd9\x77\xa2\xdd\x72\x53\x09\xb6\x7b\x05\xe6\x6f\xac\x16\xf6\x96\x59\xf6\xdd\xb8\xf7\x7b\x4f\xbc\xc9\xf2\x0e\xf5\xab\xfb\xf6\x3c\x4c\x5f\xb2\xa6\xf6\x4e\x09\x2d\x9a\x32\xe8\x99\xb3\xff\xfe\x20\x9f\xc1\xb5\xdc\x7d\xb2\xba\x2e\xec\x55\x60\x64\xb3\xe5\xb6\x58\x75\xc0\xc1\x13\xfa\x14\xcc\xe0\xf1\x26\x9f\xf5\x70\x03\x17\xbe\x88\x9c\x0d\x30\xe9\xb3\xb4\x8d\x53\x66\x60\x50\x2c\x27\x2f\xab\x2e\xb9\x88\x15\x3f\xd6\xeb\x39\x30\xf3\xc3\x61\x49\x1b\xe0\xab\xb3\x11\x69\xbb\x40\xf8\xef\xc9\x1b\xc6\xda\x11\x12\x77\xe0\x57\x03\x91\xf3\xd7\x38\x7a\x6f\xae\xa1\xaf\xa9\x74\xad\xb1\xe4\x0c\xe6\xfd\x12\x31\x79\x4f\xa7\x69\x17\x3b\xc3\x71\x81\xb3\x08\xe5\xaf\xf7\xf7\x1f\xee\xb8\xc0\x71\xac\x5a\x8b\x19\x9c\x9e\x26\x9f\xe7\x69\x0f\x39\xe9\xbc\xa5\x13\x88\xf9\xb8\x46\x26\xad\x92\xc9\xbe\xb8\xc7\x5f\x87\xa8\xc7\x04\x7e\x63\xcc\xb4\x8a\x92\xad\x49\xcc\x3b\xa1\xb6\xf0\xf9\xd3\xed\x69\x5a\x23\xb3\x5b\x2f\x14\xd9\xe1\x6e\x1c\xa6\x44\x53\x68\x5e\x51\xfd\x9e\xc1\xe9\x2d\x56\x1a\x0b\x46\x1d\x7d\x83\xda\x70\x25\xa9\x71\xb4\x6c\x26\x70\x8b\x1b\x14\xaa\x42\xed\x3b\x3c\x2b\x37\xdc\x60\x09\x56\x81\x54\x16\x6a\x83\x60\x57\xdc\xec\x07\x0f\x26\x77\xb0\x56\x1a\x47\x98\xe3\x93\x45\x2d\x99\xf8\xfc\xf1\xd7\xd8\xc5\xef\xf6\x8f\xb2\xd3\xd3\x11\x97\x09\xf5\xa0\xcc\xac\xf1\xc2\x88\x0d\x54\xc1\x99\x30\x33\xf8\xf6\xfc\x9f\x09\xf2\x30\xc7\x5e\x59\xd2\x5a\x0a\x69\xdf\x9a\x70\x92\x98\x36\xbf\xa6\xd4\xbc\x1d\x62\x5a\x4d\x8d\x05\xf2\x0d\xea\x06\xcb\x0f\x1a\x0e\xe9\x63\xf3\x64\x2c\xe8\xbd\x6c\x43\xbc\xb7\x4c\x30\x59\xe0\x61\x76\xbf\x72\xf9\x88\x65\x50\x9e\x7e\xa4\x50\x9b\x38\x41\x07\xfd\x2e\xe6\xf9\x2a\xe4\x42\x23\xb3\xf8\x6e\x5d\xd9\x9d\x03\x6c\x87\x8f\x19\x64\xcb\x5a\x66\xf9\x0c\x7e\xf9\xd6\x9f\xc8\x1d\xd8\x73\xd4\xba\x12\x3e\xbb\x3c\x77\xec\x63\x06\xd9\x86\xfe\x06\x52\xfe\xd2\x93\x72\x98\xdc\xf4\x79\x1e\x1e\xbf\x22\xd8\xfa\x03\xc0\x6b\x82\x2d\xa0\x90\x0e\xb6\xde\xb4\xe7\x14\x0b\x4e\x0e\xe8\xf0\x1c\xcf\x61\x92\x8b\x70\x2e\x99\x4e\xc1\x59\xa8\xf9\x31\x98\x55\xda\x46\xe7\xa1\xa2\xbb\x89\x37\x6e\x7b\x43\x69\xc8\xad\x94\x28\x8d\x1b\xfe\x17\x3e\x32\xa9\x32\x31\xaa\x39\xda\x34\xb7\x8e\x0e\x3c\x9e\x69\x1b\x8c\xfe\x3c\xdb\xd0\xe5\x92\x5b\xce\x04\xff\x03\x7b\xc4\x99\xdd\xcb\xe8\x42\x82\x6a\xa1\xe5\x6b\xec\x70\x09\x31\x8b\x28\xe7\x51\x98\xb9\x46\xdf\x92\x9c\xb7\xc4\x03\x2b\x06\x92\x4c\xe1\x86\x09\xd1\xde\xa5\x18\x8d\x73\xce\x24\x5e\x39\xba\x6c\x2d\x6a\x2d\xa9\x32\x73\xe6\x44\xfd\xfd\x2d\xfd\xd6\x13\x3a\xce\xf2\xdf\x29\xaf\x56\xaa\x8c\x8d\xd0\xd6\x62\x3f\x1f\x12\x2c\xb1\x59\xb0\xe2\x31\x8b\xa5\xe5\xcb\xbe\xc0\x6f\xe0\x62\x72\x91\x48\x9c\x38\x4e\x60\x3e\x3c\x3a\xef\x91\xea\x91\x78\x3e\x64\xa2\x8b\xc9\x45\xca\x3c\x63\x57\x07\x7f\x65\x48\xdd\x0f\x82\xd8\x74\xc2\xbd\x70\xcf\x90\x5c\xe4\x2f\x31\x0e\x06\x6c\x37\xad\xfd\xc3\x89\x72\x78\x82\x8e\xc5\xf8\xee\xa9\x8f\xbe\x25\x25\xa3\x88\x79\x40\x4b\xf6\x56\xda\xa2\xef\x0e\x84\x63\x40\xb9\x7e\xce\x84\xd8\x35\xbc\x0d\x30\x10\xdc\x58\xca\x19\x57\xcf\xc0\x3a\x40\x77\x8d\x77\x2d\xbb\xad\xe8\x4e\xe1\xca\x8e\xe4\x52\x60\xf9\x04\x5f\xf2\xc3\x37\x2f\xf5\x5b\xa5\x44\x5c\x73\x69\x60\x32\x2d\x96\x43\x88\xc0\xe7\x71\x93\xee\x43\x7f\x71\xa1\xf2\x80\x8e\x59\x96\x7f\x85\x39\x58\x5d\x63\xca\xd4\x7d\xc4\xa3\x03\x8a\x9b\xa1\x56\x99\x0d\x6f\x49\x24\x68\xda\xbb\xad\x70\x49\xbb\x7c\xb1\x2e\x3a\xaf\xae\x60\xc9\x84\x19\x2d\x00\xd7\xe6\xd1\x50\x16\xba\x15\x87\xdb\x89\x40\xc1\x24\x2c\x10\xb6\xdc\xae\x4a\xcd\xb6\xcd\xda\xc9\xb9\x6c\xd3\x15\xd8\x03\x0a\x5d\x6f\x18\x17\xcc\x55\xd6\xbf\x37\x34\xe2\x75\xcb\x21\xad\x1a\x29\x2e\xe7\xe9\x74\xee\xc9\xdf\x09\x19\x9c\xc5\xe2\xf5\xeb\x7c\x2b\x91\x4f\xad\xed\xa8\x7c\x47\xb5\xf4\xa8\x90\xf4\x7e\x9e\x37\x8a\xa4\x54\xbc\x3c\xf7\x2d\xdf\xb7\xa2\x7d\x45\xf7\x18\x23\xa9\x07\x25\x56\xca\x70\x7b\x40\xd5\xae\x64\x34\xa0\x19\x79\x6e\x4c\x97\xb8\x14\x53\xae\xf8\x44\xbd\x3c\xf7\x2e\xa7\xdb\x5c\x30\x7a\x1c\xad\xfa\xcf\x9e\x4e\xb2\x12\xf7\x9e\x44\xc5\x17\xfc\xe5\xc0\x6a\xb5\x8b\x22\x2d\x0a\xda\x78\x60\x02\x26\x84\xda\x1a\x37\xfb\x53\x77\xa6\xdb\x41\x63\x61\xe6\x56\x84\x1e\xca\x95\x9e\x15\xa3\xca\xf4\x07\x6a\x35\xe8\x8d\xd3\x03\x16\x1d\xcc\x68\xc7\xc6\x48\xe7\x72\xf8\x73\xb3\xde\x73\x34\xeb\xc4\x84\xc6\xc6\x9e\xa4\xf0\x11\xd3\x63\x74\xa9\x74\xbc\x8b\xe9\x88\xc0\x7c\x9e\x92\x7d\x06\xa7\x9f\x65\x57\x16\x83\x26\x00\x1a\xff\x55\xa3\xb1\x58\x9e\x8e\x4f\x77\x63\x39\x72\x31\xb9\xc8\x23\x53\xf8\xfd\xe4\xf8\xc0\xe7\x9f\x47\xc3\xdd\x9a\x4b\x7b\xdf\x9f\xe1\x02\xf7\x4f\xa7\xdd\x8e\xd1\x87\x0d\x81\x9b\x60\xdd\x7c\x06\xac\xf4\xc3\xe1\x9a\xa2\x8d\xca\xa7\x0d\x96\x9f\x67\x21\x25\x26\xcb\xae\x29\x86\x08\x05\x13\x82\xcb\x07\x77\x77\xc5\x27\x3b\x39\x26\xb3\xf7\x62\x27\x6a\xd6\xde\xfc\x91\xab\x8e\x19\x9f\x7e\x4e\x15\x2c\x5c\xf3\x91\xc5\x79\x5c\xab\x8e\x70\xdd\x48\x79\x4b\xec\x15\x3b\xd7\x39\xcf\x2d\x59\xe7\xc4\x60\x09\x1d\xa8\x18\x1b\xc9\xa0\xf5\xe0\x37\xdd\x62\x3b\x2b\x58\x35\x83\xfd\xef\xcb\x1f\x3d\xc4\x9b\x74\x30\xed\x17\xf0\x8d\x2f\xa6\x53\xf8\xd8\x0a\xa5\x16\xff\xc4\xc2\xba\xeb\x01\xb9\x8f\x05\xfb\x73\x1f\x2c\x4d\x07\xad\x9b\x45\x05\xf9\x2c\x08\x9d\x49\x4b\xf0\x7e\x85\x7b\x4d\xf7\x73\x51\x40\x4d\x63\xa5\xd1\x20\x85\x5e\x43\xb3\x44\x81\x94\x4d\x8b\xdd\xfe\xad\x44\x4b\x8f\x4b\x50\xba\xf4\xe5\xaf\x96\x5c\x30\x8b\xba\x99\xc8\x36\xea\xd1\xbf\x1d\x71\xf1\xb6\x67\xc0\x97\x20\x11\x4b\x2c\x27\x2f\xa5\x8f\xb3\xc8\x2c\xe9\x86\x5e\xac\x7b\x0a\xd4\x0f\x72\x30\x0a\xa4\x5a\xa8\x72\x07\x28\x0c\x3a\x15\x0a\x55\xed\x9a\xe0\xef\x84\xa0\xfc\xa8\x0d\x02\x0f\x52\xa0\x47\x87\x2e\x54\xeb\xc8\xa1\x49\x67\x5e\xf5\x64\xb9\x96\x3b\x25\x1b\xb6\x4c\x08\x67\xdd\x33\x58\xd4\x16\x94\x14\x81\xfd\x3c\x84\x0f\xd9\xa6\x56\x74\xd2\x71\x34\xbd\x5c\x36\x4d\xae\x53\x19\x33\x3b\x63\x71\x4d\xe9\x6b\xac\x66\xdc\x65\x37\xa7\x9b\x21\x2c\xd0\xdb\xd9\x5d\xae\x42\x57\x0d\x14\x7c\x5d\xcc\xa6\xe6\x90\xd8\x40\x30\x27\x2d\x0e\x0c\xa2\xf1\xfb\xb6\x3f\x53\x60\xf6\x5d\x2e\x29\xcb\x0f\x3d\xe0\xc9\x42\x69\xad\xb6\x59\x1e\x1d\x0f\x59\x1f\x18\x88\xdc\x5d\xf8\x58\x43\xb4\xab\x02\x48\x34\x52\xf7\xd6\x8e\x93\x07\xad\xd2\xed\xe1\x23\x56\xd6\xbd\x5b\xa2\x5b\xeb\x96\xe9\xd2\x40\xa1\xd6\x15\xb3\x7c\xe4\x3d\x59\x97\x2d\x3d\x72\x74\xbb\x38\x49\x4a\xeb\x24\x8d\x5f\x18\xc2\xbc\xbf\x7d\xbb\xee\xb2\xbb\x43\x49\xbe\x8b\x23\xbc\x60\x8f\x16\x97\xb0\x14\xf2\x01\xae\x21\x7a\x1f\xbf\xdf\x41\xfe\xef\xe2\x82\xa6\xb7\x0e\xc4\x6d\xa7\x7d\xfa\x5c\x9e\xf7\xf3\x29\x78\x97\xe4\x08\xb1\xa2\x20\xc7\x4e\x1a\xb6\x13\xc3\x36\x98\x5d\x9e\x7b\xec\x33\xb0\x6a\x96\x36\x50\xde\xe7\xd6\x8d\xab\xe9\x7e\x13\xcb\x9c\xf7\xaa\xc3\x4d\x38\x20\x52\x60\x37\x53\x22\x55\xa3\xaa\xb6\xc0\x2d\x15\xd4\x46\xc2\xa3\xc4\x77\xe2\x78\xe9\x87\x4b\xd4\x11\xe6\xcd\xfb\xd9\xb0\x83\xf8\x0a\x13\x8c\xac\xf8\x54\x29\x83\x26\x38\xee\xda\xa2\x19\xda\xe3\x86\x55\xed\x40\xde\xca\x19\x56\xb3\x4e\x68\x6e\x4c\x1d\x2d\x40\x7b\xb9\x34\x54\xa1\x7b\x3c\xe2\xcd\x1e\x1b\xa7\x98\x59\x65\xad\x4c\x67\xc0\x6c\x72\xdd\x7b\xd8\x30\x37\x69\xc3\xfc\x64\xa0\xdd\x32\x53\xd5\x2a\xfc\xf2\xa1\x4d\xcc\xd6\x1e\xed\x86\xe1\x7f\xcc\x24\x81\x58\x43\xab\xb4\x6a\xb5\x73\xc9\xf3\xc9\xbf\x03\x00\x00\xff\xff\x45\xec\x27\x6b\x0b\x22\x00\x00" func contractsStandardFusdCdcBytes() ([]byte, error) { return bindataRead( @@ -160,11 +224,11 @@ func contractsStandardFusdCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/standard/FUSD.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x65, 0x90, 0x8e, 0xc8, 0x5c, 0x11, 0xd1, 0xf5, 0x7e, 0x5b, 0x5, 0x5, 0xe7, 0x8, 0x9, 0x9e, 0x10, 0x6c, 0x8a, 0xb3, 0xf0, 0xc2, 0xf4, 0xac, 0x44, 0x68, 0x32, 0xa, 0x1e, 0x4f, 0x56, 0xd5}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x7a, 0x85, 0x49, 0x20, 0x68, 0x3f, 0xd, 0x54, 0x93, 0xbf, 0x37, 0xaa, 0xa5, 0xf3, 0xc9, 0xa1, 0x8, 0x1d, 0xec, 0x67, 0x6b, 0xc7, 0xf7, 0x11, 0x4e, 0xbd, 0x36, 0x50, 0x63, 0x98, 0x2}} return a, nil } -var _contractsStandardFlowtokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\xcd\x72\x1b\xb9\x11\xbe\xeb\x29\x3a\x3e\x24\x54\xad\x44\xe9\x90\xca\x81\x25\xef\x5a\x4e\xec\xaa\x3d\x64\x2b\xb5\x71\x92\xab\x30\x33\x4d\x12\xf1\x0c\xc0\x02\x30\xa4\xb9\x2a\xbd\x7b\xaa\x1b\x3f\x03\x0c\x67\x28\x69\x15\xfb\xb2\xe2\x00\xe8\xdf\xaf\xbb\x3f\x60\x65\xb7\xd3\xc6\xc1\xe7\x5e\x6d\x64\xd5\xe2\x17\xfd\x15\x15\xac\x8d\xee\xe0\xdd\xf2\xa6\xf8\xba\xac\x9b\xfa\xdd\xc5\xc5\xae\xaf\xa0\xd6\xca\x19\x51\x3b\xf8\xdc\xea\x03\x2f\xae\x46\x12\x1e\x2f\x2e\x00\x00\x6e\x6e\xe0\x8b\x76\xa2\x05\xdb\xef\x76\xed\x11\xf4\x9a\x8f\x80\xa3\x4d\x16\xa4\x02\xfc\x26\xad\x43\x55\x23\xef\x27\xe1\x7b\x61\xc0\xd1\xa1\x7f\xf2\x99\x15\xfc\xeb\xb3\xfc\xf6\x97\x3f\x27\x81\x9f\xf6\xa8\x1c\xb8\xad\x70\x20\x2d\x60\x27\x9d\xc3\x06\x0e\x5b\x54\xe0\xb6\x38\xd8\x26\x2d\xd4\x06\x85\xc3\x26\x89\x46\x3e\xca\x16\xda\x9f\x95\x74\x52\xb4\xf2\x37\x6c\x16\xd2\xff\x5d\x2a\xbc\x7c\x91\x46\xef\x88\x30\x08\x07\xe9\xb6\x8d\x11\x87\x10\x3e\x01\xff\x16\x7d\xeb\x26\x75\xff\x27\x6e\x5d\x88\x4e\xf7\xca\x45\x95\x57\x7c\x74\x05\xf7\x4d\x63\xd0\xda\x9f\x5e\x6b\x42\x83\x3b\x6d\x25\xad\x38\x7d\xd6\x80\xbf\xc5\x8d\x27\x06\x38\xfd\x4a\xf5\x0a\x0f\xb9\x09\x9d\x54\x73\x11\xff\x3b\x2f\x8d\x34\xbe\xde\x45\xeb\x8c\x3e\xce\xa8\xf8\xd8\x1b\xf5\xfb\x54\x08\x76\x84\xad\x37\x60\xd0\xea\xde\xd4\x38\x8f\x21\xf6\xc5\xfc\xd5\xaf\x2d\x44\xdb\xea\x03\x36\xf7\xbf\x57\x6d\x45\x66\xbf\x44\x2d\xfb\x97\xd4\x0e\x1a\x86\x4c\xdf\xdc\x24\xad\xa2\xde\x42\x6f\xd1\x80\x75\xda\xa0\x05\xa1\x40\x2a\xeb\x84\xaa\x91\x0a\x51\xab\xf6\xc8\x15\xc3\x87\xa9\x16\xdd\x16\xa5\xdf\x2d\x36\x98\xea\x77\x8b\xb0\xee\x55\xed\xa4\xf6\x15\x3b\x1c\x11\xaa\x81\x8d\xde\x23\xc5\x1c\x2a\x2f\x6c\x67\x90\xbf\xef\xb4\x75\x54\x8b\x8d\xe4\x83\x51\x9a\x54\xa3\x46\x11\xeb\xf6\xc8\xd9\xad\x45\xdb\x62\xb3\xcc\x75\xd7\x5b\xac\xbf\x5a\xd8\x8a\xdd\x8e\xe2\xe5\xc0\xf4\xca\xc9\x0e\xf9\x24\xee\xd1\x80\x48\xf6\x71\xe0\x0a\x11\x51\xd2\xaf\x21\xb4\xb4\xae\xbc\xeb\x15\xc6\x20\x47\xaf\xa8\x75\xe0\x37\x47\xc1\x29\x3a\x09\x67\x8e\x6c\x8c\xd2\x3c\x10\xd7\x52\xf1\xd9\x2b\xb0\x9a\x96\x0d\x27\x4e\x69\x38\x88\x23\xac\x35\x19\xd6\x89\x56\xd6\x52\xf7\xd6\x27\xc2\xe9\xa0\xd2\x07\x30\x45\x45\xf7\x41\xa9\x54\x20\xa4\x59\xc2\x3d\xd8\x1d\xd6\x52\xb4\x01\x68\x03\x34\x14\x62\x63\x49\x50\x35\x98\xe0\x34\x03\x37\x4a\x1b\x2a\xb2\x88\x02\xa1\x28\x89\x61\xfd\xa3\xa6\xbd\xfc\x87\xd1\x7b\xd9\xa0\xb9\x1a\x7d\xff\x15\x6b\x94\xfb\xd3\xef\x1f\x45\xcb\x60\x0a\xcd\x3e\xa8\xdf\xea\x96\x2c\xdc\x22\x54\x61\x5d\xaf\x41\x70\x00\x6c\xb0\x2b\x6d\x8f\xfd\x3e\xec\x2c\x7b\x7d\x82\x4c\x6c\xd4\x85\x50\x42\x42\xf4\x86\x83\x4a\xf9\x27\x60\xa4\xb3\x74\x70\x31\x92\x7c\x09\x8f\x69\x9d\xfe\x59\x6c\xd7\xcb\x28\xf2\x7d\x14\x9e\xb6\x3c\x15\x96\xc4\x0e\x9f\x7d\xcb\x97\x3f\x47\x14\x7a\xbc\x88\xaf\xb1\xe6\x1c\x6e\x08\xa6\xdc\x1d\x40\xf0\x47\x61\x36\x7d\x87\x21\x67\x11\x55\xaa\x49\x2a\xac\x17\x12\xce\xf0\x40\x49\x75\xb7\xcc\x0f\xfd\xec\x02\xa4\x6c\xe8\x25\x0e\x69\xa2\x0b\x73\x0c\x45\x1a\xdb\x4e\x6f\x3d\x52\x28\x3d\xb9\x00\x12\xdb\x69\x85\xc7\xb4\xb3\x42\xa9\x36\xe0\x8c\x50\x76\x8d\xc6\x60\xb3\x24\x2d\x06\x5d\x6f\x94\x4f\xac\xc2\x43\x7b\xcc\x85\xc4\x42\x0a\x2a\x75\x51\x4e\x2c\xd7\x97\x25\x55\x8a\x74\x5c\x83\x55\x36\xae\x72\x51\xd8\x5a\x3c\x50\x31\x2d\xa7\xc2\x4c\x80\x59\xf7\x2a\xc5\x69\xdc\xea\x57\xf0\xa1\xc4\xa8\xb7\xe8\x6c\xd2\x8b\x9f\xd7\x21\xe6\xc5\x01\x6a\xd9\xb3\xa3\xdb\xff\x37\x8e\x6e\x16\xa6\x0f\x0a\xcd\x4f\x4b\xe1\xe7\xe8\x65\x21\xcb\xc7\x11\xee\xae\xf3\x4e\x30\xc0\xd4\x4b\xbb\x9c\x41\x60\x88\xd8\x6b\x00\x18\x72\xa2\xab\xff\x62\x3d\x46\x1f\x43\x4e\x34\x8d\x2d\xea\xcd\xd9\x54\x64\x21\x93\x59\x21\xd3\x4f\x76\xcf\x4e\x83\x51\x5a\x08\xd3\x90\x0e\x87\x69\xcd\xa7\x2c\x29\xf4\xc6\x54\x58\x8b\xde\xe2\x00\xe9\xa2\xca\xc8\xc6\x0c\xc6\x04\x58\x34\x51\x77\x68\x6c\x3c\x1a\xf8\xe8\x9f\x06\x6b\xb7\xa2\x70\xa4\x42\x54\x04\x42\xdb\x77\xd8\xb0\xab\xdc\xa4\xd7\x9a\x07\x4d\x40\x60\x60\x13\xcb\x13\x84\x85\x50\x2f\x7c\x5a\xa7\x50\x35\xee\x25\x2d\x3a\xd8\xb3\x7f\x77\xd7\x81\x03\xda\x3f\xc0\x87\xc4\x91\x97\xa5\xab\xcf\x21\xf1\x07\x2f\x6c\x39\xee\x49\x23\x40\x9e\x52\xb9\xe2\x98\x67\x74\xcf\xa2\xb2\x38\x03\xef\xe1\x76\x79\x5b\xac\xc7\x44\xee\x0b\x17\x32\x70\x86\x0d\x8b\x71\x50\x06\xef\x33\x4e\x0f\xef\x67\xbe\x5f\x17\x21\xc8\xf4\x64\xda\x52\xbb\xf9\xd4\xed\xdc\x71\x8a\xf9\x94\x75\x50\xb6\x47\x0f\x40\x6a\x1f\x20\x72\x5c\xff\x86\x46\xa7\xf1\xae\x9a\xd4\xee\xe4\xd0\xce\x44\xdb\x52\x63\x0c\x6d\x8d\x86\x34\x0f\xf5\xae\xb7\xbe\xbd\xd1\xfc\xb6\x89\x8b\xe4\xc2\x98\x80\xb1\x10\x2f\x36\x75\xca\x31\xe9\xa2\x0f\xda\x34\x9e\x2a\x70\x1d\xf9\xf5\x24\xac\xae\x79\x20\xf8\xf9\x2f\xaa\x96\x4b\xd4\xf8\xf9\x1c\x21\x6b\x03\x97\x08\xd3\x16\xdc\x71\x87\x27\x4c\x80\x20\x3e\x0e\xe3\xe2\xf9\xf6\xf9\x4c\xf7\xba\x5d\xde\x5e\xe6\xb9\x2a\x38\xc7\x7d\xd3\x49\x25\xad\x33\xc2\x69\x93\xc9\x4c\x09\xfd\x05\x0f\x9e\xee\xbc\xa8\xbf\xa5\xbc\x66\xd9\x9a\x64\xf1\xe7\xe6\xc8\x48\xf1\x0c\x93\x5f\xc1\x87\xc0\xc3\x1e\x4f\xcb\xf0\xec\x55\xa0\xf8\x79\x7e\x10\x4c\x5b\x30\x23\xa0\x1c\x0b\xc9\x0b\x7f\x3f\x78\x63\xf8\x46\xb7\x91\x17\x85\xcf\x2b\x66\x00\xf9\x3f\xa7\x22\x35\xbe\xbd\x9c\x8b\x46\x14\x38\xdb\x03\x32\xa4\x9c\xd2\xfc\x38\xee\xfc\x20\xe4\x2a\x10\x84\xbe\x58\x40\xfe\x1a\x40\x93\x25\x92\xe7\x17\xb1\xe6\x04\x82\x31\x81\x0a\x3c\x8d\xea\xce\x5f\x55\xe3\x95\x21\x62\xb1\x1c\x8b\x89\xad\x43\xc6\x81\x27\xa1\x57\x68\xa2\x63\x5f\x4a\x02\x7d\x2e\xc3\xb4\xdd\x66\x7e\x5d\xf1\xa8\x27\xab\xba\xd8\xd3\x5c\xf6\x38\x73\x35\xe6\xa2\x19\xe3\xeb\xe6\x9a\xe0\x39\x70\x0c\xe6\x4e\xb1\xb4\x72\x2a\x8e\xe0\x42\xb7\xc8\xf2\x0b\xfd\x0b\x51\xfe\x31\x88\x59\xdc\x5e\xae\xe0\x9d\x8f\x57\x78\x77\xf0\xcd\xb8\x42\xd8\x30\x8a\x0c\x05\x42\x71\x6f\x7f\x37\x27\xed\x2e\x8c\xdd\x51\xf8\x67\xe4\xb6\x68\xad\x17\xca\x69\x0f\x29\xf5\xa2\x4a\x15\x4f\x6f\x18\x83\x3f\x4c\x91\xd0\x53\x2b\x61\xca\xf4\x67\x19\xec\xe8\x19\x66\x4c\x38\xe1\x4d\x1c\x95\xef\x5c\xd3\x4d\x74\x8a\x84\x8f\xdd\x29\x7e\xcf\x96\x7e\xd6\xe5\xde\x5a\xfa\xd4\xeb\x9e\x2d\xfb\xd4\xd1\x0a\x76\xd9\x1b\xf5\x8a\x62\x0c\xfc\x68\x20\xe4\xf1\x29\xe6\x0a\x70\xbd\xc6\xda\xc9\x3d\xb6\x47\x96\xca\xb7\xaf\x81\xea\xce\x88\xff\x45\x3b\x5c\x79\x76\xee\x19\x45\xf6\x48\x26\x7a\xa7\x3b\xe1\x24\x55\xeb\x11\x6c\x5f\xf1\x3b\x06\x36\xe9\x22\x59\xf4\xaf\xfc\x81\xb6\x78\xdf\x61\x9b\xfb\xda\x69\x73\xb6\xce\x87\x48\x7c\x5f\xb2\x4c\x47\x44\x44\xca\x3c\x37\x9e\xa6\xaa\xa3\x22\x18\x3d\x14\x9e\x22\x3a\x43\x9c\xc7\x34\x61\xe8\xde\x43\x68\x05\xf7\xbd\xdb\x86\x1f\xb9\x63\x8c\xe9\xb2\xc0\x89\x48\xe7\xd1\xf6\xd3\x2f\x0b\x32\x53\xd1\x71\x2f\xce\x26\x09\xf3\x47\xb1\x47\x62\xa2\x52\x15\xaf\x73\xa3\x7c\x14\x21\x9d\xae\xdc\xb1\x81\x83\xc7\xb9\x7f\x4b\xd2\xb7\xb8\xbb\x66\x61\xfe\x02\x71\x13\xf4\xde\xac\x63\x82\x7c\x56\xa7\x7c\x13\x84\x8c\x56\xd6\x50\x8b\x9d\xa8\x64\x2b\xdd\x31\x8e\x0f\x26\xc2\x4d\xfe\x32\xc1\x4f\x71\xf8\x6d\xa7\x2d\xda\xf1\x54\x7d\x08\x84\xf6\x01\x3a\x74\x5b\x4d\xf7\x37\xa3\xfb\x8d\x0f\xd7\x43\x7c\x95\x7a\xe0\x17\x16\xb3\x16\xd3\x54\xa5\x70\xac\x95\xea\xeb\xdd\x1f\x47\x20\x7b\x9c\x7e\xed\x7a\xfa\x71\x51\xa0\xe7\xc6\x7b\x35\x44\x20\x3d\x8b\x15\xdb\x9c\x30\x1b\x74\xb3\x11\x4b\x7b\xbf\x73\xe8\x42\xca\x1f\x60\x2d\xb1\x1d\x45\xee\x63\x5c\xfb\xff\x06\x2e\x88\x7d\x36\x6e\x61\xdf\x9b\xc3\xc6\xfd\x80\x5b\xfb\x80\xf7\xe2\x8e\xb1\x38\x0f\x6f\xfe\x36\x07\x6f\x16\x54\xe6\xe8\x13\xb5\x0f\xa1\xc2\x53\x3c\xa7\xc0\x6e\xf5\x21\x23\x7b\xe9\xc5\xf8\x20\x6c\xf6\x6e\x39\xbc\x6f\x65\x1d\xe8\xcc\xff\x7f\x9a\xae\xd2\xa7\x8b\xa7\xff\x05\x00\x00\xff\xff\xdf\xe6\x02\xab\xad\x1b\x00\x00" +var _contractsStandardFlowtokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3a\x5b\x6f\x1b\x37\xb3\xcf\xf5\xaf\x60\xf5\x90\x4a\xa8\x23\xfb\xa4\x49\x9a\x0a\x76\x1c\x27\x8d\xcf\x09\x90\xf4\x14\xa9\xd3\x1e\xa0\x28\x1a\x6a\x77\xa4\xe5\x31\xb5\xdc\x8f\xe4\x4a\x56\x03\xff\xf7\x0f\x33\x24\x57\xe4\x5e\x6c\x39\x6d\x81\xef\xa1\x7a\x48\xac\x15\xe7\x3e\x9c\xdb\x8e\x58\x55\x4a\x5b\x76\x51\x97\x4b\x31\x97\x70\xa9\xae\xa0\x64\x0b\xad\x56\x6c\x34\x3d\x4a\x9e\x4e\xb3\x3c\x1b\x1d\xf8\xf3\xef\xc0\xf2\x9c\x5b\xfe\xb3\x80\x8d\x69\xce\x27\x4f\x93\xf3\x09\xa6\x7e\xe0\xe1\x23\x0e\xd3\x01\xcf\x32\x30\x66\xcc\xa5\x9c\xb0\x4c\x95\x56\xf3\xcc\xb2\x0b\xa9\x36\x04\x31\x6b\xc9\xf0\xe9\xe0\x80\x31\xc6\x8e\x8e\xd8\xa5\xb2\x5c\x32\x53\x57\x95\xdc\x32\xb5\x20\x10\x66\xf1\x90\x61\xa2\x64\x70\x2d\x8c\x85\x32\x03\x3a\x1f\x13\x59\x73\xcd\x2c\x02\xff\x44\xb0\x33\xf6\xe1\x42\x5c\x3f\x7d\xdc\x20\x7e\xbd\x86\xd2\x32\x5b\x70\xcb\x84\x61\xb0\x12\xd6\x42\xce\x36\x05\x94\x01\x3d\xd7\xc0\x36\xc2\x16\xb9\xe6\x1b\xaf\x56\xce\x7e\xe6\xb5\xb4\x1d\x62\x40\xc8\x88\x77\xf3\x4b\x00\x19\xf3\x95\xaa\x4b\x1b\x28\x1f\x12\x8a\x19\x3b\xcf\x73\x0d\xc6\x9c\x4d\xee\xc9\x4a\x0e\x95\x32\x02\x7f\xb1\x6a\x2f\x46\xbe\x0f\x00\x1d\x46\xac\xba\x27\x1b\x25\x6c\x62\x56\x56\xa2\xb4\x90\xdf\x4a\xfc\x1d\x1d\x69\x51\xde\x8b\x16\x27\x6a\x44\x42\x33\x0d\x46\xd5\x3a\x03\x3c\x95\x69\xe0\xc3\x64\x89\xa0\x7e\xe5\xce\xe0\x0f\x6a\x03\xf9\xf9\xe7\x92\x9f\xd7\xba\xbc\x17\xf9\x97\x04\x10\xc8\xef\x28\xed\xcc\x74\x74\xd4\x50\xe7\x59\xc1\x6a\x03\x9a\x19\xab\x34\x18\xc6\x4b\x26\x4a\x63\x79\x99\x01\xfa\xb8\x2a\xe5\x96\xd9\x02\x1c\x30\xba\xb9\x2d\x40\xb8\xd3\x7c\x09\xcd\xd5\x28\x80\x2d\xea\x32\xb3\x42\xb9\xcb\xb0\x03\xe1\x65\xce\x96\x6a\x0d\xba\x84\x9c\xcd\x1d\xb2\x4a\x03\x3d\xaf\x94\xb1\x78\x05\x73\x41\x80\x01\x9b\x28\x5b\x77\xd0\xf9\x5f\x01\x5b\x32\x79\xc6\xa5\x84\x7c\x1a\xd3\xce\x0a\xc8\xae\x0c\x2b\x78\x55\xa1\xde\x2c\xd3\x75\x69\xc5\x0a\x08\x12\xd6\xa0\x19\x6f\xf8\x23\x05\x26\x28\x02\xa6\xf7\x5e\xc5\xf8\x7b\xe9\x44\x9f\x43\x50\x76\x90\x0a\x23\x06\x5c\x5b\x54\x4e\xf8\x4a\x01\x84\x2c\x88\x3c\x06\x6c\xee\xa2\x2c\x44\x49\xb0\x87\xcc\x28\xfc\x59\x93\x01\x4b\xc5\x36\x7c\xcb\x16\x0a\x19\x5b\x71\x29\x32\xa1\x6a\xe3\x0c\x61\x95\x27\xe9\x14\xd8\x68\x45\xd5\x9e\xa8\x28\x19\x17\x7a\xca\xce\x99\xa9\x20\x13\x5c\x7a\x87\xdb\xb9\x48\x09\x90\x1b\x44\x34\xdf\xb1\x60\x15\x39\x72\xc0\xb6\xbb\x46\x89\x16\x62\x6f\x6a\xd0\x11\x1f\xad\xb8\x38\x75\xd6\xf5\xd1\xd1\x23\x2d\x94\x44\xba\x05\xb0\x39\x97\xc1\x85\x38\x89\x65\x3c\xb5\xe6\x78\x3b\x40\x7a\x88\x34\x38\x36\x0e\x21\xac\xe0\x52\xfc\x01\x09\x72\xb4\x73\xe0\x91\x54\x86\xd6\x45\xb3\x37\xb0\x08\x38\x6e\x61\x9e\xb0\x4f\xcd\xef\xf8\x31\x20\x17\xd3\x80\xf2\x34\x20\x6f\x8e\xdc\xc4\x9c\x1c\xb1\x57\xe4\x39\xe1\x7e\x2e\xbc\x4a\x9c\x70\x68\x59\xba\xad\x39\x5b\x0b\x4e\xac\x7e\x74\x97\x71\x8a\x8f\xc7\x93\x8f\x6c\x05\xb6\x50\x79\x5b\x09\xc1\x89\x26\x88\x90\x50\x20\x99\x39\xcf\xae\xc6\x6d\x6e\xc5\x22\x65\xf8\x39\x3b\x9e\x1e\xb7\xce\xe0\xa7\xc9\x67\xd3\x28\xf3\xb0\xd3\x81\xe7\x0f\x13\xa4\x09\xb2\x9b\xdb\x94\x75\x3c\x3d\x1e\x52\xd4\x12\x2c\x22\x57\xda\x42\x4e\xbe\x72\xb9\xad\xc0\x30\x55\xa1\x95\xb8\x94\x5b\xa6\xc1\xd6\x1a\xc3\x38\x93\xc2\x90\x6f\xaf\xc9\xa7\x2c\x1d\xf4\xf7\x49\x18\xa6\x21\x03\x41\x77\x38\xcb\xa0\xb2\x03\x2e\x24\x60\x43\xda\xeb\xa7\x3b\x9e\xcc\xd8\x27\xfc\x6b\xc6\x5e\x2a\x25\x6f\x5a\x1a\x73\xac\xb0\x4f\x24\xde\x12\x08\x06\x41\xac\xae\xe1\xa6\x4f\xc2\x5e\xd2\xc2\x74\x29\x8f\x2d\x11\xc5\x3f\x27\x8e\x76\xd7\xa0\x74\x86\x9d\x9e\xb2\x94\xfc\x84\x7d\x0a\x8c\x21\x1f\xec\x86\x81\x34\xb0\x7b\xb8\xe0\xf8\xb5\x97\x3d\x34\xc0\xb9\xb9\x32\x88\x1d\xdd\xd0\xe5\x3e\x0a\x6b\xf3\x4e\x25\x41\x4a\x5e\x37\xc9\xe1\x16\xf1\xce\xd7\x5c\x48\x4e\x21\x20\x94\x16\xed\xb4\xda\x2b\xa3\x67\xd8\x73\x71\x72\xda\xef\x6d\x09\xff\x0d\x93\xd1\xb3\xf8\xe7\x8b\x10\xcd\x9d\x9f\xf0\xab\x90\xbb\x2c\x2c\xd1\x55\x1c\x29\x4e\x0f\xb9\x5e\xd6\x2b\x28\x6d\x0c\x8f\xe9\x27\x90\xf0\xce\xe6\x61\xbc\x4e\x7c\xd8\x9b\xc6\x40\x6f\xac\x0f\xcd\xc6\xe7\x66\x0b\x58\x96\x72\xbd\xf5\xc9\x2e\xa4\xf1\xda\xb8\x88\x8b\x01\x31\x46\x80\x68\x57\xaa\x84\x6d\x73\x72\x0e\xa2\x5c\x32\xab\x79\x69\x16\xa0\x35\xe4\x53\xa4\x12\xae\x06\x9e\x2f\x61\x23\xb7\x31\x92\x90\x90\x3c\x49\x95\xa4\x25\xc2\xeb\xd2\x1b\x66\x1c\xd1\x18\xbd\xa9\xd9\x62\x54\xe8\x50\x1b\x4c\x4a\xd3\x3e\x35\x7b\x2f\x48\xe3\x7e\x30\xbc\x8b\x55\x9b\x41\x37\x78\xf1\xa9\x27\x5f\xb4\xef\x5d\x2b\x9c\x24\x5f\x1f\x7a\x83\x1c\x24\x10\x68\x05\xe7\xd3\x6a\x83\x65\x91\x70\x4a\x32\x96\x5f\xa1\x22\x79\x96\x21\xcc\x21\xcb\x15\x2b\x95\xa5\x7a\x2a\xcd\xd3\x21\x1f\x52\xad\x64\xda\xb8\xe9\x2e\x08\xca\x9d\x05\xc8\x8a\xe4\x73\x25\x0b\xe8\x85\xd2\xab\x90\xd4\xf0\x11\x54\x2a\x2b\x9c\xe9\xa8\x7e\x61\xaa\x02\xcd\x77\x95\x4c\x84\xf6\xb5\xc0\xd4\x8f\x39\xff\xd0\x17\x69\x92\x9a\x05\xcc\x8b\xa6\x50\xb5\xcc\xd1\x44\x15\xdf\x92\x0c\xd6\x42\xe9\x7c\x9b\x6c\xdb\x46\xd6\x6f\x8f\xd2\x4b\xc4\x78\xb9\xc5\xda\x62\x0e\x19\xaf\x0d\x26\x4c\x65\x9c\xf8\x5c\x94\x6d\x54\xab\x3a\x2b\xd8\x4a\x61\x51\xa5\x56\x95\x86\x02\x4a\x23\xd6\x80\x69\x8a\xda\xa6\xf6\xf9\xf3\xdc\x95\x6a\x18\xbf\x0f\x91\x37\x03\x81\xec\x46\x48\xe9\xfe\xae\x29\xba\xcf\x81\x69\x58\xa9\x35\xe4\x51\x94\x69\xac\x80\xe4\x24\x58\x88\x3c\x9b\x35\xc5\xdf\x82\xaf\x95\x0e\x5a\x4e\x2b\xc1\x1e\xab\x89\x05\x93\x60\x19\x77\x4d\x44\xf0\x22\xf2\x8e\xb3\x69\x78\xda\x4d\x90\x62\xd1\x80\x7c\x79\xca\x8e\xaf\x17\xcf\xf2\xa7\x70\xfc\xe4\xd9\xd3\xf9\x31\x7f\x74\x9c\x7d\xcb\x1e\x3c\xe8\xc0\xe0\x9d\x48\x60\x1e\x3f\x79\xf4\xed\xb7\xdf\x7d\x03\xf0\xf4\x19\x87\x1c\xf6\x81\xf9\x0e\x32\xfe\x68\xfe\xcd\xb3\xf9\x7f\x3d\x9b\x3f\xc9\x17\x7b\xc1\x3c\x7b\xfa\xe8\xf1\xfc\xc9\xa3\xc5\x77\x79\x9e\xe5\xc7\x8f\x79\x07\xa0\x2b\x1e\x7e\xc8\xf9\x87\x3a\x41\xf7\x7f\xe8\x04\x3d\xb9\x49\x07\x4f\x9a\xfe\x43\x0a\xea\x1c\xbb\x07\xa9\x52\xc8\xc9\x2d\x15\x86\xcf\x15\x27\x0f\xe3\x22\x78\x57\xc3\x39\x5c\x93\x81\xa4\xe1\x83\xdc\x7d\x72\x86\x0f\xa3\x6a\xfe\xff\x90\xb5\x13\x06\x65\x09\x9e\xe7\x26\x29\x46\xad\x69\x2a\x50\x1f\x7c\xa3\x6a\xb7\x89\x4c\xa6\x3f\x7f\x08\xc3\x7c\x43\x88\xc0\x39\x18\xab\x95\x6b\x8a\x0c\x12\x74\xcc\xec\xee\x2e\x44\x5d\x9b\x47\xb2\x41\x1e\xa3\xcc\x83\x39\x06\x9a\xeb\xe2\x6b\x7a\xea\x8a\x08\xf4\xab\x1d\xb7\x05\x4f\x04\x99\x03\x94\x78\x23\x4d\xbd\x82\x9c\x44\xa5\xfe\x64\x41\xe1\x20\x24\x0d\xe2\x2f\xb4\x4a\xac\x55\x1a\x60\x06\xf0\x2a\x1f\x3b\xe3\xf6\x47\xfd\x76\x11\x8b\xf7\xd5\xd5\x7a\x27\x0f\xfd\x34\xc3\x7c\xc9\x5e\xec\x6a\xd3\x54\x68\x76\x47\xa6\xf8\xda\x21\x6b\x0a\x8a\x7f\x12\x46\x8a\x2c\x35\x49\x33\x8b\xf9\x27\x61\xfc\x93\x30\xd2\x4f\x14\xc5\xbb\x13\xbb\xe4\x8e\xb9\xc1\xdd\x5f\x98\x35\xf6\xa2\x77\x47\xea\x48\x20\x5a\xdd\x29\x7e\x42\xb4\x4d\x7b\x9d\x56\xdb\xf4\xdf\xe8\x1a\x52\x92\x2b\x85\xe9\x31\x73\x13\x66\x81\x2e\x88\x79\xc1\x4d\xb2\x9a\x70\x15\xc3\x27\xb8\x5e\xf8\x64\x76\x8e\x29\x45\x73\x9a\x1a\xbb\x36\x98\x82\x0a\x55\xfe\x05\x24\x78\xd7\x34\xa8\x66\x97\xae\x27\x93\x35\xb8\x7b\x32\x07\xd7\x53\xcc\xb7\x09\x81\x9d\x64\x6b\x90\x18\x4d\x28\x10\x5d\x95\x6a\xc3\x36\x85\xc8\x0a\x56\x71\xcd\x57\x60\xdd\x58\xa9\xe2\xc6\x84\x94\xa5\xc1\x28\xb9\x06\x14\x6c\x3c\xf1\x63\x89\x69\xaf\x20\x43\x5d\x36\xe9\x04\x9b\xe4\x5f\x51\xa4\xdf\x7a\x3b\xbe\x5d\x44\x5f\x82\x7d\xe5\xef\xb2\x03\x0c\x93\x1b\xd7\x94\x27\x96\xed\xb3\x48\x6a\x0b\x17\x21\xf6\x30\x00\xc9\x4f\x6c\xcf\x28\x25\x22\xb5\x10\x28\x72\x30\x42\x7b\x95\x4f\xfb\xed\xc6\x8c\xd5\x75\x66\x6b\x8d\x0a\xab\x34\x60\x8e\x0e\x56\xd3\xf0\xaf\x1a\x8c\xed\x43\x30\x98\x2c\x63\xad\xff\x1e\xd8\x72\xa3\x81\xf3\x72\xfb\x13\x11\x3b\xeb\x6f\x9e\x77\xaa\xf4\x48\x62\x75\x76\xb5\x79\x48\xd8\xdd\x57\xfc\xab\x57\xbb\x6d\xf6\x5c\xc9\xf5\x7a\x55\xd9\xad\x2b\xbb\xf6\xed\xe3\xee\x28\xda\x8e\xa7\xc7\x31\xfd\x88\x8b\xa6\x9d\xdd\x11\x6d\x0d\x65\xd3\xa2\x2d\x6d\xbf\x5d\xb5\x44\x29\x97\xc7\x45\xd8\x1f\xa0\x55\x33\x86\x2d\xf3\xa6\x9d\x16\xbb\x76\x99\x4b\x89\x86\xf4\x6d\xf3\x94\x9d\xbb\xe1\xeb\xaa\x36\xae\x7d\x76\xe9\x27\xcc\x8c\x63\x64\x34\x28\xf7\x1e\x60\xdd\xb4\xaf\x7f\x38\x8e\x0f\x94\xce\xdd\xdd\xa3\xa2\xcf\xfd\xde\x20\x73\xa5\x87\x9f\xd3\x72\x37\x46\x0c\xd3\xae\x50\x57\x19\x3f\xf3\xf5\xf3\x53\x1a\x8e\x0d\x4e\x6c\x7b\x6d\xb8\x0e\xa3\xa8\xc6\xd5\xda\x85\x56\x64\xcc\x7d\x0d\xd9\x98\x8f\xae\x67\x3c\xc3\xa3\x11\x47\xb8\xab\x14\xcd\xa2\x51\x5e\x93\xce\x8d\x1b\x94\x99\x8e\x08\x71\x84\xb9\x2d\x60\xe0\xbf\x67\x4d\xf0\xe9\x4a\x40\xcf\x4f\x6e\x79\x17\x78\x71\x89\xff\x3f\x1f\x4f\x0e\x3b\x69\xe9\x6e\xd0\xef\x85\xa9\x24\xdf\x7e\x26\x34\x29\xf5\x7b\x6e\xf9\x67\xc1\x5f\xee\xe6\xb6\xcf\xc7\x93\xdf\x7a\xcc\xb1\x4f\xb4\x3c\x6a\x6e\xd8\xbd\xa3\xe4\x9f\x8a\x90\x47\x03\x6e\x7b\x77\x50\x23\x8b\xc7\x61\xed\xb6\xc0\x69\x36\xc2\x66\x45\x73\xb8\x15\xae\x32\x6e\x60\x1f\x3b\x39\x07\x99\x75\x4c\x14\x42\xf2\x5d\xc0\xe3\xde\x2a\x6b\x61\xbd\xfb\xcc\x5c\xe5\x79\xef\x78\x7e\x1f\xff\x9c\x50\x6b\xb5\xcf\xe1\xb3\xae\x2b\x3a\x6e\x1b\x77\xfd\xfb\xf8\x8d\x6f\xc4\x1e\x1c\x37\xc7\xcf\x3a\x2c\x4f\x3e\xc7\xd0\x3b\x75\x75\x6d\x8d\xad\xc2\x0a\x72\xc1\xd9\x69\xba\xad\x30\x7d\x87\x4f\xfb\x4d\x4c\x8a\x13\x12\x66\x2d\x90\xff\xb9\xbc\xfc\xf1\x42\x48\x18\x86\xaa\xb5\x9c\xa5\x65\xd3\x5b\xb5\x54\x1f\xde\xbf\x19\x77\xab\x6c\x92\xb7\xdf\x6a\xc4\xb1\xd3\xfe\x48\xac\xf8\x12\x8e\xcc\x7a\xf9\xf5\xf5\x4a\x8e\xee\xd0\x58\x22\xb2\xe9\x97\xd9\x8c\x7f\xa5\x9f\x7f\xeb\x82\xee\x73\x33\xbc\xb6\xfb\x75\x50\xf2\x15\xf2\x7c\xf1\xf6\x7f\x7f\x61\x3f\x80\xdd\x28\x7d\xe5\x3a\x84\x51\xbf\xa0\x66\xbb\x9a\x2b\xe9\x21\x06\xce\xe4\x60\x32\x2d\xe8\xc5\x53\x40\xed\xa7\x00\x25\xb7\x98\x6b\x5d\x6a\x5d\x28\xed\x1a\x48\xcc\xd4\x73\xa9\xb2\xab\xac\xe0\xa2\x9c\xfa\xb1\x0d\x46\x33\x8a\x84\x78\xce\x40\x56\xeb\x10\xe7\x4a\xc7\xe7\xa1\x6b\xed\xb9\x2b\x57\x16\x00\xe6\xb0\x29\x05\xc2\x37\x1a\x3a\x1c\xb2\x8b\xb7\x6f\x7e\x64\x6b\x45\x91\x12\x6b\x8a\x15\xf5\xdf\xa1\xc4\x67\xbc\xaa\xa4\xc8\xdc\x64\x80\xcd\x6b\x21\x2d\x53\xe5\x8e\xb7\x97\x0d\x6f\x03\x02\xc3\xb5\x05\x5d\x72\xf9\xe1\xfd\xdb\xb6\x07\xbe\xde\xfd\x34\x1e\x15\xd6\x56\x66\x76\x74\xb4\x90\x6a\x33\xcd\xd4\x6a\x34\xe0\x4d\x52\x2d\x95\x99\x79\x9f\x18\xb0\x83\xca\x04\x97\x66\x36\xd0\x59\xe2\x67\x64\x37\xc2\x5a\xd0\xa3\xbd\x78\xf2\x87\x91\x2d\xe2\xef\xf7\x9d\x45\x46\xfd\x57\xe1\xe6\xaf\x09\x06\x71\x2c\xea\x0f\x07\x54\x51\xbd\x87\x45\xf2\x3a\xd5\x57\x73\x53\x6f\xf1\xe9\x5c\x69\xad\x36\x27\xbc\xb6\xc5\xe0\x1b\x94\x07\xad\x42\xec\xb9\x9f\xa2\x1d\x79\x24\x24\x38\xfd\x4e\x3f\x4f\x0e\xbe\xf8\xe2\x8b\xc0\xc8\xd9\x19\xab\x78\x29\xb2\xf1\xe8\x15\x8d\x83\x4a\x65\x99\xa3\xc9\x34\x2c\x40\x43\x34\x9f\x0c\x65\xd7\x57\x7e\x28\xf9\x65\x8f\x06\xf7\xca\x69\x41\x35\xfd\x77\xd7\x73\xfd\x23\xb7\xc5\xa0\x0c\xfd\xde\x13\x5e\xf1\x7a\xd0\xaa\x9e\x4b\x91\xed\x20\xdf\xfb\x9f\x87\x62\x9d\xe3\x72\x00\xf8\xa5\x9f\x20\xdc\x4a\xf8\xad\x28\xaf\x20\x8f\xd2\xd5\x83\x56\xdb\xd3\xb0\xd0\xb7\x06\x71\xd3\x5b\xc8\xc5\xbc\xdd\x89\x3f\x70\x79\x3f\xf4\xed\x62\x3f\x34\x4b\x33\x36\xc6\xa2\x6a\xef\xfe\xad\xc7\x11\x4e\x1e\x06\x37\x9f\x76\xdb\xc2\xfe\xfb\xd7\x7d\xfc\x19\x17\x30\x2d\x6f\x3f\xa7\xf6\x8a\x30\x8c\x93\xb5\xbb\xde\xdd\x87\x76\x63\x1a\xd1\x28\x85\x8c\xab\xeb\xde\xdd\x98\xf3\x7c\x25\x4a\x61\xac\xe6\x56\xe9\x48\xab\x4d\x63\xfb\x03\x6c\xdc\x7a\xce\x5e\x2f\x25\x9a\xfe\x36\xea\x5a\x7b\xb7\xd0\xfa\xb0\xf5\xb7\x82\x0d\x03\x03\x9b\x68\x33\xf6\xc2\xef\x0f\xa5\x3e\x41\xc3\xb9\x5b\x57\xd9\x92\xaf\x93\x5b\x07\x02\xfd\x1c\x0c\x20\x68\x4f\x08\x22\xfd\x75\x97\xb5\xc2\x9b\x1b\xd7\x64\x52\x22\xe7\x68\x93\xd0\x5e\xbb\x65\xae\x42\xc9\x66\x05\xea\x5e\xbb\x4f\x8d\x6a\x62\x9b\x45\x2b\x15\xd8\x25\xb9\x6d\xc4\xb0\x00\x16\x2c\x95\xbe\xe9\x69\x76\xaf\xda\x94\xd6\x5c\xb3\x5e\xc3\x24\x14\x11\xfc\x32\x5d\xa0\xba\xcd\x8d\xf0\xb8\x89\xe4\x3c\xa4\xb7\x58\xc8\xdd\x2a\xe4\x04\x1b\x6d\xb3\x1e\xc6\x98\x62\xd7\x8b\x01\xda\x23\x93\x7d\x3c\x70\xc7\x76\xcf\x82\xc0\xf0\x14\x02\x3f\x95\xee\x9b\x18\x7b\xad\x3f\xf7\x68\xc6\xc7\x93\x19\x1b\x39\xbd\xf9\x55\x50\x37\xc2\x99\x03\x5b\x92\xe7\x61\x49\xc7\x4b\x9a\x08\x75\x4b\xdf\xd6\x42\x4a\xcb\x0c\x03\x78\x25\x18\xe3\x90\x92\x1b\x78\x13\x3b\x54\xa3\x5b\xa6\xd3\xf7\xdb\xc8\xfa\x3a\x6c\x3f\xc4\x28\xba\x5c\xb2\x3e\xd6\x77\xab\x13\x31\x70\x34\x6c\x6f\x6d\xc4\xb6\xdf\xa9\xb2\x3f\xf5\x1a\x96\x76\xee\xfa\x43\x4d\xdf\xf6\x47\x5b\x9c\xe4\xfb\x50\x48\xf0\x53\xa7\xa6\x22\xc6\x1e\x89\xfd\xdf\xbb\xb7\xec\xc3\xfb\x37\x6e\xda\x11\x2f\xa8\x0e\xcd\x97\x9a\xce\x6a\xc6\x7e\xb2\x54\xcd\x77\xc6\x48\xc3\xf5\x5d\xa6\xaa\xed\x89\x03\x1b\x2e\xdb\x3c\x85\x09\x56\x6b\xa3\x51\x2c\x03\x69\x29\x56\x08\x29\x23\xf5\x8c\xe3\xe9\x71\x12\x04\x5c\x18\x8e\x76\x6b\x9b\x97\x8d\xb6\xb5\x9a\x1e\x16\xa4\xcb\x9c\x19\xbe\x06\x26\x68\x3a\x19\xeb\x84\xa5\x17\x37\x79\x23\xdb\x6f\xf2\x36\x83\x93\x83\x94\xf7\xb6\x82\x90\xf0\xd8\x57\x11\xee\xf5\xcd\x60\x59\xdb\x23\x24\x67\xae\x8e\x63\x19\xaf\xf8\x5c\x48\x61\xb7\x21\x10\xd1\x00\x36\x8f\x37\xae\x68\x55\x17\xae\x2b\x65\xc0\xb4\xe3\xf4\x47\x3f\x48\x0d\xbb\x97\xcc\x16\x5a\xd5\x4b\xa7\xb7\x8f\xa1\xac\xfb\x48\x9b\x63\x7a\xc1\xfb\x33\x2b\xaa\x27\x94\x8a\xaf\x76\x0c\x9d\xa6\x92\x37\xac\x0a\x30\x8d\x1a\x84\x31\x35\x9c\x74\x2b\xfd\x41\x65\xf4\x2a\x35\x41\x4d\x9a\x31\xc5\xb8\xcb\xd1\x21\xe3\xf6\x96\xfa\xf9\x6f\xd6\xb4\x77\x95\x8f\x6c\x21\x40\xb6\x14\xfd\x32\xfc\x76\xa7\x9e\x3d\x96\xff\x1c\x35\x77\x18\x1a\xd0\xb2\x17\x31\x52\xb2\x7b\xcd\x8c\xc5\xc8\xee\x56\x25\x05\xe3\x78\x80\x8f\xd6\x1d\x22\x1c\x43\x77\x88\x10\x7a\xa2\x37\x07\x37\x07\xff\x0e\x00\x00\xff\xff\x68\x62\x2b\x83\x8a\x33\x00\x00" func contractsStandardFlowtokenCdcBytes() ([]byte, error) { return bindataRead( @@ -180,11 +244,11 @@ func contractsStandardFlowtokenCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/standard/FlowToken.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6a, 0x76, 0xd2, 0xb1, 0x86, 0x26, 0x82, 0x14, 0x97, 0xb0, 0x25, 0x28, 0xd6, 0xa8, 0x5f, 0xc5, 0x1e, 0xcc, 0x71, 0x3a, 0xe, 0xaf, 0x42, 0x30, 0xe0, 0x78, 0x4f, 0xcb, 0xbc, 0x60, 0x6a, 0x55}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x43, 0xb7, 0xcf, 0x2a, 0xd5, 0x25, 0xa4, 0xee, 0xca, 0xba, 0xcb, 0x8c, 0x84, 0xf5, 0x6b, 0x11, 0xd2, 0x58, 0xd9, 0x23, 0x99, 0x48, 0xb8, 0x88, 0x21, 0x8d, 0x30, 0x4f, 0x7e, 0x2, 0x1b, 0x86}} return a, nil } -var _contractsStandardFungibletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x59\x4d\x8f\xdc\xb8\x11\xbd\xeb\x57\x14\xec\x83\x67\x9c\x76\xcf\x1e\x82\x1c\x06\xd8\x24\xbb\xc8\x1a\xf0\x25\x08\x12\x27\x7b\x6d\xb6\x54\xea\x26\x86\x22\xb5\x24\xd5\x3d\xb2\xe1\xff\x1e\x54\xf1\x4b\x52\xcb\x3d\xed\x8f\xcb\xcc\x48\xe2\x63\xd5\x63\xd5\xe3\x23\xfd\xf0\xf6\x6d\x55\xbd\x86\x8f\x47\x84\xf7\xca\x9c\xe1\xfd\xa0\x0f\x72\xaf\x10\x3e\x9a\x27\xd4\xe0\xbc\xd0\x8d\xb0\x4d\x55\xbd\x7e\x0d\xbb\xf4\x92\xdf\xed\xa0\x36\xda\x5b\x51\x7b\x90\xda\xa3\x6d\x45\x8d\x55\x45\x40\xf9\x4f\xf0\x47\xe1\x41\x28\x05\x6d\x82\xf5\x0c\x9b\x46\x3a\x38\x9b\x41\x35\x70\x14\x27\x7a\x45\xcf\x5b\x63\x3b\xf0\x66\x5b\x7d\x68\x41\xc0\xe0\xd0\x3a\x38\x0b\xed\x1d\xbd\x6f\xb0\x57\x66\x04\x01\x1a\xcf\x0b\xa8\x0d\xf8\x23\x4a\x9b\xff\xae\x02\xb2\x46\x6c\x68\xa4\xec\x7a\x85\x1d\x6a\x4f\x9f\xc1\x2c\x91\x12\xef\x96\xe3\x9f\x80\x2c\xc2\x6b\x8d\x22\x8e\x28\x21\x42\xb1\x83\x42\x07\x42\x37\xa0\x45\x27\xf5\xa1\xe2\x74\xfd\x8c\x01\xd7\x63\x2d\x5b\x89\x6e\x1b\x28\xfc\x9f\x18\x94\xdf\x81\x45\x67\x06\x4b\x84\xfd\x26\xea\x23\x88\xba\x36\x03\xc7\x26\x3c\x98\xb3\x76\x21\xb9\x44\x4f\x4a\x82\xe3\x10\x14\x30\xad\x4b\x8d\x95\x69\x79\x3a\x06\xcd\x98\xe0\xbc\xb1\xd8\x80\xd4\x91\x92\x84\x4e\xcf\xc5\x21\x66\xb9\x1c\x74\x14\x0e\x3a\xf4\x47\xd3\x38\xc8\x79\x98\xb3\x46\xcb\x19\x1a\x7f\x44\x1b\x97\xa3\x16\x1a\x6a\xa1\x54\x4c\xe9\x5f\xd6\x9c\x64\x83\x76\xb7\x81\xdd\xbf\xb1\x46\x79\xe2\xdf\x69\xd4\xee\x57\xa1\x28\xd0\x92\x70\xa1\xc6\x71\x18\x6e\xfa\x04\x1a\xac\x95\xb0\x08\xbd\xc5\x77\xb5\xd1\x8d\xf4\xd2\xe8\x40\x71\x6f\x9c\x9f\x3e\xe3\x18\x2d\x3a\x6f\x65\xed\x2b\x0a\x16\x9f\xb1\x1e\xe8\x25\x44\x5a\xda\x41\xd7\xe1\xe3\x40\x45\x48\x39\xa4\x3f\x02\xcd\xe3\xb0\x17\x56\x78\x84\x3d\xd6\x62\xa0\x58\x3c\x1c\xe4\x09\x1d\x7f\x4e\xd9\xf2\x2f\x62\x2f\x95\xf4\x23\x2d\x81\x3b\x0a\x8b\x95\x00\x8b\x2d\x5a\xd4\x35\xd7\x45\xa0\x39\x10\x1a\x96\x50\xab\x11\xf0\xb9\x37\x2e\x42\xb5\x12\x55\xe3\x4a\x44\x95\xd4\x60\x34\x82\xb1\xd0\x19\x8b\x29\xe2\x42\xc5\xb6\xaa\x3e\x50\xeb\x38\x13\x03\x0a\xd4\x2f\xa2\xe9\xc4\x13\x42\x3d\x38\x6f\xba\xcc\x70\xa4\x26\x17\x3c\x71\x33\x67\x99\x1a\xc9\xc0\x49\x58\x69\x06\xfa\x5a\xea\x83\x83\xb3\xf4\x47\x86\x0f\x95\xb7\xad\xde\x1b\x0b\xf8\x2c\x08\x66\x03\x02\x5a\x31\xd4\xe8\x79\xed\xf7\x58\xd0\xb1\x81\xfd\x98\xfa\x96\x7b\x80\xe9\x80\x54\x14\xb3\xe6\xfa\x75\x84\xc1\x49\x7d\x98\xc4\x4a\x4b\x5b\x42\xdb\xc4\x34\x4d\xbb\x68\xd1\x2c\x18\x15\x05\xe0\x50\x37\x3c\xd2\x86\x72\x4b\xdd\xd2\x23\xda\x77\xde\xbc\xa3\x9f\x1b\xce\xc8\x0c\x9e\xba\x86\xe6\x24\x11\xa0\x89\x58\x1b\x28\x59\x01\x35\x12\xaa\x02\x85\xcd\x01\x2d\xb8\x4e\x58\x9f\xa7\xda\xc2\x47\x13\x66\x8a\xe8\xde\x80\xd0\xa5\x0f\x36\x55\x90\xa7\xd8\xa3\x8e\x28\x19\x79\xd2\xc6\x8a\xf3\x84\x4a\x68\xad\xe9\xa6\x35\xc2\x52\x15\x5a\x88\x0b\xb7\xc1\xde\x38\xe9\x73\x75\x80\xd1\xb3\x99\xde\xb8\x54\x5b\xa4\x90\xc4\xbc\xc7\x80\x6f\x85\x76\x2d\xda\x6d\x55\xbd\x7d\xa8\xaa\x87\x87\x87\x39\x6d\xf4\x84\x9f\xae\xa8\xf2\x57\x15\x39\x2f\xed\x96\x87\xf7\xc3\x7e\x45\xe8\x17\xcb\xf3\xb9\xaa\x00\x00\xd2\x54\xde\x78\xa1\x40\x0f\xdd\x1e\x2d\x97\x76\xe0\x41\x6a\xc0\x67\xe9\x3c\xb5\xcd\x36\x0f\xf8\xe0\x41\x3a\x18\xfa\xd8\x48\x93\xd2\xb2\xf4\x08\xb5\x1b\x2c\x16\x49\x0a\xd8\x6e\xe8\x7b\x35\x66\x0c\xe7\xc5\xe8\x48\xe7\x06\xee\x66\x2a\x8d\x00\xd8\x08\x8f\xe9\x2b\xfe\x49\xe9\x9c\x84\x0d\x30\xff\x61\x94\x47\xf8\xef\x7b\xf9\xfc\x97\x3f\x4f\x72\xe0\x78\x3f\x68\xe9\xa5\x50\xf2\x13\x36\x33\x88\x94\x25\x9e\x30\x49\xb6\x74\x80\x9d\xf4\xd4\x0d\x67\x5a\x5a\x0a\xb4\x90\xe6\xa0\xb6\x28\xfc\x02\x86\x22\x09\x10\x17\xd3\xdd\xc9\xf0\xfb\x3c\xbe\xfb\x65\x80\xbf\xc7\x5a\xd3\xdf\x1c\x5e\x58\x0f\x52\xc0\x54\xaf\x3a\x54\xa9\x08\x95\x76\x35\xd0\x3c\xed\x9d\xe8\x68\x5f\x49\xf1\x6d\x18\xe2\x11\x7e\x69\x1a\x8b\xce\xfd\xed\x22\xde\x7f\x84\x3a\xff\x0e\x3a\x4b\xbc\x4d\xc2\xa0\x5a\x34\x37\xc5\x9b\xa7\xbd\x88\xd7\x9b\xd5\x68\x93\x76\xad\x86\xb9\x68\x23\x24\xe1\xab\xa3\xca\x5b\xfc\x63\x90\x96\x8b\xd7\x41\x6b\x6c\x66\x97\x84\x31\x81\x2c\x44\xa1\xd4\x3b\x8b\xd4\xd8\x97\xd6\x98\xb6\x48\x63\xd0\x81\x36\x79\xc2\xf9\x5c\x46\xc3\x6e\x9f\xb6\xda\x23\x5a\xdc\xe4\xb1\x93\x9d\x4d\xa1\xa0\x9d\xc4\xf4\xb1\x42\x7b\xe3\x9c\x8c\x9b\x89\x69\x43\x91\x52\x10\x71\x43\xe9\x23\x0d\xae\x84\x4e\x19\x37\x86\xe3\xd0\x58\xa3\x73\xc2\x4a\x35\x46\x7f\xc2\x02\x67\xce\x1a\x62\x24\xdb\x8b\x55\xb9\x34\x01\x65\x9f\x88\x12\x92\xa6\xca\x3a\xea\x86\x7d\x14\xa6\x25\x71\x6c\x4e\x92\x36\xce\x06\x87\xad\xc1\x0f\x96\x8a\x26\x6a\x67\xde\xdf\x2c\x76\xe6\x84\x4d\xde\xe7\x26\x03\x67\x20\x1f\x27\x0e\xe2\x0d\x8b\x0b\x3a\x07\x0a\x4f\xa8\xa8\x40\xfb\x61\xaf\x64\xbd\x81\xfd\x40\x45\x2b\x1d\x3d\x23\x5e\x04\xf1\xb6\x57\xd8\xcd\xc0\xd2\x2a\xb0\x31\x28\xce\x8a\x1c\x19\x2f\x3b\xc7\x95\xc9\x99\xfb\xb6\x19\x50\xcd\xf6\x8f\xd5\x41\x8d\xbc\x85\x84\xd9\x53\xa4\xd7\xf3\x09\xb3\x76\x62\x84\x83\x15\xda\x47\x57\x17\xe7\xc9\x39\xd2\x86\x9e\x6a\x81\xd2\x91\xa7\xa4\xa2\x25\x8a\x3e\xbb\x90\x68\xf1\xcd\xd9\x25\xb3\x5b\xcf\xdc\x22\x75\x29\xe3\xce\x10\xb8\xfe\xd2\xda\xe7\xd4\xfd\xd1\x9a\xe1\x40\x5b\x73\xf6\x57\xb7\x26\x14\xac\x12\x67\x45\xa4\xbc\x90\x13\x2f\xde\x2d\x29\x11\xd6\x22\x8f\x59\xec\x33\x8c\x6f\xcf\x83\xba\xa2\x1d\x74\x2e\xf7\x85\x44\xdd\x3f\xc2\xdf\x43\xf9\x7e\xce\x43\x78\x98\x71\xcb\x47\x01\x19\x76\x16\x5d\x3c\x61\xb4\x31\xea\x50\x5c\xd4\x0d\x70\x12\x6a\xc0\x8b\x61\x61\xc8\x36\xb6\x2d\xfc\xfc\x33\xc4\x28\x2e\xbe\xa4\x7f\xaf\x92\xfe\x0b\x15\xbf\x83\x6e\x70\x9e\x5c\x21\xcd\xe4\x44\x87\x20\x02\x49\x09\x31\xba\xdb\xb2\xd7\x70\x4e\xaf\x66\xf0\x5f\xaa\xf9\x6f\x5f\x8a\x1e\xa7\x43\xc5\x8f\xeb\x71\xdc\x3d\x56\xe4\x98\x77\x93\x1b\xe5\xf8\x77\x4c\x22\x28\x75\xad\x86\x06\xc9\x4a\xa6\x93\x49\x08\xa3\x3e\x62\xfd\x34\x27\x21\x4a\x40\x46\x39\x23\x9f\x6b\x69\x85\xc8\xe1\xdf\x62\xf0\x03\x0d\xc1\xe0\x57\x53\x45\x68\x4c\xfa\x68\xdd\xcd\x6f\x40\xc9\x27\x3a\x8c\x2a\xc9\x2e\xaa\x23\x7b\x24\x74\x53\x0c\x14\xfb\x5c\x7a\x41\xa6\x49\xb6\x5c\xb4\x1e\x7a\x15\xce\x22\xf0\xb2\x90\xa7\x45\x5a\x0a\x79\x32\xb7\x5e\x3c\x61\x51\x63\x52\xe8\xf8\xc6\xd1\xd6\xb4\x4e\x7f\xe9\xa7\xb1\xc7\xab\xfd\x13\xb1\xee\x82\x03\x09\x3d\x73\xbf\xac\xa3\x78\x18\xbd\xa5\x8c\xc8\xbc\x09\xa9\xc3\x7a\x94\xad\x95\x8f\x71\x30\x3d\x75\x67\x10\xca\x68\x52\x7c\xc2\x07\xeb\xa2\xf1\x1c\x3e\x0c\xf6\x25\x1a\xc1\xcd\xb4\x32\x32\x04\x6d\x22\xc5\x04\x42\x6d\xac\xc5\xda\xab\xf1\x26\xfe\x63\x72\x4b\xfa\x8b\x1d\x9f\x34\xa3\x80\xd3\x72\xcf\x9c\x31\x4a\x06\x39\x7e\x3e\x37\xc7\xf4\x8f\x42\xbc\x5b\xbc\xbd\xbf\x4d\x9f\x1c\xaa\x76\x2a\x33\x09\x65\x5d\x67\x52\x46\x49\x5d\xa6\xdc\xa4\x6a\x09\x8f\x12\xd0\xcd\x8a\x72\x69\x1a\x13\x57\x13\x09\x5f\x96\x41\xb9\x4e\xf0\xe6\x6b\x47\xd0\x2b\x4b\xc5\x73\x3e\x66\xc3\xb3\xc9\x1d\xb3\x59\x5f\x3b\x0e\x27\x5c\x88\x88\x74\xab\xc1\x3a\x53\x5b\x3e\xff\x8d\x3d\x5b\x05\xb1\x76\x3a\xeb\x50\xe8\x89\x4c\x44\x40\x3c\xa1\x1d\x97\x37\x7c\x79\xf4\xfc\xd6\xc0\x5d\xbb\x27\x9b\x82\xf2\xea\x34\xd8\x4a\x8d\xd3\xf0\x96\x17\x5d\x99\xcf\xd6\xd8\x2e\x6f\x4b\x5f\xb9\x3b\x9a\xe2\xcf\xaf\x91\xa6\x57\x05\x41\x43\xf8\xc2\xc8\x45\xc7\x14\x05\xbf\x49\xf7\x2d\xf4\x49\xb9\x73\x79\xb9\x31\x28\xa6\x1f\x68\x8d\x08\x5b\x6e\x43\xc2\x2a\x45\x8a\xc2\xd5\x56\xf1\x6f\xf2\xd3\xcc\x3e\xcc\x6c\x47\x6f\x25\x11\x93\xbc\xe1\xa2\xce\x2f\x15\x28\x40\x5c\xef\xd1\x17\x0d\xf6\x2e\x6c\xe7\xbb\x62\xb1\x79\x82\x37\x6e\xa6\x54\xb0\x6a\xb2\xb3\xce\x95\xad\x27\x01\x63\xb3\x36\xfe\x87\x2d\x90\xc5\x97\x14\xe6\xaf\x2f\x18\x99\x5f\x82\x7b\x29\xb6\x24\x29\x8d\x0a\x2e\x4f\x68\x30\x16\xf0\x8f\x41\xa8\xf0\xd7\x8a\xa7\xb9\xea\x64\xe0\xaa\x55\xa3\xf3\x00\xf3\x44\xae\x59\xa8\x72\xfd\xb3\xdb\x63\x6b\x2c\xee\xd8\x1a\xa0\x8f\x55\xa9\x86\x3c\xe9\x62\x43\x5a\x03\x8f\xb7\x25\x7b\x3c\x48\xad\xa9\x8c\x16\x77\xa2\xe5\xb6\x74\x65\xf4\xcb\xc2\xcd\x01\xde\x4d\x1f\xdf\xc3\xbb\xeb\x6c\xff\x33\x57\xc8\x7e\x21\xec\x7c\x07\x16\x3d\x47\x61\xb6\xb7\x78\xe2\x0b\xca\xf4\xb9\x08\x16\xe5\x76\x1b\x79\xa3\x0f\x11\x4d\x43\x1e\xa4\x4c\x14\xc5\x69\xb6\xd2\x72\xe5\x9c\x79\x9b\x0b\xf9\xce\xad\x71\x8d\xe1\x3f\xa5\xc7\x34\x41\x7e\xfc\x5d\x7c\xbb\xa1\x7b\x91\xe8\x72\xd7\xf2\x6d\x7e\x3d\x98\x9c\xdf\xba\xde\x8f\x91\xe5\x78\x96\xd2\x63\xbc\x53\x37\xf1\x9b\x99\x70\xb0\xfe\x1d\x05\x2d\xce\x27\xb4\x66\x69\x8f\xaa\x29\xd3\xcb\x29\xee\xd6\x64\x62\x85\xea\xcb\xa3\xce\x4f\xdb\x9f\x1e\xe1\x15\xc9\xb6\xc6\xb3\x1a\x93\x43\x8b\x31\x31\x65\xfc\xdf\x2e\xd3\x90\x5e\x5d\xe4\xfe\xe5\xff\x01\x00\x00\xff\xff\x95\x17\xd5\xa9\x48\x1b\x00\x00" +var _contractsStandardFungibletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x5a\xdd\x8f\xdb\x36\x12\x7f\xd7\x5f\x31\x48\x1e\xb2\xee\x79\xed\xa0\x77\x28\x70\x8b\x6b\x9b\x4d\xaf\x0b\x04\xb8\x3b\x14\xcd\x5e\xfb\x50\x14\x67\x5a\x1a\xd9\x44\x28\x52\x25\x29\x2b\x6a\x90\xff\xfd\x30\x43\x52\x5f\x96\x77\x37\xe9\x63\xf3\x12\xaf\x2c\xce\xf7\xfc\xe6\x83\xde\x7e\xf1\x45\x96\x3d\x87\xfb\x23\xc2\x9d\x32\x2d\xdc\x35\xfa\x20\xf7\x0a\xe1\xde\xbc\x43\x0d\xce\x0b\x5d\x08\x5b\x64\xd9\xf3\xe7\xb0\x4b\x5f\xf2\x77\x3b\xc8\x8d\xf6\x56\xe4\x1e\xa4\xf6\x68\x4b\x91\x63\x96\x11\xa1\xfe\x4f\xf0\x47\xe1\x41\x28\x35\x27\x9b\x4e\x3a\x68\x4d\xa3\x0a\x38\x8a\x13\x82\x37\xf4\xbc\x34\xb6\x02\x6f\x36\xd9\x9b\x12\x04\x34\x0e\xad\x83\x56\x68\xef\xe8\xfb\x02\x6b\x65\x3a\x10\xa0\xb1\x05\x3f\x21\xb5\x06\x7f\x44\x69\xfb\xbf\xb3\x40\x59\x23\x16\x74\x52\x56\xb5\xc2\x0a\xb5\xa7\xd7\x60\xa2\xc8\x20\xef\x86\xe5\x1f\x11\x99\x89\x57\x1a\x45\x36\x22\x85\x88\x8a\x6d\x14\x3a\x10\xba\x00\x2d\x2a\xa9\x0f\x19\xab\xeb\x27\x16\x70\x35\xe6\xb2\x94\xe8\x36\xc1\x84\x3f\x89\x46\xf9\x1d\x58\x74\xa6\xb1\x64\xb0\xef\x45\x7e\x04\x91\xe7\xa6\x61\xd9\x84\x07\xd3\x6a\x17\x94\x4b\xe6\x49\x4a\xb0\x1c\x82\x04\x26\xbf\xe4\x98\x99\x92\xd9\x31\xd1\x9e\x26\x38\x6f\x2c\x16\x20\x75\x34\x49\xa2\x4e\xcf\xc5\x21\x6a\x39\x3f\x74\x14\x0e\x2a\xf4\x47\x53\x38\xe8\xf5\x30\xad\x46\xcb\x1a\x1a\x7f\x44\x1b\xdd\x91\x0b\x0d\xb9\x50\x2a\xaa\xf4\x83\x35\x27\x59\xa0\xdd\xad\x61\xf7\x23\xe6\x28\x4f\xfc\x99\x4e\xed\x5e\x0b\x45\x82\x0e\x0a\x0f\xa6\x71\x2c\x86\x1b\x3f\x81\x02\x73\x25\x2c\x42\x6d\xf1\x3a\x37\xba\x90\x5e\x1a\x1d\x4c\x5c\x1b\xe7\xc7\xcf\x58\x46\x8b\xce\x5b\x99\xfb\x8c\x84\xc5\xf7\x98\x37\xf4\x25\x44\xb3\x94\x8d\xce\xc3\xcb\xc1\x14\x41\xe5\xa0\x7e\x07\xc4\xc7\x61\x2d\xac\xf0\x08\x7b\xcc\x45\x43\xb2\x78\x38\xc8\x13\x3a\x7e\x9d\xb4\xe5\x0f\x62\x2f\x95\xf4\x1d\xb9\xc0\x1d\x85\xc5\x4c\x80\xc5\x12\x2d\xea\x9c\xe3\x22\x98\x39\x18\x34\xb8\x50\xab\x0e\xf0\x7d\x6d\x5c\x24\x55\x4a\x54\x85\x1b\x24\xca\xa4\x06\xa3\x11\x8c\x85\xca\x58\x4c\x12\x0f\xa6\xd8\x64\xd9\x1b\x4a\x1d\x67\xa2\x40\xc1\xf4\x33\x69\x2a\xf1\x0e\x21\x6f\x9c\x37\x55\x6f\xe1\x68\x9a\x3e\xe0\xc9\x36\x53\x2b\x53\x22\x19\x38\x09\x2b\x4d\x43\x6f\x4b\x7d\x70\xd0\x4a\x7f\x64\xf2\x21\xf2\x36\xd9\x9d\xb1\x80\xef\x05\x91\x59\x83\x80\x52\x34\x39\x7a\xf6\xfd\x1e\x07\xea\x58\xc0\xbe\x4b\x79\xcb\x39\xc0\xe6\x80\x14\x14\x93\xe4\x7a\xdd\x41\xe3\xa4\x3e\x8c\x64\x25\xd7\x0e\xa2\xad\xa3\x9a\xa6\xbc\x88\x18\x19\x49\xe0\x50\x17\x7c\xd4\x86\x78\x4b\xe9\x52\x23\xda\x6b\x6f\xae\xe9\xff\x35\xab\x64\x1a\x4f\x69\x43\x4c\x09\x05\x88\x13\x83\x03\x69\x2b\x20\x47\xa2\xaa\x40\x61\x71\x40\x0b\xae\x12\xd6\xf7\xac\x36\x70\x6f\x02\xa7\x48\xdd\x1b\x10\x7a\x48\x84\x75\x16\xf0\x29\x26\xa9\x23\x9b\x74\xcc\xb4\xb0\xa2\x1d\xd9\x12\x4a\x6b\xaa\x71\x90\x30\x56\x85\x1c\xe2\xc8\x2d\xb0\x36\x4e\xfa\x3e\x3c\xc0\xe8\x09\xa7\x17\x2e\x05\x17\x41\x24\x99\xde\x63\xa0\x6f\x85\x76\x25\xda\x4d\x96\x7d\xb1\xcd\xb2\xed\x76\x0b\x0b\x00\x7c\x11\x7c\x7b\x2f\x6e\xe8\x68\x26\xf2\x1c\x9d\xbb\x12\x4a\xad\x16\xb0\x7d\x06\x9a\x1f\xb2\x0c\x00\x60\xbb\x85\x5b\x0d\xa8\xbd\xf4\x11\x5f\x4b\x63\x09\x21\x4d\xcb\x36\x3f\x62\x6f\x11\xa1\x38\xcc\x47\x26\x11\x41\x2d\x26\x34\x66\x3e\x26\xf7\x73\x3a\xbd\x57\x98\x58\x06\x2d\xbd\xf1\x42\x81\x6e\xaa\x3d\xda\x11\x65\xa9\x01\xdf\x4b\xe7\x29\x39\x37\xfd\x81\x37\x1e\xa4\x83\xa6\x8e\xe9\x3a\x0a\x60\x4b\x8f\x50\xbb\xc6\xe2\x00\x7c\x81\xb6\x6b\xea\x5a\x75\x3d\x0d\xe7\x45\xe7\x48\xd0\x86\x31\x83\xe2\x2f\x10\x2c\x84\xc7\x33\x25\x4e\xc2\x06\x32\x6f\x99\xca\x0d\xfc\xf7\x4e\xbe\xff\xea\x6f\x53\x1d\xf0\x84\x09\xf6\xa5\x03\xac\xa4\xa7\x8c\x6a\x29\x3a\x48\x8c\xc1\x0b\x0e\x72\x8b\xc2\x63\x71\x6e\x2c\x26\xc1\x4e\x71\x6f\xb4\xf4\x52\x28\xf9\x3b\x16\x57\x32\x7c\x9e\x72\x5f\x3d\x9d\x7d\xb0\x26\xa1\x64\x72\xa0\x7e\xc4\x6b\x23\x41\x92\xd7\xf4\x95\xa8\xa8\xf6\x24\xfe\x6b\x26\x71\x03\xb7\x45\x61\xd1\xb9\x6f\x3f\x4b\x9e\x98\x2e\x5c\xe2\x28\x27\x9f\x20\xcf\x3f\xd3\x91\x33\x79\xbc\xb9\x28\xcd\x2c\x8d\x90\x30\x2e\x8f\x80\x6e\xf1\xb7\x46\x5a\x8e\x20\xc7\x21\x9f\x8c\x44\x18\x98\x88\xcc\xd2\x7f\x08\x3a\x4e\x8d\xae\x1e\xe2\x73\x1c\xa7\x85\x41\x07\xda\xf4\x0c\xa7\xbc\x8c\x86\xdd\x3e\x55\xd5\x23\x5a\x5c\xf7\x67\x47\x45\x4c\xa1\xa0\xa2\x61\xea\x18\x48\xb5\x71\x4e\xc6\xba\x61\xca\x10\x4b\x24\x44\xac\x1d\x75\x44\x6b\x37\x88\x4e\x1a\x17\x86\xe5\xd0\x48\x46\x15\x56\xaa\x2e\xb6\x22\x0c\x65\xa6\xd5\x10\x25\x99\xea\x31\x76\xc2\x79\xdd\x1f\x4a\x43\x84\x90\xc4\xf2\x6d\xb3\x8f\xb8\x34\xb7\x1b\xb7\x21\x09\x04\x27\x67\x42\x0d\xf0\x8d\xa5\xd0\x88\x20\xd9\x57\x32\x8b\x95\x39\x61\xd1\x57\xb4\xd1\xc1\x09\x91\xfb\x51\xaf\xf0\xc2\x45\xf1\x41\xe1\x09\x15\x85\x61\xdd\xec\x95\xcc\xd7\xb0\x6f\x28\x34\xa5\xa3\x67\x64\x16\x41\x66\xdb\x2b\xac\x26\xc4\x92\x13\xb8\x05\x18\x7a\x28\xea\xbd\x12\x20\x8e\x6c\x32\xed\xd0\x26\x84\x72\x6e\xf4\x38\x87\x55\xc7\xb5\x22\x70\x4f\x92\x3e\xac\x4f\xe0\x5a\x89\x0e\x0e\x56\x68\x1f\xfb\xb7\xc8\xa7\xd7\x91\x4a\x77\x0a\x05\x52\x47\x9e\x12\x92\x0d\x52\xd4\x7d\xbf\x11\x9b\x79\xd3\xba\xd4\xd6\xe6\x93\xbe\x90\x72\x91\xe9\x4e\x28\x70\xf8\x25\x97\xf7\xaa\xfb\xa3\x35\xcd\x81\x6a\x70\xdf\x49\x3d\x55\xa1\xd0\x14\xb1\x56\x64\x94\x47\x74\x62\xe7\x3d\x45\x25\xa2\x35\xd3\x63\x22\xfb\x84\xc6\xe7\xe9\xf1\x8a\xba\xcd\x0a\x12\x04\x91\x5a\xe1\xf3\xa8\x7c\x79\x43\xfd\xd5\x0c\x72\x49\x8e\xd3\x59\xf0\xbf\x0a\x91\x0f\x0b\xdd\x3c\x15\x0e\x21\xf5\xbc\x04\x6b\x8a\x9e\xc2\x2d\x0a\x18\xb3\x76\x5c\x6f\x57\xf4\x7a\x7f\x78\x06\x9d\xab\x1b\x78\x15\xb8\x7e\xe8\x69\xd0\x3f\x6a\xd4\x67\x8f\x02\x2b\xd8\x59\x74\x71\xfa\x29\xa3\x9d\x43\x3a\xb0\x16\x27\xa1\x1a\x3c\x3b\x16\x8e\x6c\x22\xce\xc0\xd7\x5f\x27\xeb\x9d\xbd\x49\xff\x9e\xfd\x3c\xf4\x1a\xd1\xb2\x55\xe3\x3c\x59\x94\x38\x39\x51\x21\x88\xe0\xd6\x44\x31\x76\xde\x83\x85\x58\xa7\x67\x13\xf2\x1f\xb3\xe9\xa7\x8f\x7f\xa0\x4e\xc4\xe2\xb5\x50\x26\xb8\x98\x3d\xb1\x4c\xfc\x8c\x09\x9c\xa5\xce\x55\x53\x20\x35\xb3\x69\x38\x0a\x62\xe4\x47\xcc\xdf\x4d\x75\x8d\xd8\xd4\x53\x69\x91\x47\x6b\x72\x04\x0d\x19\x4f\x99\x31\xc2\x78\x17\x66\x8c\x0c\x46\x50\x55\x98\xf4\xd2\xf2\x40\xb1\x06\x25\xdf\xd1\x3c\xac\x24\xb7\x58\x15\xf5\x4e\x42\x17\x43\x77\xc5\x9d\x36\x7d\x41\x1d\x95\x2c\x39\x9b\x3c\xd4\x2a\x8c\x43\xf0\xf4\x02\x93\x86\xd0\x79\x81\xb9\x17\xef\x70\x28\x13\x54\x3a\xa2\x33\x1c\x95\xcc\x65\xf3\x0f\x89\xde\xd5\xf8\x58\x62\x87\xde\xe6\xf1\x74\xe4\x24\x0c\x5e\x6a\xa5\x52\x14\x9e\x7d\x4f\xf3\x50\x6e\xb2\xc2\x94\x92\xf1\xed\xab\xc0\x30\xa4\xe1\x6a\xaa\xec\x6b\x54\xa6\xa5\x52\xd5\xe3\x52\x31\x60\xc9\xdd\xbf\xde\xfc\x00\xcf\xbf\xfa\x3b\x1c\xbd\xaf\xdd\xcd\x76\x7b\x90\xfe\xd8\xec\x37\xb9\xa9\xb6\x46\x97\xca\xb4\xdb\x52\xc9\xda\x6d\xf7\xca\xec\xb7\x95\x90\x3a\xfe\xfd\xe5\xcb\x2f\xff\xfa\xf2\xcb\x97\x5f\x5d\x97\x71\x18\xb8\x66\xef\x5e\x33\x38\x5d\x93\x8d\xae\x0b\xe9\x72\x73\x42\xdb\x6d\xaa\x65\x65\x48\xba\x1f\x63\xcd\xe6\xe9\x47\x72\x3d\x13\x96\x5b\x93\x38\xe8\x74\x35\x8e\xf6\x10\x21\x93\xa2\x57\xa5\x03\x02\xa7\x04\xd3\x35\xb9\x0e\xc8\x89\xbb\x68\x96\x5d\x5c\x64\xcc\xca\x90\x74\x61\xec\x92\x69\xad\x13\x81\x67\xf7\xe1\xbe\xab\xf1\x1f\xaf\xee\x94\x69\xb9\x5b\xdc\xb0\x0c\xdf\x5c\xad\x6e\xc0\xdb\x06\x3f\xee\xc2\x94\x5a\x82\xd0\xdd\x3c\x13\x26\x3c\x9a\x34\xee\x17\x58\xb2\x1a\x7d\x28\x89\x98\x97\x0b\xec\xb1\xaa\x7d\x37\x36\x82\x70\xac\x4d\x2d\x28\xfe\x97\xab\x0e\xb5\x88\xfa\x85\xef\xf7\x65\x7d\xae\x4d\x57\x74\x9b\xd9\xb6\xe9\x72\x65\xfa\x6e\xaa\xd5\x4c\xf0\xd0\x76\xe3\xfb\x1a\x73\x1f\x36\x51\x4d\x7d\xb0\xa2\xc0\xd9\xce\x2d\x94\xce\xa2\xe0\x1d\xd5\x84\xc2\xcc\x15\xc2\xf3\x6c\x65\xac\x77\xc1\x31\xc1\x61\xe3\x0e\x56\x3a\xa0\x20\xe2\xb2\xc0\xee\x26\xf0\x4c\x3b\x0b\x51\xd7\x4a\xe6\x51\xb6\xb8\x18\x7b\xa0\xec\x46\x4b\x4f\x03\x2d\x0a\x80\x3d\x0a\x84\x0a\x1b\x43\x6f\xdf\x5d\xc6\x82\x65\x4e\x93\xd9\x4f\x62\xcb\x89\x7a\x40\xff\x36\xf1\x61\x67\x50\xa8\x39\x8a\x2c\x0e\xba\x1b\x78\x6d\x8c\xfa\x38\x2b\x97\x7d\xf6\x32\x84\x93\x25\xc6\xeb\x96\x04\xc9\xc3\xc0\x6a\x1b\x7d\xed\x65\x15\x30\x2a\x04\xd7\x9c\x1e\x77\xa3\x07\xf4\x31\xe8\xc6\x33\x66\x88\xb3\x09\x56\x51\x4c\x45\x00\x5f\x0c\xa8\xcd\x84\xbc\x2c\xc1\xa1\x2a\x37\x07\x64\xed\xae\x56\x1b\xe9\xa8\x97\xa7\xcf\xa6\xbc\x81\x98\x5d\xe7\x74\xbe\xb9\x5a\xad\x16\x3a\x85\xe8\xad\x0f\x53\xa2\x31\x17\xa7\x75\x19\x50\x39\x5c\x6e\x36\x02\xc2\x50\x24\x2e\x25\xd8\x38\x49\xb9\xf1\xe0\xf0\xea\x6d\xd0\x1e\x0d\x14\x46\xbf\xf0\x4b\x94\x87\x55\xf2\xa2\x71\xd6\xe0\x9a\xfc\x48\x4c\xa6\x5f\xbf\x6d\xa5\xcf\x8f\x7b\x23\x6c\xb1\x5b\xc3\x8e\x9f\xdd\x19\xdb\x0a\x5b\xa0\xdd\x01\xfa\x7c\x73\xd1\x14\x1f\xff\x40\x3b\x12\x6b\x4f\xd0\x79\x18\x1d\x79\x23\x09\xe3\x05\x72\x4f\x84\xd0\x6e\xd4\xc4\x50\x95\xa2\x60\xd1\xd8\x86\x17\x03\x1c\xc4\x7d\xc4\x7a\xdc\x61\xf4\x24\x28\x66\x87\x5d\x04\xe4\xc6\x5a\xcc\xbd\xea\x3e\xa9\x8e\xc7\xe5\xf1\x59\x19\xef\xf7\x33\xa3\x1e\x4e\x9c\xf7\xc7\xcb\x99\x29\x6c\x3a\x36\xdd\xc8\x70\x24\x6b\xe9\xaf\x66\xdf\xce\x23\xf4\x42\x7b\xcb\xc1\x3a\xea\x52\x13\x95\xe5\x36\x35\x69\x96\x9a\xd3\xb1\xad\x52\x17\x12\x1e\x25\x42\x97\x1b\xd2\x89\x6d\xee\xd2\x06\x31\xae\xc7\xe3\x64\x1c\x2f\x2c\xfe\x8d\x5e\x14\xc2\x0b\xf8\x49\x62\xeb\xe6\x4b\x5c\x31\x5b\x14\x3e\x8a\xa7\xb7\x1a\x84\xb5\x82\xd1\x94\x71\x8d\x52\x6a\xe8\x72\xc6\xe4\x09\x10\xdd\x06\xee\x09\xeb\x43\xbe\xa5\xc6\xa7\x71\xcc\x7d\xc2\x20\xfd\x2b\x68\x04\x37\x75\x9c\x15\xde\x69\xd3\x42\x7b\x94\xf9\x11\xb8\xdd\xc2\xb8\xbb\xab\x85\x1b\xcd\x12\xce\xa8\x13\x92\x7e\x57\xab\x58\x55\x3e\x0d\xae\xd9\x34\x04\x37\xbf\x90\x4a\xbf\xce\x5c\x1d\x35\xff\xe5\xd7\xa7\x3a\x80\xc5\xa1\xa6\xb3\x4a\xb6\x0f\xcc\x8c\xed\xa7\xf9\x60\xf2\x70\x9b\x45\x65\xa7\x6f\xf8\x17\x6d\x1f\x3a\x4d\x22\x12\x3a\x4d\x92\x32\xa5\x71\x81\x4e\xda\x68\xed\xcd\xb2\xcb\xc0\x79\xdb\xe4\x9e\x6a\x87\xc5\xda\xa2\x4b\x63\x46\x9c\x55\xd0\xf9\x25\x02\x17\x3b\xd1\xb1\xc1\xff\x97\xc4\xea\x6a\x5c\xdd\xc0\xad\xee\xde\x32\xb3\x6f\x97\x8d\xa8\xa5\x7a\x18\xc8\x46\x43\xf6\x1c\xc7\x86\xab\x1d\x6f\x2e\xdd\x06\x6c\x26\xc4\xc2\xd5\x92\x48\xf7\x43\x3c\x2e\xe5\x96\x17\xe9\x64\x41\xa9\xc3\xa3\xf9\xd2\xbb\x42\xa1\x67\xd3\x0e\x72\x5f\x72\x61\xa9\x3e\xbb\x7c\x71\x0f\x5d\x37\xf6\x14\x19\x06\x38\x77\x70\x2c\xd8\xfc\xb2\xb0\xb7\x43\xa8\xcf\x31\xe4\x2f\xdc\xbf\x4d\xd0\x7c\xb8\x87\x1b\xdf\xb5\x84\x09\x88\x6f\xdc\x5c\xec\xe4\xe2\xb8\x5a\xa4\x0b\x2b\x7a\x65\xb8\xb4\x82\xc7\xb0\x9b\x05\xbe\xe9\x37\x7c\xeb\x7e\x14\x5b\x7f\x12\x98\x9f\xaf\x3b\x9e\x0c\xe1\x91\xe4\x70\x21\x15\xdc\x1b\x2d\x1c\x6e\x17\x87\xc5\x9a\xfc\x7d\xd2\xc1\x4f\xf6\x41\x61\xef\xd3\x83\xd9\x14\x8e\xcf\x0b\x67\xa0\xf0\x70\x29\xb9\xb4\xef\xdc\x85\x5d\xc5\x6e\x18\xd0\x98\xee\x0b\x37\xa9\xab\xb0\xb8\xf3\xec\xab\xf2\x30\x04\xb8\x48\x98\x80\xf5\xfc\xfc\x9f\x70\x23\x65\x97\x7a\xc4\x49\xc5\xfe\xe6\x91\xbd\xd2\x6d\x30\xca\x20\x75\xaa\xdc\x2a\xac\x09\x85\x06\x63\x01\x7f\x6b\x84\x0a\x7f\x2d\xac\x98\x1e\x5c\x2c\xc1\x83\x9b\x33\x9a\x89\xd8\xb3\x35\xe6\x14\x85\xfd\x45\xe1\x6e\x8f\xa5\xb1\xb8\xe3\x15\x0e\xfa\xe8\x16\xaa\xaf\x91\xe9\xac\xe1\x5b\x22\x1e\x67\xec\x3d\x1e\xa4\x66\xff\xcc\xae\xcf\x87\x8b\xf5\x85\xd3\x8f\x37\x42\x2c\xe0\xd5\xf8\xf1\x0a\xae\x1f\xb6\xf6\x7f\xfa\x98\xde\xcf\x1a\xa5\xb0\x2f\x28\xd3\xdd\x7b\x94\xb4\xb6\x78\xe2\xb9\x30\xbd\x2e\xc2\x2a\xe9\xe9\x5b\xbd\x3f\xd3\x9e\xe8\x7c\xda\xbc\x75\x0e\xad\x1f\xd6\x2d\xd3\xd2\xd8\x37\x17\xe9\xd6\x2d\xcc\xc9\x61\x9d\xc2\x3b\xd5\x39\xbd\x38\x60\x9d\x86\x1f\x44\x48\x17\x77\x35\x49\xb5\x48\xed\x09\x79\x4a\xb2\x6f\xa4\x7b\x13\x7f\xf3\x72\x35\x1d\x0b\x57\x17\x42\xe8\x3b\xa1\xb5\xf1\xfd\x68\xcf\x90\x9f\x9b\xaa\x16\x7e\xd4\x6d\x91\x7a\x9f\x91\x90\x4f\x0a\xf1\xbf\xa4\xc7\x2c\x7f\x7a\xfc\x59\x01\xef\x9a\xea\xd1\x48\x1f\xbc\xf3\x69\xfb\xeb\xdb\x78\xf9\xa1\xbb\xf8\x73\x17\x13\x07\xbb\x49\x69\x61\x1f\x1e\x05\x25\xc5\xef\x68\xcd\x7c\xdc\xeb\xa9\x8d\xf1\x7f\x38\xdd\xff\xd8\x09\x2e\xf4\x0f\x14\xaa\x81\xeb\xf7\x34\xab\xf3\xa9\xab\x25\x34\x5f\x70\xc8\xf9\x05\xc1\xcb\xcd\xcb\x1b\x78\x16\x45\x50\x5d\x1a\x54\xa3\x30\x6c\x58\xfe\x21\xd5\x58\x93\x67\x67\x16\xfa\x98\xfd\x3f\x00\x00\xff\xff\x3f\x6f\x7b\x40\x1b\x27\x00\x00" func contractsStandardFungibletokenCdcBytes() ([]byte, error) { return bindataRead( @@ -200,11 +264,31 @@ func contractsStandardFungibletokenCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/standard/FungibleToken.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe4, 0xba, 0x66, 0x74, 0xd7, 0xb3, 0xd5, 0xa4, 0xd3, 0xc6, 0xb8, 0x36, 0xdb, 0xe5, 0x45, 0xf, 0x55, 0x68, 0x16, 0xe9, 0xbc, 0x2c, 0xf3, 0x88, 0x99, 0x6c, 0xe7, 0x69, 0xc, 0x6e, 0xc7, 0x84}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9e, 0x2f, 0xba, 0xb6, 0x38, 0xd1, 0x9b, 0x5f, 0x6d, 0xd9, 0xb2, 0x42, 0xa8, 0xc0, 0x8e, 0x8c, 0x4e, 0xc9, 0xc8, 0x9f, 0x8d, 0xf5, 0x67, 0x16, 0x9, 0xf8, 0x8, 0x38, 0x90, 0x78, 0xb8, 0x51}} + return a, nil +} + +var _contractsStandardFungibletokenmetadataviewsCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x58\x5f\x6f\xdb\x38\x12\x7f\xf7\xa7\x98\xf3\xc3\x6e\x02\xa4\x72\x5b\x1c\xee\x16\x46\xbd\xbb\x05\x36\xc1\x1d\x90\xa2\x45\x9a\xee\x3d\x5e\x29\x69\x64\x13\xa1\x48\x1d\x49\xd9\x35\x82\x7c\xf7\xc3\x90\x94\x44\xfd\x73\x9c\xdd\xdb\x5b\x3d\xb4\x8e\x38\x9c\xf9\xcd\x5f\xfe\x28\x5e\x56\x4a\x5b\x58\xde\xd4\x72\xcb\x53\x81\xf7\xea\x01\xe5\x72\xd1\xbc\xfe\x80\x96\xe5\xcc\xb2\x5f\x39\x1e\x4c\xf7\x9a\xfe\xbc\x43\xa3\xc4\x1e\xf5\x72\xb1\x58\xad\x56\x70\xbf\xe3\x06\x32\x25\xad\x66\x99\x05\x5e\x56\x02\x4b\x94\xd6\x80\xdd\x21\x94\x41\x0d\x18\xcb\x64\xce\x74\x0e\x95\x56\x95\x32\x98\xbb\xbd\x5c\xc2\xcd\xed\x3f\x3f\xbd\x7a\xf3\xfa\x87\xbf\x27\xf4\xc6\xbd\xbd\xc3\x62\x0d\x3b\x6b\x2b\xb3\x5e\xad\xb6\xdc\xee\xea\x34\xc9\x54\xb9\x52\xb2\x10\xea\xb0\x2a\x04\xaf\xcc\x2a\x15\x2a\x5d\x95\x8c\xcb\x15\xab\x2a\xc1\x33\x66\xb9\x92\xab\xb7\xaf\xdf\xbe\x7d\xfd\xc3\x9b\x37\xaf\x8a\xe0\xd6\x2b\x4b\x7e\x99\x57\x0d\x90\xa4\xcc\x5b\x3b\x9f\xad\xae\x33\x6b\x80\xc9\x1c\x34\x1a\x55\xeb\x0c\x0d\x64\x4c\x76\x5e\x80\x92\x08\x4a\x43\xa9\x34\xba\x3d\xad\x43\xf6\x58\xa1\xb9\x82\x8c\x09\x81\x39\xec\x29\x4c\x09\x5c\xb3\x6c\xe7\x7e\xbb\x65\xd0\x58\x69\x34\x14\x0c\xb7\x97\x41\xce\x8b\x02\x35\xe9\x7d\xe0\x32\x07\x55\xb4\xfa\xbc\xf7\x2c\xcb\xd0\x98\x0b\x26\xc4\x65\x17\xd2\x5e\x86\x7a\x79\x81\xc7\xc5\x02\x00\x80\x94\xdf\xdc\xd3\x2b\x38\x68\x56\x19\xb8\xb9\xff\x85\x9b\x4a\xb0\xa3\xf3\xed\xe6\xfe\x57\x56\x0b\xfb\x0b\xb3\xec\xca\xbd\xe0\x06\x6a\x83\x39\x58\x05\x5b\xbe\x47\x60\x90\x29\xf2\xd8\x62\xab\xae\xe2\x99\xad\x35\x12\x44\xd6\x22\x00\x07\x21\x81\x0f\xca\xd8\xc1\xcb\x16\xae\x01\xb3\x53\xb5\xc8\x5b\x4d\x5d\x2c\x2d\x55\x0a\x45\x27\x69\x16\xdd\xff\xb1\xd3\xc6\xa5\xa4\x71\xe6\xd1\xad\x0f\x65\x04\x5a\x28\x6c\x70\x70\xdd\xf9\xfa\xd3\x09\xe9\x36\x00\xeb\x38\x1a\xdd\x0e\x97\x33\x2e\xb9\xbd\x68\x5f\xd1\x33\x69\xe6\x6a\x20\xf2\x9c\xee\xcb\xc8\x0f\x7a\x0c\x8a\x22\x69\x35\xc3\xa6\xb3\x32\x25\xd6\x2a\x74\x82\xed\x5f\xad\xe8\xd3\xc2\xff\xdb\xc6\xfb\x1f\x28\x2a\xd4\x2e\xb7\x68\x29\x79\xf7\x13\x31\x27\xc1\x9f\x2b\xa6\x59\xe9\x16\x9b\x96\x5e\xc3\x7b\xd0\xe8\x4a\x34\x43\x52\x41\x3d\xac\xc3\x62\xdb\x23\x9d\x06\x8d\xb6\xd6\x12\xde\x37\x09\xf3\xe9\x9b\xcd\x6e\x51\x4b\x02\xe5\x85\x2f\xfa\x86\xbf\x7b\x8c\x67\x4b\xd2\xfc\x78\xba\x5c\x8f\xab\x81\x72\x5a\xb2\x63\x8a\x61\x65\xd3\x73\x22\x09\x80\x9d\x91\xfb\x63\x85\xef\xbc\xd8\x8f\x17\x97\x97\xad\x0a\x5e\x34\x95\xe1\x15\xc4\xea\xfa\xe9\x0a\x3e\x06\x49\x66\xfe\x12\xf0\x0c\x32\x10\x89\x06\xff\xe6\x2a\xc9\x25\xd6\x85\x21\xbc\xea\x45\xe2\xf2\x44\x79\x75\x3b\xdb\x97\xfd\xbd\x5d\xcd\x0d\xab\xc2\x81\xb7\x0a\xf0\x1b\x4d\x5f\x97\x57\x2e\x0b\xa5\x4b\x37\x37\x41\x22\xe6\x7e\x20\x98\x9d\x3a\x64\xcc\x89\x70\x1a\x24\x6d\xdd\x84\x41\xcf\x24\xa4\xe8\xc7\x47\x7a\x84\x68\xf6\x9a\x6e\x9c\x48\x50\x7b\xd4\xae\xa7\x98\xec\x26\xc1\x56\xb3\x6a\xc7\x33\x43\x43\x85\x00\x44\xca\xe7\x07\x41\xd3\x26\x5d\x52\x3c\x16\x84\x3c\xac\x48\x56\x22\x14\x4a\x7b\xc4\x6e\xde\x27\xb1\x70\x6f\xe3\xf5\x37\x46\xf3\x68\x0d\xcb\x1b\xa1\x0e\xcb\x49\xb9\xe1\xf8\x20\x03\x6b\x3a\x2d\xb8\xdc\x2e\x46\x30\x58\x9a\x6a\xdc\x73\x66\x31\x07\x73\x2c\x53\x25\x7e\x0b\x98\xdb\x8f\xff\x5a\xce\x02\xf0\x6a\xa7\x21\xbc\x87\x1c\x4d\xa6\x79\xe5\xf2\x48\x61\xad\xb4\xda\xf3\x1c\x4d\x2f\x0f\x2e\xe4\x2f\x41\x44\xae\x11\x2a\xbf\x83\x8e\x0c\xd2\x2d\x99\xa5\x0c\x67\xb5\xa6\x11\x71\x6c\x33\x29\xd4\x01\x24\xda\x83\xd2\x0f\xc9\xbc\x1f\x11\xd2\x69\x67\xae\xbf\x59\xd4\x92\x09\x10\x5c\x3e\x50\x3d\x31\xf8\x72\x77\x4b\x3f\x9c\x13\x74\x0a\xf7\xca\x96\xa5\xaa\xb6\x0e\x41\x73\xde\x0f\x1d\x1c\x42\xc0\x60\xe1\xcb\xdd\xed\x1a\x7a\x87\x69\x72\xdd\x2d\xf5\x51\x7d\xec\x38\x00\xec\x51\x1b\x57\xec\xc1\xf3\xbe\x5d\x10\x6a\xab\xe6\x8d\xd3\xaa\x19\x9a\xfd\x80\x39\x67\xa6\x6f\xf1\xb3\xca\x78\x88\x82\x6b\x2b\x8d\x44\x2c\xc6\xf6\xbe\x37\x60\xbc\xe8\x4e\x95\x58\xb1\x2d\x9a\x5e\x6e\xe1\x93\x32\xc6\x89\x3f\xe0\xd1\xd0\x90\xa3\xe6\x5d\x72\x69\x2c\xdb\x6a\x56\x2e\xaf\x60\x69\x0f\xdc\x5a\xd4\xf4\x33\xe7\x26\x53\x3a\x5f\x5e\x01\xda\x6c\xde\x0d\x6f\xd2\xac\xe1\xd1\xe7\xf0\x44\x20\x9f\x16\xcf\x1d\xb1\x71\x73\xf5\x47\x5f\xbf\xea\xfb\x6b\x13\x95\xd4\x17\x38\x2f\xcf\xfd\x3d\x27\xd2\x33\x40\xf6\x92\x00\x34\x9b\x26\x69\x80\x9b\x5d\x1b\x17\x84\xf1\x62\x98\x26\x9b\x10\x89\xb1\x40\xdc\xf9\x9b\x38\x26\x63\xd1\x28\x1e\xb0\x89\xa3\x33\x16\x75\x61\x80\x8d\x0f\xc7\x04\x2a\xef\x3c\xc1\xf2\xbf\xce\xa5\x22\xdd\x2c\xe7\x12\x18\x1c\xd8\x11\xec\x8e\x59\x38\x70\x21\x9a\xa3\xd3\xf3\xea\x1c\x94\x73\x83\x89\x3f\x94\xb5\xc8\xd6\x4c\x84\xed\x5c\x0a\xd3\x9c\xdd\xff\x86\x17\xf0\x98\x86\x42\x46\xa5\x10\x88\x88\xe3\x1f\x61\xf9\x4c\x4e\x13\xa4\x89\xd6\x0c\x4a\x2b\xe8\xcc\x7b\xea\x46\x16\x98\xf9\x69\xf2\x7c\x6d\x9e\x10\xa6\x48\x4b\x4f\xe4\x69\x9e\x00\x49\x2e\x7e\x1b\xff\x30\x96\x66\xac\xbb\xa2\x48\x8b\xee\xf6\x73\xe0\x76\x17\x58\x2c\x71\x9e\x97\xd1\x11\x83\xb6\xae\xa2\xdd\x5e\x1b\x5d\x41\x51\xb7\x8a\xc8\x28\xdb\x7a\xb3\x55\x9d\x0a\x9e\x41\xc6\x2a\x96\x72\xc1\x2d\x6f\x06\xea\xe9\xcb\x4a\xcb\xd1\xfb\x2c\xe5\x13\xb3\x3b\x2a\xf6\xc6\xc2\x61\x87\xba\x25\x56\x01\x11\x37\xa0\x31\x53\x65\x89\x32\x30\xb0\x14\x7d\x1c\xf2\x13\x13\xd8\x2b\x24\xfd\x34\xfe\xda\x3f\xfa\xa7\xc8\x27\xef\x4c\x45\x28\x0e\x3b\x9e\xed\xa0\xac\x8d\x25\xfd\x74\xb0\x78\x63\x51\x3e\x82\xef\x1a\x33\xe4\xd4\x38\x6d\x10\x8e\xf3\x40\x1a\x61\x8f\xc4\x1b\xfc\xdd\x40\x52\x26\x18\x75\x72\x73\x2f\x77\x6d\x3c\x9b\x99\x29\x58\xcd\xad\xfa\x34\x2c\xea\x23\x3f\x82\xfc\x95\x35\x02\xc4\x3c\xab\xf8\x1a\xfb\xf7\x35\xf1\x35\xc7\x0d\x30\xc2\x65\x35\xcf\x88\xf4\x85\xab\xfe\x7f\x6a\xee\x08\x4d\x6c\xc1\xe9\xe8\xdd\xdf\x93\xbb\xa0\xf1\xab\x2f\xf1\x82\x65\xf8\x7c\x78\x6f\x1d\x2a\xc2\xbb\x76\xa8\xff\x14\x3f\x26\xe7\x5a\xe4\xc6\x19\xf9\x38\xed\xc7\x4d\x2d\xb3\xc0\x62\x99\x05\x26\x84\x3a\x18\xc8\x34\xfa\x11\xa1\x0a\x22\xb4\x58\x56\xf6\xd8\x75\x8f\x93\x24\x5f\xa4\x75\xfd\xd3\x47\xad\xc2\x40\x09\xc4\x29\x3f\x81\xd0\x99\xc1\x6b\xd2\xee\xba\x79\x4d\x1b\x2e\x2e\xd7\xf0\xf3\x63\x3f\x7f\x6e\xf5\x79\x5a\x33\xd7\xa1\x57\x83\xbb\xe5\x74\xfb\xf4\xa5\xe6\xaa\x79\x5a\xd7\x30\xc6\xd3\xba\x4e\x4b\x0d\xa3\xd1\x64\xe6\xb9\xa8\x34\xfb\x87\x07\x52\xa5\x71\xf2\x80\x19\x22\x4e\xb8\xf9\x5c\xa7\x54\x88\x17\xaa\xf0\xc0\xde\x7d\xf7\x38\xdd\x40\x4f\x74\xf0\xad\x47\x4a\xe9\x59\x36\x32\xcd\xd4\x70\xa5\xfd\x6e\x99\x64\x4a\x66\xcc\x5e\x4c\x19\xce\x51\x5a\x5e\xf0\xf8\x12\x1d\x3f\xcd\xd6\xe5\x8f\xed\xec\x62\x60\x3c\x56\x2a\xcd\x77\xcb\xcb\x46\xe4\x59\xd4\x2f\x30\x96\x2c\xc7\x12\xe3\x14\x9e\x13\x36\x9f\xa1\x13\x31\x6b\x28\x6c\x3b\x93\xfb\x31\x9b\xb2\xfa\x07\xc7\xac\x85\xfc\x3b\x02\xf6\x34\x41\x60\xbb\x6e\x24\x12\x1b\x9d\x9e\x23\xd1\xb8\x3f\x61\xd3\x6b\xd7\xb1\x70\xdc\xa6\xc4\xb7\xa2\x3f\xe7\x35\x77\xe1\x8c\xf4\x77\x2f\xe7\xad\xf4\x36\x8e\x5f\x8e\x37\x0e\x7b\x1a\x36\xb3\x6d\x7e\x3e\xa3\xef\x98\xcf\xf3\x9c\xfe\xe3\xff\x83\xd3\xc7\x94\xbe\x03\x77\xf6\x77\xc9\xf6\xb3\xda\x8b\x68\x7d\xf7\xd1\x77\x4c\xec\xf7\x67\x7e\xa0\x6c\x54\xcc\xd3\xf9\x7d\x50\x13\x88\xfb\x14\xe9\x6c\x9e\x10\x8d\xfd\xff\x96\xb0\x5b\x65\x99\x00\x53\x57\x95\x68\xbf\xfc\x38\x14\xdf\x87\xef\x4a\x73\x0c\xf9\x9e\x36\x7e\xf6\xfb\xe6\xbf\xe9\x7b\xc5\x6b\xf8\x72\xc3\xbf\xfd\xed\xaf\x53\x27\xac\xed\xf4\x34\x62\x93\xb7\xea\x00\x71\x03\xd1\x86\x51\x4d\x3f\x2d\xfe\x1b\x00\x00\xff\xff\xfd\xac\x46\xa2\x03\x1b\x00\x00" + +func contractsStandardFungibletokenmetadataviewsCdcBytes() ([]byte, error) { + return bindataRead( + _contractsStandardFungibletokenmetadataviewsCdc, + "contracts/standard/FungibleTokenMetadataViews.cdc", + ) +} + +func contractsStandardFungibletokenmetadataviewsCdc() (*asset, error) { + bytes, err := contractsStandardFungibletokenmetadataviewsCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "contracts/standard/FungibleTokenMetadataViews.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x83, 0x94, 0x51, 0x33, 0x58, 0xfc, 0xd5, 0xb4, 0x51, 0xad, 0x68, 0xe7, 0xa2, 0x1a, 0xe8, 0x98, 0x33, 0x69, 0x66, 0xb5, 0x87, 0x59, 0xf5, 0x7, 0xfd, 0xef, 0xc5, 0x90, 0x12, 0x31, 0xd0, 0x99}} return a, nil } -var _contractsStandardFungibletokenswitchboardCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5a\xcf\x8f\xdb\x36\xf6\xbf\xcf\x5f\xf1\x9a\xc3\xf7\xeb\x01\x5c\xbb\x87\xc5\x1e\x8c\xb8\x69\x9a\x6c\x8a\xbd\x74\x83\x74\xda\x1e\x82\x00\xa1\xa5\xa7\x31\x31\x32\x29\x90\x94\x1d\xed\x60\xfe\xf7\xc5\x23\x29\x89\x94\x28\x5b\x9e\xa4\x40\x75\x99\xb1\x2d\x3d\xbe\x9f\x9f\xcf\x7b\xa4\xf8\xa1\x92\xca\xc0\xbb\x5a\xdc\xf3\x5d\x89\x77\xf2\x01\x05\x14\x4a\x1e\xe0\xc5\x6a\x1d\x7d\xbb\xca\xf2\xec\xc5\xcd\xcd\x7a\xbd\x8e\xef\xfe\xed\xc4\x4d\xb6\xdf\x49\xa6\x72\xfa\xd1\xde\x70\xb7\x47\xc8\xa4\x30\x8a\x65\x06\xcc\x9e\x19\x60\x65\x29\x4f\x1a\x98\x00\x96\x65\xb2\x16\x06\x8c\x04\x85\x19\xf2\x23\x42\xc5\x9a\x03\x0a\xa3\x81\x0b\x38\xd4\xa5\xe1\x55\x89\x50\xf8\x45\xac\x40\x43\x2b\x69\xa8\x35\x17\xf7\xc0\x80\xfe\x94\x08\x9f\x1f\x63\x0d\x3f\x38\x79\xea\xe9\x33\x64\xac\x62\x3b\x5e\x72\xd3\x78\x85\xb8\x0e\xbe\x03\xbd\x97\x75\x99\x03\xcf\x91\x95\x65\x03\x3b\x04\x6d\xa4\xc2\x1c\x18\xe9\xeb\xd6\xfc\x3c\x65\x66\xb7\xce\xfb\x7a\x57\xf2\xec\x3d\x33\x7b\xd8\xc2\xba\xb2\x9f\xd6\xbf\xa0\x40\xc5\xb3\x77\x77\xed\x5d\x9f\xad\xb4\x5d\x6d\x80\x1b\xc8\x98\x08\x57\x13\xcd\x69\x8f\xca\xae\x77\x53\xd5\xbb\xde\x69\x53\x6b\xc3\xe3\xcd\x0d\x00\xc0\x7a\x0d\xbf\x19\xa9\xd8\x3d\x02\x13\x39\x38\x4d\x80\x54\xd1\xf6\x77\x12\x56\xa2\x69\x6f\xa2\x1f\x36\xe1\x87\xe8\xa6\xde\x8e\x4d\xf0\x7f\x74\xcb\xd8\xe4\xe8\x56\xaf\xd3\x1a\xfe\x60\x75\x69\xde\xb0\x8a\x65\xdc\x34\xaf\xf3\x1c\xf3\xf6\xa7\xee\x16\x4a\x0e\x3c\xa2\xf0\x99\xc1\x35\xe0\x81\x1b\x83\x39\x9c\xf6\x28\x80\x81\xc0\x13\x1c\x49\x8e\x8d\x18\x09\xa2\x9b\x18\x09\xa3\xac\x61\x9d\x24\x1d\xf8\x45\xa1\x96\xb5\xca\x30\x5a\x8e\xb4\x77\x4b\x75\x7a\xb9\x04\xb0\x9a\x2d\x4c\x53\xe1\x06\xee\x9a\x0a\x97\xa1\xac\xff\x9c\x04\xaa\x0d\xbc\xce\x73\x85\x5a\xbf\x5a\x5a\x51\x97\xae\x3e\xb9\x06\x8f\xdf\x4e\x38\xe7\x03\x1e\xe4\xf1\x2a\xf7\x4c\xf9\x44\x39\x49\xae\x6c\xbf\x85\x77\xbc\x6a\x91\x7f\xbe\xda\x41\x73\x9d\xf4\xab\x34\x6f\xe4\xa1\x2a\xd1\x60\xfe\x16\x2b\xa9\xb9\xb9\x3e\x85\x72\xf7\xa0\x2d\x37\x21\x0d\x95\x5c\xd6\x0a\x9d\xf0\x41\x62\xdd\xc8\x01\xec\x40\xb0\xb5\x81\xdf\xdf\xf1\x2f\xff\xfc\xc7\x3c\x9b\xa7\x7d\x16\x18\x1c\x54\xb7\xab\xa8\xa4\xb9\x5c\x18\x54\x05\xcb\xd0\x99\x8c\xa2\x90\x2a\x43\x4d\x68\x05\x07\x34\x7b\xe9\x6a\x83\x60\x96\x60\x45\x0a\xa4\xcf\xd9\x1e\xb3\x07\x90\xc2\x82\x5a\x2b\x8e\x1d\x19\x2f\xd9\xae\xc4\x3e\x1e\x1c\x35\xc8\x82\x90\x35\x91\x34\x16\x61\x58\xa9\x25\xe0\x97\x4a\x6a\xb7\x68\x27\xad\x75\x75\xaf\x44\xfb\x4d\x51\x8b\x5c\xd3\xe2\x83\x08\x92\xcf\x3b\xd9\xbd\x5d\x23\x3f\xc0\x63\xe7\x64\x7a\xa4\xa8\x05\xdc\xa3\xb1\xb9\x4a\x21\xd1\x8b\xdb\x0d\x7c\xa4\xff\x3e\x8d\xee\xf3\x2a\x2c\xa8\x24\x36\xf0\x53\x4c\x13\x56\xc2\xed\xe8\x19\xcd\x0a\x7c\x7b\xf9\xb9\xf4\xd7\xaf\xac\xb8\xa7\x9b\x64\x58\x93\x01\xed\x3c\x60\xe3\x69\x09\xc1\x47\x73\xc8\x80\x8e\xfd\x5a\xb6\x54\x9d\x94\x30\x7a\x4b\x17\x7a\xa2\x47\x92\x21\x29\xdb\x6c\x42\xe4\xb9\x0d\x9f\xc3\x08\xfa\xed\xe0\xc2\xd9\xa6\xc8\x28\x8e\x4c\x34\xc3\x95\xd9\x41\x7a\xb9\xe9\xd4\x99\x8e\x6e\xe0\x84\x0d\xa4\xc9\x7a\x99\x0c\x7c\x17\x1d\x52\xad\xb5\xfc\xcd\x70\xcd\x70\xdd\xf6\xe6\xb7\x3c\x33\x5c\x0a\xa6\x1a\xd8\xcb\x32\x6f\x3d\x32\xe1\xcc\xd8\x89\x91\x20\x2e\x72\xfc\x82\x39\xec\x9a\x94\x00\x07\xc6\x04\x10\x49\x4d\x58\x96\xa1\xd6\x8b\x96\xcf\x6f\xe1\xc8\x54\xd2\x8e\x0d\x3c\xde\x59\x94\xe9\xe1\xf7\xe5\xff\x4d\xf5\x35\x3f\x3e\xc5\x8e\x61\x79\xfe\x2b\x9e\x6c\x02\xd2\xff\xda\x93\xe7\x45\x5b\x9b\x48\x4a\xe2\x32\xd2\xda\x3c\x49\x21\x29\xc7\xbf\x67\x8a\x1d\xd0\xa0\xd2\x9b\x60\xa5\x8d\x6b\x06\xfb\xd6\xcb\xb4\x30\x02\x0c\x32\x54\x86\x71\xd1\xf7\x7a\xa1\xbc\xd0\xcf\x01\xa4\xd8\xe8\x82\xd9\x2b\x59\xdf\xef\x61\xca\x53\xb6\xaa\x22\x71\x27\x5e\x96\xc4\x03\x5d\x1f\x31\x30\x30\x69\x57\x8b\x0d\x81\xa3\x17\xa1\x6d\xb3\x82\x76\x1b\x00\x99\x5b\x00\x7e\x96\x4a\x11\x50\x83\xc2\x02\x15\x8a\x0c\x5b\x8d\x9c\xbd\x95\x24\x5c\xb4\x6a\xfa\xf4\x0b\x3c\x78\xc2\xa1\xb8\x13\x73\x0d\xb5\x45\x11\xe0\x42\xf3\x1c\x27\xed\xa3\x8b\x5a\x3a\xbb\xd2\x07\x2c\x60\x1b\x08\x5f\xed\xac\x66\x8b\xdb\x11\xbf\xbd\x7a\x05\x15\x13\x3c\x83\xc5\x8b\x37\x4c\x58\x52\x75\x46\x44\x26\x38\xf5\x6d\x27\xd2\x0b\x7d\x71\x3b\x54\xf8\x4f\xf4\xd4\xc4\x0b\xd2\x93\x94\xa6\xe4\xad\x14\x1e\x79\x1d\x75\xea\x85\x54\x60\xa8\x7b\xb7\xe9\xb0\xa4\x07\x84\x34\x91\x3c\x5e\xc0\x42\x63\x59\xac\x52\xf5\xf5\xb1\x35\x73\x75\x8f\x96\x36\x16\xb7\x9f\x60\xbb\x05\xc1\xcb\xdb\xc7\x91\x91\xeb\x35\xfc\xae\x31\x08\x44\x60\x5c\x53\x21\x30\x0d\x0f\xe8\x94\x22\x5f\xb7\xe0\x92\x28\xac\xf6\xba\x52\xb1\x73\xa2\xd6\x6b\xf8\xd7\x81\xdb\x01\x25\xea\x7e\x44\xce\x33\x66\x2c\x7b\xd0\xa4\x65\x21\x20\xf0\xe0\x9e\x69\xd8\x21\x0a\x97\xf9\x23\xa9\xd4\x39\x9d\x6b\x8f\xc7\x6a\x3e\xb7\xf7\xb1\xae\xb0\xcc\xf4\x6a\xc5\x5c\x1f\xf4\xcc\xde\x3a\xc8\x57\x2f\x28\xce\xb0\x27\x2c\x35\x26\xa3\xfb\xef\x36\xdf\x4e\x4c\x03\x2b\x15\xb2\xbc\x21\x20\x1a\x26\x1c\xcd\x81\x2e\xe1\x6c\xd2\x8f\x44\xd9\x6f\x17\x2f\xee\xba\xdc\xed\x44\xb9\xbc\xe1\xb6\xe5\x0a\xa9\x6d\x90\xc9\x83\x9a\x78\xba\xe9\xff\x9b\x82\x78\xfd\x73\x63\x67\xcd\x16\xe9\xeb\xc3\x0e\x15\xb5\x6d\x67\x30\xff\x12\xd0\x47\x1d\xe0\xae\xf1\x13\x36\xa9\x5e\xd1\x2c\x09\x76\x3c\xa5\xcf\x0d\x30\x85\x97\xa4\xb9\xb1\x76\x16\x43\x58\xf1\x8e\x1c\x06\x2b\x81\x1b\xa4\x63\xd5\x98\xc2\x84\xf4\x68\x71\x9f\x09\x4e\xa6\xff\x40\xde\xe9\xfb\x21\xff\x61\xd4\xba\x0c\x75\x4d\xa0\xbe\xf7\xfd\xc2\xab\xfd\xb1\x9f\x7d\x3f\x2d\xfb\x95\x7d\x77\x9f\x00\xfc\x5f\xd0\xd5\x6d\xbb\xfb\x71\xb5\xb5\xe0\x51\xdb\x59\xb2\xa5\x4e\xf8\xb5\x93\xb5\x48\x96\xc0\x7a\x0d\xef\xa4\x02\x64\xd9\xde\x3a\x78\x49\x4f\x38\x4e\x60\x34\x2c\x06\x19\x4f\xfd\xa0\x67\x0e\x33\x94\xc1\xc5\x98\x29\xff\x5f\xa7\xdb\x27\xc8\xbb\xd6\x2b\x12\x43\x89\x4f\x2a\x50\x51\xb8\x58\x8f\x4b\x93\x4c\x0b\x54\xda\x3a\x3b\x09\x73\x66\x51\xac\x8d\xcb\x98\xb3\xbe\x31\xd3\xc2\x33\xd9\x16\x42\xec\xf1\xeb\x12\xfe\x38\x02\xc5\x1c\x74\x6d\xdb\xc5\xa2\x2e\xcb\x66\xb5\x5a\x8d\x1e\xe6\xc5\x0c\xc6\x4e\x78\xd5\x2f\xbc\x5a\xad\x28\xc6\x1d\xd1\x0a\xe9\x98\x56\xc6\x54\xeb\x3a\xa3\x18\xff\x92\x22\xe7\x11\xee\x77\xb3\x18\x37\x50\xf3\x19\xcc\x7b\x4e\xdc\x19\x26\x6d\xaf\x6b\x8d\x98\x23\xf3\xf9\x2c\x7d\x4e\xe4\x19\x02\x6f\xaf\x6f\x4d\xe4\x63\x02\x6f\x49\x7b\x4c\xc8\x49\x08\x6a\xaf\xa7\xd1\xb7\x4f\xf3\xb8\xcf\x0d\xad\x7f\xf8\x74\xa0\xff\x89\xf7\xbe\x7e\xba\x21\x4c\xa2\x0e\xf5\x2f\x1c\x71\x46\x6a\x5a\xef\xcf\x50\xcc\xce\x5e\x3b\x8c\x37\xf5\xae\x19\x55\x02\xa7\xfd\x9d\x47\x15\xbf\x21\x71\xd6\x3c\xf8\x1b\x4c\x2a\x93\xa0\x24\xa1\xe0\x0e\x54\x07\xa1\x77\x96\x45\x72\x26\x71\x66\xe5\x6e\x5e\x3c\x60\x93\x2a\xd0\x91\x36\x5f\xd3\xff\x0f\x65\xa9\x60\x03\xba\xbd\x52\x18\x12\xef\x06\xff\xb5\xe3\xc0\x75\xad\xfe\x00\x2e\xda\x4d\x82\x3b\xf6\x90\x02\x0a\x17\x41\xbb\x19\x26\x6b\x72\x17\x37\x6d\x26\x57\x4a\x56\x13\xbd\xf2\x65\xb4\xb1\x9c\xe4\xd7\x26\x5a\xe2\x66\x16\x7e\xb8\x2d\x46\x42\x0e\xff\x2c\x15\x7b\x4a\xe3\xb3\xa8\x74\xc5\x86\xe7\xa0\xb4\xa9\xb0\xba\x95\x07\x21\x87\xad\x8d\xce\x28\xb0\x69\xae\xa4\x35\x03\x9a\x3c\x57\x8f\xb1\xb9\x7e\x54\xd2\x76\x8b\xbe\xdf\x5a\xb4\xdb\x3b\x5c\x87\x29\x33\xa8\xcb\x01\x28\x4c\x99\x31\x17\x22\x20\xc0\x88\x04\xce\x75\xe5\x3f\xd0\xa2\x2b\x85\xd8\xf9\x2f\xbf\xb7\xb1\x9d\x4c\xd3\x60\x9f\xf9\x72\xaa\x1a\x45\x8d\x35\xa1\x0a\xe5\xac\x4b\xd9\x49\x16\xe9\x53\x79\x66\xda\x4e\x4a\x0a\xd2\xd9\xef\x7d\xe6\x7a\x09\xec\x28\xb9\xdd\x50\xb5\xbe\x7b\xb0\xc9\x1e\xf6\xb4\x5c\x4f\x0a\x8c\x22\x3c\xab\x3e\x8e\xed\x3e\xbf\x2b\x12\xdb\x04\xfa\x01\xae\x30\xed\xf6\x2b\x01\x1e\x31\x8a\x76\xac\x39\x87\x5f\xbb\x64\x99\xd4\xe2\x03\x9a\x5a\x09\x7d\x55\x71\x2e\xe1\xc4\xcd\x5e\xd6\x26\xea\x4a\x23\x35\xdc\x71\x88\x77\x58\x8b\x55\x34\x06\xb8\xee\xbf\xa8\xcb\x25\xd8\xee\x96\x97\xa5\x3d\x08\x66\x5c\x0c\xdb\xdc\x69\x81\xa3\xac\x15\x88\x79\x57\x63\xb4\x0c\x85\xa0\x90\xb5\x38\xdf\x3e\x7c\xdd\x29\xc8\xb8\x7d\xb8\x53\x96\x14\xdb\xe1\xd3\xa7\x67\x7f\x94\xd9\x26\xe3\xa5\x3e\xa0\x9f\x9f\x72\xd4\x5c\x85\xe8\x51\x29\xd4\xc4\x86\xee\x98\x2b\x94\x30\x9c\xa5\xfc\x1c\x75\x2d\xec\x4d\x5d\xb3\xe0\x30\x31\x96\xb9\x0d\x50\xe3\x3c\x33\x8d\x3b\x41\x87\x72\x61\x93\xd1\x39\xe7\x84\xee\xf5\x82\xf3\x02\xe7\xcd\x97\x97\x31\x75\x72\xda\xfc\xb3\xcf\xee\x0e\x3b\x28\x36\x9a\xf1\x7c\xd0\x06\x87\xd7\x79\x34\x9d\x1d\x93\x2e\x36\x54\x8f\xb9\x62\xa7\x45\x7b\x70\x6b\xe3\xb2\x63\x25\x13\x19\xde\x8e\x29\x61\x38\x93\x8c\x76\x42\x8a\xfe\x14\x82\xf1\xd2\x4f\xca\x5a\x1e\xa8\xf6\x98\x96\x62\x98\x69\xe1\x7a\x3f\xfe\xb0\xfa\x61\xec\x30\xdb\x6d\x4d\x9f\x3b\xc7\x89\x34\xff\x94\x3d\x65\xf0\xfc\xa7\x67\x35\x6a\x63\xf7\x29\x0b\x9a\xc9\x70\x0d\x7c\x99\xa3\x36\x4a\x36\xe3\xfb\xbc\x08\xc1\xcb\x29\xea\x8c\x8e\x7f\xfb\xc3\x20\x0a\x84\x05\x18\x09\x0f\x42\x9e\xe0\xb4\xe7\xd9\xbe\x7d\x67\xa8\x3b\x65\x8a\x49\x38\x75\xce\xed\xb0\xa4\x62\xca\x8d\x33\xbe\xba\xe7\xf1\xc4\x03\x36\xba\xaf\xd5\x7e\x27\x8c\x38\x2b\xb1\x71\x39\x79\x6e\x15\x6d\xa8\x59\x7e\xf3\xaf\x0c\x61\x81\x99\xe1\x47\x2c\xe3\xf1\xb6\xdd\x43\x3a\x0b\xea\x13\xc7\xe6\x89\x8e\xd0\xad\x62\x8e\x68\x6f\xed\x6e\xdc\xc2\xc7\x4f\xa3\x3d\xbd\x8e\xa1\x81\x8b\x33\x23\x0e\x79\x66\x9c\xfb\xbc\xb8\xb4\xfb\x62\x57\xfe\x6e\x65\xcf\x89\xa6\xe0\x26\x56\x77\xc5\xaa\x0a\x45\xbe\xe8\x1e\xbf\x5c\xe5\x89\xfc\x8b\x65\xa6\x52\x91\x0b\x6e\x46\xfb\x6d\x84\xc1\x82\x1b\xce\x4a\xfe\x5f\x1c\xed\x33\x4f\xed\x8d\x4e\xfa\x00\xb6\xf0\x18\x6e\x8c\x04\x2a\xd8\xb3\x7f\x85\xcc\xe0\xb9\x77\x0c\xde\xf5\x47\xa5\xfd\xfb\x77\x46\xfa\x27\xfd\x98\xb8\x2b\x99\x78\x88\x18\x13\x5e\x43\xad\x51\xc1\xa1\xd6\x94\x7a\x65\xd9\x09\xb4\x3d\x79\x57\x73\xfd\xa6\xb1\xeb\x3e\xc8\x75\x18\xd6\x92\x25\x63\xee\x76\xeb\xd8\xfd\xf8\xcd\x23\xca\xcb\x91\x15\x94\x9b\x3f\xc5\xaf\xbb\x0d\xa2\xf3\xf2\xfb\xd6\x82\xe8\xb1\xd0\x3f\xa3\xf0\x58\x27\x07\x2f\xbf\xc1\x16\xd6\x5e\xad\x75\x31\xf5\x2e\x63\xf4\x70\xf2\x4d\xbf\xa9\x47\x83\xb7\x78\x3a\x01\xd7\xbd\x32\xd8\x5a\xf3\x74\xf3\xbf\x00\x00\x00\xff\xff\xd9\x54\xd0\xcf\xa0\x29\x00\x00" +var _contractsStandardFungibletokenswitchboardCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5c\x4b\x73\xdc\x36\xf2\xbf\xeb\x53\xb4\x75\xf8\x7b\x54\xa5\x50\x39\xfc\x6b\x0f\x2a\xcb\xcf\xac\x53\x3e\x6c\x36\x65\x2b\xf1\xc1\xe5\x2a\x61\xc8\xa6\x06\x2b\x0e\xc0\x02\xc0\x19\x4f\x5c\xfa\xee\x5b\x0d\x80\x24\xc0\xd7\x70\xa4\x71\xbc\x5b\x9b\x39\x24\xd6\x0c\xd9\xe8\x6e\xf4\xe3\xd7\xdd\x20\xf9\xba\x94\xca\xc0\xdb\x4a\xdc\xf2\x65\x81\xd7\xf2\x0e\x05\xe4\x4a\xae\xe1\x34\xb9\x88\xbe\x4d\xd2\x2c\x3d\x3d\x39\xb9\xb8\xb8\x80\xeb\x15\x42\x2a\x85\x51\x2c\x35\x60\x56\xcc\x00\x2b\x0a\xb9\xd5\xc0\x04\xb0\x34\x95\x95\x30\x60\x24\x28\x4c\x91\x6f\x10\x4a\xb6\x5b\xa3\x30\x1a\xb8\x80\x75\x55\x18\x5e\x16\x08\xb9\xa7\x6d\x09\x1a\x5a\x40\x43\xa5\xb9\xb8\x05\x06\xf4\xbf\x02\xe1\xe6\x6b\xcc\xc0\x7b\x47\x4f\xdd\xdf\x40\xca\x4a\xb6\xe4\x05\x37\xbb\xc4\x73\xc4\x75\xf0\x25\xe8\x95\xac\x8a\x0c\x78\x86\xac\x28\x76\xb0\x44\xd0\x46\x2a\xcc\x80\x11\xc3\x6e\xd1\x9b\x88\xfa\x87\x2d\x37\xe9\x6a\x29\x99\xca\x9a\x85\x7e\xad\x96\x05\x4f\x7f\x65\x66\x05\x57\x70\x51\xda\xbf\x2e\x7e\x46\x81\x8a\xa7\x6f\xaf\xeb\xab\x6e\x2c\xb5\x65\x65\x80\x1b\x48\x99\x08\x57\x13\xbb\xed\x0a\x15\x5a\x26\x4f\x58\x9a\xa2\xd6\x0b\x56\x14\x67\xad\xfa\xc6\x98\x80\xaf\x27\x27\x00\x00\x17\x17\xf0\xc1\x48\xc5\x6e\x11\x98\xc8\xc0\xb1\x04\xc4\x93\xb6\xbf\x87\x44\x0b\x34\xf5\xc5\x74\xc1\x65\xf8\xc7\xe0\xc5\xad\x80\x97\xc1\xbf\x07\x2f\xed\xeb\x24\xba\xa5\x77\x0f\x0a\xc3\x4d\x81\xb4\xf1\xf0\xcf\xad\x40\x55\x8b\xe3\xcc\x07\x37\xf4\x83\xb5\x1d\xae\x01\xd7\xdc\x18\xcc\x60\xbb\x42\x01\x0c\x04\x6e\x61\xc3\xaa\xc2\x84\x5b\xca\x35\xb0\x2c\xc3\x8c\x2c\x8b\x35\xb4\x74\xa0\x31\x85\x5a\x56\x2a\xc5\xa4\xfe\xb5\xcf\x94\x5d\xf5\x77\x22\xfd\xa6\xa1\xfc\x8a\xa8\x2e\xcc\xae\xc4\x4b\xb8\xde\x95\x78\x1e\x12\xb5\xac\x5f\xc2\xab\x2c\x53\xa8\xf5\x8b\x73\x4b\x72\xdf\xa7\xe5\xba\x73\xfb\xd9\x01\x4a\x18\x52\x80\xc2\xb5\xdc\x60\xe6\x1c\xf4\xa8\x4a\x78\xef\x28\x47\x6a\x78\xb4\x1e\x8e\xa6\x8b\x0c\x4b\xa9\xbd\x77\x09\x69\xc8\xc3\x52\xb9\x2e\x0b\x34\x98\xed\x13\xf4\x17\x69\xde\xd4\xd7\xfe\xe4\xe8\x44\x52\xb2\x35\xc5\xab\x4b\xf8\xed\x2d\xff\xf2\xb7\xff\x9f\x27\xd8\xb8\x62\x3a\x52\x71\x61\x50\xe5\x2c\x45\x27\x19\x8a\x5c\xaa\x14\x35\xc5\x20\x58\xa3\x59\x49\x67\xce\x14\x3d\x29\x58\x48\x81\xf4\x77\xba\xc2\xf4\x0e\xa4\xb0\xa1\xaa\x26\xc7\x36\x8c\x17\x6c\x59\x60\xab\x52\x8e\x1a\x64\x4e\x01\x73\xc0\x00\x6c\xb8\x60\x85\x96\x80\x5f\x4a\xa9\xdd\xa2\x0d\xb5\x5a\xa3\x8e\x09\x4d\xab\xd6\x5f\xe5\x95\xc8\x34\xad\xce\xcd\xb8\x6e\x9b\x55\x5a\x09\x83\xe0\xe5\xa3\xd4\xd7\x46\x99\xe1\xad\x1b\x8e\x5b\x5a\x04\x6e\xd1\x58\x2b\xa4\x7d\xd0\x1f\xb9\x59\x79\x25\x2e\xce\x2e\xe1\xeb\xb5\xdd\x22\xff\xcd\xfd\x5e\x42\x1f\xaa\x92\x12\x19\x66\x2d\xc5\x80\xcc\x6b\x29\x8b\x3d\x34\xb8\xee\x93\x08\xec\xe4\xcc\x11\x19\xa4\x41\xb7\x7b\xe5\x2d\xc8\x33\x2f\xe1\x65\x27\x73\x59\x8a\xf7\x67\xa3\x77\x6b\x96\xe3\x4f\x73\x28\x8c\xfd\xf0\x62\x5a\x38\xa2\xff\x5a\x2a\x25\xb7\xaf\x77\x7d\xc1\xfe\x6f\x2c\xcf\x3a\xaa\xf7\xb1\x49\x37\x3b\x6f\x2d\xda\x26\x3a\x6f\xcf\xdd\xd4\xee\xd2\x7a\x0d\x03\x54\x43\x25\xb4\xdf\x73\x67\xfc\x94\xf7\x89\x86\x24\x6f\xb2\x2e\x91\x65\xd6\x80\x5d\xc4\xa3\xdf\xd6\xce\xa0\x6b\x27\xe9\x59\x32\x13\xbb\xee\xca\x6c\x2d\x3d\xdd\xd6\x79\x48\x72\x3d\xc3\xae\x03\x6b\xbe\x84\x61\xfd\x9c\x0f\x9a\x7c\xb3\x13\xc4\xdc\x4f\x3c\x35\x5c\x0a\xa6\x76\xb0\x92\x45\x56\x8b\x39\xa2\xa1\x58\x33\x11\x21\x2e\x32\xfc\x82\x19\x2c\x77\x43\x04\x5c\xae\x20\xd1\x92\xf0\xae\xae\x51\xd4\xa0\xe3\x0c\x36\x4c\x35\xab\xbe\x09\x16\x6d\x3c\xa6\xcd\x0c\xcf\x46\xcd\xe3\xf9\x7d\x2c\xec\xab\x2c\xd3\x3e\x7b\xef\x15\x70\x47\x9b\x4c\x92\x04\xa1\x2b\x22\x16\xe7\xb1\xae\x40\x74\xc5\xcb\x92\x29\xb6\x0e\x48\x5e\x3a\x60\x1a\x2d\xe1\x62\x1f\x30\x48\x51\x19\xc6\x45\x8b\x3b\x43\x52\xa1\x16\x83\x30\x68\xf7\x0e\xcc\x4a\xc9\xea\x76\x35\x05\x47\xc9\x15\x22\x82\x5b\x5e\x14\x94\xa5\x1a\xc4\xd2\x11\x75\x72\x9b\x6c\x4a\x71\x81\x81\x65\xd9\x2f\xb8\xb5\x3e\xbe\x08\x05\x9d\xb5\x3d\x67\x41\x00\x76\x4b\x81\x0b\x02\xc0\x40\x61\x8e\x0a\x45\x8a\x35\x73\x4e\xf8\x52\x52\x3c\xb7\x1c\x7b\x4b\x0b\xd4\xb9\xc5\x2e\xb9\x2d\x73\x48\xdf\x46\x01\xe0\x42\xf3\x0c\x47\x77\x95\x3e\x84\x24\xed\x4a\xef\x31\x87\xab\x10\xc6\x2f\x2d\x67\x8b\xb3\x5e\xfe\x7d\xf1\x02\x4a\x26\x78\xba\x38\x1d\xc5\xeb\xe1\xbf\x03\x8d\x91\x9a\x84\x85\x0b\x4e\xea\x48\x66\x27\xaf\x05\x52\x2d\x17\x4f\xe0\x74\x22\xff\x27\xa9\x14\x29\x33\x8b\xd3\x7f\xb0\x3b\x04\x5d\x29\x1f\x03\x3b\x6a\x2a\xa9\x5e\xb0\x8a\xb4\x69\x95\x39\xa8\xe5\x2e\x5d\x31\x0d\x4b\x44\x01\xa5\x92\x25\xaa\x62\x07\x5c\x70\xc3\x59\xc1\xff\xc0\x2c\x81\xd3\xb3\xb3\x93\xae\x8e\xdf\x58\x30\xc0\x73\x5a\x86\x94\x4c\x2e\x56\x2a\xdc\x70\x59\x45\x25\x4f\x2e\x15\x18\x2a\x83\xac\x31\x47\x54\x78\x0e\x0b\x8d\x45\x9e\x0c\xb9\xfc\xa7\x7a\x3f\x92\x5b\x74\x59\xef\xec\x33\x5c\x5d\x81\xe0\x45\xd7\x80\x3c\x47\x95\xc6\xc0\x64\x02\xad\xee\x4a\x04\xa6\xe1\x0e\x1d\x37\x64\x15\x3e\xe2\x0d\x91\x09\x78\xa7\xc8\x6e\x56\x1d\xae\xe9\x73\x20\xd7\x01\xcd\xa1\x15\x09\x55\x5a\xce\x43\xb0\x29\x32\x9e\x32\x63\x73\x18\x15\xb2\x36\x7c\x05\xac\xd5\x3b\x36\x44\xcf\x7a\x77\xef\x07\xbb\xca\x44\x8d\xd1\xe7\x7c\x3e\x9a\xae\xd5\xd2\xc3\x9f\x56\x51\x36\x7b\xbe\x20\x17\x20\xd0\x74\x30\xd5\x01\xb0\x1e\x38\xa8\xa7\x1a\x3b\xe8\x3d\x60\xa1\x71\xd8\x4c\xde\xd5\x26\xbb\x65\x1a\x58\xa1\x90\x65\x3b\x0a\xc4\x5d\x93\x25\x0f\x22\x93\x3d\x77\x7e\xde\x23\xf5\x58\xef\x27\x28\x41\x9b\xfa\x7b\xa7\xa0\x1a\x73\xf6\xc6\xcd\xaf\x1b\x87\x6b\x98\x77\x26\xcf\x2d\x32\x0f\xb3\x7f\xe0\x7d\xe4\x04\xcf\x4e\xfb\x71\x2c\x24\xdd\x37\x81\x84\x67\x54\x31\xe7\x1c\xd5\x59\xc3\xc0\xf3\x84\x02\x42\xa4\xef\x93\xf6\x5f\x83\xb9\xb7\x5a\x2f\x51\x51\x51\x30\x2b\x0b\x53\x01\xb1\xdc\xb9\xbe\x4b\x9c\x10\x57\x68\xe3\x98\x06\xdb\xbf\xa0\xbf\x77\xc0\x54\xdd\xd8\xd8\x9b\x94\xed\xbd\x2e\x1f\x77\xc8\x80\x6b\xa3\xc4\x3c\x8c\x50\xae\xa9\x79\xd3\x73\xf4\xfc\x1f\x24\x63\x8b\x18\xfd\x1f\x21\xd1\x07\xa4\x58\xfd\x7a\xf7\x2b\x33\xab\x85\xe7\xfe\x53\xdb\xdf\xf8\x7c\xde\x32\xe1\x6b\x92\x81\xec\xfa\x33\xba\xf0\x52\xf7\xc0\xe6\x0a\xdd\x4b\x91\x4e\xa8\x2b\x2a\x6c\x5e\x39\x5a\x8b\x41\xf7\xbb\xb8\x80\xb7\x52\x01\xb2\x74\x65\xf5\x7c\x4e\x77\xb8\x04\xcc\x36\x98\x75\x43\xac\x4f\xd3\xa6\x4b\x83\x8b\x3e\x42\x79\xaa\x47\xec\x25\x6b\x20\x6d\x44\x86\x1c\xc0\x66\x3e\x2e\xfc\x96\xf7\x83\x02\x89\x16\xb0\x74\xe5\xe4\x4c\xa2\x5d\xbb\x45\x33\x01\x69\xec\xd6\xf4\x7d\xeb\x91\xc8\x66\x88\xde\x16\x0f\x47\x37\x10\x06\x3e\xbf\x2e\x05\x3f\x87\x3f\x30\x03\x5d\x59\xf3\xcb\xab\xa2\xd8\x25\x49\xd2\xbb\x99\xe7\x33\x10\xd2\x80\x62\xfd\xc2\x49\x92\xd0\x36\x87\x58\x41\xc8\x41\xb0\xe0\x70\x69\x1c\x7f\x07\xa9\xce\x83\x0e\x4f\xe6\x61\x87\x80\xd5\xdf\x8e\x80\x21\x02\x72\x13\x7b\x59\x7f\x0e\x95\x62\x0e\x4d\xc2\x00\x22\x9b\x8d\x2b\xe6\x49\xd0\x82\xc4\x61\x7c\x51\x7f\x8e\x8d\x33\x8e\x00\x2a\x7a\xf8\x61\xef\x5d\xc3\x79\xf2\xbe\xf7\xed\xfd\x61\x69\xf0\xa8\x25\x28\xe8\x12\x53\x9e\xef\xc8\x0e\xb7\x2b\x9e\xae\xe0\x86\xf4\x79\x43\x59\xe7\x66\xb8\x1f\x73\xe3\x07\x01\x11\x3d\x5f\x59\xba\x20\xc4\x4d\x62\x9d\x80\xdb\x10\xc3\x45\x5a\x54\x19\x05\x19\xd8\xc9\x4a\x45\x0d\xbd\xd3\xad\x62\x65\x89\xea\xb4\xc3\x9c\x93\x47\x53\x50\x59\x91\xcb\x30\xb8\x79\x69\x79\x78\x2b\xd5\x96\xa9\x8c\x8b\xdb\xc4\xff\x13\xd5\x4d\x02\xef\x5c\xff\xd4\xb6\x04\x3b\x9c\x55\xda\x31\x25\x37\xa8\xb6\x8a\x1b\xe7\x9b\xce\x17\x8d\x61\xe9\xca\xb7\xdd\x9b\x2a\x3a\xac\x0a\xb9\x59\xc9\x2a\x2e\x7f\x57\x6c\x63\x9d\x56\xb6\xfd\x1b\x16\x85\xfe\x9c\x2b\x6d\xfe\x97\x4a\xfb\x40\x2a\xdf\x7b\xab\x15\x2c\xf3\xae\xa9\x7a\x65\xd9\x41\x52\x64\x33\x3d\x5e\x5a\x85\x9c\x83\x62\x14\xf4\xe9\x1a\x87\x4e\xbd\x8d\xda\x0a\xd7\xd8\xbe\x5d\x1d\x63\x9b\x74\x44\xbf\x45\xf4\x34\xe3\xd9\x50\xdc\x9b\x8d\xa0\x3e\x3a\x53\x3d\xbc\x57\xf1\x80\x62\x65\xe4\x13\xb4\x36\xfb\x08\x2d\x2c\xa6\x3b\xb3\x95\xad\x54\x77\x21\x0c\xb6\xb2\x6a\x8d\xca\xc0\xa2\xc7\x5c\x90\x96\x6d\xb3\x7e\x28\xb6\xae\x51\x6b\x76\x8b\x97\x83\x92\x1d\x5c\xce\x78\xcd\x4e\xf6\x34\x58\xd8\xd5\xb0\xb0\x53\xc9\x0d\xcf\x22\x20\xb8\xb7\xea\xf9\x56\xcd\x8d\x4e\x49\xd4\x03\xb2\x35\x22\xb0\x4e\x61\x3d\x05\x0d\xaa\x10\x0b\x4c\x80\xb6\xf1\xe4\x4e\xe4\x26\xb2\xf9\x31\xbb\x02\x83\x1d\x81\xf1\x2c\xdd\xdb\x06\x67\xb9\xf4\xdf\xbe\x31\x3d\x30\x39\xcf\x28\xe8\xcf\x47\xb6\x65\x28\xb3\xfe\x81\x4a\x82\x54\xb0\x26\x40\x3c\xbb\xc2\x74\x31\x32\x0e\x34\x43\x03\xab\x91\x34\xab\xa7\xf2\xac\xee\xc4\xc3\x7e\xd0\xfc\x2f\x49\xb4\x3a\xca\xb4\xbd\x3c\x4b\x7a\x9c\x99\x69\x29\x29\x46\xf7\xcd\x4b\xb6\xc7\x2d\xd9\xad\x48\x6d\x96\x6b\xca\xf5\x6e\xaa\x93\xf1\x7e\x49\xd1\x16\xb3\xdf\xb5\x15\xe0\xc3\xed\x64\x47\xc0\xcb\xf8\x89\xac\xf4\xf3\x31\x12\xd8\x5f\x2d\x86\xbd\x2d\x06\x7e\xfe\x57\x97\xe1\x3b\x77\x19\x1e\x50\xba\xef\xab\xa5\xa7\xd3\xb7\xfe\xc4\x3f\xcf\x28\xc8\x0f\x2c\xc6\x0f\xac\xb8\x0f\xc8\xe3\xf5\xa7\xcd\xe7\x24\xc1\x78\x80\x78\x64\xe1\x7d\x58\xd1\xdd\x37\xeb\x99\xa5\xb5\x3b\x21\x44\xd9\x6f\x46\x65\xdd\x20\xd0\x6f\x3c\xde\xed\x31\xe3\x27\xe1\xbd\xc4\x1b\x9d\x9c\x7a\xe0\x30\xd6\xd1\xf8\x8f\x1f\xc6\x7a\x20\x30\xb9\x05\xf0\xb8\x59\x2c\x1c\x3e\x8e\xf9\xd6\xf5\x8b\xfb\xfc\x09\x55\x4c\x7f\x42\x3b\x1a\x10\x25\xe4\xdc\x4d\x36\x3b\x66\xeb\xb6\x68\x5e\x05\x93\xb8\x8b\x17\x77\xb8\x1b\xea\xe9\xf5\xb2\xf5\xdf\x8f\x58\xce\x78\xaf\xd9\x5b\xd0\xd4\xa7\x07\x47\x4a\x9a\x39\x9d\xc8\xef\x5e\xe0\x5c\xb3\xbb\xa1\xe8\xe6\x36\xd5\x1e\x45\x92\x15\x69\xd0\xd5\x11\xde\x3a\x4b\x54\x53\x6d\xa7\xc1\xd0\x28\x55\x0d\x78\x29\x3b\xf2\xfd\xc8\xdc\x9d\x08\xa3\xe0\xd7\x02\xe5\x41\x2e\xa7\x83\xea\x83\x8e\xac\x8d\x23\xd0\xa1\x68\x2f\x05\xea\xf8\xa4\xf5\x64\xf4\x69\xc4\xe9\x98\x13\x5c\x4d\x20\x02\x5a\x2c\x68\xd4\x3f\x3a\x46\x79\x26\x9a\xc0\x54\x37\x09\x2d\x4f\x33\xa3\x4d\xbc\x37\x6e\x33\xa8\x0e\xf1\xb3\xe0\xfa\xba\x98\xf5\x70\xe4\x3b\x67\x91\xe7\x6e\x9e\x63\x82\xc3\x6c\xb6\x85\xc9\x75\x73\x3e\x0d\xdc\xf9\xfd\x30\xb7\xc1\xc8\x28\x7a\x40\x02\x85\x29\x2f\x39\x05\x0d\x81\xe8\xce\x84\xb6\xa1\x8f\x36\x93\xab\xa6\xee\xb0\x58\x3f\xa8\x9d\x8d\xb4\x07\xdc\xfc\x99\x3d\x77\xee\xdf\x0c\x68\xc5\x9e\x51\x1b\x0a\xa2\x3e\x19\xc6\x9d\x4a\xef\x68\x19\x6a\xae\x6a\x12\x53\x39\x6c\xcc\xa0\x8e\x97\xd1\xba\xd6\x32\x95\xc6\x66\x99\x4e\xe3\x3b\x75\x33\x38\xd6\x9a\x4b\x4c\xc7\xb3\xa1\x04\xfe\xb4\xcc\xd8\x44\xfd\x38\xd0\x3c\xfb\x81\xfe\xff\xf0\x30\x6c\x94\xef\x29\xd9\x78\xdc\x0b\xc7\x11\xb1\x39\x48\x35\x0e\xc7\xbe\x47\x91\x75\x8e\x5f\xb2\x8d\xe4\xf6\xf4\xa6\x35\x96\x3b\x1b\xb8\xc3\xfa\xab\xeb\x99\x7b\x63\xfa\xa6\x3e\x63\x1c\x4f\x02\xec\xf2\xa6\xf6\x15\x52\x3a\xa1\x3a\x3d\x00\x68\x1b\x13\x99\x58\x4a\xa1\xa9\x94\x38\x24\x73\x9c\xd7\x4d\xa6\x5e\xc7\xce\x9d\x0a\xe7\x91\x7d\xda\xb2\xb3\xad\x36\xcf\xc1\x56\x7d\xbc\x28\xec\xe3\x2d\x8c\x8b\x48\xa3\x11\x39\x4f\xa8\xe7\xea\x14\x79\x9a\x60\x41\xe4\x49\xad\xb9\xac\xc4\x34\x4a\x3f\xe2\x49\xea\x7e\xc6\xbb\x56\x16\xb4\xd5\x7d\x0f\x9f\xf6\x7b\xcf\x67\xec\x05\xdc\x6d\xd1\x1e\x05\x34\x32\x9e\x52\xa1\xa6\xc0\xeb\xce\xfc\x47\x01\xbc\x53\xc0\xfb\xe2\xfd\x18\xa9\x73\xf8\xd8\xd6\x47\x04\xe3\x04\x5e\xee\xa9\x4f\x1a\x81\xa7\x7b\x1c\xef\x72\xd8\xa2\x6b\xcd\x4e\x13\x9c\xd7\xab\xd8\x1b\xe3\xc7\x3b\x17\x1f\x5b\xcb\x6d\xac\x92\x54\x6e\xc7\x5e\xfd\xe4\x52\x7f\x26\x03\x59\x42\x0e\x93\x29\xb6\x5d\xd4\x0f\x92\xd8\x6f\x97\xac\x60\x22\xc5\xb3\xf9\xe5\xb6\xe7\x91\xe7\xed\x98\x92\xf1\xc2\x9f\xd2\xd0\x72\x4d\xce\xc2\xb4\xec\x9d\xec\x0c\x97\x83\xe7\xf0\x63\xf2\xe3\x80\x02\x2c\x68\x1f\x7a\x12\x66\x50\x60\x87\xda\x63\x6b\x19\xee\x26\x0c\xc9\x3c\x7c\xe5\x03\xf1\x7d\x5f\x7f\x3e\xa8\x39\xed\x4f\xe8\x32\x43\x6d\x94\xdc\x41\xef\x32\x4f\x40\xf0\x62\x2c\x07\xd9\x29\xa1\x1e\xcc\x8f\x86\xd7\xa3\x70\x1b\xb2\xb9\x86\x0d\x2b\x78\x76\x8c\x70\xbf\x8d\x3b\xf7\xbb\x16\x85\x2d\xd1\x3d\x12\x84\x13\xeb\x78\xa9\x18\x2c\xa5\x2c\x90\x09\x58\x33\x3b\xcf\xec\x61\x75\xa9\x6a\xe6\x99\x67\x9e\xc2\xb6\x90\x66\x30\xa6\x36\x8f\x90\x58\x06\xea\x76\xc6\xd0\x53\x24\xaf\xa5\x2c\x3a\x96\xc7\xf3\xfd\x83\x39\x7b\x58\x68\xc0\x62\xbd\x3c\x39\x2b\x34\x76\x76\x79\x68\x37\xf7\xac\xf3\xa4\x1e\xd3\x8e\x6d\xf9\xcf\x68\xb4\xcf\x48\x1e\x23\x30\xad\xf9\xad\xa8\x77\xbb\xe9\x44\x8c\x3c\x6a\xe1\x9e\x40\x25\x18\x80\xa4\x3c\xa6\x76\xb0\xc4\x94\x55\x1a\x9b\x8c\xca\xcd\x39\xa1\x15\x0f\x15\x4a\xa9\xb5\x4f\xc3\x50\x48\x79\x07\x95\xc8\xd0\xcd\x38\x57\x52\x3a\x20\xad\x11\x49\x87\x6c\x64\x24\x4f\xa4\x64\x0e\x4c\x00\x7e\x29\x31\xb5\xad\x22\x6b\x58\x76\x3b\x13\xc7\xd2\x0a\x8b\x52\xc3\x6d\x45\x20\x9d\xdd\x32\x2e\xb4\x01\x2e\x72\x42\x6e\x58\xec\x20\x5d\x31\x4e\x42\x76\xe6\x59\x44\x43\xda\xf3\x04\x5c\xf4\x0c\x1c\xd6\xac\xe0\xa9\x3d\x52\x76\xc7\x6d\x08\xcd\xa1\x2a\xb3\xb6\xbf\x90\xda\x87\x6f\x4b\xe5\x3a\x10\x05\xd7\x04\xad\xb4\xcb\x17\x4b\x24\xf2\x6b\x96\x79\xfc\xc9\x14\xd6\x56\x28\x5c\xe9\x98\x2b\x29\xcc\xc8\xcc\xe6\xbb\xb8\x94\x00\x59\xda\x79\x44\x31\x8a\x20\x53\x29\x74\xb5\x46\xd5\xcc\xa2\x3a\xb5\x91\x5d\xeb\xc2\xca\xc9\x8c\xaf\xdb\xa8\x9c\x92\x5b\x31\xed\x76\x0f\x7d\x72\xab\xef\x89\x4f\xac\x8b\x8c\xbb\xb1\x19\x38\x31\x01\xc3\xe1\xf2\x11\x6e\xd8\x2b\xc4\xba\x63\x66\x82\x59\xc6\x75\x55\xfc\x19\x1d\x09\x77\x42\x6e\xfd\x48\xd8\x3f\x29\xde\x1e\xfa\xd9\x7b\x78\xcb\xa1\xab\x92\x29\xe7\xca\x75\x71\xca\x0a\x29\x6e\xad\x6f\xba\x79\x9a\x1f\x25\xda\x79\x5a\xdc\xc9\xb1\x36\xe4\xd7\xad\x0f\xff\x1c\x80\xbe\x5f\x05\xe3\x2c\x58\xb3\xb2\xac\x83\xf2\xf8\xa1\xa3\x78\x7d\x32\x6c\x0f\x93\x1a\xf3\xb3\x69\xf3\xa9\xae\xd9\xde\x0b\x8d\x1f\xf2\xcc\x65\xc7\x16\x08\x86\x61\x9e\x63\x6a\xf8\x06\xbb\xb7\xf7\x6f\xbe\x82\xaf\x3d\x6c\xd3\x9c\xbe\xb1\xd3\xc4\xf8\xf8\x4d\xc1\x3b\x0d\x51\x72\xab\xc6\xc7\x81\x4f\xd8\x56\x72\x87\xbb\xa1\x41\xe0\x64\xfa\x69\x48\xb7\xb9\x61\x1c\x38\xda\x27\x0f\xed\x78\x3e\xa8\x37\xc7\xf6\x20\xfc\x8c\x2a\x2c\x58\x7f\x12\xb2\x87\x6c\x8e\x2d\x34\x85\x28\xbd\x11\x8e\xf2\x71\x80\x1f\x52\xb4\x76\xe4\x5c\xa6\xf4\x13\x7c\x3b\xdd\xd7\xf5\xb3\xb3\x6e\x52\x61\x1f\x55\xf7\x15\x65\x44\xd6\x39\x71\xef\x98\x86\x7b\xf1\x03\x11\x7d\xea\xbf\x7c\xda\x2c\xbc\xdf\xc3\x82\x87\x2c\x65\x0e\x6f\xaf\x3d\x4f\x83\xc7\xe8\x92\xbd\xee\x31\xe3\x49\xe2\x01\xcf\xd0\xd1\x5d\xba\x73\x7d\xcf\x19\xc8\xb8\xeb\xfd\xfe\x36\xf6\x1d\x52\xdf\x6b\xe2\x3c\x8f\xb8\x49\xb8\xfe\x50\x2d\x49\x8b\x0b\x99\xbb\x64\xf3\x6c\xb8\x5a\x7e\xbe\x38\x9b\x3a\xe8\xdd\xd1\x4a\xcc\x14\x5c\x81\x51\xd5\xf0\xb1\xee\xfe\x01\xe0\x07\xb2\x19\x0c\xf5\x27\x39\xa5\x3d\xac\x69\xbb\x3a\x73\xb6\x6a\xeb\x94\xf6\x64\x92\xb8\xae\x96\x35\x2f\x8d\x85\x59\xe3\x82\xab\x70\xe1\x64\xcc\x02\x47\x89\xdb\xf2\xb0\x25\xde\x58\xd3\xd8\x7a\x63\xd6\xd4\x51\x74\x87\xe4\xd1\x4c\xa2\xfe\x74\x4d\xa3\xb3\xde\xa4\x75\xd4\x9f\x61\x2b\x19\xff\x65\xfe\xb1\x72\x08\x20\x4d\xcc\xe8\x58\xc0\x7c\xef\x23\xe3\x76\x85\x16\x37\x3b\x10\x6e\x63\xda\x2d\xdf\xf8\x40\x69\x1f\x26\x4b\x53\x2c\x4d\xfb\x28\xf7\xfb\xf0\xf1\x78\x68\xc2\x6f\xd0\x02\x4c\xdd\x6b\x75\xb0\x74\x0f\xb9\x5b\x42\xfe\x05\x37\xff\xaa\x74\x1d\x94\xad\xba\x88\x68\x86\x79\xd4\xca\x78\xc4\xeb\x0e\xf6\x07\xba\xda\x51\x66\x99\xad\x6f\xe6\xb4\xc9\xe2\xaa\x67\x06\xae\x2a\x1c\x45\xa1\xcd\xe5\xf1\xbe\xf9\xa7\x10\xa3\xa2\x71\xf8\x24\x03\xd5\x3d\xbd\x30\x78\x71\x01\xef\xa2\x41\xc7\xac\xe3\x48\xa3\x01\x22\x0e\xf7\x7e\xf1\xe0\x2d\x0a\x6f\xa3\x94\xea\x5f\x9d\x44\x45\x82\x42\x2a\x0e\xdc\x74\x76\x59\x30\x71\x17\x4f\x72\x5e\x41\xa5\x51\xc1\x9a\xf6\x3c\x65\x45\xd1\x10\xb4\x09\xb7\x49\xd4\xed\x31\x2c\x07\x19\x49\x25\x98\x85\x6f\xec\xf0\xc5\x87\x76\x6f\x07\x1a\x7f\x19\x82\xad\xfb\x2d\x53\xc1\x08\x84\x92\xe1\xcb\xf8\x45\x45\x9d\x4d\x7a\xf6\x83\x97\x24\xba\x2b\xd4\x42\x6f\x17\xac\x2e\x83\xb7\x15\xc1\x15\x5c\x78\xf6\x2e\xf2\x91\xb9\x4c\x7c\xf3\xe0\xbb\x9a\xc6\x6e\x75\x17\xc7\x04\x0e\x7b\xe9\x93\x97\xe6\xfe\xe4\xdf\x01\x00\x00\xff\xff\x6c\xdc\xe8\x7f\x41\x4b\x00\x00" func contractsStandardFungibletokenswitchboardCdcBytes() ([]byte, error) { return bindataRead( @@ -220,11 +304,11 @@ func contractsStandardFungibletokenswitchboardCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/standard/FungibleTokenSwitchboard.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0xd0, 0xb1, 0x34, 0x41, 0xb2, 0xeb, 0x1a, 0x94, 0x85, 0x17, 0x4e, 0x4c, 0x7b, 0x9f, 0x7d, 0x5e, 0x40, 0x9d, 0xca, 0xda, 0x5, 0xdf, 0xc0, 0xc4, 0xf0, 0x18, 0x6f, 0x46, 0xb7, 0x7a, 0x1b}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x58, 0xb4, 0xe1, 0x66, 0x6, 0xeb, 0x11, 0xcd, 0x55, 0x66, 0xe8, 0x47, 0xe6, 0x34, 0x52, 0x27, 0x71, 0xc8, 0x2e, 0x2c, 0x29, 0xd, 0x63, 0x22, 0x41, 0xac, 0xf6, 0x14, 0x17, 0x3b, 0x3e, 0xc5}} return a, nil } -var _contractsStandardMetadataviewsCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x7c\x6b\x6f\x1b\x39\xb2\xe8\x77\xff\x8a\x1a\x2f\x90\xb5\xb3\xb2\xe4\xcc\xce\x0d\xee\x15\x46\x3b\x37\x93\xc4\xb3\x3e\x48\x72\x8c\xd8\xd9\x73\x80\x20\x88\xa9\xee\x92\xc4\x75\xbf\x86\x64\x5b\xd6\x06\xf9\xef\x07\x55\x7c\x34\xfb\xa1\x47\x3c\xd9\xe3\x0f\x89\xa4\x26\x8b\xc5\x62\xbd\xab\xd8\x93\xa7\x4f\x8f\x8e\x6e\x56\x52\x43\x52\x16\x46\x89\xc4\x80\xcc\xab\x0c\x73\x2c\x8c\x06\xb3\x42\xc8\xd1\x88\x54\x18\x01\xda\x88\x22\x15\x2a\x85\x4a\x95\x55\xa9\x31\x3d\x92\x05\x5c\xbc\xb9\xbc\x3a\x3b\x7f\xfe\xd7\xe7\xe3\xa3\xa3\xf7\xb8\x98\xc2\xca\x98\x4a\x4f\x27\x93\xa5\x34\xab\x7a\x3e\x4e\xca\x7c\x52\x16\x8b\xac\x5c\x4f\xf8\x9f\x79\x56\xce\x27\xb9\xd0\x06\xd5\x64\x91\xc9\x4a\x4f\x7e\x3c\xff\xf1\xd9\xf9\xff\x7b\xf6\xfc\xac\x58\x98\x33\xbf\xd8\x38\x4f\x8f\x8e\xae\x8d\xaa\x13\xa3\x41\x14\x29\x28\xd4\x65\xad\x12\xd4\x90\x88\xa2\x41\x11\xca\x02\xa1\x54\x90\x97\x0a\x8f\x02\xa6\x66\x53\xa1\x1e\x41\x22\xb2\x0c\x53\xb8\x97\xb8\xd6\x63\x78\x2d\x92\x15\x7f\xe6\xc7\xa0\xb0\x52\xa8\x69\x97\x47\x02\x52\xb9\x58\xa0\x22\x78\x77\xb2\x48\xa1\x5c\x84\x5d\x8f\x40\xd7\xc9\x0a\x84\x06\x01\x89\x42\x61\x4a\x05\x73\x59\x2e\x95\xa8\x56\x9b\xa3\x52\x81\x80\xff\xb8\x7a\xfd\x1b\xc8\x5c\x2c\x11\x16\x32\xc3\xf1\xd1\xd3\xc9\xd1\x91\xcc\xab\x52\x19\xb8\xa8\x8b\xa5\x9c\x67\x78\x53\xde\x61\x01\x0b\x55\xe6\x70\x3c\x9e\xb4\x7e\x1d\x27\x69\x72\xec\xc7\xbf\x2b\x8b\xe1\x29\xdd\x07\x76\xd6\x51\x55\xcf\x9b\x83\x7b\xeb\x70\xfe\x07\x6d\x18\xbe\x1c\x1d\x01\x00\x4c\x26\x13\x78\x01\xef\x51\x97\xd9\x3d\x2a\x3a\xbb\x7b\x99\xa2\x06\x91\x24\xa8\x35\x98\x12\x04\x68\x34\xf1\x9e\x1d\xc5\xfc\xf4\x08\x8c\xe6\x13\x21\x82\xfb\xf3\x80\x13\x1c\x2f\xc7\x20\x0a\x78\x77\x71\x73\xda\x39\x1c\x43\x7c\x25\x0b\x83\x6a\x21\x12\x0c\x70\x4c\xe9\xd1\x88\xb0\x20\x56\xe3\x75\xc1\xac\x84\x01\x69\x40\xd7\x15\xd1\xa4\x83\x08\xed\x38\x2c\x1e\x60\x37\x1b\xfc\xc2\xa3\xfc\xc8\x45\x5d\xc0\x12\x0d\x53\xe4\xe4\x74\x0a\x1f\x6f\x36\x15\x7e\xea\x0d\x51\x76\x36\x0d\x3b\xf9\xcc\x68\x4c\x81\x46\x9e\x4e\xe1\x45\xb1\xb1\x7c\xf8\x0b\xcf\xfa\x3a\x44\xd5\x97\x65\x96\x61\x62\x64\x59\x80\x24\x46\x59\xaa\xb2\xae\x88\xa2\xcc\x6e\x0e\xb8\x22\x52\xa4\xf8\x00\xf3\x0d\x5c\xbe\xfa\xa6\x4d\x45\xf0\xfb\xdb\x9b\x97\x4a\x95\x6b\x42\xdd\x0f\x3f\x91\xe9\x14\x3e\x5c\x16\xe6\xf9\x4f\xa7\x53\x78\xf2\xc5\xff\xfe\x75\x88\x34\x97\xaf\x2c\x61\xec\xf8\x4f\xdd\x4d\xbe\xbb\xb8\x21\xd0\x03\xfb\xd2\x50\x6b\x4c\xe9\xe8\x96\xf2\x1e\x49\x3c\x4a\x3a\x78\x83\x50\xc9\xc4\xd4\x0a\x69\xa0\xe5\x8b\xde\x5e\x1d\x1f\x79\xe0\xed\x4d\x65\x68\xa0\xd9\x41\xef\x51\x5d\xef\x78\x98\x4a\x5d\x65\x62\x33\x85\x57\xf6\xc3\x2f\xbd\x11\xf8\x60\x50\x15\x22\xfb\xf0\xfe\xcd\x14\x5e\x37\x5f\xfa\x23\x93\x40\xf5\x57\xc2\x88\x29\x61\xfb\xb2\xf5\xd3\xce\x29\x1e\x91\xf6\xac\x6d\x58\xa9\x72\x23\x32\x23\x51\x4f\xe1\xbd\xff\xd8\x1f\x65\x94\x90\x46\x4f\xe1\x86\xff\xff\xe5\x28\x0c\x90\x85\x34\x27\xe1\x1b\xff\x92\x82\x27\xd2\xa8\xf5\x80\xc8\xb7\xe5\x91\x23\x1e\x34\xd4\x6b\x3f\x8f\x48\x07\x6d\xda\xb5\xc7\xb5\x09\x07\x43\x94\xdb\x3a\x21\xa0\x30\x48\xb7\xf6\xb4\x40\x34\x88\xa9\xd6\x1e\xd3\x25\x99\xff\xfd\x34\x62\x3a\xfa\xd3\x98\x2d\xc6\x32\x85\x19\xc8\xb4\xff\x80\x89\x36\x63\xda\xf5\x1f\x7a\xb2\xcd\x3c\x01\xfb\x43\x62\xca\xcd\x62\x3a\xf6\x87\x76\x88\x37\xeb\x50\x73\xe7\x84\x80\x48\xef\xb7\xfe\xb4\x86\x78\xb3\x86\x90\xfd\x61\x96\x7e\x30\x73\x84\x0c\x03\xbe\x76\x15\x85\x5f\x9c\x15\xc5\x5c\x68\x99\x38\x63\xcb\xda\xbc\x48\xb2\x9a\xac\x0e\x69\xf9\x42\xe4\x38\x82\x14\x75\xa2\x64\xc5\x4a\x4d\x14\x69\x63\x1c\x56\x75\x3e\x2f\x84\xcc\x60\x41\xd6\xb5\x80\x72\xfe\x4f\x4c\xcc\x18\xde\x96\xda\xb8\x2f\x1a\xf4\xaa\xac\xb3\xb4\x6b\x6a\x68\xc1\xbe\x62\x75\xca\xc6\x23\xf8\xa5\x11\x1b\x5a\xef\xc6\x61\x44\xda\x8a\xb0\x73\xcb\xc5\x63\x3a\xe3\xa5\x86\x85\xc4\x2c\x85\xb5\xcc\x32\x98\xa3\x3f\x76\x4c\x41\x16\x90\x49\xed\x5c\x16\xb3\x42\x85\x8b\x52\xa1\xc3\xb6\x05\x66\xce\xbf\x2a\x43\x3b\x4c\xca\x22\x91\x1a\x87\xd7\xf4\xb2\x4f\x38\x4e\xe1\xda\x28\x59\x2c\xdb\x3b\x78\x01\x6b\x25\x8d\xc1\xa2\x45\xd3\xef\xb4\x1d\x01\x29\x1a\x21\xbd\x1f\xd5\x06\x3b\x6a\x81\xd2\x25\x9b\xff\x39\xb2\x37\x06\xf7\xa8\xe6\xa5\x0e\x0e\x02\x54\x42\x09\x76\x9b\x40\x16\xda\xa0\x60\x37\x4b\x80\x96\xc5\x32\x43\xc8\x64\x81\xa7\xbb\x29\x10\xed\x6e\x1b\x21\x74\x2e\xb2\x2c\x62\xa1\xe0\xe4\x89\x47\xd2\xc4\xf1\xd9\x9c\xec\xdb\x1a\xe7\x67\x0b\x25\xb1\x48\xb3\x0d\x7b\x7a\x70\x22\xc7\xc8\xee\xdf\x08\xae\xde\xfd\x76\xda\x02\xc2\x7c\xef\xe8\xd1\x67\x90\x11\x6d\xf8\x0e\x2a\x85\x6c\x4a\x47\x80\x26\xd9\xbd\xfb\xb0\xa9\xc8\x25\xf9\x72\x21\x33\xfc\xba\xcb\x0c\xc4\x5c\xd3\x51\xf6\x7d\x6a\x76\x34\xe7\xf6\x05\xfd\x90\x41\x25\xca\xc2\x34\xe3\x95\x07\x74\x65\xc4\xa1\xb3\x18\x87\x01\xcd\x13\x4e\x71\xd6\xe0\xb2\x5d\xff\xbc\x80\x15\x66\x15\x2a\x76\x48\xb0\x11\x77\xe6\x61\x0e\x08\xc4\x02\x61\xed\x54\x61\xe4\x00\xb9\x81\xce\xef\xf3\xbe\x52\xcb\x6f\x3a\x8d\x4c\x62\xb4\x65\xb9\xe0\x93\x61\xb9\x98\xb5\x66\x8f\x63\x87\x92\x1c\xc9\x9f\xdd\xf4\xbf\x9d\x9c\x76\x89\xe6\xa1\x38\x10\x20\xf4\x2f\x91\xae\x82\xce\x9f\x42\x53\xab\x02\xee\x5b\x0f\xbe\x1e\xf5\x3f\xb9\x81\x85\xa3\x59\x44\x29\x3a\x43\xe7\xcf\x61\x81\x4a\x26\x91\xc7\xc9\x5c\xdb\x84\x46\x20\x2c\xa3\x6b\x53\x2a\x4c\x81\x44\x48\x41\xb9\x58\x40\xb2\x12\xb2\xe8\x47\x08\x04\x5a\x7b\xae\xf7\xee\xa1\x42\x8e\xad\x28\x76\xe3\x28\x49\x8f\x80\x7c\xff\xd2\x6a\xc9\x92\xd4\x24\xe4\x98\x4a\xb1\x55\x75\x37\xf8\x31\xee\x7d\x1f\xb8\x56\x92\x9c\x58\xa7\x14\x3a\xfb\xfd\xfb\xcd\xcd\x55\xb3\x67\xde\x8f\x35\x4a\x3e\x08\xa2\xa0\x0a\x04\xab\x62\x1a\x0b\x27\xa5\xe2\x0f\xd7\xa7\xf0\xe1\xfd\x9b\xad\x58\x79\xb8\xd3\x21\xac\xd8\x53\x55\x59\x5f\x51\xb1\x8c\x46\x4f\x06\x65\xa8\x56\xc4\xf5\xb5\x8a\xf9\x7d\xf7\xa6\x3b\x50\xdc\xe9\x7b\x60\xdb\xc5\xe6\xf2\xea\xe2\x9a\xd1\xb7\x33\x88\x42\x8d\xe0\xb9\xa0\x36\xb6\xc3\x61\xa2\x63\x09\x0a\x8c\x8b\x28\xfa\x25\x79\x23\x98\x7d\xde\xa0\x5f\x1d\x03\x80\x50\xd8\xb0\x45\x4a\x11\x91\x59\xa1\x54\x1c\xca\x92\x35\x97\x29\x16\x46\x2e\x24\x2a\x38\x79\x79\xf9\xea\x34\x00\x51\x82\xd9\xc5\xac\x04\x9b\x26\xa9\x30\x31\xf0\xe1\xfd\xe5\x18\x5e\x40\x92\x49\x9a\x2b\xaa\x2a\x93\x89\x55\xf8\xc4\x89\xb5\x46\xeb\x1d\xbc\xbc\x7c\x15\x87\xa0\x0b\x8a\xf4\x89\x03\xb3\x52\xb0\xb1\x76\xbb\xb8\x97\x82\xb6\xc4\xe8\x2e\x85\xc1\xb5\xd8\x6c\x65\x01\x4f\xbd\xc0\x02\x2d\x13\xf0\xf2\xf2\x15\x31\x19\x81\x1e\xd8\x18\x91\x95\xf1\xe2\x95\x6c\xe6\x20\x9a\xdd\x82\xd4\xca\xac\xa4\x65\xa2\xc7\xb2\x5a\xe8\xb1\x2c\x27\xe4\x3b\x60\x65\xf4\xc4\xad\x70\x26\xd2\x54\x11\x4f\x17\xcb\xc9\x4e\x7b\x92\x50\x14\x35\x64\x45\xaf\x84\x59\xb1\x6c\x14\x50\xb2\x6a\x16\x19\x54\xf4\x9b\x0b\xd2\x17\x96\x5b\x42\xb0\x1a\x88\x65\x4f\xa3\x54\x9b\x83\x2c\xab\xd4\x50\x16\xd9\x06\x0a\xc4\x94\x0c\xe3\xa2\x01\xce\x49\x03\xcd\xe9\x81\x43\x80\x1e\x40\x1c\x02\x7b\xa6\x37\xda\x60\xae\x77\x93\x85\x76\xea\xe9\xd2\x0d\xb0\x22\x92\x8d\xda\x03\x07\x85\x38\xe1\x98\x21\x19\x0a\x19\x98\x9e\x33\x86\x31\x24\xe1\x0d\xa9\xea\xc2\x86\xfd\x5e\x3a\x89\x46\x4c\xec\x42\x18\x8a\xba\x29\xa0\x08\x8c\xf4\x58\x1e\x5a\x95\xeb\x33\x53\x4e\x1c\xe7\x9c\xd1\xcf\x67\x65\x71\xb6\xc6\xf9\xe4\x4f\x76\x9d\xb3\x5a\x65\x7a\x2b\xdd\xf6\x29\x23\x67\xe1\xdc\xa6\x1b\x02\x6c\xb5\x6e\xc7\x84\xc2\x74\x32\x39\x1e\xd3\x09\x0a\x73\xe2\xe9\x79\xea\x7f\x38\x9e\x1c\x87\xcf\x04\xeb\xb4\x63\x0f\x87\x94\xe1\x76\xa8\xdb\xd5\xe3\xeb\x54\x12\xfd\x75\x57\x20\xd8\x52\x13\xe1\x9b\x48\xcb\x27\xae\xb4\xae\x51\x43\x5e\x67\x46\x56\x99\x77\x36\x75\x80\xb8\x96\x24\x4a\x2b\x04\xcd\x41\x87\x02\x2d\x73\x99\x09\x15\x65\x1c\x09\x2e\x3e\x08\x8a\x6d\x68\xd1\xff\x26\xbf\xf5\xd9\xf9\x39\x68\x34\x63\xcb\x17\xb2\x58\x94\x2a\x17\x2e\xe3\x14\x60\xd7\x1a\x17\xb5\x0d\x9c\xd6\x22\xcb\xd0\x05\x22\xb9\x50\x77\x68\xaa\x4c\xe0\x50\x52\x8f\x33\x34\x90\xcb\xe5\xca\x90\xd5\xae\x84\xb2\xc9\x40\xbf\x01\x74\x24\x18\xc1\x7a\x25\x13\x56\x0d\xeb\x15\x2b\x6c\xff\x28\x46\x27\xc0\x95\xda\xd1\x3d\x18\x09\xa1\xe6\xd2\x28\xa1\x36\xa0\xe5\xbf\xe8\x57\xa5\x9c\x37\x36\xa0\x59\x03\xe1\x3b\x3a\xf5\x45\x04\xe7\xcc\xc2\x21\x87\xda\x19\xa9\x0d\x14\x75\x3e\x47\xf2\x51\x02\xde\x7d\xaf\x9c\x50\x6f\xed\x59\xf8\x5d\xf7\xd4\x01\xed\xec\x8d\xd4\x66\x0a\x1f\x1d\x46\x9f\x3a\x4a\xe1\xf3\xd0\x98\xe1\xec\x82\x1b\x07\xb3\x30\xe5\x70\x77\xb6\x61\xc4\x7d\xfe\xac\x1f\xb9\xcf\xa1\xf5\xe3\x1e\xeb\xd1\xfa\xf9\x07\xba\xb4\xd1\x81\x6e\x91\xfa\x3f\xe2\xd3\xbe\xee\x73\xa2\x65\x09\x1f\x5f\x3a\x6e\xd8\xc2\x66\xfb\x92\x02\xf1\x6c\x3f\xe6\xa2\x91\xd2\x91\xd5\xbf\x89\x8f\x15\xaf\xd1\x8c\xe0\x2a\x13\x9b\x11\x5c\xa3\x92\xa8\xdb\x81\xb2\x63\x55\xeb\xf9\xae\xc5\x86\xf8\x4f\x95\xa4\x26\x1c\x88\x24\x13\x5a\xcb\xc5\x06\xa4\xd1\x7d\x3e\x1e\xca\x08\xfc\xd2\xc7\xdf\x0b\x67\x23\x11\x87\xc4\xbe\x17\xd6\xd9\x3b\xfe\xf1\x27\xaf\x75\x4e\xfe\xf4\xe3\x4f\x93\x67\xe7\xe7\xa7\xc7\x20\x0d\xe6\x23\x9b\xc3\xb1\x40\xa5\x86\x1f\x7f\xda\x93\xb7\xe0\x91\x21\x61\xdb\x43\x33\x17\x0f\x83\xa8\x92\xe3\xb4\xa9\xf8\x04\x9c\x0a\xfd\x96\x80\x9d\x5d\x0b\xd2\x66\xb6\xce\x90\x32\x33\x64\x32\x97\x06\xd3\x33\xb7\x1c\x05\x34\x03\x90\x0f\x21\x01\x21\x2d\x35\x3d\x1b\x9c\x4a\x83\xac\xa2\xaf\x0b\xb7\xa8\xdf\xa3\x9d\xdb\xa4\x15\x34\x85\xf6\x25\xb1\xf4\x6e\x32\xe6\xe2\xc1\xd3\xb0\xeb\x96\xb4\xf8\x60\xd4\x21\xf8\xa8\x35\x73\x40\x50\x09\x9d\x1f\x66\x84\xc0\x80\x64\x0a\xad\x51\x99\x13\x77\x2e\x3f\xcf\x68\xf4\x0f\x23\xc8\x51\x6b\xb1\xc4\x29\x1c\xdf\x34\xbc\x90\x88\xa2\x28\x59\x9d\x2e\x15\x0a\xe3\xbd\x74\xe3\xce\xd8\x8e\xfa\xe1\xb8\x6b\xa9\xe3\x6f\xfb\xf3\x07\x6e\xad\x99\x03\xd7\x1f\x40\x4b\x31\x9a\x7d\xd5\x1a\xe9\x56\x57\x97\x71\x61\x2e\x79\x2c\x41\x04\xcf\x52\x5c\x48\xe2\x0d\x8d\x4a\x8a\xcc\xef\xce\x29\x93\x0a\x13\xb9\x90\x49\x5c\xd4\x80\x2b\x3b\x51\xc3\x4a\xdc\x63\x54\x4a\x64\x40\x4e\xe9\xb1\x49\x26\xdb\x23\x3a\x70\x03\x27\x04\x70\xd7\x65\x4e\x14\xdb\xb8\xc0\x85\x4d\x15\xd9\xd2\x65\x4d\x5e\xc2\xe5\x2b\x36\xe9\x3a\x1e\x14\xd7\x2f\x9d\xea\xf0\x01\x90\xf5\x79\x8f\x62\x81\x6b\xaf\x2f\x35\xe0\x43\x85\x89\xb1\xb1\x3a\x85\xed\x85\xfc\xbd\x46\x10\x79\x59\x2c\x9d\x8e\x62\x0c\x88\x9f\x65\x61\x2d\xa8\xa3\xd5\x36\xe3\x7d\x6d\x97\xe8\x47\xc4\xdb\x94\x81\xb3\xa4\xed\xc7\xc3\xd9\xa5\x2d\x0c\xb0\xd7\x80\x3a\x9c\xf6\x9a\x4f\x3b\x6e\x9f\xf1\xb4\xa3\x1e\x6b\x3a\xed\xec\x03\x0d\x67\x8f\x98\xfe\xef\x8f\x9a\xcd\xa7\xfc\xdf\x53\x70\xb5\x93\x0d\x70\x95\xd4\xff\xf8\x8a\xc5\xc0\x47\xaf\x79\x55\x6a\x31\xa7\xc0\xcf\x8d\x0d\xcd\x00\xcc\x0f\x4b\x79\x4f\x3e\xaf\xf7\x33\x13\x0a\xf1\x89\x91\x16\x92\x73\x9e\x71\x01\xf8\x29\xd0\x89\xb8\xda\x2e\xbb\x61\xa1\xfa\x60\x35\x60\x40\xeb\x6d\x0c\x8e\x22\xf9\xdf\x6b\x54\x1b\x6b\x1a\x6e\x43\xbd\xe7\xd6\x33\x1d\x57\xca\x89\x53\xfd\x7c\x92\x13\xa1\xb0\xc5\xdf\x95\xd8\x44\x65\xa3\xb9\xd0\x36\xab\x65\x56\xa8\x31\x48\x37\x8b\x4e\x1b\x9b\x1e\x8b\x87\xf5\x7b\x0e\x2a\x79\xb5\xce\xcf\x54\x22\xb9\xb3\x14\x94\x45\x2a\xef\x65\x5a\x8b\x6c\xa0\xd8\x62\xb3\x50\x1c\x8e\x9c\xda\xd8\xbc\x36\x97\xc5\xa2\xd4\x53\xf8\xe8\xce\xe6\x53\x3b\xfd\xe3\xe4\x65\x60\x5c\x97\xa3\x26\x13\xf8\x87\xc8\x64\x2a\x8c\xcb\x7a\xe9\x3a\xe7\xc4\x7b\x96\xd1\x74\xef\xe6\x4b\x54\xa1\xa8\x32\xa4\xc5\x9f\x8d\xcf\x5b\x60\xef\x05\x09\x96\x11\xd9\xcb\x9a\xfc\xd9\xf3\xce\x63\x52\x77\x9e\x53\x64\x11\xf0\x1c\x60\xe2\x08\x48\xf8\xf8\x17\x3f\x77\x9c\xd4\x66\x87\xb9\x70\xd6\x29\xcc\xfb\x79\x46\x78\xc6\xe6\xe9\xda\x6e\x36\xac\x7f\xf8\x6e\x3b\x76\x8a\x0e\x56\x6b\xb9\xb4\xf6\xcc\xc3\x1b\x88\xf9\xfd\x4a\xb3\xfe\xa0\x4e\x80\xff\xde\x4a\x65\x0c\x8f\x43\x99\x5e\x68\xbd\x44\x13\xb8\x8d\x4b\xf5\xfe\xac\x77\xe4\xfc\x06\x16\x87\xdd\xfa\xb1\x61\xe8\xbd\x2a\xb2\xc1\x66\x8f\x96\x6c\x8a\xb2\x8f\x54\x94\x01\xc0\x81\xba\x32\x96\xca\x2e\xa7\x7d\x87\x28\xc3\x16\x41\x58\x7f\x99\x52\xa1\x2b\x8d\xe9\x56\x21\xcb\xb3\x3d\x09\x97\x75\x1a\x48\x39\x36\x6d\x10\x3d\x1d\xd2\xab\x48\xfe\xe6\xb2\xf2\xed\x46\xa0\xf7\x98\xa0\xbc\x0f\x79\x43\x84\x39\x16\xb8\x90\x89\xa4\x80\xda\x39\xf7\x6e\xed\x16\xb4\x97\x82\xcf\xcc\x67\x21\x13\x85\xa4\x09\x9c\x67\xcd\x93\x3c\x60\x76\x58\xfd\xb7\xf1\x12\x0d\x1d\xc1\xc9\x69\x87\x69\x93\x32\xcf\xb1\x48\xad\x7b\x71\x06\x1f\x74\x24\x4b\xdc\x20\x45\xfe\x48\x81\x6b\x5b\xe0\xb2\x14\xb8\xc8\xca\xb5\xdd\x85\x6a\xef\x42\x6a\xa8\x89\x6e\x70\x1b\xd8\x6a\xe3\x37\x7a\x55\xcf\x33\x99\x5c\x09\xb3\x3a\x39\xbd\x6d\x07\x50\xa4\xd9\x49\x6e\xbd\x87\x94\xe2\x42\xd4\x99\x19\x58\x67\xdc\x8f\x13\xb8\xcc\x29\xb2\xac\x5c\xd3\x7c\xc5\xcd\x47\x75\xe5\x14\x24\x42\x22\x2a\x31\x97\x99\xb4\x9a\x8b\x73\x92\x35\x77\xb3\xd0\x30\x76\xb6\xb8\xba\xe9\x4b\x27\xcd\xf0\x9e\xb3\xe3\x71\x98\xc2\xcb\x30\xe8\xe7\x27\x2f\x8a\xcd\x7b\x97\x3c\xfd\xd2\xee\xe8\xf2\x1b\xff\xfa\xb7\x36\x3f\xbc\x0d\x4a\x2b\x94\x54\x12\x91\x25\x75\xe6\x51\x16\x79\x59\x17\x9c\xb4\xd1\x22\x43\xb8\x17\x59\x8d\x64\x7c\x0a\xbd\x40\xa5\x5c\x11\xc6\xf1\xda\x30\x61\xde\x95\x06\xe1\x0c\x2e\x4d\x14\x99\xcc\xd1\xac\x11\x0b\xd2\xed\x4c\xf0\xd8\x04\x70\xc8\xfd\x40\x33\x16\x2e\x97\x15\xd6\x95\x1a\x1e\x6c\xd6\xa9\x41\x5b\x6a\x38\x1f\xff\x9f\xe7\x34\xb4\x88\x19\xd5\x4d\x59\xfb\x25\x79\xd0\x53\x78\xd8\x1e\xe9\xb1\x6c\x88\x2c\xdb\x40\x85\x2a\xc1\xc2\x88\x25\x32\x7b\x07\x67\xde\x16\x59\x0d\xaa\x9c\xe5\x72\x2e\xb4\xd4\x50\x95\xb2\x30\xed\x4c\x90\x2c\x40\x97\x99\x4c\xe9\xa0\xad\x1f\xa0\x73\xa1\x4c\xe8\xa6\xd3\xb0\x5e\xc9\x8c\xf8\x21\xc5\x22\x21\x69\x59\x10\xb3\xdc\x7e\xb8\x90\x0f\xcf\x7f\xba\xb5\xc6\x54\x64\x0a\x45\xba\x09\xad\x6a\x9d\x5c\x13\xb6\x96\x67\xf6\x49\x84\x26\xd2\x26\x82\xbe\x50\x78\x5f\x56\xa8\x44\x3f\x51\xc5\x8e\x4b\x61\xa4\xc2\x6c\x43\x7a\x06\x55\x2e\x0b\xa9\x8d\xab\xd6\x2d\x29\x4c\x0e\x33\x6d\x48\xe0\x5c\xaa\xba\xa2\xf3\xfe\xbf\x7e\xd1\x72\x01\x95\xc2\x44\x6a\x59\x16\xe3\x1e\x8f\x26\xb5\x99\x82\xdd\x52\x9b\xe9\xfe\xd3\x67\x3a\x5b\x75\x62\xdb\x28\x6a\xcb\x7b\x56\x58\x68\x1b\xb4\x84\xd8\x90\x18\x47\x67\x3b\xea\xd1\x42\x61\x66\xd1\x5d\xc9\x2a\x70\x17\x3d\xb8\xb5\xc9\xca\x5b\xdf\x35\x41\xba\x72\xe4\xb2\x24\x14\x73\x2c\x01\x33\x8d\x4d\xee\xae\x5c\x17\xa8\x5c\xf6\x6e\x2d\x0a\xab\x90\xd9\x77\xeb\x0b\xe1\xce\xa6\x01\x76\xa3\x48\x22\x2a\x89\x85\xf9\x76\x39\x1d\xc5\xf4\x1b\x0d\xad\xd5\x35\x5a\x95\xc2\x01\xd3\x44\xb6\xe2\x6f\xec\x45\xc1\x93\x27\xfc\xcd\xba\x32\x30\x85\x63\x72\x6c\xac\x98\x34\xa2\x29\x0b\xfa\x49\xa6\xa0\x44\xb1\x44\x90\x63\x84\x8f\xe7\xa3\x67\x9f\x8e\xf7\xc5\xd6\x41\xfd\xce\x20\x6c\x7b\xd0\x89\xb1\xfe\x4b\xff\xd1\xfe\xfa\x7d\xcf\xd1\xf8\xcd\x19\x1f\x5b\x43\x62\x17\x34\x6c\x84\xf5\x19\x3b\x8b\x8c\x18\x1d\x75\xdb\x3d\x0e\x5a\x9b\x6b\xb7\x0d\x08\x56\xe2\x78\x8f\x85\xa9\x59\x1b\xc4\xb0\x9a\xba\xb6\x5e\x4b\x93\xac\xe6\x25\xc5\x29\x7e\xeb\xa3\x00\x77\xc5\x72\xed\x3b\x92\x60\x5e\x3b\xb0\x3e\x77\xd4\x20\x17\xbc\x0a\xfa\x56\x94\xae\xc7\xa8\xe7\x11\x0d\x9a\xae\x29\x34\xdf\xa2\xa3\x77\x4e\xc6\xa4\xe2\x87\x13\x67\xf3\x2f\x6e\x3c\x88\x2e\x15\xdf\x62\x2a\xc5\xb7\x96\x21\x42\xbb\x14\x9b\xf6\x90\xd1\x67\x58\xe0\xfb\xa9\x65\x01\x72\x6b\x24\xef\x96\x7d\x74\x12\xde\x2e\x25\x0d\xe6\xfd\xfc\x25\xff\x3a\x85\x8f\x3c\x66\x20\xad\xde\x7a\x3c\x9c\x51\xa7\x21\x30\xeb\xc0\xdf\xeb\xea\x7a\x5a\xee\xf3\x73\xed\xb8\x7d\x4e\xae\x1d\xf5\x58\x0f\xd7\xce\x3e\xd0\xbd\x0d\xa7\xd1\x55\x20\xdf\xc1\xb7\x75\x49\x31\xee\xd7\x70\xa6\xd4\xae\x37\xf2\x4d\x13\xcc\x44\xdc\xae\xa6\x14\xea\xaa\x94\x29\xc9\x2b\x77\x6e\xd0\x56\xc6\x83\xbc\xd3\x65\x1d\xae\x93\x7b\x17\x96\xe7\xf6\xf8\x62\xc1\x05\xf5\xad\x4d\x4e\x04\x85\x27\x9e\xb1\x17\x9b\x94\x39\x6a\x17\xc3\x13\x60\x0e\xf8\xe8\xc9\x44\xd7\x73\x1e\x21\xb4\x53\x54\x73\x4c\x61\x85\x0a\x9b\x2a\x28\xde\x63\x46\x66\x74\x9c\x97\xff\x92\x59\x26\xc6\xa5\x5a\x4e\xb0\x38\xfb\x70\xcd\x15\xd2\xc9\x7f\xe1\x7c\xf2\xf7\x9b\x9b\xab\xc9\xaf\x42\xcb\x44\x7f\x2e\x17\x9f\xf9\xeb\xdb\xcb\xb7\xaf\x3f\x33\xeb\xf4\x13\xb5\x9e\x1e\x5b\xcc\xcd\xe0\xee\x46\xfd\x69\x6d\x7e\x60\x76\xa7\xa9\x33\xfa\xa7\xfb\x20\x4c\x9e\x85\x4f\xbb\xa4\x21\x93\x09\x16\x9a\x9b\xef\x4b\xc5\x87\x68\xca\x40\x13\x5d\xa5\x0f\x4c\x06\x37\x4a\x4f\x5a\xba\x21\x28\x64\xe6\x96\xb8\xd3\xc7\x55\xf0\x7d\xa7\x43\x68\xfe\x26\x9d\xe5\x60\xa5\x3d\x1e\x79\xe3\x50\xe9\xa7\x0a\x09\x8f\xcb\xd0\x2d\xb1\x85\x98\x9f\xa3\x86\x8a\x9d\x0d\x35\x6d\x68\xdc\xe5\xeb\xbf\x1c\xae\x37\x3c\xb2\x7b\x15\x87\x1b\xb8\x4f\x73\xb8\x61\x8f\x55\x1d\x6e\xfa\x81\xba\xa3\x4f\xe9\xef\xa0\x3c\x06\xb4\x07\x3e\x54\x25\x87\x49\x1f\xde\xbf\xb1\x2d\x23\x64\xbd\x0d\xe6\xc0\x8d\xbe\xa1\xf9\x19\xb4\x34\xd8\x2f\x47\xc7\x1e\x26\xb3\xd5\x7c\x13\x77\xf4\x10\x2b\xdd\x21\x8c\x43\xf3\xce\xaf\x59\x99\xd0\x2a\xa5\x6f\x06\x0a\x31\x1d\x7b\x8a\x4a\x2e\x25\x2d\xd6\x04\xa3\xcc\x93\x3d\x3e\x8c\x9a\xd9\xbf\xa9\x91\xeb\x33\x1c\xd0\xca\x35\xdb\xd9\x81\xd5\xab\xf4\x46\xa8\xec\x2f\xf6\x36\x83\xf7\xd6\x7b\xa3\x7e\xfd\xc7\x96\x7c\x1b\x10\x87\x56\x7d\x07\xe9\xfa\x1d\x38\x0f\x5c\x52\xae\xcb\x77\x36\xd9\xda\x14\x81\x5d\x7b\x91\xcd\xd7\xd8\x8b\x64\x46\x49\xbc\xc7\xf6\xd5\x14\x0f\x6f\x2f\xfb\x51\xa8\x81\xa6\xae\x40\xb0\x6e\x6b\xfc\x2e\x6b\x1e\x2b\x45\xe6\x84\x97\xa3\xc8\x94\x16\xb4\x1e\x5e\x93\x28\x08\x89\xee\xf6\x45\x98\xf6\x05\x89\x88\x58\x4d\x4f\x56\x11\xe0\xae\xd9\x8c\xb1\x68\x39\x0d\xab\x7c\x62\x26\xd4\x71\x6c\x83\x5e\x3f\xe4\x73\x30\xae\x5c\xff\x52\xf8\xd2\xe9\x02\xb3\x58\xb3\xc7\x6d\xfb\x3e\xf2\x5a\x73\xa6\x94\x44\xc9\x2e\xe2\x48\x3e\xb0\xc1\x50\xc2\xf5\x14\x86\x10\x75\x27\x59\xcd\x26\x27\x14\x10\x78\x03\xbe\x44\xe0\x1a\x56\x5c\x2b\x8c\xbd\x66\xd4\x3c\xec\xed\xa5\x0a\xae\x75\xec\x66\x77\x76\xa2\xe4\xbd\x30\x18\x6f\xa5\x09\x40\x7a\x9b\xe1\x48\xc5\x16\x8d\x55\x0b\x4c\x94\x17\x32\x25\x1f\x76\xaa\xc4\xda\x96\xc6\xb8\xf4\x60\x8d\x5f\x60\x87\x55\x99\xf1\x3e\x43\x45\xa2\x85\xb7\x5b\xc1\x61\x6e\x31\xdc\x7a\x08\x11\x54\x76\x68\x7c\xf7\x6a\xab\xb0\xe1\x2e\xd4\xe9\x7a\xb1\x90\x09\x37\x42\x2a\x14\xe9\x19\x07\x33\xcd\x2d\x3b\x4f\xf5\xd6\x32\xbe\xcb\x4c\xc3\x49\x8a\x55\xa9\xa5\x81\xbf\xb8\xab\x61\xf0\x17\x77\xbf\xec\xdd\xc5\xcd\x69\x3f\x97\x16\x5a\xf9\x48\xb5\xce\x45\x72\xb7\x16\x2a\xd5\x5c\x2f\x12\x46\x3a\x72\xb1\x60\xf4\x02\x14\x2e\x96\xba\x24\x9e\x8d\xfa\x07\x71\xeb\xdd\x7b\x6c\xe4\xc4\x51\xa7\x69\x0e\x5e\xaf\xb0\x20\xe9\xe4\x82\x6e\x5d\xc5\x6b\x8e\xb9\x34\x5f\xe0\xba\x7d\xa6\xcd\x00\xd7\xc2\x91\x8b\x4d\x54\x95\x9f\x23\xe0\xef\xb5\xc8\xbc\x39\x61\xea\xbb\x2a\x91\xcd\x33\xdd\x5a\x0e\x7c\xc3\x6c\x44\x3a\xf2\xb6\x2f\x70\x76\x48\x83\xb7\xbd\x5a\xd8\xe9\x84\x08\xe7\xda\xe3\x4d\x97\xf4\x10\x8b\x52\xf1\x55\x17\xdb\xb9\x50\x35\xf2\x39\x0e\x11\x72\x41\x6a\x8f\xc2\x61\xd1\x02\xae\x50\x1b\x25\x2d\xa7\xd0\x3a\x36\x1a\xa4\x40\xad\x11\xad\x31\xbc\x2b\x8d\x98\x67\xb6\xb1\xeb\x96\x6c\x64\x97\xd2\x9d\x24\x2c\x8f\xf1\xe1\xea\xed\x88\x05\xf7\xb6\x75\x05\x75\xdc\xbf\xbf\x78\xdb\x12\x75\xee\x02\xfe\xbd\x96\x83\x7a\xaa\x4b\xd9\xef\x43\xb6\x48\x19\xf4\xe9\xd6\xce\xc0\x0d\xd3\x8d\x6b\xf8\xb9\x2c\x64\x5e\xe7\x0d\xad\xae\x9c\x40\xdf\x76\xaa\x9d\x43\x42\xbf\x7b\x4b\x17\xbe\xe5\xd3\x25\x18\xb3\x72\xad\x6d\x62\xdd\xdd\x60\x21\x1f\x2a\xaf\xcc\xa6\x6b\x7f\xbc\x56\x20\x04\xbc\x19\x60\x1b\xd0\x49\xc4\x59\xad\x3c\x90\x0a\xe4\xe4\xfd\x6b\x02\x1d\xf3\xea\xc9\xc9\xe9\x14\xfe\xff\x0e\x31\x3c\xdd\x75\xff\x64\x9b\xb1\x69\x5f\x35\x19\x56\xe3\x9d\x31\xdb\x54\xe6\x10\xa8\xae\xb0\x0d\x8d\xe9\x1e\xc3\xf0\x72\xbb\x47\x0d\xd2\xcc\x9f\xe0\x41\xb4\xf3\x90\x0e\x4b\x14\x76\x31\x1f\x4b\x7d\x6d\xa3\xdc\x93\x72\x61\x11\xfc\xf9\xc9\x97\xbd\x3a\x73\xd4\x57\xab\x5e\x90\x47\xb0\x4f\x84\xbf\x92\xeb\x37\x85\x63\xa7\x7e\x59\x32\xd8\x37\x70\x97\xfc\xf6\xab\xec\x9d\xcb\x93\x1a\xd9\x87\x42\xac\xb7\x8e\xfb\x44\xea\x1d\xdd\x81\x64\xf2\x42\x3c\x80\x5f\x7f\x0b\x07\x93\xc9\x01\x3d\x84\x50\xdf\x84\xc0\xb7\x11\x6a\xbc\x37\x37\x1c\x89\xea\x2c\xfa\xdc\x1f\xd8\x48\xeb\xac\xf9\x38\x30\x2c\x12\x58\x98\xb5\xe4\x77\x1b\xcc\x06\xf1\x59\xf7\x87\x6d\x53\x9a\x43\x9e\x75\x7f\xd8\x8e\x52\x33\x26\x42\x6c\xd7\xc4\x41\x39\x9f\xed\x94\xfe\xc3\x03\xbe\xbe\xf3\xcf\x61\xdf\xda\xb7\x91\x70\x52\xda\x45\x40\xc2\xba\x80\x69\xa8\xcf\x74\x03\xc2\x1e\xb0\x7d\x61\x61\xff\x6e\xf6\x23\x83\xc3\x1e\xa0\x03\x43\xc4\x5d\xb1\x8f\xff\xfb\xdf\x0b\x14\xc9\x68\xae\xca\x35\x97\xe9\xbc\xad\xfc\xb3\x8e\xec\xec\x23\x02\x46\xfb\x7e\x84\x02\xca\x7b\x54\x76\xdb\x45\x0a\x7c\x15\x56\x26\xda\x97\xe1\xdb\xd6\xdc\x83\x0f\x21\xde\x1c\xb3\xb2\x58\x12\xb8\x3d\xc1\x63\xef\xe6\x20\x39\xd1\x22\xef\xb9\x49\x8c\x2c\x7b\xcc\xee\x76\xaa\xad\xdf\xb9\xe5\x1a\x4c\xfa\x8e\xc2\xb6\x9b\xc8\xf0\x2a\x2a\x0e\x0d\xad\x36\x44\x0a\x1f\x28\xee\x5a\x70\xcf\xc5\xdf\x90\x64\xb0\x59\x1e\x7e\xa3\x89\x4b\x3e\xf1\x12\x5c\xaf\x8f\x8f\x5a\xcc\xcb\xda\xec\x5f\x76\xdb\x9b\x22\x5a\x6b\x5f\xff\x5e\x0b\x85\xae\x08\x62\x2f\x90\xb5\x52\xe8\x7b\x57\xd1\x0c\xe0\x32\xe7\x86\x25\x4e\x99\xb7\xe0\xff\x2a\x8a\x02\x55\x0b\x7e\x68\x9d\x68\xc0\x8e\xba\xf1\x3f\x47\x57\x82\x2f\x5a\x40\x81\x42\xc1\xb3\x1f\xcf\xcf\x1f\x9e\xff\xf5\xbc\x8f\xc0\x9c\x57\xd8\x8a\xc0\x75\x99\x48\x47\x5a\x6d\xb7\x26\x92\x55\x77\xfd\x3f\x6b\xd0\x76\xdc\xaa\xcc\xb1\x12\x4b\x6c\xf5\x54\xc3\x55\xe9\x6e\x59\xde\xe1\x26\x04\x59\xc7\xb2\xd0\x46\x2c\x95\xc8\x8f\x47\x70\x6c\xd6\xd2\x18\x54\xf4\x31\x95\x3a\x29\x55\x7a\xdc\xb9\x15\x1d\x28\xc6\x2b\xe9\x29\x7c\xb1\xbc\xd0\x3a\x9c\x7f\xd7\x6d\xe8\x6d\xcc\xd0\x1e\xd5\x3f\xcc\xf6\xf3\x3e\xad\x3b\xf3\x77\x6f\xcd\x0f\xfb\xb7\xde\xbb\xfe\x86\x77\x55\x44\xdb\x85\x59\xbc\xf9\xfe\xd0\x68\xe7\x30\x8b\xe9\x30\x00\xd5\x12\x81\x20\xda\x4f\x8f\x35\xa5\xf1\x0d\xf0\xef\x61\x4d\x0f\xbb\x28\x3e\xf8\xe2\x92\xef\x62\x53\xbf\xe9\x0a\xf9\x1e\xab\xe0\xff\xbe\xa7\x65\x6d\xb4\x5e\xe8\x86\xb3\x09\xa2\xf8\xdd\x52\xb6\x0a\x10\x22\xd0\x8e\x25\x95\xd1\x5b\x85\xc2\x0b\x6f\x68\x7e\xd4\x40\x7b\x87\x9b\x89\xed\x88\xa8\x84\x54\x1a\x04\x59\x46\x1b\x9c\x73\x5b\x3c\x57\xa0\x1e\x4c\x2d\x32\x56\x9a\xbc\xaa\x57\xf9\x68\x41\x76\x4d\x28\xbf\x1d\xa6\x6d\x33\xbb\x57\x80\x78\xde\x18\xde\xc8\x3b\x84\x5f\x45\x72\xb7\x54\x65\x5d\xa4\x23\x78\xbd\x41\x3d\x82\xbf\x0b\xa9\xb6\xa8\xab\xad\xe6\x92\x56\xa8\x8b\x14\x55\xc6\xb6\xd7\x6e\x29\x5e\x6d\xe4\xda\x66\xb4\xf1\x3f\x33\x39\x5d\xbf\x21\x0f\x09\x79\x3f\xb7\xe9\xf0\x26\x2d\x02\xd6\xc7\x85\x7f\x8e\xaa\x8f\x2d\x7c\x9c\x1f\xc0\x6e\x71\x74\x0e\xe4\x0e\xb5\x08\xeb\x88\xb9\xb6\xed\x38\x52\x5b\x32\x91\x4f\x63\xb7\x10\xd8\x20\x06\x4e\x46\x8b\xf5\x7d\x91\xe0\x08\x36\x65\xed\xae\x3a\x69\x8f\x95\xb5\xdb\x75\x21\x1f\xc0\xc8\x1c\xb5\x11\x79\x65\x83\x1c\xd7\xda\xd3\xc2\x4f\x68\x38\x7e\x25\x0c\x1e\xf3\x86\x31\xcb\xe2\xb5\xaa\x4c\x18\xb2\xf6\x6c\xaf\x92\xb2\xd0\x75\xee\x9c\x39\x4b\x33\x7e\x99\x1b\x37\xfc\xf9\x46\x42\xd1\xbd\x4e\xd0\x79\x9f\x54\x5c\x98\x6d\x5d\xb5\x82\xf7\x42\x49\xb3\x61\x0f\x50\x64\xba\x0c\xbe\x8e\xad\x46\x65\x1b\xc7\xef\xc2\x18\x25\xe7\xb5\x69\xdd\xcf\x6d\x33\x83\xe5\xfe\xd0\xda\xe1\x7b\xc4\x18\xbd\x2c\x6b\x20\x68\x76\x55\xdd\xd6\xdc\x6f\xfe\xd8\xad\xb3\xaa\x18\xa7\xfe\xe9\xdb\xdf\xa7\x0e\xe7\x5d\xd7\x88\x46\x3d\x4e\x19\x0d\x92\x62\xd4\x85\xf9\xed\x96\xc9\x1e\xfe\xcc\x2e\x38\x60\xb8\xa2\x43\x9f\xc5\x38\xf4\x87\x5a\x54\x60\xe6\x70\xda\x66\x35\x5a\x0a\xcb\x9a\x01\x7e\x67\x0c\x06\x6d\x73\xa8\x86\x72\xd3\xdd\x34\xee\x28\xf9\x0e\x4a\xca\xfa\x57\xac\x6d\x06\xd5\x94\x1e\x28\x50\xfa\xb7\x5c\x7d\xe4\x11\xfd\x5e\x9a\xce\xf3\xc1\x53\xda\xfe\xa6\xa7\xd6\x72\x64\x19\x45\x9a\x32\x20\x82\xec\x5e\xad\xb5\x03\xe4\x58\x54\x15\x16\xe9\x89\xd9\x71\xcf\xba\x6b\xc8\xdd\x4e\xf9\xa0\xf6\x16\x41\xed\xe0\x7d\x76\xd9\xbd\x01\xec\x91\x96\xd8\xce\x3e\xd0\xf6\xf6\xce\xc9\xff\x7d\x0f\x6b\xeb\x08\x15\x5e\x0d\x40\x21\xad\xd0\x32\xdb\x10\x4f\xdd\xa3\x32\x7c\x1f\x8c\x9f\x09\xc5\xc5\x2a\x77\x0c\x5c\x02\x69\x07\x77\xae\x16\x93\x96\xac\x66\x58\xaf\xa0\xe4\x2b\x5f\xd6\xe0\xf8\x55\x9b\x86\x33\x62\x69\x67\x80\x6e\xbc\x8d\x92\x9a\xcc\xfb\xaa\x0c\xb7\x2f\x6d\x11\x0a\x43\xc0\x67\x56\x98\xdb\x1b\xe0\x4a\x70\xb3\xba\xed\x5e\x74\x78\xb5\x8e\x93\x30\xbf\x29\xdd\x89\xd2\x97\xc8\x17\x0e\xca\xe8\xeb\x08\xf0\x81\x73\x68\x29\x85\xb6\xc4\xd8\x76\xcc\xa7\x5f\x4e\xa7\x7d\xea\x4f\x26\x10\xa5\xc4\xb8\x7b\x54\xbb\xf6\x51\xda\x36\xb7\x90\x7a\x1d\xe0\x2c\xac\x6d\xfd\x96\xcd\xad\x7c\x9f\xb4\x4b\xc7\x1d\x13\xbe\xe9\x34\xa2\xae\x44\x91\x66\x68\x85\x9c\x2d\x97\xc8\xb2\x0d\x77\xb3\x9a\x66\xf0\x3f\x6b\x1d\xad\xcd\xe4\xf1\xf0\xc1\x66\xfd\xc7\x31\x97\xb6\x36\x3b\x7c\x5b\x93\xec\xeb\x1d\xa1\xdd\x1a\xfb\xc3\x00\x0f\x12\x51\xc7\x0a\xf3\xf2\x1e\x4f\xee\x70\x33\x85\xbb\x6d\x57\x32\x23\xc9\x1f\x50\x32\x30\x83\x8f\xcd\x9b\x34\xc3\xfa\x0c\x9e\xc3\xbc\xf6\xd2\x01\x02\xcc\xec\x09\x39\x83\x73\x17\x6c\x0d\xcd\xfc\x78\xf7\xe9\x87\x8e\xa9\x29\x64\xd6\x98\x99\x42\x66\x6d\x6c\x3b\x2a\x86\x55\xd1\xd0\x06\x9c\x40\x39\xc6\xb2\xb3\x4e\xbb\x5a\xc8\x19\xf3\xad\x97\xc8\x23\xc3\x12\xb5\xac\x70\xf3\xbc\xad\xd6\xb8\x11\x2c\x49\x3a\xc4\xe1\x4e\xa4\x28\xa8\xe5\x37\x3e\xc4\xc1\xd8\xbc\xe6\x77\x9d\x92\xff\xc0\x63\xe7\xa5\x4b\x8f\xc6\xf7\x44\x2c\xd0\x76\x4b\x00\x5f\xe5\xb4\x10\xdd\x3d\x0e\x3b\x8a\x9d\x9b\x8e\x37\x33\x74\xa1\x98\xe7\xfa\xde\xe5\x81\xeb\xe3\xb9\x78\xe0\x12\x57\x70\x4b\x79\xc2\x4e\x90\xf6\xa6\xf1\x36\x80\x03\x2f\xa7\x8b\x51\xd6\x2c\xc0\x7b\xee\x78\x87\x1b\xf6\x6f\x70\x89\x45\x2a\xd4\x66\x04\xaf\x2b\x99\x8c\x88\x46\x38\x82\x0f\x45\x52\xe6\x79\x59\x8c\xe0\x25\xff\xdf\xbe\x6a\x6f\x97\xe8\x78\x1a\x3b\x92\x4c\x5d\x0f\xa9\x4d\xb2\x51\x6b\xbf\x83\xdd\xdf\x43\xf7\xad\xed\x99\xcd\xac\x0c\x3f\x79\xd2\x22\xcb\x6c\xdb\x3d\xec\x4a\x14\x32\x39\x39\x7e\xe1\x59\x21\xf0\x97\xf6\x27\xd9\x7e\xa1\x62\xa9\x98\x91\x7a\x97\xad\x07\x82\x6d\x8b\x4e\xe7\x74\x61\xfb\x75\x6a\xf8\x03\xad\xe0\xbd\x3b\x67\x76\x37\x87\x59\x79\x3b\x78\xef\x95\x33\xeb\x87\x3e\xf6\xbe\x19\xcf\x3e\xf4\xb2\x59\x57\x2c\xfd\xdf\x1f\xb4\xf2\xed\xfc\x03\x23\xd7\xbc\xf1\x76\xb4\x37\xf9\xd0\x79\xa3\xae\x5b\xc3\x43\x6a\xef\x2a\x85\x29\xc8\xb4\xff\x82\xd8\x69\x9b\x4e\xf4\xd3\xe0\xab\x62\xa7\x96\x15\xa2\xb7\xe8\xc5\xf3\x4e\x77\xbd\x3e\xd6\x4f\x8c\x3b\xd8\x76\x4c\xee\xbd\x53\xd6\xcf\xef\x17\x3c\x0e\x83\x12\x5e\x34\x3b\x0c\x68\xff\x76\xe2\xb7\xcf\x7a\x18\xcd\xcd\xc8\x1d\x13\x9d\xa3\xdd\xcc\x72\x46\xa9\x35\xa5\xc9\xf5\x79\xd6\xf8\xfa\x3f\x01\x00\x00\xff\xff\xc9\x2c\xaf\x8d\xab\x5d\x00\x00" +var _contractsStandardMetadataviewsCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x7d\x6d\x73\xdb\x36\xd6\xe8\xf7\xfe\x8a\x13\x3f\x33\xa9\x7d\xaf\x2c\x39\x79\xba\xbd\xf7\x7a\xaa\x76\xd3\xc4\xde\xf5\x4e\x93\xcd\x24\x4e\xf7\xce\x64\x3a\x35\x44\x42\x12\xd6\x24\xc1\x05\x40\xcb\xda\x4c\xff\xfb\x33\xe7\xe0\x85\x00\x49\x49\xb4\x9b\x6e\xfc\x21\x91\x44\xe0\xe0\xe0\xe0\xbc\xe3\x00\x14\x65\x2d\x95\x81\xcb\xa6\x5a\x89\x45\xc1\xaf\xe5\x2d\xaf\x60\xa9\x64\x09\x47\xd3\x59\xf2\xeb\x34\xcb\xb3\xa3\xaf\x5c\xfb\x37\xb2\x1a\xee\xd2\x7d\x90\xf4\xfa\x59\xf0\xcd\x3b\xae\x65\x71\xc7\x55\xe8\x11\xff\x68\x5b\x7f\x35\x9b\xcd\xe0\x7a\x2d\x34\x64\xb2\x32\x8a\x65\x06\x44\x59\x17\xbc\xe4\x95\xd1\x60\xd6\x1c\x4a\x6e\x58\xce\x0c\x03\x6d\x58\x95\x33\x95\x43\xad\x64\x2d\x35\xcf\xa9\xaf\xa8\xe0\xf2\xa7\xab\xb7\xa7\x67\xdf\xfe\xf7\xb7\x53\xfc\x85\x7e\x7d\xc7\x97\xe7\xb0\x36\xa6\xd6\xe7\xb3\xd9\x4a\x98\x75\xb3\x98\x66\xb2\x9c\xc9\x6a\x59\xc8\xcd\x6c\x59\x88\x5a\xcf\x16\x85\x5c\xcc\x4a\x26\xaa\x19\xab\xeb\x42\x64\xcc\x08\x59\xcd\x9e\x9f\x3d\x7f\x76\xf6\xff\x9e\x7d\x7b\x5a\x2d\xcd\xa9\x1f\x7c\x5a\xe6\x01\xf6\x7b\xa3\x9a\xcc\x68\x60\x55\x0e\x8a\x6b\xd9\xa8\x8c\x6b\xc8\x58\xd5\x62\x0e\xb2\xe2\x20\x15\x94\x52\x71\xea\x13\x26\x61\xb6\x35\xd7\x13\xc8\x58\x51\xf0\x1c\xee\x04\xdf\xe8\x29\x5c\xb0\x6c\x4d\x9f\xe9\x31\x28\x5e\x2b\xae\x91\x00\xd4\x97\x41\x2e\x96\x4b\xae\x10\xee\xad\xa8\x72\x90\xcb\x00\x6f\x02\xba\xc9\xd6\xc0\x34\x30\xc8\x14\x67\x46\x2a\x58\x08\xb9\x52\xac\x5e\x6f\xa9\xb7\x54\xc0\xe0\x6f\x6f\x2f\xfe\x02\xa2\x64\x2b\x0e\x4b\x51\x70\x4b\x27\x96\x65\x5c\xeb\x63\x56\x14\x27\x2d\xf1\x5f\x3b\xc0\xb8\x52\x1a\x3e\x7d\xf5\x15\x00\x00\xc2\x79\x25\x74\x5d\xb0\x2d\x08\x1c\x6a\xc1\xb4\xc8\x1c\xc6\x6b\x66\x40\x54\x59\xd1\xe4\xdc\x2e\x58\xc5\x4a\x3e\x81\x9c\xeb\x4c\x89\x1a\x49\x8a\x94\x0a\x70\xcc\xba\x29\x17\x15\x13\x05\x2c\x11\xb5\x0a\xe4\xe2\x9f\x3c\x33\x53\x78\x2d\xb5\x71\x5f\x34\xe8\xb5\x6c\x8a\x3c\x22\xa8\x41\x16\xc1\x01\xa7\x1e\x12\xfd\x1f\xcf\x41\xd3\xba\x04\x44\x1d\xee\x7e\xdc\x6b\x87\x19\x52\x0f\xb1\x74\xc3\xc6\x6d\x3a\xed\x85\x86\xa5\xe0\x45\x0e\x1b\x51\x14\xb0\xe0\x90\x5b\xc8\x3c\x47\xa6\x2b\x84\x76\x3c\x60\xd6\x5c\xf1\xa5\x54\xdc\x61\x9d\x80\x59\xd0\xaf\xca\xe0\x4c\x33\x59\x65\x42\xf3\xe1\x31\xe3\x99\x14\xdc\x10\xae\xe7\xc8\x6b\xa2\x5a\xa5\x33\x79\x01\x1b\x25\x8c\xe1\x55\x42\xe3\xcf\x34\x2d\x06\x39\x37\x4c\x78\xe6\x4c\xc1\x4e\x12\x50\x5a\x12\xd3\x2f\x38\xb1\x39\xdc\x71\xb5\x90\x9a\xc3\x31\x9f\xae\xa6\xc0\xa0\x66\x8a\x11\x1f\x82\xa8\xb4\xe1\x8c\xf8\x96\x81\x16\xd5\xaa\xe0\x50\x88\x8a\x9f\x8c\xa3\x44\x34\xcb\x5d\x04\xd1\x25\x2b\x8a\x88\xb5\x82\x04\xb1\x47\xd2\xc6\xf1\xdf\x82\x03\x83\x0d\x5f\x9c\x2e\x95\xe0\x55\x5e\x6c\x49\x7c\xe0\x58\x4c\x39\xc9\xd4\x04\xde\xbe\xf9\xcb\x49\x02\x84\xe4\xc1\xd1\xa5\xcf\x30\x13\x9c\xf8\x2d\xd4\x8a\x93\xe8\x4f\x80\x9b\x6c\x1c\x15\xc2\xe4\xce\xe1\xd3\xa5\x28\xf8\x6f\x2d\x0d\x68\xa1\x44\x25\xcc\x71\xf8\x09\xff\x62\x0e\x9a\x24\x4f\x06\x28\x9a\x36\xe8\x0f\xe6\x9f\x9c\xc0\xa7\xa4\xa5\xe6\xc5\x72\x4a\x72\x35\xa7\x01\xfb\x0f\x63\x26\x9d\xc7\x43\xf7\x9b\xb6\x0b\x38\x6f\x51\x08\xcd\x2c\x12\xbf\xb5\x2a\xe9\xaf\xbc\xa8\xb9\x02\x23\x61\xc5\x5b\xb9\x27\x26\x26\x35\xcb\x96\x1c\x36\x6c\x9b\x28\x0c\xec\xf7\x67\x64\xcd\x92\xc8\xe6\x8d\xd1\x39\xbc\x00\xc5\x49\xc9\x66\x1c\x21\x22\xbf\x28\x6f\xbe\xbc\x96\x6f\x21\x28\x6e\x1a\x55\xc1\x8b\x0a\x24\xcd\x85\x15\x61\x7c\xab\x86\x76\x6a\xa9\x65\x53\x21\xba\xae\xf5\xf1\xaf\x1d\x34\x9e\x7e\x4a\x6c\xa4\xff\xf0\xdb\x09\x9c\xfb\x11\x7e\x88\x96\x40\x2c\x89\x39\x88\x03\xe6\x09\xa8\xa9\xc3\x1e\xc1\x1d\x5f\x6f\x6b\xfe\x9d\xeb\xfe\xfd\xf1\x49\x77\x11\x3d\x14\x07\x02\x98\xfe\x21\x52\xa3\xd0\xf9\x73\x73\xbf\x4b\x1e\xfc\xf6\x55\xff\x93\x6b\x58\xb9\x35\x8c\x56\xee\x2f\xbc\xe2\x4a\x64\x20\x2a\xc3\xd5\x92\x21\xc9\x51\x6c\x5a\xc3\x07\xcc\x4a\x9a\x36\x52\xf1\x1c\x50\x86\x15\xc8\xe5\x12\xb2\x35\x13\xd5\x14\x90\x29\x75\x00\xe7\xc4\xad\xd1\x3c\xc7\xb5\x0b\x0b\xa9\xad\xcd\xd3\x13\xb8\x13\x39\x97\x56\x5d\x4b\xd4\xd7\x50\xf2\x5c\xb0\x83\xb6\xa4\xc5\x0f\x07\x8c\x68\x11\xb7\x25\x92\xe1\xb2\x36\x4a\x1c\x9f\x04\x15\xd5\x99\xf2\xcf\x64\x2c\x25\xf0\x7b\xf4\x5d\xfc\xfc\xac\xf5\xd4\x0e\x1e\x7a\x52\xc0\xc8\x56\xfc\xf5\xfa\xfa\x2d\x1c\x4b\x45\x1f\xde\x9f\xc0\x87\x77\x3f\x1d\xc4\x16\x9b\x22\x9e\xe7\xfb\xb0\xc5\x85\x6e\x54\xd1\xd7\xa4\xad\x16\x89\x1e\x0f\x8a\x7b\xa3\x50\x40\x1b\x15\x8b\xe6\x03\x28\xd3\x01\xe9\xb8\xc4\x43\xde\x2d\xee\xc3\x14\x6c\x39\xe4\xea\xed\xe5\xfb\x40\x23\xfa\xe6\x96\x1f\x98\xe2\x2d\x53\xe4\xb0\xd8\xa2\x78\x0b\x45\x5e\x0f\x3a\x17\x22\xe7\x95\x11\x4b\xc1\x15\x1c\xbf\xbc\x7a\x75\x12\x80\x28\x46\xcc\x62\xd6\x8c\x2c\xa3\x50\x3c\x33\xf0\xe1\xdd\xd5\x14\x5e\x40\x56\x08\xec\x1b\xb9\x8e\xc4\x87\x8d\xe6\xd6\x59\x79\x79\xf5\xaa\x75\x7a\x24\x2c\xd1\x73\x43\xfe\x2b\x24\x23\x9f\xc1\xf9\x63\x77\x82\xe1\x7a\x13\xba\x2b\x66\xf8\x86\x6d\x0f\x2e\x34\x36\x4e\x16\x3a\xb1\x40\x2f\xaf\x5e\x21\x4b\xe1\x10\x03\x13\x44\xaf\x8b\xf0\xa3\x11\xad\x37\x18\xf5\x4e\x20\x25\x5e\x74\x2e\x33\x3d\x15\xf5\x52\x4f\x85\x9c\xa1\x2b\xc3\x6b\xa3\x67\x6e\x84\x53\x96\xe7\x0a\x39\xb8\x5a\xcd\x46\x99\xb3\x4c\xe4\xc3\xc6\xfc\x2d\x33\x6b\x92\x88\x48\xb5\xd6\xf8\x9b\x53\xca\xb4\xe8\x5e\x21\x93\xb2\x77\xc4\xb3\xab\x23\xd5\x76\x94\x81\x17\x1a\x64\x55\x6c\xa1\xe2\x3c\x47\xfb\xbc\x6c\x81\x0b\x8d\x1e\x8b\xc8\x79\x58\xf2\xbd\x40\x47\x10\x09\xc1\x9e\xea\xad\x36\xbc\xd4\xe3\xc8\x83\x33\xf6\xf4\xf9\x61\x48\x46\x23\xfa\x4d\xd2\xd6\x83\x22\x9b\x89\x1c\xe6\x48\xf4\xfe\x23\x22\xee\x9c\x60\x0c\xc9\x73\x4b\xb7\xa6\xca\x88\xcb\xad\xc0\x5a\x06\x23\xca\x57\xcc\x88\x3b\x8e\x2a\xaa\xe5\xae\x1e\x63\xed\xa1\xd3\x5a\x6e\x4e\x8d\x9c\x39\x16\x3a\xc5\x9f\x4f\x65\x75\xba\xe1\x8b\xd9\x7f\x59\xd8\xa7\x8d\x2a\xf4\xce\x15\xf0\xd6\x18\x5d\x7c\x6d\x55\x0c\xb2\x25\x13\x15\x7e\x0c\xeb\xda\x28\x71\x90\xf6\xa3\x34\x96\x33\x97\x8e\x70\x2d\x11\x77\x9a\xca\x23\x9c\xd2\xf9\x6c\x76\x34\x45\x96\x60\xe6\xd8\xaf\xc9\x89\xff\xe1\x68\x76\x14\x3e\x23\xac\x93\x8e\x71\x1d\xd2\x98\xbb\xa1\xee\xd6\xa1\x2f\xbc\x0a\x21\x33\xe9\xac\x2d\x30\x58\x39\x83\x4c\xba\xed\x35\xdb\xa6\xe6\xd4\xb7\x43\x52\x7e\x78\x77\x05\x72\x19\x85\x73\x1c\xde\x5c\x5e\xc3\x06\x83\x20\xfa\x46\x21\xac\x5c\x52\x43\xa1\xa1\x92\x06\x18\xda\x35\x23\xc9\x25\xe6\x86\xab\x52\x54\x3c\x27\x2f\x7a\x4a\x46\x6b\x92\x68\x6d\xeb\x14\x9f\x1c\x52\x82\x1f\xde\x5d\xf5\x0c\x9d\x0f\xf4\x16\x4c\x5b\x4c\x6b\xc5\x97\xe2\x7e\x82\x4b\xc6\xaa\xed\x14\xde\x48\xe3\x45\x9e\xc2\xcf\xa2\xc0\x66\x7a\x02\x8b\xc6\xc0\x9a\x17\xf5\xb2\x29\x12\x68\xd8\x4a\xcb\x92\xa8\x01\x19\xd3\x5c\xc3\xa5\x54\xc0\xef\x19\x86\xa6\x13\x68\xea\x9c\x19\x64\x11\x06\x9b\xb5\x2c\x2c\x31\x32\x59\x14\x9c\x84\xe5\xeb\x84\x6b\x9d\xca\x5f\x63\xa4\xcb\x99\x16\xc5\x76\x94\x32\xc0\xd9\xd0\x6c\xbd\x3e\xe8\x4e\x17\x67\xea\x18\xff\x8e\x15\x0d\x4f\x1a\xbc\xf9\xfb\xf5\xc5\xb9\x15\x4a\xa1\x41\x73\x83\xb6\x12\x75\x88\xcb\x1a\x10\xef\xf0\x2a\x89\x94\xdc\x88\x3e\xbc\x4d\xe0\xd1\x08\x48\x50\xdf\xe8\xc9\x3c\xb8\x78\x3b\x66\x82\x8c\x69\xa7\x42\x9d\xfb\x8a\xff\x77\x39\x0d\xe9\x94\x23\x59\x21\x45\xd9\x25\xde\x24\xc5\x61\x50\x5b\xfa\x99\xcd\xfd\x1c\xfb\x4d\x2c\x15\xe6\x1d\x22\xc0\x0f\xfe\x87\x27\x5e\x28\xa9\x21\x7a\xef\x5d\x34\x23\x64\x07\xb8\xfb\x35\xfa\xa7\x5d\xcb\x4e\xdc\x6e\x55\x2c\xb7\x1e\xec\x28\xfe\x59\x92\xab\xd0\x8d\x1a\x6d\x5a\x2a\x17\xec\x94\x24\x36\x93\x25\x47\x9b\x68\xf5\xa5\x54\x25\xf1\xc2\xb6\xe6\x33\xdd\x2c\xa8\x05\xd3\x2e\x7a\x5b\xf0\x1c\x48\xdc\x13\x58\x41\xb5\xf3\x3b\x5e\xc8\x9a\xab\x69\x29\xff\x2d\x8a\x82\x4d\xa5\x5a\xcd\x78\x75\xfa\xe1\x3d\xa9\xfd\xd9\x3f\xf8\x62\x86\x52\x3f\xfb\x91\x69\x91\xe9\x5f\xe5\xf2\x57\xfa\xfa\xfa\xea\xf5\xc5\xaf\x14\xb8\x8d\x9a\x15\xe1\x8e\x81\xcd\x3e\x57\x36\x9e\xfa\xa4\xdf\x25\x5d\x7d\x5a\x58\xec\x31\xc7\x7f\xba\x0f\x42\xe7\x79\xf8\xb4\x5b\xcf\xfe\x43\xb1\x1a\x63\x53\xcb\xcc\x52\x41\xd9\x14\x46\xd4\x85\x5b\x36\x9b\xf8\x3b\xa4\xe1\x88\x07\x74\x97\x09\x5e\x54\xc0\xd4\x42\x18\xc5\xd4\xf6\x54\x8b\x7f\xf3\x9c\x52\x0b\x2e\x9d\xb6\x85\xaa\x29\x17\x1c\x83\x25\xc7\x43\x02\xbd\x8e\x9d\x54\xa4\xa7\xe7\xf0\x91\xda\xfe\x32\x44\xc2\x5f\x3b\x6d\x06\x25\x86\x9a\xc0\xbc\x33\xd8\x81\x88\xdd\xcd\xef\x3f\x1a\xb0\xb7\x4e\xa5\x1b\x7d\x5c\xb8\x6e\x1b\x3f\x28\x5a\xb7\x5d\x1e\x1b\xac\xdb\xde\x23\x63\xf5\xc0\x28\xd0\xf9\xfb\x0c\xa1\xba\x8f\xba\x62\x6f\xa1\x10\x19\xaf\x30\x04\xcb\x32\xa9\x72\x72\xb2\x64\x90\x7f\x5d\xe7\xf7\x24\xf2\xae\x95\x6e\xd7\xf1\xda\x27\x71\x93\x88\xdd\xf9\xde\x3e\x56\x91\x68\xaa\xc9\x8c\x0a\xed\x47\xca\x0f\x86\x44\x3f\x39\x94\x76\x07\xbd\x88\xd7\x55\x88\x83\xf6\x29\x8d\x5f\xa3\x78\x69\xaf\x9d\x48\x41\x22\xfb\x87\x2f\x63\x65\xc0\xe3\xfd\xa5\xb2\x56\x7e\xfc\x71\x62\xe0\x5a\x3f\x48\x0e\x5c\x9f\xc7\x0a\x82\xeb\x3e\x52\x12\xfa\x6c\xf0\x07\x88\x42\x48\x40\x60\xc4\x43\x54\x47\xdf\xca\xf0\x12\x68\xaf\x03\xf8\xbd\xe1\x0a\x89\xab\x85\xe1\xd3\x94\xfb\x63\xc6\x5f\x6c\xe3\xec\x01\x32\xfb\x2d\x87\x69\x48\x14\xfc\x58\xc8\x0c\xa1\x4b\x9f\x78\x68\x34\x57\x1a\xe2\xa4\x02\x65\xb5\x95\x58\x09\x1c\x8d\x32\xcb\x6e\x53\x05\xc5\x87\x76\x7e\x6a\x25\xff\x89\x7d\x6b\x74\x3c\x29\xdb\xe4\x6d\xb8\x0e\xbe\x7b\xeb\xae\xb6\xc8\xf2\x55\x10\xe8\xcd\x66\x33\x2d\xb7\xb4\x1d\xe6\xa0\xd9\xad\xb4\x3b\xae\x90\xee\xa7\x72\x49\xcf\x5a\x28\x87\x64\xf5\xc2\xd1\x07\xc9\xf7\xe8\x24\xd5\xaf\x30\x22\x4d\x35\xdf\x9b\x50\x4a\x25\x31\xc6\xea\x4b\x49\x63\x8c\xc3\x38\x89\x8c\x7a\x3c\x48\x2a\xa3\x7e\x8f\x95\xcc\x08\xc4\x48\xe9\x1c\x5e\xf8\xcf\x2e\xa1\x96\xcb\x97\xa2\xe2\x3e\x0b\x56\xd6\x52\x53\x10\xaa\xe4\x96\x15\x66\xdb\xee\x25\x53\xe3\x95\xb8\xe3\x1a\x4a\xa6\x6e\xb9\xa9\x0b\x96\x71\x0c\x8c\x02\xd0\xa6\x42\x8d\x9e\xc7\xc9\x6a\x09\xba\xa9\xed\xe6\xf8\xe5\xb5\x03\x2a\xb8\x3e\x68\xa5\xde\xb9\xe1\x3b\x2e\x9d\x4f\x87\xa7\xdb\xec\xef\x78\xc6\xc5\x5d\x48\xd9\x71\x58\xf0\x8a\x2f\x45\x26\x98\xda\xfa\x40\xcd\xcd\x27\x81\xf6\x92\x11\x67\x78\xa3\x9a\x29\x6e\xda\xa8\xdc\xf2\xa4\x03\xbc\x11\x66\x1d\xbe\x4d\x57\xdc\xe0\xba\x1e\x9f\x74\xd2\x36\x99\x2c\x4b\x5e\xe5\x36\x40\x3c\x85\x0f\xa4\x85\xdc\x06\x19\xed\x39\xa3\x2a\xac\xf8\x26\x52\x40\x70\x59\xc8\x8d\x9d\x45\x02\x4c\xa5\x53\x12\x1a\x1a\x8d\xee\xc3\xcd\x8a\x1b\x47\x1b\x3f\xeb\xb7\xcd\xa2\x10\xd9\x5b\x66\xd6\xc7\x27\x37\x13\x52\x88\x95\x34\x29\x38\x9b\x6b\xe5\xb8\xd8\xac\x29\x4c\x34\x6a\x98\x94\xd5\xba\xb4\xd5\xc9\x8a\x42\x6e\x9c\x12\x35\xd2\x46\xee\x9d\x18\x86\x48\xc6\x6a\xb6\x10\x85\x30\xb4\x95\x44\xd1\x50\x63\x1a\x45\xab\xde\x90\xda\xa7\xed\x4e\x9f\x31\x69\x9b\xef\xd4\x64\x1e\x99\x73\x78\x19\x1a\x7f\xf7\xf4\x53\x5a\x3b\xe1\xe7\xfd\xdb\xf7\x29\x6f\xbc\xb6\x81\x03\xfa\x17\x3e\x21\x93\xb1\x22\x6b\x0a\x44\x1e\xb1\x63\xa5\x6c\xac\xdb\xa4\x59\xc1\x5d\x78\x6e\x14\xab\xf4\x92\x2b\x65\x7b\xa4\x8b\xe0\x98\xb0\xa5\xd1\x1b\x69\x38\x9c\xc2\x95\x89\xf6\x3d\x17\xdc\x6c\x38\xaf\xe0\x6c\x7a\x46\xc4\x7f\x36\x3d\x4b\xc1\x5c\xdc\x63\x17\xcb\x51\xd1\xc8\x42\xc3\x3d\x75\x28\x5b\xc4\x85\x86\xb3\xe9\x9f\xbe\xc5\xa6\x55\xcc\xb6\x30\x90\x58\xd8\x78\x04\xa8\xc7\xff\x82\xfb\x69\x5f\x54\x58\x51\x6c\xa1\xe6\x2a\xe3\x95\x41\xbb\xb6\xe2\xd1\xde\x91\xdd\x6d\x35\x5c\x95\x1a\x89\xb2\x60\x5a\x68\xa8\xa5\xa8\x4c\x27\x17\x53\x81\x96\x85\xc8\x71\xa1\x31\x68\xcf\x41\x97\x4c\x99\x50\x0a\xa1\x61\xb3\xc6\x78\x3b\x63\x39\x29\x74\xb9\x5c\x22\xe7\xdc\x7c\xb8\x14\xf7\xdf\x7e\x73\xd3\x65\x1c\x66\x80\x15\x8a\xb3\x7c\xeb\x75\x83\xf6\xa9\x94\x30\x7e\x48\x22\xc1\x82\x67\x0c\xbf\x08\xa3\x53\x40\x18\x38\x3b\x77\x80\x29\x0e\xe8\x4e\x2a\x5e\x6c\x43\xde\x4c\x68\xe3\xf6\xcd\x56\x18\xe4\x45\xad\xab\x3c\x28\xa5\x54\x48\x6a\xe4\x80\xff\xeb\x51\x90\x4b\xa8\x15\xcf\x84\x0e\xe6\x7e\x88\x65\xb3\xc6\x9c\x83\x9d\x69\xca\x8e\x7f\xf7\xa6\x2a\xd9\x43\x8e\x5d\x1b\x2b\x43\x38\x39\x1c\x8a\x6d\x7d\x0e\xd6\xad\xf9\xa4\x27\x70\x8a\x17\x76\x0e\x6b\x51\x07\xb6\xc3\x07\x37\x1b\x56\x14\xdc\xdc\xf8\x34\x14\x2a\xdb\x09\xd8\x30\xd7\xac\x11\x2e\x2f\x34\xef\xaf\x03\x79\x45\x9b\x8a\x2b\x28\xc5\x6a\x6d\x60\xc3\x2a\x4a\x78\xea\x9a\x67\x62\xb9\xdd\x3d\xeb\xbd\x95\x06\xad\xeb\xf1\x40\x79\x9e\xc4\xd4\x9c\x0c\x0d\xd2\xb5\x9d\xb5\x1a\xf2\x60\xb3\xc6\xc0\xf7\x73\x12\xc8\xa7\x4f\xe9\xdb\x77\x73\x12\xcb\xf3\x5e\x53\xfc\x3b\x4a\x4a\x79\xa6\x4e\xbd\x4e\x71\x06\x88\x78\x85\xda\x14\xbf\x08\x56\x88\x7f\xdb\x65\xf3\xe6\xc9\xf7\x24\x7b\xfa\x04\x8e\x06\xe1\x87\xd4\xf5\xf5\x9a\xa3\x9b\x79\x27\x72\x9e\x07\xc9\x46\xf4\xac\x40\xcb\x25\xb4\xb9\xed\xac\x31\x53\x23\xed\xac\x8f\x4f\x4e\xf6\x03\xb6\x3b\x31\x77\xac\x10\xf9\x14\x8e\x0e\x34\x4e\x94\x17\x1a\x36\xa7\xbc\xa9\x3b\x28\x56\xad\x22\x9d\xe6\x34\x1a\x88\x29\x87\x8f\x67\x93\x67\xbf\x1c\x75\x13\xee\xf1\x37\xf2\x26\x83\xe9\x9a\x07\xc5\xd9\x6f\x84\xb3\x9e\xe3\xdc\xfb\x8f\x0e\x97\x41\x3c\x20\x89\xe4\x17\xca\xd6\x8f\x85\x0e\xaf\x63\x0f\x06\xc5\xf1\x5f\x0d\x57\x5b\x6b\x68\x6f\xde\x79\x2f\xe5\xc6\x7b\x23\x54\x95\xf7\xe6\xf2\x3a\x8a\x29\x90\x2e\xa4\x77\xee\x6b\x9e\x19\x6b\x3c\x6a\xb6\x6d\x5d\x1c\xa7\x2a\x6d\x9e\x10\xe3\x46\x92\x29\x1f\xc2\x8c\x74\x80\x10\x4e\x37\xab\xa5\x14\xdb\x3a\xf1\x55\x2c\xbb\xb5\xca\x53\x54\xb9\xb8\x13\x79\xc3\x8a\x16\x83\xae\xf4\xb6\xc9\xe5\xac\x31\x57\xd5\x52\xea\x73\xf8\xe8\x08\xf4\xcb\x9e\x14\xb3\x8b\x22\x06\x3a\x75\xc5\x11\x1d\x4b\xe4\x22\x6b\x71\x99\x01\xdd\x50\x76\x94\x15\x05\xf1\x79\x6b\xe9\x82\x5f\x84\xc2\xb5\xe0\xb0\x22\xf7\xc8\x6d\x20\x3f\x9b\x9e\x25\x60\xef\x18\xc6\x1e\x86\x15\x2f\x89\x6b\xce\x3a\x8f\x71\xc1\xbd\x34\x89\x2a\xe0\x39\xa0\x18\x22\x20\xe1\xe3\xff\xf6\x7d\xa7\x5d\x6e\x4c\x79\x9b\x69\xcd\x55\xa7\x70\x28\x81\x69\x75\xcc\xa4\xd7\xa0\xe4\x5a\xb3\x15\x7f\x80\xee\x41\x07\x79\x97\xf6\x69\xf9\xe2\x61\xba\xc7\xee\xf9\xd9\xe5\x08\x14\x8a\xd7\x43\xe8\x43\x9a\xc3\xcf\xf4\x01\x7a\x69\xd1\x18\x10\xe6\xc0\x5a\x77\x86\x3d\xe9\xb2\xd4\x0b\xad\xc5\xca\xea\x28\x8f\xf9\xa0\x42\xb1\x73\x9a\xf7\x1b\x75\x72\xf9\xef\x6c\x54\x14\xc3\xa3\xc4\x70\xdc\x28\xe9\x10\x05\xa0\x8c\xa4\x2f\xda\x34\xb5\xe5\x74\x3c\x92\x7b\x2b\xc0\x87\x53\xf3\x61\xfb\x26\xb8\xf4\x82\xeb\xe3\x93\x48\xbc\xf6\x6c\xe5\x0c\xcc\x11\xf6\xc5\xec\x2d\xdb\x7c\xa1\x24\xf2\xbb\x0e\x7d\x0e\x85\xeb\x2d\x45\x1e\x12\xac\x87\x5e\x8f\x0d\xd5\x03\x80\x91\x81\x7a\xac\xa6\xbb\x62\xf0\x59\xca\xbf\xac\x93\x66\xeb\x3a\x48\xa3\x06\xd3\x4d\x41\x0e\xe9\x3e\xb2\xb2\xc8\x8c\xa9\xea\x0f\xa9\x34\xaa\x44\x6e\x41\x50\x8c\xc7\xef\x78\x65\x1a\x8a\x0f\x62\x58\xed\x06\xb7\xde\x08\x93\xad\x17\x12\x63\x7f\x6f\xc7\xdb\xed\xe7\xb5\x65\x04\x5f\x2a\x8c\x72\x4e\x60\xa9\x54\x24\x41\x2e\x10\x08\xbf\x55\xb2\x53\x96\xdc\xad\x4a\x68\x83\xd9\x10\xcc\x7b\x84\x2e\xaf\x53\x7f\x62\x88\x79\xfa\x32\x35\x18\x26\x9f\xc7\xe3\x7c\xea\xae\xc3\xac\xa6\x87\x33\x97\x6c\xb8\xbc\x7e\x17\x0f\x7b\x20\xe3\xef\xaa\x76\x6d\xed\x4c\x54\x7f\xee\x32\x9e\x6f\x2e\xaf\xa7\xbd\xc5\xf1\xe1\x2a\xe5\x22\x14\x13\x36\xf8\x88\x4c\xfa\x2d\xdf\xce\xac\x8f\x58\x33\xa1\x34\xb0\x42\x56\x2b\x9b\x94\xd0\xb2\x6c\xe5\x8e\x76\x06\xee\x71\x59\x69\xb7\x8b\xc6\x65\x0b\xd9\x58\x26\x22\xd0\x87\xfc\x8e\x6b\x6c\x94\x14\x0a\xf4\x0a\xc2\x09\xce\x14\x7e\x12\xb7\x1c\x7e\x64\xd9\xed\x4a\xc9\xa6\xca\x27\x70\xb1\xe5\x7a\x02\x7f\x65\x42\x75\xaa\x75\xc7\x56\x6c\xd3\x48\x4d\x95\x73\x55\x6c\xc3\x16\x7d\x32\xea\xc4\x2b\x1e\xe3\x7f\x26\x42\x6b\x5b\x31\x4d\x4d\xbc\x87\xed\x89\xe1\xb5\x15\x01\xdb\x8d\x93\xdb\xeb\x7e\x51\x6d\xed\xa9\x85\x04\x2f\x57\x9e\x8c\x1a\x22\x5e\x2f\xbd\x96\x1b\x5b\xf3\xe0\xc7\xb2\xc4\xde\xd8\xd8\x4a\x68\x4b\x36\x74\x15\xed\x54\x02\xa3\xc4\xc0\x91\xcf\x45\xa5\x0d\xab\x32\x3e\x81\xad\x6c\x20\x23\x11\xd7\x1e\x2b\x1c\x8a\x41\x53\x89\x7b\x30\xa2\xe4\xda\xb0\xb2\xb6\x79\x1e\x17\xa7\x25\xf8\x31\x0d\x47\xaf\x98\xe1\x47\x34\x71\x5e\xc4\xf5\x06\x50\x17\xcc\x2c\x25\x06\xfc\x46\x22\xd2\xba\x29\x5d\x11\x9e\xa5\x1d\x15\x3a\x90\xfb\xe6\xd3\x48\xcc\x6d\x93\xee\x0e\x05\xdb\xb1\x07\xea\xb0\xd0\xdc\x32\x25\x30\xce\x61\x15\xb0\x42\xcb\xa0\x1d\x6c\xae\xbe\xd8\x3a\xc9\x60\xc6\x28\xb1\x68\x4c\x52\x0c\x95\x32\x87\x95\x96\x60\x52\x7c\x6a\x80\xd0\x2c\x8a\x16\x82\xa6\xca\x15\x37\x45\xf7\x9b\x67\x83\x37\x97\xd7\x5f\x6b\x50\x84\xd3\x6e\x6e\xb0\xcf\xcf\x1d\xee\x83\x75\x65\x49\xd1\x78\x8f\x7d\x26\x83\x74\x99\x74\x01\x3f\xbc\x48\xdc\x97\x53\xa4\x45\x12\xe1\x71\xcc\x09\xf3\x18\x87\x81\x38\xcd\xae\xcb\xdc\xe1\x34\x32\xba\x22\x75\x47\x6a\xd2\x7b\x3e\x5e\x63\x1d\xd6\x6f\xae\xa3\xeb\x40\x1b\xda\x23\x54\x5c\x00\x17\x4b\xda\x80\x8a\xe3\x2c\x5b\x3b\xdd\xb4\x57\xb9\xe9\x3d\x5b\x29\x16\xb5\x73\xf8\x48\x2d\x77\xec\xf2\x77\x1a\x0d\xae\xa1\x9b\xe3\xdc\x35\x1e\x30\xfa\xf8\x97\x06\x76\x79\xae\x5b\x03\x62\xf5\xb0\x63\x5a\x87\x37\x22\x91\x74\x49\xbd\x54\xeb\xb6\x51\xdb\x73\x52\xa5\x56\xa6\xdb\x3a\xb6\x05\x07\x96\xe7\x3c\x3f\xe8\x9a\xa2\x05\x65\x79\x4e\xa0\x70\xc2\xe7\x16\xea\x9e\x99\x4e\x91\x45\xaa\xfc\xd8\xec\x29\xa9\x4b\x3d\xd2\x68\x4e\x5f\xca\x27\x75\x28\x8c\x73\x48\x6d\xe3\x07\x79\xa3\xb6\xcb\x63\x5d\x51\xdb\x7b\xa4\x1f\xda\xe3\x6c\xff\xf7\x19\x9c\x50\xb7\x6e\xa1\xac\xd5\x48\x57\x93\x87\xc2\x78\xc7\x95\xa1\xf2\x5f\x7a\xc6\xd4\x96\x56\xc2\xf2\x04\x15\x00\xbe\xb9\xbc\x86\xc8\x41\xf1\x5b\x9f\xda\xed\x3e\x49\x52\xdf\xa4\xaf\xb9\xa0\x1a\x72\x7f\x06\xc9\xaf\x12\x69\x05\x67\xe1\xaf\xad\x13\x10\xe0\x91\xe9\x2a\xb9\x59\xcb\x70\x12\x49\x37\xcb\xa5\xb0\x0c\xb1\x12\x77\xe4\xa3\x96\x64\x5f\x28\x72\x93\x4b\x97\xe7\x72\x28\xee\x62\x34\x9c\x8f\x15\xa2\x74\x66\x0b\xee\x27\x6d\x55\xda\x75\x2b\xde\x51\x6f\x7e\x4f\xa7\xfc\xf2\x37\xac\xe4\xfa\x3c\xd9\xb8\x74\x45\x7a\x16\x1b\x67\xbf\x7d\xe2\xf7\x06\xc7\xba\x09\xc0\xfc\xdf\x2d\xdf\x3a\x6a\x31\x65\xad\xdd\x86\x55\x6e\xfc\x05\xcf\x50\x2b\xde\x58\x3c\x6e\x06\x7d\x6a\x72\xa0\x19\x76\xe8\xea\x91\x5d\xec\x8e\x78\x5c\x4b\xc7\xf1\x96\x14\x9f\x2c\xe2\x91\x89\xfb\x6d\xd2\x9d\xe7\x47\xdb\xe6\x97\x1f\x4e\xce\xfb\x0c\x39\x9b\xc1\xcb\xb0\xfa\x36\xeb\xac\x5d\xda\xd9\x4f\x29\x98\x14\xe7\xd4\xd9\xc4\xa4\x50\xad\x13\xed\x8e\x4f\xe6\xd3\x8e\xd7\xb8\xed\x24\xb0\xd7\xac\xca\x0b\x6e\x2d\x06\x11\x19\x03\x1d\xca\x88\x9b\xb6\xf1\x3f\x1b\x1d\x8d\x4d\x7c\xe2\xe1\xd3\xd9\x92\xa2\x98\xc6\x82\x9b\x4c\xd6\x97\x31\x7e\xea\x65\xa2\x6e\x11\xed\xa4\xed\x93\x01\xb1\x44\xa2\x4e\x15\x2f\xe5\x1d\x3f\xbe\xe5\xdb\x73\xb8\xdd\x95\x57\x8d\x92\x17\x03\x16\x0a\xe6\xf0\xf1\x97\xaf\x7a\xe3\x13\x78\xe2\x9b\x74\xe8\x00\x01\xe6\x76\x85\x9c\x1b\x73\x1b\x3c\x18\xec\xf9\xf1\xf6\x97\x27\x1d\x07\xa6\x12\x45\xeb\xbc\x54\xa2\x48\xb1\xed\xd8\x00\xb2\x15\x43\x13\xf0\x4c\x69\x19\xcb\xf6\x3a\xe9\xaa\x9b\xb0\x71\x12\xb2\xb9\x3d\xad\x21\xb4\x6e\x78\x9b\xe4\x75\x67\x61\x03\x04\x0a\x8c\xec\x6e\x5b\x49\xa7\x8b\xb5\x28\x45\xc1\x54\x74\x18\x78\xd9\x96\x26\xa3\x72\xf8\xff\xa8\x18\x9e\x9d\x9d\xa1\xd3\x6d\x77\x42\x03\x30\x51\xa1\xc3\x6c\xf7\x74\xad\x2f\xb3\x6c\xec\x91\x5c\xbb\xe9\x62\x37\x94\xe2\x2d\xf1\xd6\x01\x7a\x61\xeb\x4b\x2c\xbb\x2d\xd0\xb5\x51\x14\xb8\x04\xcc\x79\x2e\x68\x5a\x13\xd8\xac\x45\x46\xc7\x39\x36\x6b\x3a\x74\xe3\x1f\xed\xc2\xc3\x92\x12\x39\x55\x5b\xed\xe6\x0a\x1d\xc1\x16\x3a\x92\x7e\x39\x14\xeb\x5d\xd8\x21\x0e\x1d\x00\x8e\x31\xf1\x6d\x92\xd2\x6e\x63\x4f\xa5\xbb\xbc\xc4\x7b\x6e\x26\xf0\xb6\x60\xdb\x09\xbc\xe7\x4a\x70\x9d\x6e\x64\xb9\xe2\x4b\x7b\xb8\x6c\xc3\xb6\x51\xe9\x8d\x05\x91\x15\x4c\x6b\x8c\x6a\x50\x7f\x78\x02\x8d\x8a\x25\x7f\xe8\xcf\xc3\xf5\x8f\x6a\x3d\x77\x9c\x6f\xa5\x19\xb1\x0a\x8e\x9e\x7f\xe3\x79\xe1\xf8\xbf\x9e\x7f\x33\x7b\x76\x76\x76\x72\x44\x35\x4b\x36\xf6\x74\x80\x84\x86\xe7\xdf\xec\x89\x70\xa9\xd5\x39\x7c\xb8\xaa\x4c\x77\x63\x10\xd1\x2a\xd9\xfd\x20\x6a\x18\x88\xb9\xfa\x03\xc7\xd4\xd3\x4e\xdf\xee\xc1\x5b\x9f\x70\x09\xfb\x4a\xc8\x99\x85\x28\x85\xe1\xf9\xa9\x1b\x82\xe7\xc3\xd0\x46\x4c\x19\x11\x15\x1a\x9f\x0d\x76\xa5\x5a\x2e\x12\xb7\xa6\x72\x83\xfa\x79\xd9\xbe\x6d\xba\x0a\xc3\x59\x23\x51\x77\x8c\x3b\xc6\x5b\xb2\x7b\x4f\xbf\x83\xf1\xd7\x0f\x93\x0e\xc5\x27\x49\xf7\x01\x07\x0a\x71\x1b\x54\xe1\xb0\x27\xd5\x8f\x7f\x6e\xb5\xbe\x9b\x23\x88\x27\xfd\x6c\x3f\x1c\xca\xf8\x43\x3f\xeb\xef\xe4\xb0\x9b\xf3\x8f\x37\x1c\xbd\xa8\x8e\x4a\xfa\xc3\xce\x4d\xc7\x3e\xcf\xed\xc8\xf9\xc7\x20\x6c\xe3\x83\x59\xff\x64\x54\x0c\xf7\x87\xd2\xfd\x66\x27\xf3\x8f\x40\x04\x29\xfe\x30\x34\xa6\x03\x50\x0f\x6e\x60\xee\x8d\xbf\x1d\xc2\xf3\x6e\x5a\x24\x34\xc0\xd9\x11\x73\x8c\x0c\xa8\x93\xed\x4a\xbf\xcc\xa3\xaa\xde\x5d\xe3\xdf\x51\xf7\xde\xd3\xae\x49\x65\x40\x62\xba\x98\x37\x5e\x3b\x05\x16\x0d\xd4\x4f\x42\x9b\x73\xf8\xe8\x30\xdb\x55\x25\xdf\x6f\x38\x5c\x2a\xef\xda\xc1\x3c\x74\x19\x1b\x5c\x06\xd2\x7c\xb1\xfa\x44\x8f\xc0\xc8\xe2\x44\xd7\xfc\x61\x95\x89\xae\xd3\xa3\xcb\x12\x5d\xff\xb1\x35\x89\x2d\xbb\x75\x45\xea\x73\x15\x24\x86\xfc\xa8\x3d\x27\xe6\xfc\x82\x53\x5b\xa2\x98\x83\xe6\x4a\xb0\xc2\xf3\xaf\xdd\xae\xf0\xdb\xea\xc8\xad\x01\xd8\x5b\xdb\x51\xc3\x9a\xdd\xf1\xe8\x52\x18\x02\xe4\x66\x41\x1e\x1c\x05\x55\x1d\xb8\xc1\x64\x05\x70\xef\x31\x8c\x28\xd9\x36\x94\xd1\x51\x29\x80\xe2\xab\x06\x9d\xca\xab\x57\x36\x17\x1b\x37\x8a\x6e\xa2\x69\x63\x5f\xeb\xd7\xf8\x23\xd0\xf6\x94\xeb\xd4\xee\xcb\x26\x08\x08\x9d\x54\x15\x2c\x38\x34\x95\xf8\x57\x43\x05\x6c\xee\xb8\x3c\x39\x52\xe4\x41\x11\x2a\xa1\x8a\x83\x19\x4f\xb4\x43\xca\xe3\xbd\x1d\x72\x77\x2a\x6c\x97\x0b\x13\x4b\x72\xda\x66\x38\x99\xb9\x43\x5f\x1e\x10\x60\x87\xde\x97\x12\x5f\x37\xfc\x38\xe1\xb5\x8d\x1f\x24\xba\xb6\xcb\x63\x05\xd7\xf6\x1e\x29\xb6\xbd\x85\xfe\xdc\x42\xdb\xd6\xf9\xbb\x8c\x72\x1c\xa9\x38\x21\xb5\x39\xcd\x28\xd1\x4c\xe7\x2d\xa5\x2f\x13\x61\xbe\x6b\xc5\x79\xae\x6d\x00\x7f\xc7\x7d\x42\x48\x67\x52\x51\x18\x17\x57\x06\xb9\xca\x82\x8c\x55\x6d\x36\x88\x3a\x2d\x64\x9b\x32\xde\xc5\xfc\x6e\x4b\xa2\x7f\x1c\xd6\x0d\xe5\xaa\x7f\x6d\x2b\xda\x13\x39\xb0\x09\x42\xfd\x7c\xe5\xda\x40\x18\x52\xb2\x7b\x51\x36\x65\xbb\xa3\x45\x1d\x0e\xf8\xbe\xbb\x80\x0d\x5c\x66\x14\xa3\x6a\xcf\xb7\x1e\x38\xdb\x1f\xa2\xb5\x9f\xf8\x8a\x57\x39\x53\xdb\x09\x5c\xd4\x22\x9b\x20\x6d\xf8\x04\x3e\x54\x99\x2c\x4b\xf4\xe2\x5f\xd2\xff\x69\xd8\x36\x78\x84\x76\x44\x8d\xe0\xa0\x23\x9f\xd2\x6e\x92\x4c\x7e\xb0\x08\x70\xc8\x9f\xb7\x0b\x37\xb7\x1e\xfd\xd3\xa7\x09\x8d\xe6\xbb\xfc\xfc\x9a\x55\x22\x3b\xee\x96\xe0\xd8\xad\xa1\xbd\xd5\x7f\x96\xda\x23\x7d\xf1\x61\x4f\xdc\x22\x8c\x86\x23\xb9\xff\x4b\x59\x06\x86\x9b\x4a\x14\x37\x3b\x6b\xf9\x62\x47\xfb\x85\x47\x27\xc8\x8e\xf6\x0c\x99\x50\x8f\xb2\x5f\x08\xfb\xe8\x64\xef\x99\x79\x7b\x5e\xcb\x92\xb3\xc3\xa6\xb0\xdb\xc7\x85\xdf\x51\xbd\xd7\xa9\x54\xb1\xb3\xf9\x92\xfb\x02\x0e\x85\x91\x85\x2a\xd4\xf8\x61\x55\x2a\x76\xf3\xef\xb1\x25\x2a\xd4\x7b\x6c\x7d\x4a\x57\xd3\xf9\xbf\xcf\xa0\xfd\xdf\x5c\x5e\x93\x01\xd8\x28\x56\x6b\xca\xdd\xbe\xa4\xeb\xcd\xe8\x42\x3c\xbb\x7f\x77\x23\x72\x5b\x94\x7c\xd3\x34\xf8\xd1\x26\x76\xed\xe6\xb5\xdf\x18\x0c\xf0\x7c\xc6\x9e\xd1\x39\x94\x82\x1b\x0e\xb5\xc8\xe8\x44\x41\x38\xea\xe8\x6e\xbf\x23\xaf\x67\xf8\xea\xbb\x00\x6e\xd4\x1d\x78\x7e\x0e\xbb\xfd\x20\x91\x07\x1f\x68\x57\x13\x9c\xdb\xc1\x46\x2e\x9d\x7a\x9e\x5e\x1c\x38\xf5\x57\x55\xed\xec\xc7\xdb\xa3\x40\xdd\xbe\xf1\xd1\xa4\x9d\xfd\xdb\xe4\xe9\x2b\x66\xd8\x39\xce\xf8\x65\xf2\xd3\xa8\xae\x1e\xf9\xb4\xf7\x21\xdc\x43\xf1\x4f\x5c\x99\xb5\xb3\xb5\x4f\x6d\xbb\x6d\xb3\x83\xd7\xb6\x89\x1c\x42\xbe\x27\x79\x80\xeb\xb1\xe3\x91\x5b\x05\xd8\xb5\x0c\x69\xeb\x88\xf6\xbd\x1e\x31\xf1\xd3\x5e\x29\xc5\x61\x88\xe4\x3b\x3b\x04\xf4\x06\x09\x9d\x76\x6b\x4b\xab\x62\xf2\x76\xee\xa7\xeb\xd0\xd4\xff\x3e\x1c\x70\xe7\x74\x32\xb7\xff\x80\x08\x3a\x27\xba\x0e\x68\x7c\x87\x73\x28\x37\xe8\x37\x89\xe9\x38\x8f\xa9\xda\x6f\xda\x21\xde\xbc\x43\xcd\xbd\x1d\x02\x22\xbd\xdf\xfa\xdd\x5a\xe2\xcd\x07\x2a\xa6\x61\xdc\x3e\xfe\x4e\x23\xe6\x0e\x96\x12\xe3\xee\xb2\x59\xa8\x33\xae\x5d\x9a\x45\xe4\x7f\x88\x45\xf3\xda\x6d\x9c\x25\x73\xad\x8f\x5b\x65\x36\x79\x80\x51\xeb\x6b\x52\x8a\x22\x97\xe6\xe7\x31\x46\xcd\xf5\xfe\x3e\xce\xea\x89\x65\xe8\x3e\x98\xaa\xf5\x96\xc9\xb6\x79\x02\x4c\x3f\xf1\x58\x44\xeb\xd4\x35\x64\x7e\x96\x7d\x55\x22\xf2\xbe\x1a\x39\x4f\xf1\xc6\x9f\x06\x15\x4a\x57\x3b\x44\x17\x17\xc6\x00\x4e\xc6\xeb\x97\xce\x91\xd5\x3d\x50\x7a\xfa\x86\x38\xd7\x2e\x68\xaa\x77\x46\x42\x09\x4a\x68\x18\xd0\xe1\x79\xc5\x9a\xc9\xc3\x68\x0b\x7a\xf7\x74\x74\xe2\xd6\xf6\x72\x5b\x85\x49\x97\x56\x89\x1d\x88\x47\xed\xc1\x88\x36\x18\x75\xf7\x19\xd1\x45\x78\xee\x52\x62\xa3\x04\xbf\xe3\xc3\x95\x4b\xfb\x4e\xa0\x5b\x37\xbb\xa9\x81\x75\x0e\x86\xdb\xdd\x90\x5a\x49\xd4\x06\x01\x1e\x0e\xc9\x56\x76\x50\x5b\x5d\xda\x1e\x87\x1c\x73\x1c\xb6\xb7\x92\x9d\xd8\xd5\xde\x05\x57\x85\x71\xfc\x25\x53\x42\xfb\xfb\x21\x94\x3f\x9d\x1a\x92\x4a\xf6\x3e\xc0\xdd\x7b\x58\x0e\xd6\x5b\x77\x65\x5a\xf8\xd2\xb9\x85\xce\xce\x86\xaa\x8b\xed\x1e\x66\xd9\x68\xca\x18\x17\xa2\xba\xb5\x83\xb9\xe5\x18\x98\x78\xd8\xf5\xf2\xd9\x3b\x08\xbb\x9d\x59\xd1\xd0\x85\x19\xe1\x00\x32\x4d\xc4\x9f\x2c\x76\xbb\xae\x4e\x62\xac\xcb\xd9\x3e\xdc\x39\xa7\x3a\x94\xfd\xc6\x25\xc0\xfd\x10\x7b\xf0\x34\x70\xb4\xc8\xfe\x36\x4a\x3b\xb3\xdc\xeb\x64\x0b\x3e\x81\x56\x49\x77\xce\x9a\x57\x46\x18\x7f\x5d\x37\xbf\x17\xda\x4c\x40\x18\xa8\x24\xa0\xa7\xcc\x55\x1b\xbf\x2d\x6c\x85\xab\x12\x3e\x03\x18\x65\x39\xc3\x1c\x0f\x4c\xb1\xe5\x96\x73\xa0\xf2\xbf\x74\x8a\x38\xab\x4e\x39\xb9\x5b\x2e\x97\xfb\x67\x4b\xa9\x08\x57\xbb\x7d\x58\xb7\xab\x7c\x60\xe0\x9f\x08\x8c\x2d\x1a\xe8\x0f\x7c\x19\x6a\x88\xec\x31\xd0\x42\x6e\xb4\x3d\x1a\xed\x92\x19\xac\x02\x5e\xd6\x66\xdb\x95\x2a\x4f\x70\x9c\xbf\xe7\x61\x62\xe0\x04\xbc\x67\xa5\x3d\xc7\x35\x69\x33\xea\x02\x87\x88\x49\xb4\x6c\xaa\xe3\x93\x73\xf8\xf3\xa7\xde\x4d\xed\x6d\xab\xc3\xf7\x08\xef\x92\x98\x54\xc7\x0d\xf3\xe0\x50\x9b\xee\x22\x0e\xb5\xe9\xd2\xbb\xa3\xd4\x87\xa6\xeb\x17\x61\xec\xb4\x83\xba\x1d\x75\xf8\xb2\x8b\xd6\x54\xe8\xf7\xf6\x5e\xac\x63\xb9\xb4\x38\x7e\xf7\x74\xef\x80\xe8\x04\x8c\x3a\x2d\xd5\xd3\x8a\x7b\xb3\x36\x7d\x1d\xfa\xf0\xd3\x9b\x4e\xdb\x79\xd5\x86\x62\xf4\xdd\x81\x53\x53\x7d\x7a\x84\xab\x6f\x0e\x9c\x9e\xfa\xde\x32\x7c\x26\x95\xa2\x7b\xdf\xaf\x4c\xd0\xad\x0c\xfc\x5d\x63\x4e\x37\xed\xa1\x67\xab\x33\xba\xbb\xa1\x03\x7b\x9f\x11\x0b\xcf\xa3\xcf\xfd\x86\x2d\x17\xcf\xdb\x8f\xbb\x9a\xb5\xc8\xcc\xbb\x3f\xec\xea\xd2\x12\x6c\xde\xfd\x61\x20\x06\x18\x62\xf3\xf9\x5e\xe6\x1f\xeb\xc9\xf7\xb9\x86\x92\x52\x1b\x7f\x06\x93\x4e\xbd\xf8\x8a\xe8\x8a\x58\x22\x0f\x25\x4c\xff\x99\x74\x55\x1f\xc5\xd1\xfe\x7e\xc7\x3d\x7c\x48\x12\xab\x1f\xd4\x3e\x32\x9f\xd5\x03\x34\x32\xb5\xb5\xcf\x27\xf2\x7f\x9f\x7f\x8f\x63\x87\x4f\xe9\x4e\x83\xd0\x95\x05\xde\x0a\x7d\x1d\xdd\xbb\xdd\x5e\x1c\x34\xca\xb7\xb4\x79\xb0\x0a\xfc\xd5\x41\xe4\xed\x04\x68\xf4\xb2\x00\x91\xe9\x20\xfc\x5d\x5b\xe9\xdc\xbe\x05\x47\xd7\x02\x01\x3e\xd0\xc1\xec\xdd\x68\x3e\x9b\xc1\x1b\x56\xf6\x7c\x06\x42\x7f\xb3\xe6\x95\x0f\x83\x6c\x25\xab\x1b\xbe\x7b\x5b\x52\x77\xe8\xbd\x47\x81\x5e\x45\x79\xe4\xa1\x51\x87\x88\xe4\x9d\xc9\x31\x03\x1f\x78\x57\x42\xb8\x81\xc7\xde\xd5\x42\x4e\x98\xbb\xc4\x8a\x86\xa2\x9b\x4d\x62\x3e\xf0\xc7\xac\x46\x0e\x3f\x2e\xab\x97\x60\xf4\xfe\x5f\x0d\x53\xdc\x15\x74\xd8\xfb\x51\x3b\x77\xce\x8e\x1c\x5b\x13\xa0\x2b\x84\xd0\x1d\x9b\xee\xc7\x4b\x46\xfd\x91\x55\x15\x57\xc9\xa8\xe1\x4a\x9a\x76\xb0\x49\x37\xbe\xa0\xad\x38\x46\xc5\x88\x50\x71\xa6\xe0\xd9\x37\x67\x67\xf7\xff\xfd\xa7\xb3\xdd\x68\x2d\x68\xa4\x91\x68\xbd\x97\x99\x70\x8b\xa3\x2d\x19\xe8\xf4\x47\x8a\xd5\xd7\x1a\xb4\x6d\xb7\x96\x25\xaf\xd9\x8a\x27\x05\x70\xf0\x56\xba\x9b\xe4\xa9\x52\xb6\xb4\x97\xf9\x1e\xd1\x59\xac\x95\x62\xe5\xd1\x04\x8e\xcc\x46\x18\xc3\x15\x7e\xcc\x85\xce\xa4\xca\x8f\x0e\x1c\x6e\xb3\x23\xea\xa8\x62\x7a\xe7\xf2\xfe\xa1\x6f\xa6\x18\xc7\x61\x69\x9f\x43\x9c\x91\xb6\x3e\xb4\x60\x1d\xd8\x0f\xa1\x8b\xef\xf4\x87\xbe\x44\xe3\x01\x59\xc9\x88\x30\x30\x8f\xc9\xd4\x6f\x1a\x51\x85\x6e\xbd\x0d\xdf\x06\xa0\x5a\x92\x20\x44\xfb\xe9\x71\x4e\x49\xfc\x3a\x8f\x61\xbf\xc4\xb9\x25\x01\xda\x17\xf4\x4f\x1e\xe5\x9b\x3c\xe2\x15\x20\x83\xf9\xf3\xcf\xe2\xa1\x3c\xe8\xe5\x20\x07\xec\xaa\xff\x7b\xbc\x9f\x02\x71\xc6\xca\x9a\xa6\xe8\x52\xf2\xc5\x16\x5e\xda\x5b\x99\x4e\xdd\xdd\xf3\xb5\x2f\x8d\x32\xd2\x5d\xfd\x66\xcf\x58\x44\xae\x8a\xbd\xd5\xe9\xd4\x5e\x26\x84\xc1\xc4\x69\xc1\xef\x78\xd1\x9e\xc2\x48\x6e\x33\xbd\xf8\xf9\xf5\x69\x26\xcb\x9a\x19\x52\xa5\xd6\x22\x46\x35\xf0\xef\xf9\x1d\x57\xac\x80\x8b\x77\x2f\x43\x2e\x47\xbb\x77\x1f\x5d\xbc\x7b\xf9\xfc\x6c\x82\xff\xfd\x9f\xe7\xcf\xdc\x6d\xe6\xde\xd1\x0a\x47\x67\xf5\xb6\x5c\xc8\xc0\xaa\xfe\x38\x50\x8b\x3e\xd3\x9a\xdb\xe3\x84\x1b\x5e\x14\xf8\x7f\x3b\x85\xa7\xc3\x13\x88\x0f\xc0\xc0\x0d\x35\xf9\xf0\xee\xea\xb8\x11\x95\x79\xfe\xa7\x6f\x4f\xdc\x96\xa5\x07\x83\x8f\x4e\x6e\xdc\x31\x23\x3d\x8d\x48\xcd\x2b\xb6\x88\x5f\xaf\xe2\x68\x3d\x44\xe4\x70\x96\x45\x6e\xaa\xe8\xe6\xac\x35\xa5\x87\xf8\xd6\xdd\xe6\x55\x88\xdb\x56\x94\x3a\x67\x5f\xfc\xb5\xf0\xb6\x16\x8e\xbc\xae\x85\x12\xf9\xca\x1a\xdc\x8b\x9f\x5f\x1f\x74\xf2\x2e\x7e\x7e\xfd\xa3\xed\x11\x22\xdf\x03\xa5\xff\x44\xdb\xb8\xc5\x83\x1d\x39\x57\x57\x43\x6b\xf8\x70\xa8\xb6\xdf\x6e\xb8\xf6\x8e\xfd\x16\x28\x9c\x3a\x1f\x80\x55\xbe\x7a\xc8\x9e\xd8\xb2\xfc\x60\xd9\x40\xaa\x34\x69\x14\x71\x08\xc2\xcb\x79\xcd\x2b\xe2\x6e\x59\x45\xb7\xf5\xb7\x67\x90\xb4\x57\x7f\x39\xc6\xe4\x69\xda\xb2\x97\x68\x6d\x55\xe7\xc5\xcf\xaf\xfb\xaf\xe8\xb3\x75\x88\xc4\x05\xb8\xbc\xe9\x25\x24\x50\x2b\x5e\x33\xc5\x61\x2b\x1b\x5b\x2d\xfc\xb5\x76\x02\x66\x78\xde\x3d\xd1\xde\xad\xf3\x49\x8e\x68\xd8\x1b\xda\xb6\xb2\x21\xf5\x90\xad\x25\xc5\x32\x12\x0c\xbb\xe5\xc0\xf2\x3b\x66\xef\x87\x93\x4b\x90\x15\xbd\x39\x28\x01\xd5\x9e\x9b\x61\x3a\xbc\x31\x05\x43\x1d\x2a\x5e\x96\xda\x04\xce\x7f\x73\x79\xad\x27\x61\x1c\x3a\xef\x6d\x07\xeb\x90\x3c\xf2\x5b\x69\x72\xb4\x7a\x5f\xeb\xf8\xa4\x97\x7d\x65\x06\xdd\xb3\xe4\x2f\x80\x41\xb9\xa3\x0a\x2a\x96\x96\x2c\xbb\x37\x9b\x5c\xda\xd7\xdc\x10\xaf\xd3\x25\x6e\x4e\x45\x91\x41\x6c\xdf\xe2\x02\x2f\x0a\x32\xf5\xa8\x0f\x8b\x2d\x61\x9b\xce\x96\x6d\x5d\x45\x26\x7a\xaf\x84\x9e\x3d\x35\xde\x2a\xc0\x16\x29\x7f\x68\xfe\x6f\xef\xff\xfe\xc6\xd5\x45\x25\xc0\xa8\x3d\x7a\x18\xf1\x9b\xd6\xdc\x79\x3f\x0b\xd5\x11\x3c\x82\xee\xae\x6b\x10\xee\x6c\x7e\x02\xcf\x3a\x8a\x11\x0b\x8e\x92\xa3\x46\x89\xfe\xbd\xf6\x03\xc7\xd8\x53\x79\x9b\xc4\xfd\x1e\xee\x8a\x39\xa1\x9f\xc7\x1a\x3c\x69\xd0\x28\x41\xaf\x47\x12\xc3\x7e\xcf\x50\x9d\x74\x4f\x83\x3d\xac\x62\xba\xd7\xfd\xd1\xb5\xd3\x3d\x48\x63\xab\xa8\x87\x74\x30\x74\xfe\x7e\x47\xda\xe2\xb7\xaf\xfe\x27\x00\x00\xff\xff\x10\x9d\x30\x7b\xbd\x74\x00\x00" func contractsStandardMetadataviewsCdcBytes() ([]byte, error) { return bindataRead( @@ -240,11 +324,11 @@ func contractsStandardMetadataviewsCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/standard/MetadataViews.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5d, 0x11, 0x7b, 0x59, 0x80, 0x6d, 0x10, 0x2e, 0x7a, 0x6, 0x89, 0x7a, 0xaf, 0xee, 0x9a, 0xb, 0x78, 0xea, 0x3f, 0xd6, 0x6c, 0xb, 0x87, 0x7a, 0x1a, 0x9a, 0x10, 0x29, 0x64, 0xc2, 0x19, 0x85}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0xce, 0xad, 0xd9, 0x2f, 0xc7, 0xd4, 0x6b, 0x85, 0x12, 0xa, 0x43, 0xe9, 0x3, 0xc2, 0x1d, 0xae, 0xac, 0x52, 0xcb, 0x49, 0x4d, 0xd, 0xfe, 0x43, 0x58, 0x18, 0x4, 0xc9, 0xa7, 0xc4, 0x68}} return a, nil } -var _contractsStandardNftstorefrontCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7c\x4f\x73\xdc\x36\xb2\xf8\x5d\x9f\xa2\xad\x43\x76\xe4\xdf\x78\x9c\xc3\xd6\x1e\xa6\xa2\x38\xfe\x49\xf1\x7b\xaa\x4d\x64\x97\x57\xfb\xf6\x90\xca\x01\x43\x36\x67\x50\xe2\x00\x5c\x00\x9c\x09\x37\xe5\xef\xfe\x0a\x8d\x3f\x04\x09\xcc\x48\xf6\x26\x87\xad\x3c\x1d\x12\x99\x02\xba\x1b\x8d\xfe\xdf\x4d\xf2\x7d\x27\x95\x81\x77\xbd\xd8\xf2\x4d\x8b\x0f\xf2\x11\x05\x34\x4a\xee\xe1\x72\xf5\x7a\xf2\x74\x55\xd5\xd5\xe5\x85\x5f\x7f\x2f\x45\x79\xcb\xfc\x0f\x6e\xd7\xc5\xeb\xd7\xaf\xe1\xfe\xdd\xc3\xdf\x8c\x54\xd8\x28\x29\x8c\x7d\x42\x4f\xdf\xc2\x16\x05\x2a\xd6\x42\xd7\xab\x4e\x6a\x04\xcd\x5a\x04\xdd\x77\x84\xa8\x92\xc2\x28\x56\x19\x68\xa4\x82\x77\xad\x3c\x66\xa8\xf5\x2a\xc2\xfa\x9e\x55\x3b\x60\x55\x25\x7b\x61\xc0\xec\x98\x81\x23\x13\x46\x83\x91\xd0\x72\x6d\x2c\x05\x9a\x00\x11\x0a\x2e\xb4\x61\x6d\xab\x81\xc1\x48\xd7\x92\x00\x31\x51\xd3\x0e\x0d\x5c\xd4\xfc\xc0\xeb\x9e\xb5\xb4\x49\xc3\x91\x9b\x1d\x17\x0e\xfa\xb8\x0d\x98\x86\x1f\xb8\x36\x5c\x6c\x1d\x3d\xf0\xb0\x43\x85\xc0\x35\x48\x81\xe9\xc2\x0e\x55\x20\x71\x09\xdc\xc0\x8e\x89\xda\xc2\x75\xd0\x65\x03\xac\x6d\x2d\xa1\x60\x86\x0e\x35\x81\xb2\x14\x13\x3e\xbf\x6f\x76\x60\x8f\x17\x2a\x26\x60\xc7\x0e\x48\x18\xa5\x82\xbd\x54\x08\x97\x55\x6f\x2e\x09\xae\xd9\x79\xd6\x76\x8a\x57\x48\x00\x09\xc6\x56\x22\x71\x28\xdd\xc5\xea\x5a\xa1\xd6\xa8\x57\x70\xd3\x1b\x4d\xa0\x37\x08\xbd\xc6\xda\x2e\xed\xd8\x40\xec\xb1\x58\x1b\xf4\x54\x4a\x05\xd2\xec\x50\xd9\x2b\xd3\xbc\x46\xc5\x0c\x97\xfe\x76\x1c\xa1\xf6\x54\x7b\x36\x58\x48\x76\x37\xd6\xc0\xc5\x04\x6d\xe0\xe0\x92\x88\x3d\xb0\x96\xd7\xdc\x0c\x96\x78\x64\xd5\x8e\x00\xa5\x87\x45\xa6\x79\x4b\xe0\xaa\x1d\x56\x8f\x58\x8f\x8c\xf9\xd0\xab\x6a\xc7\x34\x2a\x47\xfb\x91\x99\x6a\x47\x7c\x0c\xfb\xf1\x80\x56\x32\xec\x45\xd3\x66\xc2\x18\xd8\x6e\x1f\x13\x98\xbb\x5b\x7b\x5c\x8d\x08\x9c\x18\x38\xc0\x91\xeb\x9d\x7d\xb6\xe9\x07\xda\x12\x0e\x62\x70\xef\x4e\xfa\x23\x53\x8f\x68\xba\x96\x55\xe8\xc0\x3b\xa6\xb0\xed\x56\xe1\x96\x19\xf9\x04\x45\x13\xf1\x23\xb0\x74\x79\x5c\x18\x54\xa8\xfd\xd5\x77\xfd\x66\x54\x8c\x89\x5a\xc1\xaf\x17\x00\x00\x99\xba\xdd\x09\x6e\x38\x6b\xf9\xbf\xb0\x8e\x0b\x1e\x76\x5c\x8f\x60\x76\x4c\xc3\x06\x51\x40\x8d\x5d\x2b\x07\xcb\xcc\xb0\xf0\x7b\x4b\x19\x5d\x6b\xbf\x0f\x1c\x15\xf2\x08\xf8\x4b\x87\x95\x09\xac\x24\x0b\x60\x52\x98\x11\x02\xfd\xdf\x12\x4d\x4b\x4f\x52\xb6\xb8\xba\x88\x38\xcf\x93\xfe\x36\xd5\x28\x85\x5a\xf6\xaa\xc2\xf1\x08\x95\x42\x66\xfe\x9d\x13\x8c\xd0\x47\x18\xf7\xd2\xa0\x37\x2a\x08\xb5\x04\x21\x0d\xe8\x0e\x2b\xde\x0c\xc0\x44\x50\x99\xb5\xfd\x6b\xc5\x84\xfd\xab\xbd\x46\xbd\x93\x7d\x5b\xdb\xc5\x23\xa4\x1b\x47\x5e\x24\x5c\x07\x70\xa4\xbd\x4c\x80\x3c\x0a\x2b\x32\x0e\xe2\x92\xe0\x78\xbd\xd9\xcb\x43\xc2\x06\xd6\x18\xab\x6f\x16\x1c\x97\xc2\x6a\xd3\x91\x0d\x3a\xa1\x80\x44\x7b\x44\xec\x45\xed\xed\x81\xf1\x96\x6d\x5a\x0c\x07\x9f\xa9\x77\x8d\x06\xd5\x9e\x0b\x24\x09\xf7\x64\x44\x20\xde\x94\x38\x1a\xfd\x3f\x92\xdb\x58\xac\x56\x2b\x6e\x34\xb4\xb2\x22\xaa\xae\x80\x19\x5a\x63\xf8\x1e\x41\x36\x11\x4e\xd0\x1e\x2b\xfb\x9b\xde\x80\x14\xed\xe0\xd6\x32\x03\x9d\xc2\x8a\x6b\x7b\xde\xbd\xbd\xb9\x60\x70\xc3\x63\xa3\x98\xd0\xac\xb2\xf0\xc7\xd3\xdd\x79\x1b\x87\x6d\x8b\x8a\x38\xa5\xe7\xc4\x1d\x77\xbc\xc5\x09\x66\xae\x9d\x9d\x59\x26\x74\x31\xe3\xec\xb6\x5d\xb8\x3f\x25\xc4\x65\x09\xd6\xf1\xe9\x47\x7f\xb9\x77\xb7\x6b\xf8\xfb\x9d\x30\x7f\xf9\x73\x51\xba\x6f\x51\x1b\x65\xd5\xad\x2c\xdb\x89\x56\xfa\x75\x4f\x0b\xb5\x36\xb2\x83\x4e\xc9\x0a\xb5\x4e\x4c\xdd\x6f\x21\xdd\x4f\x33\x23\x9e\xe7\xb9\xac\x98\xcb\x64\xc2\x87\x70\x47\x73\xbd\x26\x85\x60\x75\xed\xa4\x95\x95\x6c\xc1\x2a\xb1\x72\x08\x6f\x1d\xf5\xf6\xa6\x7b\xd4\x40\x9e\x99\x29\xef\x61\xe0\xb8\x43\xba\x6a\x7f\x16\xae\x01\xf7\xdc\x18\xac\x97\x56\x2e\x27\xf2\xaa\x0d\x33\x18\x84\xde\x7b\x63\xed\x1c\x83\xc2\x06\x95\xa5\xc7\x6b\x6a\xb5\x63\x62\x8b\x35\xc8\xde\x58\x6f\xe8\x37\x95\xad\x33\x1c\xa5\x7a\x6c\x5a\x79\x5c\x82\x96\xb4\x99\x29\x6c\xfa\xd6\x82\x73\xde\x89\x68\xec\xe9\x3a\xcf\x09\xe5\x9c\x99\x0b\xfa\xbb\xfd\x19\x6f\xe3\x6d\x30\x54\xfe\x97\x65\x5c\xe3\xf9\x9d\x5f\xd7\xb8\x44\x34\xe6\x61\xe8\x70\x0d\xf6\xbf\x93\xc7\xa5\xd5\x8d\xf9\x1f\xd6\xb7\xc5\x1d\x14\x84\xac\xe1\xef\xef\xf8\x2f\x7f\xf9\x33\x3d\xcd\x65\xe2\x46\xee\xbb\x16\xcd\xc4\x65\x61\x2e\x15\xf6\xce\xdb\x03\xd6\x2b\xb8\x73\x0a\x83\x9c\x5c\x2e\xfd\xb1\xf3\x81\x40\xbd\xb4\x51\x86\x42\x32\xa0\x24\x40\xb9\x46\x95\x99\x19\xa9\x58\x7c\x0e\xa3\xce\x49\x7f\xc2\x85\x40\xdd\x1a\xfe\xbf\x94\xed\xe7\xf1\x79\xce\xb5\x51\x9e\xec\x6f\x6c\x8b\x1f\x98\xd9\x4d\x59\xe7\x6d\xb2\xb5\xa7\xda\xad\xf1\x81\x65\xd1\x9f\x7a\xdf\xb5\xf1\x1b\x03\xa7\x2c\x87\x5a\x34\x65\x7c\x6b\x48\x91\x17\x68\xfb\xd0\x6f\x5a\x5e\x65\xa4\x75\xf4\x78\xa4\xd0\x46\x46\x13\xaa\x5a\x2e\x1e\x4f\xe1\x1f\x61\xae\x21\x81\x9f\xa0\x67\x2d\xde\x24\xba\xfc\x16\xb4\x51\x7d\x65\xcf\xda\x29\xd4\x28\x48\xa2\x18\x58\xf7\xd2\x71\x0c\xd9\xc3\xbe\xd7\xc6\x1e\xdf\x2e\x00\x06\x15\x2a\xc3\xb8\x00\xb6\xb7\x7a\x3f\x77\x88\x1d\x1b\xc8\x57\x91\xaa\x32\x30\x94\x16\x71\x0d\x5a\xb6\x05\x11\xf3\xf8\x3d\x61\x3e\x6c\x4b\x19\xa2\xb0\x42\x7e\x40\xe5\xa3\xff\x08\x7f\x35\x59\x59\x34\xdb\x86\x42\xf8\x68\xb4\xad\x15\x69\xb8\xa8\x09\x0a\x29\xa4\xdb\x41\xbe\x20\x32\x20\xb1\x03\x14\x5a\x68\xef\x26\xc5\xa3\x53\x1c\x2f\x13\x01\x57\x83\x36\x7e\x25\xbf\xcc\xb5\x0d\x3b\x62\x84\xc2\x04\xef\xfa\xd6\x8a\xcb\x14\xa2\x96\x13\x42\x22\x71\x4e\xfe\xaa\xde\xc4\x4c\x64\x90\xbd\x63\xfd\x16\x3d\x95\x9e\x5b\xcc\xed\x15\x13\xb8\x95\x4d\x98\x02\xb7\x56\x1b\xa9\x94\x3c\x2e\xae\x5e\xac\x28\x40\x59\x05\x34\x56\xe8\x67\xbc\x73\xf1\xaf\x0b\x7d\x6a\x9b\x86\x60\xd3\xf0\xca\xde\x7e\x3b\xd8\x93\x31\xd0\x95\xe2\x5d\xb2\x2b\x48\x5e\xc0\xb6\x86\x1b\xd6\xb1\x0d\x6f\xb9\x19\xbe\xf9\xea\xd7\x69\xe2\xfb\xd1\x2f\xfa\xf4\xed\x45\x76\xb9\x4e\x82\xe6\x92\x33\xcd\xa8\x1d\xa7\x79\xdb\x5a\xfa\x3a\xc6\xc9\xd9\x99\x44\x32\x72\xba\x1c\xd8\x68\x55\x27\x68\x79\x8c\x52\x54\xfa\x3c\xfe\x6e\xff\xbe\xf8\xcc\x83\x2d\x67\x18\xaf\x12\x39\x26\x23\x88\x6d\xb3\x8a\x82\x7c\x1d\x29\xcf\x17\x79\x86\x5c\xa7\xba\x65\x7f\x3e\x5d\xb8\xff\x66\xbe\xe1\x16\x0d\xe3\xad\xce\x35\xda\x26\x1f\x8c\x0b\xa7\xcf\x7e\xf1\x9f\x34\xd4\xcc\xb0\x93\x5a\x38\x85\x59\x50\xc6\xc4\x0e\x79\xd5\x89\xc9\x2a\xa9\xb8\xfd\xb3\xcd\x66\x4f\x29\xa7\x57\x35\xaf\x43\x3e\x38\x0f\xe1\xbc\x0b\x62\x6a\xde\x34\xa8\xa6\xc1\x54\xae\x40\x16\x0e\xd7\xf0\xfe\xaf\x2b\x1b\xee\x1e\x29\x66\x51\xb0\x67\x8f\x08\xdc\xb8\x15\x36\x7a\x35\xf0\xb2\x62\xe2\x65\x44\x31\x05\xe4\x54\x2a\x1a\x77\x85\x07\xae\x79\x34\xef\x81\x37\x07\xa6\x12\x2f\x36\x73\x3b\x01\xd4\x3f\x76\x48\xbe\x96\x40\x66\x9e\x39\xba\x37\x6b\x42\x62\x0a\x94\x22\x98\x39\xc0\x8c\xf1\xd6\xfd\x05\x35\xc9\x4a\x4b\x94\xae\xfb\x68\x7d\x83\x16\xb3\xcb\xc6\x73\xc5\x98\xb8\xd3\x0c\xc9\xdd\x6d\x44\xf1\xee\x61\x52\xe0\x31\x43\x87\x45\x68\x27\xd8\x31\x27\xb9\xa0\xd1\x5e\xd9\x75\x74\x2e\x7b\x56\xe3\x44\x74\x02\x1a\xcd\x5a\xfc\xe0\x56\xcf\xc2\xa8\x53\xf6\x64\xe2\xb4\xc8\x64\x70\x17\xd9\xba\x48\x9e\x63\x3d\xa5\xe8\x04\xce\x2c\x34\x83\xd4\x62\x06\x58\xce\x41\xd4\xdc\x0a\x8f\x14\xf6\xc4\xc1\x8e\x6d\xd0\x1c\x5d\x60\xe6\xbd\xa9\x2e\x23\xba\xe9\x8d\x5e\xc3\x4f\xde\x07\xfe\x3c\xb5\x57\x1a\xcd\x83\x0c\x65\x9c\x7a\xf2\xa7\x3b\xa5\xac\xd8\x6b\xbe\x69\x07\xbb\x6e\x2a\x7d\x4c\x8f\x52\xb5\x2a\x9a\x3a\x56\xd9\xd4\x68\x11\xca\x14\x57\xd0\xf4\x62\x86\x6f\x51\x34\x65\xa3\x3c\x5f\x83\x51\x3d\x26\x66\xea\xb3\x6d\x2d\x2c\x26\xf0\x4f\x04\x7c\x70\x3a\xb8\x26\xaa\x4e\x8a\x48\xbe\x6e\xc6\xed\xd9\x82\x73\x8a\x5e\xe4\x45\xba\x03\xae\x27\x00\xce\x33\xae\x61\xad\xc6\x7c\x89\x67\x00\x5c\x07\x56\x14\x97\x10\x2e\xfa\x7f\x81\xa2\x02\x33\x2c\x65\x85\xc7\x93\xcd\x21\x3c\x25\x79\xae\x7a\xa3\x27\x7f\x65\x5a\xa3\x32\x8b\xc0\xc1\x55\x8b\x62\x6b\x76\xf0\x2d\x7c\xbd\x84\x3d\x6a\xcd\xb6\xb8\x86\xcb\xe0\x0c\x48\xf9\x5c\x19\xc7\x40\x8b\x4c\x1b\x2a\x70\x06\xcd\xb0\x51\x4e\xd4\x8a\xcb\xab\xf2\x19\xa8\xe2\x7a\x1d\xef\xec\x62\x4e\xec\x0d\x6b\x2b\x0a\xb0\x5c\x59\x45\x1a\xd6\xfa\x9a\xae\x4f\xf1\x0b\xa7\x20\x63\x1e\x74\x1b\xae\xe1\xeb\xd5\xd7\x73\xb0\x1f\x50\x35\x52\xed\x83\xf0\xfa\xc4\x53\x0a\xa8\x42\x28\xc0\xd1\x17\xa3\xaa\x48\x41\x52\x50\x26\xe4\xf6\x80\xce\x18\x25\x3a\x6f\x7f\x6c\x14\x6b\xff\x68\x33\x8f\xc9\x41\xa7\xa2\xe5\x69\xf9\xd1\x3a\x34\xdd\x2b\xf4\xb5\x2c\x70\x61\xdd\x89\xf0\x27\xd9\xf8\x0f\x74\x21\x53\xa8\xe9\x72\x0d\x6c\x6b\x63\xf6\x98\xe4\x17\xe2\xf2\xf4\xa7\xea\xcd\x2a\x0b\x26\xb3\x55\xf6\xe7\xcd\x1b\xe8\x98\xe0\xd5\xe2\xf2\xc6\xfb\x73\x47\x63\xd8\x7d\x99\x6f\xb3\x71\x4a\x5d\x87\x1b\x8a\x56\x5b\xce\x2f\x32\xdb\x98\x5e\xdd\xf8\xfb\xff\x23\x6a\x67\x11\x13\xc4\xa8\x29\xfc\x24\x12\xec\xf6\x7d\x6b\xaf\xff\xbc\xf4\x0a\x29\x5e\xfd\x0b\x95\x74\xf4\x5c\x5e\x65\x42\x98\x68\x4c\x10\x86\x3a\x91\x86\x13\xda\x39\x3f\xc2\xd3\x71\x9e\x4b\xe7\xc6\x30\x4f\xb8\x52\x78\xc3\x2a\x8b\x49\x1e\x78\xed\x22\xbd\x5e\x53\xc1\xc4\xa7\x91\xe3\x1a\x8a\xad\x3c\xac\x3c\xfe\x8b\x21\xd9\xb8\x61\x82\x77\x16\x0a\xba\x1b\xbe\x7f\xf7\x90\x7b\x45\x92\x3a\xc7\xe9\xe8\x74\xd9\x1e\x29\x33\xf2\xb9\x94\x0d\x2e\xb4\x61\xa2\x66\xaa\x1e\x41\x25\xd2\x45\xae\x63\x0c\x44\xac\xec\x6e\x6c\x6a\xb6\x24\xed\xc1\x5f\xd8\xbe\x6b\xa9\x13\xc1\x93\xc2\xa0\x15\x63\x38\x70\x06\x4c\xb8\x4e\x43\x9b\x1e\x16\x66\x9e\xc7\x1e\xda\x7a\xbb\x04\xfd\x1a\xbe\x2a\x45\x56\x53\x8f\x16\x0c\xf8\xe4\x61\xf0\x96\x69\x41\x75\x09\x9b\x7e\xf0\x65\x2a\xa7\x6b\x85\xa4\xab\x63\x83\x63\xc9\x06\x05\xda\x9c\x8b\x29\xee\xbb\x25\x0a\x4d\xaf\x84\x4e\x54\xd5\xab\xc7\xa6\x1f\x52\x9d\x2f\x1d\x2a\x10\xb9\xf0\xe6\x76\x0d\xdf\x4d\x8f\x45\xf6\xff\x6a\x0d\xdf\x3d\x7d\xe0\x2d\x9a\x34\xc5\x38\x85\x72\x5c\x66\x19\x39\xcb\x4d\x4e\xc9\x74\x92\xb4\x4c\xf3\x6a\xd6\xb6\xf2\x68\xf9\xe0\x3a\x51\x54\x0a\xa4\xfb\xa5\x6a\x88\x48\xd2\x46\x06\x5b\x7e\x40\x31\x0d\xe7\xc6\x1a\xb6\xe5\x64\xac\x1b\x28\x59\x21\xd6\xbe\x07\xc8\x5c\xe8\x15\x80\x77\x2d\x1f\xe3\x35\x6d\xa3\x2a\xd6\x66\x71\x5b\x51\x63\xfc\x59\xd6\x67\x15\xc6\xc6\xa6\x9a\x93\xd8\x2e\xac\x49\x19\xb3\xca\x25\x99\x98\x8a\x6a\x6b\xbf\x5c\x41\xed\x53\xaf\xa4\x4f\x39\x0f\xd7\xac\x15\xb9\xa2\xd8\xd1\x2f\x2e\xf3\x7b\xe4\x6d\xf4\x5b\x83\x63\xac\x93\xca\x34\x11\x33\x92\xa2\xfd\x5a\xb1\xe3\x24\xfc\xa7\x7f\x38\x06\xdf\xdd\x3a\xc7\xc6\x8d\x86\x4a\xb6\x2d\x26\x4d\x07\x98\x16\x12\xa6\xd8\xb4\x77\x56\x05\x54\x2f\x99\x18\x5e\x5a\x64\x54\xee\x1d\x64\x9f\x24\x63\xa1\xf2\x4b\xfe\x6a\xcb\x0f\x41\x5c\x02\x2e\xdd\x57\x3b\x60\x29\x36\xb2\x70\x11\x0f\x95\xc6\x5b\x6a\x03\x39\x1f\xe8\x08\xaf\xd1\x95\xa6\x83\x5b\xe5\xbe\xb4\xd0\x6b\xfa\xdd\x59\xac\x09\x22\x6b\xb8\x42\x32\x59\xb5\x8c\xef\x13\x87\x9e\x05\xd0\x3e\x2b\xfa\x40\x06\x19\xd5\x78\xcd\xb3\x42\x42\xa6\x77\x61\xc7\x32\xcf\xee\x6e\x22\xb7\x9d\x68\xcd\xeb\x28\x7f\x24\x63\x3c\x8b\x92\x5c\x0d\xaa\xb1\x9e\xd4\xc7\xc5\x39\xe7\x93\x4a\xd8\x08\x9f\xd7\x6b\xb7\x25\xb5\x5b\x2e\xae\xbe\x9a\x79\xf8\x57\x70\xf3\xf6\xfe\xfe\xfd\x03\xdc\xbe\x87\x87\xff\xbe\xfb\x1b\xdc\xdd\xc3\x87\x8f\xdf\xdf\xbc\xbf\xbf\xbd\x7b\xb8\x7b\x7f\xbf\x86\xcb\x3d\xee\x37\xae\x07\xa8\x50\x1b\xc5\x2b\x1b\x03\x50\xff\x9c\x6b\xaa\x44\x3a\x39\xb1\x27\x59\x03\xd7\x77\xc2\x32\xbc\xc2\xcb\x79\x2c\x61\xb7\xf7\xad\x59\x8d\x4b\x16\x45\x22\x6d\xe4\x7e\xb5\x86\x4b\xe7\x17\x2c\xd3\x8f\x4a\x5a\xa5\x1e\xba\x19\x50\x1f\xf2\x28\x6c\x9e\x07\x34\x0d\x86\x8a\xd0\xaf\x4e\x82\xaf\xe1\xfa\xfa\x14\x4f\xcf\x81\xbd\xbb\x9d\x01\x75\x9e\x0f\x2c\x54\x2b\xa4\x45\x39\x78\x73\xf5\xe2\x54\xce\x59\x76\x58\xf0\x5f\xe8\xaa\x55\x33\x03\x5b\xf5\x8a\x6a\x4d\x93\x86\xd6\x0f\x63\x06\xcd\x7c\x69\xac\x60\xe8\xd8\x41\xf2\x5a\xdb\x30\x91\x42\x46\x1b\x06\xfa\xa8\xeb\xc0\x14\x67\x9b\xd6\x7b\xf2\x2d\x1a\x83\x0a\xf6\x68\x76\xb2\xd6\xc1\x1d\xed\x5d\x06\xd1\xb5\x6c\x98\x12\x2a\x78\x85\xed\xe0\xcc\xaf\xab\xbb\x6a\x58\x1c\x77\xbc\xda\x85\x7a\x99\x67\x50\xec\x9a\x5f\x9d\xd7\xaa\x73\xae\x79\xa6\x4f\x1e\x32\xdd\x62\x3d\x63\xe2\xa7\x3f\x5c\x20\x34\x63\x4e\xa7\xb0\x90\xa4\xa5\xbc\x4a\xd3\x7b\x9f\xdf\xaf\xe1\x32\xad\x06\xb2\x56\x21\xab\x87\x59\x55\xf0\x32\x83\x1a\x7a\x1c\x73\xa5\x0d\x88\x4a\xb9\xbc\xb5\x08\x21\xbf\x3e\x50\x77\xc3\x5b\x1f\x85\xff\xec\x91\xa6\x73\x1a\x7f\x44\xc7\xc8\xd3\x68\x37\xac\xb5\x38\xa3\x46\x4f\xd0\xba\xaa\xd8\x0c\x55\x2d\xd1\x21\xf3\x65\xe7\x04\xa9\xcb\x9c\x66\x79\xd9\xdc\xf4\x8d\x89\x6e\x3a\x94\x30\x16\x88\x47\xce\x52\x1a\xbb\xca\xf3\xaa\x48\xe3\xac\x7e\x75\x91\xe1\x7a\x47\x2d\x9b\x89\x3c\x79\xc1\xf7\x92\x15\x90\xcd\x52\x6b\xef\xdc\xe1\x9b\x57\xcf\xf2\x36\x21\xcc\x59\x84\x5f\xee\x6e\xd7\x53\x52\x8b\xfe\x06\xee\x7d\xdb\x36\xe4\xcf\x96\xaf\xca\xe7\x78\xf6\x5f\xcc\x32\x49\xf5\xda\x1c\xa5\x32\xbb\x61\xe9\xda\xee\x94\xb2\x52\x84\xb9\x77\x6d\x3b\x84\x4a\x2a\x85\x95\x99\xc3\x1f\x53\xbc\x4d\x6f\x79\x3b\x48\x51\x03\x05\xa0\xa4\xa6\x64\x78\x6c\xb0\xd4\x29\x7c\xdd\x49\x4d\x57\x5a\x73\x9a\x61\x73\xa8\x2c\x01\xf6\x5a\xb6\xac\x57\x4c\x18\x4c\xaa\x92\x1e\x85\x91\x33\x52\x9a\x5e\x50\x04\xc3\x28\x52\xdb\xe0\x2e\x74\xbf\x46\x62\xb8\x00\x26\x06\x1f\x6d\x1e\xd9\xb0\x9a\x03\xa5\x41\xc2\x46\xc6\x5a\x88\x25\x81\xf8\x40\x80\xc6\x28\x69\x8c\x01\x4b\x78\x96\x73\xb0\xd6\xc6\x1c\xd1\xf1\x6f\x3a\x01\x37\x26\xc5\x86\xc8\xd2\xd0\xeb\x69\xf4\x18\xe2\x42\xae\x53\x86\x83\x14\xb8\x2a\xf9\x49\xd1\x9c\xd6\xe8\x92\x07\x0e\x82\x23\x42\xe4\x65\x8f\x2c\x9b\xa4\x8a\x7d\xda\x27\x13\xae\x3a\xd3\xe0\xcc\x1d\x4f\x71\x44\x35\xa6\xe2\xc7\x88\x87\x9c\xf4\x9c\x73\x1f\x99\x6f\x79\xd8\x8c\x6c\x23\x95\x89\x56\x7e\x9c\x4a\xb2\x81\xa1\xbd\xd6\xd8\xfc\x8a\xf1\xa3\x8b\xec\x8f\x76\xf5\x10\x66\x29\xb9\xc9\xae\xe7\x48\x5d\xe7\xb1\x56\xe4\x55\xb4\xe1\x4a\x1b\x3f\xb7\x52\x2e\x84\xf9\xac\xcb\x2d\x8c\xe8\x7d\x82\x61\xa2\x2c\xc5\x19\x89\x64\x66\x8a\x46\x24\xec\xa1\xb6\x0a\x69\x3c\x2d\x34\xc3\x1b\xa9\x72\xf1\x19\xa0\x17\xd4\x63\xa8\xfa\x79\xb1\xef\xc0\xa8\x63\x4c\x63\xb3\x1f\x63\x4b\xf1\x64\x1f\xf1\x0d\x5c\x83\xe0\x6d\xc6\xe8\x0f\x6c\xa0\xc1\xcf\xc4\x3b\xd2\xd0\x25\x57\xe5\x06\xea\xf9\x8a\x63\x6a\xcc\x4f\x54\x1e\x79\x33\x69\xef\xc2\x75\xb9\x1c\x58\xd8\xe9\xcd\xa4\x27\xe4\xa6\xb7\xd6\x32\x92\x15\x2d\x62\xe8\x96\x8e\x65\xbb\x72\x69\x31\x62\xac\xb1\x93\x9a\x9b\x85\x4d\x41\xd7\xf0\xcd\xab\x11\x7e\x79\x23\x6f\x6c\xfc\x38\x65\xbc\xd5\x05\xc1\xdb\x13\x54\x7b\x7c\xf3\x2d\xe5\x56\x6d\xf8\xf9\x94\x3d\xfd\x74\xce\xcf\xc5\x70\x79\x86\xe5\x05\x11\x96\x6a\xe5\xbd\xf4\xb2\x1d\xbc\x6c\x74\x06\x05\x3d\x7c\xeb\x1b\x3f\x9d\xe4\x34\x4b\xed\x46\xa7\xad\xd4\x52\x77\x08\x8e\x34\xe6\x55\x19\x7e\xf0\x69\xb1\x9b\x8a\xe2\x2d\x92\xef\x10\x93\xde\xbb\x9b\x8b\xa0\xc4\xd1\xda\x80\x39\x2e\xaa\x85\x92\xdb\xd4\xd0\x62\x63\x96\x7e\x16\x21\x24\x9b\xa3\xa1\x77\x03\xc9\x0c\x84\x7c\x25\x3b\x67\x29\xfd\x88\x9e\x33\x96\xb8\xef\xcc\xe0\xa2\x87\x8b\x73\x77\xf0\xe2\xd4\xe5\xe7\x8c\xf0\x83\x8f\xc9\x48\x63\x32\xf5\x74\x44\x50\xb8\xb5\x59\x2e\xa7\x29\xf5\x2a\x8c\x33\xd1\x18\x5c\x66\x3b\xde\x5b\xb3\x70\xe4\x1a\xcf\x6c\xf4\x29\x35\x0d\x50\xf5\x95\x91\x6a\x35\x25\x09\xf7\xfc\xdc\xf4\x54\xf8\x29\x4c\x51\x91\xa2\xf6\x3d\xaf\x97\x79\xc0\x59\x1c\xa8\x9a\x6a\x76\xd2\x83\xca\x01\x24\xad\xe6\x72\xf0\x9a\x6f\x89\x4d\xb9\x92\xcb\x2a\x2e\x2f\xc7\x3a\x93\x95\xb3\xfb\xf3\x21\xd8\x37\xaf\x44\x63\x4e\x25\x1d\x23\xa7\x8b\x61\xbf\x9f\x64\x83\xcc\x32\xe5\xb2\x61\x83\x71\x17\x5a\x4e\x67\xe3\x7e\x1f\x29\x89\x79\xc8\x55\xc1\x47\xb9\x49\x86\x0d\x56\xac\x77\x70\xc2\x31\x26\xb2\x2c\xd2\x69\x55\x37\xbe\xe7\x25\x6b\x91\x45\x90\x52\xa5\x8b\xab\x16\x99\xe8\xbb\xc5\x15\x64\xc8\xdd\xe8\x84\x9b\xd0\x74\x4a\x3c\x72\x78\x19\xe6\x21\xc0\xec\xa4\x1e\x43\xb8\x99\x8b\xe3\x0d\xbc\x38\x91\x03\xe5\x76\xf6\x99\x0a\x01\x9f\xad\x14\xf0\x5b\x28\x06\x7c\x99\x72\xc0\xe7\x2b\x08\x3c\x5b\x49\x80\x14\x25\xfd\xd7\xa7\x53\xca\xf1\x65\xcd\xf6\xdf\xb9\x54\x99\x75\xf0\xff\x63\x9a\xfb\x93\xde\x9e\x7f\x4f\xaa\x91\x6a\x4f\x63\x99\x27\xd3\x4f\xb8\x9e\x55\x58\x72\xe9\x8e\x4c\x78\xca\x7e\xba\x58\x3d\x77\x00\x45\x76\x94\x9e\x96\xf7\x3a\x16\x85\xdf\xce\x39\x18\x92\xcf\x53\xf3\x0c\xe7\x5a\xa1\x36\x95\x08\x09\x6b\xce\xaa\xa2\xd4\xb9\x71\x86\xfc\x79\xde\xf5\xf7\x39\x9a\x9f\x3e\x0b\x68\x42\xe1\x21\x56\xb5\x33\x63\x37\x6d\x89\x5b\x2b\xfd\xec\x86\xb8\xdb\xed\x73\x4e\x6b\x7a\xfd\x00\x9a\xa0\x9e\x43\xb0\x8c\xd1\x86\x27\x9a\xa8\xe3\x1b\x28\x36\x26\xf3\x85\xe2\x13\xa6\x94\x02\xe7\x70\x9c\x67\x95\xb4\x4b\xd1\x65\x84\x90\x47\x95\xd5\xa4\x3f\x5f\x04\x5d\x08\x2f\xc7\x4e\x42\xa7\x30\xd6\x02\x62\x5b\xa1\x99\x32\x8f\xca\xdd\x61\xec\xbe\x5c\x3f\xb9\x8e\xa7\x2c\x96\xe4\xcf\x54\x47\xbe\x30\x8f\x9e\x10\xf7\x1b\xe7\xcf\x0e\xf6\xd9\xbc\x39\x40\x8e\xbd\x7d\xc8\x86\xc1\x7f\x64\x82\x6d\xbd\xae\x64\xed\x7d\x6a\x7a\xd6\xae\xbf\x4f\x05\xd1\xbd\xa4\x92\x73\x78\x4b\x30\x4c\xea\xb1\x6c\x62\xf2\xb5\x2f\xf7\x88\x1a\x5d\x1f\xd4\x4a\xe7\x66\x98\xbd\x0d\xf4\x27\x0d\xf2\x28\xc2\x06\xfa\xff\x89\x99\x80\x8c\xe0\x59\x9b\xd3\xbd\x97\x92\x76\x77\xe3\x81\xc6\x56\x60\x32\x43\xea\xde\x9d\x32\xd2\x6f\xa4\xe3\x71\x41\x72\x35\xbe\x44\x9a\x80\xc9\x0a\xbc\x13\x84\x7f\x30\xdf\x36\x7a\xae\xe2\x08\xe6\x24\x46\xfc\x9c\xbb\x70\x1b\xa9\xb0\x41\x6e\x2f\xd6\xf1\x59\x85\x9d\x29\xcc\xb0\x96\x2e\x66\x1a\xa1\x9e\x7c\x4f\xe4\xea\xb4\x4a\x9c\x1b\x78\xb1\x66\xd7\x1e\x62\x9c\x75\x14\xa1\x79\x99\x2a\x86\x6f\xb1\xb8\xd0\x8d\xa2\x68\x7a\x8d\xf4\xc0\xe3\x24\x8c\x4e\xd4\x64\xa2\x3f\xcf\x1a\x91\x99\x13\x9b\x68\x43\xd2\x7c\xf1\xa8\xee\x6e\xa9\xff\xf2\x93\x3b\xf8\xcf\xd9\x4a\x47\xfe\xd3\x1c\x5b\xc3\x57\x7e\xd1\xaf\x93\x89\x83\x4f\x6f\x72\xed\xf0\x91\xff\x79\xf6\x17\xb9\x3f\xf2\xbd\x3c\x9a\xc1\x8d\x1e\x25\x66\x4f\xc6\x00\x98\x7b\x57\x57\x36\xb3\x0b\x60\x62\x90\x82\x2e\x8d\x58\xc7\x2a\x13\x87\x0b\xf6\x29\xff\xa5\xaa\x1d\xbc\x7f\xf6\x18\x0b\x5c\x21\xae\x4a\x6e\x32\xc6\x18\x3a\x86\x01\xc3\xf8\xfe\xc6\x99\x9b\x4b\xa4\x7d\x9d\xdb\xb2\xe5\xb9\xfb\x0c\x43\x1c\x35\x77\xe5\x0d\x35\x24\xe7\x04\x9b\x94\x50\x69\x38\x3c\x88\xbd\xb9\x6c\x56\xc0\x4d\x6f\x1c\x58\x6c\x89\xeb\x35\x7c\xf7\xab\xbb\x8e\xd8\x9d\xcb\x22\x7b\x6b\x12\x27\x8f\x6e\x46\x83\x49\x4d\x47\xbd\x1b\xc7\xbb\xc2\x94\xcc\x24\x08\x4a\x95\xf4\xff\xcc\x67\x6a\x3e\x47\xfb\x59\x98\x2e\x08\x06\xe6\x9b\x57\xc1\x47\x15\xb9\x75\x86\x63\xc5\xc7\x67\x4a\x2c\xff\x19\x59\x41\x48\xc5\xcf\xa5\x04\x09\xff\x46\xd3\x03\xd7\x71\x16\x24\xdb\x9f\x6c\x08\x13\x92\x61\xed\x64\xa6\x60\x1c\x9b\xcc\x4a\xa1\x7e\xaa\x54\xe0\xe8\x1b\x7c\xc7\x60\xd4\xdc\x3c\x2a\x95\x6d\xfd\xc3\x78\xd1\x74\xb8\xa0\x9d\x3f\x65\x27\xf8\xd9\xae\x69\x67\x7e\xd5\xe3\x1f\xdf\x74\x49\x40\xba\x29\x1c\x37\x8b\xb4\x41\x17\x94\x6f\x7a\x7a\x7b\x8c\xc2\x45\x23\xfd\xc7\x2f\xe8\xcd\xac\x09\xc8\x50\x0a\x1a\xa1\x9d\xae\x30\x16\x5e\x76\xcd\x2f\x2f\xbe\xf4\x4a\x87\x24\x0b\xfe\x26\xbc\x1b\xf6\x22\xbf\xf5\x82\xe7\xc8\x1e\xfd\xf6\xb2\xdc\x7c\xbe\x08\xfb\xd7\x68\x53\xe9\x79\x46\xb1\x31\x3b\x4b\x5a\x5b\x79\x66\x34\xf5\xd1\x87\x4b\xd1\xfa\xd2\xf5\x87\xfa\xe2\x80\xf3\x1a\x63\x32\x9c\x3e\xb6\x2c\x93\xf7\x70\xe7\xaf\xe7\x7d\x71\x68\x75\xde\x9a\x4d\x84\xdc\x17\x14\x17\x8f\x38\x14\x2e\x38\x6f\xb1\x8c\x23\xdf\x7b\xee\xde\xad\xf7\xe4\x9c\x4d\x1f\x49\x58\x59\x56\xff\x73\x6f\x19\xaf\x8a\x72\x3f\x57\xb3\x7c\xd6\x67\x8c\xae\x66\xb7\xe2\xa6\x46\x98\x00\xa6\x14\x1b\xe6\xa3\x3d\x31\x26\xb8\xbb\x0d\xaf\x5e\x2a\x0c\x05\xfd\xf1\x62\xce\x5e\xc4\xc9\xd8\xee\xcc\x54\x4d\xe4\xf8\x23\x0e\x27\x67\x6b\x5c\x28\x68\x1d\xd5\x9d\xf1\x21\x52\x76\x2e\x50\xc8\xea\x57\xf4\xad\x88\x03\xc7\x63\xfc\x00\x85\xdf\x14\xa7\x5e\x5d\x3f\xbd\x0d\x74\xfa\x41\x3d\xff\x71\x12\xc6\x05\xd6\x2e\x21\xe4\x27\xc7\x3a\x7f\x87\x48\x75\xc6\x20\xde\x3c\x6d\x73\x5d\x35\xa3\x50\x53\xf6\xdc\xfd\xea\x49\x08\x4c\xbf\x78\x3a\x74\xa6\xdb\x00\x6c\x75\x69\xd6\xc7\xa3\x12\xbc\x7d\x5e\x45\xd6\xc7\xdf\x45\x73\x11\xef\x04\x5e\xf2\xe6\xe5\x64\x78\xb2\xfc\xd6\x16\xbc\x75\x61\x74\xc5\x04\x15\x93\x9c\x0f\x71\xdf\x02\xa1\x7e\x3a\xf7\x9f\x0e\x71\x4d\x62\xf7\x39\x86\xf8\x11\xa8\x18\xab\xd7\x12\xb4\x9c\x02\xfe\x2b\x4f\x62\x6b\xff\xfd\x8c\x9d\x3c\xd2\x1b\x95\x54\xb6\xe2\x26\x7e\xf6\xa7\xe5\x8f\xf8\x44\x4a\xfe\x64\xd2\xf1\xfc\xb9\xaa\xa7\x05\x62\x0d\x97\x55\xf8\xb0\x8c\x7b\xa7\xba\x8d\x5e\xd7\xec\xbc\xf4\xf3\xfa\xec\xf8\xd1\xbf\x61\x19\x5f\x94\x4a\x47\xc5\x98\x65\x32\x1a\x66\x54\x8f\x69\x11\x29\xe9\x58\xda\x73\xa4\xdf\x6a\xa0\x8f\xc1\xd4\x7b\x2e\xe8\x5a\x1c\x35\xb3\x8a\xd5\x33\x8d\xe5\x97\x36\xcf\xc2\x1f\x26\x7c\xc9\xcc\xfc\x0f\xe8\x3f\x1f\x94\x7c\x88\xe5\x51\xd0\xab\x4a\x2c\xbe\xbc\x3e\x7e\xe7\xc3\xfa\x03\x21\xa1\x95\x62\x8b\x0a\xf0\x17\xae\x4d\x1e\xd8\x3c\xff\x6b\x2a\x31\x1e\xbd\x3a\xa9\x8b\x52\x9c\x3d\xbe\xeb\x8e\x14\xdf\xf0\x0b\x67\xb6\xc2\xf1\x6b\x3e\xba\xf6\x79\x27\xa7\xa3\xea\x73\x67\x7d\xfa\x33\x3a\xc5\xd3\xc2\x34\x95\x77\xd9\x4a\x21\xa1\xa7\x49\x3b\xf7\xa9\x24\x7a\x61\x28\xfd\x24\x1b\x59\x43\x2b\x70\x71\x5e\x39\xcf\xa6\xc7\xbc\x71\xdc\x69\x9d\xdf\x77\xd9\xc7\xb7\x20\xed\xea\xfa\xec\x29\xdd\x93\x92\x9c\xb3\x9f\x0e\x59\xfc\xb4\x06\x5c\xc3\x6b\xff\xd5\x8e\xd7\xd3\x6f\xe9\x9d\xd8\x3b\x7e\x0a\xc3\x6e\x75\xa7\x9c\xed\xbc\x98\x5c\xc6\x99\x0f\x73\x39\x9a\x3f\x5d\xfc\x6f\x00\x00\x00\xff\xff\x4d\x61\x55\x0c\x30\x50\x00\x00" +var _contractsStandardNftstorefrontCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7c\x4f\x73\x1c\xb7\xb1\xf8\x9d\x9f\x02\xe2\xc1\x59\xea\x47\xad\x5c\xbf\x4a\xe5\xc0\x12\x2d\xcb\x54\xf4\x8a\x15\x5b\x51\x29\x4c\x7c\x70\xf9\x80\x9d\xe9\xd9\x45\x71\x16\x98\x00\x98\x5d\x4d\x14\x7d\xf7\x57\xdd\xf8\x33\xc0\x0c\x66\x49\x26\x7a\xaf\x2a\xe5\xb7\x07\x9b\xda\x05\xba\x1b\x8d\xfe\xdf\x3d\x23\xf6\x9d\xd2\x96\x9d\xbf\xeb\xe5\x56\x6c\x5a\xb8\x53\xf7\x20\xcf\xcf\xc2\xd7\xef\x95\x5c\xf8\xe5\x87\x5e\x4b\xd0\xe7\x67\x67\x2f\x5f\xbe\x64\xef\x7f\xb8\x62\x77\x3b\x61\x58\xa5\xa4\xd5\xbc\xb2\x4c\x18\x26\x15\x6b\x95\xdc\x82\x66\xa6\xef\x70\x13\xd4\x6b\xf6\xfe\xdd\x1d\xfb\x8b\x55\x1a\x1a\xad\xa4\x65\x7f\xfb\xff\xb8\x52\x43\xa5\xf6\x7b\x90\x35\xd4\x08\xce\x81\x7c\x77\x37\xae\x5b\xc7\xaf\xdf\xb0\x2d\x48\xd0\xbc\x65\x5d\xaf\x3b\x65\x80\x19\xde\x42\xc0\x30\xe2\x6f\x94\x66\xef\x5a\x75\x64\xd3\x13\x98\x11\xd6\x1f\x79\xb5\x63\xbc\xaa\x54\x2f\x2d\xb3\x3b\x6e\xd9\x91\x4b\x6b\x98\x55\xac\x15\xc6\x22\x09\x86\x00\x11\x0a\x21\x8d\xe5\x6d\x6b\x18\x4f\x0e\x70\x49\x80\xb8\xac\x69\x87\x61\x42\xd6\xe2\x20\xea\x9e\xb7\xb4\xc9\xb0\xa3\xb0\x3b\x21\x1d\xf4\xe4\xdc\xdc\xb0\x1f\x85\xb1\x42\x6e\x1d\x3d\xec\x6e\x07\x1a\x90\x17\x4a\x42\xba\xb0\x03\x1d\x48\xbc\x64\xc2\xb2\x1d\x97\x35\xc2\x75\xd0\x55\xc3\x78\xdb\x12\x53\xed\xd0\x81\x21\x50\x48\x31\xe1\xf3\xfb\x26\x07\xf6\x78\x59\xc5\x25\xdb\xf1\x03\x10\x46\xa5\xd9\x5e\x69\x60\xe7\x55\x6f\xcf\x09\xae\xdd\x79\xd6\x76\x5a\x54\x40\x00\x09\xc6\x56\x01\x71\x28\xdd\xc5\xeb\x5a\x83\x31\x60\xd6\xec\xa6\xb7\x86\x40\x6f\x80\xf5\x06\x6a\x5c\xda\xf1\x81\xd8\x83\x58\x1b\xf0\x54\x2a\xcd\x94\xdd\x81\xc6\x2b\x33\xa2\x06\xcd\xad\x50\xfe\x76\x1c\xa1\x78\xaa\x3d\x1f\x10\x12\xee\x86\x9a\x09\x99\xa1\x0d\x1c\xbc\x24\x62\x0f\xbc\x15\xb5\xb0\x03\x12\x0f\xbc\xda\x11\xa0\xf4\xb0\xc0\x8d\x68\x09\x5c\xb5\x83\xea\x1e\xea\x91\x31\x1f\x7a\x5d\xed\xb8\x01\xed\x68\x3f\x72\x5b\xed\x88\x8f\x61\x3f\x1c\x00\x25\x03\x2f\x9a\x36\x13\xc6\xc0\x76\xfc\x9a\xc0\xdc\xbe\xc5\xe3\x1a\x00\x26\x88\x81\x03\x3b\x0a\xb3\xc3\xef\x36\xfd\x40\x5b\xc2\x41\x2c\xec\xdd\x49\x7f\xe2\xfa\x1e\x6c\xd7\xf2\x0a\x1c\x78\xc7\x14\xbe\xdd\x6a\xd8\x72\xab\x1e\xa0\x28\x13\x3f\x02\x4b\x97\x27\xa4\x05\x0d\xc6\x5f\x3d\xaf\x2a\x30\x66\xc5\xdb\xf6\x62\x54\x90\x4c\xbf\xd8\xe7\xb3\x33\xc6\x18\x4b\x57\x82\xb4\xc2\xb6\xb0\x07\x69\xd9\x8d\x06\x6e\xc1\xa3\x3e\xb9\xf2\x23\xec\xd5\x21\xae\xa4\xa5\x48\xe2\x88\xea\x56\x0a\x2b\x78\x2b\xfe\x01\x75\xfc\xf5\x4d\x2a\xf1\x1a\x8c\xea\x75\x05\x6c\xc7\x0d\xdb\x00\x48\x56\x11\xf6\x7a\x1d\xd7\xff\x11\xcf\x4e\x82\xd3\xef\xc3\x9d\x49\x75\x64\xf0\xa9\x83\xca\x86\xcb\x6a\xb4\xda\x33\x8b\x56\x29\x35\x24\x01\xc6\x7b\x65\xc1\x2b\x3d\xb0\x5a\x31\xa9\x2c\x33\x1d\x54\xa2\x19\x18\x97\x41\xa4\xaf\xf0\xd7\x8a\x4b\xfc\x15\xd9\x6c\x76\xaa\x6f\x6b\x5c\x3c\x42\x72\xcc\xa9\x23\xe1\x26\x80\x23\xed\xe2\x92\xa9\xa3\xc4\x2b\x75\x10\x2f\x09\x8e\x97\x6b\xe4\xd5\xc8\x06\xde\x58\xd4\x07\x04\x27\x94\x44\x69\x3f\xf2\xc1\x24\x14\x90\xe8\x8d\x88\x3d\x97\xdf\x1c\xb8\x68\xf9\xa6\x85\x70\xf0\x89\xfa\xd5\x60\x41\xef\x85\x04\x92\x40\x4f\x46\x04\xe2\x55\xdd\xd1\xe8\xff\x91\xdc\xc6\x6a\xbd\x5e\x0b\x6b\x58\xab\x2a\xa2\xea\x82\x71\x4b\x6b\xac\xd8\x03\x53\x4d\x84\x13\xa4\x1b\x65\x73\xd3\x5b\xa6\x64\x3b\xb8\xb5\xdc\xb2\x4e\x43\x25\x0c\x9e\x97\x84\x24\x18\xc4\xf0\xb5\xd5\x5c\x1a\x5e\x21\xfc\xf1\x74\xb7\xde\x06\x41\xdb\x82\x26\x4e\x99\x29\x71\xc7\x9d\x68\x21\xc3\x2c\x8c\xb3\x03\x97\x09\x5d\xdc\x3a\xbb\x8a\x0b\xf7\x11\xfe\x5c\x8a\x49\xa8\x8a\x82\xba\x32\xf1\xdb\x8f\xfe\x92\x6f\xdf\x5e\xb1\xbf\xde\x4a\xfb\x87\xdf\x5f\x94\xa4\xfc\x2d\x18\xab\xd5\xb0\x24\xe3\x51\xb4\xeb\xb0\xee\x61\xe1\x36\x56\x75\xac\xd3\x0a\x29\x4e\x4c\xd2\xd7\x90\xf2\xc7\x33\x25\x9e\xeb\xb1\x2c\x99\xca\x68\xc2\x8f\x70\x67\x53\x3d\x27\x05\xe1\x75\xed\xa4\x97\x97\x6c\xc3\x78\xc0\xbb\x1d\xb0\x37\xee\x14\x78\xf3\x3d\x18\x46\x9e\x94\x6b\xef\x11\xd8\x71\x07\x74\xf5\xfe\x2c\xc2\x30\xd8\x0b\x6b\xa1\xbe\x44\x39\xcd\xe4\xd7\x58\x6e\x21\x28\x81\xf7\x9e\xc6\x19\x72\x0d\x0d\x68\xa4\xc7\x6b\x6e\xb5\xe3\x72\x0b\x35\x53\xbd\x45\xef\xe5\x37\x8d\x7c\xcf\xac\xeb\x51\xe9\xfb\xa6\x55\xc7\x4b\x66\x14\x6d\xe6\x1a\x9a\xbe\x45\x70\xce\x9b\x10\x8d\x3d\x5d\xeb\x63\x84\x74\xca\xd4\x15\xad\xc3\xcf\x78\x2b\x6f\x82\x01\xf3\x7f\x5c\xc6\x35\x9e\xef\xf3\x6b\x1b\x97\xc8\xc6\xde\x0d\x1d\x5c\x31\xfc\x6f\xf6\x75\x69\x75\x63\xff\xc6\xfb\xb6\xb8\x83\x82\x87\x2b\xf6\xd7\x77\xe2\xd3\x1f\x7e\x4f\xdf\xce\x65\xe3\x46\xed\xbb\x16\x6c\xa2\x2b\x77\x89\x46\x47\xe9\xc0\xbb\x6f\x0f\x18\x43\xde\x3a\x05\x02\x41\xae\x92\x7e\xec\xbc\x03\xaf\x2f\x31\x3a\xd0\xe4\x84\x9c\x20\xcd\x35\xec\x34\x53\x23\x35\xab\xa7\x30\xec\x94\x36\x24\xdc\x08\x54\x5e\xb1\x1f\x94\x6a\x9f\xc6\xef\x29\xf7\x46\xf9\xc2\xbf\xf8\x16\x3e\x70\xbb\xcb\x59\xe8\x6d\x36\xda\x5b\xe3\xd6\xf8\xc0\xb0\xe8\x6f\xbd\x6f\xdb\xf8\x8d\x81\x63\x29\xa7\x5a\xb0\x65\xbc\x57\x2c\x25\xa2\x40\xe3\x87\x7e\xd3\x8a\x6a\x46\x62\x47\x5f\x8f\x94\x62\x84\x93\x51\xd7\x0a\x79\xff\x10\x1d\x23\xec\x2b\x96\xe0\x49\xc8\xe0\x2d\xdc\x24\xba\xfe\x86\x19\xab\xfb\x0a\xcf\xde\x69\x30\x18\xbf\xc8\x2d\xe3\x98\x87\x88\x4e\x40\xc8\x06\xf6\xbd\xb1\xc8\x0e\x5c\xc0\x38\xab\x40\x5b\x2e\x24\xe3\x7b\xb4\x0b\x53\x07\xda\xf1\x81\x7c\x1b\xa9\x32\x67\x16\x73\x0d\x34\x36\x46\xb5\x27\x44\xcf\xd3\xe1\x09\x64\x9f\xe3\xd5\x07\x06\x69\xa8\x40\x1c\x40\xfb\xa8\x3e\xe2\x59\x67\x2b\x8b\x66\xde\x52\x68\x1e\x8d\x3c\x5a\x9b\x46\xc8\x9a\xa0\x90\xc2\xba\x1d\xe4\x3b\x22\x23\x12\x3b\x41\x21\x89\xf1\xee\x55\xde\x3b\xc5\xf2\xb2\x12\x70\x35\x80\x71\x29\xf9\x73\x61\x30\x5c\x89\x91\x0d\x97\xa2\xeb\x5b\x14\xa3\x1c\xa2\x51\x19\x21\x91\x38\x27\x97\x55\x6f\x63\x86\x31\xa8\xde\x5d\xc1\x16\x3c\x95\x9e\x5b\xdc\xed\x95\x19\xdc\x0a\x13\xa1\xc0\xad\xf5\x46\x69\xad\x8e\xab\x8b\x67\x6b\x0a\x6c\xd6\x01\x0d\x2a\xc3\x84\x77\x2e\x6f\x75\x21\x53\x8d\xe9\x05\x34\x8d\xa8\x50\x0a\xda\x01\x4f\xc6\x99\xa9\xb4\xe8\x92\x5d\x53\x49\x0c\x58\xaf\xd8\x0d\xef\xf8\x46\xb4\xc2\x0e\xaf\xbe\xf9\x9c\xa5\x9d\xeb\x8f\x7e\xd1\x97\xef\xce\x66\x97\xec\x24\x6a\x2a\x49\xd9\x7e\xcf\x71\xd1\xb6\x48\x67\xc7\x05\x39\x47\x9b\x48\xc8\x32\x7d\x0e\x7c\xb4\xc2\x19\x7a\x11\xa3\x1c\x9d\x7e\x1f\xff\xc6\xdf\x57\x4f\x3c\xe0\xe5\x04\xe3\x45\x22\xd7\x64\x2c\xa1\x6d\xd6\x51\xb0\xaf\xe3\x09\xe6\x8b\x3c\x63\xae\x53\x9d\xc3\xcf\x97\x33\xf7\xdf\x99\x2f\x79\x0b\x96\x8b\xd6\xcc\x35\x1d\xf3\x1e\x2e\xa4\xd3\x73\xbf\xf8\x77\x86\xd5\xdc\xf2\x07\xb5\x33\x87\x5d\x50\xd2\xc4\x5e\x79\x95\x8a\xc9\x29\x99\x00\xfc\x19\xb3\xd7\x25\xa5\xf5\x2a\xe8\x75\xcb\x07\xfb\x21\x3d\x70\x41\x50\x2d\x9a\x06\x74\x1e\x8c\xcd\x15\x0b\xe1\x08\xc3\xfe\xfc\xa7\x35\x86\xcf\x47\x8a\x79\x34\xdb\xf3\x7b\x60\xc2\xba\x15\x18\x0d\x5b\xf6\xbc\xe2\xf2\x79\x44\x91\x03\x72\xaa\x16\x9d\x81\x86\x83\x30\x22\xba\x83\x29\x8f\x0e\x5c\x27\xde\x6f\xe2\xae\x02\xc8\x9f\x77\x40\xbe\x9a\x40\xcf\x3c\x7b\x74\x8b\x68\x62\x62\x6a\x55\x42\x34\x71\xa0\xb3\x8b\x40\xf7\x19\xd4\x68\x5a\xf8\x59\x53\xba\xee\xb3\x81\x0d\x20\x05\x2e\x1b\x5f\x56\x9c\xcc\x2d\xcf\x90\xdd\xbe\x8d\xa8\xde\xdd\x65\x85\x1e\x3b\x74\x70\x12\xea\x02\x9b\xa6\x47\x28\x58\x00\x6f\x1c\x4c\x74\x4e\x7b\x5e\x43\x26\x5a\x53\x74\x86\xb7\xf0\xc1\xed\x9a\x84\x69\x4b\x76\x28\x73\x7e\x64\x6a\x84\x8b\xa0\x5d\xe6\x20\xa0\xce\x29\x7b\x00\xf7\x2c\x04\x64\xa9\xe5\x0d\x30\x9d\xa3\xa9\x05\x0a\x9b\x92\xc8\x81\x60\x07\x37\x60\x8f\x2e\x00\xf4\xde\xd9\x9c\x46\x78\xd3\x5b\x73\xc5\x7e\xf1\x3e\xf5\xd7\xdc\xde\x19\xb0\x77\x2a\x94\x7b\xea\xec\xa7\x5b\xad\x51\x5d\x8c\xd8\xb4\x03\xae\xcb\xa5\x95\x9b\x51\xfa\xd6\x45\x53\xe9\x69\x09\x15\x96\x0b\xd6\xf4\x72\x82\x6f\x55\x34\x85\xa3\xfc\x5f\x33\xab\x7b\x48\xcc\xdc\x93\x6d\x35\x5b\x65\xf0\x17\x02\x4b\xb6\x1c\xcc\x13\x55\x8b\x22\x33\x5f\x37\xe1\xf6\x64\xc1\x29\xc3\x50\xe4\x45\xba\x83\x5d\x67\x00\x4e\x33\xae\xe1\xad\x81\xf9\x12\xcf\x00\x76\x1d\x58\x51\x5c\x42\xb8\xe8\xff\x05\x8a\x0a\xcc\x40\xca\x0a\x5f\x67\x9b\x43\xf8\x4b\x72\x5d\xf5\xd6\x64\xbf\x72\x63\x40\xdb\x55\xe0\xe0\xba\x05\xb9\xb5\x3b\xf6\x1d\xfb\xf6\x92\xed\xc1\x18\xbe\x85\x2b\x76\x1e\x9c\x08\x29\xa3\x2b\x27\x59\xd6\x02\x37\x96\x0a\xa1\x41\x43\x30\x6a\x8a\xda\x71\x7e\x51\x3e\x03\x55\x66\xaf\xe3\x9d\x9d\x4d\x89\xbd\xe1\x6d\x45\x01\x9b\x2b\xef\x28\xcb\x5b\x5f\xfb\xf5\x25\x86\xc2\x29\xc8\xf8\x07\x1d\x67\xd7\xec\xdb\xf5\xb7\x53\xb0\x1f\x40\x37\x4a\xef\x83\xf0\xfa\x84\x57\x49\x56\x85\x50\x42\x80\x2f\x8a\x55\x91\x82\xa4\xf0\x4c\xc8\xf1\x80\xce\x38\x25\xba\x8f\x1f\x8c\x8a\xf1\x47\xcc\x70\xb2\x83\xe6\xa2\xe5\x69\xf9\x09\x1d\xa1\xe9\x35\xf8\x9a\x1a\x73\x61\xe2\x42\x18\x95\x6c\xfc\x19\x5c\xe8\x15\x6a\xbf\xc2\x30\xbe\xc5\x5c\x20\x16\x17\x0a\xf1\x7e\xfa\xa9\x7a\xbb\x9e\x05\xa7\xb3\x55\xf8\x79\xfd\x9a\x75\x5c\x8a\x6a\x75\x7e\xe3\xe3\x00\x47\x63\xd8\x7d\x3e\xdf\x86\x71\x4e\x5d\x87\x1b\x8a\x56\x5c\x4d\x2f\x72\xb6\x31\xbd\xba\xf1\xef\xff\x47\xd4\x4e\x22\x2e\x16\xa3\xae\xf0\x49\x24\xd8\xed\xfb\x0e\xaf\xff\xb4\xf4\x4a\x25\x5f\xfc\x03\xb4\x72\xf4\x9c\x5f\xcc\x84\x30\xd1\x98\x20\x0c\x75\x22\x0d\x0b\xda\x39\x3d\xc2\xc3\x71\xa2\x4b\x13\xc7\x30\x51\xba\x92\x79\xc3\x2b\xc4\xa4\x0e\xa2\x76\x91\x62\x6f\xa8\x50\xe3\xd3\xd4\x71\x0d\xc5\x64\x1e\xd6\x72\xfc\x18\x43\xba\x71\x63\x86\x7f\x12\x4a\xba\x9b\x7e\xff\xee\x6e\xee\x25\x49\xfa\x1c\xc7\xa3\x33\xe6\x7b\xa0\x8c\xcb\xe7\x68\x18\x84\x18\xcb\x65\xcd\x75\x3d\x82\x4a\xa4\x8c\x5c\xc8\x18\xb0\xa0\x0c\x6f\x30\xe5\xbb\x24\x2d\x82\x4f\x7c\xdf\xb5\xd4\xb9\x10\x49\x81\x12\xc5\x99\x1d\x04\x67\x5c\xba\xce\x44\x9b\x1e\x9a\x95\x5d\x20\x1d\x1e\xbd\x5f\x42\xc6\x15\xfb\xe6\x73\x29\x24\xfb\xf2\x3a\x77\x72\xc1\xa6\x67\x5f\x06\x07\x9a\xd6\x7a\x2f\xd9\xa6\x1f\x7c\xc5\xcc\xa9\x5f\x21\xaf\xeb\xf8\xe0\xb8\xb3\x01\x09\x98\xd6\x71\x2d\x7c\xa3\x45\x83\xed\xb5\x34\x89\xf6\x7a\x8d\xd9\xf4\x43\x6a\x06\x4e\x9d\x2f\x10\xbb\xf2\x96\xf8\x8a\x7d\x3f\xc9\x8a\xc8\x37\x7c\xb9\xc0\x1f\x8a\xa7\xcf\x0f\xbf\x05\x9b\x66\x30\x0f\xa1\x1f\x97\x23\x7f\x27\x29\xd0\x92\xe8\x27\xb9\x51\x9e\xce\xf3\xb6\x55\x47\xe4\x8d\x6b\x6c\x51\xa5\x92\xae\x9f\x8a\x32\x32\xc9\x52\x39\xdb\x8a\x03\xc8\x3c\x0a\x1c\x4b\xee\xc8\xdd\x58\xae\xd0\xaa\x02\xa8\x7d\x4b\x91\xbb\x08\x2d\x00\xef\x5a\x31\x86\x77\x06\x83\x2f\xde\xce\xc2\xbc\x93\x8a\xe5\xcf\x74\x95\xeb\xd5\x25\x73\xdd\xe9\x35\xfe\x8f\x3a\x23\xa9\xa2\xf9\x0a\xbb\xa3\xc1\xd7\x82\x83\x21\x4f\x02\x3e\x61\xa6\xb5\x43\xbf\xdd\x37\x26\xd2\x34\xc6\xe5\x6b\x79\x1d\xf2\x88\x3e\x65\x8b\xca\x28\xa8\xdf\x5b\x85\xc2\x22\x15\xa8\x33\x88\xb1\xf9\xcb\x99\x81\x8e\x6b\x74\x81\xbe\x5a\x3d\x82\x24\x96\x8e\x11\x8f\x47\x6f\x8a\xc2\xe1\x36\x87\x52\xe4\x58\xb4\xcf\xec\xe7\x62\x59\x13\x4d\x29\xda\xd6\xbe\x17\xf5\x52\x3c\xb7\xbc\xab\x76\xf2\x97\x45\x72\x39\x94\x49\x16\x37\xdd\x38\xf2\xb0\x1c\xca\xfe\xc5\x6a\xe4\xfb\x64\x97\xff\x79\x2d\x6a\x90\x16\x13\x0a\x7d\x22\xdc\x2d\x6c\x4e\x42\xbf\xc4\x2d\x15\x63\xfa\x4d\xaf\xe5\x0d\x6f\xdb\x0d\xaf\xee\x67\x11\xfd\xd7\x17\x10\x0f\xf5\xcf\x68\x7e\x8f\xc2\xc0\x89\x8d\x89\xb8\xac\x2e\x66\x10\xee\x7c\x79\x60\x03\x15\xef\x1d\x1c\x2f\xe1\x79\x0f\x4d\xa6\xad\x24\x9d\x36\x74\x27\x31\x8b\x6b\xe3\x27\x8b\xab\x16\xb8\xec\xbb\xd5\x05\x9b\x21\x77\xf5\x08\xd7\x36\x71\x8a\x46\xb8\xfb\xca\x2a\x7d\x19\x8a\x0c\xcc\xee\x14\x4a\x7a\x2f\x2b\x3f\x0d\x90\x42\x11\x0d\x7b\x56\x96\x94\x42\xb8\x87\x8a\x7d\xa2\xa6\x9f\x7e\x0a\x8a\xb0\x20\xff\xe1\x53\xd6\x83\x47\x8a\x7f\xf8\x24\x6a\xf0\x18\xf9\x0f\x9f\xa8\x07\x25\xf1\x5f\xdc\x32\xa3\x6f\x9e\xed\x30\x12\xfd\xf4\x5f\x5f\x96\x32\xd1\x3b\x8c\x3f\x04\xc5\x0b\x2b\x8c\xe9\xc6\xb2\xe0\x25\xc5\x78\x4e\x22\x3f\x5d\x30\x8f\x2d\x1d\x28\x99\xea\x16\x52\xe5\x92\x77\xbf\xb8\xec\xc9\x58\xf4\x5a\x31\x71\x18\x9c\xcb\x72\x31\x40\x5a\x41\xb3\x8a\xca\x31\xb5\xe6\xc7\xac\x3e\x43\xff\x70\xae\xeb\xf6\xad\xcb\x2c\x84\x45\xfd\x69\x5b\x48\xba\xcf\x2c\xaf\x0c\xe7\xd8\x8c\xcf\x16\x0a\xa8\x9e\x73\x39\x3c\x47\x64\xd4\xe7\x1b\x54\x9f\x54\xd1\x42\xcb\x8f\xfc\xcc\x56\x1c\x82\x23\x0e\xb8\x4c\x5f\xed\x18\x4f\xb1\x51\x88\x19\xf1\x50\x4f\xb4\xa5\x79\x00\x97\x84\x38\xc2\x6b\x70\x3d\xc9\x90\xd7\x08\x5f\x23\x46\xf5\x16\x21\x54\xcc\x10\x61\xc4\x18\xaa\x80\x55\xcb\xc5\x7e\x5e\x4d\x19\xad\x9d\x2f\x57\x7d\xa0\x88\x18\xf4\x78\xcd\x59\x25\x98\xf7\x76\xb7\x9a\x45\x37\x3f\x7b\xb6\x5c\x94\x02\xbf\x00\xf1\x72\x5e\xa6\xbb\x89\xb7\xe1\x9c\xf9\xb4\x60\xfe\x1b\x8d\x92\x27\x26\xce\xf5\x1d\x9a\xe0\xc8\x8a\x97\x94\x74\x41\x46\x14\xb4\x3c\x0d\x1c\x9d\x25\xb8\x28\xe5\x76\x88\xe0\xd9\x35\x93\xa2\x4d\xd3\xba\x9b\x30\x02\x13\x52\x53\xee\xba\xe3\x20\x9d\x3e\x78\xd6\x9d\x2f\x81\x7c\xb6\x16\xe6\x56\xe2\x25\x54\x50\x26\x07\x2d\xd9\x45\x8a\xd2\xc5\xe7\xc8\xee\xa3\x56\xa8\xee\x43\x07\x8b\xf0\x5f\xaf\x45\xcd\xae\x3d\x63\xe6\x27\x3d\x05\xf7\xf6\xed\x04\xaa\x4b\x12\x18\x71\x82\x9b\xc5\xcb\xb9\x58\x32\x94\xe5\x80\x9e\xfd\x17\xb8\x26\xc1\xc4\x3c\x56\xbd\xa6\x12\x7f\x36\x87\xf0\xe3\x58\x80\xe4\xbe\x23\x51\x30\x53\xfc\xa0\x44\x6d\x30\xcb\xa6\x8c\x1b\xb3\x68\x9f\xb4\x1e\xb8\x16\x18\x03\xbb\xac\x67\x0b\xd6\x82\x66\x7b\xb0\x3b\x55\x9b\x10\xa6\xef\x5d\x01\xa6\x6b\xf9\x90\x13\x2a\x45\x05\xed\xe0\x8c\xa7\x6b\x83\x19\xb6\x3a\xee\x44\xb5\x0b\x6d\x0a\xcf\xa1\x38\xfc\x74\xf1\x38\x99\x3f\x95\xba\x4c\x44\xdd\x63\x48\xbd\xd7\x12\xbb\x7f\x63\xc9\xe3\x84\x51\x9d\x86\x42\x20\xb4\x10\x31\x5d\xfb\x92\xe9\x15\x3b\x4f\x03\x55\xde\x6a\xe0\xf5\x30\x09\x56\xcf\x67\x50\x43\x1b\x7a\xaa\xca\x31\xfc\x29\x94\x47\x2f\xae\xd8\x79\x28\x59\x1e\xa8\x01\x2d\x5c\x64\xac\xe1\xef\x3d\xd0\x60\x64\xe3\xcf\xe8\x98\xba\x8c\x76\xc3\x5b\xc4\x19\xd5\x3c\x43\xeb\x1a\x0e\x13\x54\xb5\x02\x87\xcc\x77\x02\x13\xa4\xae\x18\x35\x89\x7c\xa6\xf1\xeb\x58\x3b\x4c\x63\xe5\xb1\x57\x37\x72\x96\x2a\x83\xeb\x79\xa9\x2a\xd2\x38\x69\x09\x9c\xcd\x70\xbd\xa3\xae\x7a\x26\x5b\x5e\x09\xbc\x94\x05\x64\x93\x6a\xa5\x77\xd7\xec\xd5\x8b\x47\x39\x85\x10\xb8\xac\xc2\x1f\xe5\x20\x71\x16\xf3\xbf\xf7\x93\x37\xa1\x24\x89\x7c\xd5\xbe\x6c\x86\xff\xe2\xc8\x24\xdd\x1b\x7b\x54\xda\xee\x86\x4b\x37\x41\x45\x55\x40\x8a\x19\xf7\x6e\xc2\x02\x58\xa5\xb4\x86\xca\x4e\xe1\x8f\xd5\xb2\x4d\x8f\xbc\x1d\x94\xac\x5d\x92\x43\x2a\x4b\xc6\x08\xc3\x9f\x4e\xc3\xcb\x4e\x19\xba\xd2\x5a\x50\xc2\xe0\x50\x21\x01\x78\x2d\x5b\xde\x6b\x2e\x2d\x24\x8d\x1e\x8f\xc2\xaa\x09\x29\x21\xe5\xe0\x14\x7b\x6d\x60\x17\x06\x14\x46\x62\x84\x64\x5c\x0e\x3e\x7e\x3c\xf2\xa1\x90\x5f\x81\x86\x46\xc5\xf2\x32\x92\x40\x7c\x20\x40\x63\x5c\x33\x46\x75\x25\x3c\x97\x53\xb0\x68\x6f\x8e\xe0\xf8\x97\x0f\x1f\x8f\xf5\x45\x4b\x64\x19\xd6\x9b\x3c\x1e\x0c\x91\x9e\x30\x29\xc3\x99\x92\x93\xfc\xd2\x7b\x4f\xd9\x2c\x6b\x74\xc9\x2f\x07\xc1\x91\x21\x56\xc2\x23\xab\x26\x69\x14\x2e\x7b\x6a\xc2\x55\xcf\x34\x78\xe6\xa3\x73\x1c\x51\x8d\xa9\x9e\x3c\xe2\x21\xcf\x3d\xe5\xdc\x47\xee\xbb\xce\x5c\x32\xbe\x51\xda\x46\x8b\x3f\x0e\x9c\x62\x28\x87\xd7\x1a\xe7\x11\x62\xc4\xe7\x62\xf5\x23\xae\x1e\xc2\x18\xbb\xb0\xb3\xeb\x39\xd2\x80\xd0\x58\x7e\xf7\x2a\xda\x08\x6d\xac\x1f\x41\x2c\xf7\x16\x7c\x1e\xe5\x16\x46\xf4\x3e\x65\xb0\x51\x96\xe2\x98\x5b\x32\x0e\x4b\x53\x6e\x78\xa8\xad\x06\x9a\x3c\x0e\x73\x4b\x8d\xd2\x73\xf1\x19\x58\x2f\xa9\x8d\x5b\xf5\xd3\xfe\xc9\x81\xd3\x50\x0f\x3d\xb1\xf0\x31\x4e\x79\x2c\x8e\x76\xbc\x66\x14\x0d\xce\x18\xfd\x81\x0f\x34\x73\x9f\x78\x4a\xaa\x29\x08\x5d\x9e\x6d\x39\xdd\xc4\x49\x8d\xf9\x42\x33\x47\x34\xd9\xe4\x0d\xbb\x2e\x77\x58\x0a\x3b\xbd\x99\xf4\x84\xdc\xf4\x68\x2d\x23\x59\xd1\x22\x86\x01\x96\xb1\x13\x52\xee\xd6\x44\x8c\x35\x74\xca\x08\xbb\xc2\xa4\xf2\x8a\xbd\x7a\x31\xc2\x2f\x6f\x14\x0d\x06\x95\x39\xe3\x51\x17\xa4\x68\x17\xa8\xf6\xf8\xa6\x5b\xca\xd3\x33\xe1\xf3\x65\xf6\xed\x97\x53\x7e\x2e\x06\xd1\x13\x2c\xf3\x24\xe0\xbd\xf2\xb2\x1d\xbc\x6c\x74\x06\x05\x3d\x7c\xe3\x7b\xe9\x9d\x12\xf4\x18\x8b\x7b\x6a\x05\xa5\x96\x1a\xee\xec\x48\x13\xbb\x95\x15\x07\x9f\xe8\xba\xc1\x56\xd1\x02\xf9\x0e\x99\x8d\x45\xb9\xd1\x35\x4a\xf5\xd0\x06\x4c\x71\x51\x7b\x89\xdc\xa6\x61\x2d\x34\xf6\xd2\x8f\x8b\x85\xf4\x70\x34\xf4\xee\x59\x10\xce\xa4\x7a\xa1\x3a\x67\x29\xfd\xd4\xb5\x33\x96\xb0\xef\xec\xe0\xa2\x87\xb3\x53\x77\xf0\x6c\xe9\xf2\xe7\x8c\x98\x54\x06\x85\xf9\x9f\xaf\x07\xba\x34\x23\x54\xda\xd6\x39\x49\x8f\x2c\x92\x3d\xad\x40\xf6\x6f\x17\xc7\xfe\x85\xc2\xd8\x13\x8b\x62\x8f\x2b\x88\x4d\xee\xcf\x87\x60\xaf\x5e\xc8\xc6\x2e\x25\x20\xff\xda\x88\xc6\xd7\xaf\xaf\x8c\xc1\xc6\x97\xef\x16\xca\xe8\xff\x01\x13\x21\x59\x43\xd8\x3f\x84\xd7\x28\xbd\xa7\x59\xe1\xc5\x00\x9b\x5d\x4f\xf2\xc9\xb9\x40\x47\x26\x3c\x24\x21\x2e\x1a\x99\x8b\x78\x91\x1d\xa5\x6f\xcb\x7b\x1d\x8b\xc2\x5f\xa7\x54\x88\xc4\x74\x69\x08\xe6\x54\xff\x1c\x83\xa5\x10\x92\xcf\x59\x55\x14\x3a\x37\x03\x33\xff\x7e\x3e\x2a\xe2\xa3\x50\x3f\xea\x18\xd0\x84\xd4\x2a\x56\xda\x66\x36\x2b\x9f\xa3\x40\x6b\xf5\xe8\x29\x0a\xb7\xdb\x47\xd5\x7b\x75\xf0\x4d\x04\x21\xa9\x4e\x1a\xac\x7a\xec\x6d\x24\x8a\x68\xe2\xe3\x53\xe8\x75\xf6\xb0\xdf\x80\x5e\x6a\x31\x50\x68\x10\x8e\xf3\xa8\xda\x5a\xc9\x7f\x46\x08\x73\xbf\x59\x65\x43\x1d\x45\xd0\x53\x07\x1a\xb2\xba\xeb\x48\xd9\xac\x9e\x77\x3a\x5f\x1b\x6b\xa3\x9d\x86\x98\x2b\xc5\x42\x69\x93\xb3\x9e\x1e\x75\x0b\x4f\x96\x2c\x65\x09\x5f\xbb\x2c\x28\x1b\x3b\x2f\x0b\x9e\xca\x3c\x32\x72\x1f\x9f\x71\xbc\x7e\x54\xca\xe1\x80\x9f\x4c\x35\x02\xe8\x38\x61\xc2\x66\x8f\x3c\xfc\xc4\x25\xdf\x7a\xe5\x9b\x0d\x99\x50\x4f\xbd\x76\x53\x26\x54\x4f\xda\x2b\xaa\xdc\x85\x67\x5a\xc3\x3c\x29\x9f\xcd\xfb\xbe\xf4\x19\xb2\xac\xc1\xb5\xd9\x51\xdc\x37\xc3\xe4\xd9\xb8\xdf\x19\xa6\x8e\x32\x6c\xa0\xff\x3f\x30\x99\x32\x23\x7c\x32\x9d\x52\xcd\x9e\x01\x8d\x07\x1b\xfb\x22\xc9\x24\xb4\x7b\xa2\xd0\x2a\xbf\x91\x8e\x29\x24\x89\xdc\xf8\xe8\x73\x02\x66\x5a\x27\xcb\x9e\x39\x75\x15\xb3\x8c\x84\xdf\x96\x17\x1d\x7d\x64\x71\x72\x38\xeb\xd2\x3e\xe5\x72\xdc\x46\x4a\x12\xc9\xc1\xc6\xfa\x28\xaf\xa0\xb3\x85\x91\xec\xc2\x4d\x65\xcf\xfc\xba\x9b\xca\xbb\xc6\x8b\x93\x06\x17\xcb\xda\x73\x6a\x42\x0b\x4d\x3e\x1e\x6b\x1c\xce\x95\xa1\x99\x93\xea\x90\x2f\x6a\xbb\xa8\x91\xe2\x6d\x7a\x3e\xfa\x20\xe2\xe8\x96\x49\x34\x2a\x53\xb5\x27\xcd\x74\x4d\x89\x4e\x14\x27\x1b\x60\x17\x70\x0c\xb5\x6f\x8f\xff\xf6\x2d\x95\xbf\x7f\x71\xdc\xf8\xf5\xf4\x36\x77\xc0\x87\x79\x8a\xf9\x7b\x36\x0e\x33\x6b\x1e\x51\xd1\x6c\x9e\x64\x6a\x30\x98\x5a\xb9\x2c\x94\xfd\xf3\x9f\xfe\x8b\x67\xeb\x2d\x90\xa8\xae\x2e\xf0\x37\xfc\xeb\xd5\xf7\x1e\xc1\x77\xab\x8b\xab\x62\xe2\x39\x99\x5e\xe4\xd4\x16\xce\xdf\xe9\xe0\x41\x3c\x9b\x56\x5e\xe7\x7f\x4d\x2b\xe7\x61\xcc\xe0\xb4\x5c\x15\xc5\x6a\x14\xa8\xf2\xf4\x93\xb0\x66\x54\x8e\x3d\x19\x42\xc6\xdd\xd3\xf5\xaa\x99\x48\x16\x97\x83\x92\x24\x8d\x24\x0b\xbc\xb2\xb1\xcb\xbc\x4f\x05\x4b\xe9\xda\xc1\xfb\x7b\x0f\xb1\x2e\x12\x82\xd5\x44\x44\x63\xe0\x66\x62\x6c\x35\x8c\x4f\x66\x3d\x42\x24\xc7\x63\x5e\xcd\xcd\xf9\xe5\x29\x39\x7d\x70\x2a\x6a\x8c\x41\x17\x06\xa3\x9e\x3c\x7e\xf4\x98\x59\x22\x4c\x30\x47\xcb\x37\x9f\x41\xa8\x85\xcb\xe5\xf5\x90\xdc\x0e\xc3\x5d\x54\x07\x0d\x5f\xc4\xe6\xd4\x8c\x5c\x37\x7c\x70\xe0\xb1\x63\x6b\xae\xd8\xf7\x9f\x1d\x11\xb1\x2d\x35\xcb\xf1\xd0\x89\x65\x5f\xdd\x8c\x2e\x8e\xba\x6e\x66\x37\x8e\x87\x86\xf1\xb9\x2c\x1e\x4e\xad\xe8\xff\x39\xbc\x93\x0e\x6f\xf4\x78\x85\x16\x78\x70\x00\xaf\x5e\x84\x30\xa3\xc8\xac\x13\x0c\x2b\x7e\x7d\xa2\xc0\xf0\x9f\x91\x31\xce\x94\x87\xcd\xd3\xc5\x84\x7f\xa3\x06\xb2\xeb\x38\xbb\x30\xdb\x9f\x6c\x08\x23\xd7\x61\x6d\xd6\x66\x1f\xe7\xb0\x67\x85\x40\x3f\xa6\x2e\x61\xf4\xdd\x3e\x35\x18\x55\x79\x9e\x91\xa9\xb6\xfe\x71\xbc\x68\x3a\x5c\x50\xd7\x5f\x66\x27\xf8\x15\xd7\xb4\x93\x48\xc8\xe3\x1f\x1f\xb9\x4b\x40\xba\xa9\x11\x37\x5b\xb3\x01\x97\xd6\x6c\x7a\x7a\xbc\x95\x22\x7f\xab\xfc\x5b\x77\xe8\xd1\xd1\x0c\xa4\x1f\x33\xdd\xf4\x5a\xae\x5e\xbd\x18\x61\x5e\x2c\x97\xd9\x0a\x0f\xed\xcf\xef\x30\x3e\xbc\x4f\x67\x25\x7f\xf4\x3a\x3c\xc3\xfa\x6c\x7e\xf9\x05\x3f\x38\xfb\xea\xeb\x8b\x74\xf3\x74\x49\xf6\xaf\x03\x48\x85\xe8\x11\x15\xb7\xd9\x59\xd2\xea\xdb\x23\xc3\xe0\x8f\x3e\xce\x8d\x56\x99\xa4\x20\x8c\x66\x0e\x30\x1d\xcf\x4c\x1e\x7a\x19\xfb\x76\xc9\xfb\x04\xa6\x8f\x11\x7f\xc5\x98\xf8\xb4\x99\xcb\xa4\xdf\x4f\x67\xae\xee\x61\x28\x5c\xf9\xbc\xf3\x30\x3e\x5c\xb2\x17\xee\x2d\x22\x9e\x9c\x42\xd1\x7e\xac\x1a\x90\xf8\xf2\x59\x9d\xd8\xb9\xf9\xf5\x09\x85\x68\x83\x36\x24\xf7\x95\x5e\x4a\x16\x08\x4f\xae\xcb\xcd\x57\x70\xc9\xb8\xd6\x7c\x98\x0e\xc3\xc4\x90\xe7\xf6\x6d\x78\x76\x5c\x43\x28\x77\x8f\x37\x76\xea\x86\x1e\x19\x93\x9f\x18\x46\x89\xb7\x70\x0f\xc3\xe2\x48\x8a\x0b\x80\xd1\xab\xdd\x5a\x1f\x16\xce\x0e\xc9\x34\xf0\xfa\x05\xbd\x31\x87\x08\x0a\xaf\xe1\xf1\x9b\xe2\x30\xbd\x6b\x3d\xb7\x81\x4e\x3f\x85\xe6\x5f\xbb\xc6\x85\x84\xda\x15\x02\xc4\xe2\x4c\xe3\xff\x56\x86\x21\x9a\x87\xcd\xb4\x2b\x21\x15\xf3\x10\xe2\xf1\x37\x0f\x42\xa0\x89\xac\x09\x21\x79\x32\xc1\xa0\x35\xa5\xa1\x18\x8f\x42\x8a\x76\x31\xf9\xc8\x8b\x1f\x2e\xe3\x28\x9a\x94\x78\x23\xec\xb9\x68\x9e\x67\x73\x81\xe5\x27\x46\xd9\x1b\x97\x38\x54\x5c\x52\x4d\xd2\xb9\x1b\xf7\x3e\x24\x6a\x3c\x0b\xff\xfa\x24\xd7\x4d\x75\xaf\xa0\x89\x2f\xaa\x8b\xd9\x49\xad\x98\x51\x39\xe0\x3f\x89\x24\x9b\xf0\xef\x0e\xda\xa9\x23\x3d\x05\x4e\xd5\x4f\x61\xe3\xab\xc9\x5a\x71\x0f\x8f\x1b\x54\x7a\x38\xdd\x7a\xfc\x20\xd2\xc3\x02\x71\xc5\xce\xab\x58\x4a\xa4\xf7\x44\xb4\xd1\x51\xdb\x9d\xd7\x01\x51\x9f\x9c\xd7\xf9\x37\x6c\xe6\xb3\x52\xe5\xb0\x18\xe6\x64\xb3\x54\x56\xf7\x90\x96\x10\x93\x16\x1f\x9e\x23\x7d\x3f\x0d\xbd\x18\xab\xde\x0b\x49\xd7\xe3\xa8\x99\x14\x2c\x9f\x66\x46\x2b\x25\x43\x7f\xaf\x78\x9f\xae\xe9\x54\x7c\xdc\x36\x30\x05\xb9\xf4\x79\x3e\xf4\xf4\x23\xf8\xb7\xa9\x25\xef\xa3\xba\x97\xf4\xc4\x24\xb7\xb3\xc4\x10\x3e\x09\x33\x79\x40\x94\x5c\xc7\x53\xde\xa9\x15\x23\xd7\x13\x25\x56\x17\xe9\x17\x72\x7a\x9a\xd1\x72\xef\x4f\xa3\xa7\xf7\xd2\xf7\x28\x92\x79\x40\xce\x93\x70\x8b\x58\xdb\x2e\x25\xd4\x63\xea\x35\x42\x40\x9f\xf0\x7d\xf6\xc6\xbc\x40\x5f\xec\x0b\xfa\x0c\x24\xdd\x93\x92\x3e\xbf\x06\x3a\x6c\xf1\x7d\x3a\xec\x9a\xbd\xf4\xaf\xec\x79\x99\x55\x4d\x96\xf6\x8e\xef\xbd\xc1\xad\xee\xb4\x85\x9d\x5f\xce\xbe\x9c\xfd\x77\x00\x00\x00\xff\xff\xfd\x68\x83\xf9\xf3\x53\x00\x00" func contractsStandardNftstorefrontCdcBytes() ([]byte, error) { return bindataRead( @@ -260,11 +344,11 @@ func contractsStandardNftstorefrontCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/standard/NFTStorefront.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xad, 0xf, 0x2a, 0x76, 0x77, 0x76, 0x6e, 0x1a, 0x9c, 0x2e, 0xd4, 0x32, 0x96, 0xa1, 0x84, 0x57, 0x54, 0x8e, 0x78, 0x9b, 0x18, 0x46, 0x17, 0x66, 0x62, 0x9b, 0x8b, 0x3a, 0x6d, 0x8e, 0x7f, 0xfd}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0x9b, 0xed, 0x23, 0xed, 0x40, 0x79, 0x47, 0xf5, 0x93, 0xdd, 0xb6, 0x42, 0x9d, 0xce, 0xc2, 0x97, 0xf3, 0xbc, 0x7e, 0x64, 0xe4, 0xa8, 0x8b, 0x6c, 0x48, 0x71, 0xbd, 0x65, 0x5, 0x82, 0x97}} return a, nil } -var _contractsStandardNonfungibletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x57\xc1\x8e\x1b\xb9\x11\x3d\x6f\x7f\x45\xad\x17\x88\x67\x0c\x8d\x94\x43\x90\x83\x00\x23\x4e\x76\x76\x00\x5d\x26\x8b\x89\x82\x1c\x16\x06\x44\x35\xab\x25\xc2\x6c\xb2\x4d\xb2\x25\x2b\xc6\xfc\x7b\x50\x45\xb2\x9b\x2d\x69\xec\xf1\x2d\xbe\x58\xd3\x4d\xbe\xaa\x7a\xf5\xea\x91\xbd\x78\xf7\xae\xaa\x7e\xf9\x05\xd6\x7b\x84\x07\x6d\x8f\xf0\x68\xcd\xdd\x43\x6f\x76\x6a\xab\x11\xd6\xf6\x13\x1a\xf0\x41\x18\x29\x9c\xe4\x85\x9b\x47\x6b\xf2\x7b\x7e\xbd\x81\xda\x9a\xe0\x44\x1d\x40\x99\x80\xae\x11\x35\x56\x15\xe1\x0d\x7f\x42\xd8\x8b\x00\x42\x6b\x30\xd6\xdc\x35\x19\x3d\x30\x7a\xde\xed\xa1\xb6\xbd\x96\xf4\x77\x63\x5d\x0b\xc1\xce\xab\x55\x03\x02\x7a\x8f\x0e\x8e\xc2\x04\x0f\xc1\x82\xc4\x4e\xdb\x13\x08\x30\x78\x04\xd3\x84\x61\xff\x0c\xc2\x1e\x95\x1b\xb3\x39\x32\x9c\x41\x94\x55\xb0\xa0\xda\x4e\x63\x8b\x26\xd0\x32\x38\x2f\x62\xcc\x75\xce\xb9\x5f\xe2\xec\xc5\x81\x32\x86\xc6\x6a\xa2\x89\x8a\x21\x20\xd7\x6b\xf4\x20\x8c\x04\x23\x5a\x65\x76\x15\x97\x1a\x26\xd5\xfb\x0e\x6b\xd5\x28\xf4\xf3\xc4\xe0\xc3\x7a\x03\x0e\xbd\xed\x5d\xa6\xaa\xb6\x0e\x87\x47\x10\x4e\x5d\xe2\xcc\x61\xe7\xd0\x23\xd5\x2e\x0c\x3c\x3e\xac\x41\x19\x46\xf7\xad\x70\x63\xed\x09\xf8\x57\xab\x35\xd6\x41\x59\xb3\x81\xa7\x09\xfe\x08\x4d\xa8\x3e\x58\x47\x59\x33\xb5\x6f\x3d\xe3\xd6\xc3\xde\x79\xb5\xa2\x56\xd6\xba\x97\xbc\xa8\xc1\x23\x34\xbd\xe1\x77\xdc\x02\xc1\x0c\x50\x16\xf6\x68\xd0\xd1\x23\x14\x5e\xe9\x53\xd5\xda\x43\x6a\xab\xa7\x44\x89\x16\xdb\x07\xb0\x0d\xaf\x2e\x43\x70\xbe\xbf\x3b\x7b\x50\x12\xdd\x86\x57\x6e\x9e\xb0\x46\x75\xa0\x3f\x87\x74\x07\x12\x3d\xd7\xe1\xcb\x27\x20\xb1\xd6\xc2\x61\x91\xdc\x51\x85\x3d\x78\xdb\x22\x74\x0e\x19\xb4\xb3\x9e\x69\x92\x8a\x57\x54\x89\xd5\xcf\xbd\x72\xc8\x49\x8d\x9c\x15\xdd\xad\xd1\x05\xa1\x4c\xea\x29\x03\x6d\x71\x2f\x0e\xca\xba\x61\x1a\x7c\x54\xca\x09\x28\x05\x8f\x9d\x70\x22\x20\x6c\xb1\x16\x3d\xa5\x19\x60\xa7\x0e\xe8\x39\x06\x2b\x98\x7e\x88\xad\xd2\x2a\x9c\x28\x92\xdf\xd3\x3e\x01\x0e\x1b\x74\x68\x6a\x24\x91\x46\x05\x97\x29\x51\xba\xd6\xe8\x13\xe0\x97\xce\xfa\x84\xd7\x28\xd4\x32\xaa\x6e\xac\x5d\x19\xb0\x06\xc1\x3a\x68\xad\xc3\x2a\x71\x3e\xd2\x35\x87\x15\xcd\xa0\xb7\x29\x31\x4a\xca\x9f\x67\xd5\x8a\x4f\x08\x75\xef\x83\x6d\x87\x26\x24\xd2\x26\x03\x34\x6d\x04\x8d\xa5\x85\x83\x70\xca\xf6\x04\xa9\xcc\x2e\xf5\x82\xe0\xa3\x1e\xe6\x55\xf5\x8f\x13\xf4\x9e\xf8\x1c\x90\xb9\x84\x11\x68\x96\x92\xb2\x0d\x4b\x72\xaa\x71\x0f\xb5\x30\xe0\xd1\xc8\x8a\x76\xb9\x28\x96\xac\xb6\x0e\xd1\xdd\x05\x7b\x47\xff\xcf\x38\x36\x09\x8f\x5a\x66\x76\x94\x1f\x07\xe1\x69\xa6\xb4\x04\xd4\x48\xa8\x1a\x34\xca\x1d\xba\xea\x62\x9c\xd6\x96\x43\xe5\xa9\x23\xd5\x1b\x1b\xf6\xe8\x38\xc5\xd9\x60\x4b\xec\x0d\x9e\xb8\x39\x31\xb4\x74\x22\x8e\xc6\xe3\xc3\xba\x6a\x9c\x6d\x2f\x7a\xca\x3e\x65\xa0\xce\x0e\x22\xb1\xb3\x5e\x85\xa1\x93\x60\xcd\x24\xd6\x5b\x5f\x4d\x35\x5a\x5b\xea\x44\x88\xf2\x0d\x4e\x18\xdf\xa0\x9b\x57\xd5\xbb\x45\x55\x2d\x16\xec\xe4\x2d\x89\x37\x4e\xf5\xb9\x35\xcf\xe1\x9f\x0c\x5d\xbe\xa5\x66\x69\x4d\x9b\x55\xdb\x59\x17\x62\x5b\x8a\x7e\x2b\x5f\x78\xfb\x62\x51\x75\xfd\xf6\x0a\xf4\xa5\xab\x7e\xad\x2a\x00\x80\x94\x55\xb0\x41\x68\x30\x7d\xbb\x45\xc7\x9e\x10\x5b\xc7\x4a\x55\x3e\xba\x9e\x32\x80\x5f\x94\x0f\x3c\x11\xb4\x97\x42\x1d\x84\x8b\x9b\xff\xd5\x77\x9d\x3e\x2d\xe1\xdf\x2b\x13\xfe\xfa\x97\x01\xfc\xb7\x43\x4c\x53\x04\xc0\x56\x85\x80\x12\x8e\xc4\x71\xea\x43\x91\x2a\xd5\xa1\x82\x12\x5a\xfd\x17\x65\xda\x3e\x84\x41\x86\xf9\x35\x2d\x5e\x8d\x0b\x6f\x6e\xaf\x85\x52\x7e\x1a\x4d\xa4\x03\x4d\xf9\x41\x09\x66\x96\xf7\x29\x23\x55\x2d\x02\xab\x71\x30\xce\x0b\x5f\x4c\xc0\x01\x8e\xa2\x00\x01\xd2\xd1\xbc\xcc\x76\xb1\x80\xd5\xc5\x5e\xe5\xc1\xd8\x10\x7d\x17\x44\x5d\xdb\xde\x84\xb7\x9e\xcd\x5e\xec\x70\x06\x1b\x82\xd9\x70\xab\x61\x8b\xb0\x31\x4a\x6f\xe6\xd7\x39\xf8\x4f\x0a\x7d\xa3\x64\x26\x7b\xc6\x59\x2c\xe1\xef\x52\x3a\xf4\xfe\x6f\x57\x29\x79\x89\x8f\xa4\x71\x94\x3c\x48\x93\x83\xe0\xac\xaa\x90\x99\x4a\x56\xf7\x1a\xa2\x4a\xf4\x17\x0a\xba\x8f\x4b\x26\xf5\x04\x7b\xad\x9a\xd5\xf4\xd2\x92\x24\xe4\x87\xf3\x7f\xbc\x9e\x9c\x47\xba\x3c\xb4\x60\x45\xea\xfb\xca\x2b\x8a\x39\xe8\x8d\xfa\xdc\x23\xac\xee\x13\x69\xa2\xde\xb3\x4c\xf7\xc2\x0f\x4b\x09\x50\x63\x80\x31\x61\x7e\xf5\x3c\xe4\xf9\x14\xcf\xb0\x76\xe0\x9e\xfc\x24\x25\x47\x2a\xbb\x66\xa0\x54\x43\xde\xcf\x57\xa9\x46\x99\x78\x06\xa5\xcc\xc9\x94\x50\x46\xc7\x23\xcc\x84\xc7\x0e\x4f\xb5\x5c\xd6\xfa\xf8\xb0\x5e\x9e\x97\xf9\xdd\xdc\x0b\x8e\x2d\xb4\x28\x15\x9d\x9c\x59\xee\x1e\xb2\x6d\x16\xa6\xf9\x0a\xae\xf3\x65\x62\xca\xf7\xe0\xc9\x0e\xe9\x72\x32\x5c\xa3\x86\x18\x85\xa6\xc8\xf5\xe2\x22\x15\x20\x9e\xc6\x91\x11\x37\x29\xad\xe9\xcd\x00\x7b\x93\x7f\xac\xee\x73\xad\xb7\x4b\xf8\x30\xe5\x83\x37\xd2\x3d\x64\xfa\x88\xfe\x39\xf4\xbd\x0e\x73\x25\xe1\xfd\x7b\x28\xb1\xde\x90\x50\x56\xf7\x59\xf9\xa3\x17\xc4\x99\x6a\x7b\x1f\x68\x88\xf9\x2a\x28\x5a\x04\x11\xc7\x85\x6e\x36\xe8\x69\x14\x56\xf7\x6f\x26\xd1\x9e\xab\xe9\xaf\xef\x74\x23\xcd\x94\xcf\x3c\xfc\x50\x2b\xf2\x45\x2e\xfb\x7f\x0a\x94\x4f\xba\x20\x3e\x8d\x8d\x10\xfc\x4b\xb8\x5d\xcf\x52\xa6\x1e\x08\x29\xcb\x16\x9c\x85\x4e\xe1\x7f\xfa\x29\xf7\x22\xc1\xde\x30\x33\x91\xfc\xdb\x97\x4b\xe4\x51\x19\xfc\x31\x1d\xe0\xb5\x6d\x5b\xbe\x65\xe5\x0d\x5d\xbf\xd5\xca\xef\xa1\xb1\x6e\xf8\xac\x98\x64\xf1\x42\xe5\x63\xae\xbf\x13\x42\x7d\x36\x15\xdf\x4c\xb7\x5c\xb4\xc3\xb0\xba\xf7\x37\xb7\x4b\xf8\x23\xaa\xea\xe3\xc5\x92\xad\x75\xce\x1e\x1f\x1f\xd6\x85\xa9\xdd\x2e\xe1\x4f\x79\x4c\xaf\x5b\x45\x2a\x28\x49\xdf\xd4\x8e\x2e\x12\x93\x0f\x8f\xc2\x20\xb6\x98\xef\xd8\x32\x7f\x77\x0c\xb7\x02\xf2\x98\xec\x2c\x2f\x4a\x62\xa4\x63\x39\xcc\xe7\x6c\x90\xc7\xec\x1a\x5d\xa5\x60\xee\x15\xbf\x13\x8e\xef\xa6\x7b\xab\xe5\xe8\xc7\x29\x9f\x2b\xe2\xc8\x37\x06\x3a\x3a\x24\xad\x5d\xc2\x87\xaf\x91\x9f\x25\xed\x7d\xae\xfe\x2f\x0c\xe2\x5b\xa3\x11\x27\xe3\x72\x14\xc6\x5c\x3c\xc8\x81\x9c\x12\x68\xd8\x14\xa2\x7f\xa4\x8d\x4a\x82\x70\x4e\x9c\x5e\xa7\xc6\x12\x30\x2a\x11\x1c\x86\xde\x99\x34\xab\x4e\x9c\xb2\x31\xd1\xbb\x38\x53\x0e\x73\x4f\xea\xeb\x3d\x79\x41\xd7\x65\xb0\xa7\x1c\x25\xa9\x1b\xe5\xf8\x7d\x14\xef\xe0\xe5\x37\xf0\x95\x38\x8b\x05\x78\x3b\x9e\xdc\xb1\x39\xfc\xe1\xe0\x50\x48\x90\x22\x08\xa6\x88\x6f\xdf\x2d\x86\xbd\x95\xe9\xbc\x51\xe1\x47\x26\xec\xdc\xdd\x1d\x5e\x31\x77\x8f\xba\x99\x0f\x2a\xfc\x43\xc9\x8f\xf0\xf3\x7b\x30\x4a\x2f\xe1\x0d\x61\x48\x8b\xf1\xca\xc6\x37\xde\xcb\xaa\x7e\x7e\xad\x83\xd7\x0e\x45\xc0\xdf\xda\x2e\x9c\x8a\x4f\x85\xf8\x94\x5b\x86\xf4\xea\xd2\xc3\x21\x7e\x48\x45\xce\xcf\x25\x5d\x12\x79\x62\x0a\xed\x91\xe9\xf7\x55\x49\xd2\xd5\xd8\xd4\xe0\x0f\x45\x2a\x85\x0b\x5e\x9e\x83\xe9\x0c\xcc\xd2\x98\x6b\x34\xbb\xb0\xa7\x03\xf1\xcf\xe9\x1c\x8c\x31\x64\x39\x8a\xf9\x00\xe4\xca\x0a\xa2\x32\x35\xcf\xff\x0b\x00\x00\xff\xff\x22\x6f\x47\xf8\xd9\x12\x00\x00" +var _contractsStandardNonfungibletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x5a\x5f\x8f\x23\x37\x72\x7f\xd7\xa7\x28\xef\x01\x59\xc9\xd0\x6a\x0e\x48\x90\x00\x42\x36\xf6\xac\xc7\x73\x99\x38\x99\x1c\x76\x65\xdf\x43\x10\xac\xa8\xee\x92\x9a\x5e\x36\xd9\x26\xd9\x92\xe5\xbd\xfd\x66\x79\xcb\x17\x0b\xaa\x48\xf6\x1f\xa9\x7b\xa4\x59\xdb\x09\x32\x0f\xf6\xaa\xbb\x59\x2c\xd6\xdf\x5f\x55\xf1\xe6\xcb\x2f\x27\x93\x3f\xfc\x01\x56\x05\xc2\xbd\x32\x07\x78\x34\xfa\xd5\x7d\xad\x77\x72\xa3\x10\x56\xe6\x03\x6a\x70\x5e\xe8\x5c\xd8\x9c\x3f\x5c\x3f\x1a\x9d\xde\xf3\xeb\x35\x64\x46\x7b\x2b\x32\x3f\x99\x10\x15\xa9\x3d\xda\xad\xc8\x10\x7c\x21\x3c\x08\xa5\x86\x68\xa6\x35\x0e\x5c\x61\x6a\x95\xd3\x83\xad\xb1\x25\x78\xb3\x98\x3c\x6c\x41\x40\xed\xd0\xc2\x41\x68\xef\xc0\x1b\xc8\xb1\x52\xe6\x08\x02\x34\x1e\xe0\xf1\x7e\xd5\x10\x98\x83\x2f\x50\xda\xe6\x77\xa2\x27\xcb\x4a\x61\x89\xda\x33\x53\xfe\x58\xa1\x83\x1c\xb7\x52\x63\x0e\x05\x5a\x9c\x4c\x6e\x6e\x6e\xe0\x1b\x5a\x25\x37\xb5\x37\xd6\xc1\xb4\x52\x28\x1c\x82\xc8\x73\xda\xd2\x17\xd2\x81\x92\xce\x83\xdc\xc2\xd1\xd4\x61\x0b\xfa\x18\xbf\x98\x2d\x79\xf9\x2b\xf8\x17\xe3\x8a\x5a\xc0\x3f\x0b\xad\x85\x86\x57\x50\x78\x5f\xb9\xe5\xcd\xcd\x4e\xfa\xa2\xde\x2c\x32\x53\xde\xfc\xc8\x9f\x14\xfc\x45\x5c\xf5\x46\x38\x2f\x85\x86\x7f\xfb\xef\xff\x52\x0a\x6d\x67\x9d\x3f\x48\xef\xd1\xf2\x42\x5f\xdb\x8d\x51\x74\x84\xb0\xea\x0e\x3d\xc2\xbb\x42\x5a\x85\xc7\x91\x25\x39\x7a\xfc\x87\xbf\x4d\xbb\xfc\x28\xac\x47\xf8\x4e\x58\xe5\x50\x8f\xac\xf8\xe3\xcf\xe1\xb3\x0f\x71\xd1\x6d\xed\xbc\xd4\xf0\x9d\x92\x1a\x47\x96\x08\xfe\xe4\xfd\x56\x99\x83\x3f\xc6\x65\x7f\x92\x66\x2f\xb4\x96\xf0\x4e\xe8\xac\xc0\x5f\x46\x96\xee\xa4\x79\x2f\x75\x66\x76\x5a\x7a\xd3\x1c\x4b\xcb\x5f\xe0\xdb\x5c\xea\x4c\x7e\x18\x59\xb7\x51\x35\x3a\xb9\x63\xf9\xf1\xb2\xb7\x58\x19\xb0\xb8\x45\x8b\x3a\xc3\xe5\x90\xdc\x8d\x26\x0e\x6f\xe8\x3f\xaf\xf4\xd6\x47\xeb\xbd\x5f\xad\xc1\xa2\x33\xb5\xcd\x3a\xb6\x1a\x4c\x37\x33\x16\xdb\x97\x64\x33\xc1\x86\x2d\x56\x16\x1d\x92\x29\x0a\xcd\xd6\x27\x35\x99\x1d\xb8\x52\x58\xdf\x98\xde\x22\x6c\xf1\x8d\x51\x0a\x33\x2f\x8d\x5e\xc3\xdb\x91\x9d\xda\x4d\x88\xbe\xf3\xc6\xa2\x8b\x36\xff\xd2\x45\xfb\x4e\x54\x16\x93\x07\x0f\x52\x67\xaa\xce\xf9\xa3\x2d\x1e\x60\x5b\x6b\x7e\xc7\xbe\x21\x14\x39\x2e\xf1\x63\x0e\x1a\x2d\x3d\x42\xe1\xa4\x3a\x4e\x4a\xb3\x47\xf0\xe4\x70\x8e\x58\x16\x3a\x07\x53\x7b\x30\x5b\xfe\xba\xbb\x05\x73\xfe\x67\x6b\xf6\x32\x47\xbb\xe6\x2f\xd7\x6f\x31\x43\xb9\xa7\x9f\xe7\x02\x73\x7c\x0e\xd7\x7d\x02\x39\x66\x4a\x58\xec\x30\x77\x90\xbe\x00\x67\x4a\x84\xca\x22\x13\xad\x8c\x63\x81\xe5\x92\xbf\x98\x44\xf9\xfe\x54\x4b\x8b\xcc\x54\x2b\x3d\x3a\xc7\xd6\xf0\xd9\x32\xb4\x5e\x48\x0d\x5a\x94\x52\xef\x98\xd0\x06\x0b\xb1\x97\xc6\x36\xd1\xc9\x2d\x98\xa5\x23\x10\x0b\x0e\x2b\x61\x85\x47\xd8\x60\x26\x6a\x62\xd3\xc3\x4e\xee\x99\xc9\x3d\x2a\x53\xa1\x75\xbc\x9d\xd8\x48\x25\xfd\x31\x84\x18\x8a\x0e\x2d\xf7\x81\xb7\x4c\x68\x52\x0b\x08\x7d\xec\x58\x44\x13\x5d\x98\x8a\xeb\x0b\xe6\xcd\x11\x6a\x47\x7c\x26\xb1\x39\xe6\xb8\xfd\x64\xce\x8a\x76\xa4\x07\x52\x75\xdf\x8a\x1c\x6f\xe9\x50\xe7\x13\x5a\x65\x83\x12\x92\x16\x2b\x44\xfb\xca\x9b\x57\xf4\xff\x39\xcb\x97\x14\x4a\xa2\xd0\x3b\x3a\x04\x6f\x42\x61\x90\x45\x2f\x20\x43\xa2\xaa\x40\x61\xbe\x43\x3b\x39\x33\xd8\x95\xe1\xad\x92\x5d\x93\x35\x69\xe3\x0b\xb4\xcc\xe2\xbc\x89\xc3\x1c\x53\x1d\x1d\xfb\xc8\xa4\x73\x2b\x82\xc9\x3d\xde\xaf\x26\x5b\x6b\xca\x18\x86\x5b\xf5\x71\x60\xd6\x90\x51\x02\xa0\x0f\x73\xac\x8c\x93\xbe\x91\x2f\x18\xdd\xdb\xeb\xa5\x9b\xf4\x75\x9f\x19\x12\xb2\x0f\x66\xe1\xad\xd0\x6e\x8b\x76\x31\x99\x7c\x79\x33\x99\xc8\xb2\x32\xd6\xc3\x8b\x1f\x24\x1e\xc8\xc7\xd4\x1e\xed\x8b\x10\xd2\xc9\xbd\x4a\x32\x96\x6e\x96\x68\x85\xbf\x80\x7f\xe7\x2d\xbb\x6f\xc9\x50\x95\x82\x40\x94\x89\xb0\xbe\x92\x8e\x43\x26\x68\xf3\x9a\x70\x70\xc0\x78\xaa\x9e\xf9\x87\xec\xc2\xb1\xa1\xbb\x80\x83\x96\xc8\x32\x74\x6e\x2a\x94\x9a\x0d\x70\x05\xa7\x59\x75\x09\xdd\xa3\xc1\xc7\xc9\x04\x00\x80\x58\xbb\xd5\x80\xda\x4b\x1f\x79\xdb\x1a\x1b\x02\x00\x1b\x40\x81\x8d\x76\x84\x62\x3f\x0f\x66\xc3\x1a\x12\xf0\x83\xa8\x95\x67\x4a\x5d\x76\xba\xe4\xfe\x12\x57\x5f\xb7\x5f\x5d\xe5\xc2\x47\xf3\x0e\xff\x06\xdc\xb3\x57\xf0\x67\xac\x83\x27\xb7\xfb\x9e\x17\xb5\x9b\x7d\xbb\x0f\xf2\x16\xfe\x1c\x21\x60\x29\x3d\x1c\xc8\xa6\xe8\x98\x25\x7a\x91\x0b\x2f\xe8\x90\x29\x28\xbb\xc8\x44\xde\xd0\x7b\x08\x0e\x6c\xb4\x3a\xc2\x06\x99\x84\xc7\x1c\x36\x47\xb6\xcb\x24\xb2\x35\x3d\x7f\xbc\x5f\x05\x6e\xf2\x75\x63\xa3\x0d\x9d\xe0\x4d\x1a\xd6\xe1\x93\x75\x3a\x44\xde\xe6\xa0\x00\x19\x30\xb8\x11\x1d\xe0\x20\xce\xf9\x21\xe3\xec\x9e\xbf\xb2\x51\x5e\xae\x12\x65\x49\x31\x81\x35\xd5\x32\x27\xe3\x93\xd6\x4f\xdc\xcb\x4e\xe0\x76\x0d\xe5\x14\xe8\xf8\xa8\x99\xc9\x83\x21\x50\xd0\xef\x7c\x0e\xc6\x06\xde\x0a\x41\x5b\x62\x26\x85\x6a\x8f\x12\x94\xd4\x50\x8c\xe7\xe9\x6c\x46\x42\x2f\x4c\x1e\xdd\x65\x43\xd1\x53\xf1\xb9\x77\xe8\xf9\xdb\x73\xa9\x24\x6a\x7d\x09\xb0\x96\x4b\xf1\x01\x1d\x05\x66\x67\x02\x53\xbe\x90\x36\x7f\x55\x09\xeb\x8f\x20\x75\x8e\x3f\x93\x3c\x48\x7d\xa5\x21\xb8\x60\xc3\x16\x2c\xaf\x86\x1c\x59\xde\x4f\x35\xda\x23\xbf\x8c\xe2\x6e\x8d\x23\x45\xa6\x90\x19\xfb\xa2\x5b\xf4\x78\xeb\x59\xe8\xbe\xb5\xcd\x7c\x4a\x51\x7f\x09\xef\xbc\x95\x7a\x37\x07\x99\x2f\xe1\xfb\x07\xed\xff\xfe\xef\xe6\x50\xd7\xdd\x5f\xbc\xc5\x12\x6e\xf3\xdc\xa2\x73\x5f\xcd\xce\xc8\xee\x65\xc8\xdc\xd0\x37\xb7\xe9\x7b\xd0\x5b\xff\x16\xb7\x4b\x10\xb5\x2f\xa6\xe1\xf1\x0c\xfe\xe6\xe3\x69\x50\x58\x3c\xde\xaf\x3e\x05\xba\x1f\xf9\xbf\xf4\xc7\x6e\xd1\xe7\x35\x90\x5b\xec\xd0\xaf\x8e\x15\x4e\x67\x0b\x99\x93\x66\xb6\x92\x22\x3a\xb1\x1c\x3f\x90\x79\x3a\x43\x7c\x40\x3f\x9a\x83\xc4\x67\xfc\xeb\xab\x85\x08\xc7\x0a\xbb\x7f\x9a\x0c\xba\xac\x74\x8d\x87\xb1\x9f\x8a\x10\x7e\xe8\x79\x8a\x4a\x7a\xde\x2c\x94\x3a\x97\x99\xf0\xc9\x09\x89\x75\xe2\x2e\xb0\x34\xef\xe0\x99\x33\xb8\x12\x77\x0b\x2e\xd6\x50\x66\x65\xcf\x7b\x96\x41\xcb\xbe\xff\xfe\xe1\x2e\x91\x68\x71\xcc\xe0\x5a\xa8\x5d\x2d\x94\x3a\xf6\x7c\x66\x71\x66\xc2\x0f\x67\xfc\x48\x07\xda\xf8\x00\xb1\x48\xe5\xa6\xd6\xfe\xa5\x63\x5c\x27\x76\x38\x87\x35\x91\x5f\x37\x6e\xb3\xd6\x52\xad\x2f\x99\x5f\x8a\xc4\xfa\x6a\x03\xa4\x4d\x5a\xfb\x9b\x43\x15\xe1\x1c\x49\x20\x7d\x35\x1b\x54\xdc\x98\xd6\x62\xce\x46\xae\x87\x06\x85\x02\x0f\x41\x8b\xe8\x7e\x95\x12\xbb\x1b\x3d\xad\xc2\xae\xd4\xcf\xd7\xfe\x66\xba\x9a\x3f\x4f\x59\x77\x89\x87\xab\x95\xe5\x4d\x57\x55\x2d\x7f\x23\xca\x7a\xe8\x57\xd5\x31\xd1\x38\x28\xeb\x80\xa7\x63\xed\x3c\xca\xe6\x39\x82\xa7\xf5\x7d\x94\xb1\x38\x85\x1b\x69\xf3\x5a\xcb\x9f\x6a\x84\x87\x3b\x4e\xeb\x09\xf5\xa5\x2f\xba\xdb\x28\xf4\x9d\x33\xf7\xa9\x0c\x07\x0a\x51\x7b\x53\x0a\x2f\x33\x76\x3c\xdc\x73\x28\x97\x25\x82\xe8\xf0\x4c\x4a\x76\xde\x9a\x63\x4c\xa5\xdd\x64\xc2\xa0\x5c\xb2\x00\x44\x52\x70\xac\x96\xf2\x54\xa7\x35\xf9\x20\x68\xcb\x19\xb2\x9d\x68\x08\x1a\x91\xbe\x14\x5c\xdb\x09\xbb\xab\xb9\x69\x30\x74\xb8\xb0\x38\x95\x74\x77\x89\xa3\x69\x7b\x60\x78\x0d\x0e\x55\x37\xb0\xf6\x9f\xd3\xb3\x59\x5f\x2a\x99\x45\xe1\xf1\xdb\xb2\xf2\xc7\x0e\xfc\x0d\x4f\x99\x25\xa4\x57\xbd\xb2\x28\x4a\x30\x25\x5f\xae\x1e\xcf\xb4\x92\xfc\xc7\xa2\xaf\xad\xe6\x3c\x9b\x12\xba\xe0\x9e\x43\x9b\x75\xf1\x18\x40\xd2\x81\x61\x94\xeb\x92\xe8\x91\xfb\x3a\xd0\x82\xdb\x96\xad\x53\x77\xe6\xd2\x25\xf2\x23\xdd\x29\x43\x83\x52\xa5\x84\x38\x28\x84\xe9\x6c\x09\x5f\x7f\x6c\x7f\x7f\xea\x24\x3d\xfa\xe3\x52\xb2\xff\x88\xfe\x2c\xba\x5a\x79\x4a\x7e\xff\x8a\x7a\xe7\x8b\xe9\x0c\x5e\xbf\x86\x3f\x2e\xcf\x3e\xa4\xbf\x17\x43\x29\x76\x31\xc8\xce\x12\xbe\x11\x9a\x0c\x26\xbc\x1d\x92\xc1\x17\xf0\x62\x70\x97\x45\x66\x74\x26\xfc\xf4\x05\x37\x19\x78\x79\x7e\x86\xf8\xbb\x2a\x26\x78\x26\x40\x1b\xfd\xea\x17\xb4\x06\x14\x1f\x64\x01\x2f\x66\x4f\x93\x87\x5b\xd0\x78\x20\xfc\x17\xf7\xe8\xa8\x87\x03\x05\x43\xe0\xca\x1f\xbf\x18\xa0\x14\xe5\x26\xdd\xbb\xba\xa2\x3a\x08\xf3\xc7\xfb\x15\xe3\x87\x10\xd2\xd8\x80\x1b\x48\x31\xfb\x7f\x25\xcf\xdc\x60\x70\x76\x17\xce\x16\x62\x27\x65\x14\x0a\x1e\xff\x78\x41\xae\xfd\x93\x77\xc0\xd4\x05\x75\xfc\xd3\x02\x56\xfd\xdc\xc3\x4a\xf8\x8d\x79\xe8\x6c\x77\x42\xe3\xd3\xa4\xfd\x57\xcf\x91\xff\x84\xde\x41\xaa\xcb\x99\x8d\x84\xbf\x43\xef\x29\x97\x16\x33\xaf\x8e\x14\x12\xae\x09\x07\xb9\xe4\xe3\x09\x7b\xe4\x6a\x4c\x29\x70\xf5\xe6\xf1\x7e\xf5\x0e\x3e\xe0\x31\x94\x5b\x74\xc8\x8b\xa1\xa0\x01\xc8\x3b\xf4\xb7\x7b\x21\x15\x85\xb8\x77\x81\x14\x45\x83\x8f\x2b\xb6\xc4\xff\x08\x41\xf5\x3f\x4f\x03\x42\xe4\xe7\xe3\x53\xe7\xe6\xb4\xd2\xa9\xd8\x52\xdf\xa3\x77\xfe\xd3\x63\xc3\x1b\x43\xe5\x5f\xcc\x0d\x8e\x3b\x4c\xa6\xe2\x23\xab\x7e\x03\x2e\xf6\x50\xb2\xc2\x18\xd7\x3b\x2f\x14\xe6\x40\x31\x38\x85\x63\x57\x6f\x82\xe4\x73\xac\x50\xe7\x04\x82\x8d\x86\x03\x77\xcc\x7b\xfb\x44\x10\xd7\xcf\x7b\xf7\xc6\x02\xfe\x2c\xca\x4a\x11\xda\xda\xc2\x9a\xc4\xbb\x8e\x61\x63\x2f\x54\x8d\x73\xd8\xd4\x1e\xd6\x32\x5f\xb3\xf1\xeb\x97\xa1\x51\x7e\x96\x22\x28\x60\x07\x6e\xe1\x50\xc8\xac\x08\xe7\xdf\x46\x81\x70\xbf\xcb\x24\xc1\x4a\xc6\x52\x96\xf3\xb1\x80\x17\x39\x6e\x45\xad\xfc\x8b\x1e\xbd\x87\x2d\x6c\x82\xb0\x22\x72\x8a\x6d\xa0\xd6\xca\xb8\x40\x0d\x39\x42\x80\x93\x7a\xa7\x82\xd8\x88\x93\x1f\xc9\x3f\xc2\x6e\x3d\xaa\xb4\x90\x9c\x49\x3a\x28\x50\x55\x2e\xe6\x30\x07\x87\xc2\xd0\x56\xfa\x25\xb9\x95\xc5\x20\x40\x9f\xba\x80\xca\x98\x0f\x24\xd9\xad\xb1\xe3\x56\x5c\x09\x2b\x4a\x08\x31\x8e\xdc\x95\x6c\x2c\x81\xcd\x1c\x9d\xb4\x14\x5b\x4e\xa4\x16\x17\x51\x82\xe7\x91\x47\x9e\x16\x44\xfd\x6f\x8c\xb5\xe6\x70\x85\xe7\x38\x6f\xeb\xcc\xd7\xdc\x76\x8e\x3d\xe6\x54\x0f\x59\xfc\xa9\x46\x47\x91\x8d\xdc\x62\x31\x9a\x3b\x77\xe8\x83\x8b\xc4\x38\xbd\x8a\x10\xbc\x01\x91\xb0\x1c\x2b\x25\xbf\x1a\x76\x20\x2d\xd5\xa4\x1f\x43\x3e\x0d\x02\x51\x03\x25\xe6\x92\x62\x77\xdb\x73\x6a\x5a\x4d\x09\xbc\x75\x8b\xaa\x36\x22\x3f\x07\xa7\xa6\xae\x74\x1f\x95\xc2\x5f\x30\x76\x84\x52\x37\x32\x75\x9e\x52\xc9\x9f\xca\x9f\x0e\xa9\xd4\x24\x21\xc0\x4c\x31\x4b\xef\x9a\xe5\x5d\xd2\x91\x52\x34\x2c\xe1\xf8\xfb\xd0\xd2\xf5\x26\xc2\x40\x25\x9d\x47\x4d\x36\x18\xdf\xab\x48\x30\xf5\x39\x63\xa3\xa2\xa7\xf8\x86\x57\x8b\xa5\xd9\x63\x33\x4e\x68\x78\xee\xe4\x0a\x02\x6f\xe1\xa3\x53\xe8\xd6\x77\x38\xdf\xc9\x6e\x15\x66\x72\x7b\xa4\x32\x8e\xdb\x45\xb4\xe4\xe1\x8e\xdc\x35\x54\x50\x96\xbe\xba\xe4\x09\x89\x47\x2a\x43\x06\x8d\xbb\x39\xc4\x00\xd7\x83\x66\xfe\xf5\x47\x32\xb6\x40\xad\xd7\x1d\x6b\xca\xef\xa7\x32\x43\xaa\x83\x83\xb5\xa7\x25\xd3\x2e\x9b\xd1\xd0\x97\x71\xa7\x67\xe1\x44\x99\x13\x3c\xec\x50\xbb\x12\xd7\x24\xab\x5c\xa4\xa5\x0d\x9e\x69\xe4\xf3\x78\xbf\xba\x0a\xc1\xb4\xc5\x6d\xdb\x8f\x20\x39\x4d\x2f\x60\x82\xe6\x04\x0b\x6f\x42\xc1\x39\x9d\x5d\x80\x24\xb3\x06\x07\xf2\xf8\x4a\x94\xdc\xcd\xee\x87\x9b\x87\xbb\x8b\x3b\xb7\xe2\x7a\xc6\xd6\xa7\xf0\x04\x52\xf3\xea\xb4\xd3\xd1\x22\xf8\x91\xf6\x55\x73\xf0\x54\x65\xc5\x07\xa1\xe7\x10\xda\x20\x0c\x98\xfa\xbd\xab\xd3\x8e\x48\xa7\x24\xeb\xf2\xf4\xe9\x99\xc1\x2f\x3a\xbc\x4b\x4e\xfa\x79\x51\x2e\x0d\xdb\x4e\x6b\xef\x14\x4e\x3c\x77\x4b\x63\xbc\xe8\x17\xab\x1c\x2a\x44\x9e\x77\x23\xc5\x37\x23\x2e\x19\xb3\x5d\x18\x31\xac\x5a\xa7\x8e\xdb\x8c\x66\x99\xf8\x7e\x1a\x57\x06\x47\x3b\x29\x65\x39\x13\xf5\x6b\x07\xd7\x00\x1e\x11\x46\xe9\x71\xe4\x15\xe6\xf1\x2d\xea\xb2\xe9\xf4\xb4\x6f\xe5\xdd\x55\x40\x33\x10\x29\x45\x55\x85\x06\xd5\xc6\x18\x85\x82\x47\x9d\x4d\x67\x91\x31\x8b\xec\xd3\x4b\x7f\x16\x33\x89\xb4\x69\x44\xe4\x24\xbf\x8b\xb8\xf4\xec\x84\x1d\x60\xfa\xc6\x18\x75\x02\x39\xdf\xc6\xe3\xa7\x90\x1c\x62\x30\xab\x68\x27\xf7\xa8\x63\xfb\xc2\xc5\x83\x47\xb0\x3c\x1e\x53\x6f\x07\x4b\xee\xb0\xb8\x9d\x51\xc6\x89\x49\x07\x4e\x81\xb7\x35\x12\xed\x88\xda\xc6\x31\xd0\xad\x6e\x34\x34\xa2\x85\x28\xe7\x01\x31\xb7\x7a\x24\xae\xa2\x7c\x4f\x91\x54\x9f\xf4\xa0\x9c\x47\x8b\x50\xfa\xe7\x2c\x08\xfa\xd4\x37\xbf\x23\x09\x6c\x8d\x85\x8d\xc8\x3e\x1c\x84\xcd\xdd\xab\xcc\x94\x95\xf0\x32\x8e\x78\x2d\x0a\x97\x26\x26\x17\x9c\xb1\xf5\x9e\x3f\xd7\x1b\x25\xb3\x4e\xfa\xb8\xd2\x31\x2e\x99\x51\xea\x4d\x2c\x29\xa6\x5c\xfc\xfa\xe1\x8e\xcd\x2c\x15\x3e\xa3\xcc\x6c\x8d\xfd\x56\x64\xc5\xc3\xdd\xf4\x3d\x6c\x97\xfc\x68\xda\x24\x47\x12\xda\x6c\x09\x3f\x18\x99\x3f\xbd\x61\x40\xaf\x84\x28\xdf\x77\x71\x24\xc3\x48\x42\x8d\xa7\x92\x7f\x1b\xc6\xf7\xcd\x78\x30\x98\xaf\xce\x2c\xfa\xd3\xeb\x14\xb1\x1f\xd7\x8c\x56\xc9\x76\x9a\xeb\x43\xd0\x0e\x9e\xc6\x66\xaf\x0b\x78\x27\xb9\x72\xeb\x4f\x64\xa5\x2e\xd0\xca\x08\xfe\xda\xf6\x71\xac\x70\xc3\xec\x4c\x23\x1d\x95\x42\x47\x77\x10\xdf\x8e\xe8\xfb\x73\x7d\x0a\xa5\xb9\x69\xf0\x52\x20\xe7\x0c\x77\x0b\xc3\x9c\x9d\x3b\x8c\x1d\xfa\x9d\x49\x70\x38\x65\xb8\x94\xc4\x7d\x49\x62\x99\xc2\x9f\x7b\x4e\x46\xe8\xb6\x4a\x12\xda\x98\x37\x79\x62\x7e\x66\xa4\xf3\xe1\x66\x6e\xa7\x0d\x72\x92\x5a\xee\x25\xaa\xbc\x1d\xb6\x0a\xa9\x87\xbb\x02\x3d\x58\xda\xab\x8d\x7b\xe6\x23\x2c\xb7\xfa\xc9\x63\x1d\x39\x42\x30\x9b\x25\x0c\xd7\x1e\x9f\x9e\x4c\x73\x63\x59\x2e\xde\x94\x91\x3e\x59\xd2\x18\xf4\xbc\x90\xe7\x48\xcc\xa7\xe3\xcd\x67\xb8\xf8\xe0\x5c\xee\x14\x76\x5a\x1c\x40\x9d\x9d\xc2\xa5\x7b\x29\x22\xd4\x14\xf1\x4c\xbd\x1b\x44\xed\x2d\x82\x01\x52\xa9\x9e\x19\x5f\xc5\xa9\x45\x95\x04\x81\x85\x3a\x88\x63\x00\x7b\x5b\xa9\x85\xe2\x9e\xba\xd4\xa2\x77\xf6\x0e\xf1\xf6\xf6\x00\x49\xbe\xe1\xb4\x94\xce\xf1\x30\x38\x4c\xaa\x6b\xe7\x4d\xd9\xc4\x7d\x2a\x85\x28\xf3\x6c\xb0\xad\x99\x86\x68\x13\xc5\x42\xd8\x3c\x74\x17\x28\x58\xc8\xd0\xcc\x3e\x29\xae\x86\x01\xe3\xe9\xb4\x85\xd9\x7c\x02\x2f\x86\xf7\x2d\x5c\x0c\xbf\xe3\x84\xca\x8c\x60\xc5\xd3\x91\xcc\x15\x68\xf1\xbc\xc9\xc6\x57\x8c\x4a\x53\xeb\x84\x7c\xc2\xa0\xa9\x9d\x4c\x5c\x28\x9d\x6e\x35\xab\x72\xc7\xf1\xa5\x37\x2e\x75\xf2\x17\x3c\x9f\x89\x3d\x2f\xef\x0c\x97\xff\x8d\x34\xd8\x93\x17\xa1\xf9\x3c\x76\xca\x5b\xa5\xcc\x81\x1c\x36\xa0\x99\xe6\x72\x0f\x85\x48\x8f\x7c\x05\xcb\x17\xd6\xd4\xbb\x82\x39\x25\xc5\xf6\xd6\x9b\x6d\x08\x1a\xec\x9f\x0f\x77\xe1\x9a\x5a\x37\xde\xa4\x2b\x4e\x5b\x69\x4f\x96\xb6\x97\x9e\x94\x11\x79\x73\xff\xc0\x62\xbc\xb4\xa9\x19\xa3\x97\xc6\x1e\x7f\x75\xbe\x3c\x11\xd4\x89\x84\x22\x95\xef\xf0\x38\xdd\xce\xc6\x04\xf5\x86\x93\xaa\x1b\xe9\x3f\x5e\x65\x14\x0f\x6d\x19\xce\xf7\x51\xd8\x0c\xb8\xe4\x97\xa1\x6c\x6b\x47\x9b\x7d\x2a\xf3\x93\x66\x5a\x7b\xc9\x2d\x21\xc5\xa8\x7a\xee\xd8\xb1\x73\x12\x9d\x4a\x68\x99\x2d\x2e\xf5\x0b\x52\x13\x2c\x21\x3c\xbd\xf5\x20\x07\x8e\xd2\x69\x24\x26\x19\x64\x48\x1a\x58\x8c\x59\x7e\xd3\x62\x1d\xba\x63\xf3\xf9\x10\xe6\x9a\x4e\xd8\x48\xcf\x20\x96\xdc\xf0\xfa\x35\x68\xa9\x66\xf0\xd7\xbf\xa6\x47\x5f\xc5\x46\x82\xcc\xaf\x9e\x8c\xb4\xf1\x7a\xd1\xb0\xdb\x34\x11\xc2\x13\xd6\x75\x73\xfa\x67\x36\x13\x82\x20\x7b\x57\x94\xae\xeb\x28\x7c\xf1\xcc\x96\x42\xd3\x7f\x2a\x85\xcf\x8a\xd4\x75\x6a\xba\x3c\xad\x89\x5e\xda\xfe\x59\xdb\x5e\x3b\xec\x78\xfe\x80\x35\xca\x8f\xbb\x23\x67\x65\xd0\x53\x33\xd5\x91\x7a\x69\x68\x5a\x3a\xba\xc7\xff\xce\x68\x34\x24\x4a\x32\xd8\xfe\x60\xe9\x33\x6c\xf7\xaa\xe1\xde\xaf\x9a\xec\x75\x63\xc8\x35\xb3\xb2\x27\xfa\x47\x97\x26\x76\xad\x2d\x17\x62\x8f\x7d\x15\xa5\x4e\xd9\x69\x01\xce\xf7\xfc\x5c\x28\x0b\xe2\x71\xa5\xff\x1d\x87\x8a\xe3\xb3\xdb\xcf\x9d\x79\xff\x5f\x69\x73\x78\xcc\xfd\xbb\x4d\xb9\x9f\x68\xec\x3d\x3f\x48\xa4\x42\xb7\x8d\x6e\xbd\xd6\xc6\xaf\xbc\x7e\xd1\xc9\xaf\x7a\xeb\x57\xcd\x70\xaa\x9b\x64\x4f\xa6\x73\x3d\xd4\xd4\xa4\xd5\x93\x94\x2a\xac\x15\xc7\xd4\x84\x5b\x75\x9b\x70\x23\x45\x79\xbc\xd5\x1c\x2f\x4b\x5e\x17\x9c\x5a\x8e\x43\xb7\x66\xa0\x60\x1a\x0e\x5d\x03\x61\xab\xb5\x6c\xee\x81\x44\x34\x3a\x62\xdd\xe7\x96\xfd\x9b\x99\xf3\xe7\x99\xf2\xd0\x8d\x8d\x86\xd2\xe7\x98\x71\x32\xdc\x4f\x93\xff\x09\x00\x00\xff\xff\xdb\x21\x3c\x85\xb9\x35\x00\x00" func contractsStandardNonfungibletokenCdcBytes() ([]byte, error) { return bindataRead( @@ -280,11 +364,31 @@ func contractsStandardNonfungibletokenCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/standard/NonFungibleToken.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x55, 0xde, 0xed, 0x19, 0x7a, 0xd, 0x14, 0xc3, 0xd2, 0xdc, 0xf3, 0xbc, 0xa, 0xde, 0x17, 0x64, 0x6e, 0xab, 0xea, 0x17, 0xd1, 0x15, 0x20, 0xd9, 0xb0, 0x1c, 0x2e, 0x1f, 0x70, 0xf8, 0xbf, 0x79}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x68, 0x42, 0x8e, 0xf3, 0xfc, 0xb, 0x50, 0xfa, 0xc4, 0x10, 0x89, 0x2e, 0xc6, 0x75, 0x50, 0x65, 0x42, 0x1e, 0x84, 0x3, 0x1, 0x95, 0xcb, 0xc8, 0xd6, 0xee, 0x43, 0x5c, 0xfc, 0x4c, 0x52, 0x24}} + return a, nil +} + +var _contractsStandardViewresolverCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x56\xc1\x6e\xe3\x36\x10\xbd\xfb\x2b\xa6\x97\x36\x06\xb2\xf6\xa5\xe8\xc1\x97\x34\xd8\x45\x80\x1c\xba\x28\xba\xee\x5e\x16\x41\x31\x16\xc7\x16\x11\x8a\xa3\x72\x28\x6b\x85\x20\xff\x5e\x0c\x29\x53\xb2\xb3\xd9\x45\x8b\xa2\xa7\xfa\x60\x0b\xb2\xf8\xde\x9b\x37\x6f\x48\xad\xd7\xb0\xc5\x47\xf2\xb0\x0f\xdc\x40\xac\x09\xde\xdf\x6d\xe1\x17\x8a\x68\x30\x22\x48\x44\x6f\x30\x98\x6b\x88\xb5\x15\xa8\xd8\xc7\x80\x55\x04\xfa\xdc\xb2\x90\x00\x7a\xb0\x3e\x52\xd8\x63\x45\x10\x19\x1c\xc5\xc5\x7a\x0d\xe8\x07\xf6\x04\x3b\x0e\x81\x7b\xc0\x69\x1d\x7a\x03\x81\x84\xdd\x91\xe0\x68\xa9\x17\x60\x0f\x36\xae\x16\xeb\xb5\xae\xdb\x2a\x49\x6f\x9d\x03\x74\x8e\x7b\x18\xb8\x53\x54\xde\x45\xb4\xca\xb4\xe7\xd0\x60\xb4\xec\x01\x77\xdc\xc5\x39\x72\x6f\x63\xad\xb7\x3c\x55\x24\x82\xc1\xba\x01\x1e\x3d\xf7\xd6\x1f\x54\x4e\xac\xd3\x45\x5a\x95\xf9\xe0\xd6\xb9\x44\xe0\x89\x0c\x58\x01\x1b\x05\xd0\x98\x40\x22\x49\xa7\xc7\x86\xd2\xc5\xc0\xdd\x0f\x81\xe0\xc0\x6c\x54\xcd\x81\xbf\x5b\x60\xa5\x2c\x57\xe8\xdc\x72\x92\x30\x39\xf1\xd1\x52\xff\x5b\x2e\x33\xc0\xd3\x62\x01\x00\xb0\x5e\xaf\xe1\xae\xf3\x55\x92\x1f\x6b\x8c\x10\x28\x76\xc1\x8b\xd6\x9a\x9c\x2f\xae\x7f\x4c\xce\xd8\xa6\x75\xd4\x90\x8f\x64\x60\x37\xa4\x27\xb2\x75\x5a\xc9\x89\x74\x55\xb0\x3f\x70\x43\xe5\xb6\x40\x83\x03\xd4\x78\x24\x68\x3a\x17\x6d\xeb\xf2\xe2\x2e\x68\x9f\x86\x96\x24\x4b\x90\xae\x6d\x39\x44\x68\x4e\xd4\xa9\x29\x05\x53\x58\x69\x03\xa9\x3d\xe8\x81\x5b\x15\x8f\x0e\x5a\x0c\xd8\x50\xa4\xa0\x7e\x48\x4b\x95\xdd\x0f\xd0\xd7\xb6\xaa\xcf\x59\x92\xe8\x0a\x9d\xa3\x50\x30\xad\x40\xa0\x3f\x3b\x92\xa8\x75\xe4\x10\xec\x39\xbc\x52\xc8\x1b\x47\x47\x72\xe3\x63\x5a\xd3\x2e\x23\xbf\xc1\x83\x67\x89\xb6\x5a\xc1\xfd\x68\x67\x85\x42\xd7\x99\x71\x5c\x3c\xd5\x51\x73\xe7\xcc\x68\x78\x7a\x44\xb4\xb9\x19\x35\xd0\x01\x83\x71\xda\x76\xde\x43\xaf\x50\x49\xbb\x15\x68\x51\x44\xc3\xe1\x8b\xba\x02\xf9\x73\xf2\xa0\x94\xbb\x1d\x5a\xda\xc0\xed\xcc\xa3\x0b\x23\xf8\xc4\x5e\x2a\x9e\xa0\xc6\x7f\x6e\x3d\x60\x08\x38\xa8\x8c\x6d\xea\x91\xa1\xbd\xf5\x6a\x93\x4a\x9e\xe7\x21\x81\xac\xf2\xbc\x1c\xd1\x75\x94\xa7\x66\x47\xd0\x49\x8a\x4b\x01\x3f\x7d\x8c\xfa\xc8\x2d\x05\x51\x2d\x3a\x19\x63\xc3\xce\x7a\xa9\x05\xeb\xef\x14\x36\xd2\x30\x5e\x2d\x35\x21\x35\x9b\x73\x1f\xe6\x53\xa0\x8a\x60\xdf\x79\x38\x50\x7c\x3b\xfa\x9f\x72\x7c\x75\x6e\x91\x7e\xdf\x2c\x37\xf0\x49\x2f\x1e\x5e\x1f\x8d\xc4\x2d\x80\xe7\xd1\x54\xdf\xf2\x56\x14\xf9\x91\xfc\x7f\x94\xfe\x6f\xcc\x80\x6a\xfa\xfb\x43\xe0\x98\x1f\xb5\xb5\xba\xfa\xff\x29\x28\x50\xfa\xc7\x06\xb6\x35\xa5\xa4\xa8\x16\x15\x6a\x48\x6c\x18\x73\xbf\x7a\x39\x38\x20\x31\x74\x55\xec\x82\xf6\xb9\x0d\x24\xe4\xe3\x69\x6c\xc6\xcd\xe6\x72\xf1\x8b\x00\x6b\x76\xc7\xd8\xcd\xf3\xfb\xa5\xf8\x5e\x27\xa8\xe9\xc6\x52\x6b\x1e\x3e\x24\x0d\x37\x53\xa4\x7f\x0d\x7c\xb4\x46\x43\x9c\x68\xb4\x7a\x04\xa1\xa8\x45\x9d\x47\x6e\x55\x4a\x80\x99\x23\xc5\xbb\x2b\x5a\x1d\x56\x1a\xbe\xf7\x77\xdb\x25\x54\x7a\xe8\x9e\xf6\x82\x3c\x0c\x67\x67\x70\x9b\x69\x27\xd6\x02\xa8\x76\x64\xe3\x53\x54\x6c\x99\x00\x79\xdd\x96\x22\x62\xe2\xb8\x3c\xd9\x4a\x64\xd3\x81\x29\xba\x03\xe4\x13\x0c\x77\x7c\xa4\x6b\xd8\x75\x51\x8f\x79\x1c\x87\xc4\x56\xe9\x1d\xc3\x7a\x89\x84\x46\xcd\xc0\xf3\xac\x7e\x6d\x6b\xc9\x5b\xca\xc5\xfe\x71\x29\x60\xb6\x73\xfd\x5b\x1a\x66\xe9\x48\xa9\xf8\xe3\x14\xd4\x17\xed\xd7\x95\xcf\x53\x08\x6e\xe1\x10\xb8\x6b\x95\x22\xd5\x31\x82\x04\x6d\x9a\xa1\xcf\xf9\x6c\xbf\x7f\xf7\x8f\x1a\xf0\x96\x9d\xa3\xbc\x6b\x3e\x7d\xdd\xb9\xfc\x26\x36\x7f\x2d\xb9\xb2\x66\x03\xbf\xdf\xfb\xf8\xd3\x8f\xcb\x0d\x7c\xff\x74\xba\xff\x7c\x33\xc3\xd2\xcf\x38\x63\xde\xba\x72\xfb\x79\xf1\xcd\x3e\xdd\xbf\xcb\x5d\xca\x0c\x0f\x5f\xc6\xfc\xf4\x30\x83\xcc\xdf\xcf\x8b\xbf\x02\x00\x00\xff\xff\x6a\x4c\x5c\xd3\x92\x0a\x00\x00" + +func contractsStandardViewresolverCdcBytes() ([]byte, error) { + return bindataRead( + _contractsStandardViewresolverCdc, + "contracts/standard/ViewResolver.cdc", + ) +} + +func contractsStandardViewresolverCdc() (*asset, error) { + bytes, err := contractsStandardViewresolverCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "contracts/standard/ViewResolver.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0xda, 0x73, 0xc1, 0x8c, 0x2, 0x49, 0x21, 0xdd, 0x1c, 0xd5, 0x4d, 0x68, 0xdf, 0xb3, 0x8a, 0x98, 0x93, 0xbc, 0xe, 0xeb, 0x92, 0x2f, 0xa1, 0xd4, 0xd3, 0xd8, 0xdb, 0x22, 0x4b, 0x62, 0x88}} return a, nil } -var _contractsThirdpartyNft_catalogNftcatalogCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x1b\x5d\x6f\x1b\x37\xf2\x5d\xbf\x62\xe2\x87\x83\xd4\x53\xa5\x1e\x70\xb8\x07\xa1\x6a\xeb\x26\x36\x60\xb4\x09\x0c\xc7\x69\x1f\x82\xa0\xa0\x77\x29\x6b\xe1\x15\x57\x47\x72\xad\x0a\x86\xff\xfb\x81\x4b\x72\xf9\x35\xdc\x95\x8b\x7e\xe1\x10\x3f\x24\xd2\xee\x7c\x92\x33\xc3\xf9\xa0\xaa\xdd\xbe\xe1\x12\xde\x52\x49\x4a\x22\xc9\x4f\x15\x3d\x08\xd8\xf0\x66\x07\x67\x8b\xc5\x72\xb1\x58\x0a\x49\x58\x49\x78\xb9\x0c\x40\x16\x45\x59\x9c\x4d\x26\xcb\x25\xbc\xbb\xbc\x7d\x4d\x24\xa9\x9b\xfb\xc9\x72\xa9\x1e\x9c\xc3\x3d\x65\x94\x93\x1a\xf6\x2d\xdf\x37\x82\x2a\x10\xe0\xf4\xbe\x12\x92\x1f\x61\xd3\x70\xb8\xac\x9b\x03\xbc\x6b\xd8\x65\xcb\xee\xab\xbb\x9a\xde\x36\x0f\x94\x89\x85\x21\x70\x41\x8a\x2d\x14\x9a\x26\x50\xa6\x90\x84\x6c\x38\x15\xa0\xd8\x03\xb9\x6b\x5a\x09\x72\xab\xe9\x56\xac\xa8\xdb\xb2\x62\x8a\x3b\x54\x52\x40\xd1\xd4\x35\x2d\x64\xd5\x30\xa8\x4a\xca\x64\xb5\xa9\x28\x9f\x03\xdb\x48\x90\xc7\x3d\x9d\x77\xb4\xc8\x3d\x05\xc2\x4a\xd8\xb7\x77\x75\x55\xc0\x9e\xc8\xad\x98\x03\x95\x85\x95\xe1\xb6\x81\x1d\x79\x50\x40\x40\xca\xb2\xea\xc8\xc9\xa6\xe3\x6a\x25\x3b\x36\x2d\x14\x84\xc1\x9e\x37\x9d\x96\x84\x75\x02\x75\x64\x79\xf3\x58\x95\xb4\x93\x67\x67\x96\x6d\xd1\xad\x0d\x83\xf3\x72\x57\xb1\x0e\x91\xec\x15\x1c\x05\x62\x48\x90\x1a\x0e\xdb\xaa\xd8\xc2\xa1\x69\xeb\x52\xf1\xed\xb5\x0c\x59\x4f\x26\xfb\xf6\x0e\x8a\x86\x49\x4e\x0a\xe9\xed\x00\x3c\x4d\x00\x00\xd4\x1a\xaa\x65\x3b\x2f\x4b\x5a\xda\x27\xe7\x5a\x3c\x6f\x79\xb6\x44\xc0\x1d\xa5\x9d\x86\xb4\x8c\x79\x28\x34\xc5\x86\x3e\x52\x26\x3d\x7a\xd3\xee\x8d\xfa\x73\xa4\xae\xfa\x85\x86\x15\xbc\x97\xbc\x62\xf7\x73\x0f\x4c\xcb\xf9\x8e\xec\xe8\xc0\xeb\xf3\xb2\xe4\x54\x08\x58\x81\xf9\xe4\x40\xd8\x46\xde\x1e\xf7\x0a\x59\xfd\xe7\x9e\x9b\x9d\xbc\x26\x72\xab\xe8\xf6\x5f\x1c\x84\xde\x5f\x0d\x70\xdd\x7f\xf6\xde\xf3\xea\x91\x48\x43\xe1\xda\x7d\x89\x29\xfc\x58\xb1\x07\x5a\xa2\x42\x18\x12\x03\x10\x65\x25\xf6\x35\x39\x66\xf4\x2f\xa9\x28\x78\xb5\x57\xcb\x98\xbe\xa4\xbf\x4a\xca\x19\xa9\x3f\xdc\xfc\xd8\xa3\x76\x2f\x67\x93\x60\xa7\x3f\xec\x4b\x22\x93\xbd\x7e\x8d\xec\x75\xab\x21\xa1\x62\x63\xbb\x6d\x68\x7e\xde\xef\xbf\xe1\x7e\xdf\xd0\x5d\xf3\x78\xd2\x7e\x73\x0d\xa9\x43\xfa\xc8\x8e\x1b\xaa\xd3\xe1\x8d\xb6\xdb\xa3\xd5\x76\x82\x5d\x9b\x20\x86\x84\x1e\x60\xf4\xe0\x82\x9c\x0c\x62\x2b\x16\x5a\x7b\xe9\x77\xa4\xa4\x91\xa4\x29\x9b\xa9\xa5\x7c\xf5\x06\x56\xf0\xe1\x8a\xc9\xff\xfc\x7b\x3e\x62\xad\xb0\xa3\x42\x90\x7b\xea\x1e\x08\x49\x64\x2b\xdc\x77\x13\xd6\xb9\x33\xd0\x8c\xaa\xb1\xef\x39\x45\x63\xa7\x1b\xd2\xc4\x7a\xdb\x5f\xab\x4b\x6c\x57\x88\x2e\x81\x41\x19\x8f\x1c\x52\xcc\x1a\x15\xa2\x98\x11\x42\x21\xd6\xd4\xa1\xbd\x25\x8c\xdc\x53\xfe\x3e\xe3\xed\x83\x48\xd7\x68\x00\xd0\x28\xa4\x28\xa8\x10\x53\x41\xeb\xcd\xac\xc3\x35\xe6\xb6\x82\x27\xbd\x50\xb0\xf2\xce\xd2\x85\xfb\x68\x33\x9f\x67\xb5\x26\x4f\xf8\x6e\x7c\xf9\x4d\x9f\x43\xc1\xf3\x20\x3b\xe5\x35\x6f\x88\x24\x3e\x5b\xf7\xe9\xfb\xa6\xa9\x9f\x3b\x46\xe7\x26\xef\x20\x35\x3c\x56\xf4\xa0\x7c\xe4\xbe\xd1\xcb\xfe\xd4\xb9\x7b\x17\x7c\x42\x11\x9e\xbc\x10\x10\x98\x8a\x22\x0b\xcf\xf0\x3c\xbc\x12\x76\x31\x55\x54\x7e\xd2\x7b\x14\xac\x89\x7d\x6f\x16\xe2\xda\xdf\x52\x4f\xfb\x94\xc7\x23\xe1\x20\x1b\x49\x6a\x9f\x83\x66\xd0\x1b\x62\xca\xc6\xec\xa9\x05\xf8\x20\x74\x96\x42\x5a\xb9\x55\xaa\x15\x44\xd2\xde\x40\x45\x17\x2b\x92\x44\xc9\x9a\x0a\xa7\xa2\x69\x79\x41\xa1\x62\x92\xf2\x0d\x29\x68\x9e\x9f\xb6\x1b\x93\x4b\x59\x02\x9b\x96\xc1\x3d\x95\xaf\x5b\xce\x29\x93\x81\x85\x4f\x67\xd6\xd3\xbe\xed\x50\x9e\x53\xae\x59\x5e\xe8\xf2\xe6\xe4\x40\x97\xb5\x40\x24\x72\xf2\x04\xb8\xa7\xeb\x11\x31\x55\x7f\x9c\xca\x96\x33\x50\x8c\x17\x18\xcf\x00\xe1\x19\x67\x2c\x32\x8c\x5d\xa2\xde\x4b\x30\x43\x44\xc8\xf2\x86\xb5\x97\xeb\x0f\x09\x52\xb1\x4a\xc2\xf4\xa5\xb4\x59\x55\x47\x44\x0d\xe9\x74\xa3\xdf\x33\xb2\x17\xdb\x46\x46\xd6\xd3\x6d\x94\xde\x64\x0b\x81\x47\x9d\x3e\xd4\x24\xe8\x62\xab\xaa\x82\x0f\x82\x3a\x02\xca\xa9\x27\x89\x95\x0a\x2a\xaf\x09\x97\x15\xa9\x2d\xe4\xf4\x17\x10\xe6\xe3\x0f\xf4\xe8\x8e\x05\xf7\xd8\x58\x4d\x2a\x47\xbc\x54\x7a\x99\x42\x4d\x3e\x7a\xc4\x3f\xc1\x3a\x24\x3a\x41\x76\xc2\x93\xf4\x7d\xac\x95\x92\x15\xd7\x14\x15\x25\x81\x55\xfc\xe3\x67\x43\x32\x28\x5f\x08\xd5\x51\x6e\x30\xb8\x35\x91\x1c\x81\x63\x84\xa4\x30\xc6\xca\x04\x13\x0b\xcc\xea\xb2\x21\xb5\xa0\xa3\x3b\x00\x6b\x78\x7a\x9e\x24\xe6\xe9\xeb\x59\x70\x4a\x24\xbd\xd8\xed\xe5\xd1\x57\xf4\x3b\xc4\x60\x8d\x42\x5f\x7f\x69\x90\xc0\x21\xf8\x94\x4d\xc8\xee\x0f\x1c\x75\xa6\xd9\x17\x37\x74\xcf\xa9\xa0\x4c\x0a\xa8\xd8\xa6\xe1\x3b\xd2\x1d\x49\xba\x74\x27\x49\x25\x6a\xdd\xa7\xa7\xdb\x48\xba\x52\xff\x82\x68\xd5\x36\xa8\x90\x2e\x24\x6f\x0b\xa9\xcf\xbf\xfe\xac\xb1\xcd\x09\x28\x5b\x15\xfb\x2d\x7e\xc5\xc8\x5d\x55\x57\xf2\xa8\xce\x83\xae\x77\xa0\xd6\xa0\xe3\x25\xfa\x55\x31\x04\x13\x1d\xe0\x29\xb4\x12\x75\x3e\x7a\x95\x07\x84\xc9\x48\x0c\xe9\x2a\x10\x08\x32\x90\x04\x2e\x53\x89\x64\x08\xba\x72\x43\xa7\xdd\x39\x7a\x09\x5c\x68\x77\xa1\x25\xe5\x94\x9a\xc7\xc1\x1b\xd3\x28\x02\x72\x1a\x40\xa6\xb2\x82\x53\xaa\x2b\x18\xa8\xb0\x7a\x20\xdc\x7b\x3c\x6d\xd6\xbe\x6e\x29\xa8\xa7\xd1\xda\x53\x0f\x01\xf4\xb4\x5a\xfb\x3a\xe6\x68\x7a\x32\xaf\x13\x65\xb3\xf4\x43\xac\xf8\x19\xee\xd7\x41\xc2\x64\xfd\x01\x71\x3f\xaf\x65\xa6\xfd\x0e\xb3\xff\x90\x4a\x74\x76\x75\xf9\x21\x56\xd3\x67\xa1\x92\xd2\x3e\x81\x0c\x4a\x48\x84\x8e\xef\x8f\xab\x4c\x98\xc9\x60\xe8\xe2\x7b\x15\x76\x34\x17\x21\x09\x0d\x13\xfa\x06\x4c\xf1\xc6\xc5\x40\xc3\x22\x54\x63\x1e\xc9\x0d\x88\xe0\xf3\x54\x52\x38\x45\x54\xfc\x18\xf6\xe5\x5d\x07\x7b\x94\x07\xb6\x5a\xac\x63\xbd\x52\x14\xdb\x86\x59\x5b\x3d\x31\xaa\x81\xc6\xeb\x68\x09\x06\x11\x8c\xfa\xeb\x74\x49\x4e\xb0\x78\x9b\xa2\x21\x16\x4f\x82\x4e\x43\xdc\xf2\x58\x2e\xe1\xaa\x6b\x19\xd3\x17\xf9\x86\xe5\x87\xfa\xc6\x40\x71\x9e\x40\xdb\x76\x30\x9a\x5a\x20\xd0\x5d\x65\x9f\x27\xa7\x2b\xfd\xfc\xfb\xb4\xf2\x4f\xe5\xef\x0e\xf9\xf2\xb6\xea\xac\xfe\xc3\x65\xf5\xab\x2d\xca\xac\x6b\x8c\x35\x84\x06\x75\x9a\x27\x4a\xcc\x63\xa9\xd1\x06\x05\x6e\xf1\x88\x1c\x6b\x74\x07\x52\xe4\x5e\xca\x75\x2f\x30\x06\xa4\x65\x5d\x5b\xa9\xb1\x83\xa6\x13\x7e\x6d\xb4\xc0\xa2\xba\x51\x66\xdd\xeb\x85\xa8\xe2\xad\xfa\xda\xab\xc8\xbe\xaf\x9b\xe2\x61\x3a\x5b\xc8\x6a\x47\x85\x24\xbb\x7d\xc6\x19\xbe\xe8\x9f\xbf\xb9\xb8\xbe\xb9\x78\x7d\x7e\x7b\xf1\xa6\x7f\x74\xb5\x81\xe6\x4e\x92\x8a\xa9\xe4\x89\xd4\x35\xd0\x9a\xee\x3a\xe7\x88\xdb\x80\x50\x09\xa0\x42\x39\x4e\x45\xea\x39\xec\x6b\x4a\xbc\x7c\xb3\x15\xb4\x03\x76\x49\xf2\x0f\xf4\x28\xba\x11\xc7\xa6\xe1\x17\xa4\xd8\xba\xc7\x6a\x51\xb7\x4d\xa9\x12\x3e\x21\x29\x29\x17\x9a\xca\x17\xcb\x20\x0d\x75\x94\xa6\x33\x38\x3d\xcf\xee\x4c\xdd\xcb\xf0\xd5\x0a\x92\xa2\x68\x5a\x26\x17\x77\x0d\xe7\xcd\xe1\xeb\x7f\x78\xad\x1b\x9b\xb0\x7e\x33\x55\xfa\xae\x60\x69\xd2\x81\x65\x94\xea\xcf\x9c\x99\x6f\x1c\xfd\x57\x5d\xc5\x17\xd9\x5f\x2c\x81\xf9\xf8\x2a\x2c\x2f\x1d\x15\x24\x9b\xcf\xd7\xd4\x16\x07\x2b\x46\xc2\xca\x13\x68\x2d\xe8\x58\x75\xee\x85\xbb\xd0\x78\xb2\x24\x86\xd0\xd1\x72\x22\xb4\x08\x55\x49\x7c\xd4\x5b\xf9\x29\x2d\x24\x7c\xaa\x8b\x07\x7a\x14\x18\xc1\xc4\x9e\xa6\xbf\xf4\x39\xfb\x0a\xa6\x53\x4d\x7d\x66\x4a\x41\x3f\x3a\x04\xe4\x0d\x19\x85\x6f\xb1\x67\xc3\xf2\xeb\x0e\xc4\x60\x84\x9b\xa1\xf6\xf9\xed\xb0\xa6\x1f\x31\x92\x9f\x72\xb2\xf4\xb0\xe2\xb2\xe1\xea\xac\x9d\x9a\x33\xf7\x2a\x69\x8d\xcc\xd2\x7e\xe1\x88\x28\xb6\xe3\xf8\x31\xa1\x99\x95\x27\x44\x8c\x7c\x35\xe9\x56\x9e\xc4\x3d\x3a\xcb\xaf\xc3\xb1\xa9\x57\x0d\xe2\xa7\xf6\x77\x7b\xc2\xc9\x0e\x8d\xf5\x2b\xb8\xdd\x52\x68\x59\xf5\xdf\x96\x02\x53\xd9\x10\x11\xa2\x62\xf7\x76\xa8\x59\x89\x6e\xfc\xeb\x50\x23\x9a\xf6\x38\xd0\x74\xfa\x34\x78\xd3\xf0\x7e\x00\xeb\x8b\xb7\x25\x12\x0e\x55\x5d\xc3\x1d\xd5\xc5\x25\x3a\x4d\xf3\xc9\x9b\xf6\xfc\x79\x7f\x14\x46\xf3\x8e\xe6\xc0\x28\x17\x11\x9a\x3d\x3b\x56\xf0\xf3\xb6\x51\x71\x7a\x47\x1e\x6c\x31\xac\xdf\x75\xed\xe1\xa9\xfa\x4e\x4c\x56\xc7\x28\x2d\x85\xa2\x7e\x47\xe1\x91\x72\xb5\x3a\xe5\x2c\xd8\x5c\x43\xf5\xdd\xe5\xad\xd5\xf3\x77\x3f\xdd\xb1\xc3\xdc\x76\x7b\xa3\x98\x6e\x41\x4d\xc7\xf3\x35\xd9\xeb\xc3\xf0\x5c\xc7\xf6\xa9\x7d\x3f\xd3\xa1\x71\x6f\xca\x7a\x3f\xd8\x47\x4d\xd3\x27\xb4\x83\x8f\x76\x56\x9f\xbf\x99\x7a\xc0\xd9\x41\xc2\xcc\x25\x43\x44\x08\xca\x9d\x54\x4e\xea\x45\xb1\xa5\xea\xd8\xf6\x97\xe3\xec\xda\xae\x43\xbf\x2b\x82\x4a\x68\xf7\x40\x60\xa7\x31\xcf\x3c\xda\xc8\x72\xdc\xd0\x8d\x97\x43\x78\xdc\xf4\x91\x37\x9d\xbd\x1a\x13\xed\x86\x6e\x16\xd9\x6e\xef\x2b\x58\xe3\xb9\x93\x37\x51\x3a\xbb\xf8\x75\x4f\x0b\x49\x4b\x97\x54\xeb\x1b\x19\x65\x43\x05\xb0\x46\xc2\x8e\xc8\x62\x6b\x1e\x5a\x8f\xb1\x52\xc4\xfa\x45\x63\x06\x58\x23\x19\x76\xce\x1c\x73\x82\xf6\xc6\xb9\x43\x4c\xd2\x7c\x72\x13\xb1\xb3\xab\x77\xbf\xdc\x5c\xfc\x74\x75\xf1\xf3\xd9\xdc\xf3\xb0\xde\xce\xc2\x53\x25\x1a\x59\xac\xd1\xa7\xff\x84\x7f\xa1\x67\x51\x0f\xf1\x11\xc1\xfa\xa4\xd2\xd6\xa8\x94\xe9\xa9\xd0\x5d\x35\x3e\xe7\x44\x88\x66\x07\x85\x23\x9b\x1c\x09\xb2\x48\x56\x2d\x06\xd0\xcf\xfd\x05\x8c\x21\xd2\x05\xf5\x4f\x86\x50\xec\xe8\x60\xf8\xb9\x92\xdb\x92\x93\x83\x5f\xc8\xa1\xd3\xeb\x38\x54\xaa\x85\xd1\x21\xfc\xea\x0d\x34\x1b\x87\x7d\x6c\x5a\x38\x10\x26\x95\x0b\x1e\x0c\xf5\x20\x28\xda\x87\xef\x2e\x6f\x7b\x33\xc4\xe6\x95\x7e\xf5\xc7\xe3\x1c\x0a\xdf\x7b\x47\xe6\x93\x4d\x2c\x95\x15\xb2\x47\x52\x57\x65\xbf\xc9\x70\xf5\xe6\x2c\x4a\xb8\xc2\x98\xd0\x39\xcb\x28\x87\x57\x68\x34\xe9\x63\x88\xb7\x2f\x83\x71\xe7\x73\x18\xfe\xd3\xc3\x70\xbf\x41\x7f\x5a\x3c\xee\x8c\x49\x0f\xf3\xe3\x08\x1c\x98\xbe\xfb\x32\x92\x48\xf7\x16\xa9\xb3\xc5\xc1\xf1\xf1\x60\xc2\x88\x06\x86\x3c\x3f\xbd\x8c\xa8\xbb\x62\xcc\x47\x72\x65\xd4\xaf\x4e\x13\x44\x57\x42\xb0\x82\x8f\x9a\xff\x48\x29\xd4\x73\x3a\xb1\x26\xf2\xd8\x44\xb5\x91\x51\x77\xa4\x36\x72\xfc\x4e\x2d\x92\x74\x8f\x22\xeb\xbe\xdd\xfc\x28\x3f\xd9\x46\x06\x4a\x66\x9e\x34\x40\xd1\x17\xc3\x8c\xba\x4d\x9d\x3f\xeb\x44\x22\x65\x79\x7a\xdd\x36\xf7\x32\xfb\xe1\xd1\xe6\x70\x34\xc7\x4b\x39\xe5\xb6\x26\x9c\xab\x33\x47\x55\x18\x5d\xed\xb1\x25\x02\x48\xcd\x29\x29\x8f\xf9\xeb\x95\x7e\xb4\x0f\x77\xcb\x69\xa8\x0a\xa7\x41\x2d\xd1\xc7\xbe\xd2\xf6\x53\xec\xf6\x23\x7a\xb9\xfe\x58\x98\x92\x60\x97\x40\x21\x7f\x31\x10\x0d\x65\x11\x62\xd0\x71\xef\xaf\xca\xfa\xcf\x71\x0c\xd7\x8c\x4f\x90\x92\xeb\x84\xe0\xae\x14\x7a\xe0\xe6\x49\x08\x16\xdc\x30\xf4\x28\xfb\x4d\x6d\x7f\xd2\x94\x9b\x94\xe5\x91\xf7\xe3\x03\xb4\x01\xe4\x17\xcc\xd5\x86\x05\x70\xa0\xe3\xb3\xb7\x11\x69\x72\xa4\xc2\x6b\x90\x18\x11\x0d\xb0\x60\xc9\x2e\x07\x77\x24\x07\x30\x3d\xb8\x90\x40\x78\x8f\x72\x80\x82\x07\xb8\x68\xb9\xbb\xe6\x31\x1a\x88\xf4\x95\xbe\xd3\x63\x11\xfc\xc1\xc1\x28\xcd\x2d\xd1\x8b\xf0\x58\x96\xb9\x5c\x9a\x4b\x7d\x8a\xf3\x63\xd5\xb4\xa2\xbf\x2d\xaf\xf3\x88\x81\x9c\xe1\xf7\x8c\x51\x9e\x3c\xa4\x2c\xfb\x9b\xca\x43\xb2\xfc\x3d\x83\xa5\x37\xe1\xf4\xde\xdb\x88\x83\x05\xd5\xe4\xae\x35\x7c\x0e\xab\xfd\xdf\xe7\xb0\xea\x93\xfa\xff\x0e\xab\x41\x70\x39\xa9\x35\xff\xe7\xc7\xcd\xc0\xcf\xcd\x75\x68\xe3\xeb\x7f\x44\x80\x1c\x57\xe2\xd5\x0c\x1f\x86\x68\x41\xa6\x0f\xf4\x88\xb3\x99\x61\xa1\x68\xe4\x47\x00\x78\x7d\xda\xc7\x01\x6f\x39\x5e\x76\x84\x22\xc5\xa7\xbb\xff\x6e\x9f\xbd\xc5\x5a\xd1\x16\x73\xb4\xee\x09\x7a\x31\xeb\x84\xe8\x50\xff\x0d\xbd\x9d\xef\xbe\x64\x1b\x6f\x31\x8f\xb1\xf2\x3e\x81\x4f\x5a\x71\x09\x44\xda\x8b\x4b\x40\xc2\x66\xdc\xa9\xde\x77\x6a\x27\x0c\xaf\x31\x9d\xed\x45\x3d\x84\x81\x55\x46\x7f\x2a\x90\xe9\x3f\x18\xf1\xed\xe9\x14\x57\x87\xa3\x6e\xf7\xe2\xac\xac\xda\xe0\x33\xb5\xf8\xe4\x5b\x54\x69\x74\x49\x47\xc9\xd2\xa0\xa7\xd3\xb4\xa8\xcf\x77\x12\x9f\x70\x0a\x6d\x7a\x50\x2f\xa7\x32\x58\xe7\x06\x3d\xb5\xdf\x50\xf0\x86\x83\x6c\xab\x7f\x36\xab\x92\xbc\xcd\xdf\x7b\x3d\x6d\xf1\xd7\x3d\x17\x17\xbc\xb1\xe1\xf7\xe8\x7e\x78\x77\x6b\xff\x4a\xd9\x47\xcd\xff\x65\x07\xcf\x69\x1e\xa0\xef\xb6\x25\x63\x3b\xfa\xf8\xd6\x5d\xa7\x39\xe1\x84\x4a\xd0\xd3\x89\x77\xce\xf0\x7d\x66\xc3\xc6\x8f\xd3\x0d\x43\x11\x7e\x0e\x7a\x4e\x9e\x21\x52\x53\x76\x2f\xb7\xca\x17\xbe\x1a\x48\x32\xac\xd0\xc1\xd1\x3b\xa2\xc0\x6c\xd8\x3a\x7f\xd3\x9a\x74\xc7\x1b\xa6\x07\x96\xc6\x98\xf6\x5c\x52\xa7\x78\x60\xc9\xa5\xf5\x4e\xaa\xfc\x0f\xb6\x60\xed\xee\xdc\xb0\x4d\xdc\x28\xf5\x7f\xd7\x93\x23\x76\xed\xdf\xd1\x5d\xea\xec\x7a\x80\xd4\xc8\xdc\xee\x2b\xf4\xb4\x0a\x5d\x1b\x5b\x68\x0d\x31\x7c\xd4\x39\x2a\xcf\x93\xc9\xf3\xe4\x7f\x01\x00\x00\xff\xff\x57\x4c\xad\xfb\x51\x3f\x00\x00" +var _contractsThirdpartyNft_catalogNftcatalogCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3b\x5f\x6f\x1b\x37\xf2\xef\xfa\x14\x13\x3f\xfc\x7e\x52\x4f\x95\xda\x43\x51\xe0\x84\xaa\xa9\x9b\xd8\x80\xd1\x26\x67\x24\x76\xfb\x10\x04\x05\xbd\x3b\xb2\x08\xaf\x48\x1d\xc9\xb5\x6a\x18\xfe\xee\x07\x2e\x97\xbb\xe4\x72\x76\x57\x0e\xfa\xe7\x1e\xe2\x87\x44\xda\x9d\x19\xce\x0c\xe7\x3f\x29\xbe\xdb\x4b\x65\xe0\x0d\x1a\x96\x33\xc3\x7e\xe1\x78\xd0\xb0\x51\x72\x07\x27\x8b\xc5\x72\xb1\x58\x6a\xc3\x44\xce\x54\xbe\x8c\x40\x16\x59\x9e\x9d\x4c\x26\xcb\x25\xbc\x3d\xbf\x7a\xc5\x0c\x2b\xe4\xed\x64\xb9\xb4\x0f\x4e\xe1\x16\x05\x2a\x56\xc0\xbe\x54\x7b\xa9\xd1\x82\x80\xc2\x5b\xae\x8d\x7a\x80\x8d\x54\x70\x5e\xc8\x03\xbc\x95\xe2\xbc\x14\xb7\xfc\xa6\xc0\x2b\x79\x87\x42\x2f\x6a\x02\x67\x2c\xdb\x42\xe6\x68\x02\x0a\x8b\xa4\x8d\x54\xa8\xc1\x2e\x0f\xec\x46\x96\x06\xcc\xd6\xd1\xe5\x22\x2b\xca\x9c\x0b\xbb\x3a\x70\xa3\x21\x93\x45\x81\x99\xe1\x52\x00\xcf\x51\x18\xbe\xe1\xa8\xe6\x20\x36\x06\xcc\xc3\x1e\xe7\x15\x2d\x76\x8b\xc0\x44\x0e\xfb\xf2\xa6\xe0\x19\xec\x99\xd9\xea\x39\xa0\xc9\x3c\x0f\x57\x12\x76\xec\xce\x02\x01\xcb\x73\x5e\x91\x33\xb2\x5a\xd5\x73\xf6\x20\x4b\xc8\x98\x80\xbd\x92\x95\x94\x4c\x54\x0c\x55\x64\x95\xbc\xe7\x39\x56\xfc\xec\x6a\xb5\x2d\x2a\xdd\x08\x38\xcd\x77\x5c\x54\x88\x6c\x6f\xe1\x10\x58\x4d\x82\x15\x70\xd8\xf2\x6c\x0b\x07\x59\x16\xb9\x5d\xb7\x91\x32\x5e\x7a\x32\x61\x59\x86\x5a\x4f\x59\x51\xcc\x20\x93\xc2\x28\x96\x99\x60\x27\xe0\x71\x02\x00\x60\x75\x69\xd5\x77\x9a\xe7\x98\xfb\x27\xa7\x8e\xcd\x40\x4d\x5b\xa6\xe1\x06\xb1\x92\x14\xf3\xee\x5a\x16\x2d\x5c\x0e\xef\x51\x98\x80\xee\xb4\x82\xb0\x7f\x2d\xc9\x8b\x46\xf1\xb0\x82\xf7\x46\x71\x71\x3b\x0f\xc0\x1c\xbf\x6f\xd9\x0e\x07\x5e\x9f\xe6\xb9\x42\xad\x61\x05\xf5\xa7\x16\x44\x6c\xcc\xd5\xc3\xde\x22\xdb\xff\xda\xe7\xf5\xce\x5e\x32\xb3\xb5\x74\x9b\x2f\x2d\x84\xdb\x6f\x07\x70\xd9\x7c\xee\xbe\xff\x99\x8b\x3b\xcc\xc9\x25\x72\xae\xf7\x05\x7b\xe8\xe1\x3d\x47\x9d\x29\xbe\xb7\x2a\x48\x5f\xe2\xef\x06\x95\x60\xc5\xf5\xbb\x9f\x1b\xd4\xea\xe5\x6c\x12\xed\xd6\xf5\x3e\x67\x26\xd9\xaf\x57\xc4\x7e\x95\x0e\x12\xb8\x38\x76\xc7\x6a\xda\x9f\xf7\xec\x0f\xde\xb3\x77\xb8\x93\xf7\x47\xed\x99\x72\x90\x2e\xc4\x1e\xb9\x6b\x35\xf5\xe9\xf0\x66\x79\x15\x3b\xf1\x5b\x06\x2f\xeb\xe0\x42\x84\x02\x10\x78\x68\x83\x8f\x89\x62\x1e\x15\xf2\x1a\x29\x76\x2c\xc7\x1e\x8e\xd3\xe5\xa6\x7e\x85\x8b\xd7\xb0\x82\xeb\x0b\x61\xbe\xfd\x66\x3e\x62\x79\xb0\x43\xad\xd9\x2d\xb6\x0f\xb4\x61\xa6\xd4\xed\xf7\x3a\xec\xaa\xd6\xd8\x7a\x44\xee\xfa\x53\x2b\x70\xd7\x91\x8e\x91\xc8\x7b\xd0\xdf\x2b\x53\xd7\xde\x08\x99\x22\x43\xab\xbd\xec\x18\x01\xbd\xb1\x11\x02\xd6\xcc\x84\x04\x0a\x6c\xd1\xdf\x30\xc1\x6e\x51\xbd\xef\xf1\xe8\xa3\x90\x2f\x49\x67\x8f\x50\x35\x16\x1b\x87\x5b\x9b\xe5\x0a\x1e\x9d\x02\x61\x15\xe4\xc0\x45\xfb\xd1\x57\x2e\x4f\x56\x57\x8f\xf4\x2e\x7d\xf9\x7d\x53\x03\xc1\xd3\xe0\x72\xd6\xbb\x5e\x33\xc3\xc2\x65\xdb\x4f\x3f\x4a\x59\x3c\x55\x0b\x9d\xd6\x75\x03\x2b\xe0\x9e\xe3\xc1\xfa\xd2\xad\x74\xdb\xf1\x58\x85\x87\x2a\x58\xc5\x2c\x3c\x06\x21\x23\x32\x21\x4b\x16\x9e\xe0\x69\x58\x13\x5e\x99\x36\x02\x3f\xba\x3d\x8b\x74\xe2\xdf\xd7\x8a\xb8\x0c\xb7\x38\x90\x3e\x5d\xe3\x9e\x29\x30\xd2\xb0\x22\x5c\xc1\x2d\xd0\x18\x68\xba\x4c\xbd\xa7\x1e\xe0\x5a\xbb\xea\x82\x95\x66\x6b\x45\xcb\x98\xc1\xc6\x70\x75\x15\x53\x92\x42\xa7\x6b\x32\x0a\xb5\x2c\x55\x86\xc0\x85\x41\xb5\x61\x19\xf6\xaf\xeb\xec\xa7\xae\x85\xba\x84\xaa\x2d\xd9\x94\x02\x6e\xd1\xbc\x2a\x95\x42\x61\x22\x37\x98\xce\xbc\x5b\xbe\xac\xf0\x9f\x52\x5e\xac\x0c\xa6\xc0\x5d\xe8\x42\xa7\xd5\xde\xfd\xfb\x20\x50\x0d\x30\xdf\xcb\x32\xb5\x59\x7d\xd2\x90\x9b\x94\x11\xa2\xb4\x82\x50\xb8\xcf\xd5\x46\x87\x03\xfb\xa7\xd0\x94\x4a\x80\xe5\x62\x41\x31\x10\x21\x3c\x91\x5c\x10\xfa\x9b\x55\x0c\xe9\x1e\x86\xda\xda\xbe\xe1\x6c\x46\xb0\xd6\xcb\x13\xac\x83\xf6\x60\x88\x41\x2e\xb8\x81\xe9\x73\x69\x0b\x5e\x74\x88\xd6\xa4\xfb\x8d\xe2\xbd\x60\x7b\xbd\x95\xa6\xcf\x60\xed\xee\x3a\xcb\xf0\x90\x74\xe0\x6b\xa2\x5d\x2f\x19\xbd\xb5\x0d\xc6\xb5\xc6\x96\x90\x8d\x2f\x13\x12\xa1\xde\x84\x4b\xa6\x0c\x67\x85\xc7\x98\xfe\x06\xba\xfe\xf8\x13\x3e\xb4\x19\xac\x7d\x5c\x9b\x5e\xca\x57\x57\x95\x4e\x8d\xb1\x64\x1f\x02\xe2\x1f\x61\x1d\x13\x9d\x10\x3b\x45\x70\xfc\xbe\x2b\xa5\xe5\x99\x96\x9c\x64\x29\x81\xb5\x7c\x74\x9f\x8d\xf1\x12\x39\x56\x2c\xa3\xf5\xa9\xc1\xfd\xeb\x30\x15\x79\x59\x4c\x8a\xe2\xc2\xda\x6d\x62\xb6\xbd\x82\x6d\x58\xa1\x71\x74\x5b\x60\x0d\x8f\x4f\x93\xc4\xa6\xa9\x0d\xc8\x14\x32\x83\x67\xbb\xbd\x79\x08\x05\xfe\x81\xb0\xf2\x5a\xb0\xef\xbe\xac\x91\xa0\x45\x08\x57\xa8\x53\x4c\x93\x20\x6d\x0e\xf6\x2f\xde\xe1\x5e\xa1\x46\x61\x34\x70\xb1\x91\x6a\xc7\xaa\x14\xea\x46\x05\x2c\xe9\x78\xbd\xcf\x35\x74\xa5\xc1\x95\xfd\x17\x4a\x6d\xb7\xc3\xa6\x20\x6d\x54\x99\x19\x97\xaf\x9b\xdc\xe8\x87\x21\x90\x97\x36\x57\x79\x7c\x2e\xd8\x0d\x2f\xb8\x79\xb0\xf9\xab\x9a\x55\x58\x1d\x54\x6b\xe9\x44\x3b\x35\xe1\x44\x16\x78\xa4\x4d\xc8\xe6\xf7\xa0\x4b\x82\xb8\xa8\xea\xc3\x68\xbb\x26\x88\x2a\xa9\x61\xf8\xb6\x8b\x72\x5d\x44\xc7\x9c\x62\x03\xe9\xe3\x69\x1e\x81\xf5\x30\x42\x01\x0d\xf4\x70\xb4\x21\x07\x1c\xac\x43\x7e\x52\xd0\x80\x8b\x75\xc0\x52\x1f\x60\xc0\xc9\x3a\x61\x8e\x76\x80\xa8\x02\xf2\x06\x43\xd8\x67\x30\xc3\x72\x86\x39\x64\x20\x31\xb5\x9e\xcc\x50\x15\x80\x54\x83\x3e\x0a\x9d\xf4\xeb\xbd\x18\x51\x6f\x39\x40\x37\x34\xe8\x55\x8f\xbf\x8e\x60\xba\x6e\x7d\x15\x8f\x24\x17\x31\x29\x07\x13\x5b\x27\x4c\xe9\x29\xc5\xc0\x74\x22\x16\x6b\xde\xe1\x1f\x08\x01\xe6\x29\xa7\x70\x0c\xab\x74\xd2\x0b\xf9\x5d\x47\x7b\xd8\x0f\xec\xa5\x58\x77\xe5\x4a\x51\xfc\xcc\x65\xed\xe5\xa4\xa8\x46\x12\xaf\x3b\x2a\x18\x44\xa8\xc5\x5f\xa7\x2a\x39\xc2\x43\x7c\xc1\x44\x78\x08\x8b\x46\x12\xdd\x19\xc9\x72\x09\x17\xd5\xcc\x17\x3f\xc9\x97\xfc\xba\x83\xbe\x34\xd0\xc5\xf7\x62\xf9\x39\x2f\x99\xcb\x07\xb0\xaa\x91\xc0\x38\x79\x37\x2a\x18\x87\x4b\x47\x08\xfd\x72\x56\xd9\x36\xbf\xe2\x95\xb7\x5c\x9f\xf3\xdf\x7d\x37\xe7\x5d\x6a\x6c\xe2\x34\x28\xf3\x3c\x11\x6e\xde\x95\x82\x9c\x78\xd0\x9e\x42\xf0\xb1\x26\x77\x2a\x45\x6e\xb8\x5c\x37\x0c\x53\x40\x8e\xd7\xb5\xe7\x9a\x4a\x37\x15\xf3\xeb\x5a\x0a\x22\x77\x78\x61\xd6\x8d\x5c\x84\x28\x81\xd6\xd7\x41\xbf\xf5\x63\x21\xb3\xbb\xe9\x6c\x61\xf8\x0e\xb5\x61\xbb\x7d\x8f\x13\x7d\xd1\x3c\x7f\x7d\x76\xf9\xee\xec\xd5\xe9\xd5\xd9\xeb\xe6\xd1\xc5\x06\xe4\x8d\x61\x5c\xd8\x2a\x86\x15\x05\xa0\xeb\x4f\x75\x32\x6f\x04\xae\x01\xb5\x75\x38\xce\x8a\x39\xec\x0b\x64\x41\x01\x58\x6a\xac\x80\xdb\xaa\xf5\x27\x7c\xd0\xd5\xd9\xc6\x46\xaa\x33\x96\x6d\xdb\xc7\x56\xa9\x5b\x99\xdb\xca\x4b\x1b\x64\xf9\xc2\x51\xf9\x62\x99\x38\x23\x51\x0c\x4f\x67\x70\x7c\x15\x5c\xf9\x41\x50\x8c\x5b\x75\xb2\x2c\x93\xa5\x30\xbe\x16\x58\xdc\x48\xa5\xe4\xe1\xbb\xff\x0b\x06\x41\xbe\x9c\xfc\x7e\x6a\x95\xb0\x82\x65\x0d\xbb\xec\x14\xe4\xb3\xd6\xf6\x37\xed\x3a\x2f\xaa\x66\xae\x63\x94\x5d\x4e\xea\x8f\x2f\xe2\xce\xb1\xa5\x42\xd4\xdc\xfd\x6d\xb4\xc7\xa1\x5a\x86\xb8\xa9\x04\x2c\x34\x8e\x35\xe4\x41\xec\x8c\x2d\xaa\x97\xc4\x10\x7a\x6f\xd1\x4f\x6c\xae\xb5\x19\x5b\xf4\x7f\x70\xfb\xfb\x31\xad\xf9\xc3\x25\x16\x77\xf8\xa0\x87\x5a\x8a\xc4\xf2\xa6\xbf\x35\x65\xf6\xaa\x82\x98\xba\x85\x66\x69\x57\x17\x2d\x54\x13\xb2\x14\x3c\xfe\xec\x19\x62\xb9\x01\xc4\x60\x68\x9c\x91\xb6\xfc\x72\x58\x01\x1f\x28\x92\x1f\x8f\x62\xac\x41\xd4\xe7\x52\xd9\x4c\x3f\xad\x33\xfe\x45\x32\x26\x99\xa5\xe3\xca\x11\xbe\xfc\xc0\xf3\x43\x42\xf3\x38\xe6\x62\x2a\x1d\x8f\x4f\x26\xa7\x47\xb1\xd2\x29\x2b\x2e\xe3\x23\xd8\xa0\xd3\xa3\x0b\x88\x1f\xf6\x4c\xb1\x1d\x99\x3e\x56\x70\xb5\x45\x28\x05\xff\x4f\x89\x20\x6c\x61\xc6\xb4\xed\x09\xfd\xc1\x28\xd7\xd5\x51\x72\x8b\xda\xa1\xe9\x33\x8c\xa3\xd3\x54\xee\x1b\xa9\x9a\xc3\xdc\x90\xbd\x2d\x33\x70\xe0\x45\x01\x37\xe8\x1a\x47\xf2\x34\x2f\x24\x5f\x1f\x21\x9c\x36\xd9\xb5\x73\x46\x23\x0f\x02\x95\xee\xa0\xf9\x74\xb4\x82\x5f\xb7\xd2\x86\xfe\x1d\xbb\xf3\x8d\xae\x7b\x57\x8d\xaa\xa7\xf6\x3b\xab\x0b\x4c\x81\x98\x6b\x4b\xfd\x06\xe1\x1e\x95\xd5\x4e\x3e\x23\x1d\xb3\xa6\xfe\xf6\xfc\xca\xcb\xfb\x87\x17\x0e\x54\x9d\xe0\x27\xd0\x9d\x0c\xe1\x41\xeb\xb9\xe9\x3b\xdc\xb8\x3c\x7b\xea\x32\xc5\xd4\xbf\x9f\x2d\x32\xb6\x77\x7d\x3b\x47\x4d\x24\x8e\xce\x00\xf6\xfb\xb8\xfd\x0d\x12\x4c\xef\x19\x46\xd0\xbe\xbe\x7c\x09\x7b\x26\x78\x36\x3d\xb9\xf4\xa2\x34\x0a\xd6\x68\xa0\xdc\x03\x83\x9d\x23\x70\x32\x0b\x26\x01\x5a\xa3\x6a\x99\x6e\x85\x5a\xf4\x8e\x6a\x5f\xc0\x9a\x2e\x8d\x82\x13\xa8\x93\xb3\xdf\xf7\x98\x19\xcc\xdb\x5a\xdb\xdd\xb4\xc8\x25\x6a\x10\xd2\xc0\x8e\x99\x6c\x5b\x3f\xf4\xd6\xeb\xb9\x08\x19\x24\x8e\x1f\x60\x4d\x14\xdc\x7d\x26\xd1\xc7\x68\x63\x20\x3b\xc2\x2c\xea\x4f\xed\x09\xda\xc9\xc5\xdb\xdf\xde\x9d\xfd\x72\x71\xf6\xeb\xc9\x3c\xb0\xf6\x66\xaf\xe3\x44\xd0\x39\xca\x58\x93\x4f\xff\x01\x5f\x93\xe9\xa3\x81\xf8\x40\x60\x7d\xb4\x55\x69\xa7\xc3\x69\xa8\xe0\x8e\x8f\x9f\x8f\x12\x44\x7b\x0f\x16\x47\x36\xb9\xc3\xc8\x22\xd1\x5a\x17\xc0\x3d\x0f\x15\xd8\x85\x48\x15\x1a\x46\xe9\x98\xed\x4e\x90\xfe\x95\x9b\x6d\xae\xd8\x21\xec\xef\xc8\x53\xf0\x6e\xd8\xb2\x8a\x71\xe1\xf4\xe2\x35\xc8\x4d\x8b\xfd\x20\x4b\x38\x30\x61\xac\x0f\x1d\x6a\xea\x64\x80\xf2\x2f\xdf\x9e\x5f\x35\xe6\x48\x9d\x6f\x06\x91\x64\xaf\xba\x55\x11\x6d\x03\x2d\x99\x8f\xbe\x54\xb4\xd6\x28\xee\x59\xc1\xf3\x66\xb3\xe1\xe2\xf5\x49\xa7\x84\x8a\xc3\x55\xe5\x34\xa3\x2b\xbc\x20\x03\x5d\xd3\x6e\x04\xfb\x33\xf9\x1c\x12\x93\x90\xd8\x28\xe9\x2f\x8b\x8d\xd5\x86\xba\x83\xf8\x6e\x34\x8c\xcc\xaf\xfd\xf2\x9c\x3a\xb4\x31\x11\x57\x52\x0d\x9e\xf7\x0e\x56\x55\xa4\xc7\x1e\xb9\xb8\x53\x30\xe9\x4c\x14\x27\x23\xa5\x26\x69\xf5\x9f\xc0\x95\xeb\x3c\x60\x05\x1f\x1c\x33\x23\xad\x47\xb3\xec\x33\x7b\x90\x60\xb9\xb4\x17\xa9\xd5\x30\xdc\x8b\xb4\x2b\x3f\xa7\x29\x69\x0f\x58\x7a\x5d\xb3\x3a\x6c\xe9\x7d\x4b\x9d\xbe\xd4\x87\x2f\x03\x14\x29\x76\x5c\x04\x71\x2c\xb1\x3c\x3f\xbe\x45\x9a\x07\xa5\xf2\xf0\x21\xe1\x70\x28\xa6\xbb\x26\xeb\xef\x75\x2c\xb6\x89\xc3\x96\xec\x55\x31\xbf\x65\x1a\x58\xa1\x90\xe5\x0f\xfd\x77\x1e\xc3\x50\x1d\xef\x5a\x2b\xa1\xed\x44\x06\xa5\x24\x1f\x87\x42\xfb\x4f\xdd\x78\x31\x22\x57\x3b\xc3\x8a\xeb\x0a\xea\x46\x26\xf4\xdf\xf0\x23\x63\x60\x07\x31\x9a\xa6\x37\xf7\x58\xc3\xe7\x34\x46\x3b\x68\x4f\x90\x92\x7b\x81\xd0\xde\x0d\x0c\xc0\xeb\x27\x31\x58\x74\x55\x30\xa0\x1c\x0e\xac\xc3\x33\xa1\xbe\x73\xa8\x7e\xe4\xfd\xf1\xc7\x53\xc3\x24\x5a\xd0\x98\x50\x7c\x15\x91\xa2\xe1\x00\x16\x22\x51\x6e\x74\x4f\x71\x00\x33\x80\x8b\x09\xc4\x77\x19\x07\x28\x04\x80\x8b\x52\xb5\xf7\x18\x46\xfd\xdf\x5d\xa3\x3b\x3e\x04\xc0\x9f\x1c\x03\xd2\x7a\x8c\xbc\x1c\x4e\x55\x66\xcb\x65\x7d\x81\xce\xae\x7c\xcf\x65\xa9\x9b\x1b\xe4\x2e\xef\x0f\xe4\xf8\x3f\x32\x34\x04\xfc\xb0\x3c\x6f\x6e\xfc\x0e\xf1\xf2\xbf\x19\xa3\x82\x43\xc4\xe0\xbd\x77\x74\x2a\x96\x25\x77\x95\xe1\x73\x34\x6b\xfe\x3e\x47\xb3\x3f\x3d\x9a\x45\x3e\x7d\xd4\xcc\xf7\xaf\x0f\x57\x91\x7b\xd5\x37\x7e\x6b\x17\xfb\x33\xe2\xd2\xb8\x10\x2f\x66\xf4\xc8\xdd\x31\x32\xbd\xc3\x07\x7a\x99\x19\x15\x01\x46\xee\xbd\xd3\x6d\x5c\xe3\x7e\x81\x3a\xba\xf7\x88\xae\xb6\x5c\x37\xe5\x3a\x70\xd7\xd4\xed\x15\x6e\x50\x29\xcc\xe7\xd5\x39\xd7\x81\x69\x28\x35\xe6\x4d\x83\xb7\x91\x45\x21\x0f\x36\x6d\x71\xad\x4b\x5c\x79\x62\x5b\x63\xf6\x7a\xb5\x5c\xde\x72\xb3\x2d\x6f\x16\x99\xdc\x2d\xa5\xd8\x14\xf2\xb0\xcc\x58\x8e\x22\xc3\x65\x05\xaf\x97\xff\xfc\xf6\x9b\x7f\x79\xa4\x8b\x0d\xb0\x26\xc2\xfc\xbf\x76\xc1\xbc\x62\x04\x0a\x29\x6c\x85\xae\x50\xcb\xe2\x9e\xdd\x14\x08\xd5\xef\x85\x2a\x52\x15\x67\x99\x62\x7a\xdb\xfc\x4c\x61\xb9\x74\x53\xe9\x46\x9c\x8c\x09\xb8\x41\xc7\xbb\x91\x3e\x8d\x71\x93\x0c\x5b\x16\xcf\x30\xfd\x6b\xa1\xd9\x06\xc9\x9d\x48\x7e\x80\x40\x9d\x39\x3c\x86\x99\xcc\xed\x6b\x34\xb5\x26\xf2\xd8\x27\x98\x4e\x4c\x9b\x48\x90\x7c\x03\xd3\x23\x8f\x36\x5e\x54\xbd\xe0\xa2\x40\x71\x6b\xb6\xb6\x9d\xf8\x7a\xe8\xe2\xa2\x27\x14\x71\x9b\x10\x9d\x0d\x9f\xbb\x1d\xcd\xd9\xb8\x4a\xda\x10\x31\x12\xe5\xa2\x9a\x8d\x98\x4e\xb4\x3f\x6e\xf0\xcf\xde\x50\xb3\x7b\x8f\x39\xda\xe7\x46\x03\xb3\x75\x42\x74\x68\x58\x4a\xfe\xf4\xa2\xfd\xd2\x3b\x25\xed\xae\x31\x36\xff\x49\xe0\x93\xb9\x69\x02\x91\x0e\x4e\x13\x90\x78\x72\x7a\x6c\xde\x39\x76\x5c\x49\xcf\x14\x5a\x3b\xe9\x0c\x99\x06\xb4\x4c\xfe\xfe\x63\x78\x40\xe5\xe3\x58\x77\x0a\x30\x9a\x70\x9e\xdd\x06\xf0\x0d\xed\x24\xdd\x52\x6b\xc1\xd3\xbc\x9a\x9e\xe0\x9b\x1a\x3d\x3d\x86\xec\x0c\x63\x8f\x5a\x27\x3e\xfc\xaf\x87\x94\xcf\xa7\x32\x38\xcf\x08\xcf\x40\x3e\x65\xb0\x11\xdf\x1f\xf0\xf2\xf7\x96\xf1\x46\x95\xfd\x97\x82\x8f\x53\xfe\xba\x59\x65\x38\xf6\x8d\xee\x47\x70\xf1\xf8\xef\xe4\x7d\xd4\xfc\x9f\x57\x72\x1d\xe7\x01\xee\x7e\x62\x72\xce\x89\xf7\x6f\xda\xab\x4d\x47\xd4\x66\x09\x7a\x7a\x6f\xa0\xcf\xf0\xc3\xc5\x86\x8d\x9f\xa6\x1b\x87\xa2\xe1\x9c\xc5\x37\x7d\x44\xda\x64\xfc\xd5\x73\x73\xf1\x88\x00\x9f\x92\x99\xc7\x74\x52\xa5\x37\x4a\x0e\xaa\x80\xaf\xc7\xb0\x49\x63\x1c\x80\x25\x37\xfa\x2b\xae\xfa\x7f\x7d\x07\xeb\xf6\xaa\x93\xd8\x74\x47\xe4\xe1\x8f\xb3\xfa\x88\x5d\x86\xb7\xa6\x97\xae\x19\x1c\x20\x15\xd3\x4a\x0e\x59\xbf\x22\xb3\x55\xec\xda\x94\xa2\x1d\xc4\x70\xaa\x6b\xa9\x3c\x4d\x26\x4f\x93\xff\x06\x00\x00\xff\xff\xb2\x69\x56\x7c\xd6\x40\x00\x00" func contractsThirdpartyNft_catalogNftcatalogCdcBytes() ([]byte, error) { return bindataRead( @@ -300,11 +404,11 @@ func contractsThirdpartyNft_catalogNftcatalogCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/thirdparty/nft_catalog/NFTCatalog.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7a, 0xd3, 0x50, 0x32, 0xeb, 0x5c, 0x2f, 0x11, 0xfa, 0x15, 0x9b, 0x5c, 0x6a, 0x5c, 0x9, 0x67, 0x65, 0xb1, 0x49, 0x60, 0xd9, 0xc1, 0xbb, 0x41, 0xa3, 0xab, 0xdb, 0xc8, 0x36, 0x4c, 0x89, 0x6f}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x44, 0x18, 0x1b, 0xa6, 0x69, 0x52, 0x97, 0x5b, 0xa9, 0x45, 0x62, 0xbf, 0xcc, 0x93, 0x92, 0xf7, 0xca, 0x66, 0x44, 0xa4, 0xf, 0x31, 0x6d, 0xd1, 0xc7, 0x4c, 0x69, 0xea, 0xb7, 0x96, 0x87}} return a, nil } -var _contractsThirdpartyNft_catalogNftretrievalCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x59\x4d\x6f\xdb\x38\x13\xbe\xfb\x57\x4c\x7c\x78\x5f\x19\xdb\x95\x5b\x60\xb1\x07\xa3\x4a\x91\x3a\xc9\x22\x40\x9b\x02\x49\x5a\x60\x11\xf4\xc0\x88\x23\x9b\x28\x4d\x09\x24\xe5\xd4\x30\xfc\xdf\x17\xd4\x27\x29\x4a\x69\x93\xa6\x9b\x76\x6b\x5f\xa2\x90\xf3\x0c\x67\x86\x33\x0f\xbf\xd8\x2a\x4b\xa5\x86\xb7\xa8\x09\x25\x9a\x7c\x60\x78\xab\x20\x91\xe9\x0a\xc6\x61\x38\x0d\xc3\xa9\xd2\x44\x50\x22\xe9\xd4\x11\x09\x63\x1a\x8f\x47\x15\xf8\xfc\xf4\x6a\x4e\x34\xe1\xe9\xa2\x46\x4e\xdb\xa6\x52\x72\x34\x9d\x1a\xb1\x0b\xd4\x92\xe1\x9a\xf0\xd1\x74\x6a\x9a\x8e\x60\x89\x3c\x43\x09\x71\x2a\xb4\x24\xb1\x06\x9d\xc2\x02\x0b\x95\xff\x57\xc0\x04\x10\xc8\x15\x4a\x05\x24\x8e\xd3\x5c\x68\x03\xe2\xb8\x46\x49\x16\x4c\x2c\x40\x2f\xd1\x1e\xfd\x72\x45\xa4\x86\x79\xa5\x6b\x34\xca\xf2\x9b\x56\xb3\x3d\x3c\x6c\x47\x23\x00\x00\x23\x90\xe4\xc2\x0c\x79\x81\x71\xba\x5a\xa1\xa0\x48\x0b\x0f\xaf\x36\x19\xaa\x60\x8d\x52\xb1\x54\xcc\xe0\x52\x4b\x26\x16\x13\x98\xc1\xb5\xe9\xf9\x08\xdb\x42\x81\xf9\xa9\x5b\xa6\xe3\x25\x54\xa2\x56\x87\xf9\xc5\x44\x21\x8c\xd7\x2f\xc6\x33\xa7\xd9\xfc\x24\xea\x5c\x0a\xb8\xf6\x3a\xea\x9f\x19\xe8\xa5\x1b\xf6\x63\xa6\x32\x4e\x36\x87\xc1\xe4\xd9\x7d\x60\x27\x9f\x35\x4a\x41\xf8\xfb\x8b\x37\xf7\x85\x9a\xf0\xa6\x9c\x63\xac\x59\x2a\x8e\x89\x26\xdf\xa6\xe0\x61\xf6\x5f\xa4\x1b\xc2\x35\x43\x75\x18\x4c\x3c\xdc\x47\xa7\x85\x62\x42\x72\xae\xfd\x70\x67\x44\xb0\x38\x18\x7f\xa8\xa6\x49\xa4\x1a\x54\x9e\x99\x04\x46\x3a\x6e\xb5\xee\x9a\xaf\x7a\x7e\x4a\xfd\x3b\x2f\x63\xce\x4f\xaf\xce\x8e\xd5\xa9\x4c\x57\x73\x92\x05\x71\xe3\xe3\x19\x45\xa1\x59\xc2\x50\xd6\x69\xf3\x0c\xda\xde\x39\xc9\x60\x06\x73\x92\x91\x1b\xc6\x99\xde\xbc\xfc\xdf\x91\xd8\x5c\xa0\x4a\x73\x19\xe3\xb6\xe3\x36\xaa\x94\xaf\x51\xb6\xf1\xdb\x1d\x16\x29\xf8\xfe\x4c\xe8\x3f\xff\xb0\x93\x30\x93\xd8\xc9\x3c\xab\x04\x17\xa8\xab\xcf\x13\xa1\xe5\x66\xc0\xd6\xbe\xd6\x09\x1c\x44\x20\x18\x87\x19\x8c\xcf\xc4\x9a\x70\x46\x2d\x39\x60\x8d\xe0\xb8\x27\x80\x1c\x35\xac\x09\xcf\x11\xa2\x47\xb2\xe6\x60\xd4\x28\x9f\x4e\x61\xbe\xc4\xf8\x13\xb0\x04\x6e\x11\x96\x64\x8d\xb0\xca\xb9\x66\x19\x47\x0b\xac\x20\x49\x65\xcd\x13\xa0\x37\x19\x86\x61\xe8\x58\xb8\x24\xea\x6d\x85\x9b\x5b\xb0\x08\x14\xf2\x24\xec\xef\x0d\x44\xa2\x4d\x9a\xb6\xa6\xc1\xac\x74\x35\xac\x7a\xc2\x36\x34\x93\xd6\x68\x96\xb8\x99\x10\xc6\xc6\x85\x60\xd2\x99\x3a\x63\x56\x2b\x77\x81\x09\x44\x1d\xdc\x4d\x2a\x65\x7a\x1b\x4c\x0e\x1c\x1c\x4b\xe0\x60\xc0\x9d\xed\x10\xfd\x38\xe3\x98\xb9\x39\x3b\x56\x9d\x22\xdb\x39\xff\xad\x89\x04\x46\x95\x9d\x86\x91\x29\x12\x47\xc8\x04\x9d\x51\x43\xe0\xfd\xfa\x7b\xec\x31\x4e\x8b\x44\xd7\x39\xef\xb8\x6c\xa0\xa5\xcb\xa6\x30\x6a\x91\x80\xd1\x19\x30\xea\x33\x42\xa5\xaa\x5c\xcc\x22\x77\x71\x0b\xcb\xca\x35\xdf\x15\xfe\x19\xac\x2d\xa5\x33\xdb\x08\x5f\x35\x4b\x1a\xcd\x21\x2d\xc9\xec\x20\x14\x64\x85\x10\x45\x55\x06\xc4\x5d\xb6\x2b\xfb\x7d\x8f\x0b\x7d\x54\x85\x24\xcb\x50\xd0\xa0\xcf\x93\xdd\x1d\x13\x51\x4d\x20\xa3\xca\xaa\xbd\xfb\xb0\xd7\xdc\xac\xa8\x4f\xc1\x5f\x65\xde\xfc\x82\xec\x55\xeb\xde\x93\xd7\xe3\x90\x57\x99\x48\x41\x3f\xc7\x84\x1c\xc5\x42\x2f\xbf\xc4\x65\xc5\xbe\xb2\x4d\xca\x08\x9e\xef\x99\xec\x21\x4c\x56\xc6\x31\xaa\xfe\xfe\x06\x2f\x1e\x42\x66\xe5\x26\xdf\x17\xa9\xba\x9f\x0f\x90\xd9\x11\xe7\x4e\x68\x9e\x82\xd4\xb6\xa5\xda\x19\x1c\x89\xcd\xa5\x96\x79\xac\x77\x3f\x01\xc3\x31\x8d\x2b\x35\x60\x7d\x04\xdb\xfd\x66\xee\xc9\xf8\xf0\xe9\x89\xa7\x39\x1e\x9d\x97\x3c\x51\x1c\x89\x21\xb2\x87\x30\xd6\x14\x65\xd1\x73\x2e\x33\x0e\x34\x2a\x6a\xbc\xf1\xa7\x5f\xef\xc0\xfe\x28\x29\x33\x8f\xe1\x6d\x67\x64\x59\x7e\x14\xf4\xe7\x0d\xd3\x17\x1d\x4b\xe5\xd7\x2f\x34\x0e\xd0\xd4\x4a\xc8\x84\x42\xa9\x83\x4f\xb8\x81\x99\xef\x9f\x95\x2a\x25\x1b\xfb\x71\xa9\x7f\x3b\x40\xae\xd0\x98\xe3\xd1\x7a\x45\xb7\x81\x4d\xe0\xdf\x44\xce\xdf\xcb\x85\xde\x1e\xbf\x75\x88\xf9\x3d\x82\x2f\xec\x1b\xde\xb1\x3e\x19\xb9\x5f\x7b\x77\x1a\xe6\xe3\x67\x38\x80\xd7\x04\x3f\xe4\x41\x54\x1f\x11\x60\x4f\xf2\xbf\x22\xc9\x7f\xbf\xdd\xe5\xfd\x48\xb6\x64\xa6\xea\x28\x5c\x1b\xd5\x73\x20\x6e\x48\xf3\x71\x8f\xe1\x5f\x39\xfa\x68\x90\xc8\x1e\xca\x64\x66\x9a\xfb\x2a\x07\x5a\x2a\x63\x54\xb5\x97\x2d\x3f\x02\xb3\xed\xa9\xed\xbf\x40\x6d\xff\x1e\xb7\x31\xda\x57\xf5\x86\x22\x06\x4e\xee\x71\x2a\x34\x61\x42\x05\x8c\x0e\xed\xe4\x8c\x08\x13\x39\x7e\x61\xaf\x01\x7b\xc6\xfc\x61\x19\xf3\x8b\x94\x49\xe2\x18\x95\xa1\xc7\xf2\x09\x6f\x52\xf0\xe7\x3d\x8a\xa0\x7a\xb4\x9b\xc1\xeb\x34\xe5\x96\x1f\x66\x16\x4d\xf5\xb9\x25\xd6\x61\x85\xb6\xef\x34\x95\x46\xb5\x3f\x44\x31\xa3\x6e\x93\x55\x03\x6b\x22\x41\xe4\xab\x1b\x94\xef\x12\x77\xa4\xf6\x86\xa9\xac\x91\xc6\x64\x26\xba\x76\x85\x9f\x70\xd3\x4d\x00\x63\x3e\x7e\x66\x4a\xa3\x88\x0d\x9d\x75\x20\xd7\xad\xc2\x8f\xde\x15\x5b\x8b\xf3\xa7\xb5\xdf\xd8\xbe\xd6\xee\xed\xce\xae\x3b\x4c\x1f\xe8\x10\x5e\x0c\xdf\xe4\x69\xd9\x29\xe5\x3b\x0e\x09\x09\xe1\x0a\xeb\x3c\x29\x33\x65\x3a\x7d\x73\xf2\xd7\xd1\xfc\x6f\xf8\x1d\x8e\xdf\xc1\xf9\xbb\x2b\x78\x7f\x79\xd2\x2c\xbb\xaa\xb8\xd0\x80\xd7\x44\x61\xbd\xf4\x7e\xb0\x6d\x31\x32\xc5\x82\x42\xeb\x6b\x40\xaf\xab\x2a\x99\x19\xf4\xbe\xc7\xbe\xf2\xe4\xb1\x7d\x71\xed\x62\xac\xc7\x58\x1f\x17\x3b\x6f\xad\x5d\xa8\xf7\x18\x7b\xa7\x82\x7e\x93\xfb\xde\x63\x7d\x35\xb2\x7e\x71\xed\xc2\x9b\xa7\xd8\x57\xd6\x26\x59\x30\x1d\xb8\x29\x40\x9b\x1b\x55\xf7\xa1\xb7\x8a\x23\x0c\x05\xd2\x95\xb6\xa2\xe8\x21\xec\x30\xba\x28\x37\x86\x1e\xd0\x0f\xe2\x20\x7c\xc0\xd8\xde\x10\xba\x4a\x9a\xf8\x79\x60\x2b\x80\xb5\x70\x77\x8d\x2b\x16\x7b\x46\x21\x02\x46\xfd\x8e\x3a\x84\x51\x1d\x4c\x5f\xc4\x8e\x5b\x64\x47\xd1\x17\xed\x04\x2b\xea\x44\xef\x4e\x40\x63\x88\xd7\xe6\xc3\xda\x80\x44\x6d\x70\x3a\x35\x5e\xd1\x7e\x91\x4e\x13\xd8\xee\x46\xa3\xdd\xe8\x9f\x00\x00\x00\xff\xff\x07\xcd\xa5\x04\xa1\x22\x00\x00" +var _contractsThirdpartyNft_catalogNftretrievalCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x59\x5f\x6f\xdb\x36\x10\x7f\xd7\xa7\x38\xfb\x61\x93\xb1\x4e\x6e\x81\x61\x0f\x46\x95\x22\x75\x92\x21\x40\x9b\x02\x49\x5a\x60\x08\xf2\xc0\x8a\x27\x9b\x28\x4d\x09\x24\xed\xd4\x30\xfc\xdd\x07\xea\x2f\x29\x4a\x4d\xd2\x66\xe9\xda\x45\x0f\xad\x43\xde\xef\x78\x77\xbc\xfb\xf1\x1f\x5b\xe5\x99\xd4\xf0\x16\x35\xa1\x44\x93\x0f\x0c\x6f\x14\xa4\x32\x5b\xc1\x38\x8a\xa6\x51\x34\x55\x9a\x08\x4a\x24\x9d\x3a\x22\x51\x42\x93\x71\x50\x81\xcf\x4e\x2e\xe7\x44\x13\x9e\x2d\x6a\xe4\xb4\x6d\x72\x24\x0d\xf6\x1c\x55\xc6\x37\x28\xfb\x47\xb1\x25\x4a\x68\x30\x9d\x9a\x11\xce\x51\x4b\x86\x1b\xc2\x83\xe9\xd4\x34\x1d\xc2\x12\x79\x8e\x12\x92\x4c\x68\x49\x12\x0d\x3a\x83\x05\x16\xd6\xfc\xaa\x80\x09\x20\xb0\x56\x28\x15\x90\x24\xc9\xd6\x42\x1b\x10\xc7\x0d\x4a\xb2\x60\x62\x01\x7a\x89\xb6\xe1\x17\x2b\x22\x35\xcc\x2b\x5d\x41\x40\x92\x04\x95\x0a\x09\xe7\x93\x76\x04\xdb\x0c\xd8\x05\x01\x00\x80\x2d\xb8\x61\x78\x03\xe9\x5a\x18\x3b\xce\x31\xc9\x56\x2b\x14\x14\x69\x11\xb1\xcb\x6d\x8e\x2a\xdc\xa0\x54\x2c\x13\x33\xb8\xd0\x92\x89\xc5\x04\x66\x70\x65\x7a\xae\x61\x57\x68\x33\x9f\xba\x61\x3a\x59\x42\x25\x6a\x75\x98\x2f\x21\x0a\x61\xbc\x79\x31\x9e\x39\xcd\xe6\x93\xa8\xd7\x52\xc0\x95\xd7\x51\x7f\x66\xa0\x97\xee\x34\x1e\x31\x95\x73\xb2\x3d\x08\x27\xcf\xee\x03\x3b\xfe\xac\x51\x0a\xc2\xdf\x9f\xbf\xb9\x2f\xd4\xc4\x3c\xe3\x1c\x13\xcd\x32\x71\x44\x34\xf9\x36\x05\x5f\x67\xff\x79\xb6\x25\x5c\x33\x54\x07\xe1\xc4\xc3\x5d\x3b\x2d\x14\x53\xb2\xe6\xda\x0f\x77\x4e\x04\x4b\xc2\xf1\x87\x6a\x9a\x44\xa6\x41\xad\x73\x93\xe6\x48\xc7\xad\xd6\x7d\x50\xfe\xeb\x25\x4b\x95\x27\x67\x27\x97\xa7\x47\xea\x44\x66\xab\x39\xc9\xc3\xa4\xf1\xec\x94\xa2\xd0\x2c\x65\x28\xeb\x64\x79\x06\x6d\xef\x9c\xe4\x30\x83\x39\xc9\xc9\x47\xc6\x99\xde\xbe\xfc\x65\xe7\x54\x4e\xfd\xa3\x8d\xd4\xfe\xa0\x48\xb6\xf7\xa7\x42\xff\xf9\x87\x9d\x6e\xb9\xc4\x4e\x8e\x59\xc5\xbb\x40\x5d\xfd\x3c\x16\x5a\x6e\x07\xec\xeb\x6b\x9d\xc0\x28\x06\xc1\x38\xcc\x60\x7c\x2a\x36\x84\x33\x6a\xc9\x01\x6b\x04\xc7\x9d\x50\x99\x8f\xa3\x86\x0d\xe1\x6b\x84\xf8\x81\xac\x19\x05\x8d\xf2\xe9\x14\xe6\x4b\x4c\x3e\x01\x4b\xe1\x06\x61\x49\x36\x08\xab\x35\xd7\x2c\xe7\x68\x81\x15\xa4\x99\xac\x69\x02\xf4\x36\xc7\x28\x8a\x1c\x0b\x97\x44\xbd\xad\x70\x73\x0b\x16\x83\x42\x9e\x46\xfd\xbd\xa1\x48\xb5\x49\xc8\xd6\x34\x98\x95\xae\x46\x55\x4f\xd4\x86\x66\xd2\x1a\xcd\x52\x77\xf6\xa3\xc4\xb8\x10\x4e\x3a\x53\x67\xcc\x6a\xe5\xce\x31\x85\xb8\x83\xfb\x98\x49\x99\xdd\x84\x93\x91\x83\x63\x29\x8c\x06\xdc\xd9\x0d\x11\x8d\x33\x8e\x99\x9b\xd3\x23\xd5\x29\xa7\xbd\xf3\xd7\x86\x48\x60\x54\xd9\x69\x18\xc3\xd5\x75\xe0\x08\x99\xa0\x33\x6a\xf8\xbb\x5f\x7f\x8f\x3d\xc6\x69\x91\xea\x66\x61\x89\x3b\xd0\xd2\x65\xbb\x3e\x42\x46\x67\xc0\xa8\x5f\xfb\x95\xaa\x72\x19\x8c\xdd\x65\x31\x2a\xab\xd5\xfc\xae\xf0\xcf\x0a\xc6\xaf\x95\xce\x6c\x23\x46\xbe\x6e\x96\x36\xaa\x23\x5a\xf2\xd6\x28\x12\x64\x85\x10\xc7\x55\x0a\x24\x5d\x62\x2b\xfb\x7d\x97\x0b\x7d\x54\x45\x24\xcf\x51\xd0\xb0\xcf\x95\xfd\x17\x66\xa2\x9a\x41\x46\x95\x55\x7c\x41\xa7\xf7\xea\xfa\x76\xea\x9a\x9b\x95\xf5\xb1\xc8\xab\x4c\x9a\xff\x21\x75\xd5\xba\x9f\x98\xeb\x61\x98\xab\x4c\xa4\xb0\x9f\x60\x22\x8e\x62\xa1\x97\xb7\x11\x59\xb1\xa7\x6c\x93\x32\x86\xe7\x4f\x34\xf6\x55\x34\x56\x06\x32\xae\xfe\xff\x0d\x5e\x7c\x0d\x93\x95\x3b\x7c\x5f\xa4\xea\x7e\x7e\x0b\x93\x1d\x72\xee\xc4\xe8\xb1\x18\x6d\x57\xaa\x9a\xc1\xa1\xd8\x5e\x68\xb9\x4e\xf4\xfe\x07\xa0\x37\xa6\x71\xa5\x06\xac\x8f\x61\xf7\xb4\x8d\xfb\x6e\x64\xf8\xa8\xac\x33\xea\xd5\xd5\x9c\x81\xce\x4a\x92\x28\xce\xbd\x10\xdb\x63\x18\x73\x8a\x32\xeb\x39\x7c\x19\x0f\x1a\x15\x35\xde\x38\xd4\xaf\x77\x60\x67\x94\x96\xa9\x67\x8e\xe3\xee\xc8\xb2\xfc\x51\x90\x9f\x37\x4c\x5f\x78\x2c\x95\x77\x5f\x66\x1c\xa0\x29\x96\x88\x09\x85\x52\x87\x9f\x70\x0b\x33\xdf\x3f\x2b\x57\x4a\x2e\xf6\xe3\x52\x7f\x7b\x40\xae\xd0\x98\xe3\x91\x7a\xc5\xb5\xa1\xe5\xef\xe4\x9b\x98\xf9\xdf\x72\xa1\xb7\xc7\x6f\x1d\xa2\x7d\x8f\xdd\x0b\xfb\x6e\xdf\xab\x3e\x2a\xb3\x5f\x79\x97\x16\xe6\xc7\x8f\x70\xee\xae\xd9\x7d\xc8\x83\xb8\x3e\x18\xc0\x13\xc3\xff\xe4\x0c\xff\xd8\xfb\xca\xfb\x31\x6c\x49\x4b\xd5\x09\xb8\xb6\xaa\xe7\x1c\xdc\x30\xe6\xc3\x9e\xbe\xef\x38\x7a\x30\xc8\x62\xdf\x4a\x63\x66\xbe\xfb\x4a\x08\x5a\x1e\x63\x54\xb5\x97\x2d\xdf\x8b\xd6\x9e\x78\xed\x67\xe0\xb5\xc7\x23\x36\x46\xfb\x2a\xde\xd0\xc3\xc0\x81\x3d\xc9\x84\x26\x4c\xa8\x90\xd1\xa1\x2d\x9c\x11\x61\x62\x8d\xb7\x6c\x32\xe0\x89\x2e\xff\xbb\x74\x79\x57\xbe\xac\x9f\xeb\xac\xf7\xb8\x7b\x94\x42\xf5\x30\x37\x83\xd7\x59\xc6\x2d\x67\xcc\x5c\x9a\x1a\x74\x0b\xad\xc3\x0d\x6d\xdf\x49\x26\x8d\x6a\x7f\x88\x62\x5e\xdd\x26\xab\x12\x36\x44\x82\x58\xaf\x3e\xa2\x7c\x97\xba\x23\xb5\xd7\x4b\x65\xa5\x34\x26\x33\xd1\xb5\x2b\xfa\x84\xdb\x6e\x16\x18\xf3\xf1\x33\x53\x1a\x45\x62\x48\xad\x03\xb9\x6a\x15\x5e\x7b\xf7\x6b\x2d\xce\x9f\xdb\x7e\x63\xfb\x5a\xbb\x37\x3b\xfb\xee\x30\x7d\xa0\x03\x78\x31\x7c\x8d\xa7\x65\xa7\xa0\xbf\x70\x46\x48\x09\x57\x58\x27\x4b\x99\x2e\xd3\xe9\x9b\xe3\xbf\x0e\xe7\x7f\xc3\xef\x70\xf4\x0e\xce\xde\x5d\xc2\xfb\x8b\x63\x6f\xe1\x55\xc5\xc5\x06\xbc\x26\x0a\xeb\xc5\xf7\x83\x6d\x93\x2d\x5b\x2c\x33\xb4\xbe\x13\x1c\x14\xa9\xea\x69\x06\xbd\x6f\xb1\xaf\x06\x71\xd8\xbe\xba\x76\xb1\xd6\x83\xec\x30\x3e\x71\xde\x5d\xbb\x2a\xbc\x87\xd9\x3b\x29\xea\x77\xa5\xef\x8d\x76\x58\x9d\xac\x5f\x63\xbb\x6a\x9a\x67\xda\x57\xd6\xfe\x5a\x30\x1d\xba\xa9\x43\x9b\x6b\x58\xf7\x11\xb8\x8a\x33\x0c\x05\xda\x95\xb6\xa2\xeb\x21\xec\xf0\xba\x28\x37\xa6\x1e\xd0\x0f\xea\x20\x7c\xc0\xd8\xde\x50\xba\x4a\x9a\xf8\x79\x60\x2b\x80\xb5\x70\x77\x85\x2c\xb6\x0a\x8c\x42\x0c\x8c\xfa\x1d\x75\x08\xe3\x3a\x98\xbe\x88\x1d\xb7\xd8\x8e\xa2\x2f\xda\x09\x56\xdc\x89\xde\x17\x01\x8d\x21\x5e\x9b\x0f\x6b\x03\x12\xb7\xc1\xe9\x70\x43\xb5\x66\x14\xe9\x34\x81\xdd\x3e\x08\xf6\xc1\x3f\x01\x00\x00\xff\xff\x7f\xa0\x7b\xf7\x0d\x23\x00\x00" func contractsThirdpartyNft_catalogNftretrievalCdcBytes() ([]byte, error) { return bindataRead( @@ -320,11 +424,11 @@ func contractsThirdpartyNft_catalogNftretrievalCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/thirdparty/nft_catalog/NFTRetrieval.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0xc5, 0xe3, 0xf7, 0xeb, 0x89, 0xa1, 0xd8, 0xcd, 0x9f, 0x4b, 0x4b, 0x82, 0xe9, 0x73, 0x63, 0xa8, 0xa1, 0xd6, 0xd1, 0x54, 0x8e, 0x90, 0xab, 0x1, 0xf3, 0x7, 0xdd, 0xa4, 0xd8, 0x6d, 0x1e}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0xee, 0xb0, 0x47, 0x7a, 0x93, 0x17, 0xde, 0x5c, 0x42, 0xca, 0xad, 0x4e, 0x16, 0xa7, 0x8b, 0xc5, 0xe6, 0x34, 0x70, 0xb2, 0xaa, 0x7d, 0xe7, 0x58, 0x7c, 0x2e, 0xed, 0xb1, 0xe8, 0x33, 0x77}} return a, nil } -var _contractsThirdpartyVersusArtCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x6f\x6f\x1b\x37\x93\x7f\x2d\x7d\x8a\xb1\x5e\x04\x12\x4e\x8f\x36\xed\x25\xed\x55\xc8\xc6\x11\xe2\x18\x27\x3c\xcf\xe3\x06\x89\xda\xbe\x08\x82\x94\xda\x1d\x59\xac\x57\xa4\x8e\xe4\x5a\xd1\x19\xfe\xee\x07\xfe\x5d\x72\xb5\x92\xed\xb6\x28\xee\x0e\xcf\x9b\x58\x4b\x0e\xc9\xe1\x70\xe6\x37\xc3\x19\x86\x6e\xb6\x5c\x28\xb8\xe2\xec\xb2\x66\xd7\x74\x59\xe1\x82\xdf\x20\x83\x95\xe0\x1b\x18\x4c\x26\xd9\x64\x92\x49\x45\x58\x49\x44\x99\xb5\xa9\x26\x45\x59\x0c\xfa\x6e\x8a\x47\x8c\x3f\x3e\xf8\x9f\xa8\x48\x49\x14\xf9\x99\xe2\x4e\x76\x0f\x4e\x48\x92\xc1\x6f\x39\x53\xc8\x94\x1f\x96\xb9\x6f\x4b\xd3\xcf\xb2\x0c\x66\x70\x75\xb9\x80\x82\x33\x25\x48\xa1\x40\x71\x90\x8a\x0b\x04\x22\x54\x7f\x5b\x2f\x9b\x9e\x99\x50\xd3\x43\x61\xdc\xf5\xfb\x3d\x4d\x56\xa1\x5e\xac\xaa\xb0\x50\x94\xb3\x8f\x8a\x0b\x72\x8d\xef\x89\x5a\x4f\x21\xfa\xe8\xa2\x7d\x5f\x2f\x2b\x5a\x58\xd2\xe6\xb7\x9b\xf6\x96\x08\x50\x5c\x91\xea\x63\xbd\xdd\x56\xfb\x29\xfc\x34\x67\xea\xbb\x17\xae\x17\x6f\xf5\xde\xde\x3a\x0e\xe7\x8c\x2a\x4a\x2a\xfa\xdf\x58\x0e\x47\x31\xc1\x2f\x54\xad\x4b\x41\x76\x43\x5a\xfa\x09\xc6\x46\x22\x53\x98\x95\xa5\x40\x29\xcf\x13\xfa\x0b\xdc\x72\x49\x55\x42\xae\xf8\x11\xe2\xb7\x02\x89\xc2\x32\x21\xde\xb8\xf3\x98\x86\xc3\x4b\x86\xbc\x2b\xa9\xde\x78\x6b\x90\x65\xc8\x7f\xa1\xa5\x89\xe6\x24\x5f\xdf\xa5\x6d\xa3\x7e\xbf\x97\x65\x8b\x35\xc2\xd6\x88\x0d\x28\x53\x28\x56\xa4\x40\x28\x08\x03\xb9\xe6\xbb\xc0\x09\x10\x56\x82\x5a\xa3\x39\x4e\xa3\x10\x5c\x98\xef\x99\x50\xb0\xa5\x58\xa0\x65\x50\xa0\xe4\xb5\x28\x30\x9a\xcb\x9e\x09\xdc\xf5\x7b\xe1\xf0\x1a\xb6\xa3\xc6\xc3\x4d\xf7\xfb\xbd\x5e\x96\xa9\x35\x4a\x04\xb5\x16\xa8\x95\x0a\x81\x94\x25\x96\xb0\xc4\x82\xd4\x12\x61\x0e\x6a\x4d\xd9\x8d\xe6\x65\x0f\x3b\x5a\x55\xb0\xd4\x8b\x1b\xde\xbc\x7e\x4f\x60\xa6\x2a\x24\x52\x41\x49\x51\xa1\xb0\x43\x24\x50\x15\x46\x30\xc4\x12\xcb\x88\x1b\x46\x36\xa8\x55\x4f\x50\x76\x1d\x35\x97\x28\x0b\x41\xb7\x56\x8c\x07\xbd\xb2\x58\xe3\x86\xf8\x8e\xf3\xbe\xeb\x5a\xd5\xcc\xcb\x6d\x38\x82\xa4\x9b\x14\x05\x4a\x39\x24\x45\xc1\x6b\xa6\x46\x66\x16\xc1\xf7\xa4\x52\xfb\x29\xdc\x59\xc2\x29\x7c\xb0\x2d\xf7\xf1\x7c\xa4\x58\xe3\xdf\x71\x1f\x4d\xd8\xef\xf7\xee\x9d\x62\x4b\x25\xea\xa2\x31\xfd\x44\xf8\x47\x76\x46\x84\xa2\x52\x1d\xed\x70\xba\x3b\x75\x7f\x1f\x2d\x12\xb5\xdf\x76\xad\xd6\x52\xcf\x58\x0d\x0e\xf4\xb4\xaf\x05\x45\x19\x55\xc3\x98\xf5\xb1\x96\x5e\xc2\x73\xd3\xd2\x62\x56\x77\x74\x70\xa9\x9b\x63\xf6\xf4\x77\xdb\x6c\xfa\xbd\x5e\x87\xe1\x18\x79\xf6\x24\x56\xab\x89\x66\x29\xd7\xff\x84\x16\xcb\x42\x6e\xff\xb4\x5a\x1d\x43\x79\xf2\x15\x68\x22\x1e\xf3\xe8\x77\xe8\xd7\xcc\xe6\xfa\x9f\xd0\xe2\xd8\xcd\xdd\xdf\xd0\xde\xf0\x9c\x37\x3f\xfb\x3d\xa3\x1f\x2d\x1d\x71\xba\x15\x6b\xc8\x8e\x54\x15\xaa\xe9\x5b\xb2\x25\x4b\x5a\x51\xb5\x7f\xf5\xec\x2e\xf5\x2f\x1f\xb0\x40\x7a\x8b\xe2\xfe\x75\x34\xac\xa8\xd5\x14\x7e\xba\xa4\x5f\x0d\xbe\xf6\xb4\x73\x78\xb3\x25\x82\x6c\xdc\x84\x30\x05\x0d\x36\xee\x43\x3b\x0a\x64\xa5\xd7\x76\x50\x9c\xfb\x63\x7e\xca\xfa\xe3\x78\x59\x18\x35\x07\x63\x27\xc9\xed\x9f\xd0\x5a\xd4\x2a\x2f\x6a\x65\x44\x11\x24\x11\x40\xeb\xea\x72\x71\xe8\xa2\x26\xf3\xab\xcb\xc5\xd8\xc1\xd8\x38\x75\xa7\x93\x0f\x28\x79\x75\x8b\xc2\x68\x44\x96\x2d\x7e\xbc\xf8\x71\x0a\x8a\x5e\xaf\x15\x32\xa8\xb7\x06\x86\xb6\x28\x36\x54\x4a\xca\x19\xac\x51\xe0\xe4\x21\x20\x7c\x02\xf4\x9c\xc0\x1e\xcd\x8e\x07\x6b\x0d\xe7\x48\xd5\x1a\x85\xc6\x3a\xdc\x2c\xd1\x60\xa8\x83\x49\xed\xbf\x89\x34\x08\xff\xd3\x87\x7f\x00\x17\x40\x60\xcb\x0d\x80\xeb\x53\x22\x21\x08\x28\x82\xcf\xd5\xed\x4b\xb4\x9e\xbe\x04\xce\xde\xae\x09\x65\x66\xc9\x66\xa8\x87\xd6\x5a\x62\x69\xdc\x05\xa9\x2a\x6f\xf7\x12\xf8\xca\x42\x34\xd9\x58\x1f\xb2\x5b\x23\xd3\x80\x4c\xa5\xa7\x49\xe0\xd8\xed\xa4\x51\x89\x44\x3b\x7c\x54\xd2\x04\x05\xaf\xcf\x0f\x07\xcf\x83\xb0\xe3\xce\x5a\x54\xb1\xd0\x4e\x78\xa3\x27\xa3\xb5\xd7\x67\xfd\xcf\xfc\x22\xc1\x94\x83\xd9\x75\xeb\xd3\x37\x19\x8d\x8a\x76\xa7\x5b\xe3\x6d\xe9\x6f\xcf\xe6\x01\x97\x23\x13\x82\x39\xf3\xa0\x25\xe4\x60\xd9\x6d\xb0\xc4\x71\x98\x6f\x1a\x41\x38\x63\x6a\xf3\x9b\x1f\xb4\xb4\x69\xe7\x65\x1e\x7e\x85\xbe\x5a\x54\x79\x2d\xaa\xf0\xed\x78\xcd\xdd\xdf\xd0\x6e\x55\x3c\x67\xb4\x4a\xe0\x17\xf2\x70\x5a\x93\x04\x89\x63\x3c\x0d\x14\x29\xb0\xde\xf7\x4f\xfb\x54\x8b\xf4\x74\x05\x9e\x51\x38\xcb\x81\xd1\xca\xb6\xf7\x04\xaa\x5a\xb0\xd0\x79\xa6\x1b\xb5\x97\x4e\x3a\xc2\x86\xcf\x26\x8a\xdb\x69\x75\x7c\x69\xd7\xce\x32\x47\x7a\x18\x5c\x51\xa9\x4d\xf3\x64\x0c\xf1\xbb\xd8\xd3\xff\xc6\x36\x15\xf4\x29\x87\xee\x63\x3d\x9b\x2c\xb9\x10\x7c\x37\x1c\x9d\x45\x7b\x3b\x18\xee\x07\x0e\x5b\xbb\x1e\xb5\xe5\x7c\x8d\xca\xa0\xa7\xd9\xc8\xa7\xc5\x7e\x8b\x9f\x9d\x12\xea\x70\xfd\xd6\xdc\x53\x7c\x47\xfe\xe9\xb3\xe9\x30\x68\x4b\xb6\x5b\x64\xe5\x50\x77\xbc\x4a\x71\xf8\xea\x72\xd1\x30\x72\x41\x14\x79\x3d\x1c\x8d\x9e\x3e\x90\xca\x6d\x45\xf6\x8f\x1d\xfb\x44\x72\x6b\x71\x14\xe5\x63\x07\x38\xbf\xed\xc9\x9d\xdc\xcd\xa8\xb6\x48\x85\xf5\x43\x7a\xdc\xf0\x8b\x0b\xba\xf4\x8c\xa3\x29\xcc\xd8\xfe\xa3\x71\xf5\xe7\x4e\xc8\x74\x65\x08\x20\xcf\xe1\xf1\x02\x71\x1a\x65\x62\xb7\xaf\x0a\x05\x23\x95\x76\x16\x79\xcb\x1f\xbe\x6b\xfa\x86\x83\xb5\x52\x5b\x39\xcd\xb2\x5b\x14\xb2\x96\x13\x52\x17\x8a\xb2\xc1\x28\x4c\x24\xff\xab\x26\x02\xe7\x1b\x72\x8d\x07\x13\xfd\x13\x4b\x4a\x86\x2b\x5a\xe1\xb4\xd5\xf3\x9f\x8b\xc5\xfb\x4b\x5a\xe1\xd0\x40\x5c\x58\x64\xbb\x94\x13\xb5\xa3\x9b\xeb\x49\xc1\x37\xd9\x56\x70\x3d\xf6\x0b\xd5\x93\xcb\xec\x9b\x6f\x7f\x78\xf9\xfd\xcb\xef\x5f\xbc\x7c\xf9\xdd\xf7\x3f\xbc\xfc\xf6\x3f\x7e\xf8\xee\xdf\x33\xba\xbc\x99\xcd\x3f\xec\x76\x5f\x5e\x3c\x7f\xfe\xf5\xc5\xf3\xe7\x93\xdf\xb6\xd7\x83\x91\xbe\x7c\x95\x94\x2c\x8c\x04\x07\x66\x78\xf6\xdb\x16\xaf\x23\xb6\x97\x84\x31\x14\xff\xa7\xd8\x76\xaa\xf3\xf0\x49\xbb\x10\x7b\xf0\xb3\x39\xb2\xc1\x38\x8d\x3a\x06\x6f\x6b\xa1\x2f\xab\x60\x8e\x52\xc7\x33\x5c\xdf\xc1\x34\x5c\xad\x28\x33\x77\xfe\xc1\x38\xd6\x8f\x69\xfc\x31\x8e\x0f\x7c\x1a\x7f\x8c\x63\x99\x4e\xe3\x8f\x31\x48\x5e\x50\x52\xc9\x29\xdc\x0d\xd4\x8e\x2a\x85\x62\x00\x6d\xd9\x76\x6a\x9d\xa3\x36\x72\xbd\xac\xf8\xce\x6d\x69\x74\x3f\x6a\x60\xf0\x29\xa6\x60\x41\x25\x45\xd6\x07\xe8\x87\x32\xce\x63\xcc\x44\xec\xbc\xa3\xac\xc6\xd8\x4c\xb9\x8d\xf2\x18\x29\x69\x93\xd5\x70\x94\x82\xdf\xd2\x12\x85\xa5\xcd\xb6\x82\xde\x12\x85\xce\xcc\x66\x22\x82\xe4\x78\xe6\xa6\xd5\x42\xc3\xab\x67\xe9\x2a\x77\x07\x81\x6f\x9b\x83\xf1\x61\x6c\xec\x03\xf1\x63\x71\x71\xc4\x4a\xe7\xa6\xee\x5f\x0f\x47\x31\x93\xff\xa0\xec\x06\xcb\x45\xc0\xaf\xff\x6d\x4c\x3a\xc9\x3f\x9d\xcd\xf7\x6e\x64\x07\x7b\x7f\xe9\x0e\x0a\x93\x6e\x7a\xb7\xd9\xaa\x7d\x43\x74\x59\x33\xa7\x18\xab\x9a\x0d\x47\x53\x78\x73\x82\x49\xb8\x73\xca\xff\xea\x6f\x66\xad\xce\x19\x87\x23\x13\x06\xf5\x1e\x6d\x6b\xb1\x73\x8c\x7c\x8d\xf0\xcd\x3a\x20\xe8\x1a\xb1\xff\x0c\x39\xd8\x18\xa1\xa7\x71\xc8\xc5\x8c\x7f\xc7\xbd\xbe\xde\xc4\xe1\xe4\xe4\x06\xf7\xd2\x4d\x6d\xe6\xbe\x25\x55\xad\x11\x3c\x26\xfa\xd4\x8c\xff\x7c\x66\x49\x03\x0b\xde\x53\x77\xb2\x31\x14\x58\xe0\x96\x22\x53\x53\x3b\xb1\xbb\x80\xba\xfb\xa9\x6d\x2a\x6a\xd5\x42\xd4\x66\x39\xeb\xe3\x6d\xf4\xd8\x0d\x2f\x41\x44\xc3\xa2\x56\x73\xb6\xe2\x72\xda\xc8\xe7\xd1\x82\x3e\x70\xe9\x9d\x6b\xa5\xee\x20\x84\xda\x2d\xee\xdb\x51\xf6\x18\xd4\xba\xde\x2c\x19\xa1\xd5\x23\xdd\x9f\x40\x39\x29\x2a\x5e\x97\x94\x11\xb1\x37\x58\x5d\x7e\x15\xe4\x05\xb9\xbe\x5d\x65\xd6\x8d\xd5\xdb\x8a\x93\x32\x2b\xbe\xac\x68\x55\x8d\x77\x5f\xbe\x7d\xfe\x3c\x5b\x7d\x21\xb5\xe2\xd9\x86\x50\x66\x82\xf6\x81\x0e\x37\x0b\xe2\x43\xcf\x10\xc7\x8f\x46\x8f\x96\x4b\x13\x6c\x9d\x92\x8b\xa3\xb2\x72\x61\xb4\x1a\x03\xab\x37\x4b\x14\x4e\x16\xe1\x96\xe1\xee\xb0\x26\xed\xda\xee\x6b\x32\x32\x11\x73\x6e\x35\x7b\xb7\x71\x69\x9a\x7e\x2f\xcb\x3e\xba\x1c\xa6\xcb\xb2\xa7\x66\x1d\x65\x59\xd5\x9a\xd8\x7b\x3e\xa9\x24\x07\x1b\xaf\xeb\x7b\x35\x91\xee\x66\x21\x04\x16\x36\x1d\x77\x34\x53\xdb\x46\x0d\x1b\x2f\xfa\x10\xb3\x74\x59\x6d\xa5\xf1\xa0\x0b\x22\xae\x2e\x17\xa3\x34\xca\x9f\x5f\x48\x8d\x26\x9f\xec\xbd\xf4\x73\xd4\x69\x19\xbc\xba\x5c\x44\x29\xec\xd1\x14\x9e\x75\x4d\x7a\x30\x6c\x26\x54\x6b\xd8\x9d\x06\x22\x07\x75\xe7\x4e\x76\xc9\x26\x63\xe7\xf7\x08\xbc\x3d\x81\xd6\x0d\x14\x3f\x02\xc8\x1f\x42\x6b\x97\x36\x82\x92\x9a\x4f\x22\xf6\xc0\x57\xbe\xa0\xb2\xe2\x62\xa3\xef\x78\x46\xe0\xd2\x12\xea\x2e\x2a\x81\x34\x3b\x33\x2a\xbd\xa3\x6a\x0d\x84\xc1\xaf\x56\x24\xbf\xc2\xfc\x02\x56\x14\x2b\x9f\x42\xd1\xf7\x2a\xbe\x63\x58\x5e\x5d\x2e\xe4\x14\xde\xdc\x59\xba\x8e\x64\xd7\xd5\xe5\x22\x24\x2e\x60\x18\x67\x3a\xc3\x78\x0d\xfc\x77\xf7\xcd\x05\xd6\x66\x78\xc8\x4a\xa1\x00\x89\x4a\x55\xb8\xd1\x97\x58\xc5\x61\xa9\x55\x5a\xa0\x36\x53\xbd\x11\x22\x94\xd5\xd3\x1d\x91\xc0\xb8\x02\xc9\x0d\x87\xed\xb4\x8a\x39\xe9\x5a\xb0\x59\x55\x79\x0e\x34\xb4\xdf\x44\x98\x1e\x98\x31\xa8\xee\xfc\x05\xbf\x1e\x0e\xf4\x38\xbf\x96\x91\xca\x0d\xee\xf3\x00\x0f\x37\xb8\x8f\xee\xe0\x0e\x72\x4b\x94\x4a\xf0\xbd\xde\x56\x6b\x6e\x81\x1b\x7e\x8b\x7a\xd4\x54\xcf\x33\xf2\xd7\x7b\xbf\xf1\x9d\x2b\x0c\x81\x25\x94\xfa\x08\xf4\x09\x99\x6a\x99\x35\xbb\x70\xd2\x84\x95\x60\x89\xa8\x91\x8d\xe9\xd6\x2e\x42\x44\xfa\xed\x27\x1c\xfa\x1f\x4d\xda\xa8\xd3\x2b\xeb\xc5\xee\xfc\x7d\xde\xe8\xc9\x03\xbb\x68\xe6\x1d\xc1\xf9\x39\x6c\x09\xa3\xc5\x70\x60\xd2\x93\xec\x5a\xf3\x3e\x18\x19\x38\xc2\x0d\x6d\xd5\xbd\xcc\xec\x13\x5a\xfa\x42\x53\x58\x44\x9c\x4f\x88\x4d\x64\x8f\x62\x24\x7b\xf5\x37\x33\x22\x92\x96\x03\x10\x50\xe4\x46\x8b\xca\xe6\x1d\x59\x09\xa4\x2c\x13\xa1\x04\x99\xc9\xc8\x2e\xec\x14\x81\x5c\x13\xce\x2f\xfc\x10\x5a\x02\x11\x82\xec\x9f\x8a\x56\x1d\xb2\xb3\x3f\x88\x3c\x83\x37\x1a\x53\x34\xfc\x78\x9a\x06\x72\x20\x0f\xe2\x30\xbd\x9a\xb3\xd2\xd6\xc7\x18\xee\xdc\x1c\x8e\xb7\xc8\xb4\x77\x6b\x5a\xac\x83\xae\xe8\x4e\x5e\x95\xc0\x19\xfa\x15\x78\x55\x2e\xba\x0f\xf1\x13\x2d\x3f\x07\xf6\x9a\x13\x8a\x2b\x8d\xfa\x68\x14\x3f\x71\x30\x5e\xcf\xfd\x2a\xd1\xd1\x58\xac\x06\x7b\x74\x46\x8d\x8d\x3c\x7d\x96\x56\xf7\x19\xc3\x25\x22\x14\xd7\x9a\x63\x3a\x89\xf9\x56\xc4\x71\x22\x2a\x35\xdd\x88\x89\xe0\x13\xf4\x34\x16\xe3\x56\x28\x90\x69\x90\xe3\xde\xb4\xba\x56\xcf\x32\x90\xdc\x32\xd8\x58\x95\x71\x86\x02\x49\x09\x54\xc9\xb4\x8e\xa9\x09\x7c\xeb\x9a\x97\xf2\x77\xfa\xa5\x64\x6b\xc3\x67\x1d\x07\x46\x64\xf7\xc8\x73\x93\x48\x4b\xf7\xad\x9d\x75\x90\xbf\x6b\xc3\xb2\x25\x03\x1d\x70\x3f\xbc\xe1\x74\xa3\x6e\x93\x16\x94\xa8\x9a\x98\xf1\x76\x92\xf7\x44\x90\x0d\x2a\x14\x72\x6a\xb4\x7b\x61\xad\xca\x9d\xba\xde\xa2\xe2\xfa\x30\xcc\x67\xc3\xc9\x8a\x8b\x68\x92\x0f\x96\xe9\x29\xcc\x52\x66\xdd\x14\x4f\xf5\xde\x69\x4a\x33\x95\x67\x92\xdc\x34\xd7\x03\x5c\x41\x7e\x54\xf6\xa4\x56\xeb\x53\x07\x10\x0e\x4f\x4f\xa3\x4d\xfe\x99\x37\x79\x8d\xf3\x80\x95\xc4\x34\x16\x74\x99\xe7\xfb\x76\xf6\xcd\x6e\x4c\x3b\x79\xef\xe2\x5b\x3b\x9c\xb1\xfd\x07\xe7\xb0\xef\xba\x63\x82\x7b\xbb\xd2\x56\xf8\x25\x8f\x6f\x7f\x0a\x03\x7d\x34\x25\x47\xeb\x45\xf1\x2b\x95\x6a\x10\x52\xcf\xa6\x84\xb4\x52\x7f\x44\x2e\x7e\xbb\x2b\xd5\x16\x8b\x89\xac\x3c\x92\x78\xe7\xec\x81\x25\x5d\xad\xa9\xb1\x65\x99\x7f\x61\xb0\x72\x17\x4d\x87\x26\x6c\xcf\x99\x7d\x6c\x60\x34\x55\x71\xb0\x97\x49\x20\x06\x47\x51\xdf\x29\x13\x53\x0f\x99\xf0\xee\x3b\xe7\x43\x17\xd7\x7e\xe4\x9d\xfc\x52\xf1\x78\x1b\x39\x26\xe5\xd1\x99\x50\x17\xed\x0a\x7a\x53\xbd\xd1\x82\x89\xea\x43\x27\xcb\x7a\xfe\x56\x12\x95\xf6\x4c\x75\xa8\x7b\xb6\x31\xc4\x6f\x3b\xda\x63\xe3\xb8\x2c\xd4\x67\xe0\xa0\x40\x43\xcb\x9c\x36\x65\x16\x3f\x49\xee\x7f\x84\x13\xea\xf7\x63\x04\x77\x85\xa6\x4b\x2e\xb4\xa9\x92\x56\x2d\x5d\x47\x56\xf3\x72\xea\x2b\xe1\xa1\xc8\x64\x2f\x0b\xe6\xc1\x80\x8d\xe3\xf2\x6b\x54\x33\xfb\x73\x18\xfc\x90\xb1\x6c\xf7\xaa\x20\x2e\x3c\xb8\x31\x13\xbd\x7c\xa8\x3b\xd8\xdb\x5c\x57\x1e\x6c\xe4\x2a\x12\xaf\x2c\x76\x74\xa5\x3b\x20\x81\xe7\x64\xb9\x49\x0a\x44\x66\x43\xa3\xb3\x50\xbe\xb0\xf5\x8a\xd4\xe8\x9d\x1a\xff\x62\xb4\x55\x1b\x5d\x47\xd5\x66\x8d\x02\x41\x52\x0d\x7f\xd1\xcb\x12\xc5\x39\x2c\xa9\x8e\xe2\x41\xd4\x4c\xfb\x2f\x02\xf6\xc2\x9c\x08\xbd\x43\xd4\xa6\x3a\xe2\xf4\xcf\x15\x48\x74\x1c\x4f\x6c\x4b\xdc\xe7\x32\x20\x0f\x09\xff\xaf\x97\xbe\x0e\xdb\xa9\x29\x34\xa7\x07\xe0\xe3\x04\x87\x75\x6e\x5b\xf9\xa9\x53\xa2\xa5\x8d\xd6\xdd\xf6\x7d\x32\xc6\xc9\x60\x18\x19\x25\x11\xea\x2c\x58\x85\xb5\x23\x1d\x1b\x35\x36\x64\x08\xe2\x24\x41\x03\xea\xb1\xc2\x5c\x18\x53\xba\x77\xaf\xa4\xa8\x0f\x17\x0c\x5e\x71\x56\xed\xf5\xe9\x1a\xd7\x5b\x5a\xdf\x4a\x18\x37\x25\xf6\xf0\xe2\xcd\x3f\x43\x22\x1b\x0c\x22\x86\x39\x03\x9b\x89\x86\x82\x48\x74\x25\xef\x78\x1a\x3d\xc4\x52\xcc\xca\x0d\x75\x50\x49\xa5\xbd\x65\xe9\x20\x40\xb7\x52\x69\xdf\x31\xa1\xbe\x43\xd5\x16\x1c\xbb\xae\x51\x16\xe4\x66\x42\xe9\x58\xde\x19\x76\xfa\x8c\xc6\x3f\xfc\x49\x3f\xdb\x2f\x68\xba\x5e\x1f\x8c\xe3\xda\xf9\x38\x79\xe9\x33\x3e\x51\x16\x7f\xdc\xdb\x34\x98\x86\x00\xdc\x28\x89\x56\x11\x86\x26\x3a\x6c\xb0\x5b\xc7\x69\x26\x5a\x70\x05\x76\x3d\x20\x7a\xed\x67\x32\x9e\x87\xa5\x76\x33\xa4\x67\x85\x60\x92\x5a\x5e\xaf\xcc\x5b\x22\xfb\x37\x6e\xf3\xb2\x48\x45\x33\xf6\x77\xc7\x20\x96\x38\x11\x66\x3a\x8d\x44\xf4\x3f\xf6\xd3\x6f\xdb\xe7\x86\x4c\x63\xbc\xf5\xe4\xa9\x4e\xcf\x26\x6c\x0f\xdf\x04\x30\x5a\xc5\x3d\xf3\x32\xb4\xe8\xe3\xa8\x85\xfd\xed\xe5\xdf\xd4\xd0\xb5\x96\x9b\x4b\x43\xfc\xe2\xb0\x2d\xb1\xc8\x8c\xac\xb4\x83\x21\x19\xf8\x68\x91\x43\xde\x9e\x00\xfe\xcd\x1d\xe0\xf0\x9b\x51\xe2\x6d\xed\x6c\xff\xaf\xcc\xe9\xbd\x7d\xe8\xd2\x6d\x4e\xf0\x7b\xec\x29\x35\xa1\x27\x3f\x07\x19\x1f\xbe\x74\x39\x65\x88\xb1\x8d\x05\xe7\x1d\xa2\x89\x60\x2d\x10\x59\x0a\xb4\xac\x04\x4e\x5a\x08\x1c\xb3\x0e\x68\x2c\x23\x80\xc1\x37\x09\x0c\x18\xed\x39\x6a\xf3\xc7\xec\xbd\x51\xde\x06\xfe\x0f\xa5\x78\xd0\x12\xcb\x2d\xfc\xb2\xe8\x66\x52\xbc\x2d\x5b\xfa\x97\x21\xfd\x71\x43\xda\x90\x1b\xf4\xb9\x74\x2e\xe8\x35\x65\xa4\xd2\xd7\xec\xcb\xc5\x69\xf7\x70\xc4\x3b\x9c\xd4\x5c\x3f\xff\x24\x79\x25\x14\x74\xf9\xb0\xbb\x5b\xb9\x8f\xd1\x75\x6a\xfb\x21\xf1\xa1\xfe\x1f\xd2\xa4\x16\x01\x71\x11\xc1\x0b\x20\x2d\x1e\x3c\xd9\x42\xe0\xd0\x44\xa0\xcb\x46\x1a\xa1\x9d\xb4\x96\x36\x95\x37\x9b\xd0\xae\xdd\x51\xb0\x9f\xd0\xfa\x67\x19\x92\x1b\x9e\xbe\x87\x3f\x98\xc0\xe6\x2b\xc3\xe2\x3a\x16\x6c\xbb\xe2\x63\x12\xfe\xb3\x2c\xb5\x6f\xaf\x7a\x23\x9f\xef\x6f\xfe\xab\x81\xb1\x15\x33\x1b\x48\x33\x5d\xdf\x3f\xf6\x4d\xd6\x7c\xee\x9b\xbb\xe2\xf1\x3c\xb3\xd7\xeb\xae\x17\x00\x87\xe3\xa2\x87\x07\x79\xe6\x1e\x28\x74\x8e\xf4\x43\x3d\x44\x48\x72\x8b\xaf\x4e\x5d\xb0\x5f\x0f\x4f\x97\x84\xdd\xff\x82\x38\xf6\x0c\x62\xd4\x5e\xb0\xa2\xec\xe6\xf8\x1d\xe3\xe8\x1b\x09\x50\x44\x5c\xa3\x7a\x60\x25\xab\x78\xdd\xff\xf5\xe3\xbe\x7f\xdf\xff\x9f\x00\x00\x00\xff\xff\xe1\x2a\x22\x35\xbe\x33\x00\x00" +var _contractsThirdpartyVersusArtCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3c\xdf\x73\xdb\x36\xd2\xef\xfe\x2b\xd6\x7a\xc8\x48\xf3\x29\x62\xd2\x2f\x69\xbf\x72\xac\x24\xfe\x92\x6a\xce\xd3\xd4\x93\x49\x94\xf6\x21\xe3\x71\x61\x72\x25\xa1\xa6\x08\x1d\x00\x5a\xd1\x79\xfc\xbf\xdf\xe0\x07\x49\x80\x04\x25\x3a\x71\xae\xbd\x9b\xeb\x43\x2d\x91\xbb\xc0\xfe\xde\xc5\x62\x15\xba\xde\x30\x2e\xe1\x9c\xe5\xb3\x22\x5f\xd2\xab\x0c\xe7\xec\x1a\x73\x58\x70\xb6\x86\xc1\x64\x12\x4d\x26\x91\x90\x24\x4f\x09\x4f\xa3\x26\xd4\x24\x49\x93\xc1\x91\x5d\xe2\x57\x8a\xdb\xf7\x28\x58\x76\x83\x3c\x8c\xee\x42\x78\xa8\x3d\xb6\xee\xde\xf7\x17\x94\x24\x25\x92\xa8\xd5\x45\x18\xd9\x03\xf1\x90\x5f\xb3\x5c\x62\x2e\x4b\xb4\xc8\x7e\x37\x30\x47\x51\x14\xc1\x29\x9c\xcf\xe6\x90\xb0\x5c\x72\x92\x48\x90\x0c\x84\x64\x1c\x81\x70\x79\x44\x92\x04\x85\x18\x92\x2c\x1b\x1d\x55\x10\xa7\x5c\xc6\x2d\x79\xde\x1e\x1d\x1d\x01\x00\xb8\x18\xea\x7b\x86\x8a\x86\x2c\xc3\x44\x52\x96\x7f\x90\x8c\x93\x25\xbe\x23\x72\x15\x83\xf3\xa5\x0f\xee\xbb\xe2\x2a\xa3\x89\x41\xad\x3f\x87\x31\x6f\x08\x07\xc9\x24\xc9\x3e\x14\x9b\x4d\xb6\x8b\xe1\xe3\x59\x2e\xbf\x7f\x16\x06\xc6\x1b\x25\xa0\xd7\x96\xbd\xb3\x9c\x4a\x4a\x32\xfa\x0f\x4c\x87\xa3\xbd\x08\x1c\x89\xc4\x74\x48\xd3\x72\xf9\x31\xac\xad\x1e\xe2\x4a\x69\x7b\x97\xf8\x29\xa5\x8a\xb3\xc6\x22\x4a\x55\xf5\x37\x34\x30\xce\x1e\xe4\xf3\x4f\xfe\x33\xbb\x47\x14\xcd\x57\x08\x1b\x2d\x1a\xa0\xb9\x44\xbe\x20\x09\x42\x42\x72\x10\x2b\xb6\xad\x88\x03\x92\xa7\x20\x57\xa8\x75\xae\x6d\x83\x71\xfd\xfd\x94\x4b\xd8\x50\x4c\x30\x48\x32\x47\xc1\x0a\x9e\xa0\xb3\xb4\x51\xc3\xad\x7e\x1d\x42\x29\x95\x58\x73\x77\x74\x10\xb6\x2d\xc2\x1a\x27\x8a\xe4\x0a\x05\x82\x5c\x71\x54\x06\x8a\x40\xd2\x14\x53\xb8\xc2\x84\x14\x02\xe1\x0c\xe4\x8a\xe6\xd7\x8a\x99\x1d\x6c\x69\x96\xc1\x95\x22\x57\x33\x57\xfa\xca\x04\x4e\x65\x86\x44\x48\x48\x29\x4a\xe4\x06\x45\x00\x95\x15\x46\x8e\x98\x62\x7a\x90\xd2\x9c\xac\x51\x59\x31\xa7\xf9\xf2\x30\x5f\x29\x8a\x84\xd3\x8d\xd1\x5b\x5f\x24\x91\xac\x70\x4d\x4a\xf8\x97\xfb\x11\x16\x45\x5e\xaa\x74\x38\xda\x83\x93\x24\xac\xc8\xa5\xbf\x11\x67\x3b\x92\xc9\x5d\x7c\x6b\xd1\x62\x78\x6f\x9e\xdc\xed\xdf\xf3\x86\xe2\xd6\x6c\x4c\x92\x15\xfe\x8c\xbb\x7a\xe7\x9e\x88\x4b\x94\xa5\xa2\x15\xae\xaf\xf4\xbb\xa3\x8e\xb0\x22\x24\x2f\x92\x3a\x34\x1e\x36\xc1\xfb\x29\x8b\x70\x49\x85\xbc\x2f\xfc\x69\x9a\x72\x14\x22\x06\xfb\xe1\x1b\x19\x85\xdc\x6d\xee\xc1\x4a\x23\x7e\xf4\x70\xc0\x56\x7c\xa9\x71\x68\x4e\xe5\xd0\x15\xe5\xb8\x21\xaa\x71\x87\x28\xc6\x21\x56\xc7\x1e\x2b\xfd\x42\x5d\xad\x69\x6d\x06\x98\x2d\x26\x8a\x1e\x98\x6a\x0d\xb7\x5f\x1a\x72\x60\x6a\xe9\xea\x02\xb0\x64\x56\x70\xa5\x06\x5b\xe0\x0e\x1b\x30\x75\x99\x6a\x83\x2a\xe6\x60\xaa\x79\x6c\xbf\xb4\xbc\xc2\xb4\xe4\xba\x0d\x52\x73\x0f\x53\x47\x14\x15\xe0\x5d\xe9\x22\x21\x6d\x5a\x07\xb1\x5e\x7c\xd8\x3f\xb6\x24\xcb\x50\xc6\xf0\x9a\x6c\xc8\x15\xcd\xa8\xdc\x9d\x3c\xba\xf5\x6b\x92\xf7\x98\x20\xbd\x41\x7e\xf7\xe2\xb0\x11\x25\x85\x8c\xe1\xe3\x8c\x7e\x76\xad\x47\x55\x1b\xaf\x36\x84\x93\xb5\xdd\x0e\x62\x50\x29\xcb\x7e\x51\x95\x07\xe6\x69\x19\x8b\x40\x32\xe6\x1b\xde\xbd\x68\x1c\xbb\x34\x84\xcc\xc6\xee\x3a\xb5\xdb\xb7\x01\x92\x42\xbd\x4d\x0a\xd9\x4f\xe2\x55\x7e\x3c\x9f\xcd\xdb\xf5\xd1\xe4\x7c\x36\x1f\xdb\x84\x39\xf6\x4a\xc9\x49\xf9\xe1\x61\xf3\xe8\x9f\x99\x9d\xa2\xa8\x2c\x2d\x54\xf1\x81\x54\xae\x90\xab\xc4\x8a\xeb\x2b\xd4\x09\xdb\xe6\x64\x55\x78\x12\xa1\xeb\x91\x8f\xef\xdf\x02\xe3\x40\x60\xc3\x74\x7d\xa1\xac\x81\x54\xd5\x6b\x52\x55\x81\xea\xf9\x15\x9a\x12\x35\x05\x96\xbf\x5e\x11\x9a\x3b\x1b\xd7\x0b\x94\xd9\xbc\x10\x98\xea\x12\x87\x64\x59\xe9\x6c\x02\xd8\xc2\x54\x05\x2a\x76\xa8\xba\x67\xbb\xc2\x5c\xd5\x00\x54\x94\x30\x3d\x2a\x00\xcb\x65\x6d\x8f\xbe\x6d\x96\xb5\x76\x5d\xc3\xbe\x38\x90\xc2\x9d\x45\xcf\x2a\x5d\xf7\xc0\x29\x78\xd6\xb3\x48\x38\x54\x62\x7d\x6d\x91\xa0\x1d\x55\xfd\xef\xec\xcd\xbe\xb2\x78\xfc\x25\xb2\x1b\x07\x64\x33\xf6\x78\x1f\xef\xa1\x31\x14\x03\x68\x0a\x53\x30\xd4\x06\xe2\x6f\x59\x2f\x4f\x2b\x06\x02\x41\xa2\xc9\x86\x0a\x19\xcd\x67\x9d\x68\x67\x69\x0d\x7e\x96\xb6\xc1\x0a\x9e\xc1\x54\x71\xd8\x7e\x55\x46\xc9\x69\xc9\x72\x1b\xc4\xf8\xa7\x4a\x8d\x34\xb0\x80\x4d\x9b\x25\x6b\x93\x70\xfe\xf4\xf3\x5d\x05\x1c\x4a\x7c\x7d\x4b\xc5\x8e\x8a\xcf\x57\x0f\x47\x59\xf0\xdc\x57\xc4\x97\xec\x64\xb5\xaf\x36\xba\x6d\x5a\x44\xf7\x8e\x4d\x91\x7e\x79\x15\xec\xef\x41\x17\xb5\x5e\x8f\xb5\x5e\xfc\xf7\x4d\x3a\x0a\x9e\x1d\x7b\x00\x77\x21\x92\x87\xbe\x49\x1d\x8f\x26\x92\x99\xdd\x87\xa3\x10\x0b\x51\x64\x11\xdb\x87\x40\x2a\x54\x50\xbe\xff\x31\xe3\x9b\xb2\xe9\x86\xda\x3a\x11\x4c\x7d\xbe\x6b\x6f\x3b\x1e\x4d\xae\x18\xe7\x6c\x3b\x1c\x1d\x87\xc4\xd5\x5a\xaa\x5c\xa2\x25\xc7\x2f\x31\x38\xdd\x82\x51\x82\xf9\x34\xdf\x6d\xf0\xc2\x67\xfc\x86\x70\x0d\x2c\xca\xd7\x30\x85\x4f\x1e\x84\x7a\x7a\xe2\xb7\x73\xce\x67\xf3\x9a\xd6\x37\x44\x92\x17\xc3\xd1\xf8\x7e\x48\x54\x6c\x32\xb2\xeb\x83\x77\x0f\x50\xe3\x46\x14\x45\x1f\x60\x5b\xbc\xf6\x02\xfd\x2c\x91\xe7\x24\xfb\xf8\xfe\xed\x8b\xe1\xe8\x22\xa4\x42\x2d\xc3\x7b\x6b\x87\x9b\x42\x4b\xed\x32\xbc\xb4\x67\x0f\xb5\xff\x28\x86\xd3\x7c\xf7\x41\x57\xcc\x2f\x5b\x96\x6c\xca\xf8\xe9\x61\x4a\x3b\x6d\xbc\x13\x69\x38\x58\x49\xb9\x11\x71\x14\x6d\xb7\xdb\xc9\x0d\x72\x51\x88\x09\x29\xb4\xce\x22\xdd\x89\x89\x06\xca\x1e\x13\x22\x87\xc6\x38\xd9\x36\x47\x7e\x3c\x9a\x10\x73\x3e\x71\x1c\x7d\x54\x02\x0e\xa2\x41\xf5\xd9\x26\x39\x17\x6c\xb4\xc7\xd1\xf6\x73\xdb\x61\x52\x9d\x6c\x9f\x72\x39\xb1\x22\x2f\x9b\x6b\x5a\xf4\x65\xa1\x3c\xaf\x14\x70\xf2\xea\x7c\x36\x57\xa6\xa1\x75\x65\x9e\x2b\x42\x1e\x8a\x56\xe3\x33\xdf\x86\xd0\xaf\xa3\xd3\xf5\xa1\x36\x7d\x2a\x5c\xf0\x12\x22\x86\x4f\x21\xdc\x9d\x8e\x21\x17\x2d\x5c\x15\xcf\x6d\x1a\xfb\x19\x77\xaa\xe2\x76\x33\xdb\xe4\x1a\x77\xa2\xbd\x21\xd8\x68\x7b\x43\xb2\x42\x15\x07\x2e\xca\xa7\x7a\xb5\x8b\xe3\x20\x66\x45\xea\xb4\xfa\x54\x1a\x62\x98\xf4\x21\xb7\xc7\xb5\xd8\xec\x68\xcf\x64\xf6\xe8\x66\x1e\x25\x85\x6c\x34\x0f\x6a\x3a\x46\x17\xa3\x16\x21\x77\xfd\xbc\xb0\x12\xfc\xb0\xa2\xf5\xcb\xb5\xd8\xc3\x19\x82\x08\xb6\x95\x52\x95\x63\x0d\x46\x9b\x05\xd8\x18\xe4\xaa\x58\x5f\xe5\x84\x66\x71\x63\xc1\xbf\xcd\xe7\xef\x66\x34\xc3\xa1\xae\x86\xab\xb0\xc2\x95\x06\x32\x56\xa4\x34\x27\x7c\x37\x49\xd8\x3a\x4a\x3f\x73\xf2\x8c\x2c\x6f\x16\x11\x5d\x93\x25\x46\xc5\x26\x63\x24\x8d\x92\xcb\x05\xcd\xb2\xf1\xf6\xf2\xbb\x27\x4f\xa2\xc5\x25\x29\x24\x8b\xd6\x84\xe6\xba\xa2\x19\x78\xf1\xa4\x2e\x72\xbe\x26\x9a\xd4\x09\xa1\x6f\xdc\x34\x08\x56\x66\x39\xcd\xc6\x90\x17\xeb\x2b\x65\x3c\x5e\x95\x58\xb6\x56\x74\xfb\xa8\xf9\xae\x6e\xa3\xec\xa3\xdc\xee\xef\x96\xcd\x07\x72\x8c\x2e\x8a\xf4\x85\xc0\x4f\xeb\x8d\xdc\xd5\xb1\x47\x55\x02\xaf\x6e\x5b\xdd\x80\x1a\x20\x5c\x85\x9e\x3c\x36\xab\x81\xbb\x52\xb8\x0f\x11\x45\x1f\x6c\x6b\xdb\x5e\xe4\xf8\x17\x26\x4e\xbb\x5e\xae\x88\x39\x91\x93\x4c\x30\x30\x35\x92\x3a\xfb\x12\x61\x2b\x41\xce\x31\x91\x75\xc3\xaa\xc7\x0d\x40\xf3\x7a\x66\x7f\x0f\x43\x49\x29\xc5\x0d\x13\x54\x0e\xa5\x92\x43\x50\x36\xe7\xb3\xf9\xdd\xe8\xb0\xb8\x97\x28\xcf\xde\x98\x4a\xcb\x9c\x05\x2f\x7a\x96\x01\x86\xf1\xf3\xd9\x7c\x78\xe9\x74\x54\x46\x31\x3c\x0a\xd3\xd2\xa3\xed\x5e\xc9\x72\xd8\x58\x50\xa5\x16\x23\x99\xbb\x97\xbd\x9a\x47\xb5\x40\xe3\x96\x70\xc7\xed\xae\xd2\x3b\xce\x6e\x68\x8a\x3c\xf0\xaa\x6c\x85\x05\x5e\xd5\x0b\xef\x7d\xb9\xb7\x5b\x55\x83\xdd\x3a\x07\x0b\x48\xa9\x7e\x46\xf8\x0e\xd8\xa2\xbc\x59\x5c\x30\xbe\xa6\xf9\x12\xb4\xce\x85\x0b\xae\x00\xa8\x00\x52\x0b\x40\x87\x8c\x2d\x95\x2b\x20\x39\xfc\x6e\x44\xf9\x3b\x9c\xbd\x81\x05\xc5\x6c\x7f\x4b\x46\xa5\x4b\x55\x20\xa5\xe7\xb3\xb9\x50\xa6\x65\xb0\xe3\xb0\x5a\x9b\x4d\x8b\x50\x7f\xa0\x5a\x0d\x4e\x1e\xdf\xde\x85\xcf\x52\xa6\xc1\x44\x16\x12\x39\x08\x94\x32\xc3\xb5\x3a\x4f\x49\x06\x57\xca\x93\x39\xaa\x30\xaa\xb8\x27\x5c\x1a\x17\xdc\x12\x01\x39\x93\x20\x58\x80\xa1\x66\xe3\x45\x9b\x57\xc1\xf3\xd3\x2c\x6b\x92\xa8\x52\xfc\xb5\x93\xdb\x2b\x6a\x3b\xb2\x7b\xc6\x96\xc3\x81\x5a\xab\xa4\x46\x8b\xf9\x1a\x77\xd3\x2a\xc0\x5f\xe3\xae\xbb\x58\x54\xff\xa5\x28\x24\x67\x3b\x38\x79\xdc\xd8\x92\xe3\x9a\xdd\xa0\x5a\x20\x56\x4b\x76\x85\x57\x5f\x74\x8a\x80\x94\x93\x2d\x18\x6c\xa1\x74\xae\x4c\x42\xdf\x56\x9b\x98\x54\x9d\xf7\x48\x9e\x82\x01\xa2\x5a\xba\xfa\xb5\xaa\x17\x78\x53\x86\x2d\x75\xff\x66\xb7\xf1\xa5\x5a\x6e\x3e\x2c\x3f\xd4\x2d\xab\x70\xd0\x56\x56\x73\xdb\x3a\x99\x6a\xa3\x86\x93\xc7\x4d\x1d\xb8\x02\xa9\x77\x18\xc1\xcb\x97\xb0\x21\x39\x4d\x86\x83\x35\x15\x42\xa9\xe2\x7c\x36\x1f\x8c\xc2\x59\x40\x2f\xde\x21\x3c\x1b\x49\x41\x92\x6b\x25\x39\xd3\x4d\xcd\x53\x20\x69\xea\xc9\xa8\x12\xa1\x70\xbc\xd3\x5d\xa8\x42\x52\xe0\x67\x6f\x4a\x44\x9a\x02\xe1\x9c\xec\x1e\x2a\xa4\xef\x11\x9d\xf9\x40\xc4\x31\xbc\x52\x11\xd3\x6d\x41\x40\xab\xf7\x0d\x53\x03\x3f\xa1\xe9\x91\x07\xa6\x58\x49\xcd\xd5\x76\x8e\x5b\xbb\xa8\x65\xc6\x89\x4b\xdb\x15\x4d\x56\x95\xc5\xa9\x97\x2c\x4b\x81\xe5\xd8\xda\x93\x65\xe9\x3c\xac\xdd\x4f\x34\xbd\xa8\x08\x3f\x0a\x39\x48\x89\xdb\xa1\x3c\x93\xbd\xac\xa2\xb5\xdd\x6b\x59\x97\x7d\x69\xf5\x4e\xc7\x0a\xc2\xab\x1b\xec\x5a\x91\xbd\x9b\x11\x8d\x04\xd9\xdd\xf0\xf2\x43\x47\x07\xcd\x55\xe2\x54\x4b\x9b\xa0\xbd\x40\x8e\xb9\x8a\xda\xac\x74\xdd\x6e\x62\xa3\x08\x04\x33\x5c\xd5\xbe\xab\xeb\x11\x8e\x24\x05\x2a\x85\x3f\xa2\xa0\x00\xca\xa7\x2b\x96\x8a\x6f\x94\xdd\x83\x42\x79\xd4\x56\xf7\x5e\xa1\xa8\x32\xaa\xd2\xa5\x7d\x86\x69\x43\x40\xea\xa0\xd9\x57\x1a\xbe\x14\xac\x04\x4c\x5c\xa4\x72\xe2\xac\xe2\x2e\xf8\x8e\x70\xb2\x46\x89\x5c\xc4\x9a\xf7\xb9\xf1\x67\x6b\x53\x4a\x3b\x92\x29\xdd\xe9\xaf\x35\x6d\x0b\xc6\x3b\x16\x7c\x6f\x58\x8a\xe1\xd4\x67\xc5\x2e\xf7\x30\x75\x11\xdc\x1e\x05\xbb\x87\xbe\xb3\x75\xf5\x11\xf5\xc5\x04\x2e\x60\x0a\xc3\x80\xd2\x54\x6d\xdb\xa5\xf8\x51\xfb\x14\x6b\xb5\xaf\xd6\x53\xc1\xe8\x51\x28\x18\xdd\x01\x66\x02\x3b\x0f\x2d\xcd\x5e\x7b\x30\xf5\xf5\xb0\x60\xb7\xe8\x6a\x4a\x2f\x58\x90\x35\x2d\x79\xc3\x03\x44\x76\x0a\x36\x6e\x81\x0e\x94\xbd\xa4\x0c\x4d\xad\x82\x9f\xa9\x90\x83\x06\x67\x5f\xe1\x39\x7f\x85\x43\x54\x90\x9a\x66\xfc\x54\xb5\x83\x3a\xbe\xea\x40\x7a\x6b\x5a\x41\x65\x3c\xbd\x83\xe0\xbe\xb7\x5e\xaf\x08\xe2\x50\x88\x3d\x64\x16\x1e\x19\x1f\x8a\xcd\x86\x71\xa9\xd1\x9b\xb4\xfc\x3f\x63\x59\x5f\x3a\x24\x2f\xf0\x5e\x1b\xbf\xc5\x7c\x29\x57\x1a\xf7\x2c\x97\xe1\x5d\x1a\xcc\x65\x1a\xa5\xf7\x26\x54\x34\x99\x1b\x3a\x8d\x59\x30\xfc\x85\x37\xf6\x9a\x0b\x96\xc9\x96\x76\xab\x43\x72\x39\x18\xb7\x28\x72\x7b\x91\xac\xd3\x6b\xbe\x63\xb9\x99\x91\xd3\x81\x56\x32\x6b\x81\x40\x74\x0d\x81\xca\x10\x9b\xc9\xac\x69\xbb\xdd\x76\x9b\x2f\xe4\xdc\x6d\x33\xf7\x35\xe2\x83\x06\xbc\x7f\xea\xe3\x94\xcb\x37\xbd\xa6\xa2\xea\x8b\x59\x15\xe9\xba\x6f\x83\xbf\x66\x10\xa1\x6c\x17\xb5\xe7\x0a\xf4\xb1\x2b\x4c\xc2\x18\xdc\x89\xc8\xe6\x12\xa1\xa3\x5a\xaf\xdb\x5a\x73\xdf\x1b\xb8\x68\x2d\x77\x80\x69\xb5\x59\xb8\xdb\x12\xd2\xfd\x12\xa5\xbd\xae\x9e\x31\xae\x92\x1d\x69\x4d\x3f\x11\xee\x5c\x5a\xd7\xc3\x79\xb7\x9e\xa4\xec\xd9\x0f\xa6\x6a\xc5\x53\xf3\xa5\x5c\xab\x96\x29\x5d\x94\x23\x67\xde\x65\x98\x45\x9e\x24\xe5\x3d\x18\x45\x61\xef\xc1\x4e\x4c\xbe\x6d\x1e\xec\xef\x5e\x98\x7e\x5e\x68\xc4\x76\x14\x76\xb9\xa1\xb7\xeb\xc4\x4f\xef\x9a\xc7\xd1\xf1\xa8\xba\x4e\x6b\x36\xac\xa0\x9d\x25\x6b\xf7\xfc\x4d\x7b\xa1\x4a\x35\x81\xcb\xc9\x15\x72\x04\x41\x55\xf5\xe1\xcc\x69\x4a\xc6\xe0\x8a\x2e\x95\xd3\x72\x15\x4a\x72\x20\x60\x9a\xa5\xfb\x54\x15\x52\x90\xaa\x91\xad\xd3\x38\x45\xf2\x0d\xe1\x8a\xa9\x37\xda\x3a\xab\xf7\x7e\xbb\xfd\xaf\xa6\xb7\x76\x87\x80\xea\x71\x1b\x5f\x71\xe5\xd1\x20\x7c\xe5\x40\xb8\x1d\x98\xeb\x54\x35\x4d\x03\xc5\x93\x15\xd5\x84\x6c\x36\x98\xa7\x43\x2b\x2f\xc7\xc1\x09\x97\x13\xef\xf2\xdf\x78\x39\x4d\x5d\x0f\x57\x40\x6e\x87\xb9\xb3\x98\x6a\x58\x94\xdd\xdd\xb7\xaa\xf9\x8a\x96\xc7\x07\x1d\xe3\x59\x9e\xed\x94\xe5\xe8\x6a\x3b\x35\xe5\x34\xc9\x99\x9e\x4f\xaa\xe6\xdb\xcb\x81\x61\xb2\xc6\x4a\x3b\x70\x96\xc3\xaf\xfa\x7e\x0e\x12\x22\xd0\x4e\x0a\xb9\xcb\x28\x14\x03\x71\x9a\xae\xa9\x4d\x2f\x54\x98\xee\x90\xaa\xfe\xd5\x53\x2a\xcc\xc4\x31\x82\x60\x59\xd1\x4a\x28\x6e\xef\xa7\x4e\x2a\xa7\x5c\xaa\x22\xc4\x86\x98\x87\x1c\xbf\x74\x46\x67\x9a\xb3\x98\xdd\x73\x34\xfd\xe6\x34\xe3\xea\x24\xef\xfb\x53\x8e\xfa\x00\x79\xf2\xb8\xcc\xb3\xea\xa4\x56\xce\x0b\x29\x0c\x67\x6c\x3f\x34\x38\x54\xb6\xff\xf5\x6d\x49\xc9\xbc\xf9\xdb\x62\xde\xfb\xda\x10\x81\x7f\xad\x52\xdd\x38\x3a\xcc\xb9\xd7\x08\x15\x77\xce\xfd\x41\x70\x84\x49\x5f\x4b\x38\x53\x4a\xfa\xbb\x16\x73\xc1\xb3\x5a\xaa\xe5\x87\xda\xba\x71\x4d\xfd\x9f\x14\xec\x91\x85\x91\x61\x95\xf1\xea\x45\x1a\x38\x30\x6d\x3d\xf9\x1f\x78\xda\x2e\x32\xcc\x7a\xff\xb9\x9e\xf3\xce\x4c\x04\x7e\xbb\xc1\xe5\xfb\xcf\xb2\x05\x46\xd9\xf6\xce\xae\x85\xdc\xc9\x2d\xe0\x60\xfa\x27\x78\xc8\x53\xdf\x37\x9e\x8e\x1e\xc4\xd3\xd7\xfb\x46\x04\x5b\x8f\x3c\x41\x56\x1f\xad\xcf\x69\xef\xfb\xaf\xcf\xfd\x8b\x7c\x6e\x4d\xae\xb1\xbc\xa4\x65\x9c\x2e\x69\x4e\xb2\x18\x1e\xe9\xc1\xe7\x2f\x4d\x19\xfb\x6d\xbc\xdc\x65\xe2\x0d\x31\xd6\x56\xdf\x7e\xdf\xe1\x07\x5d\x80\x61\xcf\x68\x43\x07\x7c\xa5\x0d\x74\xcf\xfc\xf2\xed\x9d\xa9\x22\x71\xbf\x57\x35\xc1\x2a\xf7\xaa\x5e\xf8\xb9\xad\x7a\xec\x8e\x5f\x3e\xb0\xd7\xe9\x45\xfc\x9f\xcf\xb5\x96\x31\xbf\xa3\xab\xa8\x51\x65\xe6\xfd\x85\xff\x60\xee\xdd\xd5\x62\x71\x27\x8e\x44\x60\xe4\xe8\x65\x35\x4a\x08\xad\xfe\x40\x3d\x3a\x78\xef\xb1\xc1\xfe\xf3\x5d\x15\xca\xc5\x41\x76\xfa\x0d\x51\xbd\x74\xc7\xbc\x5a\xf3\x77\x0e\x97\x62\x4b\x65\xb2\xaa\x80\x9d\x37\x3a\xaa\xf5\xe4\xd9\xef\x6c\x9a\x59\x52\x17\x64\x0a\x07\xd6\x18\xb6\xbb\xa8\xee\xcf\x58\xfd\x23\x9a\xf3\xa3\xd6\x71\x0b\x6f\xe3\xfc\x84\x35\x74\xb2\xdb\x87\xe5\x0e\x06\x68\xce\x1f\xf9\x2b\xb4\x26\x2b\x6b\xd4\xb7\x34\xbf\xc6\xd4\x99\x62\xeb\x83\x1a\x6c\x68\xcd\x6c\xf3\x2c\xd6\xea\xbe\x6f\x5b\xb6\xe5\x25\x8a\x8c\x1e\x8d\xb3\x93\x57\x1e\xad\x87\x66\xbe\x82\x57\xa9\xbe\xce\xef\x69\x48\x95\x2f\xb4\x6d\x09\xeb\x69\x4e\x68\x5a\x52\x70\xd2\xd3\x9f\xf2\x6c\xdc\xfb\xea\x5f\xd5\xfc\xbd\x20\x1c\xcf\xd6\x64\x89\xad\x15\x7f\xc1\x94\x92\xe1\x82\x66\xd8\x73\x00\x6c\x73\x25\x26\x72\x4b\xd7\x4b\x3d\xfb\xb5\xe1\x4c\xe1\x5e\xea\xc9\x2f\x11\x3d\xfd\xee\xc7\xe7\x3f\x3c\xff\xe1\xd9\xf3\xe7\xdf\xff\xf0\xe3\xf3\xef\xfe\xef\xc7\xef\xff\x37\xa2\x57\xd7\xa7\x67\xef\xb7\xdb\xcb\x67\x4f\x9e\x7c\x7e\xf6\xe4\xc9\xe4\x8f\xcd\x72\x30\x52\x31\x39\xa5\xc4\xa8\x64\x60\x06\xc7\xfe\xd8\xe0\x32\x40\xfe\x15\xc9\x73\xe4\xff\x96\xe4\x07\xc7\xce\x42\x96\x60\xcb\x8f\x81\xa9\xa0\x06\x8d\xf2\x60\xf0\xba\xe0\x2a\xb9\x81\xd5\x31\xac\x58\x21\xf4\x2d\x1b\x2c\x68\xae\x7f\x58\x3f\x18\xbb\x86\x13\xbb\x5f\xc6\xae\x01\xc4\xee\x97\xb1\x2b\xdb\xd8\xfd\x32\x06\xc1\x12\x4a\x32\x11\xdf\xc2\x40\x6e\xa9\x94\xc8\x07\x4d\x11\x07\xad\xd1\x02\x6b\xf1\xce\x32\xb6\xb5\x1c\x8d\xdc\x01\xac\x7d\xcd\x3b\xfd\xb7\x39\x3e\x13\x45\x50\xff\x8a\x5e\xd7\x8f\x3a\x5f\x82\xd0\x09\xb3\x0e\xef\xfa\x47\x92\x5e\x6e\x7d\xe2\xbf\x0c\xc5\x47\x98\x42\x64\xc2\x9a\x75\xa5\x53\xb7\x4f\xd5\x85\xef\x84\x65\xb5\x80\x0d\xe0\x87\x57\x28\x2b\x6a\x8b\x30\x11\xe4\x06\x4f\xf6\xc7\xbc\x17\xc3\x2f\x0e\x6c\x63\x90\x6c\x4f\x42\xf1\x4b\xc2\xcb\x84\x6c\x66\x8c\x9b\xe0\xfe\xb4\x1c\xd6\x0d\xb6\x13\x4b\xea\xa9\x10\x05\x76\x77\x15\x7b\x6c\xdc\xbd\x87\xd6\x89\x58\x0d\x7d\xb2\xc6\x40\x64\x77\xae\x6b\x16\x85\xc1\x7f\x82\xc1\x58\xda\xdd\xd1\x3f\x03\x00\x00\xff\xff\x1c\x41\xc0\x03\xc9\x43\x00\x00" func contractsThirdpartyVersusArtCdcBytes() ([]byte, error) { return bindataRead( @@ -340,11 +444,11 @@ func contractsThirdpartyVersusArtCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/thirdparty/versus/Art.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x11, 0xf, 0xac, 0xe2, 0x2d, 0xa4, 0x1a, 0x84, 0x2a, 0xc9, 0x1d, 0xa7, 0x6a, 0x81, 0x2, 0xf7, 0xc, 0xf4, 0x46, 0xdc, 0x21, 0x0, 0x82, 0x56, 0x18, 0x0, 0xda, 0x2e, 0x61, 0x1e, 0xb9}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x76, 0xc0, 0x9b, 0x0, 0xa9, 0x4f, 0xe8, 0x46, 0x37, 0xb7, 0x75, 0xdb, 0x3a, 0xe3, 0xc3, 0xfe, 0x5a, 0x65, 0xc5, 0x76, 0xa, 0x53, 0x3b, 0x11, 0xd1, 0xc0, 0xf1, 0x84, 0xc3, 0x85, 0x31, 0xda}} return a, nil } -var _contractsThirdpartyVersusContentCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x96\xcd\x8a\x23\x37\x10\xc7\xcf\xad\xa7\x28\xf6\x10\xba\xc9\x8e\x3b\x81\x90\x43\x33\x8e\x27\xf1\x24\xe0\x4b\x18\xd8\x0d\x39\x2c\x4b\xd0\xb4\xca\xb6\x70\x5b\x32\x52\xd9\x8e\x33\xf8\xdd\x83\xbe\xba\xd5\xfe\x98\x3d\xb9\x25\x95\xaa\x4a\x3f\xfd\xab\x64\xb6\xdb\xbf\x42\xab\x15\x19\xde\x12\xcc\xb5\x22\x54\x04\x6f\x8c\x15\x6e\xe1\xc0\x0d\x90\x26\xde\x7d\xda\xef\x76\xdd\xa9\x81\xbf\x16\x8a\x7e\xfe\x29\xae\x76\xe8\x76\x74\x1d\xb6\x24\xb5\xfa\x44\xda\xf0\x15\xbe\x70\x5a\x37\x90\x0d\x6e\xd9\xbe\x18\x79\xe0\x14\x6d\xb3\x41\x74\x8c\x07\x97\xc4\x3c\x66\xb5\x50\x92\x24\xef\xe4\x7f\x28\xca\x2a\x37\xf8\x5b\xd2\x5a\x18\x7e\x2c\xa5\x48\x99\x7d\x84\xa5\xd1\xdb\x06\x7e\x15\xc2\xa0\xb5\xb3\x91\xfd\x33\xee\xb4\x95\x34\x32\x27\x7d\xc7\x78\x6e\x90\x13\x8a\xcc\xb8\x8a\xd9\x19\xb4\x7a\x6f\x5a\x84\xdf\x3a\xfd\x0a\x6f\xac\xe8\x0f\x38\xd8\x32\x56\x14\xbc\x6d\xd1\xda\x32\xc1\xad\x3c\xcd\x36\x10\x76\x84\x8c\x54\x2b\x67\x27\x95\xcb\x49\x49\x5a\x3c\x0f\x79\x5d\xd8\x55\x3e\x4e\x61\xb1\x5b\x4e\xa4\x80\x29\x04\xfb\x7e\x2e\x9a\x4f\xe3\x2f\x2b\x8a\x33\x2b\xce\x8c\x15\x75\x6d\x90\xf6\x46\x01\xad\x31\x39\x85\xa5\x36\x40\x6b\x69\xe1\xcf\x3f\x3e\x5f\x9c\x49\x2a\x42\xb3\xe4\x2d\xc2\xcb\xfe\xb5\x93\xed\xa0\x88\x70\xcc\xe5\x5e\x25\x37\xe5\x3f\xd9\x81\xab\x94\xe9\x2c\xc4\x1d\x39\x1d\x2e\xbe\xb9\xe3\x36\x43\x63\x1b\x78\x7a\x0b\x4e\x1b\x8f\xf8\x9c\x20\x41\x99\x63\x48\xe6\xf0\xf8\x00\x6f\x67\x7f\x62\x56\x14\x75\x0d\xc7\x28\x0b\x30\xb8\xd5\x07\xb4\xc0\x95\x3b\xa8\x57\x46\xc4\x90\xd2\x01\xae\x04\x04\x23\x49\x40\x3a\x2c\xf3\xae\x43\x93\x9d\x37\x39\x2c\xd3\xc7\x70\x51\x55\x03\x4f\xbd\x0c\x0a\xa7\x01\xd2\x1b\x54\x2e\xa7\x51\x92\x93\x90\x4b\xb9\xc1\x53\x03\x83\x9b\x0a\x66\x33\xd8\x71\x25\xdb\xf2\xc3\x56\x5a\x2b\xd5\x2a\x61\xf8\xe0\xe4\x56\x14\xb8\x95\x17\x42\xf7\x01\x26\x52\x24\xa9\xfb\x38\xfa\xa8\xd0\xcc\x26\x3c\x28\x39\x6c\x8d\x17\xff\xf8\xe0\x77\x64\x80\x44\xa8\x03\x20\xbe\x71\x74\x3c\x1c\x07\x82\x0b\x31\xe2\xd0\x63\xb2\x20\xa4\xff\xe0\xe6\x14\x5c\xf4\xe6\xce\x70\xf1\x9c\xb6\x48\x01\xdc\x18\x7e\xca\xe0\xc5\x60\xa5\x4f\x22\xd2\xaa\x7c\x83\x09\xbc\x06\x09\xc1\xb4\x3f\x9b\x5f\x75\x61\x84\xf0\x7e\x15\x1e\x23\xd8\x18\x68\xc8\x07\x8e\x6b\xd9\xae\xfb\xbb\x76\x8b\xba\x13\xa0\x15\xa6\x08\xba\x13\x9f\x6f\x5e\xca\x17\x29\xbe\xba\xc9\xc0\xa7\xa7\x9d\xb7\x09\x87\xd9\xb5\x88\xbb\x90\x05\x5a\x32\xfa\xd4\x07\xc9\x30\xaf\x90\x16\xcf\x16\xc2\x35\x78\x15\x7a\x36\xa0\x97\x91\x9a\xcb\x96\x13\x70\xe3\xca\xee\x02\x79\x46\x30\xf8\x29\xab\x06\xbe\x04\x50\x5f\x83\xda\xe2\xfd\x8e\x75\xb6\xc1\x93\x4d\x39\xbc\x5b\xaf\x90\x0a\xf6\xbe\x33\xc7\x67\x96\x46\x99\x52\x53\xf1\xbe\x3a\xe1\x0b\x8d\x16\x94\x26\xc0\x7f\xa5\x75\xaa\x8d\xc1\x23\x98\x54\xb2\x89\xd3\x28\xc0\xd0\xa6\x62\xaf\xe4\x6d\xab\xf7\x8a\xaa\x90\xb6\xef\xc0\xbf\x6f\x77\x74\x1a\x1a\x88\xc3\xf0\x14\x13\x98\x0c\xd3\x3e\x48\x2f\xf8\xb8\x15\xf2\x6d\x3e\xce\x7b\x81\xe6\x3d\xa5\xab\xde\x9b\x85\x8c\xc5\xce\x8a\xc2\xb5\x2c\x85\x47\x57\x3c\x43\x44\xb7\xdc\xf7\xf2\xb4\x27\x7b\x41\x87\xc6\x1e\x7f\x1d\x2f\xaf\xba\xfc\xbd\xb9\xb1\xd1\xab\xed\xc6\x3c\x4c\x6f\x59\xc3\xf7\xf1\x9a\xcb\x1f\xab\x11\x98\x90\x70\x60\xee\xdf\x9d\x70\x3d\x75\x0d\xc3\x2b\xeb\x95\xe8\x9d\x81\xf5\xde\x58\xec\xb8\xe3\xb0\x3f\xa4\xe9\x9b\xcf\xfa\xb4\xde\x85\x41\x7d\x40\x63\xf7\x36\x26\x39\xcf\x05\x7e\xb1\x3b\xfb\xcf\x30\xad\x6d\x18\xdc\xdd\xcd\x42\x6d\xc7\x7b\x84\xa9\xf7\x15\x47\xe1\xed\x75\x5f\x13\xcb\x0f\x58\x3e\x3e\xf4\x8c\xee\x68\x2a\x14\xf9\xb5\xac\xb2\x94\xaa\xcc\x6b\x27\xd5\xe6\xf1\xbb\x6b\xf3\x5f\xca\xeb\xb9\x8c\xc9\x47\x20\x6e\x56\x48\xdf\x8c\xd4\x6b\xe2\xf6\x3f\xa0\x33\x3b\x33\xf6\x7f\x00\x00\x00\xff\xff\x1f\xa3\x26\xd5\xb9\x09\x00\x00" +var _contractsThirdpartyVersusContentCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xcf\x8f\xea\x36\x10\xbe\xf3\x57\x8c\xde\x29\x51\x0b\xb4\x52\xd5\x43\x04\x62\x5b\xb6\x95\xb8\xb4\x2b\xbd\x57\xf5\xf0\xb4\xaa\xbc\xf1\xb0\x58\x1b\x6c\x64\x0f\x50\x8a\xf8\xdf\x2b\xff\x8a\x9d\x10\x96\x6d\xf7\xb0\xc4\xc9\x7c\x33\xe3\x6f\xbe\x19\x9b\xd5\x35\x1a\x53\xb0\xa6\x29\x47\xb5\x92\xa4\x59\x4d\xb0\x54\x92\x50\xd2\x79\x34\x02\x00\xc8\x4c\x00\x25\x09\x6a\x70\x8b\x92\xe0\xf7\xa3\x44\x7d\x65\xe2\xd6\x07\xa6\x81\x14\xb1\xe6\xf3\x7e\xb7\x6b\x4e\x15\xfc\xb1\x92\xf4\xe3\x0f\xc3\xc6\x0d\xda\x88\x4d\x83\x35\x09\x25\x3f\x93\xd2\xec\x15\x9f\x18\x6d\x2a\xc8\x16\x1f\xc1\x3e\x69\x71\x60\x14\xb0\xd9\x62\x18\x8b\x07\xbb\x8b\x65\xd8\xf4\x4a\x0a\x12\xac\x11\xff\x20\x2f\xca\xf7\x00\x7f\x0a\xda\x70\xcd\x8e\x85\xe0\x71\x5f\xdf\xc2\x5a\xab\x6d\x05\x3f\x71\xae\xd1\x98\xc5\xbb\xf8\x47\xdc\x29\x23\xa8\x03\x27\xf5\x41\xf0\x52\x23\x23\xe4\x19\xf8\x86\xb9\x46\xa3\xf6\xba\x46\xf8\xb9\x51\x2f\x67\xf7\x6a\xc8\x2c\x72\x98\xfc\x8d\xfa\xb6\x51\x15\x09\x60\xab\x5b\x7b\x89\xd8\x12\x69\x21\x5f\x13\x4a\x48\xbb\x37\x29\x68\xf5\x98\xf6\xd7\xb3\x2e\x53\x42\xf6\xcf\x60\xb3\x9e\x08\x0e\x73\xf0\xb8\xeb\x8f\x01\x0f\xf3\xe8\xa9\x35\xb9\x8c\xfc\x7f\xf7\x33\x9d\x6a\xa4\xbd\x96\x40\x1b\x8c\x96\xb0\x56\x1a\x68\x23\x0c\xfc\xf6\xeb\x97\xf7\xa9\x12\x92\x50\xaf\x59\x8d\xf0\xb4\x7f\x69\x44\xdd\xb6\xc1\x7b\xec\xad\xf7\x32\x86\x2a\xfe\xca\x78\x2c\xe3\x66\x17\x79\x86\x37\x63\x27\x11\x57\xff\x25\x7a\x56\x0a\x53\xc1\xc3\xd9\xc7\xae\x5c\xd5\x2f\xbd\xa2\x0c\xb1\x1e\xb1\x30\x1b\x9f\x2f\x19\xa9\xed\xe3\x74\x0a\xc7\x20\x78\xd0\xb8\x55\x07\x34\xc0\xa4\xe5\xd2\x69\x3e\x30\x1d\x73\x07\x26\x39\x78\x23\x41\x40\xca\x7f\x66\x4d\x83\xba\xbf\x0d\x37\x3d\xba\x34\xc6\x40\x45\x7c\x48\x12\x2a\x2b\x78\xe8\x2a\x39\x2a\x97\xd4\x1b\x4a\x98\x8d\xbb\xfb\x99\xf8\x5c\x8b\x37\x3c\x55\x90\xdc\x95\xb0\x58\xc0\x8e\x49\x51\x17\x9f\xb6\xc2\x18\x21\x5f\x23\x7d\x9f\xca\x8e\x6b\xdc\x8a\x5e\xab\xbb\x40\x13\xc1\x63\xb3\xbb\x78\xca\xee\x62\x31\x61\xbe\x77\xbb\x2e\x82\x16\x67\x63\x87\xbc\x41\x2e\xf7\xd3\x00\x88\xbd\x59\x66\x1d\xb1\x96\x44\xc6\x79\x87\xc3\x96\x62\x03\x5c\xb8\x07\xa6\x4f\xb9\xa3\x16\x64\xcd\x57\x8f\x11\x28\x38\x30\xad\xd9\xe9\xae\x86\x43\x22\x85\x4b\x36\xb0\x5d\x5e\xd3\x9d\x04\x0e\xf3\x96\x92\x51\xc7\xcc\x26\xc3\xb9\x8b\x2e\xf1\x18\x0a\x14\xd2\x49\xb9\xc3\x71\x23\xea\x4d\xab\x29\xfb\x51\x35\x1c\x94\xc4\xab\x98\xaa\xe1\x5f\x06\xab\xfc\x55\xf0\x67\xfb\xb2\x4b\x70\x5b\xbe\x7c\xd2\xda\xba\xd9\x29\x7b\xb7\x6a\x1c\x0d\x69\x75\x6a\x83\xde\xa8\xdb\x2b\xd2\xea\xd1\x84\x1a\xbb\x96\x70\x34\x83\x5a\x87\x02\xd8\x2d\x31\x02\xa6\xed\x5c\xe9\xd5\xf0\x6e\x31\xbc\xf7\xa2\xac\xe0\xab\x27\xfb\xf9\x3c\x24\xad\xae\xe4\xdf\xf0\x64\x86\xb2\xfd\x5f\x53\xeb\x7e\x3c\x4b\xfe\xa2\x9d\xcc\xa9\xaf\xc2\xdc\x82\x97\x46\xbd\x00\x57\x68\x40\x2a\x02\xfc\x5b\x98\xbc\xc7\x2e\x43\x53\xb1\xae\xd5\x5e\x86\x83\xc6\x65\xe8\x4e\xbb\x5f\xb6\x3b\x3a\xa5\xf9\x68\x59\x79\x08\x41\x26\xe9\x75\x4a\xb8\xed\x3b\x0f\x87\x1c\xfa\xf1\xa8\xcb\x96\x9d\xfe\xe1\x95\x85\xef\x8e\x24\x3b\x8c\x25\x1e\x6d\x0b\xcf\xc6\xc1\x8d\x9b\xc4\xed\x79\x18\x71\xd9\xdd\x28\x3b\x1c\xc3\x43\x22\xc9\xa9\x38\x3f\xf2\x07\xf0\xc9\x7a\xe0\x23\xcc\x07\xdf\x7e\x03\xdf\x5f\xb3\xe5\x33\xcf\x09\xea\x9f\x1a\xd3\x29\xa4\x5b\x92\x93\xb4\x73\x0a\xc6\x79\x6d\xcd\x9c\x4a\xba\x49\x7c\xd7\xfd\x38\x78\x63\x83\x39\x4c\x77\x7e\x39\x3d\xa0\x36\x7b\x13\x52\x5f\x5e\xf7\x4d\xcf\x4b\x76\x4d\xb4\x5e\x8c\x5f\xde\xf5\x62\x67\x4b\xa8\x3e\xcc\xbd\xcf\xb0\xcc\x7b\xc7\xae\x27\xc1\xe5\xc4\xb0\x03\x16\xb3\x71\x24\xf5\x86\x40\xfd\xa8\xb9\xd6\x68\x96\x67\xbf\xc8\x83\xb7\x50\x5f\x8b\xcb\xe8\xdf\x00\x00\x00\xff\xff\xc7\xb0\x77\xfe\xa5\x0b\x00\x00" func contractsThirdpartyVersusContentCdcBytes() ([]byte, error) { return bindataRead( @@ -360,11 +464,11 @@ func contractsThirdpartyVersusContentCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/thirdparty/versus/Content.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbb, 0x7e, 0x60, 0x30, 0x5f, 0xb0, 0x90, 0x82, 0xdd, 0x9, 0x27, 0x17, 0xfc, 0x5, 0xc8, 0x14, 0x37, 0x13, 0x87, 0xdb, 0xfb, 0xe6, 0xff, 0xbb, 0xf0, 0xd1, 0xcc, 0x1c, 0xc5, 0x57, 0xa8, 0x9a}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x78, 0x3a, 0xfc, 0xba, 0xaa, 0xbf, 0x78, 0xdd, 0x6d, 0xec, 0x54, 0x59, 0x8f, 0x61, 0x53, 0x51, 0xca, 0x61, 0x5d, 0x2a, 0x57, 0x68, 0x23, 0xb7, 0x9e, 0x82, 0x5e, 0x44, 0xfc, 0x64, 0xe4}} return a, nil } -var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x57\x4f\x73\x1b\xb7\x0f\xbd\xfb\x53\x68\x74\x4e\x64\xf0\x3f\x98\x5b\x26\xf9\xe5\x96\xdf\xa1\x4e\x7a\xc9\x74\x3a\x20\x00\x3a\x1a\xcb\x5a\x77\x77\x65\x37\xd3\xf1\x77\xef\xc8\x91\xe4\x55\xa4\x75\xac\xf4\xe0\xe3\x82\x00\xf6\x3d\x12\x00\x1f\xff\x39\x9b\x4c\xa6\x7a\xbd\x5a\x50\xdf\xb4\xdd\xf4\xcd\x64\x6d\x98\x4c\xa6\xa2\x95\x56\x8b\x7e\x67\x98\x4c\xa6\x37\x4d\xbb\xfe\x76\x21\xe6\x57\x5b\x5b\xa7\xed\xed\x9c\xf5\x2d\x73\xb3\x5a\xae\x57\x77\xb9\x5e\xd3\xc6\xf6\xe0\x7a\x7f\x36\x99\xdc\xaf\xa3\xa6\xdc\x2c\xfb\x96\xb8\x1f\xfc\xeb\xc3\x6a\x79\x39\x2f\x0b\xfd\xd4\x5c\xe9\x72\xf8\xc7\xae\x59\xb5\xac\xeb\xac\xb3\xf3\x5d\xdc\x79\xd7\xd3\x52\xa8\x95\xf3\xbd\xb8\x19\x0b\x4f\x77\xb8\x68\x31\xa7\x4e\xbb\x41\xb2\x01\xcd\x75\x42\xf8\x5b\x15\x2d\x86\x58\xaa\x05\xb5\x44\x71\x17\x3c\x99\x4c\x7b\xed\xfa\xa5\xf6\xdf\x1d\x33\x41\x8a\x51\xb2\x2b\x31\x02\x96\x34\x74\xbc\xa6\xf9\x72\xe7\x58\xad\x73\xc2\xaa\x88\x55\x81\x8a\x4e\x37\x7e\xf7\xdf\xb7\xe0\xd5\x86\xed\xa2\xb9\x3b\x99\xe9\x36\xe6\x64\x96\x40\x1a\x1c\x97\xa8\xae\x7a\x4b\x29\x8f\xb2\x4c\x1a\x41\x2a\x78\x4b\x99\x01\x23\x8e\xb2\x34\x31\xf8\x18\x9c\xcb\x19\x3c\x50\x34\xc7\x59\xfe\xbf\x59\xfe\xea\xb1\xfe\x18\xfa\x0c\xce\x7b\x4c\xa2\x33\x8a\x48\x9a\xaa\x91\xc4\x16\xc6\x99\x48\xd2\x90\x88\x42\x40\x93\xbc\xc7\x91\xf3\xfa\x7c\xf1\xfe\x94\xa3\xfa\x7c\xf1\xfe\x54\xc4\x6a\xad\x13\xa4\x68\xb3\xfa\xcc\x4f\xec\xbd\xe3\x90\x43\x2e\x21\x22\xe6\xe8\xb2\x1b\xd9\xfb\x0f\x9f\x2e\xfa\xa6\xd5\xda\x36\xcb\xfe\x94\x8d\x1f\xc6\x9d\xca\x21\xfb\x02\x91\x2b\x93\x11\x24\x9f\xe2\x28\x07\xaf\x05\xc9\x00\x97\x5c\x31\xb9\x90\x8e\x73\xf8\xa8\x3d\x09\xf5\xf4\xfb\x5c\xef\xba\x13\x38\xec\xc5\xbd\x74\xe5\x0c\xab\xf8\xe2\x6e\xde\xf3\xd7\xd2\x50\x2b\xbf\x3a\xe2\x06\x29\x4e\x65\x96\x7c\x28\x80\x41\xa8\x8a\xf8\xca\xe3\xcc\x1c\x97\xc4\xaa\x25\xda\x40\x11\x80\x46\x2b\xec\x1d\xf5\xb4\x68\x2e\x7f\xce\xa5\xff\x3a\x6f\xe5\x86\xda\xfe\xdb\xf9\xb2\xf6\x7f\xf2\xf7\xb8\xf3\xc7\x14\xcf\xe0\xb2\x5f\x40\x99\x12\x0b\x39\x32\xaa\xcc\x76\x7c\xa4\x39\xeb\xd9\x79\x35\x1c\x4c\x52\x2f\x65\x94\xcb\x6f\xda\xb7\x73\xbd\xa5\xc5\x7f\x61\xb3\x4b\xf2\xc2\x7c\xde\xb6\xcf\xe8\xf9\x01\x8d\x5b\x6d\xbb\x55\x77\xfe\xb6\x7d\x4e\xcb\xef\x01\x97\x94\x63\xad\x26\x19\x48\xa5\xd4\xfa\xc4\x0d\x9a\x99\xc0\x5b\x34\x90\xb1\x38\x27\xc7\x81\xbf\x6b\x96\xbd\x3e\x67\x60\x1d\x82\xdf\x84\xbe\x30\x81\xff\xdd\x6a\x7b\xd9\xea\x73\x2e\xbb\x9d\xeb\x0b\x37\xf2\xfb\xf9\xe5\xbc\xa7\xc5\xb3\x6a\xe6\xd1\xf7\x85\x41\x5f\xe8\x5f\x2b\x5d\x7c\xa4\xf6\x4a\xfb\x9b\x05\x3d\x20\xfd\x09\xf6\x83\x90\x97\xa2\xb0\xd3\xc1\x4b\xed\xef\x9a\xf6\x6a\x20\x83\x87\xc2\xcd\xd8\x34\x83\x19\xcc\xcc\x9b\xb5\xdc\xde\xfc\x6c\xf8\x23\x62\xd6\xae\x9b\x6d\x2c\xb3\x65\x23\xda\xcd\x9a\x65\x5d\x34\x77\xb3\xa6\xbd\x7c\x93\x01\xb6\x18\x87\x44\x36\x61\xa2\xb7\xe3\x51\x3b\x88\x1b\x05\x7f\x04\xe2\x4e\xdc\x0f\x36\x9e\x44\x5a\xed\xba\x8d\x14\x46\x89\x0a\x01\x63\x01\xb2\xc0\x8f\x9a\x79\x7a\xa5\xdf\xd6\x2e\x89\xd9\x91\x89\x29\x43\x4a\x60\x13\x42\x08\x56\x45\x8b\xe6\x14\xc5\x93\x60\xb0\xc6\x49\xaa\x62\x8d\xd7\x54\x0b\x63\x2e\x01\x13\x78\xa7\x6c\x4c\xda\xcc\xbe\x6d\x45\xec\x70\x75\x0f\xe7\xfc\x9a\xe4\x7a\xbe\x1c\x05\x07\x86\x2b\xa8\xad\xb6\x26\x13\x7c\x80\x03\x70\x85\x31\xd8\xe8\x5d\xce\xde\x00\x05\x83\xc2\x39\x19\x9f\x6b\x0e\x98\x11\x1d\x43\x45\x9f\xac\x50\xc1\x5a\xbc\x24\x2a\x8c\x20\xa9\x94\x58\x2c\x7a\x9f\x9e\x06\x77\xb3\xa0\xbe\x36\xed\xf5\x28\x3e\x93\x72\x89\xc5\x70\x89\x29\x04\x75\xe6\x00\x1f\x27\xc0\x10\x35\xf8\x62\x8b\x0d\x88\x48\x6c\x1c\x49\x4e\xa1\x50\x0c\x56\x80\x73\x30\x80\x12\x41\x92\xd4\x90\xc2\xba\x62\xa3\xcf\xd1\xc4\x9c\x82\xe8\x08\xbe\x55\xa7\xad\x19\x3f\x52\x57\x59\x2c\x1b\x4a\x58\x83\xaa\x1e\xa0\x42\x00\x1b\x2a\x88\xa9\xb6\x8a\x29\x04\x6a\xb0\x7a\x9f\x22\x9a\x2a\x12\x29\xae\x15\xae\x12\x46\xb6\x6c\xab\x56\x42\x63\xa4\x02\x46\xf1\x20\xc5\xf1\x13\xa8\xec\x28\x2a\x05\x27\xa4\x45\x05\x99\x20\x9a\x70\x58\x68\x51\x6d\xb4\x68\x85\x6a\xb1\x3e\x4a\xc0\x94\xd0\x60\x12\x97\x24\x59\xad\x24\xea\x62\xca\x0c\xb1\x90\xb7\x0e\x43\x70\xeb\xfd\x94\x8a\xa5\x18\xdd\x8e\xfa\xa3\xa8\xdc\x78\x85\xf9\x40\x26\x45\xc7\xd9\x01\x44\xa6\x03\x54\x86\x63\xcd\x11\x2d\x33\x6a\x02\x63\x51\x5d\x88\x35\x07\x31\xae\x7a\x23\xb6\x72\xe4\xec\xb3\x73\x39\x95\x98\x15\x6a\x85\x62\x6a\xac\xb6\x82\x32\xd8\xf2\xe3\xab\x5a\xf4\x66\xd1\x7c\xbb\xd6\xa3\xdd\x3a\x84\x79\xa4\x83\xbf\x3c\x4e\xb2\x7d\xd5\x3d\x18\x71\x07\xcf\xb9\xc1\xda\xc3\x03\x69\xe8\xbb\xf7\xfc\xd8\x5f\xd8\xaa\xc6\x7d\xeb\xa3\xfe\x1a\xd8\xd7\x77\xd2\xe0\x73\xab\x0e\x36\x96\x3f\x5e\x1d\x30\xfa\xa1\xf7\x07\xb4\x46\x85\xf8\x20\xff\xe3\xe5\x3d\x30\x0e\xae\xc7\x81\xf5\xf0\xfe\xf9\x29\xa8\x41\xcf\x7f\x39\xe2\xb5\xed\xbc\xb1\x35\xfb\xc4\x9a\x7b\x58\x7b\xac\x87\xb3\xfb\xb3\x7f\x03\x00\x00\xff\xff\xfa\x0a\x91\xa1\xd5\x11\x00\x00" +var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\x4f\x6f\xdb\x4a\x0e\xc0\xcf\xce\xa7\x28\x74\x6e\x1d\xce\x3f\xce\x4c\x6e\xdd\x76\x7b\xeb\x1e\x9a\xee\x5e\x8a\xc5\x03\x67\xc8\x49\x8d\x38\x52\x9e\x24\x27\x28\x8a\x7e\xf7\x07\xc7\xb2\x63\x3b\x4a\xec\xe6\xa1\x79\x68\x4e\x09\x45\x32\x3f\x52\x24\xc5\x99\xef\x27\x93\x2a\x37\x75\xdf\x52\xee\xbb\xea\xec\xd5\xf7\x93\xc9\xa4\x7a\xdb\xf6\xc3\xaf\x93\xaa\x6b\x16\x6d\x96\xea\xec\x55\x35\x3d\xdd\x28\x9e\xf6\x5f\x67\x2d\x5f\x53\xdb\x7f\x3b\xbd\x91\xb6\x5b\x74\xa7\x6f\xdb\x7e\x9a\x39\x57\xaf\xef\xac\x68\x3e\xa3\x4e\xd6\x0e\x27\x93\xea\x8a\x66\x75\x2d\x4b\xb7\x15\xfb\x88\xa5\x28\xaf\xc0\xa7\x54\x0a\xae\x4c\x26\x55\x2f\x5d\x3f\xa8\xc4\x98\x09\xac\x0e\x0a\x62\x48\xc6\x70\xb5\xd4\xf8\x71\x32\x99\xfc\x58\xea\x56\xff\x5a\xb4\xb5\xb4\x07\x10\xbb\x9e\x6a\xa6\x96\x4f\x57\xda\x4f\xc1\xc9\xd5\x62\x4e\x7d\xb3\xf4\x58\x95\xc0\x28\xe0\x02\x26\x20\x0d\xd9\x6f\xd3\xcd\xea\x8b\xa5\x0a\xec\xfe\xf8\xb1\x00\x08\x3c\x22\x47\x93\x10\x21\x24\xbf\x17\xc0\xbb\xa6\xee\xa5\xfe\xf9\x24\x0f\x76\x2f\x96\xe8\xf7\xb3\x8b\x59\x4f\xf3\xc3\xf5\x70\xaf\x78\x24\x9b\xc9\xc9\x67\x91\x84\xda\x11\x02\xd0\x08\x9b\xb7\x2e\x41\x70\x4c\x85\xd9\x96\x0c\x7b\x6c\xff\xbe\x91\xf6\xa2\x15\xa9\x0f\xa0\x6d\xf4\x5e\x8c\xec\xc3\x7f\xcf\xdf\x1f\x5b\x9c\x4b\xdd\xa3\xc1\x5c\x74\x31\x39\x0c\x21\xa2\x89\x66\x04\x4c\xb4\x36\x1c\x08\x75\x14\x1b\x33\x86\x7d\xb0\x79\x73\xfb\xb9\xb9\x3c\x98\xb2\x7b\xba\xb5\xc1\xb1\xdd\x03\x24\xce\xe4\x84\x62\x8a\xd5\xe4\xe3\x9a\x71\x2b\x0c\x85\xce\xa2\x33\x26\x46\xb0\x40\xa8\x0e\x37\xd8\x58\xa4\x5e\x10\xb8\x80\xd5\x14\x33\x84\x87\x91\x2e\xea\x8b\x59\x9a\xcb\xcf\x45\xbb\x6d\x74\x6c\xc4\x22\x41\x07\x87\xa9\x68\x10\x4d\x84\x23\x11\x17\x6d\x0c\x67\x91\x10\x8a\x00\x25\xf9\x25\x23\x65\x07\xfe\xa3\xf4\xc4\xd4\xd3\xff\x66\x72\xdb\x3d\x2b\xfc\x1d\x0f\x7f\x77\x76\xfe\xa3\xb9\x38\xbf\x9d\xf5\xf9\x6b\x6a\xa8\xe5\x67\x65\x62\xcb\xfe\x77\xcb\xc3\xb3\xca\xe0\x57\xbd\x79\xc5\x5e\x9c\x27\x72\x2e\x28\x6f\x6d\x38\x1c\xb1\x1a\x89\x18\x8d\x92\x10\x48\x7c\x51\xec\xb3\xde\x1f\xbd\xff\xf9\xf0\xf9\x1d\xf5\x34\x6f\x2e\x8e\xff\xb6\xd6\xa5\xff\x23\xaf\x8c\x4e\xef\xed\x8f\x1c\xca\x36\x92\xcf\x4c\x86\x94\x48\xce\x3a\x8e\x20\x1b\x6d\xb3\xb1\xa2\xb2\x53\x5e\x2c\xa7\x87\xc8\x9f\xa4\x6f\x67\x72\x43\xf3\x67\x43\x6f\x3c\xbc\x24\xf6\x79\xdf\xb4\x52\xda\xe6\xe0\x22\xb3\xa9\xad\x1d\xa3\x63\x51\x25\x05\x52\x90\x53\x2c\xc1\x1b\x37\xda\x06\x36\x01\xe6\x92\x49\x71\x20\xeb\x71\x1f\xb5\xa9\x9f\xf5\x3d\xd8\xb7\xfb\xdd\x9a\xe1\x5c\xfe\x5c\xc8\xfc\x23\xb5\x97\xd2\x5f\xcf\xe9\x2e\xd2\xa7\x02\x7f\xa0\xff\x62\x1b\xd3\x72\xd6\x7c\x92\xae\x99\xdf\x1c\xbf\xd6\x6f\xdb\xfc\x46\x6f\xe6\xe4\x2e\xe4\xaa\x96\xfe\xb6\x69\x2f\x37\x47\xae\x6d\x4a\xa5\xfd\x14\xa6\x30\x55\x67\xc6\xe1\xaa\x35\xb7\x09\x29\x67\xe9\xba\xe9\x20\x99\xd6\x0d\x4b\x37\x6d\xea\x32\x6f\x6e\xa7\x4d\x7b\x71\x16\x01\x60\x65\xb4\xc5\x3c\xe6\x73\x8b\x77\xf0\xc9\x72\xf3\xb8\xcb\x81\x9c\x72\x6e\x16\x75\xff\x80\xfc\xcd\xf0\x60\xf3\xfe\x88\xb9\x95\xae\x7b\x3c\xef\xd5\xa5\x7c\xbb\x2b\x8e\x9c\x0d\x29\xf4\x11\xbc\x07\xed\x03\x38\xa7\x85\x25\x49\xf4\xc8\x96\x38\x38\xad\x0c\xfb\xc2\x5a\x59\xf1\x25\xe5\x10\x93\x0b\x1e\xac\x91\xac\x94\xbf\x9b\x4c\xab\x3a\xda\xb0\x74\x77\xa5\xfc\x86\xf8\x6a\x56\x8f\x01\x29\x1f\x13\x26\x95\x13\x7a\xe7\xc4\xa8\x5d\xa0\xec\x21\x38\x14\x67\x93\x4e\xda\x85\x10\x28\x2b\x43\x1c\xbd\x4b\x84\x4e\x33\xe4\xe8\x14\x04\x46\x60\xcf\xc5\x79\xb7\x2c\x69\xb4\x11\x15\x46\xef\x58\x1e\x07\xba\x9e\x53\x5f\x9a\xf6\x6a\x34\x49\xa6\x64\xd6\x59\x91\x0f\xc5\x89\xc8\x2e\x53\x00\xd0\xae\x00\xab\xa2\x0b\xab\x44\x20\x2a\x14\x6b\x3d\x06\x55\x98\x91\x70\xb9\xf6\x0b\x05\xcc\x3a\xeb\x22\x85\x82\x52\x5c\x20\x20\x5b\xe0\x64\xf2\x08\xd3\xa2\x93\x56\x8d\x91\x08\x18\x26\x49\xc2\x21\x13\xa0\x72\x7b\xaf\x0b\x45\xa3\x0e\x9a\xa9\x24\x6d\x91\x5d\xf0\x3e\xa8\xe0\xd9\x78\xf6\x5a\x0a\xb1\x18\xf4\x31\x03\x26\xb2\xda\x04\xe7\xcc\x32\x83\x5c\x42\x4a\x4a\x56\x67\xcc\x11\x12\x3d\x46\x02\xd6\x91\xf2\x68\x72\x34\x00\x98\x69\x97\x44\x65\x2c\x11\x83\xce\x39\x88\x07\xa5\x83\x18\x87\x25\x3a\x56\xa6\x58\xc5\xba\x64\xcc\xd1\x46\x63\xa2\x4f\x18\x05\x4a\x81\xa4\x0a\x16\x5d\x40\x32\xe8\xb1\xc2\x59\x92\x98\xd1\x8a\xd1\x20\x5e\x3b\x70\x60\x2c\x64\x4a\xbb\x24\xd1\x24\x65\x93\x71\xa2\x13\x6b\x31\x1c\x91\x81\x85\xb2\xc3\x14\x54\x8c\x29\x10\x68\x16\x96\xe2\x74\xd6\x4b\x40\x46\x95\xb5\x2e\x36\x5a\x96\xa0\x56\x24\x43\x83\xb1\x5c\xcf\x9b\x6f\x57\x32\xd2\x63\x1b\xb0\x91\xa6\xfb\xb2\x1a\x42\xc3\xdd\xc8\x30\x92\x76\x06\xeb\x20\xdb\xdd\x0a\x07\xe1\x83\x6f\xe4\x20\x7f\xe2\x58\xb1\xd6\x58\x9e\x76\xd7\x5e\x76\x96\x82\x7b\xe1\x7a\x27\xbb\x97\xdc\xaf\x3c\x83\xec\x6d\xbb\x31\x58\xdf\x8e\x2c\xff\xfa\xff\xeb\xdd\x78\xf7\x1a\xfb\xcb\x08\xe5\xf6\xc2\x3f\x78\xbc\xbf\x2b\x18\x04\x5b\x17\x1b\x83\xe4\xe1\xc7\xf2\x89\x7f\xbf\xd5\xc6\x5f\xf6\x55\xd6\x5d\x35\xfa\x40\x3f\xf6\xc0\xdc\x3d\x18\xaa\xe0\xe4\xc7\xc9\x5f\x01\x00\x00\xff\xff\x37\x2a\x85\xf0\x98\x13\x00\x00" func flowJsonBytes() ([]byte, error) { return bindataRead( @@ -380,7 +484,7 @@ func flowJson() (*asset, error) { } info := bindataFileInfo{name: "flow.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0xdf, 0xef, 0x5f, 0xd, 0xf0, 0x51, 0xce, 0x96, 0x92, 0x3c, 0x31, 0xd2, 0xdc, 0xac, 0xf, 0x11, 0x17, 0x62, 0x8a, 0x5b, 0x62, 0xe6, 0x5c, 0x7e, 0xde, 0xb7, 0x83, 0xfa, 0xb1, 0xf6, 0xc}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5f, 0xcb, 0xfc, 0x23, 0x87, 0x1f, 0x83, 0xf1, 0x4d, 0x10, 0x3e, 0xce, 0xbe, 0x1b, 0xf7, 0x7e, 0xb6, 0xa5, 0x16, 0xa2, 0xbf, 0xc4, 0x76, 0xc3, 0x3f, 0x1b, 0xb2, 0x35, 0x67, 0x8c, 0xe9, 0x41}} return a, nil } @@ -477,14 +581,19 @@ func AssetNames() []string { var _bindata = map[string]func() (*asset, error){ "contracts/DigitalArt.cdc": contractsDigitalartCdc, "contracts/Evergreen.cdc": contractsEvergreenCdc, + "contracts/SOURCES.md": contractsSourcesMd, "contracts/SequelMarketplace.cdc": contractsSequelmarketplaceCdc, + "contracts/standard/Burner.cdc": contractsStandardBurnerCdc, + "contracts/standard/ExampleNFT.cdc": contractsStandardExamplenftCdc, "contracts/standard/FUSD.cdc": contractsStandardFusdCdc, "contracts/standard/FlowToken.cdc": contractsStandardFlowtokenCdc, "contracts/standard/FungibleToken.cdc": contractsStandardFungibletokenCdc, + "contracts/standard/FungibleTokenMetadataViews.cdc": contractsStandardFungibletokenmetadataviewsCdc, "contracts/standard/FungibleTokenSwitchboard.cdc": contractsStandardFungibletokenswitchboardCdc, "contracts/standard/MetadataViews.cdc": contractsStandardMetadataviewsCdc, "contracts/standard/NFTStorefront.cdc": contractsStandardNftstorefrontCdc, "contracts/standard/NonFungibleToken.cdc": contractsStandardNonfungibletokenCdc, + "contracts/standard/ViewResolver.cdc": contractsStandardViewresolverCdc, "contracts/thirdparty/nft_catalog/NFTCatalog.cdc": contractsThirdpartyNft_catalogNftcatalogCdc, "contracts/thirdparty/nft_catalog/NFTRetrieval.cdc": contractsThirdpartyNft_catalogNftretrievalCdc, "contracts/thirdparty/versus/Art.cdc": contractsThirdpartyVersusArtCdc, @@ -499,11 +608,13 @@ const AssetDebug = false // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png +// +// data/ +// foo.txt +// img/ +// a.png +// b.png +// // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -537,25 +648,30 @@ type bintree struct { var _bintree = &bintree{nil, map[string]*bintree{ "contracts": {nil, map[string]*bintree{ - "DigitalArt.cdc": {contractsDigitalartCdc, map[string]*bintree{}}, - "Evergreen.cdc": {contractsEvergreenCdc, map[string]*bintree{}}, + "DigitalArt.cdc": {contractsDigitalartCdc, map[string]*bintree{}}, + "Evergreen.cdc": {contractsEvergreenCdc, map[string]*bintree{}}, + "SOURCES.md": {contractsSourcesMd, map[string]*bintree{}}, "SequelMarketplace.cdc": {contractsSequelmarketplaceCdc, map[string]*bintree{}}, "standard": {nil, map[string]*bintree{ - "FUSD.cdc": {contractsStandardFusdCdc, map[string]*bintree{}}, - "FlowToken.cdc": {contractsStandardFlowtokenCdc, map[string]*bintree{}}, - "FungibleToken.cdc": {contractsStandardFungibletokenCdc, map[string]*bintree{}}, - "FungibleTokenSwitchboard.cdc": {contractsStandardFungibletokenswitchboardCdc, map[string]*bintree{}}, - "MetadataViews.cdc": {contractsStandardMetadataviewsCdc, map[string]*bintree{}}, - "NFTStorefront.cdc": {contractsStandardNftstorefrontCdc, map[string]*bintree{}}, - "NonFungibleToken.cdc": {contractsStandardNonfungibletokenCdc, map[string]*bintree{}}, + "Burner.cdc": {contractsStandardBurnerCdc, map[string]*bintree{}}, + "ExampleNFT.cdc": {contractsStandardExamplenftCdc, map[string]*bintree{}}, + "FUSD.cdc": {contractsStandardFusdCdc, map[string]*bintree{}}, + "FlowToken.cdc": {contractsStandardFlowtokenCdc, map[string]*bintree{}}, + "FungibleToken.cdc": {contractsStandardFungibletokenCdc, map[string]*bintree{}}, + "FungibleTokenMetadataViews.cdc": {contractsStandardFungibletokenmetadataviewsCdc, map[string]*bintree{}}, + "FungibleTokenSwitchboard.cdc": {contractsStandardFungibletokenswitchboardCdc, map[string]*bintree{}}, + "MetadataViews.cdc": {contractsStandardMetadataviewsCdc, map[string]*bintree{}}, + "NFTStorefront.cdc": {contractsStandardNftstorefrontCdc, map[string]*bintree{}}, + "NonFungibleToken.cdc": {contractsStandardNonfungibletokenCdc, map[string]*bintree{}}, + "ViewResolver.cdc": {contractsStandardViewresolverCdc, map[string]*bintree{}}, }}, "thirdparty": {nil, map[string]*bintree{ "nft_catalog": {nil, map[string]*bintree{ - "NFTCatalog.cdc": {contractsThirdpartyNft_catalogNftcatalogCdc, map[string]*bintree{}}, + "NFTCatalog.cdc": {contractsThirdpartyNft_catalogNftcatalogCdc, map[string]*bintree{}}, "NFTRetrieval.cdc": {contractsThirdpartyNft_catalogNftretrievalCdc, map[string]*bintree{}}, }}, "versus": {nil, map[string]*bintree{ - "Art.cdc": {contractsThirdpartyVersusArtCdc, map[string]*bintree{}}, + "Art.cdc": {contractsThirdpartyVersusArtCdc, map[string]*bintree{}}, "Content.cdc": {contractsThirdpartyVersusContentCdc, map[string]*bintree{}}, }}, }}, @@ -577,7 +693,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/lib/go/iinft/logger.go b/lib/go/iinft/logger.go index fd02b68..7129993 100644 --- a/lib/go/iinft/logger.go +++ b/lib/go/iinft/logger.go @@ -3,7 +3,7 @@ package iinft import ( "strings" - "github.com/onflow/flow-cli/pkg/flowkit/output" + "github.com/onflow/flowkit/v2/output" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) diff --git a/lib/go/iinft/scripts/engine.go b/lib/go/iinft/scripts/engine.go index be927b9..f7481c1 100644 --- a/lib/go/iinft/scripts/engine.go +++ b/lib/go/iinft/scripts/engine.go @@ -75,18 +75,22 @@ func NewEngine(client *gwtf.GoWithTheFlow, preload bool) (*Engine, error) { } func (e *Engine) loadContractAddresses() error { - contracts := e.client.State.Contracts().ByNetwork(e.client.Network) - deployedContracts, err := e.client.State.DeploymentContractsByNetwork(e.client.Network) + contracts := e.client.State.Contracts() + network := e.client.Services.Network() + networkName := network.Name + deployedContracts, err := e.client.State.DeploymentContractsByNetwork(network) if err != nil { return err } - for _, contract := range contracts { - if contract.Alias != "" { - e.wellKnownAddresses[contract.Name] = contract.Alias + for _, contract := range *contracts { + for _, alias := range contract.Aliases { + if alias.Network == networkName { + e.wellKnownAddresses[contract.Name] = alias.Address.HexWithPrefix() + } } } for _, contract := range deployedContracts { - e.wellKnownAddresses[strings.Split(path.Base(contract.Source), ".")[0]] = "0x" + contract.AccountAddress.String() + e.wellKnownAddresses[strings.Split(path.Base(contract.Location()), ".")[0]] = contract.AccountAddress.HexWithPrefix() } for _, requiredAddress := range requiredWellKnownAddresses { diff --git a/lib/go/iinft/scripts/engine_test.go b/lib/go/iinft/scripts/engine_test.go index 1bbc1f7..92b0ef1 100644 --- a/lib/go/iinft/scripts/engine_test.go +++ b/lib/go/iinft/scripts/engine_test.go @@ -1,6 +1,7 @@ package scripts_test import ( + "context" "os" "testing" "time" @@ -22,10 +23,12 @@ func TestNewEngine_emulator(t *testing.T) { client, err := iinft.NewGoWithTheFlowEmbedded("emulator", true, false) require.NoError(t, err) - _, err = client.CreateAccountsE("emulator-account") + ctx := context.Background() + + _, err = client.CreateAccountsE(ctx, "emulator-account") require.NoError(t, err) - err = client.InitializeContractsE() + err = client.InitializeContractsE(ctx) require.NoError(t, err) _, err = scripts.NewEngine(client, false) @@ -36,13 +39,15 @@ func TestNewEngine_emulatorWithFees(t *testing.T) { client, err := iinft.NewGoWithTheFlowEmbedded("emulator", true, true) require.NoError(t, err) - _, err = client.DoNotPrependNetworkToAccountNames().CreateAccountsE("emulator-account") + ctx := context.Background() + + _, err = client.DoNotPrependNetworkToAccountNames().CreateAccountsE(ctx, "emulator-account") require.NoError(t, err) adminAcct := client.Account("emulator-sequel-admin") - scripts.FundAccountWithFlow(t, client, adminAcct.Address(), "1000.0") + scripts.FundAccountWithFlow(t, client, adminAcct.Address, "1000.0") - err = client.InitializeContractsE() + err = client.InitializeContractsE(ctx) require.NoError(t, err) _, err = scripts.NewEngine(client, false) @@ -69,10 +74,12 @@ func TestEngine_GetStandardScript(t *testing.T) { client, err := iinft.NewGoWithTheFlowEmbedded("testnet", false, false) require.NoError(t, err) - _, err = client.CreateAccountsE("emulator-account") + ctx := context.Background() + + _, err = client.CreateAccountsE(ctx, "emulator-account") require.NoError(t, err) - err = client.InitializeContractsE() + err = client.InitializeContractsE(ctx) require.NoError(t, err) e, err := scripts.NewEngine(client, false) @@ -87,10 +94,12 @@ func TestEngine_GetStandardScript_Versus(t *testing.T) { client, err := iinft.NewGoWithTheFlowEmbedded("mainnet", false, false) require.NoError(t, err) - _, err = client.CreateAccountsE("emulator-account") + ctx := context.Background() + + _, err = client.CreateAccountsE(ctx, "emulator-account") require.NoError(t, err) - err = client.InitializeContractsE() + err = client.InitializeContractsE(ctx) require.NoError(t, err) e, err := scripts.NewEngine(client, false) @@ -105,10 +114,12 @@ func TestEngine_GetCustomScript_MOD_FUSD(t *testing.T) { client, err := iinft.NewGoWithTheFlowEmbedded("mainnet", false, false) require.NoError(t, err) - _, err = client.CreateAccountsE("emulator-account") + ctx := context.Background() + + _, err = client.CreateAccountsE(ctx, "emulator-account") require.NoError(t, err) - err = client.InitializeContractsE() + err = client.InitializeContractsE(ctx) require.NoError(t, err) e, err := scripts.NewEngine(client, false) diff --git a/lib/go/iinft/scripts/templates/transactions/account_fund_flow.cdc b/lib/go/iinft/scripts/templates/transactions/account_fund_flow.cdc index 90e4933..5fd747e 100644 --- a/lib/go/iinft/scripts/templates/transactions/account_fund_flow.cdc +++ b/lib/go/iinft/scripts/templates/transactions/account_fund_flow.cdc @@ -2,18 +2,27 @@ import FungibleToken from {{.FungibleToken}} import FlowToken from {{.FlowToken}} +/// This transaction mints tokens using the account that stores the Flow Token Admin resource +/// This is the service account + transaction(recipient: Address, amount: UFix64) { + let tokenAdmin: &FlowToken.Administrator let tokenReceiver: &{FungibleToken.Receiver} - prepare(signer: AuthAccount) { - self.tokenAdmin = signer.borrow<&FlowToken.Administrator>(from: /storage/flowTokenAdmin) - ?? panic("Signer is not the token admin") + prepare(signer: auth(BorrowValue) &Account) { + + self.tokenAdmin = signer.storage + .borrow<&FlowToken.Administrator>(from: /storage/flowTokenAdmin) + ?? panic("Cannot mint: Signer does not store the FlowToken Admin Resource in their account" + .concat(" at the path /storage/flowTokenAdmin.")) self.tokenReceiver = getAccount(recipient) - .getCapability(/public/flowTokenReceiver) - .borrow<&{FungibleToken.Receiver}>() - ?? panic("Unable to borrow receiver reference") + .capabilities.borrow<&{FungibleToken.Receiver}>(/public/flowTokenReceiver) + ?? panic("Could not borrow a Receiver reference to the FlowToken Vault in account " + .concat(recipient.toString()).concat(" at path /public/flowTokenReceiver") + .concat(". Make sure you are sending to an address that has ") + .concat("a FlowToken Vault set up properly at the specified path.")) } execute { @@ -25,4 +34,4 @@ transaction(recipient: Address, amount: UFix64) { destroy minter } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/testing.go b/lib/go/iinft/scripts/testing.go index e1c9219..5adeff6 100644 --- a/lib/go/iinft/scripts/testing.go +++ b/lib/go/iinft/scripts/testing.go @@ -2,6 +2,7 @@ package scripts import ( "bytes" + "context" "fmt" "strconv" "testing" @@ -17,26 +18,30 @@ import ( func ConfigureInMemoryEmulator(t *testing.T, client *gwtf.GoWithTheFlow, adminFlowDeposit string) { t.Helper() - _, err := client.DoNotPrependNetworkToAccountNames().CreateAccountsE("emulator-account") + _, err := client.DoNotPrependNetworkToAccountNames().CreateAccountsE(context.Background(), "emulator-account") require.NoError(t, err) if adminFlowDeposit != "" { adminAcct := client.Account("emulator-sequel-admin") - FundAccountWithFlow(t, client, adminAcct.Address(), adminFlowDeposit) + FundAccountWithFlow(t, client, adminAcct.Address, adminFlowDeposit) } - err = client.InitializeContractsE() + err = client.InitializeContractsE(context.Background()) require.NoError(t, err) } func FundAccountWithFlow(t *testing.T, client *gwtf.GoWithTheFlow, receiverAddress flow.Address, amount string) { t.Helper() - contracts := client.State.Contracts().ByNetwork(client.Network) + contracts := client.State.Contracts() //.ByNetwork(client.Network) addrMap := make(map[string]string) - for _, contract := range contracts { - if contract.Alias != "" { - addrMap[contract.Name] = contract.Alias + networkName := client.Services.Network().Name + + for _, contract := range *contracts { + for _, alias := range contract.Aliases { + if alias.Network == networkName { + addrMap[contract.Name] = alias.Address.HexWithPrefix() + } } } @@ -56,11 +61,15 @@ func FundAccountWithFlow(t *testing.T, client *gwtf.GoWithTheFlow, receiverAddre } func FundAccountWithFlowE(client *gwtf.GoWithTheFlow, receiverAddress flow.Address, amount string) error { - contracts := client.State.Contracts().ByNetwork(client.Network) + contracts := client.State.Contracts() //.ByNetwork(client.Network) addrMap := make(map[string]string) - for _, contract := range contracts { - if contract.Alias != "" { - addrMap[contract.Name] = contract.Alias + networkName := client.Services.Network().Name + + for _, contract := range *contracts { + for _, alias := range contract.Aliases { + if alias.Network == networkName { + addrMap[contract.Name] = alias.Address.HexWithPrefix() + } } } @@ -74,7 +83,7 @@ func FundAccountWithFlowE(client *gwtf.GoWithTheFlow, receiverAddress flow.Addre _, err := client.Transaction(script). Argument(cadence.NewAddress(receiverAddress)). UFix64Argument(amount). - SignProposeAndPayAsService().RunE() + SignProposeAndPayAsService().RunE(context.Background()) return err } @@ -84,7 +93,7 @@ func GetFlowBalance(t *testing.T, se *Engine, address flow.Address) float64 { v, err := se.NewScript("account_balance_flow"). Argument(cadence.NewAddress(address)). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) return iinft.ToFloat64(v) @@ -121,7 +130,7 @@ func GetFUSDBalance(t *testing.T, se *Engine, address flow.Address) float64 { v, err := se.NewScript("account_balance_fusd"). Argument(cadence.NewAddress(address)). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) return iinft.ToFloat64(v) diff --git a/lib/go/iinft/test/digitalart_integration_test.go b/lib/go/iinft/test/digitalart_integration_test.go index 146f57e..a8babef 100644 --- a/lib/go/iinft/test/digitalart_integration_test.go +++ b/lib/go/iinft/test/digitalart_integration_test.go @@ -1,6 +1,7 @@ package test import ( + "context" "testing" "github.com/onflow/cadence" @@ -21,7 +22,7 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address()) + scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) // set up platform account @@ -48,14 +49,14 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { buyerAcctName := user2AccountName buyerAcct := client.Account(buyerAcctName) - scripts.FundAccountWithFlow(t, client, buyerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() - scripts.FundAccountWithFUSD(t, se, buyerAcct.Address(), "1000.0") + scripts.FundAccountWithFUSD(t, se, buyerAcct.Address, "1000.0") checkDigitalArtNFTSupply(t, se, 0) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 0) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 0) metadata := SampleMetadata(4) profile := &evergreen.Profile{ @@ -65,19 +66,19 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { ID: evergreen.RoleArtist, InitialSaleCommission: 0.9, SecondaryMarketCommission: 0.025, - Address: artistAcct.Address(), + Address: artistAcct.Address, }, { ID: evergreen.RolePlatform, InitialSaleCommission: 0.05, SecondaryMarketCommission: 0.025, - Address: platformAcct.Address(), + Address: platformAcct.Address, }, { ID: "ClimateActionFund", InitialSaleCommission: 0.05, SecondaryMarketCommission: 0.025, - Address: greenAcct.Address(), + Address: greenAcct.Address, }, }, } @@ -114,14 +115,14 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, buyerAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 1) + checkTokenInDigitalArtCollection(t, se, buyerAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 1) checkDigitalArtNFTSupply(t, se, 1) val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(buyerAcct.Address())). + Argument(cadence.NewAddress(buyerAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, err := iinft.DigitalArtMetadataFromCadence(val) @@ -129,10 +130,10 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { assert.Equal(t, uint64(1), meta.Edition) - assert.Equal(t, 90.0, scripts.GetFUSDBalance(t, se, artistAcct.Address())) - assert.Equal(t, 900.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address())) - assert.Equal(t, 5.0, scripts.GetFUSDBalance(t, se, platformAcct.Address())) - assert.Equal(t, 5.0, scripts.GetFUSDBalance(t, se, greenAcct.Address())) + assert.Equal(t, 90.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) + assert.Equal(t, 900.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address)) + assert.Equal(t, 5.0, scripts.GetFUSDBalance(t, se, platformAcct.Address)) + assert.Equal(t, 5.0, scripts.GetFUSDBalance(t, se, greenAcct.Address)) }) t.Run("Should be able to mint a token on demand (master sealed, metadata provided)", func(t *testing.T) { @@ -167,14 +168,14 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, buyerAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 2) + checkTokenInDigitalArtCollection(t, se, buyerAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 2) checkDigitalArtNFTSupply(t, se, 2) val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(buyerAcct.Address())). + Argument(cadence.NewAddress(buyerAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, err := iinft.DigitalArtMetadataFromCadence(val) @@ -182,10 +183,10 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { assert.Equal(t, uint64(1), meta.Edition) - assert.Equal(t, 180.0, scripts.GetFUSDBalance(t, se, artistAcct.Address())) - assert.Equal(t, 800.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address())) - assert.Equal(t, 10.0, scripts.GetFUSDBalance(t, se, platformAcct.Address())) - assert.Equal(t, 10.0, scripts.GetFUSDBalance(t, se, greenAcct.Address())) + assert.Equal(t, 180.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) + assert.Equal(t, 800.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address)) + assert.Equal(t, 10.0, scripts.GetFUSDBalance(t, se, platformAcct.Address)) + assert.Equal(t, 10.0, scripts.GetFUSDBalance(t, se, greenAcct.Address)) }) t.Run("Should be able to mint a token on demand (master sealed, metadata not provided)", func(t *testing.T) { @@ -217,14 +218,14 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, buyerAcct.Address().String(), 2) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 3) + checkTokenInDigitalArtCollection(t, se, buyerAcct.Address.String(), 2) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 3) checkDigitalArtNFTSupply(t, se, 3) val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(buyerAcct.Address())). + Argument(cadence.NewAddress(buyerAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, err := iinft.DigitalArtMetadataFromCadence(val) @@ -232,10 +233,10 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { assert.Equal(t, uint64(1), meta.Edition) - assert.Equal(t, 270.0, scripts.GetFUSDBalance(t, se, artistAcct.Address())) - assert.Equal(t, 700.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address())) - assert.Equal(t, 15.0, scripts.GetFUSDBalance(t, se, platformAcct.Address())) - assert.Equal(t, 15.0, scripts.GetFUSDBalance(t, se, greenAcct.Address())) + assert.Equal(t, 270.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) + assert.Equal(t, 700.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address)) + assert.Equal(t, 15.0, scripts.GetFUSDBalance(t, se, platformAcct.Address)) + assert.Equal(t, 15.0, scripts.GetFUSDBalance(t, se, greenAcct.Address)) }) } @@ -273,12 +274,12 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { buyerAcctName := user2AccountName buyerAcct := client.Account(buyerAcctName) - scripts.FundAccountWithFlow(t, client, buyerAcct.Address(), "1000.0") + scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "1000.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() checkDigitalArtNFTSupply(t, se, 0) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 0) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 0) metadata := SampleMetadata(4) profile := &evergreen.Profile{ @@ -288,19 +289,19 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { ID: evergreen.RoleArtist, InitialSaleCommission: 0.9, SecondaryMarketCommission: 0.025, - Address: artistAcct.Address(), + Address: artistAcct.Address, }, { ID: evergreen.RolePlatform, InitialSaleCommission: 0.05, SecondaryMarketCommission: 0.025, - Address: platformAcct.Address(), + Address: platformAcct.Address, }, { ID: "ClimateActionFund", InitialSaleCommission: 0.05, SecondaryMarketCommission: 0.025, - Address: greenAcct.Address(), + Address: greenAcct.Address, }, }, } @@ -337,14 +338,14 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, buyerAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 1) + checkTokenInDigitalArtCollection(t, se, buyerAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 1) checkDigitalArtNFTSupply(t, se, 1) val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(buyerAcct.Address())). + Argument(cadence.NewAddress(buyerAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, err := iinft.DigitalArtMetadataFromCadence(val) @@ -352,10 +353,10 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { assert.Equal(t, uint64(1), meta.Edition) - assert.InDelta(t, initialFlowBalance+1000.0-100.0, scripts.GetFlowBalance(t, se, buyerAcct.Address()), 0.001) - assert.Equal(t, initialFlowBalance+90.0, scripts.GetFlowBalance(t, se, artistAcct.Address())) - assert.Equal(t, initialFlowBalance+5.0, scripts.GetFlowBalance(t, se, platformAcct.Address())) - assert.Equal(t, initialFlowBalance+5.0, scripts.GetFlowBalance(t, se, greenAcct.Address())) + assert.InDelta(t, initialFlowBalance+1000.0-100.0, scripts.GetFlowBalance(t, se, buyerAcct.Address), 0.001) + assert.Equal(t, initialFlowBalance+90.0, scripts.GetFlowBalance(t, se, artistAcct.Address)) + assert.Equal(t, initialFlowBalance+5.0, scripts.GetFlowBalance(t, se, platformAcct.Address)) + assert.Equal(t, initialFlowBalance+5.0, scripts.GetFlowBalance(t, se, greenAcct.Address)) }) t.Run("Should be able to mint a token on demand (master sealed)", func(t *testing.T) { @@ -390,14 +391,14 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, buyerAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 2) + checkTokenInDigitalArtCollection(t, se, buyerAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 2) checkDigitalArtNFTSupply(t, se, 2) val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(buyerAcct.Address())). + Argument(cadence.NewAddress(buyerAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, err := iinft.DigitalArtMetadataFromCadence(val) @@ -405,10 +406,10 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { assert.Equal(t, uint64(1), meta.Edition) - assert.InDelta(t, initialFlowBalance+1000.0-2*100.0, scripts.GetFlowBalance(t, se, buyerAcct.Address()), 0.001) - assert.Equal(t, initialFlowBalance+2*90.0, scripts.GetFlowBalance(t, se, artistAcct.Address())) - assert.Equal(t, initialFlowBalance+2*5.0, scripts.GetFlowBalance(t, se, platformAcct.Address())) - assert.Equal(t, initialFlowBalance+2*5.0, scripts.GetFlowBalance(t, se, greenAcct.Address())) + assert.InDelta(t, initialFlowBalance+1000.0-2*100.0, scripts.GetFlowBalance(t, se, buyerAcct.Address), 0.001) + assert.Equal(t, initialFlowBalance+2*90.0, scripts.GetFlowBalance(t, se, artistAcct.Address)) + assert.Equal(t, initialFlowBalance+2*5.0, scripts.GetFlowBalance(t, se, platformAcct.Address)) + assert.Equal(t, initialFlowBalance+2*5.0, scripts.GetFlowBalance(t, se, greenAcct.Address)) }) } @@ -428,7 +429,7 @@ func TestDigitalArt_Integration_Transfer(t *testing.T) { senderAcctName := user1AccountName senderAcct := client.Account(senderAcctName) - scripts.FundAccountWithFlow(t, client, senderAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, senderAcct.Address, "10.0") _ = se.NewTransaction("account_setup"). SignProposeAndPayAs(senderAcctName). @@ -438,7 +439,7 @@ func TestDigitalArt_Integration_Transfer(t *testing.T) { receiverAcctName := user2AccountName receiverAcct := client.Account(receiverAcctName) - scripts.FundAccountWithFlow(t, client, receiverAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, receiverAcct.Address, "10.0") _ = se.NewTransaction("account_setup"). SignProposeAndPayAs(receiverAcctName). @@ -446,7 +447,7 @@ func TestDigitalArt_Integration_Transfer(t *testing.T) { AssertSuccess() metadata := SampleMetadata(4) - profile := BasicEvergreenProfile(senderAcct.Address()) + profile := BasicEvergreenProfile(senderAcct.Address) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). SignProposeAndPayAs(adminAccountName). @@ -457,7 +458,7 @@ func TestDigitalArt_Integration_Transfer(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(senderAcct.Address())). + Argument(cadence.Address(senderAcct.Address)). Test(t). AssertSuccess() @@ -466,26 +467,26 @@ func TestDigitalArt_Integration_Transfer(t *testing.T) { _ = se.NewTransaction("digitalart_transfer"). SignProposeAndPayAs(senderAcctName). UInt64Argument(3). - Argument(cadence.Address(receiverAcct.Address())). + Argument(cadence.Address(receiverAcct.Address)). Test(t). AssertFailure("missing NFT") - checkDigitalArtCollectionLen(t, se, receiverAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, senderAcct.Address().String(), 1) + checkDigitalArtCollectionLen(t, se, receiverAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, senderAcct.Address.String(), 1) }) t.Run("Should be able to withdraw an NFT and deposit to another accounts collection", func(t *testing.T) { _ = se.NewTransaction("digitalart_transfer"). SignProposeAndPayAs(senderAcctName). UInt64Argument(0). - Argument(cadence.Address(receiverAcct.Address())). + Argument(cadence.Address(receiverAcct.Address)). Test(t). AssertSuccess() // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, receiverAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, receiverAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, senderAcct.Address().String(), 0) + checkTokenInDigitalArtCollection(t, se, receiverAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, receiverAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, senderAcct.Address.String(), 0) }) t.Run("Should be able to withdraw an NFT and destroy it, not reducing the supply", func(t *testing.T) { @@ -496,8 +497,8 @@ func TestDigitalArt_Integration_Transfer(t *testing.T) { Test(t). AssertSuccess() - checkDigitalArtCollectionLen(t, se, receiverAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, senderAcct.Address().String(), 0) + checkDigitalArtCollectionLen(t, se, receiverAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, senderAcct.Address.String(), 0) checkDigitalArtNFTSupply(t, se, 1) }) } diff --git a/lib/go/iinft/test/digitalart_test.go b/lib/go/iinft/test/digitalart_test.go index 47a1509..b5196aa 100644 --- a/lib/go/iinft/test/digitalart_test.go +++ b/lib/go/iinft/test/digitalart_test.go @@ -1,6 +1,7 @@ package test import ( + "context" "os" "sort" "testing" @@ -44,7 +45,7 @@ func TestDigitalArt_Master(t *testing.T) { metadata := SampleMetadata(2) profile, err := evergreen.ProfileToCadence( - BasicEvergreenProfile(artistAcct.Address()), flow.HexToAddress(se.WellKnownAddresses()["Evergreen"]), + BasicEvergreenProfile(artistAcct.Address), flow.HexToAddress(se.WellKnownAddresses()["Evergreen"]), ) require.NoError(t, err) @@ -95,7 +96,7 @@ pub fun main(metadata: DigitalArt.Metadata, evergreenProfile: Evergreen.Profile) Argument(iinft.DigitalArtMetadataToCadence( metadata, flow.HexToAddress(se.WellKnownAddresses()["DigitalArt"])), ). - Argument(profile).RunReturns() + Argument(profile).RunReturns(context.Background()) require.NoError(t, err) }) } @@ -111,7 +112,7 @@ func TestDigitalArt_sealMaster(t *testing.T) { artistAcct := client.Account(user1AccountName) - profile := BasicEvergreenProfile(artistAcct.Address()) + profile := BasicEvergreenProfile(artistAcct.Address) t.Run("Should be able to seal new digital art master", func(t *testing.T) { @@ -178,7 +179,7 @@ func TestDigitalArt_sealMaster(t *testing.T) { t.Run("Shouldn't be able to re-seal an already closed master", func(t *testing.T) { userAcct := client.Account(user1AccountName) - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, userAcct.Address, "10.0") _ = se.NewTransaction("account_setup"). SignProposeAndPayAs(user1AccountName). @@ -201,7 +202,7 @@ func TestDigitalArt_sealMaster(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). Test(t). AssertSuccess() @@ -215,7 +216,7 @@ func TestDigitalArt_sealMaster(t *testing.T) { } `). StringArgument(metadata.Asset). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). @@ -236,7 +237,7 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { userAcct := client.Account(user1AccountName) - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, userAcct.Address, "10.0") _ = se.NewTransaction("account_setup"). SignProposeAndPayAs(user1AccountName). @@ -244,10 +245,10 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { AssertSuccess() checkDigitalArtNFTSupply(t, se, 0) - checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 0) + checkDigitalArtCollectionLen(t, se, userAcct.Address.String(), 0) metadata := SampleMetadata(2) - profile := BasicEvergreenProfile(userAcct.Address()) + profile := BasicEvergreenProfile(userAcct.Address) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). SignProposeAndPayAs(adminAccountName). @@ -260,7 +261,7 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). Test(t). AssertSuccess(). AssertEventCount(5). @@ -277,14 +278,14 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, userAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 1) + checkTokenInDigitalArtCollection(t, se, userAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, userAcct.Address.String(), 1) checkDigitalArtNFTSupply(t, se, 1) val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(userAcct.Address())). + Argument(cadence.NewAddress(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, err := iinft.DigitalArtMetadataFromCadence(val) @@ -298,7 +299,7 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). Test(t). AssertSuccess(). AssertEventCount(5). @@ -315,14 +316,14 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, userAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 2) + checkTokenInDigitalArtCollection(t, se, userAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, userAcct.Address.String(), 2) checkDigitalArtNFTSupply(t, se, 2) val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(userAcct.Address())). + Argument(cadence.NewAddress(userAcct.Address)). UInt64Argument(1). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, err := iinft.DigitalArtMetadataFromCadence(val) @@ -336,7 +337,7 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument("bad_master_id"). UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). Test(t). AssertFailure("Master not found") }) @@ -376,7 +377,7 @@ func TestDigitalArt_isClosed(t *testing.T) { artistAcct := client.Account(user1AccountName) - profile := BasicEvergreenProfile(artistAcct.Address()) + profile := BasicEvergreenProfile(artistAcct.Address) t.Run("isClosed() should return false, if master isn't closed", func(t *testing.T) { metadata := SampleMetadata(1) @@ -394,7 +395,7 @@ func TestDigitalArt_isClosed(t *testing.T) { } `). StringArgument(metadata.Asset). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) @@ -407,14 +408,14 @@ func TestDigitalArt_isClosed(t *testing.T) { } `). StringArgument("non-existent-asset"). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) t.Run("isClosed() should return true, if master is closed", func(t *testing.T) { userAcct := client.Account(user1AccountName) - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, userAcct.Address, "10.0") _ = se.NewTransaction("account_setup"). SignProposeAndPayAs(user1AccountName). @@ -437,7 +438,7 @@ func TestDigitalArt_isClosed(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). Test(t). AssertSuccess() @@ -451,7 +452,7 @@ func TestDigitalArt_isClosed(t *testing.T) { } `). StringArgument(metadata.Asset). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) } @@ -467,7 +468,7 @@ func TestDigitalArt_NFT(t *testing.T) { userAcct := client.Account(user1AccountName) - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, userAcct.Address, "10.0") _ = se.NewTransaction("account_setup"). SignProposeAndPayAs(user1AccountName). @@ -475,7 +476,7 @@ func TestDigitalArt_NFT(t *testing.T) { AssertSuccess() metadata := SampleMetadata(4) - profile := BasicEvergreenProfile(userAcct.Address()) + profile := BasicEvergreenProfile(userAcct.Address) profile.Roles[0].ReceiverPath = "/public/flowTokenReceiver" profile.Roles[0].Description = "artist's royalty" @@ -488,16 +489,16 @@ func TestDigitalArt_NFT(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). Test(t). AssertSuccess() t.Run("DigitalArt.getMetadata(...) should return NFT metadata", func(t *testing.T) { var val cadence.Value val, err = se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(userAcct.Address())). + Argument(cadence.NewAddress(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, metaErr := iinft.DigitalArtMetadataFromCadence(val) @@ -509,9 +510,9 @@ func TestDigitalArt_NFT(t *testing.T) { t.Run("DigitalArt.getMetadata(...) should fail if token doesn't exist in collection", func(t *testing.T) { _, err = se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(userAcct.Address())). + Argument(cadence.NewAddress(userAcct.Address)). UInt64Argument(123). - RunReturns() + RunReturns(context.Background()) require.Error(t, err) }) @@ -529,9 +530,9 @@ pub fun main(address:Address, tokenID:UInt64) : [Type] { return [] } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) viewsArray, ok := viewsVal.(cadence.Array) @@ -562,20 +563,20 @@ pub fun main(address:Address, tokenID:UInt64) : MetadataViews.Display? { return nil } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) displayStruct, ok := val.(cadence.Optional).Value.(cadence.Struct) require.True(t, ok) assert.Equal(t, "MetadataViews.Display", displayStruct.StructType.QualifiedIdentifier) - assert.Equal(t, "Pure Art", displayStruct.Fields[0].ToGoValue().(string)) - assert.Equal(t, "Digital art in its purest form", displayStruct.Fields[1].ToGoValue().(string)) - thumbnailStruct, ok := displayStruct.Fields[2].(cadence.Struct) + assert.Equal(t, cadence.String("Pure Art"), displayStruct.SearchFieldByName("name")) + assert.Equal(t, cadence.String("Digital art in its purest form"), displayStruct.SearchFieldByName("description")) + thumbnailStruct, ok := displayStruct.SearchFieldByName("thumbnail").(cadence.Struct) require.True(t, ok) assert.Equal(t, "MetadataViews.HTTPFile", thumbnailStruct.StructType.QualifiedIdentifier) - assert.Equal(t, "https://sequel.mypinata.cloud/ipfs/QmPreview", thumbnailStruct.Fields[0].ToGoValue().(string)) + assert.Equal(t, cadence.String("https://sequel.mypinata.cloud/ipfs/QmPreview"), thumbnailStruct.SearchFieldByName("url")) }) t.Run("resolveView(Type()) should return MetadataViews.Royalties view", func(t *testing.T) { @@ -602,9 +603,9 @@ pub fun main(address:Address, tokenID:UInt64) { assert(royalties[0].description == "artist's royalty", message: "incorrect royalty description") } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) @@ -628,9 +629,9 @@ pub fun main(address:Address, tokenID:UInt64) { assert(externalURL!.url == "https://app.sequel.space/tokens/digital-art/0", message: "incorrect external URL") } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) @@ -651,9 +652,9 @@ pub fun main(address:Address, tokenID:UInt64) : DigitalArt.Metadata? { return nil } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) meta, metaErr := iinft.DigitalArtMetadataFromCadence(val) @@ -678,12 +679,12 @@ pub fun main(address:Address, tokenID:UInt64) : String { return "" } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) - assert.Equal(t, metadata.Asset, val.(cadence.String).ToGoValue()) + assert.Equal(t, cadence.String(metadata.Asset), val) }) t.Run("getEvergreenProfile() should return DigitalArt's Evergreen profile", func(t *testing.T) { @@ -701,9 +702,9 @@ pub fun main(address:Address, tokenID:UInt64) : Evergreen.Profile? { return nil } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) actual, err := evergreen.ProfileFromCadence(val) @@ -723,7 +724,7 @@ func TestDigitalArt_Collection(t *testing.T) { userAcct := client.Account(user1AccountName) - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, userAcct.Address, "10.0") _ = se.NewTransaction("account_setup"). SignProposeAndPayAs(user1AccountName). @@ -731,7 +732,7 @@ func TestDigitalArt_Collection(t *testing.T) { AssertSuccess() metadata := SampleMetadata(4) - profile := BasicEvergreenProfile(userAcct.Address()) + profile := BasicEvergreenProfile(userAcct.Address) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). SignProposeAndPayAs(adminAccountName). @@ -744,7 +745,7 @@ func TestDigitalArt_Collection(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(2). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). Test(t). AssertSuccess() @@ -758,17 +759,17 @@ pub fun main(address:Address, tokenID:UInt64) : [UInt64] { return collection.getIDs() } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) idArray, ok := viewsVal.(cadence.Array) require.True(t, ok) require.Equal(t, 2, len(idArray.Values)) ids := []int{ - int(idArray.Values[0].(cadence.UInt64).ToGoValue().(uint64)), - int(idArray.Values[1].(cadence.UInt64).ToGoValue().(uint64)), + int(idArray.Values[0].(cadence.UInt64)), + int(idArray.Values[1].(cadence.UInt64)), } sort.Ints(ids) assert.Equal(t, 0, ids[0]) @@ -788,12 +789,12 @@ pub fun main(address:Address, tokenID:UInt64) : UInt64 { return tokenRef.id } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(1). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) - assert.Equal(t, uint64(1), val.(cadence.UInt64).ToGoValue().(uint64)) + assert.Equal(t, uint64(1), val.(cadence.UInt64)) }) t.Run("borrowNFT(...) should fail if NFT isn't found", func(t *testing.T) { @@ -809,9 +810,9 @@ pub fun main(address:Address, tokenID:UInt64) : UInt64 { return tokenRef.id } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(2). - RunReturns() + RunReturns(context.Background()) require.Error(t, err) }) @@ -826,12 +827,12 @@ pub fun main(address:Address, tokenID:UInt64) : String { return daToken!.metadata.asset } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(1). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) - assert.Equal(t, metadata.Asset, val.(cadence.String).ToGoValue()) + assert.Equal(t, cadence.String(metadata.Asset), val) }) t.Run("borrowDigitalArt(...) should return nil if token isn't found", func(t *testing.T) { @@ -847,12 +848,12 @@ pub fun main(address:Address, tokenID:UInt64) : String { return "not found" } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(123). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) - assert.Equal(t, "not found", val.(cadence.String).ToGoValue()) + assert.Equal(t, cadence.String("not found"), val) }) t.Run("borrowViewResolver(...) should return MetadataViews.Display view", func(t *testing.T) { @@ -882,9 +883,9 @@ pub fun main(address:Address, tokenID:UInt64) { } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) @@ -905,9 +906,9 @@ pub fun main(address:Address, tokenID:UInt64) { assert(profile.id == "did:sequel:evergreen1", message: "bad value of evergreen profile ID") } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(0). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) @@ -926,9 +927,9 @@ pub fun main(address:Address, tokenID:UInt64) { assert(token == nil, message: "token not nil") } `). - Argument(cadence.Address(userAcct.Address())). + Argument(cadence.Address(userAcct.Address)). UInt64Argument(123). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) } @@ -945,7 +946,7 @@ func TestDigitalArt_createEmptyCollection(t *testing.T) { receiverAcctName := user2AccountName receiverAcct := client.Account(receiverAcctName) - scripts.FundAccountWithFlow(t, client, receiverAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, receiverAcct.Address, "10.0") t.Run("Should be able to create a new empty NFT Collection", func(t *testing.T) { @@ -954,7 +955,7 @@ func TestDigitalArt_createEmptyCollection(t *testing.T) { Test(t). AssertSuccess() - checkDigitalArtCollectionLen(t, se, receiverAcct.Address().String(), 0) + checkDigitalArtCollectionLen(t, se, receiverAcct.Address.String(), 0) }) } @@ -963,7 +964,7 @@ func checkDigitalArtNFTSupply(t *testing.T, se *scripts.Engine, expectedSupply i _, err := se.NewInlineScript( inspectNFTSupplyScript(se.WellKnownAddresses(), "DigitalArt", expectedSupply), - ).RunReturns() + ).RunReturns(context.Background()) require.NoError(t, err) } @@ -972,7 +973,7 @@ func checkTokenInDigitalArtCollection(t *testing.T, se *scripts.Engine, userAddr _, err := se.NewInlineScript( inspectCollectionScript(se.WellKnownAddresses(), userAddr, "DigitalArt", "DigitalArt.CollectionPublicPath", nftID), - ).RunReturns() + ).RunReturns(context.Background()) require.NoError(t, err) } @@ -981,6 +982,6 @@ func checkDigitalArtCollectionLen(t *testing.T, se *scripts.Engine, userAddr str _, err := se.NewInlineScript( inspectCollectionLenScript(se.WellKnownAddresses(), userAddr, "DigitalArt", "DigitalArt.CollectionPublicPath", length), - ).RunReturns() + ).RunReturns(context.Background()) require.NoError(t, err) } diff --git a/lib/go/iinft/test/digitalart_test.go.backup b/lib/go/iinft/test/digitalart_test.go.backup new file mode 100644 index 0000000..e5bdd39 --- /dev/null +++ b/lib/go/iinft/test/digitalart_test.go.backup @@ -0,0 +1,939 @@ +package test + +import ( + "os" + "sort" + "testing" + "time" + + "github.com/onflow/cadence" + "github.com/onflow/flow-go-sdk" + "github.com/piprate/sequel-flow-contracts/lib/go/iinft" + "github.com/piprate/sequel-flow-contracts/lib/go/iinft/evergreen" + "github.com/piprate/sequel-flow-contracts/lib/go/iinft/gwtf" + "github.com/piprate/sequel-flow-contracts/lib/go/iinft/scripts" + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const ( + adminAccountName = "emulator-sequel-admin" + platformAccountName = "emulator-sequel-platform" + user1AccountName = "emulator-user1" + user2AccountName = "emulator-user2" + user3AccountName = "emulator-user3" + initialFlowBalance = 0.001 +) + +func init() { + log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.Stamp}) +} + +func TestDigitalArt_Master(t *testing.T) { + client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) + require.NoError(t, err) + + scripts.ConfigureInMemoryEmulator(t, client, "1000.0") + + se, err := scripts.NewEngine(client, false) + require.NoError(t, err) + + artistAcct := client.Account(user1AccountName) + + metadata := SampleMetadata(2) + profile := BasicEvergreenProfile(artistAcct.Address()) + + t.Run("Should be able to seal new digital art master", func(t *testing.T) { + + _, err := client.Script(` +import DigitalArt from 0x01cf0e2f2f715450 +import Evergreen from 0x01cf0e2f2f715450 + +pub fun main( + metadata: DigitalArt.Metadata, + id: UInt32, + description: String, + roleIDs: [String], + roleAddresses: [Address], + initialSaleCommissions: [UFix64], + secondaryMarketCommissions: [UFix64] +) { + + // test typical master lifecycle + + var evergreenProfile = Evergreen.profileFromFlattenedView( + id: id, + description: description, + roleIDs: roleIDs, + roleAddresses: roleAddresses, + initialSaleCommissions: initialSaleCommissions, + secondaryMarketCommissions: secondaryMarketCommissions + ) + + var master = DigitalArt.Master( + metadata: metadata, + evergreenProfile: evergreenProfile + ) + + assert(master.availableEditions() == 2, message: "wrong availableEditions() value") + assert(master.newEditionID() == 1, message: "wrong first edition value") + assert(master.availableEditions() == 1, message: "wrong availableEditions() value") + assert(master.newEditionID() == 2, message: "wrong first edition value") + assert(master.availableEditions() == 0, message: "wrong availableEditions() value") + + // this shouldn't happen, but we want to ensure availableEditions() == 0 + + assert(master.newEditionID() == 3, message: "wrong first edition value") + assert(master.availableEditions() == 0, message: "wrong availableEditions() value") + + // close the master + + master.close() + assert(master.availableEditions() == 0, message: "wrong availableEditions() value") + + // test closing the master before all edition are minted + + master = DigitalArt.Master( + metadata: metadata, + evergreenProfile: evergreenProfile + ) + + assert(master.availableEditions() == 2, message: "wrong availableEditions() value") + + master.close() + assert(master.availableEditions() == 0, message: "wrong availableEditions() value") +} +`). + Argument(iinft.DigitalArtMetadataToCadence( + metadata, flow.HexToAddress(se.WellKnownAddresses()["DigitalArt"])), + ). + Argument( + evergreen.ProfileToCadence(profile, flow.HexToAddress(se.WellKnownAddresses()["Evergreen"])), + ).RunReturns() + require.NoError(t, err) + }) +} + +func TestDigitalArt_sealMaster(t *testing.T) { + client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) + require.NoError(t, err) + + scripts.ConfigureInMemoryEmulator(t, client, "1000.0") + + se, err := scripts.NewEngine(client, false) + require.NoError(t, err) + + artistAcct := client.Account(user1AccountName) + + profile := BasicEvergreenProfile(artistAcct.Address()) + + t.Run("Should be able to seal new digital art master", func(t *testing.T) { + + metadata := SampleMetadata(4) + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertSuccess() + }) + + t.Run("Shouldn't be able to seal the same digital art master twice", func(t *testing.T) { + + metadata := SampleMetadata(4) + metadata.Asset = "did:sequel:asset-2" + + // Seal the master + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertSuccess() + + // try again, should fail + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertFailure("Master already sealed") + }) + + t.Run("Shouldn't be able to seal the master with an empty asset ID", func(t *testing.T) { + + metadata := SampleMetadata(4) + metadata.Asset = "" + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertFailure("Empty asset ID") + }) + + t.Run("Shouldn't be able to seal the master with zero maxEditions", func(t *testing.T) { + + metadata := SampleMetadata(4) + metadata.MaxEdition = 0 + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertFailure("MaxEdition should be positive") + }) + + t.Run("Shouldn't be able to seal the master with non-zero edition", func(t *testing.T) { + + metadata := SampleMetadata(4) + metadata.Edition = 2 + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertFailure("Edition should be zero") + }) + + t.Run("Shouldn't be able to re-seal an already closed master", func(t *testing.T) { + userAcct := client.Account(user1AccountName) + + scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + + _ = se.NewTransaction("account_setup"). + SignProposeAndPayAs(user1AccountName). + Test(t). + AssertSuccess() + + metadata := SampleMetadata(1) + metadata.Asset = "did:sequel:asset-id-new" + + // seal a master with 1 edition + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertSuccess() + + // mint the only available edition + + _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). + SignProposeAndPayAs(adminAccountName). + StringArgument(metadata.Asset). + UInt64Argument(1). + Argument(cadence.Address(userAcct.Address())). + Test(t). + AssertSuccess() + + // ensure the master is closed + + _, err := client.Script(` + import DigitalArt from 0x01cf0e2f2f715450 + + pub fun main(masterId: String) { + assert(DigitalArt.isClosed(masterId: masterId), message: "master is not closed") + } + `). + StringArgument(metadata.Asset). + RunReturns() + require.NoError(t, err) + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertFailure("Master already sealed") + }) +} + +func TestDigitalArt_mintEditionNFT(t *testing.T) { + client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) + require.NoError(t, err) + + scripts.ConfigureInMemoryEmulator(t, client, "1000.0") + + se, err := scripts.NewEngine(client, false) + require.NoError(t, err) + + userAcct := client.Account(user1AccountName) + + scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + + _ = se.NewTransaction("account_setup"). + SignProposeAndPayAs(user1AccountName). + Test(t). + AssertSuccess() + + checkDigitalArtNFTSupply(t, se, 0) + checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 0) + + metadata := SampleMetadata(2) + profile := BasicEvergreenProfile(userAcct.Address()) + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertSuccess() + + t.Run("Should be able to mint a token", func(t *testing.T) { + + _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). + SignProposeAndPayAs(adminAccountName). + StringArgument(metadata.Asset). + UInt64Argument(1). + Argument(cadence.Address(userAcct.Address())). + Test(t). + AssertSuccess(). + AssertEventCount(5). + AssertEmitEventName("A.01cf0e2f2f715450.DigitalArt.Minted", "A.01cf0e2f2f715450.DigitalArt.Deposit"). + AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + "id": "0", + "asset": "did:sequel:asset-id", + "edition": "1", + "modID": "0", + })). + AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + "id": "0", + "to": "0xf3fcd2c1a78f5eee", + })) + + // Assert that the account's collection is correct + checkTokenInDigitalArtCollection(t, se, userAcct.Address().String(), 0) + checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 1) + checkDigitalArtNFTSupply(t, se, 1) + + val, err := se.NewScript("digitalart_get_metadata"). + Argument(cadence.NewAddress(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + + meta, err := iinft.DigitalArtMetadataFromCadence(val) + require.NoError(t, err) + + assert.Equal(t, uint64(1), meta.Edition) + }) + + t.Run("Editions should have different metadata", func(t *testing.T) { + _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). + SignProposeAndPayAs(adminAccountName). + StringArgument(metadata.Asset). + UInt64Argument(1). + Argument(cadence.Address(userAcct.Address())). + Test(t). + AssertSuccess(). + AssertEventCount(5). + AssertEmitEventName("A.01cf0e2f2f715450.DigitalArt.Minted", "A.01cf0e2f2f715450.DigitalArt.Deposit"). + AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + "id": "1", + "asset": "did:sequel:asset-id", + "edition": "2", + "modID": "0", + })). + AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + "id": "1", + "to": "0xf3fcd2c1a78f5eee", + })) + + // Assert that the account's collection is correct + checkTokenInDigitalArtCollection(t, se, userAcct.Address().String(), 1) + checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 2) + checkDigitalArtNFTSupply(t, se, 2) + + val, err := se.NewScript("digitalart_get_metadata"). + Argument(cadence.NewAddress(userAcct.Address())). + UInt64Argument(1). + RunReturns() + require.NoError(t, err) + + meta, err := iinft.DigitalArtMetadataFromCadence(val) + require.NoError(t, err) + + assert.Equal(t, uint64(2), meta.Edition) + }) + + t.Run("Should fail if master doesn't exist", func(t *testing.T) { + _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). + SignProposeAndPayAs(adminAccountName). + StringArgument("bad_master_id"). + UInt64Argument(1). + Argument(cadence.Address(userAcct.Address())). + Test(t). + AssertFailure("Master not found") + }) + + t.Run("Should fail if no available editions", func(t *testing.T) { + _ = client.Transaction(` +import DigitalArt from 0x01cf0e2f2f715450 + +transaction(masterId: String) { + let admin: &DigitalArt.Admin + + prepare(signer: AuthAccount) { + self.admin = signer.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! + assert(self.admin.availableEditions(masterId: masterId) == 0, message: "Available editions remain") + } + + execute { + let newNFT <- self.admin.mintEditionNFT(masterId: masterId, modID: 0) + destroy newNFT + } +}`). + SignProposeAndPayAs(adminAccountName). + StringArgument(metadata.Asset). + Test(t). + AssertFailure("No more tokens to mint") + }) +} + +func TestDigitalArt_isClosed(t *testing.T) { + client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) + require.NoError(t, err) + + scripts.ConfigureInMemoryEmulator(t, client, "1000.0") + + se, err := scripts.NewEngine(client, false) + require.NoError(t, err) + + artistAcct := client.Account(user1AccountName) + + profile := BasicEvergreenProfile(artistAcct.Address()) + + t.Run("isClosed() should return false, if master isn't closed", func(t *testing.T) { + metadata := SampleMetadata(1) + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertSuccess() + + _, err := client.Script(` + import DigitalArt from 0x01cf0e2f2f715450 + + pub fun main(masterId: String) { + assert(!DigitalArt.isClosed(masterId: masterId), message: "test failed") + } + `). + StringArgument(metadata.Asset). + RunReturns() + require.NoError(t, err) + }) + + t.Run("isClosed() should return false, if master isn't sealed at all", func(t *testing.T) { + _, err := client.Script(` + import DigitalArt from 0x01cf0e2f2f715450 + + pub fun main(masterId: String) { + assert(!DigitalArt.isClosed(masterId: masterId), message: "test failed") + } + `). + StringArgument("non-existent-asset"). + RunReturns() + require.NoError(t, err) + }) + + t.Run("isClosed() should return true, if master is closed", func(t *testing.T) { + userAcct := client.Account(user1AccountName) + + scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + + _ = se.NewTransaction("account_setup"). + SignProposeAndPayAs(user1AccountName). + Test(t). + AssertSuccess() + + metadata := SampleMetadata(1) + metadata.Asset = "did:sequel:asset-new-id" + + // seal a master with 1 edition + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertSuccess() + + // mint the only available edition + + _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). + SignProposeAndPayAs(adminAccountName). + StringArgument(metadata.Asset). + UInt64Argument(1). + Argument(cadence.Address(userAcct.Address())). + Test(t). + AssertSuccess() + + // ensure the master is closed + + _, err := client.Script(` + import DigitalArt from 0x01cf0e2f2f715450 + + pub fun main(masterId: String) { + assert(DigitalArt.isClosed(masterId: masterId), message: "master is not closed") + } + `). + StringArgument(metadata.Asset). + RunReturns() + require.NoError(t, err) + }) +} + +func TestDigitalArt_NFT(t *testing.T) { + client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) + require.NoError(t, err) + + scripts.ConfigureInMemoryEmulator(t, client, "1000.0") + + se, err := scripts.NewEngine(client, false) + require.NoError(t, err) + + userAcct := client.Account(user1AccountName) + + scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + + _ = se.NewTransaction("account_setup"). + SignProposeAndPayAs(user1AccountName). + Test(t). + AssertSuccess() + + metadata := SampleMetadata(4) + profile := BasicEvergreenProfile(userAcct.Address()) + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertSuccess() + + _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). + SignProposeAndPayAs(adminAccountName). + StringArgument(metadata.Asset). + UInt64Argument(1). + Argument(cadence.Address(userAcct.Address())). + Test(t). + AssertSuccess() + + t.Run("DigitalArt.getMetadata(...) should return NFT metadata", func(t *testing.T) { + val, err := se.NewScript("digitalart_get_metadata"). + Argument(cadence.NewAddress(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + + meta, err := iinft.DigitalArtMetadataFromCadence(val) + require.NoError(t, err) + + assert.Equal(t, metadata.Asset, meta.Asset) + assert.Equal(t, uint64(1), meta.Edition) + }) + + t.Run("DigitalArt.getMetadata(...) should fail if token doesn't exist in collection", func(t *testing.T) { + _, err = se.NewScript("digitalart_get_metadata"). + Argument(cadence.NewAddress(userAcct.Address())). + UInt64Argument(123). + RunReturns() + require.Error(t, err) + }) + + t.Run("getViews() should return a list of view types", func(t *testing.T) { + + viewsVal, err := client.Script(` +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : [Type] { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! + if let item = collection.borrowDigitalArt(id: tokenID) { + return item.getViews() + } + + return [] +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + + viewsArray, ok := viewsVal.(cadence.Array) + require.True(t, ok) + require.Equal(t, 2, len(viewsArray.Values)) + assert.Equal(t, "Type()", viewsArray.Values[0].String()) + assert.Equal(t, "Type()", viewsArray.Values[1].String()) + }) + + t.Run("resolveView(Type()) should return MetadataViews.Display view", func(t *testing.T) { + + val, err := client.Script(` +import MetadataViews from 0xf8d6e0586b0a20c7 +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : MetadataViews.Display? { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! + if let item = collection.borrowDigitalArt(id: tokenID) { + if let view = item.resolveView(Type()) { + return view as! MetadataViews.Display + } + } + + return nil +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + + displayStruct, ok := val.(cadence.Optional).Value.(cadence.Struct) + require.True(t, ok) + assert.Equal(t, "MetadataViews.Display", displayStruct.StructType.QualifiedIdentifier) + assert.Equal(t, "Pure Art", displayStruct.Fields[0].ToGoValue().(string)) + assert.Equal(t, "Digital art in its purest form", displayStruct.Fields[1].ToGoValue().(string)) + thumbnailStruct, ok := displayStruct.Fields[2].(cadence.Struct) + require.True(t, ok) + assert.Equal(t, "MetadataViews.IPFSFile", thumbnailStruct.StructType.QualifiedIdentifier) + assert.Equal(t, "QmPreview", thumbnailStruct.Fields[0].ToGoValue().(string)) + }) + + t.Run("resolveView(Type()) should return DigitalArt.Metadata view", func(t *testing.T) { + + val, err := client.Script(` +import MetadataViews from 0xf8d6e0586b0a20c7 +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : DigitalArt.Metadata? { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! + if let item = collection.borrowDigitalArt(id: tokenID) { + if let view = item.resolveView(Type()) { + return view as! DigitalArt.Metadata + } + } + + return nil +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + + meta, err := iinft.DigitalArtMetadataFromCadence(val) + require.NoError(t, err) + + assert.Equal(t, "Pure Art", meta.Name) + assert.Equal(t, "Digital art in its purest form", meta.Description) + assert.Equal(t, uint64(1), meta.Edition) + }) + + t.Run("getAssetID() should return DigitalArt's master ID", func(t *testing.T) { + + val, err := client.Script(` +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : String { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! + if let item = collection.borrowDigitalArt(id: tokenID) { + return item.getAssetID() + } + + return "" +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + + assert.Equal(t, metadata.Asset, val.(cadence.String).ToGoValue()) + }) + + t.Run("getEvergreenProfile() should return DigitalArt's Evergreen profile", func(t *testing.T) { + + val, err := client.Script(` +import DigitalArt from 0x01cf0e2f2f715450 +import Evergreen from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : Evergreen.Profile? { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! + if let item = collection.borrowDigitalArt(id: tokenID) { + return item.getEvergreenProfile() + } + + return nil +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + + actual, err := evergreen.ProfileFromCadence(val) + require.NoError(t, err) + assert.Equal(t, profile.ID, actual.ID) + }) +} + +func TestDigitalArt_Collection(t *testing.T) { + client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) + require.NoError(t, err) + + scripts.ConfigureInMemoryEmulator(t, client, "1000.0") + + se, err := scripts.NewEngine(client, false) + require.NoError(t, err) + + userAcct := client.Account(user1AccountName) + + scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") + + _ = se.NewTransaction("account_setup"). + SignProposeAndPayAs(user1AccountName). + Test(t). + AssertSuccess() + + metadata := SampleMetadata(4) + profile := BasicEvergreenProfile(userAcct.Address()) + + _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). + SignProposeAndPayAs(adminAccountName). + Test(t). + AssertSuccess() + + // mint 2 NFTs + + _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). + SignProposeAndPayAs(adminAccountName). + StringArgument(metadata.Asset). + UInt64Argument(2). + Argument(cadence.Address(userAcct.Address())). + Test(t). + AssertSuccess() + + t.Run("getIDs() should return a list of token IDs", func(t *testing.T) { + + viewsVal, err := client.Script(` +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : [UInt64] { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! + return collection.getIDs() +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + + idArray, ok := viewsVal.(cadence.Array) + require.True(t, ok) + require.Equal(t, 2, len(idArray.Values)) + ids := []int{ + int(idArray.Values[0].(cadence.UInt64).ToGoValue().(uint64)), + int(idArray.Values[1].(cadence.UInt64).ToGoValue().(uint64)), + } + sort.Ints(ids) + assert.Equal(t, 0, ids[0]) + assert.Equal(t, 1, ids[1]) + }) + + t.Run("borrowNFT(...) should return NonFungibleToken.NFT", func(t *testing.T) { + + val, err := client.Script(` +import NonFungibleToken from 0xf8d6e0586b0a20c7 +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : UInt64 { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{NonFungibleToken.CollectionPublic}>()! + let tokenRef = collection.borrowNFT(id: tokenID) + + return tokenRef.id +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(1). + RunReturns() + require.NoError(t, err) + + assert.Equal(t, uint64(1), val.(cadence.UInt64).ToGoValue().(uint64)) + }) + + t.Run("borrowNFT(...) should fail if NFT isn't found", func(t *testing.T) { + + _, err = client.Script(` +import NonFungibleToken from 0xf8d6e0586b0a20c7 +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : UInt64 { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{NonFungibleToken.CollectionPublic}>()! + let tokenRef = collection.borrowNFT(id: tokenID) + + return tokenRef.id +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(2). + RunReturns() + require.Error(t, err) + }) + + t.Run("borrowDigitalArt(...) should return DigitalArt.NFT", func(t *testing.T) { + + val, err := client.Script(` +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : String { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! + let daToken = collection.borrowDigitalArt(id: tokenID) + return daToken!.metadata.asset +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(1). + RunReturns() + require.NoError(t, err) + + assert.Equal(t, metadata.Asset, val.(cadence.String).ToGoValue()) + }) + + t.Run("borrowDigitalArt(...) should return nil if token isn't found", func(t *testing.T) { + + val, err := client.Script(` +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) : String { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! + if let item = collection.borrowDigitalArt(id: tokenID) { + return item.metadata.asset + } + return "not found" +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(123). + RunReturns() + require.NoError(t, err) + + assert.Equal(t, "not found", val.(cadence.String).ToGoValue()) + }) + + t.Run("borrowViewResolver(...) should return MetadataViews.Display view", func(t *testing.T) { + + _, err = client.Script(` +import MetadataViews from 0xf8d6e0586b0a20c7 +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{MetadataViews.ResolverCollection}>()! + + let resolver = collection.borrowViewResolver(id: tokenID) + + if let view = resolver.resolveView(Type()) { + let display = view as! MetadataViews.Display + assert(display.name == "Pure Art", message: "bad value of meta.name") + } else { + panic("MetadataViews.Display view not found") + } + + if let view = resolver.resolveView(Type()) { + let meta = view as! DigitalArt.Metadata + assert(meta.name == "Pure Art", message: "bad value of meta.name") + } else { + panic("DigitalArt.Metadata view not found") + } + +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + }) + + t.Run("borrowEvergreenToken(...) should return &AnyResource{Evergreen.Token}", func(t *testing.T) { + + _, err = client.Script(` +import MetadataViews from 0xf8d6e0586b0a20c7 +import Evergreen from 0x01cf0e2f2f715450 +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{Evergreen.CollectionPublic}>()! + + let token = collection.borrowEvergreenToken(id: tokenID) + + let profile = token!.getEvergreenProfile() + + assert(profile.id == 1, message: "bad value of evergreen profile ID") +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(0). + RunReturns() + require.NoError(t, err) + }) + + t.Run("borrowEvergreenToken(...) should return nil if token not found", func(t *testing.T) { + + _, err = client.Script(` +import MetadataViews from 0xf8d6e0586b0a20c7 +import Evergreen from 0x01cf0e2f2f715450 +import DigitalArt from 0x01cf0e2f2f715450 + +pub fun main(address:Address, tokenID:UInt64) { + let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{Evergreen.CollectionPublic}>()! + + let token = collection.borrowEvergreenToken(id: tokenID) + + assert(token == nil, message: "token not nil") +} +`). + Argument(cadence.Address(userAcct.Address())). + UInt64Argument(123). + RunReturns() + require.NoError(t, err) + }) +} + +func TestDigitalArt_createEmptyCollection(t *testing.T) { + client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) + require.NoError(t, err) + + scripts.ConfigureInMemoryEmulator(t, client, "1000.0") + + se, err := scripts.NewEngine(client, false) + require.NoError(t, err) + + receiverAcctName := user2AccountName + receiverAcct := client.Account(receiverAcctName) + + scripts.FundAccountWithFlow(t, client, receiverAcct.Address(), "10.0") + + t.Run("Should be able to create a new empty NFT Collection", func(t *testing.T) { + + _ = se.NewTransaction("account_setup"). + SignProposeAndPayAs(receiverAcctName). + Test(t). + AssertSuccess() + + checkDigitalArtCollectionLen(t, se, receiverAcct.Address().String(), 0) + }) +} + +func checkDigitalArtNFTSupply(t *testing.T, se *scripts.Engine, expectedSupply int) { + t.Helper() + + _, err := se.NewInlineScript( + inspectNFTSupplyScript(se.WellKnownAddresses(), "DigitalArt", expectedSupply), + ).RunReturns() + require.NoError(t, err) +} + +func checkTokenInDigitalArtCollection(t *testing.T, se *scripts.Engine, userAddr string, nftID uint64) { + t.Helper() + + _, err := se.NewInlineScript( + inspectCollectionScript(se.WellKnownAddresses(), userAddr, "DigitalArt", "DigitalArt.CollectionPublicPath", nftID), + ).RunReturns() + require.NoError(t, err) +} + +func checkDigitalArtCollectionLen(t *testing.T, se *scripts.Engine, userAddr string, length int) { + t.Helper() + + _, err := se.NewInlineScript( + inspectCollectionLenScript(se.WellKnownAddresses(), userAddr, "DigitalArt", "DigitalArt.CollectionPublicPath", length), + ).RunReturns() + require.NoError(t, err) +} diff --git a/lib/go/iinft/test/evergreen_test.go b/lib/go/iinft/test/evergreen_test.go index bf4018a..ff16012 100644 --- a/lib/go/iinft/test/evergreen_test.go +++ b/lib/go/iinft/test/evergreen_test.go @@ -1,6 +1,7 @@ package test import ( + "context" "os" "testing" "time" @@ -45,8 +46,8 @@ pub fun main(addr: Address) { assert(role.commissionRate(initialSale: false) == 0.05, message: "wrong commissionRate(false) value") } `). - Argument(cadence.NewAddress(artistAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(artistAcct.Address)). + RunReturns(context.Background()) require.NoError(t, err) } @@ -90,8 +91,8 @@ pub fun main(addr: Address) { assert(role == nil, message: "Non-existent role found") } `). - Argument(cadence.NewAddress(artistAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(artistAcct.Address)). + RunReturns(context.Background()) require.NoError(t, err) } @@ -116,7 +117,7 @@ func TestEvergreen_Profile_buildRoyalties(t *testing.T) { Description: "Test Role 1", InitialSaleCommission: 0.8, SecondaryMarketCommission: 0.05, - Address: user1Acct.Address(), + Address: user1Acct.Address, ReceiverPath: "/public/fusdReceiver", }, { @@ -124,7 +125,7 @@ func TestEvergreen_Profile_buildRoyalties(t *testing.T) { Description: "Test Role 2", InitialSaleCommission: 0.2, SecondaryMarketCommission: 0.025, - Address: user2Acct.Address(), + Address: user2Acct.Address, }, }, } @@ -143,12 +144,12 @@ pub fun main(profile: Evergreen.Profile) { } `). Argument(profileVal). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) - scripts.FundAccountWithFlow(t, client, user1Acct.Address(), "10.0") - scripts.FundAccountWithFlow(t, client, user2Acct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, user1Acct.Address, "10.0") + scripts.FundAccountWithFlow(t, client, user2Acct.Address, "10.0") t.Run("if defaultReceiverPath is nil, return royalties with a valid receiver", func(t *testing.T) { _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(user1AccountName). @@ -164,12 +165,12 @@ pub fun main(profile: Evergreen.Profile) { } `). Argument(profileVal). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) t.Run("if defaultReceiverPath is provided, return royalties with a valid receiver", func(t *testing.T) { - scripts.FundAccountWithFlow(t, client, user1Acct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, user1Acct.Address, "10.0") _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(user1AccountName). Test(t).AssertSuccess() @@ -187,7 +188,7 @@ pub fun main(profile: Evergreen.Profile) { } `). Argument(profileVal). - RunReturns() + RunReturns(context.Background()) require.NoError(t, err) }) } diff --git a/lib/go/iinft/test/fusd_test.go b/lib/go/iinft/test/fusd_test.go index a7c38d7..05c6859 100644 --- a/lib/go/iinft/test/fusd_test.go +++ b/lib/go/iinft/test/fusd_test.go @@ -18,22 +18,22 @@ func TestGetFUSDBalance(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address()) + scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) artistAcctName := user1AccountName artistAcct := client.Account(artistAcctName) - assert.Equal(t, 0.0, scripts.GetFUSDBalance(t, se, artistAcct.Address())) + assert.Equal(t, 0.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) - scripts.FundAccountWithFlow(t, client, artistAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, artistAcct.Address, "10.0") _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(artistAcctName).Test(t).AssertSuccess() - assert.Equal(t, 0.0, scripts.GetFUSDBalance(t, se, artistAcct.Address())) + assert.Equal(t, 0.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) - scripts.FundAccountWithFUSD(t, se, artistAcct.Address(), "123.56") + scripts.FundAccountWithFUSD(t, se, artistAcct.Address, "123.56") - assert.Equal(t, 123.56, scripts.GetFUSDBalance(t, se, artistAcct.Address())) + assert.Equal(t, 123.56, scripts.GetFUSDBalance(t, se, artistAcct.Address)) } func TestSetUpFUSDAccount(t *testing.T) { @@ -45,14 +45,14 @@ func TestSetUpFUSDAccount(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address()) + scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) // set up platform account platformAcctName := "emulator-sequel-platform" platformAcct := client.Account(platformAcctName) - scripts.FundAccountWithFlow(t, client, platformAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, platformAcct.Address, "10.0") artistAcctName := user1AccountName diff --git a/lib/go/iinft/test/marketplace_integration_test.go b/lib/go/iinft/test/marketplace_integration_test.go index 8f11954..e4010ab 100644 --- a/lib/go/iinft/test/marketplace_integration_test.go +++ b/lib/go/iinft/test/marketplace_integration_test.go @@ -28,7 +28,7 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { sellerAcctName := user1AccountName sellerAcct := client.Account(sellerAcctName) - scripts.FundAccountWithFlow(t, client, sellerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, sellerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() _ = se.NewTransaction("account_royalty_receiver_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() @@ -38,14 +38,14 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { buyerAcctName := user2AccountName buyerAcct := client.Account(buyerAcctName) - scripts.FundAccountWithFlow(t, client, buyerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() _ = se.NewTransaction("account_setup_flow_token").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() - scripts.FundAccountWithFlow(t, client, buyerAcct.Address(), "1000.0") + scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "1000.0") metadata := SampleMetadata(1) - profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address(), platformAcct.Address()) + profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address, platformAcct.Address) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). SignProposeAndPayAs(adminAccountName). @@ -56,7 +56,7 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(sellerAcct.Address())). + Argument(cadence.Address(sellerAcct.Address)). Test(t). AssertSuccess() @@ -64,9 +64,9 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { "A.01cf0e2f2f715450.DigitalArt.Minted", "id") // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, sellerAcct.Address().String(), nftID) - checkDigitalArtCollectionLen(t, se, sellerAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 0) + checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) + checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 0) var listingID uint64 @@ -126,7 +126,7 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { _ = se.NewTransaction("marketplace_buy_flow"). SignProposeAndPayAs(buyerAcctName). UInt64Argument(listingID). - Argument(cadence.NewAddress(sellerAcct.Address())). + Argument(cadence.NewAddress(sellerAcct.Address)). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess(). @@ -144,9 +144,9 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, buyerAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, sellerAcct.Address().String(), 0) + checkTokenInDigitalArtCollection(t, se, buyerAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 0) }) } @@ -159,7 +159,7 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address()) + scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) platformAcct := client.Account(platformAccountName) @@ -168,7 +168,7 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { sellerAcctName := user1AccountName sellerAcct := client.Account(sellerAcctName) - scripts.FundAccountWithFlow(t, client, sellerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, sellerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() _ = se.NewTransaction("account_royalty_receiver_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() @@ -179,14 +179,14 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { buyerAcct := client.Account(buyerAcctName) require.NoError(t, err) - scripts.FundAccountWithFlow(t, client, buyerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() - scripts.FundAccountWithFUSD(t, se, buyerAcct.Address(), "1000.0") + scripts.FundAccountWithFUSD(t, se, buyerAcct.Address, "1000.0") metadata := SampleMetadata(1) - profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address(), platformAcct.Address()) + profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address, platformAcct.Address) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). SignProposeAndPayAs(adminAccountName). @@ -197,7 +197,7 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(sellerAcct.Address())). + Argument(cadence.Address(sellerAcct.Address)). Test(t). AssertSuccess() @@ -205,9 +205,9 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { "A.01cf0e2f2f715450.DigitalArt.Minted", "id") // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, sellerAcct.Address().String(), nftID) - checkDigitalArtCollectionLen(t, se, sellerAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 0) + checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) + checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 0) var listingID uint64 @@ -268,7 +268,7 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { _ = se.NewTransaction("marketplace_buy_fusd"). SignProposeAndPayAs(buyerAcctName). UInt64Argument(listingID). - Argument(cadence.NewAddress(sellerAcct.Address())). + Argument(cadence.NewAddress(sellerAcct.Address)). Argument(cadence.NewOptional(nil)). Test(t). AssertSuccess(). @@ -286,8 +286,8 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, buyerAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, sellerAcct.Address().String(), 0) + checkTokenInDigitalArtCollection(t, se, buyerAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 0) }) } diff --git a/lib/go/iinft/test/marketplace_test.go b/lib/go/iinft/test/marketplace_test.go index 570ce62..b3c3de3 100644 --- a/lib/go/iinft/test/marketplace_test.go +++ b/lib/go/iinft/test/marketplace_test.go @@ -1,6 +1,7 @@ package test import ( + "context" "fmt" "testing" @@ -23,7 +24,7 @@ func TestMarketplace_listToken(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address()) + scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) platformAcct := client.Account(platformAccountName) @@ -32,7 +33,7 @@ func TestMarketplace_listToken(t *testing.T) { sellerAcctName := user1AccountName sellerAcct := client.Account(sellerAcctName) - scripts.FundAccountWithFlow(t, client, sellerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, sellerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() @@ -41,7 +42,7 @@ func TestMarketplace_listToken(t *testing.T) { _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(user2AccountName).PayAs(adminAccountName).Test(t).AssertSuccess() metadata := SampleMetadata(1) - profile := PrimaryOnlyEvergreenProfile(artistAcct.Address(), platformAcct.Address()) + profile := PrimaryOnlyEvergreenProfile(artistAcct.Address, platformAcct.Address) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). SignProposeAndPayAs(adminAccountName). @@ -52,7 +53,7 @@ func TestMarketplace_listToken(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(sellerAcct.Address())). + Argument(cadence.Address(sellerAcct.Address)). Test(t). AssertSuccess() @@ -60,8 +61,8 @@ func TestMarketplace_listToken(t *testing.T) { "A.01cf0e2f2f715450.DigitalArt.Minted", "id") // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, sellerAcct.Address().String(), nftID) - checkDigitalArtCollectionLen(t, se, sellerAcct.Address().String(), 1) + checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) + checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 1) t.Run("Happy path (Flow)", func(t *testing.T) { res := se.NewTransaction("marketplace_list_flow"). @@ -115,9 +116,9 @@ func TestMarketplace_listToken(t *testing.T) { t.Run("Fail, if seller's receiver is invalid (FUSD)", func(t *testing.T) { // Fund with Flow for FUSD setup fees - scripts.FundAccountWithFlow(t, client, artistAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, artistAcct.Address, "10.0") - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(artistAcct.Name()).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(artistAcct.Name).Test(t).AssertSuccess() _ = se.NewTransaction("marketplace_list_fusd"). SignProposeAndPayAs(sellerAcctName). @@ -130,10 +131,10 @@ func TestMarketplace_listToken(t *testing.T) { t.Run("Succeed, if some receivers are invalid (FUSD)", func(t *testing.T) { // Fund with Flow for FUSD setup fees - scripts.FundAccountWithFlow(t, client, artistAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, artistAcct.Address, "10.0") _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(artistAcct.Name()).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(artistAcct.Name).Test(t).AssertSuccess() res := se.NewTransaction("marketplace_list_fusd"). SignProposeAndPayAs(sellerAcctName). @@ -186,10 +187,10 @@ func TestMarketplace_listToken(t *testing.T) { t.Run("Happy path (FUSD)", func(t *testing.T) { // Fund with Flow for FUSD setup fees - scripts.FundAccountWithFlow(t, client, platformAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, platformAcct.Address, "10.0") _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(platformAcct.Name()).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(platformAcct.Name).Test(t).AssertSuccess() res := se.NewTransaction("marketplace_list_fusd"). SignProposeAndPayAs(sellerAcctName). @@ -257,7 +258,7 @@ func TestMarketplace_buyToken(t *testing.T) { sellerAcctName := "emulator-user1" sellerAcct := client.Account(sellerAcctName) - scripts.FundAccountWithFlow(t, client, sellerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, sellerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() @@ -266,13 +267,13 @@ func TestMarketplace_buyToken(t *testing.T) { buyerAcctName := "emulator-user2" buyerAcct := client.Account(buyerAcctName) - scripts.FundAccountWithFlow(t, client, buyerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() - scripts.FundAccountWithFlow(t, client, buyerAcct.Address(), "1000.0") + scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "1000.0") metadata := SampleMetadata(1) - profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address(), platformAcct.Address()) + profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address, platformAcct.Address) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). SignProposeAndPayAs(adminAccountName). @@ -283,7 +284,7 @@ func TestMarketplace_buyToken(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(sellerAcct.Address())). + Argument(cadence.Address(sellerAcct.Address)). Test(t). AssertSuccess() @@ -291,9 +292,9 @@ func TestMarketplace_buyToken(t *testing.T) { "A.01cf0e2f2f715450.DigitalArt.Minted", "id") // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, sellerAcct.Address().String(), nftID) - checkDigitalArtCollectionLen(t, se, sellerAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 0) + checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) + checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 0) res = se.NewTransaction("marketplace_list_flow"). SignProposeAndPayAs(sellerAcctName). @@ -310,7 +311,7 @@ func TestMarketplace_buyToken(t *testing.T) { _ = se.NewTransaction("marketplace_buy_flow"). SignProposeAndPayAs(buyerAcctName). UInt64Argument(listingID). - Argument(cadence.NewAddress(sellerAcct.Address())). + Argument(cadence.NewAddress(sellerAcct.Address)). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess(). @@ -328,9 +329,9 @@ func TestMarketplace_buyToken(t *testing.T) { })) // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, buyerAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, buyerAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, sellerAcct.Address().String(), 0) + checkTokenInDigitalArtCollection(t, se, buyerAcct.Address.String(), 0) + checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 1) + checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 0) }) } @@ -343,7 +344,7 @@ func TestMarketplace_payForMintedTokens(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address()) + scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) evergreenAddr := flow.HexToAddress(se.WellKnownAddresses()["Evergreen"]) @@ -351,7 +352,7 @@ func TestMarketplace_payForMintedTokens(t *testing.T) { artistAcct := client.Account(user3AccountName) // the artist is the seller roleOneAcct := client.Account(user1AccountName) - scripts.FundAccountWithFlow(t, client, buyerAcct.Address(), "1000.0") + scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "1000.0") happyPathProfile, err := evergreen.ProfileToCadence(&evergreen.Profile{ ID: "did:sequel:evergreen3", @@ -360,13 +361,13 @@ func TestMarketplace_payForMintedTokens(t *testing.T) { ID: "Artist", InitialSaleCommission: 0.8, SecondaryMarketCommission: 0.0, - Address: artistAcct.Address(), + Address: artistAcct.Address, }, { ID: "Role1", InitialSaleCommission: 0.2, SecondaryMarketCommission: 0.0, - Address: roleOneAcct.Address(), + Address: roleOneAcct.Address, }, }, }, evergreenAddr) @@ -401,12 +402,12 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) }` t.Run("Fail if seller's receiver is invalid", func(t *testing.T) { - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(buyerAcct.Name()).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(buyerAcct.Name).Test(t).AssertSuccess() - scripts.FundAccountWithFUSD(t, se, buyerAcct.Address(), "1000.0") + scripts.FundAccountWithFUSD(t, se, buyerAcct.Address, "1000.0") _ = client.Transaction(scriptWithFUSD). - PayloadSigner(buyerAcct.Name()). + PayloadSigner(buyerAcct.Name). SignProposeAndPayAs(adminAccountName). UInt64Argument(1). UFix64Argument("100.0"). @@ -418,10 +419,10 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) t.Run("If some receivers are invalid, send the remainder to last good receiver", func(t *testing.T) { // RoleOne's FUSD receiver is missing. RoleOne's cut will go to the seller (the artist). - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(artistAcct.Name()).PayAs(adminAccountName).Test(t).AssertSuccess() + _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(artistAcct.Name).PayAs(adminAccountName).Test(t).AssertSuccess() _ = client.Transaction(scriptWithFUSD). - PayloadSigner(buyerAcct.Name()). + PayloadSigner(buyerAcct.Name). SignProposeAndPayAs(adminAccountName). UInt64Argument(1). UFix64Argument("100.0"). @@ -432,7 +433,7 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) "A.f8d6e0586b0a20c7.FUSD.TokensWithdrawn", map[string]interface{}{ "amount": "100.00000000", - "from": "0x" + buyerAcct.Address().String(), + "from": "0x" + buyerAcct.Address.String(), })). AssertEmitEvent(gwtf.NewTestEvent( "A.f8d6e0586b0a20c7.FUSD.TokensDeposited", @@ -449,7 +450,7 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) }) t.Run("Happy path (Flow)", func(t *testing.T) { - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(roleOneAcct.Name()).PayAs(adminAccountName).Test(t).AssertSuccess() + _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(roleOneAcct.Name).PayAs(adminAccountName).Test(t).AssertSuccess() _ = client.Transaction(` import FungibleToken from 0xee82856bf20e2aa6 @@ -478,7 +479,7 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) ) } }`). - PayloadSigner(buyerAcct.Name()). + PayloadSigner(buyerAcct.Name). SignProposeAndPayAs(adminAccountName). UInt64Argument(1). UFix64Argument("100.0"). @@ -489,7 +490,7 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) "A.0ae53cb6e3f42a79.FlowToken.TokensWithdrawn", map[string]interface{}{ "amount": "100.00000000", - "from": "0x" + buyerAcct.Address().String(), + "from": "0x" + buyerAcct.Address.String(), })). AssertEmitEvent(gwtf.NewTestEvent( "A.0ae53cb6e3f42a79.FlowToken.TokensDeposited", @@ -501,14 +502,14 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) "A.0ae53cb6e3f42a79.FlowToken.TokensDeposited", map[string]interface{}{ "amount": "20.00000000", - "to": "0x" + roleOneAcct.Address().String(), + "to": "0x" + roleOneAcct.Address.String(), })) require.NoError(t, err) }) t.Run("Happy path (FUSD)", func(t *testing.T) { _ = client.Transaction(scriptWithFUSD). - PayloadSigner(buyerAcct.Name()). + PayloadSigner(buyerAcct.Name). SignProposeAndPayAs(adminAccountName). UInt64Argument(1). UFix64Argument("100.0"). @@ -519,7 +520,7 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) "A.f8d6e0586b0a20c7.FUSD.TokensWithdrawn", map[string]interface{}{ "amount": "100.00000000", - "from": "0x" + buyerAcct.Address().String(), + "from": "0x" + buyerAcct.Address.String(), })). AssertEmitEvent(gwtf.NewTestEvent( "A.f8d6e0586b0a20c7.FUSD.TokensDeposited", @@ -531,7 +532,7 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) "A.f8d6e0586b0a20c7.FUSD.TokensDeposited", map[string]interface{}{ "amount": "20.00000000", - "to": "0x" + roleOneAcct.Address().String(), + "to": "0x" + roleOneAcct.Address.String(), })) }) } @@ -552,12 +553,12 @@ func TestMarketplace_withdrawToken(t *testing.T) { sellerAcctName := "emulator-user1" sellerAcct := client.Account(sellerAcctName) - scripts.FundAccountWithFlow(t, client, sellerAcct.Address(), "10.0") + scripts.FundAccountWithFlow(t, client, sellerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() metadata := SampleMetadata(1) - profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address(), platformAcct.Address()) + profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address, platformAcct.Address) _ = scripts.CreateSealDigitalArtTx(t, se, client, metadata, profile). SignProposeAndPayAs(adminAccountName). @@ -568,14 +569,14 @@ func TestMarketplace_withdrawToken(t *testing.T) { SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). - Argument(cadence.Address(sellerAcct.Address())). + Argument(cadence.Address(sellerAcct.Address)). Test(t). AssertSuccess() var nftID uint64 // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, sellerAcct.Address().String(), nftID) + checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) res := se.NewTransaction("marketplace_list_flow"). SignProposeAndPayAs(sellerAcctName). @@ -630,12 +631,12 @@ pub fun main(listingID:UInt64, storefrontAddress: Address) { } `). UInt64Argument(listingID). - Argument(cadence.Address(sellerAcct.Address())). - RunReturns() + Argument(cadence.Address(sellerAcct.Address)). + RunReturns(context.Background()) require.NoError(t, err) // ensure that the seller's collection still has the token - checkTokenInDigitalArtCollection(t, se, sellerAcct.Address().String(), nftID) + checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) }) } @@ -661,13 +662,13 @@ func TestMarketplace_buildPayments(t *testing.T) { ID: "Role1", InitialSaleCommission: 0.8, SecondaryMarketCommission: 0.05, - Address: roleOneAcct.Address(), + Address: roleOneAcct.Address, }, { ID: "Role2", InitialSaleCommission: 0.2, SecondaryMarketCommission: 0.025, - Address: roleTwoAcct.Address(), + Address: roleTwoAcct.Address, }, }, }, evergreenAddr) @@ -708,8 +709,8 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { assert(payments[1].receiver == 0xe03daebed8ca0615, message: "incorrect receiver 2") }`). Argument(happyPathProfile). - Argument(cadence.NewAddress(sellerAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(sellerAcct.Address)). + RunReturns(context.Background()) require.NoError(t, err) }) @@ -753,13 +754,13 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { assert(payments[2].receiver == 0x045a1763c93006ca, message: "incorrect receiver 2") }`). Argument(happyPathProfile). - Argument(cadence.NewAddress(sellerAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(sellerAcct.Address)). + RunReturns(context.Background()) require.NoError(t, err) }) t.Run("Should fail if any of the rates are out of range", func(t *testing.T) { - profile := BasicEvergreenProfile(roleOneAcct.Address()) + profile := BasicEvergreenProfile(roleOneAcct.Address) profile.Roles[0].InitialSaleCommission = 1.25 profileVal, err := evergreen.ProfileToCadence(profile, evergreenAddr) @@ -782,8 +783,8 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { ) }`). Argument(profileVal). - Argument(cadence.NewAddress(sellerAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(sellerAcct.Address)). + RunReturns(context.Background()) require.Error(t, err) }) @@ -795,13 +796,13 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { ID: "Role1", InitialSaleCommission: 0.8, SecondaryMarketCommission: 0.0, - Address: roleOneAcct.Address(), + Address: roleOneAcct.Address, }, { ID: "Role2", InitialSaleCommission: 0.8, SecondaryMarketCommission: 0.0, - Address: roleTwoAcct.Address(), + Address: roleTwoAcct.Address, }, }, }, evergreenAddr) @@ -824,8 +825,8 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { ) }`). Argument(profile). - Argument(cadence.NewAddress(sellerAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(sellerAcct.Address)). + RunReturns(context.Background()) require.Error(t, err) }) @@ -837,13 +838,13 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { ID: "Role1", InitialSaleCommission: 0.8, SecondaryMarketCommission: 0.05, - Address: roleOneAcct.Address(), + Address: roleOneAcct.Address, }, { ID: "Role2", InitialSaleCommission: 0.2, SecondaryMarketCommission: 0.0, - Address: roleTwoAcct.Address(), + Address: roleTwoAcct.Address, }, }, }, evergreenAddr) @@ -882,8 +883,8 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { assert(payments[1].receiver == 0x045a1763c93006ca, message: "incorrect receiver 2") }`). Argument(profile). - Argument(cadence.NewAddress(sellerAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(sellerAcct.Address)). + RunReturns(context.Background()) require.NoError(t, err) }) @@ -922,8 +923,8 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { assert(payments[0].receiver == 0x045a1763c93006ca, message: "incorrect receiver 1") }`). Argument(profile). - Argument(cadence.NewAddress(sellerAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(sellerAcct.Address)). + RunReturns(context.Background()) require.NoError(t, err) }) @@ -937,7 +938,7 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { ID: "Role1", InitialSaleCommission: 1.0, SecondaryMarketCommission: 0.05, - Address: roleOneAcct.Address(), + Address: roleOneAcct.Address, }, }, }, evergreenAddr) @@ -1003,10 +1004,10 @@ pub fun main(profile: Evergreen.Profile, seller: Address, extra1: Address, extra assert(payments[3].receiver == 0x045a1763c93006ca, message: "incorrect receiver 4") }`). Argument(profile). - Argument(cadence.NewAddress(sellerAcct.Address())). - Argument(cadence.NewAddress(roleTwoAcct.Address())). - Argument(cadence.NewAddress(extraTwoAcct.Address())). - RunReturns() + Argument(cadence.NewAddress(sellerAcct.Address)). + Argument(cadence.NewAddress(roleTwoAcct.Address)). + Argument(cadence.NewAddress(extraTwoAcct.Address)). + RunReturns(context.Background()) require.NoError(t, err) }) } diff --git a/lib/go/iinft/types.go b/lib/go/iinft/types.go index 927b356..805faa2 100644 --- a/lib/go/iinft/types.go +++ b/lib/go/iinft/types.go @@ -67,24 +67,26 @@ func DigitalArtMetadataFromCadence(val cadence.Value) (*DigitalArtMetadata, erro } valStruct, ok := val.(cadence.Struct) - if !ok || valStruct.StructType.QualifiedIdentifier != "DigitalArt.Metadata" || len(valStruct.Fields) != 13 { + if !ok || valStruct.StructType.QualifiedIdentifier != "DigitalArt.Metadata" || len(valStruct.FieldsMappedByName()) != 13 { return nil, errors.New("bad Metadata value") } + allFields := valStruct.FieldsMappedByName() + res := DigitalArtMetadata{ - Name: valStruct.Fields[0].ToGoValue().(string), - Artist: valStruct.Fields[1].ToGoValue().(string), - Description: valStruct.Fields[2].ToGoValue().(string), - Type: valStruct.Fields[3].ToGoValue().(string), - ContentURI: valStruct.Fields[4].ToGoValue().(string), - ContentPreviewURI: valStruct.Fields[5].ToGoValue().(string), - ContentMimetype: valStruct.Fields[6].ToGoValue().(string), - Edition: uint64(valStruct.Fields[7].(cadence.UInt64)), - MaxEdition: uint64(valStruct.Fields[8].(cadence.UInt64)), - Asset: valStruct.Fields[9].ToGoValue().(string), - MetadataURI: valStruct.Fields[10].ToGoValue().(string), - Record: valStruct.Fields[11].ToGoValue().(string), - AssetHead: valStruct.Fields[12].ToGoValue().(string), + Name: allFields["name"].String(), + Artist: allFields["artist"].String(), + Description: allFields["description"].String(), + Type: allFields["type"].String(), + ContentURI: allFields["contentURI"].String(), + ContentPreviewURI: allFields["contentPreviewURI"].String(), + ContentMimetype: allFields["mimetype"].String(), + Edition: uint64(allFields["edition"].(cadence.UInt64)), + MaxEdition: uint64(allFields["maxEdition"].(cadence.UInt64)), + Asset: allFields["asset"].String(), + MetadataURI: allFields["metadataURI"].String(), + Record: allFields["record"].String(), + AssetHead: allFields["assetHead"].String(), } return &res, nil @@ -105,14 +107,15 @@ func DigitalArtMetadataToCadence(metadata *DigitalArtMetadata, digitalArtAddr fl cadence.String(metadata.MetadataURI), cadence.String(metadata.Record), cadence.String(metadata.AssetHead), - }).WithType(&cadence.StructType{ - Location: common.AddressLocation{ + }).WithType(cadence.NewStructType( + common.AddressLocation{ Address: common.Address(digitalArtAddr), Name: common.AddressLocationPrefix, }, - QualifiedIdentifier: "DigitalArt.Metadata", - Fields: metadataCadenceFields, - }) + "DigitalArt.Metadata", + metadataCadenceFields, + nil, + )) } func ToFloat64(value cadence.Value) float64 { @@ -146,7 +149,7 @@ func StringToPath(path string) (cadence.Path, error) { if parts[1] != "private" && parts[1] != "public" && parts[1] != "storage" { return val, errors.New("bad domain in Cadence path") } - val.Domain = parts[1] + val.Domain = common.PathDomainFromIdentifier(parts[1]) val.Identifier = parts[2] return val, nil } @@ -154,54 +157,54 @@ func StringToPath(path string) (cadence.Path, error) { var metadataCadenceFields = []cadence.Field{ { Identifier: "name", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "artist", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "description", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "type", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "contentURI", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "contentPreviewURI", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "mimetype", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "edition", - Type: cadence.UInt64Type{}, + Type: cadence.UInt64Type, }, { Identifier: "maxEdition", - Type: cadence.UInt64Type{}, + Type: cadence.UInt64Type, }, { Identifier: "asset", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "metadataURI", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "record", - Type: cadence.StringType{}, + Type: cadence.StringType, }, { Identifier: "assetHead", - Type: cadence.StringType{}, + Type: cadence.StringType, }, } diff --git a/lib/go/iinft/types_test.go b/lib/go/iinft/types_test.go index 172ee11..1326cc0 100644 --- a/lib/go/iinft/types_test.go +++ b/lib/go/iinft/types_test.go @@ -16,7 +16,7 @@ func TestUFix64ToString(t *testing.T) { func TestStringToPath(t *testing.T) { val, err := StringToPath("/private/test") assert.NoError(t, err) - assert.Equal(t, "private", val.Domain) + assert.Equal(t, "private", val.Domain.Identifier()) assert.Equal(t, "test", val.Identifier) _, err = StringToPath("/bad/test") From a851175b6cad7c38d664edca0eabbf3d976bf76c Mon Sep 17 00:00:00 2001 From: sequel21 Date: Fri, 25 Oct 2024 16:06:27 +0100 Subject: [PATCH 02/12] Delete unwanted file --- lib/go/iinft/test/digitalart_test.go.backup | 939 -------------------- 1 file changed, 939 deletions(-) delete mode 100644 lib/go/iinft/test/digitalart_test.go.backup diff --git a/lib/go/iinft/test/digitalart_test.go.backup b/lib/go/iinft/test/digitalart_test.go.backup deleted file mode 100644 index e5bdd39..0000000 --- a/lib/go/iinft/test/digitalart_test.go.backup +++ /dev/null @@ -1,939 +0,0 @@ -package test - -import ( - "os" - "sort" - "testing" - "time" - - "github.com/onflow/cadence" - "github.com/onflow/flow-go-sdk" - "github.com/piprate/sequel-flow-contracts/lib/go/iinft" - "github.com/piprate/sequel-flow-contracts/lib/go/iinft/evergreen" - "github.com/piprate/sequel-flow-contracts/lib/go/iinft/gwtf" - "github.com/piprate/sequel-flow-contracts/lib/go/iinft/scripts" - "github.com/rs/zerolog" - "github.com/rs/zerolog/log" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -const ( - adminAccountName = "emulator-sequel-admin" - platformAccountName = "emulator-sequel-platform" - user1AccountName = "emulator-user1" - user2AccountName = "emulator-user2" - user3AccountName = "emulator-user3" - initialFlowBalance = 0.001 -) - -func init() { - log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.Stamp}) -} - -func TestDigitalArt_Master(t *testing.T) { - client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) - require.NoError(t, err) - - scripts.ConfigureInMemoryEmulator(t, client, "1000.0") - - se, err := scripts.NewEngine(client, false) - require.NoError(t, err) - - artistAcct := client.Account(user1AccountName) - - metadata := SampleMetadata(2) - profile := BasicEvergreenProfile(artistAcct.Address()) - - t.Run("Should be able to seal new digital art master", func(t *testing.T) { - - _, err := client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 -import Evergreen from 0x01cf0e2f2f715450 - -pub fun main( - metadata: DigitalArt.Metadata, - id: UInt32, - description: String, - roleIDs: [String], - roleAddresses: [Address], - initialSaleCommissions: [UFix64], - secondaryMarketCommissions: [UFix64] -) { - - // test typical master lifecycle - - var evergreenProfile = Evergreen.profileFromFlattenedView( - id: id, - description: description, - roleIDs: roleIDs, - roleAddresses: roleAddresses, - initialSaleCommissions: initialSaleCommissions, - secondaryMarketCommissions: secondaryMarketCommissions - ) - - var master = DigitalArt.Master( - metadata: metadata, - evergreenProfile: evergreenProfile - ) - - assert(master.availableEditions() == 2, message: "wrong availableEditions() value") - assert(master.newEditionID() == 1, message: "wrong first edition value") - assert(master.availableEditions() == 1, message: "wrong availableEditions() value") - assert(master.newEditionID() == 2, message: "wrong first edition value") - assert(master.availableEditions() == 0, message: "wrong availableEditions() value") - - // this shouldn't happen, but we want to ensure availableEditions() == 0 - - assert(master.newEditionID() == 3, message: "wrong first edition value") - assert(master.availableEditions() == 0, message: "wrong availableEditions() value") - - // close the master - - master.close() - assert(master.availableEditions() == 0, message: "wrong availableEditions() value") - - // test closing the master before all edition are minted - - master = DigitalArt.Master( - metadata: metadata, - evergreenProfile: evergreenProfile - ) - - assert(master.availableEditions() == 2, message: "wrong availableEditions() value") - - master.close() - assert(master.availableEditions() == 0, message: "wrong availableEditions() value") -} -`). - Argument(iinft.DigitalArtMetadataToCadence( - metadata, flow.HexToAddress(se.WellKnownAddresses()["DigitalArt"])), - ). - Argument( - evergreen.ProfileToCadence(profile, flow.HexToAddress(se.WellKnownAddresses()["Evergreen"])), - ).RunReturns() - require.NoError(t, err) - }) -} - -func TestDigitalArt_sealMaster(t *testing.T) { - client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) - require.NoError(t, err) - - scripts.ConfigureInMemoryEmulator(t, client, "1000.0") - - se, err := scripts.NewEngine(client, false) - require.NoError(t, err) - - artistAcct := client.Account(user1AccountName) - - profile := BasicEvergreenProfile(artistAcct.Address()) - - t.Run("Should be able to seal new digital art master", func(t *testing.T) { - - metadata := SampleMetadata(4) - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertSuccess() - }) - - t.Run("Shouldn't be able to seal the same digital art master twice", func(t *testing.T) { - - metadata := SampleMetadata(4) - metadata.Asset = "did:sequel:asset-2" - - // Seal the master - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertSuccess() - - // try again, should fail - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertFailure("Master already sealed") - }) - - t.Run("Shouldn't be able to seal the master with an empty asset ID", func(t *testing.T) { - - metadata := SampleMetadata(4) - metadata.Asset = "" - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertFailure("Empty asset ID") - }) - - t.Run("Shouldn't be able to seal the master with zero maxEditions", func(t *testing.T) { - - metadata := SampleMetadata(4) - metadata.MaxEdition = 0 - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertFailure("MaxEdition should be positive") - }) - - t.Run("Shouldn't be able to seal the master with non-zero edition", func(t *testing.T) { - - metadata := SampleMetadata(4) - metadata.Edition = 2 - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertFailure("Edition should be zero") - }) - - t.Run("Shouldn't be able to re-seal an already closed master", func(t *testing.T) { - userAcct := client.Account(user1AccountName) - - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") - - _ = se.NewTransaction("account_setup"). - SignProposeAndPayAs(user1AccountName). - Test(t). - AssertSuccess() - - metadata := SampleMetadata(1) - metadata.Asset = "did:sequel:asset-id-new" - - // seal a master with 1 edition - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertSuccess() - - // mint the only available edition - - _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). - SignProposeAndPayAs(adminAccountName). - StringArgument(metadata.Asset). - UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). - Test(t). - AssertSuccess() - - // ensure the master is closed - - _, err := client.Script(` - import DigitalArt from 0x01cf0e2f2f715450 - - pub fun main(masterId: String) { - assert(DigitalArt.isClosed(masterId: masterId), message: "master is not closed") - } - `). - StringArgument(metadata.Asset). - RunReturns() - require.NoError(t, err) - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertFailure("Master already sealed") - }) -} - -func TestDigitalArt_mintEditionNFT(t *testing.T) { - client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) - require.NoError(t, err) - - scripts.ConfigureInMemoryEmulator(t, client, "1000.0") - - se, err := scripts.NewEngine(client, false) - require.NoError(t, err) - - userAcct := client.Account(user1AccountName) - - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") - - _ = se.NewTransaction("account_setup"). - SignProposeAndPayAs(user1AccountName). - Test(t). - AssertSuccess() - - checkDigitalArtNFTSupply(t, se, 0) - checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 0) - - metadata := SampleMetadata(2) - profile := BasicEvergreenProfile(userAcct.Address()) - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertSuccess() - - t.Run("Should be able to mint a token", func(t *testing.T) { - - _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). - SignProposeAndPayAs(adminAccountName). - StringArgument(metadata.Asset). - UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). - Test(t). - AssertSuccess(). - AssertEventCount(5). - AssertEmitEventName("A.01cf0e2f2f715450.DigitalArt.Minted", "A.01cf0e2f2f715450.DigitalArt.Deposit"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ - "id": "0", - "asset": "did:sequel:asset-id", - "edition": "1", - "modID": "0", - })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ - "id": "0", - "to": "0xf3fcd2c1a78f5eee", - })) - - // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, userAcct.Address().String(), 0) - checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 1) - checkDigitalArtNFTSupply(t, se, 1) - - val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - - meta, err := iinft.DigitalArtMetadataFromCadence(val) - require.NoError(t, err) - - assert.Equal(t, uint64(1), meta.Edition) - }) - - t.Run("Editions should have different metadata", func(t *testing.T) { - _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). - SignProposeAndPayAs(adminAccountName). - StringArgument(metadata.Asset). - UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). - Test(t). - AssertSuccess(). - AssertEventCount(5). - AssertEmitEventName("A.01cf0e2f2f715450.DigitalArt.Minted", "A.01cf0e2f2f715450.DigitalArt.Deposit"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ - "id": "1", - "asset": "did:sequel:asset-id", - "edition": "2", - "modID": "0", - })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ - "id": "1", - "to": "0xf3fcd2c1a78f5eee", - })) - - // Assert that the account's collection is correct - checkTokenInDigitalArtCollection(t, se, userAcct.Address().String(), 1) - checkDigitalArtCollectionLen(t, se, userAcct.Address().String(), 2) - checkDigitalArtNFTSupply(t, se, 2) - - val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(userAcct.Address())). - UInt64Argument(1). - RunReturns() - require.NoError(t, err) - - meta, err := iinft.DigitalArtMetadataFromCadence(val) - require.NoError(t, err) - - assert.Equal(t, uint64(2), meta.Edition) - }) - - t.Run("Should fail if master doesn't exist", func(t *testing.T) { - _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). - SignProposeAndPayAs(adminAccountName). - StringArgument("bad_master_id"). - UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). - Test(t). - AssertFailure("Master not found") - }) - - t.Run("Should fail if no available editions", func(t *testing.T) { - _ = client.Transaction(` -import DigitalArt from 0x01cf0e2f2f715450 - -transaction(masterId: String) { - let admin: &DigitalArt.Admin - - prepare(signer: AuthAccount) { - self.admin = signer.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! - assert(self.admin.availableEditions(masterId: masterId) == 0, message: "Available editions remain") - } - - execute { - let newNFT <- self.admin.mintEditionNFT(masterId: masterId, modID: 0) - destroy newNFT - } -}`). - SignProposeAndPayAs(adminAccountName). - StringArgument(metadata.Asset). - Test(t). - AssertFailure("No more tokens to mint") - }) -} - -func TestDigitalArt_isClosed(t *testing.T) { - client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) - require.NoError(t, err) - - scripts.ConfigureInMemoryEmulator(t, client, "1000.0") - - se, err := scripts.NewEngine(client, false) - require.NoError(t, err) - - artistAcct := client.Account(user1AccountName) - - profile := BasicEvergreenProfile(artistAcct.Address()) - - t.Run("isClosed() should return false, if master isn't closed", func(t *testing.T) { - metadata := SampleMetadata(1) - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertSuccess() - - _, err := client.Script(` - import DigitalArt from 0x01cf0e2f2f715450 - - pub fun main(masterId: String) { - assert(!DigitalArt.isClosed(masterId: masterId), message: "test failed") - } - `). - StringArgument(metadata.Asset). - RunReturns() - require.NoError(t, err) - }) - - t.Run("isClosed() should return false, if master isn't sealed at all", func(t *testing.T) { - _, err := client.Script(` - import DigitalArt from 0x01cf0e2f2f715450 - - pub fun main(masterId: String) { - assert(!DigitalArt.isClosed(masterId: masterId), message: "test failed") - } - `). - StringArgument("non-existent-asset"). - RunReturns() - require.NoError(t, err) - }) - - t.Run("isClosed() should return true, if master is closed", func(t *testing.T) { - userAcct := client.Account(user1AccountName) - - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") - - _ = se.NewTransaction("account_setup"). - SignProposeAndPayAs(user1AccountName). - Test(t). - AssertSuccess() - - metadata := SampleMetadata(1) - metadata.Asset = "did:sequel:asset-new-id" - - // seal a master with 1 edition - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertSuccess() - - // mint the only available edition - - _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). - SignProposeAndPayAs(adminAccountName). - StringArgument(metadata.Asset). - UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). - Test(t). - AssertSuccess() - - // ensure the master is closed - - _, err := client.Script(` - import DigitalArt from 0x01cf0e2f2f715450 - - pub fun main(masterId: String) { - assert(DigitalArt.isClosed(masterId: masterId), message: "master is not closed") - } - `). - StringArgument(metadata.Asset). - RunReturns() - require.NoError(t, err) - }) -} - -func TestDigitalArt_NFT(t *testing.T) { - client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) - require.NoError(t, err) - - scripts.ConfigureInMemoryEmulator(t, client, "1000.0") - - se, err := scripts.NewEngine(client, false) - require.NoError(t, err) - - userAcct := client.Account(user1AccountName) - - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") - - _ = se.NewTransaction("account_setup"). - SignProposeAndPayAs(user1AccountName). - Test(t). - AssertSuccess() - - metadata := SampleMetadata(4) - profile := BasicEvergreenProfile(userAcct.Address()) - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertSuccess() - - _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). - SignProposeAndPayAs(adminAccountName). - StringArgument(metadata.Asset). - UInt64Argument(1). - Argument(cadence.Address(userAcct.Address())). - Test(t). - AssertSuccess() - - t.Run("DigitalArt.getMetadata(...) should return NFT metadata", func(t *testing.T) { - val, err := se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - - meta, err := iinft.DigitalArtMetadataFromCadence(val) - require.NoError(t, err) - - assert.Equal(t, metadata.Asset, meta.Asset) - assert.Equal(t, uint64(1), meta.Edition) - }) - - t.Run("DigitalArt.getMetadata(...) should fail if token doesn't exist in collection", func(t *testing.T) { - _, err = se.NewScript("digitalart_get_metadata"). - Argument(cadence.NewAddress(userAcct.Address())). - UInt64Argument(123). - RunReturns() - require.Error(t, err) - }) - - t.Run("getViews() should return a list of view types", func(t *testing.T) { - - viewsVal, err := client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : [Type] { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! - if let item = collection.borrowDigitalArt(id: tokenID) { - return item.getViews() - } - - return [] -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - - viewsArray, ok := viewsVal.(cadence.Array) - require.True(t, ok) - require.Equal(t, 2, len(viewsArray.Values)) - assert.Equal(t, "Type()", viewsArray.Values[0].String()) - assert.Equal(t, "Type()", viewsArray.Values[1].String()) - }) - - t.Run("resolveView(Type()) should return MetadataViews.Display view", func(t *testing.T) { - - val, err := client.Script(` -import MetadataViews from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : MetadataViews.Display? { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! - if let item = collection.borrowDigitalArt(id: tokenID) { - if let view = item.resolveView(Type()) { - return view as! MetadataViews.Display - } - } - - return nil -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - - displayStruct, ok := val.(cadence.Optional).Value.(cadence.Struct) - require.True(t, ok) - assert.Equal(t, "MetadataViews.Display", displayStruct.StructType.QualifiedIdentifier) - assert.Equal(t, "Pure Art", displayStruct.Fields[0].ToGoValue().(string)) - assert.Equal(t, "Digital art in its purest form", displayStruct.Fields[1].ToGoValue().(string)) - thumbnailStruct, ok := displayStruct.Fields[2].(cadence.Struct) - require.True(t, ok) - assert.Equal(t, "MetadataViews.IPFSFile", thumbnailStruct.StructType.QualifiedIdentifier) - assert.Equal(t, "QmPreview", thumbnailStruct.Fields[0].ToGoValue().(string)) - }) - - t.Run("resolveView(Type()) should return DigitalArt.Metadata view", func(t *testing.T) { - - val, err := client.Script(` -import MetadataViews from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : DigitalArt.Metadata? { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! - if let item = collection.borrowDigitalArt(id: tokenID) { - if let view = item.resolveView(Type()) { - return view as! DigitalArt.Metadata - } - } - - return nil -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - - meta, err := iinft.DigitalArtMetadataFromCadence(val) - require.NoError(t, err) - - assert.Equal(t, "Pure Art", meta.Name) - assert.Equal(t, "Digital art in its purest form", meta.Description) - assert.Equal(t, uint64(1), meta.Edition) - }) - - t.Run("getAssetID() should return DigitalArt's master ID", func(t *testing.T) { - - val, err := client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : String { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! - if let item = collection.borrowDigitalArt(id: tokenID) { - return item.getAssetID() - } - - return "" -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - - assert.Equal(t, metadata.Asset, val.(cadence.String).ToGoValue()) - }) - - t.Run("getEvergreenProfile() should return DigitalArt's Evergreen profile", func(t *testing.T) { - - val, err := client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 -import Evergreen from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : Evergreen.Profile? { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! - if let item = collection.borrowDigitalArt(id: tokenID) { - return item.getEvergreenProfile() - } - - return nil -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - - actual, err := evergreen.ProfileFromCadence(val) - require.NoError(t, err) - assert.Equal(t, profile.ID, actual.ID) - }) -} - -func TestDigitalArt_Collection(t *testing.T) { - client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) - require.NoError(t, err) - - scripts.ConfigureInMemoryEmulator(t, client, "1000.0") - - se, err := scripts.NewEngine(client, false) - require.NoError(t, err) - - userAcct := client.Account(user1AccountName) - - scripts.FundAccountWithFlow(t, client, userAcct.Address(), "10.0") - - _ = se.NewTransaction("account_setup"). - SignProposeAndPayAs(user1AccountName). - Test(t). - AssertSuccess() - - metadata := SampleMetadata(4) - profile := BasicEvergreenProfile(userAcct.Address()) - - _ = scripts.CreateSealDigitalArtTx(se, client, metadata, profile). - SignProposeAndPayAs(adminAccountName). - Test(t). - AssertSuccess() - - // mint 2 NFTs - - _ = client.Transaction(se.GetStandardScript("digitalart_mint_edition")). - SignProposeAndPayAs(adminAccountName). - StringArgument(metadata.Asset). - UInt64Argument(2). - Argument(cadence.Address(userAcct.Address())). - Test(t). - AssertSuccess() - - t.Run("getIDs() should return a list of token IDs", func(t *testing.T) { - - viewsVal, err := client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : [UInt64] { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! - return collection.getIDs() -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - - idArray, ok := viewsVal.(cadence.Array) - require.True(t, ok) - require.Equal(t, 2, len(idArray.Values)) - ids := []int{ - int(idArray.Values[0].(cadence.UInt64).ToGoValue().(uint64)), - int(idArray.Values[1].(cadence.UInt64).ToGoValue().(uint64)), - } - sort.Ints(ids) - assert.Equal(t, 0, ids[0]) - assert.Equal(t, 1, ids[1]) - }) - - t.Run("borrowNFT(...) should return NonFungibleToken.NFT", func(t *testing.T) { - - val, err := client.Script(` -import NonFungibleToken from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : UInt64 { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{NonFungibleToken.CollectionPublic}>()! - let tokenRef = collection.borrowNFT(id: tokenID) - - return tokenRef.id -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(1). - RunReturns() - require.NoError(t, err) - - assert.Equal(t, uint64(1), val.(cadence.UInt64).ToGoValue().(uint64)) - }) - - t.Run("borrowNFT(...) should fail if NFT isn't found", func(t *testing.T) { - - _, err = client.Script(` -import NonFungibleToken from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : UInt64 { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{NonFungibleToken.CollectionPublic}>()! - let tokenRef = collection.borrowNFT(id: tokenID) - - return tokenRef.id -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(2). - RunReturns() - require.Error(t, err) - }) - - t.Run("borrowDigitalArt(...) should return DigitalArt.NFT", func(t *testing.T) { - - val, err := client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : String { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! - let daToken = collection.borrowDigitalArt(id: tokenID) - return daToken!.metadata.asset -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(1). - RunReturns() - require.NoError(t, err) - - assert.Equal(t, metadata.Asset, val.(cadence.String).ToGoValue()) - }) - - t.Run("borrowDigitalArt(...) should return nil if token isn't found", func(t *testing.T) { - - val, err := client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) : String { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! - if let item = collection.borrowDigitalArt(id: tokenID) { - return item.metadata.asset - } - return "not found" -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(123). - RunReturns() - require.NoError(t, err) - - assert.Equal(t, "not found", val.(cadence.String).ToGoValue()) - }) - - t.Run("borrowViewResolver(...) should return MetadataViews.Display view", func(t *testing.T) { - - _, err = client.Script(` -import MetadataViews from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{MetadataViews.ResolverCollection}>()! - - let resolver = collection.borrowViewResolver(id: tokenID) - - if let view = resolver.resolveView(Type()) { - let display = view as! MetadataViews.Display - assert(display.name == "Pure Art", message: "bad value of meta.name") - } else { - panic("MetadataViews.Display view not found") - } - - if let view = resolver.resolveView(Type()) { - let meta = view as! DigitalArt.Metadata - assert(meta.name == "Pure Art", message: "bad value of meta.name") - } else { - panic("DigitalArt.Metadata view not found") - } - -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - }) - - t.Run("borrowEvergreenToken(...) should return &AnyResource{Evergreen.Token}", func(t *testing.T) { - - _, err = client.Script(` -import MetadataViews from 0xf8d6e0586b0a20c7 -import Evergreen from 0x01cf0e2f2f715450 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{Evergreen.CollectionPublic}>()! - - let token = collection.borrowEvergreenToken(id: tokenID) - - let profile = token!.getEvergreenProfile() - - assert(profile.id == 1, message: "bad value of evergreen profile ID") -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(0). - RunReturns() - require.NoError(t, err) - }) - - t.Run("borrowEvergreenToken(...) should return nil if token not found", func(t *testing.T) { - - _, err = client.Script(` -import MetadataViews from 0xf8d6e0586b0a20c7 -import Evergreen from 0x01cf0e2f2f715450 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{Evergreen.CollectionPublic}>()! - - let token = collection.borrowEvergreenToken(id: tokenID) - - assert(token == nil, message: "token not nil") -} -`). - Argument(cadence.Address(userAcct.Address())). - UInt64Argument(123). - RunReturns() - require.NoError(t, err) - }) -} - -func TestDigitalArt_createEmptyCollection(t *testing.T) { - client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) - require.NoError(t, err) - - scripts.ConfigureInMemoryEmulator(t, client, "1000.0") - - se, err := scripts.NewEngine(client, false) - require.NoError(t, err) - - receiverAcctName := user2AccountName - receiverAcct := client.Account(receiverAcctName) - - scripts.FundAccountWithFlow(t, client, receiverAcct.Address(), "10.0") - - t.Run("Should be able to create a new empty NFT Collection", func(t *testing.T) { - - _ = se.NewTransaction("account_setup"). - SignProposeAndPayAs(receiverAcctName). - Test(t). - AssertSuccess() - - checkDigitalArtCollectionLen(t, se, receiverAcct.Address().String(), 0) - }) -} - -func checkDigitalArtNFTSupply(t *testing.T, se *scripts.Engine, expectedSupply int) { - t.Helper() - - _, err := se.NewInlineScript( - inspectNFTSupplyScript(se.WellKnownAddresses(), "DigitalArt", expectedSupply), - ).RunReturns() - require.NoError(t, err) -} - -func checkTokenInDigitalArtCollection(t *testing.T, se *scripts.Engine, userAddr string, nftID uint64) { - t.Helper() - - _, err := se.NewInlineScript( - inspectCollectionScript(se.WellKnownAddresses(), userAddr, "DigitalArt", "DigitalArt.CollectionPublicPath", nftID), - ).RunReturns() - require.NoError(t, err) -} - -func checkDigitalArtCollectionLen(t *testing.T, se *scripts.Engine, userAddr string, length int) { - t.Helper() - - _, err := se.NewInlineScript( - inspectCollectionLenScript(se.WellKnownAddresses(), userAddr, "DigitalArt", "DigitalArt.CollectionPublicPath", length), - ).RunReturns() - require.NoError(t, err) -} From a46620b2a9ff4f674afbbae52ce54e3565bdd63a Mon Sep 17 00:00:00 2001 From: sequel21 Date: Sun, 3 Nov 2024 15:34:06 +0000 Subject: [PATCH 03/12] Fix all unit tests --- contracts/DigitalArt.cdc | 30 +- contracts/Evergreen.cdc | 4 +- contracts/SequelMarketplace.cdc | 6 +- contracts/standard/FUSD.cdc | 230 --------------- .../{standard => testing}/ExampleNFT.cdc | 0 contracts/testing/ExampleToken.cdc | 223 +++++++++++++++ flow.json | 11 +- lib/go/iinft/gwtf/asserts.go | 25 +- lib/go/iinft/internal/assets/assets.go | 124 ++++---- lib/go/iinft/scripts/engine.go | 44 ++- lib/go/iinft/scripts/engine_test.go | 4 +- lib/go/iinft/scripts/helpers.go | 2 +- .../scripts/digitalart_get_metadata.cdc | 4 +- .../account_balance_example_ft.cdc | 16 ++ .../transactions/account_balance_flow.cdc | 8 +- .../transactions/account_balance_fusd.cdc | 17 -- .../transactions/account_fund_example_ft.cdc | 42 +++ .../transactions/account_fund_fusd.cdc | 27 -- .../account_royalty_receiver_setup.cdc | 143 ++++++---- .../templates/transactions/account_setup.cdc | 20 +- .../transactions/account_setup_example_ft.cdc | 41 +++ .../transactions/account_setup_flow.cdc | 21 +- .../transactions/account_setup_fusd.cdc | 35 --- .../transactions/account_setup_usdc.cdc | 34 +++ .../account_switchboard_setup.cdc | 43 ++- .../transactions/digitalart_destroy.cdc | 20 +- .../transactions/digitalart_mint_edition.cdc | 27 +- ...fusd.cdc => digitalart_mint_on_demand.cdc} | 51 ++-- .../digitalart_mint_on_demand_flow.cdc | 32 +-- .../transactions/digitalart_transfer.cdc | 8 +- .../transactions/marketplace_buy.cdc | 67 +++++ .../transactions/marketplace_buy_flow.cdc | 31 +- .../transactions/marketplace_buy_fusd.cdc | 56 ---- .../transactions/marketplace_list.cdc | 75 +++++ .../transactions/marketplace_list_flow.cdc | 40 +-- .../transactions/marketplace_list_fusd.cdc | 45 --- .../transactions/marketplace_withdraw.cdc | 8 +- .../templates/transactions/master_seal.cdc | 6 +- .../service_deposit_fusd_minter.cdc | 56 ---- .../service_setup_fusd_minter.cdc | 28 -- lib/go/iinft/scripts/testing.go | 43 +-- .../iinft/test/digitalart_integration_test.go | 130 +++++---- lib/go/iinft/test/digitalart_test.go | 172 +++++------ lib/go/iinft/test/evergreen_test.go | 32 +-- .../test/{fusd_test.go => example_ft_test.go} | 32 ++- .../test/marketplace_integration_test.go | 82 +++--- lib/go/iinft/test/marketplace_test.go | 268 +++++++++--------- lib/go/iinft/test/scripts.go | 12 +- lib/go/iinft/types.go | 22 +- 49 files changed, 1299 insertions(+), 1198 deletions(-) delete mode 100644 contracts/standard/FUSD.cdc rename contracts/{standard => testing}/ExampleNFT.cdc (100%) create mode 100644 contracts/testing/ExampleToken.cdc create mode 100644 lib/go/iinft/scripts/templates/transactions/account_balance_example_ft.cdc delete mode 100644 lib/go/iinft/scripts/templates/transactions/account_balance_fusd.cdc create mode 100644 lib/go/iinft/scripts/templates/transactions/account_fund_example_ft.cdc delete mode 100644 lib/go/iinft/scripts/templates/transactions/account_fund_fusd.cdc create mode 100644 lib/go/iinft/scripts/templates/transactions/account_setup_example_ft.cdc delete mode 100644 lib/go/iinft/scripts/templates/transactions/account_setup_fusd.cdc create mode 100644 lib/go/iinft/scripts/templates/transactions/account_setup_usdc.cdc rename lib/go/iinft/scripts/templates/transactions/{digitalart_mint_on_demand_fusd.cdc => digitalart_mint_on_demand.cdc} (58%) create mode 100644 lib/go/iinft/scripts/templates/transactions/marketplace_buy.cdc delete mode 100644 lib/go/iinft/scripts/templates/transactions/marketplace_buy_fusd.cdc create mode 100644 lib/go/iinft/scripts/templates/transactions/marketplace_list.cdc delete mode 100644 lib/go/iinft/scripts/templates/transactions/marketplace_list_fusd.cdc delete mode 100644 lib/go/iinft/scripts/templates/transactions/service_deposit_fusd_minter.cdc delete mode 100644 lib/go/iinft/scripts/templates/transactions/service_setup_fusd_minter.cdc rename lib/go/iinft/test/{fusd_test.go => example_ft_test.go} (55%) diff --git a/contracts/DigitalArt.cdc b/contracts/DigitalArt.cdc index e96c8fd..11dd329 100644 --- a/contracts/DigitalArt.cdc +++ b/contracts/DigitalArt.cdc @@ -83,6 +83,16 @@ contract DigitalArt: NonFungibleToken { } } + access(all) + fun getMetadata() : Metadata? { + return self.metadata + } + + access(all) + fun getEvergreenProfile() : Evergreen.Profile? { + return self.evergreenProfile + } + // We close masters after all editions are minted instead of deleting master records // This process ensures nobody can ever mint tokens with the same asset ID. access(all) @@ -204,14 +214,14 @@ contract DigitalArt: NonFungibleToken { let id: UInt64 access(all) - let metadata: &Metadata + let metadata: Metadata access(all) - let evergreenProfile: &Evergreen.Profile + let evergreenProfile: Evergreen.Profile // initializer // - init(initID: UInt64, metadata: &Metadata, evergreenProfile: &Evergreen.Profile) { + init(initID: UInt64, metadata: Metadata, evergreenProfile: Evergreen.Profile) { self.id = initID self.metadata = metadata self.evergreenProfile = evergreenProfile @@ -266,7 +276,7 @@ contract DigitalArt: NonFungibleToken { } access(all) - fun getEvergreenProfile(): &Evergreen.Profile { + fun getEvergreenProfile(): Evergreen.Profile { return self.evergreenProfile } @@ -281,8 +291,8 @@ contract DigitalArt: NonFungibleToken { // the details of DigitalArt in the Collection. // REMOVE access(all) resource interface CollectionPublic { - access(all) - fun deposit(token: @{NonFungibleToken.NFT}) + //access(all) + //fun deposit(token: @{NonFungibleToken.NFT}) access(all) view fun getIDs(): [UInt64] @@ -486,14 +496,14 @@ contract DigitalArt: NonFungibleToken { } access(all) - fun evergreenProfile(masterId: String) : &Evergreen.Profile { + fun evergreenProfile(masterId: String) : Evergreen.Profile { pre { DigitalArt.masters.containsKey(masterId) : "Master not found" } let master = &DigitalArt.masters[masterId]! as &Master - return master.evergreenProfile! + return master.getEvergreenProfile()! } // mintEditionNFT mints a token from master with the given ID. @@ -509,7 +519,7 @@ contract DigitalArt: NonFungibleToken { assert(master.availableEditions() > 0, message: "No more tokens to mint") - let metadata = master.metadata! + let metadata = master.getMetadata()! let edition = master.newEditionID() metadata.setEdition(edition: edition) @@ -517,7 +527,7 @@ contract DigitalArt: NonFungibleToken { var newNFT <- create NFT( initID: DigitalArt.totalSupply, metadata: metadata, - evergreenProfile: master.evergreenProfile! + evergreenProfile: master.getEvergreenProfile()! ) emit Minted(id: DigitalArt.totalSupply, asset: metadata.asset, edition: edition, modID: modID) diff --git a/contracts/Evergreen.cdc b/contracts/Evergreen.cdc index cb45828..c6e4f21 100644 --- a/contracts/Evergreen.cdc +++ b/contracts/Evergreen.cdc @@ -142,10 +142,10 @@ contract Evergreen { // getEvergreenProfile returns the token's Profile. access(all) - fun getEvergreenProfile(): &Profile + fun getEvergreenProfile(): Profile } - // An interface for reading the details of an evengreen token in the Collection. + // An interface for reading the details of an evergreen token in the Collection. access(all) resource interface CollectionPublic { access(all) diff --git a/contracts/SequelMarketplace.cdc b/contracts/SequelMarketplace.cdc index d0d63a5..06c543b 100644 --- a/contracts/SequelMarketplace.cdc +++ b/contracts/SequelMarketplace.cdc @@ -152,7 +152,7 @@ contract SequelMarketplace { storefrontAddress: Address, storefront: &NFTStorefront.Storefront, listingID: UInt64, - listing: &NFTStorefront.Listing, + listing: &{NFTStorefront.ListingPublic}, paymentVault: @{FungibleToken.Vault}, buyerAddress: Address, metadataLink: String?, @@ -182,7 +182,7 @@ contract SequelMarketplace { sellerRole: String, sellerVaultPath: PublicPath, paymentVault: @{FungibleToken.Vault}, - evergreenProfile: &Evergreen.Profile, + evergreenProfile: Evergreen.Profile, ) { let seller = evergreenProfile.getRole(id: sellerRole)!.address @@ -249,7 +249,7 @@ contract SequelMarketplace { // Any residual amount goes to the given seller's address. access(all) fun buildPayments( - profile: &Evergreen.Profile, + profile: Evergreen.Profile, seller: Address, sellerRole: String, sellerVaultPath: PublicPath, diff --git a/contracts/standard/FUSD.cdc b/contracts/standard/FUSD.cdc deleted file mode 100644 index 4904a2a..0000000 --- a/contracts/standard/FUSD.cdc +++ /dev/null @@ -1,230 +0,0 @@ -import FungibleToken from "./FungibleToken.cdc" -import MetadataViews from "./MetadataViews.cdc" -import FungibleTokenMetadataViews from "./FungibleTokenMetadataViews.cdc" - -access(all) contract FUSD: FungibleToken { - - access(all) entitlement MinterProxyOwner - - // Event that is emitted when new tokens are minted - access(all) event TokensMinted(amount: UFix64) - - // The storage path for the admin resource - access(all) let AdminStoragePath: StoragePath - - // The storage Path for minters' MinterProxy - access(all) let MinterProxyStoragePath: StoragePath - - // The public path for minters' MinterProxy capability - access(all) let MinterProxyPublicPath: PublicPath - - // Total supply of fusd in existence - access(all) var totalSupply: UFix64 - - // -------- ViewResolver Functions for MetadataViews -------- - access(all) view fun getContractViews(resourceType: Type?): [Type] { - return [ - Type(), - Type(), - Type(), - Type() - ] - } - - access(all) fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? { - switch viewType { - case Type(): - return FungibleTokenMetadataViews.FTView( - ftDisplay: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTDisplay?, - ftVaultData: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? - ) - case Type(): - let media = MetadataViews.Media( - file: MetadataViews.HTTPFile( - url: "" - ), - mediaType: "" - ) - let medias = MetadataViews.Medias([media]) - return FungibleTokenMetadataViews.FTDisplay( - name: "Flow USD", - symbol: "FUSD", - description: "Deprecated version of Flow USD. Developers are advised to not use this contract any more", - externalURL: MetadataViews.ExternalURL(""), - logos: medias, - socials: {} - ) - case Type(): - return FungibleTokenMetadataViews.FTVaultData( - storagePath: /storage/fusdVault, - receiverPath: /public/fusdReceiver, - metadataPath: /public/fusdBalance, - receiverLinkedType: Type<&FUSD.Vault>(), - metadataLinkedType: Type<&FUSD.Vault>(), - createEmptyVaultFunction: (fun(): @{FungibleToken.Vault} { - return <-FUSD.createEmptyVault(vaultType: Type<@FUSD.Vault>()) - }) - ) - case Type(): - return FungibleTokenMetadataViews.TotalSupply( - totalSupply: FUSD.totalSupply - ) - } - return nil - } - - // Vault - // - access(all) resource Vault: FungibleToken.Vault { - - // holds the balance of a users tokens - access(all) var balance: UFix64 - - // initialize the balance at resource creation time - init(balance: UFix64) { - self.balance = balance - } - - /// Called when a fungible token is burned via the `Burner.burn()` method - access(contract) fun burnCallback() { - if self.balance > 0.0 { - FUSD.totalSupply = FUSD.totalSupply - self.balance - } - self.balance = 0.0 - } - - access(all) view fun getViews(): [Type] { - return FUSD.getContractViews(resourceType: nil) - } - - access(all) fun resolveView(_ view: Type): AnyStruct? { - return FUSD.resolveContractView(resourceType: nil, viewType: view) - } - - /// getSupportedVaultTypes optionally returns a list of vault types that this receiver accepts - access(all) view fun getSupportedVaultTypes(): {Type: Bool} { - let supportedTypes: {Type: Bool} = {} - supportedTypes[self.getType()] = true - return supportedTypes - } - - access(all) view fun isSupportedVaultType(type: Type): Bool { - return self.getSupportedVaultTypes()[type] ?? false - } - - /// Asks if the amount can be withdrawn from this vault - access(all) view fun isAvailableToWithdraw(amount: UFix64): Bool { - return amount <= self.balance - } - - // withdraw - // - access(FungibleToken.Withdraw) fun withdraw(amount: UFix64): @{FungibleToken.Vault} { - self.balance = self.balance - amount - return <-create Vault(balance: amount) - } - - // deposit - // - access(all) fun deposit(from: @{FungibleToken.Vault}) { - let vault <- from as! @FUSD.Vault - self.balance = self.balance + vault.balance - vault.balance = 0.0 - destroy vault - } - - /// createEmptyVault allows any user to create a new Vault that has a zero balance - /// - access(all) fun createEmptyVault(): @{FungibleToken.Vault} { - return <- FUSD.createEmptyVault(vaultType: Type<@FUSD.Vault>()) - } - } - - // createEmptyVault - // - access(all) fun createEmptyVault(vaultType: Type): @{FungibleToken.Vault} { - pre { - vaultType == Type<@FUSD.Vault>(): "Unsupported vault type requested" - } - return <-create Vault(balance: 0.0) - } - - // Minter - access(all) resource Minter { - - // mintTokens - // - // Function that mints new tokens, adds them to the total supply, - // and returns them to the calling context. - // - access(all) fun mintTokens(amount: UFix64): @FUSD.Vault { - FUSD.totalSupply = FUSD.totalSupply + amount - emit TokensMinted(amount: amount) - return <-create Vault(balance: amount) - } - - } - - access(all) resource interface MinterProxyPublic { - access(all) fun setMinterCapability(cap: Capability<&Minter>) - } - - // MinterProxy - // - // Resource object holding a capability that can be used to mint new tokens. - // The resource that this capability represents can be deleted by the admin - // in order to unilaterally revoke minting capability if needed. - access(all) resource MinterProxy: MinterProxyPublic { - - // access(self) so nobody else can copy the capability and use it. - access(self) var minterCapability: Capability<&Minter>? - - // Anyone can call this, but only the admin can create Minter capabilities, - // so the type system constrains this to being called by the admin. - access(all) fun setMinterCapability(cap: Capability<&Minter>) { - self.minterCapability = cap - } - - access(MinterProxyOwner) fun mintTokens(amount: UFix64): @FUSD.Vault { - return <- self.minterCapability! - .borrow()! - .mintTokens(amount:amount) - } - - init() { - self.minterCapability = nil - } - } - - // Administrator - // kept for backwards compatibility - access(all) resource Administrator {} - - init() { - self.AdminStoragePath = /storage/fusdAdmin - self.MinterProxyPublicPath = /public/fusdMinterProxy - self.MinterProxyStoragePath = /storage/fusdMinterProxy - - self.totalSupply = 1000.0 - - let minter <- create Minter() - self.account.storage.save(<-minter, to: self.AdminStoragePath) - - let vault <- create Vault(balance: self.totalSupply) - - // Create a new FUSD Vault and put it in storage - self.account.storage.save(<-vault, to: /storage/fusdVault) - - // Create a public capability to the Vault that exposes the Vault interfaces - let vaultCap = self.account.capabilities.storage.issue<&FUSD.Vault>( - /storage/fusdVault - ) - self.account.capabilities.publish(vaultCap, at: /public/fusdBalance) - - // Create a public Capability to the Vault's Receiver functionality - let receiverCap = self.account.capabilities.storage.issue<&FUSD.Vault>( - /storage/fusdVault - ) - self.account.capabilities.publish(receiverCap, at: /public/fusdReceiver) - } -} diff --git a/contracts/standard/ExampleNFT.cdc b/contracts/testing/ExampleNFT.cdc similarity index 100% rename from contracts/standard/ExampleNFT.cdc rename to contracts/testing/ExampleNFT.cdc diff --git a/contracts/testing/ExampleToken.cdc b/contracts/testing/ExampleToken.cdc new file mode 100644 index 0000000..0a730da --- /dev/null +++ b/contracts/testing/ExampleToken.cdc @@ -0,0 +1,223 @@ +import "FungibleToken" +import "MetadataViews" +import "FungibleTokenMetadataViews" + +access(all) contract ExampleToken: FungibleToken { + + /// The event that is emitted when new tokens are minted + access(all) event TokensMinted(amount: UFix64, type: String) + + /// Total supply of ExampleTokens in existence + access(all) var totalSupply: UFix64 + + /// Storage and Public Paths + access(all) let VaultStoragePath: StoragePath + access(all) let VaultPublicPath: PublicPath + access(all) let ReceiverPublicPath: PublicPath + access(all) let AdminStoragePath: StoragePath + + access(all) view fun getContractViews(resourceType: Type?): [Type] { + return [ + Type(), + Type(), + Type(), + Type() + ] + } + + access(all) fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? { + switch viewType { + case Type(): + return FungibleTokenMetadataViews.FTView( + ftDisplay: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTDisplay?, + ftVaultData: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ) + case Type(): + let media = MetadataViews.Media( + file: MetadataViews.HTTPFile( + url: "https://assets.website-files.com/5f6294c0c7a8cdd643b1c820/5f6294c0c7a8cda55cb1c936_Flow_Wordmark.svg" + ), + mediaType: "image/svg+xml" + ) + let medias = MetadataViews.Medias([media]) + return FungibleTokenMetadataViews.FTDisplay( + name: "Example Fungible Token", + symbol: "EFT", + description: "This fungible token is used as an example to help you develop your next FT #onFlow.", + externalURL: MetadataViews.ExternalURL("https://example-ft.onflow.org"), + logos: medias, + socials: { + "twitter": MetadataViews.ExternalURL("https://twitter.com/flow_blockchain") + } + ) + case Type(): + return FungibleTokenMetadataViews.FTVaultData( + storagePath: /storage/exampleTokenVault, + receiverPath: /public/exampleTokenReceiver, + metadataPath: /public/exampleTokenVault, + receiverLinkedType: Type<&ExampleToken.Vault>(), + metadataLinkedType: Type<&ExampleToken.Vault>(), + createEmptyVaultFunction: (fun(): @{FungibleToken.Vault} { + return <-ExampleToken.createEmptyVault(vaultType: Type<@ExampleToken.Vault>()) + }) + ) + case Type(): + return FungibleTokenMetadataViews.TotalSupply( + totalSupply: ExampleToken.totalSupply + ) + } + return nil + } + + /// Vault + /// + /// Each user stores an instance of only the Vault in their storage + /// The functions in the Vault and governed by the pre and post conditions + /// in FungibleToken when they are called. + /// The checks happen at runtime whenever a function is called. + /// + /// Resources can only be created in the context of the contract that they + /// are defined in, so there is no way for a malicious user to create Vaults + /// out of thin air. A special Minter resource needs to be defined to mint + /// new tokens. + /// + access(all) resource Vault: FungibleToken.Vault { + + /// The total balance of this vault + access(all) var balance: UFix64 + + // initialize the balance at resource creation time + init(balance: UFix64) { + self.balance = balance + } + + /// Called when a fungible token is burned via the `Burner.burn()` method + access(contract) fun burnCallback() { + if self.balance > 0.0 { + ExampleToken.totalSupply = ExampleToken.totalSupply - self.balance + } + self.balance = 0.0 + } + + access(all) view fun getViews(): [Type] { + return ExampleToken.getContractViews(resourceType: nil) + } + + access(all) fun resolveView(_ view: Type): AnyStruct? { + return ExampleToken.resolveContractView(resourceType: nil, viewType: view) + } + + /// getSupportedVaultTypes optionally returns a list of vault types that this receiver accepts + access(all) view fun getSupportedVaultTypes(): {Type: Bool} { + let supportedTypes: {Type: Bool} = {} + supportedTypes[self.getType()] = true + return supportedTypes + } + + access(all) view fun isSupportedVaultType(type: Type): Bool { + return self.getSupportedVaultTypes()[type] ?? false + } + + /// Asks if the amount can be withdrawn from this vault + access(all) view fun isAvailableToWithdraw(amount: UFix64): Bool { + return amount <= self.balance + } + + /// withdraw + /// + /// Function that takes an amount as an argument + /// and withdraws that amount from the Vault. + /// + /// It creates a new temporary Vault that is used to hold + /// the tokens that are being transferred. It returns the newly + /// created Vault to the context that called so it can be deposited + /// elsewhere. + /// + access(FungibleToken.Withdraw) fun withdraw(amount: UFix64): @ExampleToken.Vault { + self.balance = self.balance - amount + return <-create Vault(balance: amount) + } + + /// deposit + /// + /// Function that takes a Vault object as an argument and adds + /// its balance to the balance of the owners Vault. + /// + /// It is allowed to destroy the sent Vault because the Vault + /// was a temporary holder of the tokens. The Vault's balance has + /// been consumed and therefore can be destroyed. + /// + access(all) fun deposit(from: @{FungibleToken.Vault}) { + let vault <- from as! @ExampleToken.Vault + self.balance = self.balance + vault.balance + vault.balance = 0.0 + destroy vault + } + + /// createEmptyVault + /// + /// Function that creates a new Vault with a balance of zero + /// and returns it to the calling context. A user must call this function + /// and store the returned Vault in their storage in order to allow their + /// account to be able to receive deposits of this token type. + /// + access(all) fun createEmptyVault(): @ExampleToken.Vault { + return <-create Vault(balance: 0.0) + } + } + + /// Minter + /// + /// Resource object that token admin accounts can hold to mint new tokens. + /// + access(all) resource Minter { + /// mintTokens + /// + /// Function that mints new tokens, adds them to the total supply, + /// and returns them to the calling context. + /// + access(all) fun mintTokens(amount: UFix64): @ExampleToken.Vault { + ExampleToken.totalSupply = ExampleToken.totalSupply + amount + emit TokensMinted(amount: amount, type: self.getType().identifier) + return <-create Vault(balance: amount) + } + } + + /// createEmptyVault + /// + /// Function that creates a new Vault with a balance of zero + /// and returns it to the calling context. A user must call this function + /// and store the returned Vault in their storage in order to allow their + /// account to be able to receive deposits of this token type. + /// + access(all) fun createEmptyVault(vaultType: Type): @ExampleToken.Vault { + return <- create Vault(balance: 0.0) + } + + init() { + self.totalSupply = 1000.0 + + self.VaultStoragePath = /storage/exampleTokenVault + self.VaultPublicPath = /public/exampleTokenVault + self.ReceiverPublicPath = /public/exampleTokenReceiver + self.AdminStoragePath = /storage/exampleTokenAdmin + + // Create the Vault with the total supply of tokens and save it in storage + // + let vault <- create Vault(balance: self.totalSupply) + + // Create a public capability to the stored Vault that exposes + // the `deposit` method and getAcceptedTypes method through the `Receiver` interface + // and the `balance` method through the `Balance` interface + // + let exampleTokenCap = self.account.capabilities.storage.issue<&ExampleToken.Vault>(self.VaultStoragePath) + self.account.capabilities.publish(exampleTokenCap, at: self.VaultPublicPath) + let receiverCap = self.account.capabilities.storage.issue<&ExampleToken.Vault>(self.VaultStoragePath) + self.account.capabilities.publish(receiverCap, at: self.ReceiverPublicPath) + + self.account.storage.save(<-vault, to: /storage/exampleTokenVault) + + let admin <- create Minter() + self.account.storage.save(<-admin, to: self.AdminStoragePath) + } +} diff --git a/flow.json b/flow.json index 9d1bc1a..b408d23 100644 --- a/flow.json +++ b/flow.json @@ -11,6 +11,7 @@ "source": "./contracts/standard/Burner.cdc", "aliases": { "emulator": "f8d6e0586b0a20c7", + "mainnet": "f233dcee88fe0abe", "testing": "0000000000000007", "testnet": "9a0766d93b6608b7" } @@ -36,11 +37,9 @@ "testnet": "745b085dafdd4fc0" } }, - "FUSD": { - "source": "./contracts/standard/FUSD.cdc", + "ExampleToken": { + "source": "./contracts/testing/ExampleToken.cdc", "aliases": { - "mainnet": "3c5959b568896393", - "testnet": "e223d8a629e49c68" } }, "FlowToken": { @@ -175,12 +174,12 @@ "MetadataViews", "NonFungibleToken", "FungibleTokenMetadataViews", - "FUSD", "NFTStorefront", "NFTCatalog", "NFTRetrieval", "Art", - "Content" + "Content", + "ExampleToken" ], "emulator-sequel-admin": [ "FungibleTokenSwitchboard", diff --git a/lib/go/iinft/gwtf/asserts.go b/lib/go/iinft/gwtf/asserts.go index 6f1fc9e..4f4b512 100644 --- a/lib/go/iinft/gwtf/asserts.go +++ b/lib/go/iinft/gwtf/asserts.go @@ -7,6 +7,7 @@ import ( "time" "github.com/stretchr/testify/assert" + "golang.org/x/exp/maps" ) type TransactionResult struct { @@ -96,18 +97,32 @@ func (t TransactionResult) AssertEmitEventJSON(event ...string) TransactionResul func (t TransactionResult) AssertPartialEvent(expected *FormatedEvent) TransactionResult { - expectedCpy := *expected + copyEvent := func(e *FormatedEvent) FormatedEvent { + cpy := *e + cpy.Fields = map[string]interface{}{} + maps.Copy(cpy.Fields, e.Fields) + return cpy + } + + expectedCpy := copyEvent(expected) events := t.Events - for index, ev := range events { - // TODO do we need more then just name here? +NextEvent: + for _, ev := range events { if ev.Name == expected.Name { for key := range ev.Fields { - _, exist := expected.Fields[key] + _, exist := expectedCpy.Fields[key] if !exist { - expectedCpy.Fields[key] = events[index].Fields[key] + expectedCpy.Fields[key] = ev.Fields[key] + } else { + _, isArrayExpected := expectedCpy.Fields[key].([]any) + if !isArrayExpected && expectedCpy.Fields[key] != ev.Fields[key] { + expectedCpy = copyEvent(expected) + continue NextEvent + } } } + break } } diff --git a/lib/go/iinft/internal/assets/assets.go b/lib/go/iinft/internal/assets/assets.go index 6d8c692..f9e1004 100644 --- a/lib/go/iinft/internal/assets/assets.go +++ b/lib/go/iinft/internal/assets/assets.go @@ -1,12 +1,10 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// contracts/DigitalArt.cdc (20.533kB) -// contracts/Evergreen.cdc (5.402kB) -// contracts/SOURCES.md (1.358kB) -// contracts/SequelMarketplace.cdc (10.006kB) +// contracts/DigitalArt.cdc (20.78kB) +// contracts/Evergreen.cdc (5.401kB) +// contracts/SOURCES.md (1.474kB) +// contracts/SequelMarketplace.cdc (10.012kB) // contracts/standard/Burner.cdc (1.998kB) -// contracts/standard/ExampleNFT.cdc (16.847kB) -// contracts/standard/FUSD.cdc (8.715kB) // contracts/standard/FlowToken.cdc (13.194kB) // contracts/standard/FungibleToken.cdc (10.011kB) // contracts/standard/FungibleTokenMetadataViews.cdc (6.915kB) @@ -15,11 +13,13 @@ // contracts/standard/NFTStorefront.cdc (21.491kB) // contracts/standard/NonFungibleToken.cdc (13.753kB) // contracts/standard/ViewResolver.cdc (2.706kB) +// contracts/testing/ExampleNFT.cdc (16.847kB) +// contracts/testing/ExampleToken.cdc (9.618kB) // contracts/thirdparty/nft_catalog/NFTCatalog.cdc (16.598kB) // contracts/thirdparty/nft_catalog/NFTRetrieval.cdc (8.973kB) // contracts/thirdparty/versus/Art.cdc (17.353kB) // contracts/thirdparty/versus/Content.cdc (2.981kB) -// flow.json (5.016kB) +// flow.json (5.005kB) package assets @@ -88,7 +88,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _contractsDigitalartCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x7c\x5f\x73\xdb\xb6\xb2\xf8\x73\xfc\x29\x36\x7a\x48\xa4\xf9\xc9\x52\x3a\x73\xe6\x77\x67\x34\x51\xd3\x34\x8e\xef\xf1\xbd\x8d\x9b\x89\x95\xf6\xa1\x93\x39\x07\x22\x57\x12\x6a\x0a\x60\x01\xd0\x8a\xea\xe3\xef\x7e\x07\xff\x48\x80\x04\x25\xd9\xed\xed\xdc\x93\x87\xd6\x22\xb1\x8b\xc5\xfe\xc7\x62\x41\xba\x2d\xb9\x50\x70\xcd\xd9\x65\xc5\xd6\x74\x59\xe0\x82\xdf\x22\x83\x95\xe0\x5b\x18\x4c\xa6\x52\x11\x96\x13\x91\x4f\xdb\x23\x26\x59\x9e\x0d\xce\x1c\xf8\x4f\x14\x77\x9f\x50\xf2\xe2\x0e\x85\x03\x6d\x20\xc3\x97\x11\xd4\x07\x54\x24\x27\x8a\xe8\x01\xb2\x3b\x63\xf4\x3a\x02\x7c\x7f\x87\x62\x2d\x30\x20\xb3\x7e\x62\xc7\x9d\x4d\xa7\x70\x41\xd7\x54\x91\xe2\xad\x50\x90\xe3\x8a\x32\x94\x70\x7d\xb9\x90\xa0\x36\x44\x81\xc0\x52\xa0\x44\xa6\x20\xb7\xc3\x80\x08\x05\x94\xc1\x0d\xfe\x56\x61\x31\xd1\x08\x6e\x10\x61\xa3\x54\x29\x67\xd3\xa9\xb4\x8f\x65\x49\x32\x84\x15\x17\xb0\xe5\x02\x21\x47\x45\x68\x21\xf5\xe8\xd6\x8c\x4a\xb3\x48\x82\xac\xca\x16\xc1\xe6\x05\xf8\x35\x7a\xc8\x1b\x5e\x89\x0c\x67\xf5\x74\x6b\xaa\x36\xd5\x72\x92\xf1\xed\xb4\xa4\xa5\x20\x0a\x1d\x05\xe7\xab\x82\xef\xce\x33\xce\x94\x20\x99\x92\x1a\x9c\x64\x19\x4a\x39\x24\x45\x31\x3a\xf3\x2f\x02\x52\x66\x5d\xd9\xde\x9f\x9d\x01\x00\x4c\xa7\x9a\x2e\xa6\xa4\xfb\x65\xfe\x17\x62\xd3\xbf\x51\x8f\x80\x77\x0e\xef\x15\xa3\x8a\x92\x82\xfe\x8e\xf9\x70\x74\x60\xfc\xcf\x54\x6d\x72\x41\x76\x43\x9a\xcf\xe0\xf3\x15\x53\xff\xff\x6f\x63\x23\xab\x19\xbc\xcd\x73\x81\x52\xbe\x39\x04\x7e\x81\x25\x97\x54\x45\xd0\x8a\x9f\x06\xfb\x81\x32\x85\x79\x04\x4a\xa4\x44\x35\x83\x1b\x25\x28\x5b\x8f\x01\x73\xaa\x28\x67\xcd\xfb\x2d\xcf\xaf\x2e\xfc\xcf\x51\xcd\x9c\x6b\xb2\xc5\x1c\x3e\x12\xb5\x39\xc8\xa1\x02\x35\x7f\x8a\x02\x33\x8d\xf5\x46\x71\x41\xd6\xa8\xa1\xf4\x8c\xf5\x8f\x13\x40\x3f\x56\xcb\x82\x66\x16\xb2\xf9\xbb\x17\xf0\x6d\xbe\xa5\x8f\x9f\xce\x40\x7d\x14\xf4\x8e\x28\x07\x15\xfc\xa8\x97\xbe\xd8\x20\x28\xae\xcd\x82\x55\xdb\x25\x0a\xe0\xab\x50\xbb\x1b\x3b\xda\x90\x3b\x84\xa5\x56\xec\xad\xe1\xfb\x21\x46\xdd\x11\x61\x91\xde\x54\x65\x59\xec\x3d\xc3\xeb\x49\x7f\x22\x82\x92\x65\x81\x20\xe9\xef\x08\x39\x35\x4c\x21\x62\xaf\x27\xff\x40\xa4\x42\x01\x02\xa5\xb1\x14\x19\x4e\x20\xb1\x58\x35\x33\x6c\xcd\x48\x39\x83\x7b\x2b\xef\x99\x83\x7d\xa8\xe7\x71\xb8\x90\xe9\xc9\xa4\x21\xfc\x9c\xb3\xf3\x1c\xb7\x84\xe5\xb0\xaa\x98\x9d\xb8\xa0\x6a\x0f\xfa\x89\xf7\x1e\xc4\xe1\x86\x8c\x97\x86\x28\x62\xad\xd9\xe3\x35\x0c\xa1\x12\x2a\x89\x39\x28\x6e\x10\x03\x09\x38\xe8\x14\x4f\xc2\xb0\xa0\x5b\xaa\x30\x87\xe5\x1e\xb6\xce\xcb\x4d\xb6\xe4\xeb\x7b\x37\x60\x34\xf1\x38\x7f\x64\x19\x02\x29\x8a\x06\x96\x08\x74\xbc\x1e\x83\xda\xa0\xa7\x89\x4a\x78\x99\x15\x5c\x62\xfe\x12\x96\x95\x76\x70\x5b\x42\x99\x04\xce\xce\xb3\x0d\xa1\x0d\x91\x1c\x4a\x61\x2d\x45\xe0\xb9\x46\x44\xd9\xda\x0a\x74\x47\xd5\xc6\xa0\x94\x64\x8b\xd6\x68\xe0\xea\x62\x72\x48\xa4\x52\x89\x2a\x53\x9e\xa3\xf7\xe6\x59\x6a\x5c\x2d\x1c\xb7\xd8\x59\xed\xfb\xdf\x1c\x85\x41\xef\x3b\x3f\x0a\xbe\xa2\x05\xce\x1a\x6f\x3a\x71\x8f\x8e\x23\x61\xf8\x55\xbd\x8f\xed\xfe\x28\x8c\x65\xe7\x0c\xbe\xe7\xbc\x38\xab\xdf\x50\x46\xd5\xb0\xbb\x8e\xf1\x29\x74\x8e\x20\xe0\x91\xe1\x1f\x16\xab\x89\x47\x06\xf3\x9a\x3f\xdd\x41\x6d\xec\x30\xef\x4c\xd8\x05\x0a\x56\x0d\x73\xf8\xa6\x3b\xc0\x2e\x11\xe6\xb0\x22\x85\x6c\x10\x3c\x9c\x1d\x64\xce\xaa\x62\xc0\x70\xe7\x30\x5f\x5d\x0c\x47\xe0\x99\xda\x5a\x9f\xf6\x38\x77\xa4\x80\x79\x87\x9e\x63\xc4\x76\x1e\xfd\x3f\x37\xc3\xf0\x9b\x51\x04\x2b\x50\x55\x82\xe9\x59\x1e\x43\x3e\xb9\x23\xb4\xd0\xf6\xef\x4d\xae\x7f\x0d\x74\x05\xcf\x43\x66\xbd\x78\x11\x8b\xed\x79\x60\xb9\xf0\x6d\x82\xf2\x18\x5d\x40\x73\x3f\x9a\xf3\xd3\xd7\xff\x00\x58\x48\xec\x9f\xe4\x55\x3c\x3a\xc5\xa4\xe9\x14\x7e\x46\xab\xee\xde\x7d\x02\x59\x69\x8b\xee\xf1\x3c\x40\x99\x54\x48\x72\xed\xd4\x72\x2c\xd0\xf8\x90\xad\x77\xd1\x19\x17\xb9\x0c\x91\x2f\x36\x54\x42\x29\xb8\x16\x05\x20\x93\x95\x40\x09\x8c\x2f\x79\xbe\x87\x8c\x30\xa3\xc8\xd6\x5b\xba\xb4\xe9\x90\x27\x3a\x24\x55\xb3\x84\xe1\xe8\x88\x91\x31\x5a\x9c\x64\x5f\xc9\x71\xb1\x96\xbe\x3a\x60\x52\x4a\x54\xa1\x45\x05\x3c\xd7\x31\xc8\x93\xe3\x83\x8b\x8b\xae\xf0\x56\xa8\x97\xb2\x09\x0a\xa7\x38\x5f\x8f\xea\x3e\xe4\xb9\x4e\x5e\x0e\xf2\x4b\x9b\x26\x23\x5b\xf4\x79\x51\xa4\x0e\x6f\x85\xa2\xd2\xbe\x3f\x8a\x84\x98\xb1\x49\x34\x17\x28\x33\x41\xcb\xc8\xde\xfb\xd0\xe4\xcd\xd8\x24\xae\x0f\x98\x53\x02\x6a\x5f\xe2\x0c\xae\xb6\x64\x8d\x63\x78\x5b\xe5\x94\x8f\xe1\x27\x9a\x23\x3f\x8a\xdf\x42\xa6\xd6\x0a\x9f\x3f\x5d\x69\x4d\xd6\x0a\xc7\x05\x5d\x53\x46\x8a\x68\x5b\xa0\xb3\x6a\x64\xea\xb0\xfe\xe9\x39\xdc\xc0\xcf\x9f\xae\x8e\xcf\x14\x4e\xa0\x23\x32\xc5\x9d\x87\x87\x21\x9d\xe0\x44\xa7\x17\x9b\x6a\xbb\x64\x84\x16\xa3\x93\xe7\xfe\x68\x51\xf5\x91\xf0\xe1\xea\xc3\x7b\xc3\x0a\x18\xe2\x64\x3d\x81\x97\x54\xb3\x72\xfa\x6b\x89\xeb\x97\xa3\xa3\x73\x6c\xe9\x16\x7b\xf9\xe8\xad\xa2\xc9\x77\xf4\x32\xd7\xf4\x0e\x99\xce\x2f\x26\x7e\x80\x75\x24\x15\xa3\xbf\x55\x76\x2b\x55\x1b\xba\xf5\x20\xe3\x10\x29\xcd\x91\x29\xba\xa2\x36\x57\xd2\x23\x4f\xf3\x06\x26\x71\x68\xc5\xfb\xd8\x25\x61\x2a\x31\x33\x29\xdc\x96\xec\x83\xbc\xb6\x14\x3c\xaf\x32\xcc\x6b\x52\xed\x8a\x2c\xad\x93\x8e\x9b\x73\x48\x33\xc2\x5e\x2a\x58\x22\xe0\xd7\x0c\x31\x6f\xc8\xf7\x3b\xb4\xb1\xc9\xd2\xd4\x06\x05\xea\xdc\x8d\x71\xe0\xcb\x82\xae\x49\x64\x2b\x36\x5f\xb3\x79\x64\x51\x58\xb5\xc1\xac\x20\x02\xf3\x9a\xe6\x88\x84\xab\x15\x04\x51\x64\x3e\x87\x6f\xc6\xb1\x14\xf4\x5c\x9c\xe1\x39\x5f\x9d\x93\xf3\x5b\xca\xf2\xe3\x8a\xd5\x20\xec\xe5\xe4\xc5\xd5\x85\x97\xb7\xe5\xcb\x4b\x69\xe5\x34\xb1\x4c\xb9\xba\xd0\xf3\x7a\x39\x87\xd0\x9a\xa9\x51\x90\x31\x69\x75\xa9\x7d\x4a\x56\x15\x44\x84\x7e\xd1\x68\xd1\x71\x77\x14\x6e\xf6\xfa\xcd\x6f\x55\x15\x91\x91\x07\x4e\x17\xfe\xeb\xe6\xc7\xeb\x10\x90\x48\xa0\x0a\xf0\x2b\x95\x3a\xf6\x11\x23\x36\x50\x74\x8b\x61\x02\xbe\x23\x12\x24\x92\x02\x4f\x61\xa9\x9b\xa9\xcf\x4a\x35\x4f\xdf\xe9\xac\xfd\x07\x9e\xdd\xd6\x31\x15\x1a\x2e\x1b\xea\xff\x3a\x7a\xed\xfc\x27\x91\x6a\xcd\x73\xa3\x93\x83\x43\xe4\xc6\x5a\xab\x4c\x1a\xb0\xc4\x7a\xeb\x24\x50\x09\x8a\x77\x96\xe0\xac\x12\x42\x7b\xc5\x08\x01\x0c\xe9\x0a\xb2\x0d\x61\x6b\xcc\x47\x93\xb3\x67\xcf\x42\xda\x9f\x3d\xab\x35\xe1\xef\x48\x12\x84\x9b\x24\x3e\x8a\xdd\x61\x28\x1c\x47\x6f\xe2\xf8\x16\xbf\x4b\x04\xad\x78\x40\xe8\x2d\xe3\x37\xdd\x58\x91\x7c\xdf\xf5\xe7\xf1\xb0\xb6\x4b\x8e\xdf\xb6\x4b\x1d\x31\x68\xc7\xb0\x5b\x0b\x8f\xca\x26\x31\x68\x57\x81\xc7\xad\xac\x3c\xd4\x98\x04\xde\x48\x2e\xfa\x69\x7a\x6f\xa4\xc5\xa2\x53\xb1\xd0\x6d\xd4\x2f\xad\x64\x60\xee\x44\xd4\x1d\x10\x88\x07\xe6\xa1\xb0\xba\x43\x4d\x4c\x9c\x1b\x79\x25\x72\xba\x5a\x56\x30\x0f\x04\xd7\x3b\xb0\x11\x5a\x33\xbe\x79\x96\x48\x4e\x9d\x10\xf5\x0e\xd0\xfd\x99\xc8\x50\xeb\xac\x13\xfb\xb6\x50\xa1\xef\x0f\xc4\x9b\xe0\x9c\xb1\xd2\xb9\x15\x45\x7f\xb2\x6c\x17\x10\xfc\xea\x0e\x75\xae\x69\xee\x24\xde\x33\x95\x96\xb6\x9f\x4e\xff\xfd\x98\xad\x9a\x44\x9f\x70\x0f\x5b\xea\x9c\x4c\xf4\xfb\xd9\xd4\xce\xc1\xaf\x2f\x17\xfe\xcf\xa0\xb6\x45\x24\x10\x16\xbc\x4b\xa6\xde\xbe\x0e\xa5\xc7\x75\x0b\xac\x93\xeb\xcb\xc5\x38\xaa\x89\x4f\xfc\x1f\xe3\xa0\x28\xe0\x8b\xb1\x9e\xbe\xba\xee\x76\x8b\xec\xa5\x0e\x9a\x47\xfd\x72\x53\xe4\x3c\xcc\xc6\x30\xe6\xcc\xe0\x85\xdf\x31\x1c\x07\xea\xd6\x34\x5e\x74\x8a\x1a\x51\x38\xa0\x75\x81\x58\x04\x8f\x63\xbf\xab\xff\xd3\xd4\x5b\xc7\x29\xca\x52\xd5\x94\xee\xcc\x49\xf9\x53\xad\x68\x76\x8a\xbf\xa0\xd4\x72\x44\x7f\x4d\x56\xaf\x95\x78\x8d\xca\x1c\x63\x0c\x47\x33\xf8\x65\xb1\x2f\xf1\x4b\x8b\x76\xb7\x5b\xff\xa5\xb3\x8d\xd7\x83\x5f\xc7\x47\x21\x17\x54\x96\x05\xd9\x7f\x3b\x1c\x8d\x4f\x19\xee\xac\xe7\xd4\xe1\x9f\xf8\x9e\x14\x8a\xa2\x3c\x19\xff\x57\x85\x82\x91\xe2\xf3\xa7\x1f\x4e\x05\xb9\xbe\x5c\x34\x75\xef\x0b\xa2\xc8\xd3\x00\x8f\xf1\xa1\x31\xeb\x89\x47\xf3\xed\x30\x2e\x9f\x7c\x79\x8c\x2b\x12\xd6\x8a\x35\x29\xc3\x7f\xb8\xd8\xae\x27\x1a\xcd\xe0\x2d\xdb\xdf\x98\xfd\xf8\x9b\xb6\x52\xee\xa8\xca\x36\x76\xcf\xd5\x2d\xd2\x64\x44\xe2\x61\x11\xcf\x3a\x30\xd0\xa8\x4b\x12\x68\x98\x84\x80\x3a\xc9\x89\x2c\xc1\x44\xd8\x2e\xfb\xfc\xbf\x28\xc1\x89\x01\x83\x57\xfd\xf0\xf5\x0e\x76\xd6\xa2\xf5\xef\x8b\xc5\xc7\x4b\x5a\x60\x3f\xb1\xfa\x5f\x25\x8a\x59\xe0\x9c\x27\x6b\x54\x3f\xe3\xf2\x52\x50\x64\x79\xb1\xff\xfc\xe9\x87\xa1\x19\x11\x13\xd6\x09\xb8\xa3\xde\x39\xd2\x6f\xba\x4f\xfb\xc4\xd4\x98\xd6\x23\xc4\xe4\xa3\x99\x95\x06\xa3\xc5\xd8\xed\x1a\xdb\x0b\x71\x01\x6c\xac\x43\x79\xfb\x5d\x13\xdd\x4f\xa7\x36\xb4\xec\x47\xd0\x5b\x83\xf5\xcb\x2a\xe9\x37\x27\xcb\x8a\x16\x79\x03\x9d\xe3\x8a\x54\x85\xfa\x84\x19\xd2\x3b\x14\xf6\xf4\x29\x9e\x6a\x8d\xca\x8e\xdf\xd7\xa3\xea\x83\xb0\xe1\xe8\x0f\x4b\x2b\x72\x54\x8f\x91\x58\x03\x38\x1c\xf8\x33\x5a\x52\x96\x93\xf0\x58\x78\x6a\x8b\x97\x53\xb7\xa9\x3c\x27\x42\x4d\x07\x5a\x19\x33\xa2\x86\x2e\x34\x4d\x14\xb7\x29\xef\x70\x94\x58\x4d\x1f\xdd\x29\x6f\x79\x90\xfa\xc0\x62\x9c\xcb\xf2\x07\xb8\xc6\x75\xf9\xec\x65\x51\x3b\xb0\xd7\xdf\x5d\x5f\x2e\xb4\x1f\x35\x11\xcb\x3c\xd7\x0e\xeb\xa9\x24\x9e\xe6\xbc\xfe\x0c\x2a\xe1\x18\x99\xe9\x10\x70\x90\xae\xc8\xd0\xa2\x81\x41\x88\x08\xc6\x87\x75\xe2\x13\x82\xc8\x1a\xd5\x5b\x9d\x07\x5f\x5d\xe8\x64\xc0\xaa\x43\x3a\x19\x88\x2d\x3e\xce\xd5\x4f\x9b\xe8\x7d\xcb\x24\xf5\x8c\xdd\x3c\xea\xc0\xec\x4f\x4d\x7c\x4c\x35\x5e\x20\x51\xf8\x7e\x5b\xaa\x7d\xa3\x1b\x9a\x82\xef\xee\x3b\x19\x73\x33\xe0\x21\x49\xcc\xeb\x73\x8b\x0d\x42\x4c\xbd\x99\xbd\x29\x3a\xb9\x8a\x13\x65\x0a\xc5\x8a\x64\x68\x8b\x7b\x95\x44\x21\x4d\xb9\x21\x23\xd2\x54\x46\xa8\x08\xd3\xff\x06\x3f\x10\x7f\xec\x0f\x8a\x03\x29\x0a\xbe\x03\xae\x36\x1a\x5c\x71\xc8\x6d\x8b\x42\x08\x4a\x99\xe2\x0e\x61\x83\x65\x02\x57\x0a\x48\x21\x1d\x06\x69\x2a\x5e\x02\x49\xee\xf7\xbd\xe6\xe0\xb8\x6e\x25\x69\x1d\xb4\x53\x66\x5e\x86\xe8\x34\xc0\xa7\xf7\x1f\x7e\xfc\xe9\xfd\xe1\x9d\x49\xb3\xee\x76\x87\xc1\x91\x73\x5a\x2d\x3a\xb7\xba\xa1\x71\x69\x49\x81\x5d\x5f\x2e\x1e\x46\xa7\x27\xbf\x57\x17\x36\xf5\xb5\x39\xff\x97\x13\x01\x97\x5c\x08\xbe\xbb\xbe\x5c\x0c\xff\x11\xec\x75\xb4\x0e\xa7\x09\x7a\x73\x5c\x29\x2d\xca\x86\xc5\xc3\x18\x6f\xe0\x2e\xae\x2f\x17\xed\x5c\xce\x56\x58\xb5\x44\x04\xca\xaa\x50\x40\x25\x7b\xa9\x6c\x08\x37\xba\x96\xfb\x8a\x97\x55\x5b\xcc\x41\xe0\x0a\x05\xb2\x0c\xdb\x88\xe4\x86\x57\x45\x0e\x4b\x0c\x0f\xba\x6c\x85\x5b\xac\xab\x2d\x9a\xd3\x30\x57\x3d\xb3\x1d\x09\x11\x86\x92\x4b\x95\xc8\x27\x87\x8e\xb0\xb9\x39\xbe\x1a\xc1\xbf\xfe\xe5\x1f\xbd\x31\x3b\xa3\x39\xd0\xbc\xc7\xfb\x0d\xde\x11\xc6\xb8\x72\x1c\x0a\xb5\xb0\x5e\xc3\xcc\x6c\x50\x9b\xba\x5e\x77\x95\xda\xea\x28\xcb\xb8\x10\x98\xa9\x41\xcb\x79\xf6\x99\x6b\xa3\xa0\xfe\xc9\x5b\xc8\x1a\x3b\x4c\xf4\x9e\xf0\x1d\xb3\x25\x75\xc2\xb4\xa4\x79\xc5\xd4\x49\xdb\xf5\x66\xa6\x98\x07\x6d\x13\x89\x13\xda\xc6\x61\x1e\x1e\x77\xc0\xab\xc5\x03\x93\xa5\x81\xc0\xf3\xdc\x87\x7b\xea\x69\xab\x15\xe6\xfa\x72\x01\x19\x67\x2b\x2e\xb6\x3a\x72\xd8\xac\x23\x1a\xef\xea\xfc\xa4\x59\xb7\xd9\x7d\x98\x53\x55\xc2\xe0\x9f\x56\xdd\xff\xa9\x05\xb9\xa2\x58\xe4\x87\x8d\x91\x08\xcb\x6e\xcd\x78\xed\x0a\x2c\xf4\x0c\xd2\x26\xf8\x10\x93\xbe\x73\x8d\x60\x20\x70\xcb\xef\xd0\xd7\x56\x6c\xdf\x9e\x3d\x0f\x69\xfc\x2d\xcb\xc1\x0e\xa2\xb5\xee\x67\xa4\x28\x82\x52\x82\x23\xb0\x33\xb3\xef\x37\x1b\x19\x1b\xf7\x93\x0e\xfd\x1f\x41\x77\x57\xaf\x33\x4b\x74\x2e\xd8\x5e\xbd\xd7\xee\x30\xbe\x66\xc2\xc4\xae\x65\x78\x8b\xfb\x19\x34\x53\x74\xb3\x90\x37\x6f\xa0\x24\x8c\x66\xc3\x41\xe0\x56\x02\x5f\xee\x61\x67\xf0\xce\xf8\x02\x6d\x7d\x35\xc3\x1c\xa3\x8c\xd0\xae\x2e\x60\xd0\x9b\x7b\xfb\x14\xb3\xa1\x24\xcc\x32\x8f\x82\x0d\x26\xf0\x6e\x83\xd9\xad\x75\x43\xd5\x72\x4b\x95\x42\x53\xbc\x57\x1c\xb6\xe4\x56\x3f\x14\xa8\x45\x62\x8f\x8e\x6c\x18\x55\x3a\xc2\x86\x36\xba\x63\x72\x32\x18\x8d\xe2\x04\x09\xb7\xb4\xd5\x0b\x68\x58\x3a\xa1\xb9\xef\x06\xac\x39\x2b\xde\x4c\x88\xed\xee\x1b\x25\x93\xac\xd7\xe7\x4d\xaf\x15\xb4\xdb\x17\xa6\x75\x38\x56\xe4\xd6\x74\x6a\x69\xd6\x69\x7d\x22\x79\x1e\xa9\x53\x4d\xb1\x0c\xac\x2a\xc2\x54\x43\x29\xeb\xea\x1c\x24\xcd\x81\x08\x41\xf6\x7f\x56\xe8\x3c\xa4\x6e\xf6\x0f\x22\x9f\xc3\x77\x71\x3c\x3a\xeb\xc0\x98\x6a\x97\x67\xea\x59\x3b\xc6\x90\x3c\x37\xc4\x33\xdc\x39\xa4\x6e\x35\x81\x47\xd9\x6d\x68\xb6\xa9\xcd\xd3\x9c\x81\x17\xb9\x16\x74\x67\x2e\x5e\xe4\x8b\xb4\x45\xfc\x42\xf3\x2f\x35\xe1\x09\x15\x08\xfb\x39\xb5\xec\x15\x3f\x45\xf2\x39\x4a\x25\xf8\xbe\x9e\xb7\x4f\xf6\x36\xbd\x70\x8a\x62\x3c\x8c\x91\x94\x0f\x52\xfa\x9d\xd1\x59\xa2\xd5\x98\xb5\xf4\xe0\xa9\x19\xcc\x81\x9c\xb9\x71\x14\xb7\xb8\x97\x69\xaa\x9b\xd4\x26\x7c\xf8\x9f\xa8\xac\xdb\xf6\xd1\x54\x27\x9e\xee\xdc\xb6\x97\x70\x9d\x4b\x70\x6f\x95\xde\x63\x9a\x0c\x57\xa7\x99\x40\x55\x70\xb2\xa9\x95\x5b\x0f\xf0\x4f\x37\x3c\xea\xd4\xf9\x5f\xca\xca\xd2\xbc\x7a\xd1\xd5\xa1\x83\xbc\x6a\x4c\xe1\xa9\x2c\x33\xb5\xfd\x20\x97\x88\x3a\x0d\xf0\xab\xd6\x51\xb6\x36\xc7\xd1\x7c\x65\x38\x64\xa2\xa3\x84\x21\x65\x59\x51\xe5\x26\xda\x6e\x6c\x30\xbd\xba\x18\x75\xcf\xfe\xa9\x04\x49\x56\x3e\x8f\x13\x68\x34\x8e\xf1\x3a\x81\x73\x7a\xe8\xce\x3a\x8d\xa0\xb4\xa5\x19\xa4\x81\xa1\x9f\x2a\x90\x3f\x9c\xce\xd2\x55\xca\x8e\x9f\x9b\xd4\x31\x91\x5b\xda\x93\xe0\x15\xcc\x61\x98\x90\x9d\x5e\x75\x9f\x02\x8c\x9e\x77\x90\x39\x25\xd0\xf8\xb4\xa3\x6b\x51\x1a\x27\x8e\x47\x3a\xdc\xda\x7d\x5a\x3d\x3d\x6e\x53\xf8\xde\x66\xb6\x9a\xdd\x46\x99\x45\x7d\x63\xc1\x77\xa1\x94\x98\xd9\x66\x13\xad\x3f\x47\x0e\x60\x5a\xf6\x10\xe6\x74\x2d\x29\xdc\x27\xf3\xbd\x8e\x5d\xd0\x95\x6d\xca\x5a\x29\x98\xa7\xac\xe3\x10\x87\x0f\x70\x67\xa5\x2c\x60\x9a\x88\x1e\xce\xf5\xb0\xf7\x84\x5d\xbf\xe5\x46\x9d\x32\x1b\x1a\xdb\xfc\x68\x9d\x81\xf5\x79\x08\xc3\x82\xa4\x86\xd3\x7c\xf4\x17\x54\x22\xd2\x54\x1d\x2b\x45\x9c\x1c\x51\x6e\xec\xe5\x10\x23\xe0\xc5\xbe\x44\x13\x5f\xee\x6d\x59\xeb\x7b\xce\x8b\x9e\xf9\xef\xa3\x5a\x18\xcc\x4c\xa3\x61\x52\xe7\x0f\x12\x40\x65\x7b\xfe\x61\x70\xa0\x01\x96\x84\x34\x05\xf6\xa8\x7a\x1e\xd1\xd1\xe3\xba\x4f\x38\x0f\x84\x74\xc3\x66\xad\xfa\x3a\xb1\xb8\xef\xdf\x3c\x26\x65\xeb\x5f\x96\xb6\xe0\xe1\x1d\xb0\xcb\x03\xd8\x5e\xe7\xb1\xb6\x06\x54\x14\x3a\x62\x38\x89\x12\x93\x29\xa1\xc6\xd5\x8e\xb4\x3d\x3b\xcb\x7e\xed\x62\x2b\xb5\x08\x0f\x88\x4e\x2d\x7a\xd5\x5a\x06\x7d\x6a\xe6\xd6\x9e\x22\x65\x8d\xca\x57\x39\x87\x2e\xa9\x9a\xb9\x4b\x33\x63\x9b\x9d\x5d\xe5\x33\x7f\x78\x1e\x9c\xb7\x06\x02\x30\x9d\x33\x59\xa6\x7d\xd0\x1a\xd5\x5b\xbb\xb9\x1e\xd6\x19\x5a\x38\xac\x61\xd1\x27\x13\x16\x34\xd8\x24\x23\x25\x59\xd2\x82\x2a\x8a\xa6\x9e\xff\xfa\xc5\x7d\x72\xf7\x63\x37\xd0\x0f\xdf\xda\xd2\x78\xea\x16\xcc\xe8\xb9\x33\xfe\xe1\xe8\xec\xd9\xb3\x67\xcd\x6e\xaa\xd9\x2d\xb9\x5a\x45\x3d\xe7\xde\x6e\x2c\x9d\xd8\x1b\xfa\x06\x41\x6a\xe9\x18\x1c\x11\x9f\xf6\x32\x8e\x61\xa3\xe7\x71\x35\xf8\x00\xff\xa9\x7c\x67\xda\x7f\x87\xb6\xc9\xea\xaa\x6e\x71\x19\x75\xec\x89\x86\x55\x8d\x89\x6b\xbb\x36\x67\x57\x84\x32\xf9\xdf\xb8\xaf\x71\xa4\xf6\x0a\xae\x89\x6b\x1e\x05\x4e\x87\xe4\x17\x0f\xf8\xe5\xb9\xf1\xfc\xf6\x76\x46\xca\x90\x5d\x13\xa3\x6d\x59\x6e\x2c\x2c\x15\x6f\x1d\x44\xfb\x9e\xc0\x71\x7d\x4c\x9d\xd7\xd5\x3c\xe9\x54\xbf\xe9\x0a\x2a\x51\x4c\x64\x41\x33\x1c\xda\x2d\xe2\xab\x31\x54\xe5\x82\xcf\xe0\x6f\x23\xed\x74\x06\xb4\x5c\xc9\x41\x9a\xba\x41\xeb\xba\xde\x76\x5f\x52\x66\x8e\x04\x0b\x5e\xe5\x53\x0d\xd9\x1c\xc9\xb4\xe7\xf9\x0f\x3f\x8f\x7e\x51\x20\x5b\xab\x4d\xb0\x7d\x3e\xc4\x94\x4a\x14\xbd\xee\xc9\xdc\xb7\xf2\x3f\x3e\xd5\xf5\x18\xeb\x87\x80\xe8\xb7\xc0\x05\x48\xae\xb3\x71\xcd\x0b\x49\xb7\xb4\x20\x02\x76\x46\xc9\xf9\xce\xec\xd9\x96\xe8\x51\x98\x0b\x52\xbe\x29\x54\x7b\x2b\xed\x22\x4f\xaa\x7d\x19\x4a\xe2\xd2\x92\x69\x00\x74\x97\x77\x24\xb1\xe5\x99\x1c\x56\x02\xf1\x77\xb7\x17\x0c\x6f\x3c\xf9\x2d\x06\x0b\xbb\xf5\x42\x6c\x9e\x2c\x9d\x3c\x75\xdb\x53\xfb\xfb\x7b\x3c\x0d\x4f\xbf\x56\x13\x8b\xa5\x14\x89\x6c\x31\x3e\x47\xd1\x59\xee\x60\x00\x33\x18\x18\xbf\x5d\x77\x15\x77\xca\x2c\xed\xc3\x58\xad\x82\xee\x22\xc6\xab\x91\x81\x77\xcf\x9b\x7a\xee\xef\x28\x78\x3f\x9e\xf8\xb2\x48\x7d\xa7\x43\xa3\xfa\xd0\xbc\x6a\xb0\x99\x9d\x33\xbd\xc3\x0e\xc6\xe7\xc7\xdc\x47\xb4\x60\x37\x81\xb4\xb7\x3a\xf4\xce\x70\xef\xda\x3f\xfb\xaa\xb4\xfa\x5f\xca\xb9\x44\x68\xbf\xc0\xdc\xdd\xfe\xea\x1e\x0e\x37\xd2\xf4\x7f\x75\xfb\x04\xba\xd2\x3d\x78\xab\xe9\x51\x59\x1f\x95\x37\x66\x81\x5d\x67\x7c\x30\xbb\x39\xd5\x2b\x3f\x86\x94\xee\x75\xa3\x14\x4d\xc9\xeb\x47\x49\x65\x3e\x39\x72\x34\x42\xd7\xe1\x72\xc5\x2b\xd6\x91\xf7\x9f\x11\x5b\x0e\x04\x97\xc4\x4d\xab\xc7\x70\xae\xad\x0e\x49\xc6\x1d\x3d\xd2\xfc\x77\x67\x62\x9b\x0b\xcf\x7b\xd2\x6d\xed\x7e\x1d\x9f\xb5\x13\xd6\x3f\xa5\xbf\xa6\x6a\x53\x23\xdf\xfd\xed\x6f\x58\xd9\x9b\x01\xe1\x75\x0a\x7b\xc8\x45\xd5\x4b\x73\xe3\x35\xba\x1c\x3b\x86\x52\xf0\x3b\x9a\x23\x7c\xf8\xf1\xc2\x15\x47\x0b\xca\x6e\x81\xaa\x06\xe3\x07\x22\x6e\x51\x95\x05\xc9\x10\xb4\xd1\x2f\x89\xc4\x08\xfb\x8f\x6a\x83\x62\x47\x25\x8e\x41\x3b\x5d\x73\xfb\x5a\x63\x7a\x75\x3c\x56\xc4\xeb\xeb\xe8\x42\xfb\x2a\x37\xcc\xda\x15\xd4\x7f\x7b\xbd\xd0\x5e\x57\xa8\x61\xbf\x71\xc1\xb7\x3a\x63\xda\xa2\x94\x64\x8d\x33\x18\x5c\x73\xfb\xad\x02\x77\xb5\xce\xc5\xe8\xc1\x28\x41\x5a\xd0\x1c\x69\xd1\xd7\x77\x13\x3b\x63\x31\x68\x33\x36\x43\xe3\xfb\xa0\xd1\xf8\x3a\x62\xa4\x3a\x79\xd1\x37\x31\x45\x20\xf5\xbe\xce\x6d\xc9\xda\x25\x21\x7b\xa5\x77\xa7\x05\xda\x6c\x94\xb4\x46\x74\x02\x8c\x6f\x36\x0d\xb8\x1d\xdc\x41\xef\x06\xa4\xa7\x05\xad\xa3\x66\x0a\x26\x78\x45\x3f\x4d\x65\x3c\xf8\x5a\x41\x0f\x85\xbe\x0d\x3f\x8e\xbb\xc1\x57\x0c\x9a\x2e\x31\xab\xfb\xe6\x7f\xad\xb9\xd2\xb8\x61\xde\xf7\x22\xbc\x6c\xda\xae\x51\x1d\x50\xbd\xf9\x1c\x5e\x25\x2a\x51\xe1\x36\xa3\xa5\x1b\xe9\x8e\x9a\xd7\xe7\x4e\xba\xa7\xed\x34\xc2\xa2\x4a\xd8\x42\x24\x13\x3d\x44\x6f\x52\x0d\xb8\xc9\xe6\xdb\x27\xb5\xad\x9e\xde\x1a\x55\x83\x7d\x39\x69\x69\xa7\x75\x48\xbd\x09\x5b\xa3\x0e\x75\xa6\xba\xae\x54\x3f\xb8\x25\xb4\x3f\xd6\x88\x96\x6c\xa1\xeb\x80\xa6\x9b\x09\x65\xf8\x3d\x8b\x64\xdd\x20\xf8\xc8\x45\xba\xed\xb4\x0c\x3e\xa3\x71\xa0\xf2\x70\x0c\x41\xd0\x2a\x60\x59\xf1\x22\x89\x2c\xd9\x7c\xdc\x60\xf9\x81\xb2\x5b\xcc\x83\x16\xb6\x47\x62\x49\xd6\x96\x2e\x5d\x39\x6b\x66\x34\xe3\xd1\x75\xcc\x84\xac\x5e\x9f\x07\x64\x9d\x50\xcf\x7a\xfd\x5d\x44\x7b\xfa\x94\xf9\xa1\xf3\x74\xf4\x04\x2d\x3b\xd0\x4b\x78\x82\xa2\x1d\xea\x88\xb6\xfd\xb7\x03\xfb\xc5\x9f\xf0\xa2\xe1\x20\x2d\x8b\xa8\x17\xda\x83\x99\x3e\x0b\xc9\x33\x4a\x0a\x28\x0b\xa2\x56\x5c\x6c\x61\x67\x4e\x7f\x74\x34\xd8\xdb\x4d\x3d\xb5\x7d\x5f\x66\x2b\xc0\x72\x28\x2b\x81\xc5\x1e\x56\xee\x14\xb6\x98\xf4\xcc\x88\x4d\xdf\x69\xbb\x53\x36\xd9\x92\x1a\xb6\xa3\x0e\x7a\x34\x4a\xfe\x56\x11\x81\xe6\x06\x75\x1b\xa7\xb9\x62\xdd\xdf\xe4\x6b\x43\xdd\x93\xdb\xb8\x93\x54\x4e\x37\x7c\x8b\x53\xba\x5d\x4f\xcd\x87\x8d\xdc\x47\x8e\x0a\xbe\xe6\x93\x92\xad\xfb\x9b\x1e\x7a\x16\x07\x26\x82\xe7\x94\x58\x55\x1d\xd8\xdb\xcd\xbd\x98\x7a\xb0\x2c\x09\x63\x28\xfe\x6f\xb3\xc8\xd2\x38\xf9\xb5\xfc\xb3\x98\xf4\x6b\x89\x8f\xe3\x92\x55\x7a\x39\x3b\xe0\x5d\x06\x94\x49\x45\xd6\x82\x6c\x07\x27\xe9\xef\x6e\xb7\x9b\xd4\x20\xe6\xeb\x57\x76\xb5\x07\x15\xda\x4c\xa4\x53\x0c\x9e\x73\x76\xda\x3c\x7e\xf4\xc4\xae\x61\xfa\x9d\x9d\xe6\xe0\x0c\x6a\x47\x95\x42\x71\xda\x04\x6e\x70\x77\x09\x8f\x76\x94\x0f\xed\x24\xc5\x1f\xc7\x35\x25\xc6\xf6\x19\x8b\x2b\x04\x9a\xbb\x56\xa3\xf8\x7e\xd9\x0d\x2a\xe0\x95\x30\xae\x2f\x87\xb2\xfe\xb4\x15\xf8\x53\x97\x64\x9c\x85\x39\x4c\x5d\x60\x76\xab\x69\xa2\xc5\xbb\x6e\x43\x42\x6f\x41\x5f\xe3\xb1\x61\xf1\x64\x34\xed\x8f\x5c\x85\xa4\xe4\x35\x74\x53\x64\x8d\x01\x83\x4f\x5b\x99\xb9\xed\xcf\x0e\x60\xb4\xf5\xad\x99\x69\xcf\xfa\xcd\x47\xb0\xa4\xc9\x8a\xe3\x09\xe2\x3c\xfa\xd5\x59\xfc\xd6\x7f\x46\x65\x0e\xf7\xf1\x0e\xfd\x9d\xdf\xd6\xd8\x72\x6c\x5d\x9d\xd5\x61\x41\x92\x3b\x74\xcd\x4a\x6e\x8d\x35\xa4\x39\x95\x31\x10\xcd\x7e\xc7\x60\x08\x12\x49\x7b\xdd\xd2\x1e\xd8\x4c\x1c\x82\x89\xc6\x39\x7c\x7d\x6e\x60\x83\xc6\x9b\x36\x5f\x83\x34\xdf\xec\x4b\xfa\x3f\xf8\xf6\x70\xf6\x70\xf6\x3f\x01\x00\x00\xff\xff\xb8\xe1\xf5\xd9\x35\x50\x00\x00" +var _contractsDigitalartCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x7c\x5f\x73\xdb\xb6\xb2\xf8\x73\xfc\x29\xd6\x7a\x48\xa4\xf9\xd9\x52\x3a\x73\xe6\x77\x67\x34\x51\xd3\x34\x8e\xef\xf1\xbd\x8d\x9b\x89\x9d\xf6\xa1\x93\x39\x07\x22\x57\x12\x6a\x0a\x60\x01\xd0\x8a\xea\xe3\xef\x7e\x07\xff\x48\x80\x04\x25\x3a\xed\xed\xdc\x93\x87\xd6\x22\xb1\x8b\xc5\xee\x62\xff\x61\x41\xba\x2d\xb9\x50\x70\xcd\xd9\x65\xc5\xd6\x74\x59\xe0\x2d\xbf\x43\x06\x2b\xc1\xb7\x30\x9a\xce\xa4\x22\x2c\x27\x22\x9f\xb5\x47\x4c\xb3\x3c\x1b\x9d\x38\xf0\x9f\x28\xee\x3e\xa2\xe4\xc5\x3d\x0a\x07\xda\x40\x86\x2f\x23\xa8\xf7\xa8\x48\x4e\x14\xd1\x03\x64\x77\xc6\xe8\x75\x04\xf8\xee\x1e\xc5\x5a\x60\x40\x66\xfd\xc4\x8e\x3b\x99\xcd\xe0\x82\xae\xa9\x22\xc5\x1b\xa1\x20\xc7\x15\x65\x28\xe1\xfa\xf2\x56\x82\xda\x10\x05\x02\x4b\x81\x12\x99\x82\xdc\x0e\x03\x22\x14\x50\x06\x37\xf8\x5b\x85\xc5\x54\x23\xb8\x41\x84\x8d\x52\xa5\x9c\xcf\x66\xd2\x3e\x96\x25\xc9\x10\x56\x5c\xc0\x96\x0b\x84\x1c\x15\xa1\x85\xd4\xa3\x5b\x33\x2a\xcd\x22\x09\xb2\x2a\x5b\x04\x9b\x17\xe0\xd7\xe8\x21\x6f\x78\x25\x32\x9c\xd7\xd3\xad\xa9\xda\x54\xcb\x69\xc6\xb7\xb3\x92\x96\x82\x28\x74\x14\x9c\xaf\x0a\xbe\x3b\xcf\x38\x53\x82\x64\x4a\x6a\x70\x92\x65\x28\xe5\x98\x14\xc5\xe4\xc4\xbf\x08\x48\x99\x77\x65\xfb\x70\x72\x02\x00\x30\x9b\x69\xba\x98\x92\xee\x97\xf9\x5f\x88\x4d\xff\x46\x3d\x02\xde\x3a\xbc\x57\x8c\x2a\x4a\x0a\xfa\x3b\xe6\xe3\xc9\x81\xf1\x3f\x53\xb5\xc9\x05\xd9\x8d\x69\x3e\x87\x4f\x57\x4c\xfd\xff\xbf\x9d\x19\x59\xcd\xe1\x4d\x9e\x0b\x94\xf2\xf5\x21\xf0\x0b\x2c\xb9\xa4\x2a\x82\x56\x7c\x18\xec\x7b\xca\x14\xe6\x11\x28\x91\x12\xd5\x1c\x6e\x94\xa0\x6c\x7d\x06\x98\x53\x45\x39\x6b\xde\x6f\x79\x7e\x75\xe1\x7f\x4e\x6a\xe6\x5c\x93\x2d\xe6\xf0\x81\xa8\xcd\x41\x0e\x15\xa8\xf9\x53\x14\x98\x69\xac\x37\x8a\x0b\xb2\x46\x0d\xa5\x67\xac\x7f\x0c\x00\xfd\x50\x2d\x0b\x9a\x59\xc8\xe6\xef\x5e\xc0\x37\xf9\x96\x3e\x7d\x3a\x03\xf5\x41\xd0\x7b\xa2\x1c\x54\xf0\xa3\x5e\xfa\xed\x06\x41\x71\xbd\x2d\x58\xb5\x5d\xa2\x00\xbe\x0a\xb5\xbb\xd9\x47\x1b\x72\x8f\xb0\xd4\x8a\xbd\x35\x7c\x3f\xc4\xa8\x7b\x22\x2c\xd2\x9b\xaa\x2c\x8b\xbd\x67\x78\x3d\xe9\x4f\x44\x50\xb2\x2c\x10\x24\xfd\x1d\x21\xa7\x86\x29\x44\xec\xf5\xe4\xef\x89\x54\x28\x40\xa0\x34\x3b\x45\x86\x13\x48\x2c\x56\xcd\x0c\x5b\x33\x52\xce\xe1\xc1\xca\x7b\xee\x60\x1f\xeb\x79\x1c\x2e\x64\x7a\x32\x69\x08\x3f\xe7\xec\x3c\xc7\x2d\x61\x39\xac\x2a\x66\x27\x2e\xa8\xda\x83\x7e\xe2\xad\x07\x71\xb8\x21\xe3\xa5\x21\x8a\xd8\xdd\xec\xf1\x1a\x86\x50\x09\x95\xc4\x1c\x14\x37\x88\x81\x04\x1c\x74\x8a\x27\x61\x5c\xd0\x2d\x55\x98\xc3\x72\x0f\x5b\x67\xe5\xa6\x5b\xf2\xe5\x9d\x1b\x30\x99\x7a\x9c\x3f\xb2\x0c\x81\x14\x45\x03\x4b\x04\x3a\x5e\x9f\x81\xda\xa0\xa7\x89\x4a\x78\x91\x15\x5c\x62\xfe\x02\x96\x95\x36\x70\x5b\x42\x99\x04\xce\xce\xb3\x0d\xa1\x0d\x91\x1c\x4a\x61\x77\x8a\xc0\x73\x8d\x88\xb2\xb5\x15\xe8\x8e\xaa\x8d\x41\x29\xc9\x16\xed\xa6\x81\xab\x8b\xe9\x21\x91\x4a\x25\xaa\x4c\x79\x8e\x3e\x98\x67\xa9\x71\xb5\x70\xdc\x62\xe7\xb5\xed\x7f\x7d\x14\x06\xbd\xed\xfc\x20\xf8\x8a\x16\x38\x6f\xac\xe9\xd4\x3d\x3a\x8e\x84\xe1\x17\xf5\x2e\xde\xf7\x47\x61\x2c\x3b\xe7\xf0\x3d\xe7\xc5\x49\xfd\x86\x32\xaa\xc6\xdd\x75\x9c\x0d\xa1\x73\x02\x01\x8f\x0c\xff\xb0\x58\x4d\x3d\x32\x58\xd4\xfc\xe9\x0e\x6a\x63\x87\x45\x67\xc2\x2e\x50\xb0\x6a\x58\xc0\x37\xdd\x01\x76\x89\xb0\x80\x15\x29\x64\x83\xe0\xf1\xe4\x20\x73\x56\x15\x03\x86\x3b\x87\xf9\xea\x62\x3c\x01\xcf\xd4\xd6\xfa\xb4\xc5\xb9\x27\x05\x2c\x3a\xf4\x1c\x23\xb6\xf3\xe8\xff\xb9\x19\xc6\xdf\x4c\x22\x58\x81\xaa\x12\x4c\xcf\xf2\x14\xf2\xc9\x3d\xa1\x85\xde\xff\x7e\xcb\xf5\xaf\x81\xae\xe0\x34\x64\xd6\xf3\xe7\xb1\xd8\x4e\x83\x9d\x0b\xdf\x26\x28\x8f\xd1\x05\x34\xf7\xa3\x39\x1f\xbe\xfe\x47\xc0\x42\x62\xff\x24\x2f\xe3\xd1\x4f\x61\xd2\x1a\x95\x57\x6f\xc3\x9e\x7a\xcf\xb6\x66\x4b\x2d\xe7\x89\xf3\xbc\x6b\xe9\xb2\x99\xaf\xbb\xcf\x0f\x4c\xdc\xbb\x1b\x02\x02\x66\x33\xf8\x19\xed\xbe\xf6\x7e\x02\xc8\x4a\x9b\xae\x1e\x13\x0b\x94\x49\x85\x24\xd7\xd6\x3b\xc7\x02\x8d\xb1\xdc\x7a\x5f\x94\x71\x91\xcb\x10\xf9\xed\x86\x4a\x28\x05\xd7\xcb\x04\x64\xb2\x12\x28\x81\xf1\x25\xcf\xf7\x90\x11\x66\x76\xac\x75\x0b\x2e\x3e\x3c\x64\x72\x0f\x71\xcc\x2c\x61\x3c\x39\x62\x4d\x18\x2d\x06\x19\x92\xe4\xb8\x78\x3b\xbe\x3c\x60\x3b\x94\xa8\x42\x6e\x07\x3c\xd7\xce\xd6\x93\xe3\xbd\xa8\x0b\x23\xe0\x8d\x50\x2f\x64\xe3\xfd\x86\x78\x19\x8f\xea\x21\xe4\xb9\x8e\xd2\x0e\xf2\x4b\xdb\x20\x46\xb6\xe8\x03\xc0\x48\x1d\xde\x08\x45\xa5\x7d\x7f\x14\x09\x31\x63\x93\x68\x2e\x50\x66\x82\x96\x91\x61\xeb\x43\x93\x37\x63\x93\xb8\xde\x63\x4e\x09\xa8\x7d\x89\x73\xb8\xda\x92\x35\x9e\xc1\x9b\x2a\xa7\xfc\x0c\x7e\xa2\x39\xf2\xa3\xf8\x2d\x64\x6a\xad\xf0\xe9\xe3\x95\xd6\x64\xad\x70\x5c\xd0\x35\x65\xa4\x88\xf2\x1f\x9d\x3e\x20\x53\x87\xf5\x4f\xcf\xe1\x06\x7e\xfa\x78\x75\x7c\xa6\x70\x02\x1d\x7a\x50\xdc\x79\x78\x18\xd3\x29\x4e\x75\x1c\xb5\xa9\xb6\x4b\x46\x68\x31\x19\x3c\xf7\x07\x8b\xaa\x8f\x84\xf7\x57\xef\xdf\x19\x56\xc0\x18\xa7\xeb\x29\xbc\xa0\x9a\x95\xb3\x5f\x4b\x5c\xbf\x98\x1c\x9d\x63\x4b\xb7\xd8\xcb\x47\xbf\x2b\x9a\xc0\x4e\x2f\x73\x4d\xef\x91\xe9\x40\x6a\xea\x07\x58\x43\x52\x31\xfa\x5b\x65\x73\xc6\x7a\xa3\x5b\x0b\x72\x16\x22\xa5\x39\x32\x45\x57\xd4\x06\x85\x7a\xe4\x30\x6b\x60\x22\xa4\x56\x60\x13\x9b\x24\x4c\x45\xa0\x26\x56\xdd\x92\x7d\x10\xc0\x97\x82\xe7\x55\x86\x79\x4d\xaa\x5d\x91\xa5\x75\xda\x31\x73\x0e\x69\x46\xd8\x0b\x05\x4b\x04\xfc\x92\x21\xe6\x0d\xf9\x3e\x15\x3d\x33\xe1\xa8\xda\xa0\x40\x1d\xa4\x32\x0e\x7c\x59\xd0\x35\x89\xf6\x8a\x0d\x4c\x6d\xc0\x5c\x14\x56\x6d\x30\x2b\x88\xc0\xbc\xa6\x39\x22\xe1\x6a\x05\x81\xbb\x5c\x2c\xe0\x9b\xb3\x58\x0a\x7a\x2e\xce\xf0\x9c\xaf\xce\xc9\xf9\x1d\x65\xf9\x71\xc5\x6a\x10\xf6\x72\xf2\xe2\xea\xc2\xcb\xdb\xf2\xe5\x85\xb4\x72\x9a\x5a\xa6\x5c\x5d\xe8\x79\xbd\x9c\x43\x68\xcd\xd4\xc8\xc9\x98\xfc\xa1\xd4\x36\x25\xab\x0a\x22\x42\xbb\x68\xb4\xe8\xb8\x39\x0a\xb3\xda\xfe\xed\xb7\xaa\x8a\x68\x93\x07\x46\x17\xfe\xeb\xe6\xc7\xeb\x10\x90\x48\xa0\x0a\xf0\x0b\x95\xda\xf7\x11\x23\x36\x50\x74\x8b\x61\xa6\xb1\x23\x12\x24\x92\x02\x87\xb0\xd4\xcd\xd4\xb7\x4b\x35\x4f\xdf\xea\xf4\xe4\x07\x9e\xdd\xd5\x3e\x15\x1a\x2e\x1b\xea\xff\x3a\x7a\xed\xfc\x83\x48\xb5\xdb\x73\xa3\x83\x83\x43\xe4\xc6\x5a\xab\x4c\x18\xb0\xc4\x3a\x47\x14\xa8\x04\xc5\x7b\x4b\x70\x56\x09\xa1\xad\x62\x84\x00\xc6\x74\x05\xd9\x86\xb0\x35\xe6\x93\xe9\xc9\xb3\x67\x21\xed\xcf\x9e\xd5\x9a\xf0\x77\x24\x09\xc2\x4d\xb6\x12\xf9\xee\xd0\x15\x9e\x45\x6f\x62\xff\x16\xbf\x4b\x38\xad\x78\x40\x68\x2d\xe3\x37\x5d\x5f\x91\x7c\xdf\xb5\xe7\xf1\xb0\xb6\x49\x8e\xdf\xb6\x6b\x3a\x31\x68\x67\x63\xb7\x16\x1e\xd5\x87\x62\xd0\xae\x02\x9f\xb5\x42\xd0\x50\x63\x12\x78\x23\xb9\xe8\xa7\xe9\x24\x50\x8b\x45\x87\x62\xa1\xd9\xa8\x5f\x5a\xc9\xc0\xc2\x89\xa8\x3b\x20\x10\x0f\x2c\x42\x61\x75\x87\x1a\x9f\xb8\x30\xf2\x4a\xc4\x74\xb5\xac\x60\x11\x08\xae\x77\x60\x23\xb4\x66\x7c\xf3\x2c\x11\x9c\x3a\x21\xea\x54\xd7\xfd\x99\x88\x50\xeb\xa8\x13\xfb\x72\xc5\xd0\xf6\x07\xe2\x4d\x70\xce\xec\xd2\x85\x15\x45\x7f\xb0\x6c\x17\x10\xfc\xea\x0e\x75\xa6\x69\xe1\x24\xde\x33\x95\x96\xb6\x9f\x4e\xff\xfd\x94\x34\x48\xa2\x0f\xb8\xc7\x2d\x75\x4e\x06\xfa\xfd\x6c\x6a\xc7\xe0\xd7\x97\xb7\xfe\xcf\xa0\x88\x47\x24\x10\x16\xbc\x4b\x86\xde\xbe\xe0\xa6\xc7\x75\x2b\xc9\xd3\xeb\xcb\xdb\xb3\xa8\xf8\x3f\xf5\x7f\x9c\x05\xd9\x9b\xaf\x3a\x7b\xfa\xea\x02\xe3\x1d\xb2\x17\xda\x69\x1e\xb5\xcb\x4d\x35\xf7\x30\x1b\x43\x9f\xd3\xe4\xab\xc7\x61\x06\xd4\x6e\x22\x67\x40\xeb\x3a\xb8\x08\x1e\xc7\x56\x57\xff\xa7\x29\x2b\x9f\x25\xe8\x1a\x58\x33\x4a\xc8\x9e\x6a\x25\xb3\x13\x1c\xcc\x00\xff\x9c\x7a\xd2\x11\xdd\x35\x11\xbd\xcb\xe3\xcd\x59\xcd\x78\x32\x87\x5f\x6e\xf7\x25\x7e\x4e\xe7\xeb\xbf\x74\x6a\x15\x7a\xf0\xab\xf8\xbc\xe7\x82\xca\xb2\x20\xfb\x6f\xc7\x93\xb3\x21\xc3\xdd\xce\x19\x3a\xfc\x23\xdf\x93\x42\x51\x94\x83\xf1\x7f\x51\x28\x18\x29\x3e\x7d\xfc\x61\x28\xc8\xf5\xe5\x6d\x53\xdc\xbf\x20\x8a\x7c\x1d\xe0\x31\x3e\x34\x5b\x7a\xea\xd1\x7c\x3b\x8e\x6b\x44\x9f\x9f\x62\x86\x84\xdd\xc1\x9a\x94\xf1\x3f\x9c\x5f\xd7\x13\x4d\xe6\xf0\x86\xed\x6f\x4c\x2e\xde\x2e\xc4\xc8\x1d\x55\xd9\xc6\xe6\x5b\xdd\x4a\x54\x46\x24\x1e\x16\xf1\xbc\x03\x03\x8d\xba\x24\x81\xc6\x49\x08\xa8\x03\x9c\x68\x27\x18\xef\xda\x65\x9f\xff\x17\x05\x37\x31\x60\xf0\xaa\x1f\xbe\xce\x5e\xe7\x2d\x5a\xff\x7e\x7b\xfb\xe1\x92\x16\xd8\x4f\xac\xfe\x57\x89\x62\x1e\x18\xe6\xe9\x1a\xd5\xcf\xb8\xbc\x14\x14\x59\x5e\xec\x3f\x7d\xfc\x61\x6c\x46\xc4\x84\x75\x9c\xed\xa4\x77\x8e\xf4\x9b\xee\xd3\x3e\x31\x35\x5b\xeb\x09\x62\xf2\x9e\xcc\x4a\x83\xd1\xe2\xcc\x65\x8c\xed\x85\x38\xe7\x75\xa6\xdd\x78\xfb\x5d\xe3\xd9\x87\x53\x1b\xee\xec\x27\xd0\x5b\x83\xf5\xcb\x2a\x69\x37\xa7\xcb\x8a\x16\x79\x03\x9d\xe3\x8a\x54\x85\xfa\x88\x19\xd2\x7b\x14\xf6\x88\x2d\x9e\x6a\x8d\xca\x8e\xdf\xd7\xa3\xea\xd3\xbe\xf1\xe4\x0f\x4b\x2b\x32\x54\x4f\x91\x58\x03\x38\x1e\xf9\x83\x68\x52\x96\xd3\xf0\xec\x7b\x66\x0b\x97\x33\x97\x50\x9e\x13\xa1\x66\x23\xad\x8c\x19\x51\x63\xe7\x9a\xa6\x8a\xdb\x70\x77\x3c\x49\xac\xa6\x8f\xee\x94\xb5\x3c\x48\x7d\xb0\x63\x9c\xc9\xf2\xa7\xd4\xc6\x74\xf9\xc8\xe5\xb6\x36\x60\xaf\xbe\xbb\xbe\xbc\xd5\x76\xd4\x78\x2c\xfb\x5c\x5b\xac\xaf\xa5\x71\x98\xf5\xfa\x4b\xc8\x4c\xfb\x80\x83\x74\xa5\xab\xf5\x10\xfb\x88\x60\x7c\x58\x24\x1e\x56\xd3\x7f\xa3\x83\xe0\xab\x0b\x1d\x0d\x58\x7d\x18\x70\x6c\x30\x8d\x03\xf5\xaf\x3d\x3c\x48\xc4\x51\x7f\xf0\xe8\xa0\xb7\x12\x2f\x90\x28\x7c\xb7\x2d\xd5\xbe\x51\x0d\x4d\xc0\x77\x0f\x9d\x68\xb9\x19\xf0\x98\x24\xe6\xd5\xb9\xc5\x06\x21\xa6\xde\xa8\xde\x14\x9c\x5c\xb5\x89\x32\x85\x62\x45\x32\xb4\x85\xbd\x4a\xa2\x90\xa6\xd4\x90\x11\x69\xaa\x22\x54\x84\xa1\x7f\x83\x1f\x88\xef\x6d\x00\xc5\x81\x14\x05\xdf\x01\x57\x1b\x0d\xae\x38\xe4\xb6\x0f\x23\x04\xa5\x4c\x71\x87\xb0\xc1\x32\x85\x2b\x05\xa4\x90\x0e\x83\x34\xd5\x2e\x81\x24\xf7\x39\xaf\x39\x1d\xaf\xfb\x65\x5a\xdd\x04\x94\x99\x97\x21\x3a\x0d\xf0\xf1\xdd\xfb\x1f\x7f\x7a\x77\x38\x2b\x69\xd6\xdd\x6e\xa3\x88\xd2\x8d\x94\xf0\x66\x33\x2d\x3e\xb7\xc2\xb1\x31\x6b\x49\xa1\x5d\x5f\xde\x3e\x4e\x86\x07\xc0\x57\x17\x36\xfc\xb5\x51\xff\xe7\x81\x80\x4b\x2e\x04\xdf\x5d\x5f\xde\x8e\xff\x11\xe4\x3a\x93\x39\x3c\x4f\x13\xf4\xfa\xb8\x62\x5a\x94\x0d\x9b\xc7\x31\xde\xc0\x62\x5c\x5f\xde\xb6\xe3\x39\x5b\x61\xd5\x52\x11\x28\xab\x42\x01\x95\xec\x85\xb2\x6e\xdc\xe8\x5b\xee\x2b\x5e\x56\x75\x31\x07\x81\x2b\x14\xc8\x32\x6c\x23\x92\x1b\x5e\x15\x39\x2c\x31\x3c\xe8\xb2\x15\x6e\xb1\xae\xb6\x68\x4e\xc3\x5c\xf5\xcc\xb6\x5e\x44\x18\x4a\x2e\x55\x22\xa6\x1c\x3b\xc2\x16\xe6\xf8\x6a\x02\xff\xfa\x97\x7f\xf4\xda\x64\x47\x0b\xa0\x79\x8f\x01\x1c\xbd\x25\x8c\x71\xe5\x38\x14\x6a\x62\xbd\x86\xb9\x49\x50\x9b\xba\x5e\x77\x95\x7a\xe7\x51\x96\x71\x21\x30\x53\xa3\x96\xfd\xec\xdb\xb2\x8d\x92\xfa\x27\x6f\x20\x6b\xf6\x62\xa2\xc9\x86\xef\x98\x2d\xa9\x13\xa6\x25\xcd\x2b\xa6\x06\xa5\xeb\xcd\x4c\x31\x0f\xda\xdb\x24\x0e\x6a\x1b\xa3\x79\x78\xdc\x01\xcb\x16\x0f\x4c\x96\x06\x02\xeb\xf3\x10\x66\xd5\xb3\x56\xcf\xcf\xf5\xe5\x2d\x64\x9c\xad\xb8\xd8\x6a\xe7\x61\x23\x8f\x68\xbc\xab\xf3\x93\x66\xdd\x26\x03\x31\xa7\xaa\x84\xc1\x3f\xad\xba\xff\x53\x0b\x72\x45\xb1\xc8\x0f\x6f\x46\x22\x2c\xbb\x35\xe3\xb5\x29\xb0\xd0\x73\x48\x6f\xc1\xc7\x98\xf4\x9d\xeb\x78\x03\x81\x5b\x7e\x8f\xbe\xb6\x62\x1b\x14\xed\x79\x48\x63\x73\x59\x0e\x76\x10\xad\x75\x3f\x23\x45\x11\x14\x13\x1c\x81\x9d\x99\x7d\x63\xdd\xc4\xec\x71\x3f\xe9\xd8\xff\x11\xb4\xb1\xf5\x1a\xb3\x44\x8b\x86\x6d\x4a\x7c\xe5\xba\x0e\x6a\x26\x4c\xed\x5a\xc6\x77\xb8\x9f\x43\x33\x45\x37\x10\x79\xfd\x1a\x4a\xc2\x68\x36\x1e\x05\x66\x25\xb0\xe7\x1e\x76\x0e\x6f\x8d\x2d\xd0\xbb\xaf\x66\x98\x63\x94\x11\xda\xd5\x05\x8c\x7a\xe3\x6f\x1f\x66\x36\x94\x84\x91\xe6\x51\xb0\xd1\x14\xde\x6e\x30\xbb\xb3\x66\xa8\x5a\x6e\xa9\x52\x68\x8a\xf7\x8a\xc3\x96\xdc\xe9\x87\x02\xb5\x48\xec\xd1\x91\x75\xa5\x4a\x7b\xd9\x70\x8f\xee\x98\x9c\x8e\x26\x93\x38\x46\xc2\x2d\x6d\x35\x3d\x1a\x96\x4e\x69\xee\xdb\x1e\x6b\xce\x8a\xd7\x53\x62\xdb\x18\x27\xc9\x38\xeb\xd5\x79\xd3\x54\x06\xed\xf6\x85\x59\xed\x92\x15\xb9\x33\x2d\x69\x9a\x75\x5a\x9f\x48\x9e\x47\xea\x54\x53\x2c\x83\x5d\x15\x61\xaa\xa1\x94\x35\x75\x0e\x92\xe6\x40\x84\x20\xfb\xa3\x0e\x66\xa0\xeb\x3c\xa4\x6e\xf6\x0f\x22\x4f\xe1\xbb\xd8\x1f\x9d\x74\x60\x4c\xc5\xcb\x33\xf5\xa4\xed\x63\x48\x9e\x1b\xe2\x19\xee\x1c\x52\xb7\x9a\xc0\xa2\xec\x36\x34\xdb\xd4\xdb\xd3\x9c\x81\x17\xb9\x16\x74\x67\x2e\x5e\xe4\xb7\xe9\x1d\xf1\x0b\xcd\x3f\xd7\x84\x27\x54\x20\x6c\x5c\xd5\xb2\x57\x7c\x88\xe4\x73\x94\x4a\xf0\x7d\x3d\x6f\x9f\xec\x6d\x78\xe1\x14\xc5\x58\x18\x23\x29\xef\xa4\xf4\x3b\xa3\xb3\x44\xab\x31\x6b\xe9\xc1\xd7\x46\x30\x07\xe2\xe6\xc6\x50\xdc\xe1\x5e\xa6\xa9\x6e\x42\x9b\xf0\xe1\x7f\xa2\xb2\x66\xdb\x7b\x53\x1d\x7c\xba\x73\xdb\x5e\xc2\x75\x2c\xc1\xfd\xae\xf4\x16\xd3\x44\xb9\x3a\xd4\x04\xaa\x82\x93\x4d\xad\xdc\x7a\x80\x7f\xba\xe1\x51\xa7\xce\xff\x52\x54\x96\xe6\xd5\xf3\xae\x0e\x1d\xe4\x55\xb3\x15\xbe\x96\x65\xa6\xb6\x1f\xc4\x12\x51\xa7\x01\x7e\xd1\x3a\xca\xd6\xe6\x38\x9a\xaf\x0c\x87\x8c\x77\x94\x30\xa6\x2c\x2b\xaa\xdc\x78\xdb\x8d\x75\xa6\x57\x17\x93\xee\xd9\x3f\x95\x20\xc9\xca\xc7\x71\x02\x8d\xc6\x31\x5e\x07\x70\x4e\x0f\xdd\x59\xa7\x11\x94\xde\x69\x06\x69\xb0\xd1\x87\x0a\xe4\x0f\x87\xb3\x74\x95\xda\xc7\xa7\x26\x74\x4c\xc4\x96\xf6\x24\x78\x05\x0b\x18\x27\x64\xa7\x57\xdd\xa7\x00\x93\xd3\x0e\x32\xa7\x04\x1a\x9f\x36\x74\x2d\x4a\xe3\xc0\xf1\x48\x2b\x5f\xbb\x4f\x2b\xd9\xcc\xa7\x0d\xc5\xf7\x36\xb2\xd5\xec\x36\xca\x2c\xea\xab\x19\xbe\x0b\xa5\xc4\xcc\x36\x9b\x68\xfd\x39\x72\x00\xd3\xda\x0f\x61\x4c\xd7\x92\xc2\x43\x32\xde\xeb\xec\x0b\xba\xb2\x4d\x59\x2b\x05\x8b\xd4\xee\x38\xc4\xe1\x03\xdc\x59\x29\x0b\x98\x26\xa2\x87\x73\x3d\xec\x1d\x90\xf9\x5b\x6e\xd4\x21\xb3\xa1\xb1\xcd\x8f\xd6\x19\x58\x9f\x85\x30\x2c\x48\x6a\x38\xcd\x27\x7f\x41\x35\x22\x4d\xd5\xb1\x72\xc4\x60\x8f\x72\x63\x6f\xc1\x18\x01\xdf\xee\x4b\x34\xfe\xe5\xc1\x56\xb6\xbe\xe7\xbc\xe8\x99\xff\x21\x2a\x87\xc1\xdc\x34\x1a\x0e\x6e\x60\xad\x09\xa0\xb2\x3d\xff\x38\x38\xd4\x00\x4b\x42\x9a\x02\x7b\x54\xbd\x88\xe8\xe8\x31\xdd\x03\x4e\x04\x21\xdd\xb0\x59\xab\xbe\x0e\x2c\x1e\xfa\x93\xc7\xa4\x6c\xfd\xcb\xd2\x16\x3d\xbc\x01\x76\x71\x00\xdb\xeb\x38\xd6\xd6\x81\x8a\x42\x7b\x0c\x27\x51\x62\x22\x25\xd4\xb8\xda\x9e\xb6\x27\xb3\xec\xd7\x2e\xb6\x52\xb7\xe1\x21\xd1\xd0\xc2\x57\xad\x65\xd0\xa7\x66\x6e\xed\x29\x52\xc2\xd6\x64\x17\x54\xcd\xdd\xed\xa0\x33\x1b\x9d\x5d\xe5\x73\x7f\x78\x3e\x87\xe7\x89\xde\x51\xd3\x39\x93\x65\xda\x06\xad\x51\xbd\xb1\xc9\xf5\xb8\x8e\xd0\xc2\x61\x0d\x8b\x3e\x1a\xb7\xa0\xc1\xa6\x19\x29\xc9\x92\x16\x54\x51\x34\x35\xfd\x57\xcf\x1f\x92\xd9\x8f\x4d\xa0\x1f\xbf\xb5\xe5\xf1\xd4\x75\x9f\xc9\xa9\xdb\xfc\xe3\xc9\xc9\xb3\x67\xcf\x9a\x6c\xaa\xc9\x96\x5c\xad\xa2\x9e\x73\x6f\x13\x4b\x27\xf6\x86\xbe\x51\x10\x5a\x3a\x06\x47\xc4\xa7\xad\x8c\x63\xd8\xe4\x34\x2e\x08\x1f\xe0\x3f\x95\x6f\x4d\xfb\xef\xd8\x36\x59\x5d\xd5\x2d\x2e\x93\xce\x7e\xa2\x61\x55\x63\xea\xda\xae\xcd\xf9\x15\xa1\x4c\xfe\x37\xee\x6b\x1c\xa9\x5c\xc1\x35\x71\x2d\x22\xc7\xe9\x90\xfc\xe2\x01\x3f\x9f\x1a\xcb\x6f\xaf\xa1\xa4\x36\xb2\x6b\x62\xb4\x2d\xcb\xcd\x0e\x4b\xf9\x5b\x07\xd1\xbe\x10\x71\x5c\x1f\x53\x67\x76\x35\x4f\x3a\x05\x70\xba\x82\x4a\x14\x53\x59\xd0\x0c\xc7\x36\x45\x7c\x79\x06\x55\x79\xcb\xe7\xf0\xb7\x89\x36\x3a\x23\x5a\xae\xe4\x28\x4d\xdd\xa8\x75\x2f\x71\xbb\x2f\x29\x33\xc7\x82\x05\xaf\xf2\x99\x86\x6c\x8e\x65\xda\xf3\xfc\x87\x9f\x47\xbf\x28\x90\xad\xd5\x26\x48\x9f\x0f\x31\xa5\x12\x45\xaf\x79\x32\x17\xcb\xfc\x8f\x8f\x75\x3d\xc6\xda\x21\x20\xfa\x2d\x70\x01\x92\xeb\x68\x5c\xf3\x42\xd2\x2d\x2d\x88\x80\x9d\x51\x72\xbe\x33\x39\xdb\x12\x3d\x0a\x73\x13\xcc\x37\x85\x6a\x6b\xa5\x4d\xe4\xa0\xda\x97\xa1\x24\x2e\x2d\x99\x06\x40\x77\x4b\x49\x12\x5b\x9e\xc9\x61\x25\x10\x7f\x77\xb9\x60\x78\xb5\xcb\xa7\x18\x2c\xec\xd6\x0b\xb1\x79\xb2\x74\xf0\xd4\x6d\x4f\xed\xef\xef\xf1\x34\x7c\xfd\xfd\xa1\x58\x2c\xa5\x48\x44\x8b\xf1\x51\x8a\x8e\x72\x47\x23\x98\xc3\xc8\xd8\xed\xba\xab\xb8\x53\x66\x69\x1f\xc8\x6a\x15\x74\x37\x4e\x5e\x4e\x0c\xbc\x7b\xde\xd4\x73\x7f\x47\xc1\xfb\xf1\xc4\xb7\x62\xea\xcb\x2b\x1a\xd5\xfb\xe6\x55\x83\xcd\x64\xce\xf4\x1e\x3b\x18\x4f\x8f\x99\x8f\x68\xc1\x6e\x02\x69\x6f\x75\xe8\xcc\x70\xef\xda\x3f\xfb\xaa\xb4\xfa\x5f\xca\xb8\x44\x68\x3f\xc3\xc2\x5d\x73\xeb\x1e\x10\x37\xd2\xf4\x7f\x75\x7b\x05\xba\xd2\x3d\x78\x7d\xeb\x49\x51\x1f\x95\x37\x66\x81\x5d\x63\x7c\x30\xba\x19\x6a\x95\x9f\x42\x4a\xf7\x5e\x55\x8a\xa6\xe4\x3d\xab\xa4\x32\x0f\xf6\x1c\x8d\xd0\xb5\xbb\x5c\xf1\x8a\x75\xe4\xfd\x67\xf8\x96\x03\xce\x25\x71\xa5\xec\x29\x9c\x6b\xab\x43\x92\x71\xc7\x4e\x35\xff\xdd\x79\x98\x3c\xcc\x3d\xed\x09\xb9\xb5\x09\x76\xbc\xd6\x86\x58\xff\x94\xfe\x4e\xae\x0d\x8f\x7c\x07\xb8\xbf\x65\x65\x6f\x07\x84\x57\x2a\xec\x41\x17\x55\x2f\xcc\xf5\xde\xe8\x26\xf0\x19\x94\x82\xdf\xd3\x1c\xe1\xfd\x8f\x17\xae\x40\x5a\x50\x76\x07\x54\x35\x18\xdf\x13\x71\x87\xaa\x2c\x48\x86\xa0\x37\xfe\x92\x48\x8c\xb0\xff\xa8\x36\x28\x76\x54\xe2\x19\x68\xc3\x6b\xae\x9a\x6b\x4c\x2f\x8f\xfb\x8b\x78\x7d\x1d\x7d\x68\xdf\x5b\x87\x79\xbb\x8a\xfa\x6f\xaf\x1c\xda\xf2\x0a\x35\xee\xdf\x60\xf0\xad\x8e\x9a\xb6\x28\x25\x59\xe3\x1c\x46\xd7\xdc\x7e\x98\xc1\x5d\xaf\x73\x7e\x7a\x34\x49\x90\x16\x34\x49\xd6\xba\xd7\xdc\x76\x3c\xed\x00\x60\xd0\x6f\x6c\xc6\xc7\x37\x60\xa3\xf1\xb5\xeb\x48\xb5\xf4\xa2\xef\x68\x8a\x40\xea\x04\xcf\xe5\x66\xed\xda\x90\xbd\xc4\xbc\xd3\x52\x6d\x32\x26\xad\x16\x1d\x4f\xe3\xfb\x4e\x03\x96\x07\xb7\xee\xbb\x9e\xe9\xeb\xbc\xd7\xb0\x0d\x0b\xc6\x95\x45\x3f\x4d\x9d\x3c\xf8\x48\x43\x0f\x99\xbe\x29\x3f\xf6\xc2\xc1\xc7\x1b\x9a\xbe\x31\xbb\x0b\xcc\xff\x5a\x73\xa5\x71\xc3\xa2\xef\x45\x78\xc7\xb6\x5d\xb1\x3a\xa0\x84\x8b\x05\xbc\x4c\xd4\xa5\xc2\xa4\xa3\xa5\x20\xe9\x16\x9b\x57\xe7\x4e\xc4\xc3\xf2\x8e\xb0\xc4\x12\xf6\x14\xc9\x44\x53\xd1\xeb\x54\x4b\x6e\xb2\x1d\xf7\xab\x1a\x59\x87\xf7\x4a\xd5\x60\x9f\x07\x2d\x6d\x58\xcb\xd4\xeb\xb0\x57\xea\x50\xaf\xaa\xeb\x53\xf5\x83\x5b\x42\xfb\x63\xad\x69\xc9\xa6\xba\x0e\x68\xba\xbd\x50\x86\x9f\xf1\x48\x56\x11\x82\x6f\x7b\xa4\x1b\x51\xcb\xe0\xeb\x21\x07\xea\x10\xc7\x10\x04\x8d\x03\x96\x15\xcf\x93\xc8\x92\xed\xc8\x0d\x96\x1f\x28\xbb\xc3\x3c\xe8\x69\x7b\x22\x96\x64\xa5\xe9\xd2\x15\xb7\xe6\x46\x33\x9e\x5c\xd5\x4c\xc8\xea\xd5\x79\x40\xd6\x80\xea\xd6\xab\xef\x22\xda\xd3\x67\xce\x8f\x9d\xa7\x93\xaf\xd0\xb2\x03\xcd\x85\x03\x14\xed\x50\x8f\xb4\xed\xc8\x1d\xd9\x0f\x1d\x85\xd7\x0e\x47\x69\x59\x44\xdd\xd1\x1e\xcc\x74\x5d\x48\x9e\x51\x52\x40\x59\x10\xb5\xe2\x62\x0b\x3b\x73\x16\xa4\x7d\xc5\xde\xa6\xf8\xd4\x76\x82\x99\xc4\x80\xe5\x50\x56\x02\x8b\x3d\xac\xdc\x99\x6c\x31\xed\x99\x11\x9b\x4e\xd4\x76\xef\x6c\xb2\x49\x35\x6c\x50\x1d\xf5\x68\x94\xfc\xad\x22\x02\xcd\x7d\xea\x36\x4e\x73\xe1\xba\xbf\xed\xd7\xfa\xbb\xaf\x6e\xec\x4e\x52\x39\xdb\xf0\x2d\xce\xe8\x76\x3d\x33\xdf\x73\x72\xdf\x76\x2a\xf8\x9a\x4f\x4b\xb6\xee\x6f\x81\xe8\x59\x1c\x18\x37\x9e\x53\x62\x55\x75\x64\xef\x3a\xf7\x62\xea\xc1\xb2\x24\x8c\xa1\xf8\xbf\xcd\x22\x4b\xe3\xf4\xd7\xf2\xcf\x62\xd2\xaf\x25\x3e\x8d\x4b\x56\xe9\xe5\xfc\x80\x75\x19\x51\x26\x15\x59\x0b\xb2\x1d\x0d\xd2\xdf\xdd\x6e\x37\xad\x41\xcc\x47\xbf\xec\x6a\x0f\x2a\xb4\x99\x48\x87\x18\x3c\xe7\x6c\xd8\x3c\x7e\xf4\xd4\xae\x61\xf6\x9d\x9d\xe6\xe0\x0c\x6a\x47\x95\x42\x31\x6c\x02\x37\xb8\xbb\x84\x27\x1b\xca\xc7\x76\x90\xe2\x0f\xe7\x9a\x82\x63\xfb\xc4\xc5\x95\x05\xcd\xdd\xab\x49\x7c\xdb\xec\x06\x15\xf0\x4a\x18\xd3\x97\x43\x59\x7f\xd1\x0b\xfc\x19\x4c\xd2\xcf\xc2\x02\x66\xce\x31\xbb\xd5\x34\xde\xe2\x6d\xb7\x3d\xa1\xb7\xbc\xaf\xf1\x58\xb7\x38\x18\x4d\xfb\xdb\x5e\x21\x29\x79\x0d\xdd\x94\x5c\x63\xc0\xe0\x8b\x5e\x66\x6e\xfb\xb3\x03\x18\x25\xc1\x35\x33\xed\xc9\xbf\xf9\xf6\x97\x34\x51\x71\x3c\x41\x1c\x47\xbf\x3c\x89\xdf\xfa\x8f\xaa\x2c\xe0\x21\xce\xd5\xdf\xfa\xdc\xc6\x16\x67\xeb\x5a\xad\x76\x0b\x92\xdc\xa3\x6b\x5d\x72\x6b\xac\x21\xcd\x19\x8d\x81\x68\x92\x1e\x83\x21\x08\x24\xed\xe5\x4b\x7b\x7c\x33\x75\x08\xa6\x1a\xe7\xf8\xd5\xb9\x81\x0d\xda\x70\xda\x7c\x0d\xc2\x7c\x93\x97\xf4\x7f\xe7\xee\xf1\xe4\xf1\xe4\x7f\x02\x00\x00\xff\xff\xef\x81\xde\xef\x2c\x51\x00\x00" func contractsDigitalartCdcBytes() ([]byte, error) { return bindataRead( @@ -104,11 +104,11 @@ func contractsDigitalartCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/DigitalArt.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0x5b, 0x74, 0x34, 0xf9, 0xcc, 0x13, 0xd9, 0x80, 0x96, 0x42, 0x69, 0x7c, 0xb, 0x46, 0xc3, 0xc5, 0x14, 0x56, 0xca, 0x83, 0xa0, 0xde, 0xdd, 0x3b, 0xc3, 0xa6, 0x33, 0xe7, 0x13, 0x4e, 0xce}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x20, 0xf, 0x25, 0xb7, 0x4d, 0x70, 0x5a, 0xb9, 0x70, 0x4b, 0x5b, 0x12, 0x87, 0xbd, 0xf1, 0xef, 0xb4, 0xb9, 0x16, 0x86, 0x6a, 0xcd, 0xc0, 0xed, 0x1e, 0x76, 0xc, 0x11, 0x0, 0xc4, 0x64, 0x81}} return a, nil } -var _contractsEvergreenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\x51\x8f\xdb\x38\x0e\x7e\xcf\xaf\xe0\xce\xc3\x5e\x72\x98\x71\x7a\xc0\x62\x1f\x8c\xcb\x15\x73\xed\x0e\x30\x0f\xdb\x1b\xb4\xb3\x77\x0f\x45\x1f\x14\x8b\x4e\x88\xca\x92\x4f\x92\x27\xeb\x2d\xe6\xbf\x1f\x28\xd9\x8e\x9c\xb1\x93\xee\x2d\xba\x79\x8a\x2d\x91\xfc\xf8\x91\x22\x69\x51\x55\x1b\xeb\xe1\xae\xd1\x3b\xda\x2a\x7c\x34\x9f\x51\x43\x69\x4d\x05\x57\xd9\xda\x79\xa1\xa5\xb0\x72\x3d\x5a\xce\x0a\x59\x5c\x2d\x3a\xc1\x77\x46\x5f\x90\x3d\xdd\x31\x12\xff\x19\xbd\x90\xc2\x8b\x7f\x13\x1e\xdc\x4b\xd9\xd1\x72\x14\x5c\xac\xd7\xf0\xd3\x13\xda\x9d\x45\xd4\x50\x18\xed\xad\x28\x3c\x48\x2c\x49\xa3\x03\x01\xd6\x28\xbc\xd9\x0a\x87\x12\x2a\x23\x51\x41\x69\x2c\x48\x72\xde\xd2\xb6\xf1\xa4\x77\x50\x5b\x53\x20\x4a\xc7\xaa\x4c\x09\xb5\xa5\x4a\xd8\x16\x84\x96\xe0\xb0\x30\x6c\xba\x05\x27\x14\x3a\x5e\x7e\x77\xf7\xe8\xb2\xc5\x7a\xcd\xbb\x3f\x98\xc6\x16\x98\xc3\xde\xfb\xda\xe5\xeb\xf5\x8e\xfc\xbe\xd9\x66\x85\xa9\xd6\x35\xd5\x56\x78\x5c\x3b\xfc\x6f\x83\xea\xa6\x54\xe6\x70\xd3\xa3\x63\x4b\x0b\x51\x14\xe8\xdc\x52\x28\xb5\x5a\x0c\xb0\x8f\x9e\x7c\x59\x00\x00\xac\xd7\xf0\xde\x28\x4c\xdc\xa9\x85\xf5\x2d\x90\x06\xa1\x19\x4a\xc0\x05\x7e\x2f\x3c\x54\xa2\x05\x8b\x05\xd2\x13\x82\x80\xc2\x54\x15\x39\x47\x46\x43\x89\xd8\x2b\xfb\x0f\xab\x52\xb4\x45\xc6\xa6\x5a\x10\x5b\x17\x0d\x8b\x83\x68\x23\xdf\x7e\x8f\x4c\x63\x81\xb5\x67\x77\xad\x69\x85\xf2\x84\x8e\x6d\x1a\x2b\xd1\xf6\xba\xbc\x01\xd7\xd4\x21\x6c\x02\xb6\xd6\x08\x89\x16\x9e\x84\x25\xf4\x2d\x4b\x92\xf6\xc8\xba\xc9\x68\x07\x07\xf2\xfb\x80\x9d\x0a\xaa\x85\xf6\x1d\x93\x91\xd6\x2c\xa8\x4c\x09\xe1\x67\xe7\x6d\x53\xf8\xe8\x7f\x64\xa3\x33\x4c\x12\xc8\xb1\xff\x24\x51\x7b\x2a\x09\x2d\xab\x63\xe0\x1c\xec\x0c\x1e\xdb\x9a\x0a\xa1\xe0\x49\xa8\x06\x5d\x9e\xca\xfe\x15\xae\x6e\xad\x27\xe7\xaf\xe0\x06\x44\xe3\xf7\x66\x90\x7d\x77\xf7\x78\xb2\xf3\x41\x09\x5f\x1a\x5b\xf1\xde\xba\xfb\xdf\x71\xcd\xce\xc9\x5e\x0c\x8c\x05\x57\x1b\xed\x8c\x45\xc9\x0f\xa5\x28\x48\x91\x17\xfd\x1e\xf6\xf2\x44\xf7\xbf\x0e\x1a\x2d\x2b\x0e\x7c\x37\xd6\x22\x93\xc2\x2f\x13\x3c\xb0\xf4\xd1\x15\xd5\x5e\x47\x45\xa8\x14\xda\xd5\xa0\xeb\x94\x33\xfe\x29\xf4\x40\x32\x87\x0f\xde\x92\xde\x2d\x52\xbb\x12\x5d\x61\xa9\xe6\x90\x74\x14\x9a\xf0\x20\x14\x94\x84\x4a\x46\xe7\xe2\xae\x6d\x87\x9d\x29\xe5\xb3\xb0\x36\x36\x3c\x87\x04\xcc\x2e\x22\x48\x4c\x4d\x42\x21\x4d\x9e\x84\xfa\x20\x14\xbe\x39\xa6\x2a\x83\x4a\x53\x97\xd3\x14\x8a\xbd\xb0\x3b\x94\xb0\x6d\x13\x40\x3e\xfc\xef\xb4\xbc\x20\x38\xe5\x8d\xaa\x0a\x25\x75\xf9\x5e\x7a\xb4\x21\x7a\xa4\x77\xab\x0c\x6e\x95\x32\x07\x94\x60\x85\xde\x61\x0e\x1f\x5f\x65\xaf\x6e\xfe\x96\xbd\xfa\x74\x99\xe0\x29\xf8\x39\xfc\x72\x47\xbf\xfe\xf8\xc3\xc8\xd1\xa1\x84\xfc\x2c\xec\x67\xf4\xff\x87\xb3\xa9\xb6\xc3\x1e\xf5\x90\x1d\xe4\xc0\x19\x25\xc1\xe8\x2e\x39\xfa\x62\x55\x05\x53\x7f\xc0\xbd\x59\xd0\x93\x2e\x0a\x29\x2d\x3a\xc7\x78\x18\xc7\x9d\x32\x87\xe1\x5d\x97\xcc\xb1\x6c\x85\xf4\x12\xce\x35\x15\xf2\x56\x72\xf1\xc0\x5e\x84\xd3\x29\xcb\xe1\x36\xfe\x19\x59\xef\x6a\x9e\x7d\x10\x7e\x0f\xcb\x3e\xa1\x57\x91\xde\xba\xd9\x2a\x2a\xa0\xe6\x35\x6f\x06\x28\x5c\xcf\xca\xae\x0b\x81\x0f\x8d\xaa\x57\x93\xa5\xba\xef\x4b\x70\x35\x16\x5c\x63\xe4\x35\x08\xdd\x82\x36\xfa\xe6\x37\xb4\x26\x0d\x5c\x2d\xda\x8a\x8f\xef\x81\x94\x82\x2d\x97\xd8\xda\x38\xf2\x28\x53\x55\xc1\x3a\x7b\xdc\xd9\xe9\x53\xb8\x87\xd3\x13\xb6\xa4\x92\x0b\x17\xc9\xd5\x29\x12\x6d\x7c\x8a\x26\xa4\x47\xaf\xec\x68\xda\xa3\xad\x48\x1f\x33\xa8\x77\x73\x8c\xe5\x33\xea\xbf\x38\xf0\x6d\x8d\xd0\x70\x6b\x24\x3d\x14\xaa\xcb\xe1\x48\x19\xcf\xe1\x21\x50\xcc\xff\x5f\x1f\xe3\xc2\xe7\x63\x39\x3c\x85\x37\x43\x49\xba\x1e\xbd\x9f\x28\x14\xe3\x0d\x67\x8f\xda\x78\xeb\xc5\xb4\x1d\x6f\x3f\x4d\xab\xf1\xea\xbc\x97\xfd\x8e\x55\xd2\x97\xa2\x79\x55\x66\x24\x61\x03\x24\x5f\x2e\xa4\xc5\x77\x93\xba\x3d\xa1\x63\xb2\x38\x6e\xa6\xa9\x78\x29\x3e\x5f\x72\x36\xf3\x14\xbd\x54\xd3\x67\xe4\xa6\x27\xea\xe5\x96\xd1\xd9\xdb\x8c\x28\x1b\x36\x3f\x2f\xce\x26\x54\xd9\xe8\xe4\x2c\xbd\x17\x1e\x97\x89\x9b\x39\xfc\xd3\x18\xb5\xea\xe3\x77\x42\xb8\x45\xdf\x58\x0d\xa9\x00\xbc\x3e\x47\x61\x7e\x81\xa0\x55\x82\x3a\xc1\xbe\x5e\xc3\x83\x35\x25\x0d\x93\x98\x04\x01\x8a\x5c\x37\x21\xf1\x64\x58\x76\xed\x71\x47\x4f\x18\x26\xb3\xac\x97\xfc\x49\x14\xfb\xd8\xb4\xce\x4d\x68\x5c\x0e\xf0\x09\xbb\x49\x73\x10\x7e\xe4\x43\x19\x06\xa1\xc6\x62\x2c\xa6\xe4\x52\x51\x72\x03\x24\xd2\x80\x83\xad\x41\xe8\xec\x70\xd5\x7b\x35\x31\x5f\x85\xda\xd4\x2d\xbf\xbd\x7f\x7b\x0d\x94\x61\x06\x92\x64\x1e\x47\xda\xfc\xd7\xf6\xb7\x3f\x73\x0e\xa9\x1b\x5b\x1b\x77\xe4\xa0\xc3\xf6\xc7\x06\x91\xd9\x0a\xc7\x31\xcd\xe1\x23\x0f\x9f\x9f\xbe\x49\x55\x1b\x5b\xe8\xdf\x7e\xb3\x8a\x12\x93\x74\x13\xcd\xfe\x9e\xa3\xb9\x43\xcf\x10\x97\x47\x47\x57\x79\x98\xc9\x5f\x9f\x40\xe5\x03\x10\x32\x8f\x74\x6a\x72\xbc\x29\x50\x56\xc2\x32\xb4\x7d\xf6\x8b\x1d\x3b\x75\x7a\xa0\x28\x9e\xee\xd1\x08\x74\x44\x3e\xff\xd4\xc9\x69\x52\xbf\xc7\xd1\x6d\x43\x4a\xbe\xef\xbf\x76\x96\x12\x4b\xd1\x28\xff\x7e\xae\x09\xac\x72\xf8\x38\xfe\x1c\x8d\xb2\xed\xa7\x13\x6f\x62\x3a\x75\x6a\xe7\x85\x36\xf0\xf1\xd3\xd7\xf1\xf9\x82\x8b\x27\x61\xe3\x80\x13\xc3\x9b\x4d\x56\xe1\x84\xfd\xb8\x77\xc3\x04\xcd\x30\xdf\x69\x9b\xe0\x60\x22\x10\xb3\x26\xbe\x3b\x67\x22\x9d\x23\xde\x88\x1a\x36\x9c\x69\xb7\x45\x61\x1a\xed\x63\x7a\x74\x4d\x67\x95\x15\xa2\x16\x5b\xfe\x9e\x22\x74\xd9\x0e\xfd\xdf\xbf\xff\x32\xbe\x41\xe8\x01\x3e\xff\x63\xc9\x86\xbf\x5b\x4d\x5a\xa4\x32\x35\x98\x15\x7b\x2c\x3e\x2f\xe7\x72\x0f\xc2\x11\xed\xa2\x96\x89\xba\x46\x2d\x97\x93\xa1\x5b\xce\xca\x43\x32\x44\xe4\xa9\xed\xeb\xb3\x22\x45\xe3\xf3\x18\xc8\xd9\x36\x75\x5e\xc1\xa8\xf6\x04\x45\x73\xa5\x21\xfd\xad\xa6\x59\x7b\xbe\x78\xf4\xa6\xce\xde\x40\xdd\x6c\x3f\x8d\xb7\x43\xc3\xbd\x86\x8e\xd7\x05\xa5\x28\x30\x64\xfe\x15\x0e\x37\x21\x61\x58\x75\x57\x70\xd8\x53\xb1\x07\x61\xc3\xb7\x8f\x1b\x6e\x21\xb8\x53\xf4\xf7\x10\xc7\xeb\x93\xfe\xca\x68\xba\xfb\x59\x74\xe1\xe6\x26\x31\x1a\xf1\x8c\xfa\x20\x27\xa4\x73\xe8\xef\xdf\x76\x6e\xc5\xa6\x28\xf8\x1d\xdc\xbf\xe5\xb1\x83\x3b\x23\xe3\xad\x84\x5f\x45\x28\x8d\x26\xee\x8e\xed\xf1\x72\xc2\x8d\x26\xef\xee\xd3\x4d\x68\x09\x42\x29\x20\xef\x00\x25\x85\x4b\x92\xf3\x83\x77\x57\x8c\x3b\x44\xcb\xd5\x64\x63\xdd\xa1\x1f\x38\xe8\x7b\x7b\x8a\xbd\x1f\xfc\xbb\xb5\xaf\xb2\x78\xaa\x90\x4d\x7f\xff\x90\x74\xdf\x63\x50\x6f\x4f\xc3\x68\x51\x48\xd2\xbb\x60\x5b\xa2\x17\xa4\xc2\x17\xa1\xd0\x3c\xeb\xe8\x24\xbe\xfd\x07\xc8\x1b\xa3\x14\x86\x3b\xa3\xaf\x8e\xdc\x51\x24\x96\xe7\x24\x88\xb3\xb5\xde\x58\x6b\x0e\x83\x63\x21\xf6\xa1\xc3\xfd\x72\xaf\xfd\x8f\x3f\xb0\x83\x5f\xc2\xcb\xe7\xd7\x9d\x87\xcf\x8b\xff\x05\x00\x00\xff\xff\x1a\xb8\x31\x9c\x1a\x15\x00\x00" +var _contractsEvergreenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\x51\x8f\xdb\x38\x0e\x7e\xcf\xaf\xe0\xce\xc3\x5e\x72\x98\x71\x7a\xc0\x62\x1f\x8c\xcb\x15\x73\xed\x0e\x30\x0f\xdb\x1b\xb4\xb3\x77\x0f\x45\x1f\x14\x8b\x4e\x88\xca\x92\x4f\x92\x27\xeb\x2d\xe6\xbf\x1f\x28\xd9\x8e\x9c\xb1\x93\xee\x2d\xba\x79\x8a\x2d\x91\xfc\xf8\x91\x22\x69\x51\x55\x1b\xeb\xe1\xae\xd1\x3b\xda\x2a\x7c\x34\x9f\x51\x43\x69\x4d\x05\x57\xd9\xda\x79\xa1\xa5\xb0\x72\x3d\x5a\xce\x0a\x59\x5c\x2d\x3a\xc1\x77\x46\x5f\x90\x3d\xdd\x31\x12\xff\x19\xbd\x90\xc2\x8b\x7f\x13\x1e\xdc\x4b\xd9\xd1\x72\x14\x5c\xac\xd7\xf0\xd3\x13\xda\x9d\x45\xd4\x50\x18\xed\xad\x28\x3c\x48\x2c\x49\xa3\x03\x01\xd6\x28\xbc\xd9\x0a\x87\x12\x2a\x23\x51\x41\x69\x2c\x48\x72\xde\xd2\xb6\xf1\xa4\x77\x50\x5b\x53\x20\x4a\xc7\xaa\x4c\x09\xb5\xa5\x4a\xd8\x16\x84\x96\xe0\xb0\x30\x6c\xba\x05\x27\x14\x3a\x5e\x7e\x77\xf7\xe8\xb2\xc5\x7a\xcd\xbb\x3f\x98\xc6\x16\x98\xc3\xde\xfb\xda\xe5\xeb\xf5\x8e\xfc\xbe\xd9\x66\x85\xa9\xd6\x35\xd5\x56\x78\x5c\x3b\xfc\x6f\x83\xea\xa6\x54\xe6\x70\xd3\xa3\x63\x4b\x0b\x51\x14\xe8\xdc\x52\x28\xb5\x5a\x0c\xb0\x8f\x9e\x7c\x59\x00\x00\xac\xd7\xf0\xde\x28\x4c\xdc\xa9\x85\xf5\x2d\x90\x06\xa1\x19\x4a\xc0\x05\x7e\x2f\x3c\x54\xa2\x05\x8b\x05\xd2\x13\x82\x80\xc2\x54\x15\x39\x47\x46\x43\x89\xd8\x2b\xfb\x0f\xab\x52\xb4\x45\xc6\xa6\x5a\x10\x5b\x17\x0d\x8b\x83\x68\x23\xdf\x7e\x8f\x4c\x63\x81\xb5\x67\x77\xad\x69\x85\xf2\x84\x8e\x6d\x1a\x2b\xd1\xf6\xba\xbc\x01\xd7\xd4\x21\x6c\x02\xb6\xd6\x08\x89\x16\x9e\x84\x25\xf4\x2d\x4b\x92\xf6\xc8\xba\xc9\x68\x07\x07\xf2\xfb\x80\x9d\x0a\xaa\x85\xf6\x1d\x93\x91\xd6\x2c\xa8\x4c\x09\xe1\x67\xe7\x6d\x53\xf8\xe8\x7f\x64\xa3\x33\x4c\x12\xc8\xb1\xff\x24\x51\x7b\x2a\x09\x2d\xab\x63\xe0\x1c\xec\x0c\x1e\xdb\x9a\x0a\xa1\xe0\x49\xa8\x06\x5d\x9e\xca\xfe\x15\xae\x6e\xad\x27\xe7\xaf\xe0\x06\x44\xe3\xf7\x66\x90\x7d\x77\xf7\x78\xb2\xf3\x41\x09\x5f\x1a\x5b\xf1\xde\xba\xfb\xdf\x71\xcd\xce\xc9\x5e\x0c\x8c\x05\x57\x1b\xed\x8c\x45\xc9\x0f\xa5\x28\x48\x91\x17\xfd\x1e\xf6\xf2\x44\xf7\xbf\x0e\x1a\x2d\x2b\x0e\x7c\x37\xd6\x22\x93\xc2\x2f\x13\x3c\xb0\xf4\xd1\x15\xd5\x5e\x47\x45\xa8\x14\xda\xd5\xa0\xeb\x94\x33\xfe\x29\xf4\x40\x32\x87\x0f\xde\x92\xde\x2d\x52\xbb\x12\x5d\x61\xa9\xe6\x90\x74\x14\x9a\xf0\x20\x14\x94\x84\x4a\x46\xe7\xe2\xae\x6d\x87\x9d\x29\xe5\xb3\xb0\x36\x36\x3c\x87\x04\xcc\x2e\x22\x48\x4c\x4d\x42\x21\x4d\x9e\x84\xfa\x20\x14\xbe\x39\xa6\x2a\x83\x4a\x53\x97\xd3\x14\x8a\xbd\xb0\x3b\x94\xb0\x6d\x13\x40\x3e\xfc\xef\xb4\xbc\x20\x38\xe5\x8d\xaa\x0a\x25\x75\xf9\x5e\x7a\xb4\x21\x7a\xa4\x77\xab\x0c\x6e\x95\x32\x07\x94\x60\x85\xde\x61\x0e\x1f\x5f\x65\xaf\x6e\xfe\x96\xbd\xfa\x74\x99\xe0\x29\xf8\x39\xfc\x72\x47\xbf\xfe\xf8\xc3\xc8\xd1\xa1\x84\xfc\x2c\xec\x67\xf4\xff\x87\xb3\xa9\xb6\xc3\x1e\xf5\x90\x1d\xe4\xc0\x19\x25\xc1\xe8\x2e\x39\xfa\x62\x55\x05\x53\x7f\xc0\xbd\x59\xd0\x93\x2e\x0a\x29\x2d\x3a\xc7\x78\x18\xc7\x9d\x32\x87\xe1\x5d\x97\xcc\xb1\x6c\x85\xf4\x12\xce\x35\x15\xf2\x56\x72\xf1\xc0\x5e\x84\xd3\x29\xcb\xe1\x36\xfe\x19\x59\xef\x6a\x9e\x7d\x10\x7e\x0f\xcb\x3e\xa1\x57\x91\xde\xba\xd9\x2a\x2a\xa0\xe6\x35\x6f\x06\x28\x5c\xcf\xca\xae\x0b\x81\x0f\x8d\xaa\x57\x93\xa5\xba\xef\x4b\x70\x35\x16\x5c\x63\xe4\x35\x08\xdd\x82\x36\xfa\xe6\x37\xb4\x26\x0d\x5c\x2d\xda\x8a\x8f\xef\x81\x94\x82\x2d\x97\xd8\xda\x38\xf2\x28\x53\x55\xc1\x3a\x7b\xdc\xd9\xe9\x53\xb8\x87\xd3\x13\xb6\xa4\x92\x0b\x17\xc9\xd5\x29\x12\x6d\x7c\x8a\x26\xa4\x47\xaf\xec\x68\xda\xa3\xad\x48\x1f\x33\xa8\x77\x73\x8c\xe5\x33\xea\xbf\x38\xf0\x6d\x8d\xd0\x70\x6b\x24\x3d\x14\xaa\xcb\xe1\x48\x19\xcf\xe1\x21\x50\xcc\xff\x5f\x1f\xe3\xc2\xe7\x63\x39\x3c\x85\x37\x43\x49\xba\x1e\xbd\x9f\x28\x14\xe3\x0d\x67\x8f\xda\x78\xeb\xc5\xb4\x1d\x6f\x3f\x4d\xab\xf1\xea\xbc\x97\xfd\x8e\x55\xd2\x97\xa2\x79\x55\x66\x24\x61\x03\x24\x5f\x2e\xa4\xc5\x77\x93\xba\x3d\xa1\x63\xb2\x38\x6e\xa6\xa9\x78\x29\x3e\x5f\x72\x36\xf3\x14\xbd\x54\xd3\x67\xe4\xa6\x27\xea\xe5\x96\xd1\xd9\xdb\x8c\x28\x1b\x36\x3f\x2f\xce\x26\x54\xd9\xe8\xe4\x2c\xbd\x17\x1e\x97\x89\x9b\x39\xfc\xd3\x18\xb5\xea\xe3\x77\x42\xb8\x45\xdf\x58\x0d\xa9\x00\xbc\x3e\x47\x61\x7e\x81\xa0\x55\x82\x3a\xc1\xbe\x5e\xc3\x83\x35\x25\x0d\x93\x98\x04\x01\x8a\x5c\x37\x21\xf1\x64\x58\x76\xed\x71\x47\x4f\x18\x26\xb3\xac\x97\xfc\x49\x14\xfb\xd8\xb4\xce\x4d\x68\x5c\x0e\xf0\x09\xbb\x49\x73\x10\x7e\xe4\x43\x19\x06\xa1\xc6\x62\x2c\xa6\xe4\x52\x51\x72\x03\x24\xd2\x80\x83\xad\x41\xe8\xec\x70\xd5\x7b\x35\x31\x5f\x85\xda\xd4\x2d\xbf\xbd\x7f\x7b\x0d\x94\x61\x06\x92\x64\x1e\x47\xda\xfc\xd7\xf6\xb7\x3f\x73\x0e\xa9\x1b\x5b\x1b\x77\xe4\xa0\xc3\xf6\xc7\x06\x91\xd9\x0a\xc7\x31\xcd\xe1\x23\x0f\x9f\x9f\xbe\x49\x55\x1b\x5b\xe8\xdf\x7e\xb3\x8a\x12\x93\x74\x13\xcd\xfe\x9e\xa3\xb9\x43\xcf\x10\x97\x47\x47\x57\x79\x98\xc9\x5f\x9f\x40\xe5\x03\x10\x32\x8f\x74\x6a\x72\xbc\x29\x50\x56\xc2\x32\xb4\x7d\xf6\x8b\x1d\x3b\x75\x7a\xa0\x28\x9e\xee\xd1\x08\x74\x44\x3e\xff\xd4\xc9\x69\x52\xbf\xc7\xd1\x6d\x43\x4a\xbe\xef\xbf\x76\x96\x12\x4b\xd1\x28\xff\x7e\xae\x09\xac\x72\xf8\x38\xfe\x1c\x8d\xb2\xed\xa7\x13\x6f\x62\x3a\x75\x6a\xe7\x85\x36\xf0\xf1\xd3\xd7\xf1\xf9\x82\x8b\x27\x61\xe3\x80\x13\xc3\x9b\x4d\x56\xe1\x84\xfd\xb8\x77\xc3\x04\xcd\x30\xdf\x69\x9b\xe0\x60\x22\x10\xb3\x26\xbe\x3b\x67\x22\x9d\x23\xde\x88\x1a\x36\x9c\x69\xb7\x45\x61\x1a\xed\x63\x7a\x74\x4d\x67\x95\x15\xa2\x16\x5b\xfe\x9e\x22\x74\xd9\x0e\xfd\xdf\xbf\xff\x32\xbe\x41\xe8\x01\x3e\xff\x63\xc9\x86\xbf\x5b\x4d\x5a\xa4\x32\x35\x98\x15\x7b\x2c\x3e\x2f\xe7\x72\x0f\xc2\x11\xed\xa2\x96\x89\xba\x46\x2d\x97\x93\xa1\x5b\xce\xca\x43\x32\x44\xe4\xa9\xed\xeb\xb3\x22\x45\xe3\xf3\x18\xc8\xd9\x36\x75\x5e\xc1\xa8\xf6\x04\x45\x73\xa5\x21\xfd\xad\xa6\x59\x7b\xbe\x78\xf4\xa6\xce\xde\x40\xdd\x6c\x3f\x8d\xb7\x43\xc3\xbd\x86\x8e\xd7\x05\xa5\x28\x30\x64\xfe\x15\x0e\x37\x21\x61\x58\x75\x57\x70\xd8\x53\xb1\x07\x61\xc3\xb7\x8f\x1b\x6e\x21\xb8\x53\xf4\xf7\x10\xc7\xeb\x93\xfe\xca\x68\xba\xfb\x59\x74\xe1\xe6\x26\x31\x1a\xf1\x8c\xfa\x20\x27\xa4\x73\xe8\xef\xdf\x76\x6e\xc5\xa6\x28\xf8\x1d\xdc\xbf\xe5\xb1\x83\x3b\x23\xe3\xad\x84\x5f\x45\x28\x8d\x26\xee\x8e\xed\xf1\x72\xc2\x8d\x26\xef\xee\xd3\x4d\x68\x09\x42\x29\x20\xef\x00\x25\x85\x4b\x92\xf3\x83\x77\x57\x8c\x3b\x44\xcb\xd5\x64\x63\xdd\xa1\x1f\x38\xe8\x7b\x7b\x8a\xbd\x1f\xfc\xbb\xb5\xaf\xb2\x78\xaa\x90\x4d\x3f\x24\xcd\xf7\x18\xd3\xdb\xd3\x28\x5a\x14\x92\xf4\x2e\x98\x96\xe8\x05\xa9\xf0\x41\x28\x34\x9c\x84\xb7\xff\xfe\x78\x63\x94\xc2\x70\x65\xf4\xd5\x81\x3b\x8a\xc4\xea\x9c\xc4\x70\xb6\xd4\x1b\x6b\xcd\x61\xf0\x2b\x84\x3e\x34\xb8\x5f\xee\xb5\xff\xf1\x87\x55\x0e\xdf\x7f\x09\x2f\x9f\x5f\x77\x1e\x3e\x2f\xfe\x17\x00\x00\xff\xff\xbe\x2a\x80\x4f\x19\x15\x00\x00" func contractsEvergreenCdcBytes() ([]byte, error) { return bindataRead( @@ -124,11 +124,11 @@ func contractsEvergreenCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/Evergreen.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0xf9, 0x8e, 0x6b, 0x7, 0xc2, 0xe2, 0xe5, 0xaf, 0x19, 0xb4, 0xa9, 0xa1, 0x28, 0xee, 0x5e, 0xc8, 0xb5, 0xd1, 0x96, 0x91, 0xcb, 0x66, 0x7f, 0xe4, 0xa1, 0x52, 0x4a, 0x2c, 0x15, 0x26, 0x42}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x38, 0xfc, 0xb4, 0xa, 0x4d, 0x3d, 0xce, 0x33, 0x8a, 0x16, 0xe8, 0x4, 0x14, 0x18, 0x9f, 0xd4, 0xfe, 0x89, 0xbe, 0x76, 0x6c, 0x5c, 0xcd, 0x4, 0xf, 0x25, 0xaa, 0x4e, 0xfa, 0xc7, 0x20, 0xee}} return a, nil } -var _contractsSourcesMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xd4\xcd\x8e\xda\x30\x10\xc0\xf1\x3b\x4f\x81\xd4\x4b\x39\x04\xf3\x51\xa2\xd0\x63\x8b\xb8\xb5\x07\x02\xbd\x54\x55\x35\xb6\x27\xc4\x5a\xe3\x41\xf6\x84\x88\xb7\x5f\x45\x08\x36\x59\x02\x59\xb4\x5c\x10\x87\xe4\xff\xf3\x8c\xac\x7c\xe9\xa7\x54\x78\x85\xa1\xd7\x8b\xfa\x7f\x03\x83\xd3\xe0\xb5\xf8\x51\x78\x87\x7e\xa8\xb4\xfa\xf7\x35\x67\xde\x87\xef\x42\x6c\x0d\xe7\x85\x1c\x2a\xda\x09\x72\x99\xa5\x52\x54\x3f\x51\xc6\x42\x5a\x92\x62\x07\x81\xd1\x0b\x45\x8e\x3d\x28\x0e\xa2\x60\x63\x0d\x1f\x6b\xad\x41\xc3\x58\x5a\x2a\xd7\xf4\x82\xae\x93\x50\xe4\x31\x7a\x0b\xb7\x73\x97\x5c\x8b\x54\xb8\xad\x91\x16\x3f\xa6\xdd\x1c\xa8\x91\xe9\x50\x7e\x21\x83\x06\x86\x3f\x06\xcb\xf0\x24\xb2\xd1\xec\xf0\xd3\xd2\xb0\xca\x25\x81\xd7\x4f\xd2\x6b\xc5\x16\x7b\x93\x2e\xee\x3a\x45\xd0\x67\xc4\xb8\x3a\xb1\x49\x17\xd7\xb9\xc7\xb6\xe7\x6e\x0e\xd0\xb1\xb1\xdf\xcb\x75\xca\xe4\x31\xf3\xe4\xf8\x1e\xe3\x32\x8e\xc2\xe5\xc9\x13\x36\x4b\xe2\x89\x92\x2a\xc6\x78\x8a\xdf\x46\x38\x4e\xe6\x72\xa6\x13\x35\x05\x39\x8d\xc7\x73\x48\x40\x4f\xe2\x19\x8c\x74\xed\x38\x0d\xaf\xe5\x38\xe4\x1e\xbb\xa9\xb7\x07\x7f\x9f\xba\xc6\xaa\x95\xac\x30\x90\x3d\xa0\xff\x04\x54\xcf\x5c\x10\xce\x8d\xd7\x7b\xf0\x7c\xac\x36\xf7\x5f\x01\x83\xa5\x6d\x35\xfe\xcf\xd3\xdf\xae\x0f\x4b\xb5\xef\xf3\x5b\xb5\x5b\x03\x1a\x9d\xc2\xe6\x42\x6b\xc5\x0e\x7b\x85\xec\x0d\x1e\xc0\x3e\x51\x6f\x34\x07\xbd\xd7\x00\x00\x00\xff\xff\x41\x3d\xb2\x07\x4e\x05\x00\x00" +var _contractsSourcesMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xd4\xcf\x8e\xda\x30\x10\x06\xf0\x3b\x4f\x81\xd4\x4b\x39\x04\xf3\xa7\x44\xa1\xc7\x96\x72\x6b\x0f\x04\x7a\xa9\xaa\x6a\x6c\x4f\x12\xab\xc6\x46\xf6\x84\x2c\x6f\xbf\x8a\x10\xac\x03\x81\x2c\x5a\x2e\x88\x43\xf2\xfd\x3c\x9f\x26\xfe\xd4\x4f\x6d\xe9\x04\xfa\x5e\x2f\xea\xff\xf1\x04\x46\x82\x93\xec\x5b\xe9\x0c\xba\xa1\x90\xe2\xef\xe7\x82\x68\xe7\xbf\x32\x96\x2b\x2a\x4a\x3e\x14\x76\xcb\xac\xc9\xb4\xad\x58\xfd\x13\x65\xc4\xb8\xb6\x9c\x6d\xc1\x13\x3a\x26\xac\x21\x07\x82\x3c\x2b\x49\x69\x45\x87\x20\x6b\xd0\x30\x96\xda\x56\x6b\xfb\x1f\x4d\x27\x21\xac\xc3\xe8\x2d\xb8\x9d\x3b\xc7\xb5\x48\xa5\xc9\x15\xd7\xf8\x3e\xed\xe6\x40\x8d\x98\x0e\xe5\x27\x12\x48\x20\xf8\xad\xb0\xf2\x4f\x22\x1b\x99\x1d\x7e\x5a\x29\x12\x05\xb7\xe0\xe4\x93\xf4\x20\xb1\xc5\xde\xa4\x8b\xbb\x4e\xe9\xe5\x09\x51\x26\x24\x36\xe9\xe2\x3a\xee\xb1\xf6\xcc\xcd\x01\x3a\x1a\xfb\xb5\x5c\xa7\x64\x1d\x66\xce\x1a\xba\xc7\x98\x8c\x22\x7f\x7e\xf2\x88\xcd\x92\x78\x22\xb8\x88\x31\x9e\xe2\x97\x11\x8e\x93\x39\x9f\xc9\x44\x4c\x81\x4f\xe3\xf1\x1c\x12\x90\x93\x78\x06\x23\x19\x1c\xa7\xe1\xb5\x1c\xc7\x9a\xc7\x36\xf5\xf6\xe0\x97\x51\xd7\x58\x5d\xc9\x0a\xbd\xd5\x7b\x74\x1f\x80\xc2\x98\x33\x42\x85\x72\x72\x07\x8e\x0e\x75\x73\xff\x04\x10\x68\x9b\xd7\xe3\x7f\x3f\xfe\xed\xba\x58\xea\xbe\x4f\x6f\x05\x5b\x03\x12\x8d\xc0\x66\xa1\x41\x62\x87\xbd\x42\x72\x0a\xf7\xa0\x9f\xa8\x37\x32\x8f\x3e\x7a\x52\x26\x67\x3f\x5e\x60\xbb\x0b\xda\x7f\x74\xbd\x2e\xbe\x93\xd3\x65\x7a\x19\x3b\xe8\xbd\x06\x00\x00\xff\xff\xbc\xa4\x82\x05\xc2\x05\x00\x00" func contractsSourcesMdBytes() ([]byte, error) { return bindataRead( @@ -144,11 +144,11 @@ func contractsSourcesMd() (*asset, error) { } info := bindataFileInfo{name: "contracts/SOURCES.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0xf, 0x5, 0x9a, 0x9, 0xa1, 0x82, 0x1a, 0x29, 0x3b, 0x9d, 0x26, 0x68, 0xe7, 0x49, 0x13, 0xca, 0x43, 0x18, 0xec, 0x17, 0x1a, 0xe1, 0x6, 0x9d, 0x86, 0xca, 0x91, 0xbb, 0x8f, 0xc5, 0x2f}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5, 0x13, 0xa9, 0x90, 0xd5, 0xd4, 0xbd, 0x52, 0x4, 0xad, 0x11, 0x2c, 0x52, 0xc6, 0xdb, 0xc, 0xe8, 0x34, 0xa9, 0x97, 0x93, 0x77, 0x2e, 0xe5, 0x6f, 0xab, 0xaf, 0x33, 0xf0, 0x26, 0x3f, 0x31}} return a, nil } -var _contractsSequelmarketplaceCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x5a\x5f\x6f\xdb\x38\x12\x7f\xcf\xa7\x98\xe4\x21\x67\x2f\x1c\xb9\x0b\x2c\xf6\xc1\x88\xdb\xeb\x65\xb7\x40\x81\xb6\x17\x24\xdd\xbd\x87\x22\x0f\xb4\x34\xb2\x89\xd2\xa4\x96\xa4\x9c\xf5\x15\xf9\xee\x07\xfe\x91\x44\x52\x74\xec\xed\xf5\xee\xf6\xf2\x90\x48\x22\x39\x33\x9c\xbf\x3f\x0e\x43\xb7\x8d\x90\x1a\xde\xb4\x7c\x4d\x57\x0c\x3f\x8a\xcf\xc8\xa1\x96\x62\x0b\x17\xc5\x5c\x69\xc2\x2b\x22\xab\x79\x34\x5c\x94\x55\x79\x71\xe6\x17\x7e\x78\xf3\xf1\x5e\x0b\x89\xb5\x14\x5c\x8f\x17\x46\xc3\xd1\xc2\xf7\xa8\x49\x45\x34\xf9\x95\xe2\xa3\x1a\x2f\x8c\x86\x63\x8e\x82\x1f\x91\x36\x9d\x11\x2d\xff\x79\x87\x72\x2d\x31\x58\xd7\x7f\x71\xf3\xce\xe6\x73\xb8\xc7\xdf\x5a\x64\xef\x89\xfc\x8c\xba\x61\xa4\x44\x68\xa4\xd8\xd1\x0a\x15\x94\x82\xef\x90\x53\xe4\x25\x42\xdd\xf2\x52\x53\xc1\x15\x68\x01\xa5\x44\xa2\x11\x18\x55\x9a\xf2\xb5\x82\x5a\x48\x4f\xc7\x28\x49\x01\xe5\xb1\xb2\x8a\xb3\xf9\xdc\xf2\x12\xad\x2c\x71\x01\x1b\xad\x1b\xb5\x98\xcf\xd7\x54\x6f\xda\x55\x51\x8a\xed\xbc\xa1\x8d\x24\x1a\xe7\xca\x92\xb9\xaa\x99\x78\xbc\x2a\x05\xd7\x92\x94\x5a\x99\xe5\xa4\x2c\x51\xa9\x09\x61\x6c\x7a\xd6\x0d\x64\x84\xff\x72\x06\x00\x30\x9f\xc3\x2d\xd9\x6f\x91\x6b\xff\x6a\xff\x84\x24\xcc\xbb\xd2\xb2\x2d\x75\x37\xd3\x2f\xf5\xcb\xa5\x60\x08\x54\x81\xde\x60\xa0\x47\xfb\x55\xd4\xf6\x6b\x43\xa4\xde\x83\xde\x10\x0d\x12\x4b\xa4\x3b\x34\xb3\xa9\x82\x26\xe0\x9c\x63\x6b\x7e\x18\x6a\x4b\x6c\x01\xf7\x5a\x52\xbe\x3e\x8b\x78\x3b\x72\xb2\xe3\xef\xde\x29\x5f\x3b\x9e\x7f\x51\x40\xaa\x4a\xa2\x52\xc7\x59\x78\x4a\x0b\x78\xed\x57\x84\x7c\xc8\x56\xb4\x5c\x77\x5c\x7e\x6b\x09\xd7\x54\xef\xbb\xfd\xd5\xde\xaf\x40\x5b\xd7\xb3\x1b\x7d\xa4\x8c\xc1\xca\xec\x9d\x56\xc6\x11\x06\xe9\x50\x16\x47\xa5\x71\xfc\x16\xf0\xcb\x1b\xfa\xfb\x8f\x3f\xc4\x5b\x36\xfe\xe4\x05\x69\x50\x96\xc8\x35\x59\xf7\xaa\x16\x3b\x94\x84\x31\x50\xc4\x88\x13\xe8\x18\x24\x36\x12\x15\x72\xad\x8e\xb3\x37\x3c\xc6\xcc\x29\xa7\x7a\x12\x9a\x62\x36\xd6\xda\x2c\x11\x7d\x16\xd1\x9a\x06\x9e\x63\xdd\x0a\x59\x5d\x58\x4f\x59\x5a\x1b\x67\x06\x3b\x03\x2f\x7b\x5e\xe3\x49\xde\x3a\x4b\xcf\x3b\x43\xc5\xe8\x6c\x69\x45\xe9\x07\x9f\xce\xdc\xef\x24\x0a\xde\x72\xe7\xeb\x26\x80\x4f\x8f\x88\x70\x55\xb0\xc7\x43\xfa\xf5\x36\x51\x0b\xf8\xe4\x09\x3c\x9c\x1d\x5d\x64\x4c\x7a\xd3\xda\x45\x71\xca\xb8\x77\x03\x0f\x89\xa5\x32\x4c\x66\xc7\x89\x64\x4d\xd4\x91\x82\x65\x2f\xfa\x78\x52\x47\x1a\x96\x3d\x97\x83\xca\xb6\x19\xf8\x1d\x55\x1a\xab\xe8\x13\x90\x1d\xa1\x8c\x98\x58\x32\x99\xb2\x69\x65\xb9\x21\x0a\x8b\xe7\x2c\x81\x3b\xe3\xde\x01\xc5\x49\xcf\x56\xf5\xfb\xf3\xee\x39\xf8\xe9\xa0\x5a\x97\x9a\xdf\xfe\xb4\x80\x5f\xde\x72\xfd\xe3\x0f\xc3\x10\xaf\xf5\xc7\x7d\x33\xb8\x7b\x38\x90\x9b\xef\x75\xf3\x2b\x69\xd9\x81\x85\x8d\xa4\x65\x1f\x0d\xa3\x85\x91\xa9\x06\x7f\x50\x0a\xf5\x98\xd4\xd6\xd7\xc2\x77\x94\x7f\xee\x46\x5f\xb9\xe1\x69\xac\xe7\x7b\xc1\x12\x2d\x3f\x12\x05\x4a\xb0\xea\x54\xbd\x1a\x0a\xff\x7f\x5a\x5d\xb5\x7b\x94\x87\x45\x3c\x5d\x81\xff\xa0\x7a\x53\x49\xf2\xc8\x63\x2d\xfa\x3d\x5a\x6d\x3e\x76\x53\x4e\x55\x69\x4f\xf3\x7f\xa6\xd7\xdd\x89\x0a\x4d\x34\x62\x24\xb0\x3b\xc8\xee\xb0\x6e\xf9\x30\x23\xb7\xb5\x05\x90\x56\x6f\x26\x71\xf2\xb9\xb1\x28\xe9\x9d\xdb\xdb\x14\x2e\x93\xd4\xd4\x3f\x46\x7b\xba\x75\xe0\x4b\xde\x90\x86\xac\x28\xa3\x7a\xbf\x80\xe1\xf9\xda\xb1\x49\x41\x5f\xa7\xf6\x29\x5c\x7e\x19\x0d\xde\x08\xc6\xd0\x26\xf1\xd9\x80\x64\x82\xaf\xb7\xed\x8a\xd1\xf2\xe9\x65\x46\xe7\xe6\xf7\x51\x8d\x2b\x64\x0c\xa5\x75\xe4\x5b\xa2\x37\x0b\x70\x04\xcd\xf3\x73\xee\x1e\xd3\x3e\xe0\xec\xf8\xbb\x96\xe4\x4e\x30\x34\x49\x64\x10\xde\x7c\x79\x38\xcd\xe7\x3b\x79\x83\x02\x60\xca\x8e\xc3\x34\xcb\xbc\xc6\x8b\x95\x90\x52\x3c\x4e\xa6\xe7\xfe\xa9\xe7\xec\x1c\x80\x56\x0b\xa7\x8c\xe9\x79\x5c\xcb\xac\x26\x4c\xa5\x18\xcc\x2c\x1e\x39\xca\xf3\x82\xa4\xf0\xcb\xcc\xa7\x61\x7d\x5d\xba\x7a\xb3\x6a\x29\xab\x7c\xba\x54\x93\xa8\x1e\x35\x52\xd4\xd4\xe0\x14\x2b\x7c\xb1\x46\xdd\xcb\x75\xeb\x86\x26\xd3\x59\x5a\xc1\x98\x81\x31\xee\x6f\x6e\xec\xce\x02\x9f\x8b\xbf\x1b\x29\x2f\x72\x13\x02\xbb\x26\x1f\x66\x89\x70\xd6\x80\xf6\x4f\x3c\x52\x61\x6d\x96\xdc\x79\xa0\xe3\x68\xc5\x67\x9e\x35\xea\x3b\xb1\x27\x4c\xef\xfb\x59\xbd\x0f\xa5\x7b\x32\x28\x80\x12\x66\x2a\xfb\x02\x6a\xc2\x54\xc2\x2e\x74\x99\xe1\x79\x1a\x6b\xbe\x4f\x38\xb1\xb1\xca\x30\x62\x63\xe5\x1f\x08\xcd\xec\xe7\x59\xba\xd2\x79\xbc\x7f\x18\x8d\x9a\xa0\xb2\x7f\x12\xfd\x13\x86\xb7\xa3\xb0\x49\x03\x69\xbc\xc6\x01\xa1\xd0\xb7\x8a\x11\x72\x09\xd4\x81\x5b\x7a\x00\x67\x40\x3e\x7b\xe7\x9c\x29\x48\xe0\xfd\xe3\xf3\x5a\x28\x68\x85\x5c\xd3\x9a\xa6\xa4\x0e\x2b\x64\x9c\x43\xd2\x2f\x07\x89\x1e\xf6\xce\x01\xa4\x44\x1a\xeb\x3e\xc7\x93\x3d\x68\xe9\xe3\xef\xb5\x79\x7f\xfb\x53\xea\xa2\x71\x3e\x0a\xdf\x66\x39\x0b\x48\xd4\xad\xe4\x83\xe2\x42\x54\x99\xab\x44\xab\x76\x7f\xb0\x10\x1d\xae\xb1\x61\xb1\x3a\xa1\x14\x3d\x53\x92\xfd\xd0\x88\x8c\x8f\x9b\x7c\xd2\x5f\xc0\x5f\xbf\xc4\x75\xc9\x7e\x7e\xfa\x26\xc0\xc6\x10\x1f\xd5\xbd\x0f\x6f\x3e\x3e\x25\x59\xbf\x42\x4d\x28\x33\xb9\xd6\xef\xc1\x18\xf1\x27\xf7\x71\x92\x8d\x89\x18\x23\x1e\xd0\xf5\xe8\xd3\x57\x07\x87\x17\xb0\x38\x31\x48\x82\xe9\xc7\x83\xa5\x9b\x9c\xcb\x2b\xc7\x02\x27\x5a\x3b\x0e\xa2\xd8\x74\xe1\xdb\xa9\x81\x91\x8b\x0b\x5b\x22\x35\x6e\xe1\xfa\xaa\xb7\x57\x77\x76\xea\xce\x81\x0b\xb8\xbe\x0a\xb7\x3a\xcd\xf8\x7b\x51\x32\x24\xbc\x6d\x26\x9e\xc8\x1d\x2a\xdb\x87\x8a\x0c\x32\x4d\xc3\xf1\xfa\xca\x32\x3f\x16\x8c\x0d\xd9\xbf\x11\xf2\x3d\xe5\x1a\x2b\xeb\x31\x41\xd1\x6e\x39\xd5\xb7\x79\x60\xc3\xdb\xed\xcf\x15\xb5\xb9\xe6\x10\xa2\xba\x0b\x7b\x12\x5f\x8f\xb6\x8e\x07\x1e\x26\x28\x62\x01\x97\x03\xd4\xf2\xdf\x7c\xa0\x25\xf1\xd4\x03\x9e\x94\x84\xab\xe8\x0c\x2d\x54\x1a\xb6\x33\xfd\xc6\x40\x28\x65\xfb\x75\xe8\x67\x78\xfe\x06\x00\xa8\xb7\x39\x7c\xe7\x8d\x3e\x09\x6c\x3d\xfd\xef\x41\x23\x2d\xdb\x67\x90\xd1\xa7\x87\x69\xd4\x7f\xbb\x23\x7a\x83\x12\xf4\x86\x70\x20\x2b\x21\xed\x11\x50\x6f\x10\xb4\x24\x5c\x11\x6b\x1a\xa0\x35\x10\xbe\x8f\xda\x93\x64\xa5\xcc\xe1\xef\x71\x63\xce\xdf\x66\xf6\x1e\xb4\x30\xfe\x07\x34\x28\x26\xf3\xb9\x19\x54\xc8\x2b\xdf\x39\x75\xcd\x3b\xdf\x40\x64\x44\x69\xd8\x11\x46\xab\xa1\x97\x08\x91\xf9\xfb\xee\x33\x10\xf6\x48\xf6\x2a\x24\xdc\xb4\xda\xb5\x0d\xbd\x33\x12\x35\x10\x1d\xb7\x26\x77\x44\x82\x44\x45\xab\x96\xb0\xbb\xbe\xcd\x77\x99\x44\x48\x37\xf2\xf4\xca\x1c\x11\x28\x1b\x54\x55\x0b\x09\x65\x6b\x3c\x36\x8f\xb0\x92\x3e\x13\xad\xa3\x36\x2c\x2c\xcd\xe2\xbe\xfd\xd7\x9f\x33\x92\x55\x10\x37\xd4\x6e\x5a\x6d\xb2\x51\x18\xd4\x45\x77\x32\x9f\x74\x8d\x49\x43\xd7\x3d\x4f\x47\xb4\x7a\x7e\x15\x36\x42\x51\x3d\xa9\xa5\xd8\x2e\x02\x9a\x37\x6d\x76\x55\xac\xa6\x43\xcd\xca\xa7\xb3\xe1\x29\x34\xcc\x6b\xed\x5b\xb5\x82\x72\x3d\xb3\xce\xc3\x58\x4f\x42\xc1\x23\x4a\x04\xe3\x59\x3b\x04\xc2\xab\xa1\x49\x36\x33\x06\xe4\x91\xa7\xd8\x4d\xbb\xee\xf3\x86\xec\x30\x64\xf3\x4f\x94\xc2\x21\x32\x05\x0c\x6b\x3d\xd8\x9a\xd6\xb1\xce\x56\x84\x11\x5e\x22\xbc\x84\x17\xc5\x8b\x44\xe5\x06\xd9\x49\x3d\x19\xed\xf9\xdc\xda\x7f\x06\x5b\x54\x8a\xac\xcd\x51\xe9\x83\xe8\x7d\xd5\xcd\x0d\x7a\xd1\x7e\x6b\x17\xb1\x32\x53\xa2\xe7\x23\x3b\xe4\x2b\xd8\x13\x20\x53\x98\x08\x5a\xa1\xd2\x52\xec\xa3\x9d\x9d\xc5\xa6\x18\x1a\x92\x9d\x97\x0c\x9d\x8d\xf9\x1c\x6e\x8c\x12\x5c\x2f\xfd\xb9\xae\x8e\x29\x6e\xd1\xfa\xaf\x87\x9b\x99\xde\xc8\x1d\x6e\xc5\xee\x0f\xf5\x46\x0e\x00\xd2\xb4\x24\x75\xed\xab\xe8\x5c\xe7\xe2\xac\x3b\xd7\x9d\x06\x03\xcc\xcf\xab\x57\xd0\x10\x4e\xcb\xc9\x45\x47\x96\x0b\x0d\xb5\x68\x79\x65\x32\xc0\x20\xe6\x45\x02\x5b\xfe\x38\xd0\xcc\x74\xce\x0e\xa8\xfa\xcf\x88\x36\x77\xff\x21\x98\x99\x83\x85\x81\x5d\x65\xe8\x45\x27\xd8\x75\x88\x8c\xb8\xbc\x94\xc2\xe7\x72\x05\xc4\xae\x01\xd1\xe7\x0e\x05\x2b\xa2\xb0\x02\xe1\x32\xd2\x9a\xee\x90\xc3\xcf\x3b\xe4\xee\x46\xd0\x63\x91\xae\x41\x0a\xaf\x6d\x81\xf4\x99\xc1\x5f\xe1\xac\x05\xaa\xae\xd8\xb9\xf5\xae\x56\x0d\x17\x79\xc5\x33\x87\xbd\x2c\x0c\x6a\x8e\x41\x35\x08\x00\xd0\x38\x38\xff\x6d\x80\x99\x47\xb5\x59\x3c\x93\x5b\x1f\x21\x95\xbf\x09\xc1\x4e\x6b\xf9\x75\xa7\xbd\xfc\xfd\x54\x14\x81\x99\xcb\x07\x58\xc2\xa7\x87\x18\xbf\x1e\xbb\x37\x72\x4b\xf2\xe8\xc1\xdd\xbe\x7d\x5f\xbc\x88\x19\x93\xaa\x33\x17\x2c\xad\x05\xed\xe5\xa2\x71\xc6\xee\x7a\x91\xa4\x49\xb3\xaf\x1c\xa9\xc2\x5e\xc5\x17\x8d\x33\xd8\xb6\x4a\xdf\xb7\x65\x89\x58\x39\xbd\xa5\xd0\xa1\xab\x63\x46\xb8\x97\x4b\x5b\xe8\x2e\x2f\xdd\xed\xea\xb5\x15\x36\x2c\x65\x76\x0b\x86\x24\xac\xd0\xe4\x33\x49\xf8\x1a\xe1\xd3\x8b\xa2\xf8\xfe\x21\xcc\x68\xe0\x8a\xa9\xa5\x72\xbe\xcc\x54\x4f\x88\x2e\x78\x61\xe9\xfc\x03\xbe\x73\x77\x93\xa3\xa9\x46\x8d\x0d\xd1\x1b\x58\xe6\x3c\x66\x34\xdd\xb0\x0e\xc6\x7d\x4d\xce\x88\x60\x3d\xd3\xd1\x0d\x17\x9c\x8f\x26\x3e\x8d\x65\x0a\x61\xda\x0d\x69\x60\x09\x6b\xd4\xaf\xcb\xd2\x6c\x68\xe2\x2d\x36\x2d\xca\xae\xc7\x47\xd1\x42\xf3\xeb\x83\xc8\xf1\xe5\xc4\x48\x32\x46\x55\xc1\x66\x6e\x48\x53\x94\x1b\x2c\x3f\x67\x01\x20\x04\xcd\xa9\x82\x34\x0d\xf2\x6a\xe2\x1d\xcb\x5f\x57\x3b\xbf\x0a\xaf\xab\x49\x7a\x5d\xed\xfe\x76\x5e\x64\x7e\x4f\xc7\x22\x41\xd0\x38\xec\x38\x65\xc3\x61\x32\x70\x0a\xf6\x90\x72\x3b\xc0\x21\x89\x9b\xe8\xf5\x2a\xbe\xc4\x0e\x7f\x52\x60\x96\x38\x76\xf8\x39\xe3\xe0\x5d\x22\x96\xcf\x7b\xfa\xc8\x3f\x1c\xf2\xa2\x75\x18\x70\x07\x6d\x64\x01\xc2\x96\x2a\x65\x00\x42\xf2\x5f\x13\x3d\xf2\xef\x3d\x67\x6f\xcf\x10\x5b\xc2\x2b\xa2\x85\xdc\x87\xe8\x91\x36\x14\x2d\x96\x18\xc9\x73\x1c\x70\x1b\xa2\xee\x7f\x56\x86\x9a\x64\xde\xd3\x13\xc9\x90\x9e\xac\x17\x15\xb4\x9a\xd9\x75\x05\xc9\x27\x23\x3b\x16\x7e\xf2\xd3\x4b\xb1\xb5\x5b\x16\xdc\xe8\x7e\x12\x25\xf4\xe0\x65\x3a\x73\x3d\xfa\xe9\x31\x99\x87\xb4\xff\x27\x16\xd8\x06\x6f\xe8\x88\xb9\x93\xc4\x20\x6f\xd0\x58\xe8\x9a\x10\x89\xb0\x69\x47\x21\x22\x3f\xb3\x67\xf8\xac\x20\xbe\x47\x95\xa9\x83\xc1\x3f\x48\xf4\x3d\xec\xa0\xce\x75\x4f\x1d\x1e\x7a\x3a\xfb\x57\x00\x00\x00\xff\xff\x92\xfd\x9c\x2d\x16\x27\x00\x00" +var _contractsSequelmarketplaceCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x5a\x5f\x6f\x1b\x37\x12\x7f\xf7\xa7\x18\xfb\x21\x27\x15\xf2\x2a\x05\x8a\x3e\x08\x56\x72\x39\xb7\x01\x02\xb4\x39\xc3\x4e\x7b\x0f\x81\x1f\xa8\xdd\x59\x89\x08\x45\x6e\x49\xae\x54\x5d\xe0\xef\x7e\xe0\x9f\xdd\x25\xb9\x94\xa5\xe6\x72\x77\x3d\x3f\xd8\xbb\x4b\x72\x66\x38\x7f\x7f\x1c\x9a\x6e\x1b\x21\x35\xbc\x6d\xf9\x9a\xae\x18\x7e\x10\x9f\x90\x43\x2d\xc5\x16\xae\x8a\xb9\xd2\x84\x57\x44\x56\xf3\x68\xb8\x28\xab\xf2\xea\xc2\x2f\x7c\xff\xf6\xc3\x83\x16\x12\x6b\x29\xb8\x1e\x2f\x8c\x86\xa3\x85\x3f\xa3\x26\x15\xd1\xe4\x57\x8a\x7b\x35\x5e\x18\x0d\xc7\x1c\x05\x3f\x21\x6d\x3a\x23\x5a\xfe\xe3\x0e\xe5\x5a\x62\xb0\xae\xff\xe2\xe6\x5d\xcc\xe7\xf0\x80\xbf\xb5\xc8\x7e\x26\xf2\x13\xea\x86\x91\x12\xa1\x91\x62\x47\x2b\x54\x50\x0a\xbe\x43\x4e\x91\x97\x08\x75\xcb\x4b\x4d\x05\x57\xa0\x05\x94\x12\x89\x46\x60\x54\x69\xca\xd7\x0a\x6a\x21\x3d\x1d\xa3\x24\x05\x94\xc7\xca\x2a\x2e\xe6\x73\xcb\x4b\xb4\xb2\xc4\x05\x6c\xb4\x6e\xd4\x62\x3e\x5f\x53\xbd\x69\x57\x45\x29\xb6\xf3\x86\x36\x92\x68\x9c\x2b\x4b\xe6\xba\x66\x62\x7f\x5d\x0a\xae\x25\x29\xb5\x32\xcb\x49\x59\xa2\x52\x13\xc2\xd8\xf4\xa2\x1b\xc8\x08\xff\xf9\x02\x00\x60\x3e\x87\x3b\x72\xd8\x22\xd7\xfe\xd5\xfe\x09\x49\x98\x77\xa5\x65\x5b\xea\x6e\xa6\x5f\xea\x97\x4b\xc1\x10\xa8\x02\xbd\xc1\x40\x8f\xf6\xab\xa8\xed\xd7\x86\x48\x7d\x00\xbd\x21\x1a\x24\x96\x48\x77\x68\x66\x53\x05\x4d\xc0\x39\xc7\xd6\xfc\x30\xd4\x96\xd8\x02\x1e\xb4\xa4\x7c\x7d\x11\xf1\x76\xe4\x64\xc7\xdf\xbd\x53\xbe\x76\x3c\xff\xa2\x80\x54\x95\x44\xa5\x4e\xb3\xf0\x94\x16\xf0\xc6\xaf\x08\xf9\x90\xad\x68\xb9\xee\xb8\xfc\xd6\x12\xae\xa9\x3e\x74\xfb\xab\xbd\x5f\x81\xb6\xae\x67\x37\xba\xa7\x8c\xc1\xca\xec\x9d\x56\xc6\x11\x06\xe9\x50\x16\x27\xa5\x71\xfc\x16\xf0\xcb\x5b\xfa\xfb\xf7\xdf\xc5\x5b\x36\xfe\xe4\x05\x69\x50\x96\xc8\x35\x59\xf7\xaa\x16\x3b\x94\x84\x31\x50\xc4\x88\x13\xe8\x18\x24\x36\x12\x15\x72\xad\x4e\xb3\x37\x3c\xc6\xcc\x29\xa7\x7a\x12\x9a\x62\x36\xd6\xda\x2c\x11\x7d\x16\xd1\x9a\x06\x9e\x63\xdd\x0a\x59\x5d\x58\x4f\x59\x5a\x1b\x67\x06\x3b\x03\x2f\x7b\x5e\xe3\x49\xde\x3a\x4b\xcf\x3b\x43\xc5\xe8\x6c\x69\x45\xe9\x07\x9f\x2e\xdc\xef\x24\x0a\xde\x71\xe7\xeb\x26\x80\xcf\x8f\x88\x70\x55\xb0\xc7\x63\xfa\xf5\x36\x51\x0b\xf8\xe8\x09\x3c\x5e\x9c\x5c\x64\x4c\x7a\xdb\xda\x45\x71\xca\x78\x70\x03\x8f\x89\xa5\x32\x4c\x66\xa7\x89\x64\x4d\xd4\x91\x82\x65\x2f\xfa\x78\x52\x47\x1a\x96\x3d\x97\xa3\xca\xb6\x19\xf8\x27\xaa\x34\x56\xd1\x27\x20\x3b\x42\x19\x31\xb1\x64\x32\x65\xd3\xca\x72\x43\x14\x16\xcf\x59\x02\x77\xc6\xbd\x03\x8a\x93\x9e\xad\xea\xf7\xe7\xdd\x73\xf0\xd3\x41\xb5\x2e\x35\xbf\xfb\x61\x01\xbf\xbc\xe3\xfa\xfb\xef\x86\x21\x5e\xeb\x0f\x87\x66\x70\xf7\x70\x20\x37\xdf\xeb\xe6\x57\xd2\xb2\x23\x0b\x1b\x49\xcb\x3e\x1a\x46\x0b\x23\x53\x0d\xfe\xa0\x14\xea\x31\xa9\xad\xaf\x85\x3f\x51\xfe\xa9\x1b\x7d\xed\x86\xa7\xb1\x9e\x1f\x04\x4b\xb4\xbc\x27\x0a\x94\x60\xd5\xb9\x7a\x35\x14\xfe\xff\xb4\xba\x6a\x0f\x28\x8f\x8b\x78\xbe\x02\xff\x41\xf5\xa6\x92\x64\xcf\x63\x2d\xfa\x3d\x5a\x6d\xee\xbb\x29\xe7\xaa\xb4\xa7\xf9\x3f\xd3\xeb\xee\x4c\x85\x26\x1a\x31\x12\xd8\x1d\x64\x77\x58\xb7\x7c\x98\x91\xdb\xda\x02\x48\xab\x37\x93\x38\xf9\xdc\x5a\x94\xf4\x93\xdb\xdb\x14\x5e\x24\xa9\xa9\x7f\x8c\xf6\x74\xe7\xc0\x97\xbc\x25\x0d\x59\x51\x46\xf5\x61\x01\xc3\xf3\x8d\x63\x93\x82\xbe\x4e\xed\x53\x78\xf1\x79\x34\x78\x2b\x18\x43\x9b\xc4\x67\x03\x92\x09\xbe\xde\xb5\x2b\x46\xcb\xa7\x57\x19\x9d\x9b\xdf\x27\x35\xae\x90\x31\x94\xd6\x91\xef\x88\xde\x2c\xc0\x11\x34\xcf\xcf\xb9\x7b\x4c\xfb\x88\xb3\xe3\xef\x5a\x92\x7b\xc1\xd0\x24\x91\x41\x78\xf3\xe5\xf1\x3c\x9f\xef\xe4\x0d\x0a\x80\x29\x3b\x0e\xd3\x2c\xf3\x1a\x2f\x56\x42\x4a\xb1\x9f\x4c\x2f\xfd\x53\xcf\xd9\x39\x00\xad\x16\x4e\x19\xd3\xcb\xb8\x96\x59\x4d\x98\x4a\x31\x98\x59\xec\x39\xca\xcb\x82\xa4\xf0\xcb\xcc\xa7\x61\x7d\x5d\xba\x7a\xb3\x6a\x29\xab\x7c\xba\x54\x93\xa8\x1e\x35\x52\xd4\xd4\xe0\x14\x2b\x7c\xb1\x46\xdd\xcb\x75\xe7\x86\x26\xd3\x59\x5a\xc1\x98\x81\x31\xee\x6f\x6e\xec\xde\x02\x9f\xab\xbf\x1b\x29\xaf\x72\x13\x02\xbb\x26\x1f\x66\x89\x70\xd6\x80\xf6\x4f\x3c\x52\x61\x6d\x96\xdc\x7b\xa0\xe3\x68\xc5\x67\x9e\x35\xea\x7b\x71\x20\x4c\x1f\xfa\x59\xbd\x0f\xa5\x7b\x32\x28\x80\x12\x66\x2a\xfb\x02\x6a\xc2\x54\xc2\x2e\x74\x99\xe1\x79\x1a\x6b\xbe\x4f\x38\xb1\xb1\xca\x30\x62\x63\xe5\x1f\x09\xcd\xec\xe7\x59\xba\xd2\x79\xbc\x7f\x18\x8d\x9a\xa0\xb2\x7f\x12\xfd\x13\x86\x77\xa3\xb0\x49\x03\x69\xbc\xc6\x01\xa1\xd0\xb7\x8a\x11\x72\x09\xd4\x81\x5b\x7a\x04\x67\x40\x3e\x7b\xe7\x9c\x29\x48\xe0\xfd\xe3\xf3\x5a\x28\x68\x85\x5c\xd3\x9a\xa6\xa4\x8e\x2b\x64\x9c\x43\xd2\x2f\x47\x89\x1e\xf7\xce\x01\xa4\x44\x1a\xeb\x3e\xc7\x93\x3d\x68\xe9\xe3\xef\x8d\x79\x7f\xf7\x43\xea\xa2\x71\x3e\x0a\xdf\x66\x39\x0b\x48\xd4\xad\xe4\x83\xe2\x42\x54\x99\xab\x44\xab\xf6\x70\xb4\x10\x1d\xaf\xb1\x61\xb1\x3a\xa3\x14\x3d\x53\x92\xfd\xd0\xc2\x14\x9b\x88\x8e\x0f\x1c\x5f\x50\xf2\xc9\x7f\x01\x7f\xfd\x1c\xd7\x27\xfb\xf9\xe9\xab\x00\x1c\x43\x7c\x54\xff\xde\xbf\xfd\xf0\x94\x64\xff\x0a\x35\xa1\xcc\xe4\x5c\xbf\x17\x63\xcc\x1f\xdc\xc7\x49\x36\x36\x62\xac\x78\x44\xe7\xa3\x4f\x5f\x1c\x24\x5e\xc0\xe2\xcc\x60\x09\xa6\x9f\x0e\x9a\x6e\x72\x2e\xbf\x9c\x0a\xa0\x68\xed\x38\x98\x62\xd3\x85\x6f\xe7\x06\x48\x2e\x3e\x6c\xa9\xd4\xb8\x85\x9b\xeb\xde\x5e\xdd\x19\xaa\x3b\x0f\x2e\xe0\xe6\x3a\xdc\xea\x34\xe3\xf7\x45\xc9\x90\xf0\xb6\x99\x78\x22\xf7\xa8\x6c\x3f\x2a\x32\xc8\x34\x0d\xcb\x9b\x6b\xcb\xfc\x54\x50\x36\xe4\xf0\x56\xc8\x9f\x29\xd7\x58\x59\x8f\x09\x8a\x77\xcb\xa9\xbe\xcb\x03\x1c\xde\x6e\x7f\xac\xa8\xcd\x39\xc7\x90\xd5\x7d\xd8\x9b\xf8\x72\xd4\x75\x3a\xf0\x30\x41\x13\x8b\x00\x2e\xfa\x4f\x3e\xce\x92\x70\xea\x71\x4f\x4a\xc1\x15\x76\x86\x16\x31\x0d\xbb\x99\x7e\x65\x3c\x94\xb2\xfd\x32\x10\x34\x3c\x7f\x05\x1c\xd4\x9b\x1c\xbe\xf1\x36\x9f\x04\xa6\x9e\xfe\xf7\x10\x92\x96\xed\x33\x00\xe9\xe3\xe3\x34\x6a\xc3\xdd\x13\xbd\x41\x09\x7a\x43\x38\x90\x95\x90\xf6\x24\xa8\x37\x08\x5a\x12\xae\x88\x35\x0d\xd0\x1a\x08\x3f\x44\x5d\x4a\xb2\x52\xe6\x0c\xb8\xdf\x98\x63\xb8\x99\x7d\x00\x2d\x8c\xfb\x01\x0d\x6a\xca\x7c\x6e\x06\x15\xf2\xca\x37\x50\x5d\x0f\xcf\xf7\x11\x19\x51\x1a\x76\x84\xd1\x6a\x68\x29\x42\x64\xfe\xbe\x09\x0d\x84\xed\xc9\x41\x85\x84\x9b\x56\xbb\xee\xa1\x77\x46\xa2\x06\xa2\xe3\x0e\xe5\x8e\x48\x90\xa8\x68\xd5\x12\x76\xdf\x77\xfb\x5e\x24\x01\xd2\x8d\x3c\xbd\x36\x27\x05\xca\x06\x55\xd5\x42\x42\xd9\x1a\x8f\xcd\x03\xad\xa4\xdd\x44\xeb\xa8\x1b\x0b\x4b\xb3\xb8\xef\x02\xf6\xc7\x8d\x64\x15\xc4\x7d\xb5\xdb\x56\x9b\x64\x14\xc6\x74\xd1\x1d\xd0\x27\x5d\x7f\xd2\xd0\x75\xcf\xd3\x11\xad\x9e\x5f\x85\x8d\x50\x54\x4f\x6a\x29\xb6\x8b\x80\xe6\x6d\x9b\x5d\x15\xab\xe9\x58\xcf\xf2\xe9\x62\x78\x0a\x0d\xf3\x46\xfb\x8e\xad\xa0\x5c\xcf\xac\xf3\x30\xd6\x93\x50\xb0\x47\x89\x60\x3c\x6b\x87\x40\x78\x35\xf4\xca\x66\xc6\x80\x3c\xf2\x14\xbb\x69\xd7\x84\xde\x90\x1d\x86\x6c\xfe\x89\x52\x38\x60\xa6\x80\x61\xad\x07\x5b\xd3\x3a\xd6\xd9\x8a\x30\xc2\x4b\x84\x57\xf0\xb2\x78\x99\xa8\xdc\x00\x3c\xa9\x27\xa3\x3d\x5f\x5a\xfb\xcf\x60\x8b\x4a\x91\xb5\x39\x31\xbd\x17\xbd\xaf\xba\xb9\x41\x4b\xda\x6f\xed\x2a\x56\x66\x4a\xf4\x72\x64\x87\x7c\x01\x7b\x02\x64\x0a\x13\x41\x2b\x54\x5a\x8a\x43\xb4\xb3\x8b\xd8\x14\x43\x5f\xb2\xf3\x92\xa1\xc1\x31\x9f\xc3\xad\x51\x82\x6b\xa9\x3f\xd7\xdc\x31\xb5\x2d\x5a\xff\xe5\xa8\x33\xd3\x22\xb9\xc7\xad\xd8\xfd\xa1\x16\xc9\x11\x5c\x9a\x96\xa4\xae\x8b\x15\x1d\xef\x5c\x9c\x75\xc7\xbb\xf3\x50\x80\xf9\x79\xfd\x1a\x1a\xc2\x69\x39\xb9\xea\xc8\x72\xa1\xa1\x16\x2d\xaf\x4c\x06\x18\xc4\xbc\x4a\x50\xcb\x1f\xc7\x99\x99\x06\xda\x11\x55\xff\x19\xc1\xe6\xee\x3f\x84\x32\x73\xa8\x30\xb0\xab\x0c\xbd\xe8\x0c\xbb\x0e\x91\x11\x97\x97\x52\xf8\x5c\xae\x80\xd8\x35\x20\xfa\xdc\xa1\x60\x45\x14\x56\x20\x5c\x46\x5a\xd3\x1d\x72\x83\x8f\xb8\xbb\x18\xf4\x58\xa4\xeb\x93\xc2\x1b\x5b\x20\x7d\x66\xf0\x37\x39\x6b\x81\xaa\x2b\x76\x6e\xbd\xab\x55\xc3\x7d\x5e\xf1\xcc\x99\x2f\x0b\x83\x9a\x13\x48\x0d\x02\xfc\x33\x8e\xcd\x7f\x1b\x5e\xe6\x31\x6d\x16\xce\xe4\xd6\x47\x40\xe5\x6f\x42\xb0\xf3\x1a\x7f\xdd\x59\x2f\x7f\x4b\x15\x05\x60\xe6\x0a\x02\x96\xf0\xf1\x31\x86\xaf\xa7\x6e\x8f\xdc\x92\x3c\x78\x70\x77\x70\xdf\x16\x2f\x63\xc6\xa4\xea\xac\x05\x4b\x6b\x40\x7b\xc5\x68\x7c\xb1\xbb\x64\x24\x69\xce\xec\x0b\x47\xaa\xb0\xd7\xf1\x75\xe3\x0c\xb6\xad\xd2\x0f\x6d\x59\x22\x56\x4e\x6f\x29\x72\xe8\xca\x98\x11\xee\xd5\xd2\xd6\xb9\x17\x2f\xdc\x1d\xeb\x8d\x15\x36\xac\x64\x76\x0b\x86\x24\xac\xd0\xa4\x33\x49\xf8\x1a\xe1\xe3\xcb\xa2\xf8\xf6\x31\x4c\x68\xe0\x6a\xa9\xa5\x72\xb9\xcc\x14\x4f\x88\xae\x79\x61\xe9\xfc\x03\xbe\x71\x37\x94\xa3\xa9\x46\x8d\x0d\xd1\x1b\x58\xe6\x3c\x66\x34\xdd\xb0\x0e\xc6\x7d\x49\xce\x88\x60\x3d\xd3\xd1\x0d\x17\x5c\x8e\x26\x3e\x8d\x65\x0a\x51\xda\x2d\x69\x60\x09\x6b\xd4\x6f\xca\xd2\x6c\x68\xe2\x2d\x36\x2d\xca\xae\xd3\x47\xd1\x22\xf3\x9b\xa3\xc0\xf1\xd5\xc4\x48\x32\x06\x55\xc1\x66\x6e\x49\x53\x94\x1b\x2c\x3f\x65\xf1\x1f\x04\x2d\xaa\x82\x34\x0d\xf2\x6a\xe2\x1d\xcb\x5f\x5a\x3b\xbf\x0a\x2f\xad\x49\x7a\x69\xed\xfe\x76\x5e\x64\x7e\x4f\xc7\x22\x41\xd0\x3e\xec\x38\x65\xc3\x61\x32\x70\x0a\xf6\x90\x72\x3b\xc2\x21\x89\x9b\xe8\xf5\x3a\xbe\xca\x0e\x7f\x52\x5c\x96\x38\x76\xf8\x39\xe3\xe0\x5d\x1e\x96\xcf\x7b\xfa\xc8\x3f\x1c\xf0\xa2\x75\x18\x70\x47\x6d\x64\xf1\xc1\x96\x2a\x65\xf0\x41\xf2\xbf\x13\x3d\xf0\xef\x3d\xe7\x60\x8f\x10\x5b\xc2\x2b\xa2\x85\x3c\x84\xe0\x91\x36\x14\x2d\x94\x18\xc9\x73\x1a\x6f\x1b\xa2\xee\x3f\x57\x86\x92\x64\xde\xd3\x03\xc9\x90\x9e\xac\x17\x15\xb4\x9a\xd9\x75\x05\xc9\x27\x23\x3b\x16\x7e\xf2\xd3\x4b\xb1\xb5\x5b\x16\xdc\xe8\x7e\x12\x25\xf4\xe0\x65\x3a\x73\x9d\xfa\xe9\x29\x99\x87\xb4\xff\x27\x16\xd8\x06\x6f\xe8\x88\xb9\x83\xc4\x20\x6f\xd0\x57\xe8\x7a\x10\x89\xb0\x69\x43\x21\x22\x3f\xb3\x47\xf8\xac\x20\xbe\x43\x95\xa9\x83\xc1\xbf\x49\xf4\x9d\xec\xa0\xce\x75\x4f\x1d\x1c\x7a\xba\xf8\x57\x00\x00\x00\xff\xff\x8b\x5e\xf6\x48\x1c\x27\x00\x00" func contractsSequelmarketplaceCdcBytes() ([]byte, error) { return bindataRead( @@ -164,7 +164,7 @@ func contractsSequelmarketplaceCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/SequelMarketplace.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7b, 0x43, 0x9f, 0x8, 0x9f, 0x12, 0x99, 0x7b, 0x39, 0xe5, 0xed, 0xb7, 0x7, 0x39, 0x35, 0xf9, 0xe2, 0x2, 0xf4, 0xf4, 0x3, 0xb5, 0xd8, 0xde, 0x5f, 0x81, 0x7f, 0x15, 0x55, 0xf6, 0x4d, 0x4}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa4, 0x3, 0xf, 0x56, 0xd3, 0x30, 0x72, 0x52, 0x6d, 0xcb, 0x9b, 0xf6, 0x74, 0xc0, 0x74, 0xc2, 0xe7, 0x1, 0x65, 0xfd, 0xf7, 0xeb, 0x60, 0x2d, 0x66, 0x7a, 0x2f, 0x9, 0x4e, 0xe5, 0xe6, 0x2d}} return a, nil } @@ -188,46 +188,6 @@ func contractsStandardBurnerCdc() (*asset, error) { return a, nil } -var _contractsStandardExamplenftCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x3b\x6b\x73\x1b\x37\x92\xdf\xf5\x2b\x3a\xfc\x90\x23\x73\x34\x65\xe7\xb5\xbb\x2c\x33\x4e\x22\x59\x39\x5e\xd9\x5a\x97\x44\x3b\x57\xe5\x52\x79\xc1\x99\xa6\x88\x68\x06\x60\x00\x8c\x68\x96\x4b\xff\xfd\xaa\x1b\xf3\xc0\xbc\x48\xca\xbe\x5c\xdd\xf1\x83\x44\xce\xa0\x1b\xdd\x8d\x46\xa3\x5f\x38\xfd\xe6\xe4\x9b\x93\x6f\x00\x16\x6b\x69\x41\x5a\x10\x0a\xf0\xa3\x48\x37\x09\x82\xa4\xbf\x29\x2a\x27\x9c\xd4\x0a\xf4\x0a\x04\x5c\x24\x7a\x0b\x97\x5a\x3d\xb9\xc8\xd4\xad\x5c\x26\x08\x0b\x7d\x87\x8a\x30\x64\x56\xaa\x5b\x70\x6b\x84\x77\xdf\x82\x75\x42\xc5\xc2\xc4\x13\x7a\x33\x77\x84\x59\x69\x07\x1b\x61\x1c\x21\xa2\x51\x7a\xb5\x92\x91\x14\x49\x39\x16\x96\x99\x03\xe9\x40\x58\x9b\xa5\x18\x83\xd3\xb0\x44\x82\xb7\x32\x95\x89\x30\xf4\x60\xad\xb7\x90\x0a\xb5\x83\xcb\x8b\x85\x85\xad\xce\x92\xb8\xa2\x93\xd1\x46\xda\x20\xac\x32\x15\x11\xd1\x22\x91\x6e\x37\x09\x38\x8c\xb4\x72\x46\x44\x0e\x62\x8d\x9e\xa4\x0a\x9a\xd0\x5a\xbd\x59\x4b\xeb\x64\x24\x1c\xc6\x10\x25\xc2\x5a\xb9\xa2\x5f\x52\x33\x93\x76\x67\x1d\xa6\xb0\xd2\x06\xa4\xb3\x4c\xc5\x84\xf8\x8b\x71\x25\x15\x5a\x10\x44\x2c\x09\xef\xf2\x62\x01\x5b\xe9\xd6\x90\x4a\x25\x53\x91\x40\x8a\x4e\xc4\xc2\x09\xa6\xe6\xf4\xe4\x44\xa6\x1b\x6d\x1c\x0c\x2e\xb5\x2a\x64\xc9\xa2\x1c\x94\x6f\xde\x49\xdc\x5e\xa1\xd5\xc9\x3d\x9a\xea\xe9\xeb\x1c\x0f\xbd\xb5\x83\x93\x13\x11\x45\x68\xed\x50\x24\xc9\xa8\xe2\xee\xa5\x5f\xc2\xcb\x8b\xc5\x14\x9a\x13\xc0\xa7\x93\x13\x00\x80\xd3\xd3\x53\xb8\x2e\x44\xff\x46\xb8\xb5\xe5\xc7\x21\xbe\x04\x1d\x9c\xe9\x24\x41\x16\xe6\xb5\xd3\x46\xdc\x22\x0d\x9d\x42\xf0\xe3\x00\xd8\x9b\x6c\x99\xc8\xc8\x43\x55\xdf\x2b\x1a\xe8\x17\x6c\xd7\x68\x90\xd7\x2f\x95\xca\xa1\x01\xbb\xe6\xb5\x5d\x22\x58\xa7\x0d\xc6\xe5\xf0\xc5\x1a\x2b\x8d\xd9\x10\xd9\xbc\x1a\x7e\xe9\x8b\x39\x41\x98\x02\x10\xa4\x6a\xbe\x34\x68\x75\x66\x22\x04\xb7\xdb\x60\x27\xf5\xaf\x99\x88\x5e\x86\x4b\x62\x7e\x47\x88\xd6\x5a\x5b\x4f\xba\x12\xa9\x5f\x78\x62\x66\xcc\xea\xec\x48\xe9\x68\x1a\x88\x84\x82\xb5\xb8\x47\x56\x33\x1e\xa9\xf4\xb6\x44\xb4\xc4\x48\x64\x39\x1a\x9e\x7b\x25\x22\xac\x94\xd4\xe0\x9f\x99\x34\x48\xbb\x83\x36\x01\xa3\x01\xbb\xc1\x88\x94\xd3\x63\x23\xb4\xa9\x36\x6d\x7e\x4a\x6e\x3b\xb5\x61\x42\xf4\xe6\x1a\xd1\x25\x09\x19\x4f\xe1\xed\x5c\xb9\x1f\xbf\xaf\xc6\x10\xc1\x17\x46\xa7\x4c\xed\xb9\xb4\x9b\x44\xec\x4a\xfd\x86\x7b\x89\xdb\x5e\x74\x44\x2a\xc9\xd2\x48\x75\xdb\x3b\x28\x46\x1b\x19\xb9\xa1\xb5\x3a\x38\xd6\xad\xb3\x74\xa9\x84\x4c\xca\x91\x75\x32\x73\xd5\xb8\xd2\x3b\x91\x38\x89\x76\x3f\x9d\x16\x93\x95\xc7\x6b\x0a\x80\x29\xbc\xaf\x6d\xb9\x89\x47\xb5\xbb\xa9\x4f\xf4\x1b\x2a\x34\x32\x82\x58\x7a\xc3\x63\x76\x6c\xe7\x8c\x20\x33\x41\x14\xb0\x5e\x08\xdb\x3f\x63\x41\xd8\x14\x3e\x79\x4e\xa6\xf0\x8b\xda\x5d\x3b\x93\x45\xee\xa1\x9a\x4c\x2a\xe9\x86\xe5\x2f\xfa\x84\x32\x1d\xd7\xde\x74\x08\xb2\x3e\xa0\x25\xbd\xfa\xeb\xc3\x42\xa8\x8f\xdf\xcb\x42\x35\x74\x04\x9f\x6a\x60\x24\x83\x89\x8c\x61\xe6\xbf\x65\x99\x8c\xdb\xef\x59\xc9\x67\xcc\x6c\xfb\x65\xc0\x28\xcc\x42\xb6\xdb\x43\x4b\x96\x61\x56\xb1\xdf\x1e\x56\xb2\x0e\xb3\x4a\x0c\xed\x61\xa5\x36\xcd\x4a\xe6\xcb\x41\x0f\x75\x0d\x89\x0c\x0a\x87\x2f\xd3\x8d\xdb\x55\xc6\x31\x7f\xea\xcf\x5d\x7a\x15\x18\xce\x1a\xb4\x50\x31\x18\x74\x99\x51\x36\xb7\x02\x6c\xd4\x44\x92\x90\xb1\xa4\x5f\x82\xcf\xbf\x1d\x1b\x1a\xbd\x55\x7c\x36\xd5\x50\xfc\xfc\xa9\xb5\xf9\xab\xc9\x1e\x3a\x77\xd8\x2a\x53\xdd\x74\x0f\x47\xd3\x03\xf8\x1a\x6b\xec\x69\x87\xe7\x4f\xaa\xa3\x69\xd2\x8d\x59\xad\xdc\x62\xb7\xc1\x29\xd0\xdf\xe7\x3f\x07\xe3\x2f\x2f\x16\x3f\x0d\x47\xa3\x2e\x01\x87\x44\xd3\xc6\x66\xca\x6f\xd1\xb1\xb6\x12\xb1\xef\x09\xdb\x4d\x37\x51\xef\x6b\x0f\xe9\xc3\x53\xd7\x35\x3e\xb7\x73\x3f\x0d\x47\xe3\x63\x86\x97\x06\xe7\x58\x80\x97\xb1\x24\xf6\x8f\x1f\xff\xd1\xa1\x51\x22\x79\x7b\xf5\xea\x58\x90\xcb\x8b\x45\x25\xe7\x73\xe1\xc4\xe7\x01\x3e\x4e\x10\xd7\x68\xa4\x48\x8e\x1d\xbd\x60\x83\x79\xb4\x0c\xde\xbd\xfe\xd5\xc8\xf8\x16\xe3\xe2\xf9\x4f\xc3\x51\x0d\xf0\xe6\x90\xb2\x90\x9e\x18\xef\x64\x11\xce\xe1\x07\x56\x1f\xaf\x7c\xa3\xc0\x7c\xbd\x68\xda\xac\xad\x74\xd1\xda\xeb\xda\xa7\x16\xad\x91\xb0\xb8\x5f\x89\xa6\x2d\x18\xa8\x14\xb2\x13\x68\xd8\x09\x01\xe5\x01\x50\x5a\xc9\xb6\xe8\x8a\x4f\xed\x3c\x68\x1a\xce\x7e\xb0\xe0\x94\xa8\x53\xf6\x1f\x8b\xc5\x9b\x0b\x99\x60\x3f\x69\xf4\xc9\x4c\x32\x6d\xd8\xde\xde\xf1\xa3\xce\x37\xed\xa7\x7d\x02\x0e\x76\x51\xb7\x84\xbd\x07\x49\xae\x14\x79\x56\x90\x8a\x8f\xa0\xb2\x74\x89\x86\x8e\x6b\x0e\x2a\xd8\x92\x92\x11\x5d\xe6\xce\x68\x0c\x2b\xef\xec\x04\xf1\x43\x1f\x6e\xeb\xed\x32\xa1\x45\x4f\x0a\xac\x24\x26\x31\xdc\x8b\x24\xe3\x49\x2d\xb2\xf5\x56\x3d\x42\x20\x4f\x20\x87\x9c\xab\x95\x86\x19\x74\x32\x38\xf4\x6b\x3e\xc8\xad\x23\x7b\x17\xf9\xab\xc1\x38\xe7\x68\x5a\x1c\xac\x63\xa2\x67\x4a\x53\x76\x8b\x37\x98\xf3\x95\xb4\xae\x75\xd8\xe7\x88\x6f\x60\x06\xef\x03\xda\x6e\x8e\x57\xe1\x62\x59\xfa\x15\x25\x98\xff\x0b\x55\xa0\x34\x38\x8f\xd8\x62\x1e\xa6\x9f\xba\x5c\x90\x5f\x48\x59\x78\x26\x3c\x82\xb8\x12\xec\x00\x7d\xdd\x6e\xca\xe3\xc9\xac\x9f\x2c\x8f\x20\x34\x00\x1c\x0e\xd6\xce\x6d\xec\xf4\xf4\x34\xcf\x26\x3c\x51\x2b\x37\xd1\x6a\x95\xe8\xed\x44\x9b\xdb\xd3\xc1\x24\xd2\x2a\x12\x6e\x98\x8b\x76\xe2\xb4\x77\x19\x87\xa3\xd1\xf1\xa4\x76\x9d\x68\x7b\x09\x0e\xbc\x89\xdc\xea\x9f\xe5\x3b\x9a\xad\x7f\x11\x2b\xed\x75\x40\xc6\x6c\xf5\x83\x21\x87\x69\xfa\x5c\x8e\x8e\x3b\x2e\xfe\xd7\x99\x2a\xc9\x3a\x9e\xaf\xf2\x60\xef\x35\xcb\xf8\x31\x4a\xb2\xb8\xb0\xb9\x0b\xc9\x31\x6d\x0c\x2b\xad\xc9\x5e\xda\xb5\xde\x82\x76\x6b\x34\x90\x59\xb4\x64\xad\x3d\xca\x7e\x8b\xe6\xf1\xc5\x7e\x18\xd9\xae\x41\x85\x7a\x30\x86\xc1\x4a\xeb\x41\xb7\x0d\xe3\xc0\x92\xc1\x88\xf8\x96\x0d\xa6\x18\x6f\xa1\x3d\xde\x21\xfd\x98\xd6\x83\x81\x71\x39\xf7\xa5\x48\x29\x78\xaa\x93\x32\x3a\xe9\x13\x41\xc0\xba\xb4\x20\x20\x53\xf2\x23\x38\x99\xa2\x75\x22\xdd\x8c\x61\x8b\x45\x5e\x24\x15\xe6\x8e\xe2\x00\x4e\x31\x09\x88\xfd\x8a\x90\xdc\xe9\x08\xda\x24\xc2\xad\xb4\x49\x2d\xdc\x29\xbd\xe5\xa4\x59\x21\x42\xe9\x26\xbd\x2c\x57\xd3\x33\xa1\x2d\xbe\xf9\x69\x71\xf2\xd4\x64\xc9\xa7\x5b\x43\x0a\x35\x71\xdf\x7c\x35\x0e\x89\x9c\xc2\xe0\x5c\x38\x82\x34\xc2\x48\xb7\xdb\x73\x38\x55\xeb\x30\x11\xb1\x97\xe0\xb0\x41\x68\xbf\x40\x49\x79\x58\x92\x8c\xc5\x4b\x8b\x94\x81\xe2\x23\x3f\x73\xaf\x30\x56\xda\xaf\xf0\x15\x0f\x6b\xc9\xc2\x3f\x1e\xda\x48\x1b\x9c\xc2\xb3\xa7\x93\xa7\xf9\x29\xfb\xec\x29\x7f\xaf\xb9\x5a\x83\x33\x9d\xa6\x5a\x0d\xfa\x8f\xdf\x62\xb6\xfd\x32\x27\x8d\xed\x13\x36\x6b\x73\x43\xc8\x4a\x26\x95\x84\xeb\x0c\x1d\x2f\xec\x02\xae\x47\xca\xb9\x0d\xaa\x20\x8f\x3f\x67\xba\xbc\xf7\x5e\xf3\x30\x2f\xf2\xb4\x3e\xcb\x2c\xad\xf7\xbd\x6f\xe5\x3d\xfa\x04\xcb\xc6\xe8\x3f\x30\x72\xde\x45\xd3\x09\xe8\x7b\x34\x5e\xf5\xd7\x08\x4b\x3f\x11\xfb\x49\xd2\x82\xc1\x8d\x41\x8b\xec\xdc\x09\x0a\xbe\xfb\x66\x7d\x79\x75\xf6\xb7\x6f\x9f\xc1\x76\x8d\xaa\xc4\xe1\x34\xbc\x7c\xf7\x1a\xb4\xf2\xd9\xf0\x7b\x29\xfc\xfc\x9c\xdb\x04\xa9\x56\x46\x58\x8e\x19\x32\x53\x4c\x3c\xe9\xd5\xd0\xdf\xb0\x48\x5b\x7b\x8b\xfd\x24\xc1\x7b\x4c\x8a\x94\x5e\x0c\x76\x97\x2e\x75\xe2\xd7\xbc\xdf\xd6\x15\xd0\xaf\x18\x78\x76\xe8\x44\xd8\xeb\xae\xd7\x8f\x0b\x52\xa1\xbd\xc3\xf7\x1e\x1b\x87\x03\xb4\xf0\x33\x02\x61\xbf\x6a\xfa\x14\x2d\x0c\x2f\xba\x65\x29\x57\x35\x49\xbc\xae\x12\x33\x75\xe1\xb4\x83\xb5\x60\x35\xce\x74\xba\x29\xb2\xb9\x4e\xdf\xa1\xca\x97\xe3\xed\xd5\x1c\x96\xc2\x62\x4c\xab\x2e\xf8\x2b\x3f\xa3\x15\x2a\xc7\xc2\xfc\x7c\x0c\x1b\x2d\x73\x15\xd5\x20\xe0\x3f\xaf\xff\x79\x09\x2b\x99\xe0\x84\xcb\x0f\xfb\xa6\xde\x16\xf9\x6e\xc1\x00\xb0\xd3\xd9\xbf\xdd\x23\x64\x9b\x44\x8b\x98\xd4\x54\xc5\x9c\xd5\x5e\x6b\xcb\xf8\xad\x4e\xd1\x67\xcd\x9f\xf8\x14\x37\x45\x27\x44\x17\x05\x65\x41\xf2\x39\xca\xf1\xee\x9b\x7b\xfe\xe6\xe2\x7a\x0c\xd7\xdf\x8d\xe9\x28\x21\xa1\xbd\xbd\x7a\xc5\x62\x13\x52\x15\x45\x1d\x66\x25\x96\x06\x23\x97\xec\xc6\x80\x2e\xea\x3e\x48\x20\x57\x49\x92\x11\x89\x68\x06\x87\x5c\x41\x2f\xe8\xc2\x92\x9d\x0e\xf6\xa2\xcd\x8c\x7c\xc7\xa1\xd4\x0c\xda\x9e\x63\xe1\x53\x0e\x26\x7f\x58\x36\xb7\xbd\xa8\xba\xfd\xd7\x96\xae\xed\xdf\x29\xde\x2a\x37\x35\xee\x40\x0c\x4e\x1f\xbf\xa9\x3b\x40\xfd\x8b\xfd\xc0\x99\x91\xcd\x38\xfc\xed\xd5\x7c\x3f\xa5\xf4\xc9\x17\x64\x5a\x7c\x19\xd3\xca\x73\xdd\x8a\x96\xb8\x58\x2e\x83\x36\x4b\x9c\x25\x95\x12\xe0\xc5\x89\xaa\x2c\x00\x16\xa3\x48\x19\xd9\x24\x1d\x9c\x35\x3c\xac\xf6\xaf\xd5\x3e\x2c\x7b\x6c\x46\xe7\x9b\x07\xc0\xc4\xe2\x9e\xbd\x9e\xaf\x7f\x5f\x14\xfe\x70\xd2\xff\xab\x03\xd4\x0f\x78\x28\xea\x42\x70\x4e\xc7\x0b\x97\x10\xa7\xf0\x4f\x95\xec\xb8\x20\xc4\x65\xaa\xa5\x88\xee\xb6\xc2\xc4\x10\xe9\x74\x23\x9c\x5c\x4a\x5f\xa1\x84\xbe\xa2\x4d\x55\x0c\xaa\x6c\x7a\xb3\xb6\x06\x9f\xf2\xa9\x3b\x31\x54\xa3\x3b\xaa\x3f\xd5\xcb\xf1\xde\x09\x6a\x89\xe4\x7a\x8d\x83\x8e\xd4\x48\x2b\xf2\x37\xbd\xdd\xbb\x43\x55\x4f\x3c\xe7\x87\xae\xa8\x17\xde\x72\xdf\x55\xc1\xbf\x7c\x7d\xe9\x5f\x30\x3f\xf7\xc9\x92\xee\xac\xae\x30\xe4\xb6\x61\x7c\x79\xb1\xb0\x53\xf8\xf9\x93\x87\x9a\x42\x3b\x0b\x7d\x79\xb1\x78\x68\x54\x4c\x60\xd8\x59\x74\x28\x11\xc2\xf3\x27\x24\xc5\x6a\x41\x6b\x0c\xdc\xa2\xbb\xce\x36\x1b\x6d\x1c\x8f\xa6\x83\xce\x96\xd9\x78\x01\x89\xb4\xae\x90\x84\xe3\x77\x79\x36\x9e\x3d\x8d\x08\x25\x79\x22\xc4\xcb\xc6\xb5\xea\x3f\xad\x8c\x75\x6b\xa2\xe1\x68\x0a\x9f\xfc\x09\xfb\xab\xd6\x49\x33\xb1\x4e\x46\xd1\x16\x30\x0c\xd0\x18\x3e\x0b\x19\x63\xce\x6b\xa3\xdf\xf7\x04\x84\x37\x30\x03\x67\x1a\x3b\x3c\xd7\xfd\x3a\x86\x3e\xa9\x5d\xe5\x02\xda\xae\x91\xe3\x36\x6d\xb8\x96\x49\x87\x09\x79\x6d\xca\x6b\x01\x29\x06\x8b\x06\x63\x58\xee\x1a\xa5\xda\x1a\xbe\x5f\xc2\x1a\x6e\x99\xa5\xf3\xc0\x5c\xfe\x64\x7c\x79\x80\xf4\x47\x66\x5d\xe5\x9b\x66\x48\xb8\x63\x5c\x89\x2c\x71\xfb\x97\x40\xda\xe6\x0a\x0c\x5d\xe9\xde\x8c\xbc\x50\xbb\xcb\x08\x3c\xfd\x6c\xd6\x17\x61\xf7\x89\x89\xb6\x41\x6c\xc4\x16\x0c\xa6\xfa\xde\x97\x82\x48\x93\x56\x45\x85\x35\x2c\x6b\xab\x18\xfc\xa0\x66\x0d\xa8\xc9\x54\x6b\x53\xfc\x9e\x4f\xe3\x53\xde\xc5\xa4\xc3\xe2\xcb\xfc\xbc\xa8\xf3\x76\x57\x76\x68\x4f\x75\x68\x9e\x77\x7c\x9e\x3f\x69\x6c\xa7\x89\xe7\x65\x78\x87\xbb\x29\x54\x53\xb4\x8d\xf5\x8b\x17\xb0\x11\x4a\x46\xc3\x41\x20\xaf\xca\xfc\x4c\x0a\xd8\x29\x9c\xf1\xb2\x92\x02\x95\x02\xcb\x05\xc5\x76\x64\x7e\x0e\xfd\x8e\x43\x71\xd6\x54\x94\x84\xe9\xa6\x83\x60\x83\x09\x9c\xad\x31\xba\x63\x71\xdb\x6c\x99\x4a\x47\xda\x3a\x3f\xa7\x25\x48\xc5\x1d\x3d\xf4\xc5\x79\x69\x41\x2b\x0c\xb6\x7f\xb0\x76\x7a\xab\xec\x64\x30\x6a\x38\x25\x65\x5d\x8c\x25\xd9\xa7\x23\x31\x6e\xb4\xa5\x25\x17\x77\xdc\x64\x42\x6c\xb3\x43\x18\xc7\x35\x55\x28\x67\xb3\x81\x91\x6e\xd5\x11\x19\x8a\xc6\x7b\x0e\xb8\xe7\x80\x9c\x4b\x23\x76\xbd\x35\x92\x9c\x82\x21\x93\xd9\xab\x21\x4d\x23\x5b\x53\x11\xff\x85\x5c\xfc\xc6\xe6\x68\x81\x70\x2d\x98\x87\x4f\x64\x5c\x97\x17\xb1\x10\x7b\xa7\x5b\xe1\x36\xc7\x99\x33\x11\x9c\x4b\xdb\xb5\x8c\xd6\xe5\x8e\xe2\x76\xa3\x84\x9c\x77\x6c\xcd\xa5\x93\x78\xd1\xad\xc4\xef\x0b\x0a\x6e\x4a\xea\xeb\xb4\xc4\x68\x9d\xd1\xbb\x12\x45\x8b\xd2\xbc\xe5\x28\x66\x2b\xc7\x5d\x2a\xe8\x9d\xf7\x4d\x66\x28\xce\x20\x6d\x49\x76\x4d\xa8\x73\xcd\x6a\xce\x6c\x6a\x8a\x03\x4c\xd5\xd8\x93\xa9\x04\xad\xa5\x87\xcd\x2e\x90\x26\x16\x83\xc2\x6a\x16\xcd\x56\x28\xd6\x10\x4c\xa5\x2b\x5a\x11\xde\x6e\x62\xee\x70\xc2\x7b\x54\xae\x8a\x25\x9a\x48\xa4\xaa\xcf\xdf\x92\x9e\xc8\xdc\x9a\x79\xbf\xc2\x15\xcc\x60\xf8\x75\x43\x84\x24\x3c\x0a\xb0\x33\xb7\x6e\x9b\x24\x4f\xc4\x08\xbe\xee\x56\xa6\x17\xa3\xaf\x1a\xf4\x84\xb3\x4d\x32\x86\x5e\x18\xa1\xec\x0a\xcd\xb9\x70\x38\xa4\x07\x53\x3a\x44\xcf\x32\x63\x50\xb9\x5f\x13\x1d\xdd\x0d\x47\x93\x32\x85\x56\xdf\xeb\x81\x16\x92\x6c\x2a\xb1\x0c\xc3\x89\x7a\x0d\xf7\x2d\xba\xf9\x79\xe0\x07\x28\xbf\x85\x8a\xfe\x36\x7a\xc7\x86\x80\xa2\xb6\x56\x13\xd2\x41\x3f\x60\x7e\xee\xeb\xd6\xde\x28\xf7\x54\xae\x1b\x56\xf7\x0e\x77\xbd\xa7\xf1\x6f\x98\x37\xa2\x88\x54\x67\xca\x95\xe5\xae\xbe\x2e\xa9\x83\x04\xbe\x42\x75\xeb\xd6\x44\xe3\x5c\xb9\xa3\xc8\x4b\x18\xe2\x50\x45\xb6\x9c\x63\xa9\x8d\xd1\xdb\xcb\x8b\xc5\xf0\x43\xd0\x86\x34\x9a\xf6\xea\x4b\x37\x11\x1d\x2a\xd9\x27\xa3\x5f\x79\x46\x16\x04\x53\x91\xe7\x4e\x4c\xd9\x61\x96\x6f\xb6\x3c\x91\x34\x3f\x3f\x86\x81\xb0\x8d\x6f\xd8\xe0\x23\x7c\x37\x29\xbe\xb4\x18\xc9\x53\x1b\x6a\xe5\x60\xd6\xc5\x0e\xed\xb0\x23\x65\x12\xc8\x85\xd0\x31\x60\x37\x11\x8f\x8d\x80\x6a\x82\x7c\x74\xaf\x4b\xb1\x69\xac\x48\x83\xb6\x3c\x38\xa2\xf9\xa5\x36\xf0\xe7\x9c\xb4\x5f\xaa\x39\xa2\x23\xe6\xf8\xff\xd4\xf2\x02\x61\xa4\xf9\x39\x92\xee\xd6\xe5\x52\x1e\x5f\xd8\x6c\x74\x9c\x28\x6b\x0c\x3f\x46\xae\xa5\x4c\x73\xc4\x10\xae\x4f\x53\x36\x17\x79\x17\xb0\xa7\xb7\xb4\xd3\x49\xc2\xec\x94\x19\x42\xce\xa1\x54\x7d\xc0\x3e\x0e\x11\x14\x2b\x43\xa3\xcb\x39\x47\x7c\xd2\x52\xb7\xc0\xf4\xfb\xe0\xb0\xcc\xab\xb0\x73\x15\xa0\xbe\xe7\x84\x8d\xf7\x0c\x7c\x4f\xc0\x56\x26\x09\x2c\x11\x32\xcb\x33\x97\xc8\x8b\x4f\x8c\xf7\x98\xe8\x0d\x1a\x4b\x0b\xc1\x05\x1d\xef\xdd\x6c\x84\x11\x29\x3a\xe4\xc6\xe8\x8d\xb0\xb6\x58\xa8\xb0\x9f\x65\x04\x29\xba\xb5\x8e\x27\x35\xe2\xfb\x6c\x7a\x98\x25\xb6\x1d\x85\xc3\x17\x5d\x9d\x54\x9d\x5d\x54\x9f\xd5\x7e\xf4\xb9\xad\x47\x8f\xce\x3c\xdf\x1c\x52\x15\x16\x20\x79\xda\xb5\x76\xd1\x7c\xef\x04\x7d\x20\x93\xb6\x4e\xf0\xb2\x14\x5d\x44\x6b\x5f\xf9\x28\x4c\x4f\x8c\x56\x9a\x5c\x0b\x26\x6d\x35\x82\xaa\x6e\x50\x56\x28\x0a\x25\x32\xf8\x67\x86\xd6\x35\x81\x3b\x37\xdd\x71\x55\xe0\x17\xcd\x9a\x6f\x5f\xbf\x53\xd0\xeb\xc4\xcc\xd4\xcd\xdc\x97\xd5\xe6\x7d\xce\x3e\x1c\xd6\x2a\x81\xb5\x10\x75\xe7\x3a\x6d\xd8\xad\xcd\x87\x64\x67\xeb\x7a\x77\x72\x75\x13\x34\xa9\x37\x60\xab\x9e\xf5\x7d\xa0\x61\x96\x8d\x85\xf1\x75\x67\x40\xdb\xd9\xd9\x56\x61\x79\x25\xd5\x9d\xcf\xaa\x7c\x1e\x96\x4e\x6b\x5b\xe8\xf6\x14\x86\xab\xec\xf1\xc7\x58\xf8\xf9\x2b\x8e\xb4\xf0\xf3\xd0\x7e\xdc\x7e\x92\x13\x51\xd7\x9a\xcf\x50\xc9\x3d\xcd\x15\xbe\x1f\x3b\x96\x6d\x65\x7c\x4d\x4f\xbb\x15\x70\x25\x13\x7c\x7c\x87\x1c\x77\xc7\x95\x25\x12\x61\x2d\x3a\x3b\xd9\xe2\xd2\x4a\x87\x4f\x08\xa5\x9d\x44\x3a\x3d\xfd\x61\xf5\xe3\xb7\xff\xf8\x3e\x7a\x1a\xfd\x4d\xfc\x3d\x8a\xe3\x1f\xbf\xff\x6e\xf9\x2c\xfa\xfb\xb7\x4f\x1b\x2f\xc4\x0f\x3f\x44\xcb\x67\xd1\x3f\xbe\xfb\xf1\xc3\x45\xa2\xb7\x1f\x7e\xd7\x26\x4e\x85\xb9\x9b\xd8\xfb\xdb\xee\xfc\x48\x8f\x26\x31\xf7\x79\xa9\x5e\xa6\xe2\x16\x4f\xed\xfd\xed\xbf\x7f\x4c\x93\x36\x96\xde\x15\x3a\x2c\xfc\x6e\xb1\xe4\xd5\x6e\x32\x9e\x45\x7f\x5b\x05\x39\xe8\xa6\xb7\x5e\x6f\x5f\x34\x72\x2f\xd2\xfa\xe3\x55\xd4\x2e\x38\x39\x0d\x6b\x4c\x36\x1c\x4d\xe7\xa7\xac\x0f\x77\x15\x7e\x74\xf9\x55\xa7\x8b\xc5\xa4\x67\x46\xac\xba\x9d\x9a\xab\xfe\x88\x46\xa8\x41\x8f\xfc\xed\x9f\x99\x30\x38\x27\xc9\x4f\xfd\x62\x74\x8f\x5b\x0a\xa5\xd0\x1c\x1e\x67\x75\x24\x45\x62\xa7\x7b\x36\xf7\xc0\x6d\xa5\x73\x68\x06\x47\xb1\x93\x0f\x66\xe5\x24\x66\x3e\x2c\x29\xd8\x8e\xd6\x42\xf6\x15\x73\x1e\x0e\x68\xce\x17\xf6\x09\xfc\xe5\x3d\x02\x79\x33\x40\xd7\xc4\x7f\x41\x7f\x40\xa3\x1a\xdd\xe8\x0f\x78\x7b\x35\x9f\xc0\x3c\x28\xfb\x8e\x6b\xa3\x2a\xb7\x45\x5a\x48\xb4\xbf\xcd\xa6\x15\x27\x7a\xb8\x40\xcc\x65\xe4\xb6\xa6\x9c\x9e\x16\x97\xf0\x8a\xb2\xf1\xff\x58\x6d\xf8\x8b\x2a\xae\xf5\x6e\xd7\xcb\x8b\x45\xcf\x9e\x2c\x0a\xab\x83\xff\x7a\xfd\xe6\x55\xcf\x98\xc7\xd6\x4f\xcb\xba\x29\x77\xd3\x9c\x9e\x82\x45\xe7\xc2\x92\xa9\xb0\xf4\x8a\x1e\xdb\xa0\xb8\xe1\x9d\x7b\xe1\x1f\x65\x46\x86\x7d\xc0\xbd\x73\xe5\xd5\xd2\x43\x15\xf3\x52\x19\xca\x4b\x85\x5c\x43\xed\xb6\xef\x7b\x76\xdd\x43\xd3\x87\x2f\x42\xfa\xc0\x33\xbe\x2a\x6b\x76\x9c\xcb\x52\x20\xe2\x54\x2a\xd0\x86\x95\xc9\xad\xb9\x17\x21\xbf\xa0\xe9\x7b\x18\x28\x1e\xf4\x77\x37\x0b\x1c\x62\xe9\xad\x6d\x2a\x95\xe3\xb4\x6d\x19\x2e\x76\x79\xb0\xe1\x85\x35\x7f\x11\x2f\xbc\xa0\x76\x9a\xf7\xc9\xd1\x2e\xa5\xff\xe4\xa4\xe7\x28\x8b\x6e\x38\xfa\x19\xe4\x66\xf6\x47\xb4\x44\x3f\xc9\x13\x3f\x76\x17\x86\xc8\x9f\xce\xe7\xfb\xbf\x73\xed\xaa\x1c\x4e\xce\x5c\xdd\xb7\x0a\x65\x05\xa5\x2b\xb3\xe7\x5e\x56\xbb\x40\xc8\x3e\x79\x90\x41\x85\x59\x3b\xa7\x5a\x03\x68\xb6\xfc\xf1\x98\xc1\x0d\xcc\x6a\x68\x26\x6b\x94\xb7\x6b\xb7\x17\xd2\x37\x0b\x36\x01\xcb\xfc\x6d\x2b\xc3\xce\xf6\x6f\x23\x31\xe2\x10\xab\xb4\x7a\xb5\x98\xba\x68\x7d\xc4\x74\x89\x71\x4c\xeb\xed\x5b\xe2\x40\x2a\x6e\xd2\xe1\xd6\xb5\x1e\xaa\xb8\xab\x0e\x66\x30\x58\x0a\x33\x68\xcd\x9e\xe7\x20\x4a\x05\xac\xbd\xbf\x17\xe4\x48\x6c\x69\x49\xaa\x74\x45\x4b\x8b\x2a\x4d\xea\x6e\x1b\xa9\xe9\xd2\xde\xdb\x1a\x81\x52\x95\x5f\xdb\xa3\x02\xdd\x2a\xbf\xb6\x47\x55\x0a\x53\xf6\xb4\xd6\xc6\xf4\x15\xb1\x3c\xbf\xdd\xd9\x2a\xbe\xb8\x38\xaa\x6f\x65\xb8\xce\xdb\xdf\x88\xf9\xfc\x3a\x6f\x15\x76\xf6\xc6\x70\x30\x83\xd3\x3c\xdc\x2b\x4c\x64\xcd\xbb\xec\x43\x51\x85\x72\x84\xc1\x1f\xc8\x47\x20\x68\xdd\x06\xee\x9e\xdf\x0f\xab\xb1\x77\x56\x28\xc8\x59\xc7\xed\x63\x6e\xef\x13\xf7\xc5\xad\xde\x1c\x61\x09\x5e\x8f\x8c\xf7\xa5\xbc\x4a\x42\x45\x14\xe9\x4c\xb9\x49\x8e\x6a\x42\xd8\x87\xcf\x9f\x44\x41\x93\x87\xd3\xfb\x82\xe3\x51\x8d\xfa\x52\xbd\x73\xd7\x25\x12\x1b\xe1\x1b\x56\x3a\xae\x5c\xf7\xd0\x7d\x26\x36\x45\xab\x56\x41\x5d\x89\x46\xa2\x2d\x49\x95\xd6\x66\xfd\xe1\xee\x3e\x8a\x3b\x25\x50\x9b\x83\xc9\xb7\xeb\x61\x8d\xaa\x31\x08\xb7\x27\xd6\x1f\x75\xaf\x63\x7e\x1e\x3d\x66\x0d\xf3\x0b\xed\x35\x1b\xe0\xd1\x1c\xb9\x7c\x1e\x41\xb0\x74\x2d\x7d\x2c\x32\x9f\x0f\x27\xff\x1d\x00\x00\xff\xff\x6c\xb6\x54\xe9\xcf\x41\x00\x00" - -func contractsStandardExamplenftCdcBytes() ([]byte, error) { - return bindataRead( - _contractsStandardExamplenftCdc, - "contracts/standard/ExampleNFT.cdc", - ) -} - -func contractsStandardExamplenftCdc() (*asset, error) { - bytes, err := contractsStandardExamplenftCdcBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "contracts/standard/ExampleNFT.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xee, 0x18, 0xbe, 0x2e, 0xc1, 0xd4, 0x88, 0x60, 0xfc, 0xaf, 0x1a, 0xa8, 0x6b, 0x94, 0xb, 0x58, 0xba, 0xa1, 0x80, 0x75, 0xb4, 0x68, 0xb3, 0x7f, 0xd6, 0x52, 0x56, 0xc7, 0xc5, 0xf9, 0x94, 0x1c}} - return a, nil -} - -var _contractsStandardFusdCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x39\x4f\x6f\xdb\x38\xf6\xf7\x7c\x8a\x37\x39\xcc\x48\x98\xc4\xce\x0f\xf8\x61\x0f\x46\xdc\x4c\x9a\x34\xd8\xc3\x14\x5b\xb4\xe9\xec\xa1\x28\x76\x68\xe9\x39\xe6\x86\x26\xb5\x24\x65\xc7\x53\xe4\xbb\x2f\x1e\x29\xc9\x14\x45\x39\x6e\x66\x17\x58\x1f\x12\x9b\x7a\xff\xff\xf3\x89\xaf\x2b\xa5\x2d\xdc\xd5\xf2\x81\x2f\x04\xde\xab\x47\x94\xb0\xd4\x6a\x0d\xa7\x93\x69\xef\x74\x52\x94\xc5\xe9\x49\x03\xff\x1e\x2d\x2b\x99\x65\xbf\x71\xdc\x9a\x0e\xbe\x77\xda\x83\xef\x51\x4a\x23\x8f\x83\x78\x4a\x27\xac\x28\xd0\x98\x8c\x09\x91\x43\xa1\xa4\xd5\xac\xb0\x70\xf7\xf9\xd3\xed\x2c\x12\xff\xdb\xc9\x09\x00\x40\x08\x8f\xd2\x72\x2b\x70\x8d\xd2\xc2\x7b\x2e\x2d\xea\x0f\x5a\x3d\xed\xfe\xb6\x95\xa8\x3d\xf4\x74\x0a\xef\x36\xf4\xd8\xae\x98\x05\x6e\x00\xd7\xdc\x5a\x2c\x61\xbb\x42\x09\x12\xb7\x60\x89\xb8\x01\xa6\x11\xd6\x44\xa2\x1c\x72\x71\x04\x9c\x10\xc6\x71\x29\x33\xb6\x56\xb5\xb4\x33\xf8\x7c\xc7\x9f\xfe\xf2\xff\x79\xc7\xeb\x7e\x85\x60\xac\xd2\xec\x01\xa1\x62\x76\x05\x4b\xa5\xc1\xae\x10\x58\xb9\xe6\x12\x34\x1a\x55\xeb\x02\x07\x2c\x04\x5a\xb8\x26\x90\x4f\x1e\xf9\x03\xb3\xab\x19\x04\x3f\x92\x1c\x3e\xb4\x1c\x9c\xe0\xda\xfc\x14\x1a\x21\xc9\x23\x78\x7e\x14\xa7\xaa\x5e\x08\x5e\xec\x55\x49\x31\x82\x82\x55\x6c\xc1\x05\xb7\x2f\xf2\xfc\xe0\xc8\x79\x96\xfb\xef\x7b\x8e\xca\x32\x01\xa6\xae\x2a\xb1\x03\xb5\x84\x65\x6d\x4a\xe0\x12\xf0\x89\x1b\x8b\x32\x61\xb7\x0d\xd3\x60\x09\xeb\x93\x43\x6a\x1d\xd2\x51\x3c\x6f\x3e\x40\x11\xf7\x11\x8d\x12\x1b\xd4\x14\x57\x85\xe5\x4a\x1a\xa7\x53\x3f\x6e\x5b\x8c\x21\x2b\x8e\x5b\x58\xd6\x12\x1e\xd0\xde\x34\x71\xea\x50\xb2\xd6\xab\xf7\xbb\x0a\x67\x40\x7f\xaf\xf2\x19\x7c\xa1\x2f\x5f\xe1\x9b\x23\x44\x1f\x8d\xb6\xd6\x12\xbe\x74\x07\xf4\x21\xa0\xcb\x03\x39\x72\x77\x4f\xff\xdf\x64\xf9\xd9\x77\xa2\xdd\x72\x53\x09\xb6\x7b\x05\xe6\x6f\xac\x16\xf6\x96\x59\xf6\xdd\xb8\xf7\x7b\x4f\xbc\xc9\xf2\x0e\xf5\xab\xfb\xf6\x3c\x4c\x5f\xb2\xa6\xf6\x4e\x09\x2d\x9a\x32\xe8\x99\xb3\xff\xfe\x20\x9f\xc1\xb5\xdc\x7d\xb2\xba\x2e\xec\x55\x60\x64\xb3\xe5\xb6\x58\x75\xc0\xc1\x13\xfa\x14\xcc\xe0\xf1\x26\x9f\xf5\x70\x03\x17\xbe\x88\x9c\x0d\x30\xe9\xb3\xb4\x8d\x53\x66\x60\x50\x2c\x27\x2f\xab\x2e\xb9\x88\x15\x3f\xd6\xeb\x39\x30\xf3\xc3\x61\x49\x1b\xe0\xab\xb3\x11\x69\xbb\x40\xf8\xef\xc9\x1b\xc6\xda\x11\x12\x77\xe0\x57\x03\x91\xf3\xd7\x38\x7a\x6f\xae\xa1\xaf\xa9\x74\xad\xb1\xe4\x0c\xe6\xfd\x12\x31\x79\x4f\xa7\x69\x17\x3b\xc3\x71\x81\xb3\x08\xe5\xaf\xf7\xf7\x1f\xee\xb8\xc0\x71\xac\x5a\x8b\x19\x9c\x9e\x26\x9f\xe7\x69\x0f\x39\xe9\xbc\xa5\x13\x88\xf9\xb8\x46\x26\xad\x92\xc9\xbe\xb8\xc7\x5f\x87\xa8\xc7\x04\x7e\x63\xcc\xb4\x8a\x92\xad\x49\xcc\x3b\xa1\xb6\xf0\xf9\xd3\xed\x69\x5a\x23\xb3\x5b\x2f\x14\xd9\xe1\x6e\x1c\xa6\x44\x53\x68\x5e\x51\xfd\x9e\xc1\xe9\x2d\x56\x1a\x0b\x46\x1d\x7d\x83\xda\x70\x25\xa9\x71\xb4\x6c\x26\x70\x8b\x1b\x14\xaa\x42\xed\x3b\x3c\x2b\x37\xdc\x60\x09\x56\x81\x54\x16\x6a\x83\x60\x57\xdc\xec\x07\x0f\x26\x77\xb0\x56\x1a\x47\x98\xe3\x93\x45\x2d\x99\xf8\xfc\xf1\xd7\xd8\xc5\xef\xf6\x8f\xb2\xd3\xd3\x11\x97\x09\xf5\xa0\xcc\xac\xf1\xc2\x88\x0d\x54\xc1\x99\x30\x33\xf8\xf6\xfc\x9f\x09\xf2\x30\xc7\x5e\x59\xd2\x5a\x0a\x69\xdf\x9a\x70\x92\x98\x36\xbf\xa6\xd4\xbc\x1d\x62\x5a\x4d\x8d\x05\xf2\x0d\xea\x06\xcb\x0f\x1a\x0e\xe9\x63\xf3\x64\x2c\xe8\xbd\x6c\x43\xbc\xb7\x4c\x30\x59\xe0\x61\x76\xbf\x72\xf9\x88\x65\x50\x9e\x7e\xa4\x50\x9b\x38\x41\x07\xfd\x2e\xe6\xf9\x2a\xe4\x42\x23\xb3\xf8\x6e\x5d\xd9\x9d\x03\x6c\x87\x8f\x19\x64\xcb\x5a\x66\xf9\x0c\x7e\xf9\xd6\x9f\xc8\x1d\xd8\x73\xd4\xba\x12\x3e\xbb\x3c\x77\xec\x63\x06\xd9\x86\xfe\x06\x52\xfe\xd2\x93\x72\x98\xdc\xf4\x79\x1e\x1e\xbf\x22\xd8\xfa\x03\xc0\x6b\x82\x2d\xa0\x90\x0e\xb6\xde\xb4\xe7\x14\x0b\x4e\x0e\xe8\xf0\x1c\xcf\x61\x92\x8b\x70\x2e\x99\x4e\xc1\x59\xa8\xf9\x31\x98\x55\xda\x46\xe7\xa1\xa2\xbb\x89\x37\x6e\x7b\x43\x69\xc8\xad\x94\x28\x8d\x1b\xfe\x17\x3e\x32\xa9\x32\x31\xaa\x39\xda\x34\xb7\x8e\x0e\x3c\x9e\x69\x1b\x8c\xfe\x3c\xdb\xd0\xe5\x92\x5b\xce\x04\xff\x03\x7b\xc4\x99\xdd\xcb\xe8\x42\x82\x6a\xa1\xe5\x6b\xec\x70\x09\x31\x8b\x28\xe7\x51\x98\xb9\x46\xdf\x92\x9c\xb7\xc4\x03\x2b\x06\x92\x4c\xe1\x86\x09\xd1\xde\xa5\x18\x8d\x73\xce\x24\x5e\x39\xba\x6c\x2d\x6a\x2d\xa9\x32\x73\xe6\x44\xfd\xfd\x2d\xfd\xd6\x13\x3a\xce\xf2\xdf\x29\xaf\x56\xaa\x8c\x8d\xd0\xd6\x62\x3f\x1f\x12\x2c\xb1\x59\xb0\xe2\x31\x8b\xa5\xe5\xcb\xbe\xc0\x6f\xe0\x62\x72\x91\x48\x9c\x38\x4e\x60\x3e\x3c\x3a\xef\x91\xea\x91\x78\x3e\x64\xa2\x8b\xc9\x45\xca\x3c\x63\x57\x07\x7f\x65\x48\xdd\x0f\x82\xd8\x74\xc2\xbd\x70\xcf\x90\x5c\xe4\x2f\x31\x0e\x06\x6c\x37\xad\xfd\xc3\x89\x72\x78\x82\x8e\xc5\xf8\xee\xa9\x8f\xbe\x25\x25\xa3\x88\x79\x40\x4b\xf6\x56\xda\xa2\xef\x0e\x84\x63\x40\xb9\x7e\xce\x84\xd8\x35\xbc\x0d\x30\x10\xdc\x58\xca\x19\x57\xcf\xc0\x3a\x40\x77\x8d\x77\x2d\xbb\xad\xe8\x4e\xe1\xca\x8e\xe4\x52\x60\xf9\x04\x5f\xf2\xc3\x37\x2f\xf5\x5b\xa5\x44\x5c\x73\x69\x60\x32\x2d\x96\x43\x88\xc0\xe7\x71\x93\xee\x43\x7f\x71\xa1\xf2\x80\x8e\x59\x96\x7f\x85\x39\x58\x5d\x63\xca\xd4\x7d\xc4\xa3\x03\x8a\x9b\xa1\x56\x99\x0d\x6f\x49\x24\x68\xda\xbb\xad\x70\x49\xbb\x7c\xb1\x2e\x3a\xaf\xae\x60\xc9\x84\x19\x2d\x00\xd7\xe6\xd1\x50\x16\xba\x15\x87\xdb\x89\x40\xc1\x24\x2c\x10\xb6\xdc\xae\x4a\xcd\xb6\xcd\xda\xc9\xb9\x6c\xd3\x15\xd8\x03\x0a\x5d\x6f\x18\x17\xcc\x55\xd6\xbf\x37\x34\xe2\x75\xcb\x21\xad\x1a\x29\x2e\xe7\xe9\x74\xee\xc9\xdf\x09\x19\x9c\xc5\xe2\xf5\xeb\x7c\x2b\x91\x4f\xad\xed\xa8\x7c\x47\xb5\xf4\xa8\x90\xf4\x7e\x9e\x37\x8a\xa4\x54\xbc\x3c\xf7\x2d\xdf\xb7\xa2\x7d\x45\xf7\x18\x23\xa9\x07\x25\x56\xca\x70\x7b\x40\xd5\xae\x64\x34\xa0\x19\x79\x6e\x4c\x97\xb8\x14\x53\xae\xf8\x44\xbd\x3c\xf7\x2e\xa7\xdb\x5c\x30\x7a\x1c\xad\xfa\xcf\x9e\x4e\xb2\x12\xf7\x9e\x44\xc5\x17\xfc\xe5\xc0\x6a\xb5\x8b\x22\x2d\x0a\xda\x78\x60\x02\x26\x84\xda\x1a\x37\xfb\x53\x77\xa6\xdb\x41\x63\x61\xe6\x56\x84\x1e\xca\x95\x9e\x15\xa3\xca\xf4\x07\x6a\x35\xe8\x8d\xd3\x03\x16\x1d\xcc\x68\xc7\xc6\x48\xe7\x72\xf8\x73\xb3\xde\x73\x34\xeb\xc4\x84\xc6\xc6\x9e\xa4\xf0\x11\xd3\x63\x74\xa9\x74\xbc\x8b\xe9\x88\xc0\x7c\x9e\x92\x7d\x06\xa7\x9f\x65\x57\x16\x83\x26\x00\x1a\xff\x55\xa3\xb1\x58\x9e\x8e\x4f\x77\x63\x39\x72\x31\xb9\xc8\x23\x53\xf8\xfd\xe4\xf8\xc0\xe7\x9f\x47\xc3\xdd\x9a\x4b\x7b\xdf\x9f\xe1\x02\xf7\x4f\xa7\xdd\x8e\xd1\x87\x0d\x81\x9b\x60\xdd\x7c\x06\xac\xf4\xc3\xe1\x9a\xa2\x8d\xca\xa7\x0d\x96\x9f\x67\x21\x25\x26\xcb\xae\x29\x86\x08\x05\x13\x82\xcb\x07\x77\x77\xc5\x27\x3b\x39\x26\xb3\xf7\x62\x27\x6a\xd6\xde\xfc\x91\xab\x8e\x19\x9f\x7e\x4e\x15\x2c\x5c\xf3\x91\xc5\x79\x5c\xab\x8e\x70\xdd\x48\x79\x4b\xec\x15\x3b\xd7\x39\xcf\x2d\x59\xe7\xc4\x60\x09\x1d\xa8\x18\x1b\xc9\xa0\xf5\xe0\x37\xdd\x62\x3b\x2b\x58\x35\x83\xfd\xef\xcb\x1f\x3d\xc4\x9b\x74\x30\xed\x17\xf0\x8d\x2f\xa6\x53\xf8\xd8\x0a\xa5\x16\xff\xc4\xc2\xba\xeb\x01\xb9\x8f\x05\xfb\x73\x1f\x2c\x4d\x07\xad\x9b\x45\x05\xf9\x2c\x08\x9d\x49\x4b\xf0\x7e\x85\x7b\x4d\xf7\x73\x51\x40\x4d\x63\xa5\xd1\x20\x85\x5e\x43\xb3\x44\x81\x94\x4d\x8b\xdd\xfe\xad\x44\x4b\x8f\x4b\x50\xba\xf4\xe5\xaf\x96\x5c\x30\x8b\xba\x99\xc8\x36\xea\xd1\xbf\x1d\x71\xf1\xb6\x67\xc0\x97\x20\x11\x4b\x2c\x27\x2f\xa5\x8f\xb3\xc8\x2c\xe9\x86\x5e\xac\x7b\x0a\xd4\x0f\x72\x30\x0a\xa4\x5a\xa8\x72\x07\x28\x0c\x3a\x15\x0a\x55\xed\x9a\xe0\xef\x84\xa0\xfc\xa8\x0d\x02\x0f\x52\xa0\x47\x87\x2e\x54\xeb\xc8\xa1\x49\x67\x5e\xf5\x64\xb9\x96\x3b\x25\x1b\xb6\x4c\x08\x67\xdd\x33\x58\xd4\x16\x94\x14\x81\xfd\x3c\x84\x0f\xd9\xa6\x56\x74\xd2\x71\x34\xbd\x5c\x36\x4d\xae\x53\x19\x33\x3b\x63\x71\x4d\xe9\x6b\xac\x66\xdc\x65\x37\xa7\x9b\x21\x2c\xd0\xdb\xd9\x5d\xae\x42\x57\x0d\x14\x7c\x5d\xcc\xa6\xe6\x90\xd8\x40\x30\x27\x2d\x0e\x0c\xa2\xf1\xfb\xb6\x3f\x53\x60\xf6\x5d\x2e\x29\xcb\x0f\x3d\xe0\xc9\x42\x69\xad\xb6\x59\x1e\x1d\x0f\x59\x1f\x18\x88\xdc\x5d\xf8\x58\x43\xb4\xab\x02\x48\x34\x52\xf7\xd6\x8e\x93\x07\xad\xd2\xed\xe1\x23\x56\xd6\xbd\x5b\xa2\x5b\xeb\x96\xe9\xd2\x40\xa1\xd6\x15\xb3\x7c\xe4\x3d\x59\x97\x2d\x3d\x72\x74\xbb\x38\x49\x4a\xeb\x24\x8d\x5f\x18\xc2\xbc\xbf\x7d\xbb\xee\xb2\xbb\x43\x49\xbe\x8b\x23\xbc\x60\x8f\x16\x97\xb0\x14\xf2\x01\xae\x21\x7a\x1f\xbf\xdf\x41\xfe\xef\xe2\x82\xa6\xb7\x0e\xc4\x6d\xa7\x7d\xfa\x5c\x9e\xf7\xf3\x29\x78\x97\xe4\x08\xb1\xa2\x20\xc7\x4e\x1a\xb6\x13\xc3\x36\x98\x5d\x9e\x7b\xec\x33\xb0\x6a\x96\x36\x50\xde\xe7\xd6\x8d\xab\xe9\x7e\x13\xcb\x9c\xf7\xaa\xc3\x4d\x38\x20\x52\x60\x37\x53\x22\x55\xa3\xaa\xb6\xc0\x2d\x15\xd4\x46\xc2\xa3\xc4\x77\xe2\x78\xe9\x87\x4b\xd4\x11\xe6\xcd\xfb\xd9\xb0\x83\xf8\x0a\x13\x8c\xac\xf8\x54\x29\x83\x26\x38\xee\xda\xa2\x19\xda\xe3\x86\x55\xed\x40\xde\xca\x19\x56\xb3\x4e\x68\x6e\x4c\x1d\x2d\x40\x7b\xb9\x34\x54\xa1\x7b\x3c\xe2\xcd\x1e\x1b\xa7\x98\x59\x65\xad\x4c\x67\xc0\x6c\x72\xdd\x7b\xd8\x30\x37\x69\xc3\xfc\x64\xa0\xdd\x32\x53\xd5\x2a\xfc\xf2\xa1\x4d\xcc\xd6\x1e\xed\x86\xe1\x7f\xcc\x24\x81\x58\x43\xab\xb4\x6a\xb5\x73\xc9\xf3\xc9\xbf\x03\x00\x00\xff\xff\x45\xec\x27\x6b\x0b\x22\x00\x00" - -func contractsStandardFusdCdcBytes() ([]byte, error) { - return bindataRead( - _contractsStandardFusdCdc, - "contracts/standard/FUSD.cdc", - ) -} - -func contractsStandardFusdCdc() (*asset, error) { - bytes, err := contractsStandardFusdCdcBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "contracts/standard/FUSD.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x7a, 0x85, 0x49, 0x20, 0x68, 0x3f, 0xd, 0x54, 0x93, 0xbf, 0x37, 0xaa, 0xa5, 0xf3, 0xc9, 0xa1, 0x8, 0x1d, 0xec, 0x67, 0x6b, 0xc7, 0xf7, 0x11, 0x4e, 0xbd, 0x36, 0x50, 0x63, 0x98, 0x2}} - return a, nil -} - var _contractsStandardFlowtokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3a\x5b\x6f\x1b\x37\xb3\xcf\xf5\xaf\x60\xf5\x90\x4a\xa8\x23\xfb\xa4\x49\x9a\x0a\x76\x1c\x27\x8d\xcf\x09\x90\xf4\x14\xa9\xd3\x1e\xa0\x28\x1a\x6a\x77\xa4\xe5\x31\xb5\xdc\x8f\xe4\x4a\x56\x03\xff\xf7\x0f\x33\x24\x57\xe4\x5e\x6c\x39\x6d\x81\xef\xa1\x7a\x48\xac\x15\xe7\x3e\x9c\xdb\x8e\x58\x55\x4a\x5b\x76\x51\x97\x4b\x31\x97\x70\xa9\xae\xa0\x64\x0b\xad\x56\x6c\x34\x3d\x4a\x9e\x4e\xb3\x3c\x1b\x1d\xf8\xf3\xef\xc0\xf2\x9c\x5b\xfe\xb3\x80\x8d\x69\xce\x27\x4f\x93\xf3\x09\xa6\x7e\xe0\xe1\x23\x0e\xd3\x01\xcf\x32\x30\x66\xcc\xa5\x9c\xb0\x4c\x95\x56\xf3\xcc\xb2\x0b\xa9\x36\x04\x31\x6b\xc9\xf0\xe9\xe0\x80\x31\xc6\x8e\x8e\xd8\xa5\xb2\x5c\x32\x53\x57\x95\xdc\x32\xb5\x20\x10\x66\xf1\x90\x61\xa2\x64\x70\x2d\x8c\x85\x32\x03\x3a\x1f\x13\x59\x73\xcd\x2c\x02\xff\x44\xb0\x33\xf6\xe1\x42\x5c\x3f\x7d\xdc\x20\x7e\xbd\x86\xd2\x32\x5b\x70\xcb\x84\x61\xb0\x12\xd6\x42\xce\x36\x05\x94\x01\x3d\xd7\xc0\x36\xc2\x16\xb9\xe6\x1b\xaf\x56\xce\x7e\xe6\xb5\xb4\x1d\x62\x40\xc8\x88\x77\xf3\x4b\x00\x19\xf3\x95\xaa\x4b\x1b\x28\x1f\x12\x8a\x19\x3b\xcf\x73\x0d\xc6\x9c\x4d\xee\xc9\x4a\x0e\x95\x32\x02\x7f\xb1\x6a\x2f\x46\xbe\x0f\x00\x1d\x46\xac\xba\x27\x1b\x25\x6c\x62\x56\x56\xa2\xb4\x90\xdf\x4a\xfc\x1d\x1d\x69\x51\xde\x8b\x16\x27\x6a\x44\x42\x33\x0d\x46\xd5\x3a\x03\x3c\x95\x69\xe0\xc3\x64\x89\xa0\x7e\xe5\xce\xe0\x0f\x6a\x03\xf9\xf9\xe7\x92\x9f\xd7\xba\xbc\x17\xf9\x97\x04\x10\xc8\xef\x28\xed\xcc\x74\x74\xd4\x50\xe7\x59\xc1\x6a\x03\x9a\x19\xab\x34\x18\xc6\x4b\x26\x4a\x63\x79\x99\x01\xfa\xb8\x2a\xe5\x96\xd9\x02\x1c\x30\xba\xb9\x2d\x40\xb8\xd3\x7c\x09\xcd\xd5\x28\x80\x2d\xea\x32\xb3\x42\xb9\xcb\xb0\x03\xe1\x65\xce\x96\x6a\x0d\xba\x84\x9c\xcd\x1d\xb2\x4a\x03\x3d\xaf\x94\xb1\x78\x05\x73\x41\x80\x01\x9b\x28\x5b\x77\xd0\xf9\x5f\x01\x5b\x32\x79\xc6\xa5\x84\x7c\x1a\xd3\xce\x0a\xc8\xae\x0c\x2b\x78\x55\xa1\xde\x2c\xd3\x75\x69\xc5\x0a\x08\x12\xd6\xa0\x19\x6f\xf8\x23\x05\x26\x28\x02\xa6\xf7\x5e\xc5\xf8\x7b\xe9\x44\x9f\x43\x50\x76\x90\x0a\x23\x06\x5c\x5b\x54\x4e\xf8\x4a\x01\x84\x2c\x88\x3c\x06\x6c\xee\xa2\x2c\x44\x49\xb0\x87\xcc\x28\xfc\x59\x93\x01\x4b\xc5\x36\x7c\xcb\x16\x0a\x19\x5b\x71\x29\x32\xa1\x6a\xe3\x0c\x61\x95\x27\xe9\x14\xd8\x68\x45\xd5\x9e\xa8\x28\x19\x17\x7a\xca\xce\x99\xa9\x20\x13\x5c\x7a\x87\xdb\xb9\x48\x09\x90\x1b\x44\x34\xdf\xb1\x60\x15\x39\x72\xc0\xb6\xbb\x46\x89\x16\x62\x6f\x6a\xd0\x11\x1f\xad\xb8\x38\x75\xd6\xf5\xd1\xd1\x23\x2d\x94\x44\xba\x05\xb0\x39\x97\xc1\x85\x38\x89\x65\x3c\xb5\xe6\x78\x3b\x40\x7a\x88\x34\x38\x36\x0e\x21\xac\xe0\x52\xfc\x01\x09\x72\xb4\x73\xe0\x91\x54\x86\xd6\x45\xb3\x37\xb0\x08\x38\x6e\x61\x9e\xb0\x4f\xcd\xef\xf8\x31\x20\x17\xd3\x80\xf2\x34\x20\x6f\x8e\xdc\xc4\x9c\x1c\xb1\x57\xe4\x39\xe1\x7e\x2e\xbc\x4a\x9c\x70\x68\x59\xba\xad\x39\x5b\x0b\x4e\xac\x7e\x74\x97\x71\x8a\x8f\xc7\x93\x8f\x6c\x05\xb6\x50\x79\x5b\x09\xc1\x89\x26\x88\x90\x50\x20\x99\x39\xcf\xae\xc6\x6d\x6e\xc5\x22\x65\xf8\x39\x3b\x9e\x1e\xb7\xce\xe0\xa7\xc9\x67\xd3\x28\xf3\xb0\xd3\x81\xe7\x0f\x13\xa4\x09\xb2\x9b\xdb\x94\x75\x3c\x3d\x1e\x52\xd4\x12\x2c\x22\x57\xda\x42\x4e\xbe\x72\xb9\xad\xc0\x30\x55\xa1\x95\xb8\x94\x5b\xa6\xc1\xd6\x1a\xc3\x38\x93\xc2\x90\x6f\xaf\xc9\xa7\x2c\x1d\xf4\xf7\x49\x18\xa6\x21\x03\x41\x77\x38\xcb\xa0\xb2\x03\x2e\x24\x60\x43\xda\xeb\xa7\x3b\x9e\xcc\xd8\x27\xfc\x6b\xc6\x5e\x2a\x25\x6f\x5a\x1a\x73\xac\xb0\x4f\x24\xde\x12\x08\x06\x41\xac\xae\xe1\xa6\x4f\xc2\x5e\xd2\xc2\x74\x29\x8f\x2d\x11\xc5\x3f\x27\x8e\x76\xd7\xa0\x74\x86\x9d\x9e\xb2\x94\xfc\x84\x7d\x0a\x8c\x21\x1f\xec\x86\x81\x34\xb0\x7b\xb8\xe0\xf8\xb5\x97\x3d\x34\xc0\xb9\xb9\x32\x88\x1d\xdd\xd0\xe5\x3e\x0a\x6b\xf3\x4e\x25\x41\x4a\x5e\x37\xc9\xe1\x16\xf1\xce\xd7\x5c\x48\x4e\x21\x20\x94\x16\xed\xb4\xda\x2b\xa3\x67\xd8\x73\x71\x72\xda\xef\x6d\x09\xff\x0d\x93\xd1\xb3\xf8\xe7\x8b\x10\xcd\x9d\x9f\xf0\xab\x90\xbb\x2c\x2c\xd1\x55\x1c\x29\x4e\x0f\xb9\x5e\xd6\x2b\x28\x6d\x0c\x8f\xe9\x27\x90\xf0\xce\xe6\x61\xbc\x4e\x7c\xd8\x9b\xc6\x40\x6f\xac\x0f\xcd\xc6\xe7\x66\x0b\x58\x96\x72\xbd\xf5\xc9\x2e\xa4\xf1\xda\xb8\x88\x8b\x01\x31\x46\x80\x68\x57\xaa\x84\x6d\x73\x72\x0e\xa2\x5c\x32\xab\x79\x69\x16\xa0\x35\xe4\x53\xa4\x12\xae\x06\x9e\x2f\x61\x23\xb7\x31\x92\x90\x90\x3c\x49\x95\xa4\x25\xc2\xeb\xd2\x1b\x66\x1c\xd1\x18\xbd\xa9\xd9\x62\x54\xe8\x50\x1b\x4c\x4a\xd3\x3e\x35\x7b\x2f\x48\xe3\x7e\x30\xbc\x8b\x55\x9b\x41\x37\x78\xf1\xa9\x27\x5f\xb4\xef\x5d\x2b\x9c\x24\x5f\x1f\x7a\x83\x1c\x24\x10\x68\x05\xe7\xd3\x6a\x83\x65\x91\x70\x4a\x32\x96\x5f\xa1\x22\x79\x96\x21\xcc\x21\xcb\x15\x2b\x95\xa5\x7a\x2a\xcd\xd3\x21\x1f\x52\xad\x64\xda\xb8\xe9\x2e\x08\xca\x9d\x05\xc8\x8a\xe4\x73\x25\x0b\xe8\x85\xd2\xab\x90\xd4\xf0\x11\x54\x2a\x2b\x9c\xe9\xa8\x7e\x61\xaa\x02\xcd\x77\x95\x4c\x84\xf6\xb5\xc0\xd4\x8f\x39\xff\xd0\x17\x69\x92\x9a\x05\xcc\x8b\xa6\x50\xb5\xcc\xd1\x44\x15\xdf\x92\x0c\xd6\x42\xe9\x7c\x9b\x6c\xdb\x46\xd6\x6f\x8f\xd2\x4b\xc4\x78\xb9\xc5\xda\x62\x0e\x19\xaf\x0d\x26\x4c\x65\x9c\xf8\x5c\x94\x6d\x54\xab\x3a\x2b\xd8\x4a\x61\x51\xa5\x56\x95\x86\x02\x4a\x23\xd6\x80\x69\x8a\xda\xa6\xf6\xf9\xf3\xdc\x95\x6a\x18\xbf\x0f\x91\x37\x03\x81\xec\x46\x48\xe9\xfe\xae\x29\xba\xcf\x81\x69\x58\xa9\x35\xe4\x51\x94\x69\xac\x80\xe4\x24\x58\x88\x3c\x9b\x35\xc5\xdf\x82\xaf\x95\x0e\x5a\x4e\x2b\xc1\x1e\xab\x89\x05\x93\x60\x19\x77\x4d\x44\xf0\x22\xf2\x8e\xb3\x69\x78\xda\x4d\x90\x62\xd1\x80\x7c\x79\xca\x8e\xaf\x17\xcf\xf2\xa7\x70\xfc\xe4\xd9\xd3\xf9\x31\x7f\x74\x9c\x7d\xcb\x1e\x3c\xe8\xc0\xe0\x9d\x48\x60\x1e\x3f\x79\xf4\xed\xb7\xdf\x7d\x03\xf0\xf4\x19\x87\x1c\xf6\x81\xf9\x0e\x32\xfe\x68\xfe\xcd\xb3\xf9\x7f\x3d\x9b\x3f\xc9\x17\x7b\xc1\x3c\x7b\xfa\xe8\xf1\xfc\xc9\xa3\xc5\x77\x79\x9e\xe5\xc7\x8f\x79\x07\xa0\x2b\x1e\x7e\xc8\xf9\x87\x3a\x41\xf7\x7f\xe8\x04\x3d\xb9\x49\x07\x4f\x9a\xfe\x43\x0a\xea\x1c\xbb\x07\xa9\x52\xc8\xc9\x2d\x15\x86\xcf\x15\x27\x0f\xe3\x22\x78\x57\xc3\x39\x5c\x93\x81\xa4\xe1\x83\xdc\x7d\x72\x86\x0f\xa3\x6a\xfe\xff\x90\xb5\x13\x06\x65\x09\x9e\xe7\x26\x29\x46\xad\x69\x2a\x50\x1f\x7c\xa3\x6a\xb7\x89\x4c\xa6\x3f\x7f\x08\xc3\x7c\x43\x88\xc0\x39\x18\xab\x95\x6b\x8a\x0c\x12\x74\xcc\xec\xee\x2e\x44\x5d\x9b\x47\xb2\x41\x1e\xa3\xcc\x83\x39\x06\x9a\xeb\xe2\x6b\x7a\xea\x8a\x08\xf4\xab\x1d\xb7\x05\x4f\x04\x99\x03\x94\x78\x23\x4d\xbd\x82\x9c\x44\xa5\xfe\x64\x41\xe1\x20\x24\x0d\xe2\x2f\xb4\x4a\xac\x55\x1a\x60\x06\xf0\x2a\x1f\x3b\xe3\xf6\x47\xfd\x76\x11\x8b\xf7\xd5\xd5\x7a\x27\x0f\xfd\x34\xc3\x7c\xc9\x5e\xec\x6a\xd3\x54\x68\x76\x47\xa6\xf8\xda\x21\x6b\x0a\x8a\x7f\x12\x46\x8a\x2c\x35\x49\x33\x8b\xf9\x27\x61\xfc\x93\x30\xd2\x4f\x14\xc5\xbb\x13\xbb\xe4\x8e\xb9\xc1\xdd\x5f\x98\x35\xf6\xa2\x77\x47\xea\x48\x20\x5a\xdd\x29\x7e\x42\xb4\x4d\x7b\x9d\x56\xdb\xf4\xdf\xe8\x1a\x52\x92\x2b\x85\xe9\x31\x73\x13\x66\x81\x2e\x88\x79\xc1\x4d\xb2\x9a\x70\x15\xc3\x27\xb8\x5e\xf8\x64\x76\x8e\x29\x45\x73\x9a\x1a\xbb\x36\x98\x82\x0a\x55\xfe\x05\x24\x78\xd7\x34\xa8\x66\x97\xae\x27\x93\x35\xb8\x7b\x32\x07\xd7\x53\xcc\xb7\x09\x81\x9d\x64\x6b\x90\x18\x4d\x28\x10\x5d\x95\x6a\xc3\x36\x85\xc8\x0a\x56\x71\xcd\x57\x60\xdd\x58\xa9\xe2\xc6\x84\x94\xa5\xc1\x28\xb9\x06\x14\x6c\x3c\xf1\x63\x89\x69\xaf\x20\x43\x5d\x36\xe9\x04\x9b\xe4\x5f\x51\xa4\xdf\x7a\x3b\xbe\x5d\x44\x5f\x82\x7d\xe5\xef\xb2\x03\x0c\x93\x1b\xd7\x94\x27\x96\xed\xb3\x48\x6a\x0b\x17\x21\xf6\x30\x00\xc9\x4f\x6c\xcf\x28\x25\x22\xb5\x10\x28\x72\x30\x42\x7b\x95\x4f\xfb\xed\xc6\x8c\xd5\x75\x66\x6b\x8d\x0a\xab\x34\x60\x8e\x0e\x56\xd3\xf0\xaf\x1a\x8c\xed\x43\x30\x98\x2c\x63\xad\xff\x1e\xd8\x72\xa3\x81\xf3\x72\xfb\x13\x11\x3b\xeb\x6f\x9e\x77\xaa\xf4\x48\x62\x75\x76\xb5\x79\x48\xd8\xdd\x57\xfc\xab\x57\xbb\x6d\xf6\x5c\xc9\xf5\x7a\x55\xd9\xad\x2b\xbb\xf6\xed\xe3\xee\x28\xda\x8e\xa7\xc7\x31\xfd\x88\x8b\xa6\x9d\xdd\x11\x6d\x0d\x65\xd3\xa2\x2d\x6d\xbf\x5d\xb5\x44\x29\x97\xc7\x45\xd8\x1f\xa0\x55\x33\x86\x2d\xf3\xa6\x9d\x16\xbb\x76\x99\x4b\x89\x86\xf4\x6d\xf3\x94\x9d\xbb\xe1\xeb\xaa\x36\xae\x7d\x76\xe9\x27\xcc\x8c\x63\x64\x34\x28\xf7\x1e\x60\xdd\xb4\xaf\x7f\x38\x8e\x0f\x94\xce\xdd\xdd\xa3\xa2\xcf\xfd\xde\x20\x73\xa5\x87\x9f\xd3\x72\x37\x46\x0c\xd3\xae\x50\x57\x19\x3f\xf3\xf5\xf3\x53\x1a\x8e\x0d\x4e\x6c\x7b\x6d\xb8\x0e\xa3\xa8\xc6\xd5\xda\x85\x56\x64\xcc\x7d\x0d\xd9\x98\x8f\xae\x67\x3c\xc3\xa3\x11\x47\xb8\xab\x14\xcd\xa2\x51\x5e\x93\xce\x8d\x1b\x94\x99\x8e\x08\x71\x84\xb9\x2d\x60\xe0\xbf\x67\x4d\xf0\xe9\x4a\x40\xcf\x4f\x6e\x79\x17\x78\x71\x89\xff\x3f\x1f\x4f\x0e\x3b\x69\xe9\x6e\xd0\xef\x85\xa9\x24\xdf\x7e\x26\x34\x29\xf5\x7b\x6e\xf9\x67\xc1\x5f\xee\xe6\xb6\xcf\xc7\x93\xdf\x7a\xcc\xb1\x4f\xb4\x3c\x6a\x6e\xd8\xbd\xa3\xe4\x9f\x8a\x90\x47\x03\x6e\x7b\x77\x50\x23\x8b\xc7\x61\xed\xb6\xc0\x69\x36\xc2\x66\x45\x73\xb8\x15\xae\x32\x6e\x60\x1f\x3b\x39\x07\x99\x75\x4c\x14\x42\xf2\x5d\xc0\xe3\xde\x2a\x6b\x61\xbd\xfb\xcc\x5c\xe5\x79\xef\x78\x7e\x1f\xff\x9c\x50\x6b\xb5\xcf\xe1\xb3\xae\x2b\x3a\x6e\x1b\x77\xfd\xfb\xf8\x8d\x6f\xc4\x1e\x1c\x37\xc7\xcf\x3a\x2c\x4f\x3e\xc7\xd0\x3b\x75\x75\x6d\x8d\xad\xc2\x0a\x72\xc1\xd9\x69\xba\xad\x30\x7d\x87\x4f\xfb\x4d\x4c\x8a\x13\x12\x66\x2d\x90\xff\xb9\xbc\xfc\xf1\x42\x48\x18\x86\xaa\xb5\x9c\xa5\x65\xd3\x5b\xb5\x54\x1f\xde\xbf\x19\x77\xab\x6c\x92\xb7\xdf\x6a\xc4\xb1\xd3\xfe\x48\xac\xf8\x12\x8e\xcc\x7a\xf9\xf5\xf5\x4a\x8e\xee\xd0\x58\x22\xb2\xe9\x97\xd9\x8c\x7f\xa5\x9f\x7f\xeb\x82\xee\x73\x33\xbc\xb6\xfb\x75\x50\xf2\x15\xf2\x7c\xf1\xf6\x7f\x7f\x61\x3f\x80\xdd\x28\x7d\xe5\x3a\x84\x51\xbf\xa0\x66\xbb\x9a\x2b\xe9\x21\x06\xce\xe4\x60\x32\x2d\xe8\xc5\x53\x40\xed\xa7\x00\x25\xb7\x98\x6b\x5d\x6a\x5d\x28\xed\x1a\x48\xcc\xd4\x73\xa9\xb2\xab\xac\xe0\xa2\x9c\xfa\xb1\x0d\x46\x33\x8a\x84\x78\xce\x40\x56\xeb\x10\xe7\x4a\xc7\xe7\xa1\x6b\xed\xb9\x2b\x57\x16\x00\xe6\xb0\x29\x05\xc2\x37\x1a\x3a\x1c\xb2\x8b\xb7\x6f\x7e\x64\x6b\x45\x91\x12\x6b\x8a\x15\xf5\xdf\xa1\xc4\x67\xbc\xaa\xa4\xc8\xdc\x64\x80\xcd\x6b\x21\x2d\x53\xe5\x8e\xb7\x97\x0d\x6f\x03\x02\xc3\xb5\x05\x5d\x72\xf9\xe1\xfd\xdb\xb6\x07\xbe\xde\xfd\x34\x1e\x15\xd6\x56\x66\x76\x74\xb4\x90\x6a\x33\xcd\xd4\x6a\x34\xe0\x4d\x52\x2d\x95\x99\x79\x9f\x18\xb0\x83\xca\x04\x97\x66\x36\xd0\x59\xe2\x67\x64\x37\xc2\x5a\xd0\xa3\xbd\x78\xf2\x87\x91\x2d\xe2\xef\xf7\x9d\x45\x46\xfd\x57\xe1\xe6\xaf\x09\x06\x71\x2c\xea\x0f\x07\x54\x51\xbd\x87\x45\xf2\x3a\xd5\x57\x73\x53\x6f\xf1\xe9\x5c\x69\xad\x36\x27\xbc\xb6\xc5\xe0\x1b\x94\x07\xad\x42\xec\xb9\x9f\xa2\x1d\x79\x24\x24\x38\xfd\x4e\x3f\x4f\x0e\xbe\xf8\xe2\x8b\xc0\xc8\xd9\x19\xab\x78\x29\xb2\xf1\xe8\x15\x8d\x83\x4a\x65\x99\xa3\xc9\x34\x2c\x40\x43\x34\x9f\x0c\x65\xd7\x57\x7e\x28\xf9\x65\x8f\x06\xf7\xca\x69\x41\x35\xfd\x77\xd7\x73\xfd\x23\xb7\xc5\xa0\x0c\xfd\xde\x13\x5e\xf1\x7a\xd0\xaa\x9e\x4b\x91\xed\x20\xdf\xfb\x9f\x87\x62\x9d\xe3\x72\x00\xf8\xa5\x9f\x20\xdc\x4a\xf8\xad\x28\xaf\x20\x8f\xd2\xd5\x83\x56\xdb\xd3\xb0\xd0\xb7\x06\x71\xd3\x5b\xc8\xc5\xbc\xdd\x89\x3f\x70\x79\x3f\xf4\xed\x62\x3f\x34\x4b\x33\x36\xc6\xa2\x6a\xef\xfe\xad\xc7\x11\x4e\x1e\x06\x37\x9f\x76\xdb\xc2\xfe\xfb\xd7\x7d\xfc\x19\x17\x30\x2d\x6f\x3f\xa7\xf6\x8a\x30\x8c\x93\xb5\xbb\xde\xdd\x87\x76\x63\x1a\xd1\x28\x85\x8c\xab\xeb\xde\xdd\x98\xf3\x7c\x25\x4a\x61\xac\xe6\x56\xe9\x48\xab\x4d\x63\xfb\x03\x6c\xdc\x7a\xce\x5e\x2f\x25\x9a\xfe\x36\xea\x5a\x7b\xb7\xd0\xfa\xb0\xf5\xb7\x82\x0d\x03\x03\x9b\x68\x33\xf6\xc2\xef\x0f\xa5\x3e\x41\xc3\xb9\x5b\x57\xd9\x92\xaf\x93\x5b\x07\x02\xfd\x1c\x0c\x20\x68\x4f\x08\x22\xfd\x75\x97\xb5\xc2\x9b\x1b\xd7\x64\x52\x22\xe7\x68\x93\xd0\x5e\xbb\x65\xae\x42\xc9\x66\x05\xea\x5e\xbb\x4f\x8d\x6a\x62\x9b\x45\x2b\x15\xd8\x25\xb9\x6d\xc4\xb0\x00\x16\x2c\x95\xbe\xe9\x69\x76\xaf\xda\x94\xd6\x5c\xb3\x5e\xc3\x24\x14\x11\xfc\x32\x5d\xa0\xba\xcd\x8d\xf0\xb8\x89\xe4\x3c\xa4\xb7\x58\xc8\xdd\x2a\xe4\x04\x1b\x6d\xb3\x1e\xc6\x98\x62\xd7\x8b\x01\xda\x23\x93\x7d\x3c\x70\xc7\x76\xcf\x82\xc0\xf0\x14\x02\x3f\x95\xee\x9b\x18\x7b\xad\x3f\xf7\x68\xc6\xc7\x93\x19\x1b\x39\xbd\xf9\x55\x50\x37\xc2\x99\x03\x5b\x92\xe7\x61\x49\xc7\x4b\x9a\x08\x75\x4b\xdf\xd6\x42\x4a\xcb\x0c\x03\x78\x25\x18\xe3\x90\x92\x1b\x78\x13\x3b\x54\xa3\x5b\xa6\xd3\xf7\xdb\xc8\xfa\x3a\x6c\x3f\xc4\x28\xba\x5c\xb2\x3e\xd6\x77\xab\x13\x31\x70\x34\x6c\x6f\x6d\xc4\xb6\xdf\xa9\xb2\x3f\xf5\x1a\x96\x76\xee\xfa\x43\x4d\xdf\xf6\x47\x5b\x9c\xe4\xfb\x50\x48\xf0\x53\xa7\xa6\x22\xc6\x1e\x89\xfd\xdf\xbb\xb7\xec\xc3\xfb\x37\x6e\xda\x11\x2f\xa8\x0e\xcd\x97\x9a\xce\x6a\xc6\x7e\xb2\x54\xcd\x77\xc6\x48\xc3\xf5\x5d\xa6\xaa\xed\x89\x03\x1b\x2e\xdb\x3c\x85\x09\x56\x6b\xa3\x51\x2c\x03\x69\x29\x56\x08\x29\x23\xf5\x8c\xe3\xe9\x71\x12\x04\x5c\x18\x8e\x76\x6b\x9b\x97\x8d\xb6\xb5\x9a\x1e\x16\xa4\xcb\x9c\x19\xbe\x06\x26\x68\x3a\x19\xeb\x84\xa5\x17\x37\x79\x23\xdb\x6f\xf2\x36\x83\x93\x83\x94\xf7\xb6\x82\x90\xf0\xd8\x57\x11\xee\xf5\xcd\x60\x59\xdb\x23\x24\x67\xae\x8e\x63\x19\xaf\xf8\x5c\x48\x61\xb7\x21\x10\xd1\x00\x36\x8f\x37\xae\x68\x55\x17\xae\x2b\x65\xc0\xb4\xe3\xf4\x47\x3f\x48\x0d\xbb\x97\xcc\x16\x5a\xd5\x4b\xa7\xb7\x8f\xa1\xac\xfb\x48\x9b\x63\x7a\xc1\xfb\x33\x2b\xaa\x27\x94\x8a\xaf\x76\x0c\x9d\xa6\x92\x37\xac\x0a\x30\x8d\x1a\x84\x31\x35\x9c\x74\x2b\xfd\x41\x65\xf4\x2a\x35\x41\x4d\x9a\x31\xc5\xb8\xcb\xd1\x21\xe3\xf6\x96\xfa\xf9\x6f\xd6\xb4\x77\x95\x8f\x6c\x21\x40\xb6\x14\xfd\x32\xfc\x76\xa7\x9e\x3d\x96\xff\x1c\x35\x77\x18\x1a\xd0\xb2\x17\x31\x52\xb2\x7b\xcd\x8c\xc5\xc8\xee\x56\x25\x05\xe3\x78\x80\x8f\xd6\x1d\x22\x1c\x43\x77\x88\x10\x7a\xa2\x37\x07\x37\x07\xff\x0e\x00\x00\xff\xff\x68\x62\x2b\x83\x8a\x33\x00\x00" func contractsStandardFlowtokenCdcBytes() ([]byte, error) { @@ -388,6 +348,46 @@ func contractsStandardViewresolverCdc() (*asset, error) { return a, nil } +var _contractsTestingExamplenftCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x3b\x6b\x73\x1b\x37\x92\xdf\xf5\x2b\x3a\xfc\x90\x23\x73\x34\x65\xe7\xb5\xbb\x2c\x33\x4e\x22\x59\x39\x5e\xd9\x5a\x97\x44\x3b\x57\xe5\x52\x79\xc1\x99\xa6\x88\x68\x06\x60\x00\x8c\x68\x96\x4b\xff\xfd\xaa\x1b\xf3\xc0\xbc\x48\xca\xbe\x5c\xdd\xf1\x83\x44\xce\xa0\x1b\xdd\x8d\x46\xa3\x5f\x38\xfd\xe6\xe4\x9b\x93\x6f\x00\x16\x6b\x69\x41\x5a\x10\x0a\xf0\xa3\x48\x37\x09\x82\xa4\xbf\x29\x2a\x27\x9c\xd4\x0a\xf4\x0a\x04\x5c\x24\x7a\x0b\x97\x5a\x3d\xb9\xc8\xd4\xad\x5c\x26\x08\x0b\x7d\x87\x8a\x30\x64\x56\xaa\x5b\x70\x6b\x84\x77\xdf\x82\x75\x42\xc5\xc2\xc4\x13\x7a\x33\x77\x84\x59\x69\x07\x1b\x61\x1c\x21\xa2\x51\x7a\xb5\x92\x91\x14\x49\x39\x16\x96\x99\x03\xe9\x40\x58\x9b\xa5\x18\x83\xd3\xb0\x44\x82\xb7\x32\x95\x89\x30\xf4\x60\xad\xb7\x90\x0a\xb5\x83\xcb\x8b\x85\x85\xad\xce\x92\xb8\xa2\x93\xd1\x46\xda\x20\xac\x32\x15\x11\xd1\x22\x91\x6e\x37\x09\x38\x8c\xb4\x72\x46\x44\x0e\x62\x8d\x9e\xa4\x0a\x9a\xd0\x5a\xbd\x59\x4b\xeb\x64\x24\x1c\xc6\x10\x25\xc2\x5a\xb9\xa2\x5f\x52\x33\x93\x76\x67\x1d\xa6\xb0\xd2\x06\xa4\xb3\x4c\xc5\x84\xf8\x8b\x71\x25\x15\x5a\x10\x44\x2c\x09\xef\xf2\x62\x01\x5b\xe9\xd6\x90\x4a\x25\x53\x91\x40\x8a\x4e\xc4\xc2\x09\xa6\xe6\xf4\xe4\x44\xa6\x1b\x6d\x1c\x0c\x2e\xb5\x2a\x64\xc9\xa2\x1c\x94\x6f\xde\x49\xdc\x5e\xa1\xd5\xc9\x3d\x9a\xea\xe9\xeb\x1c\x0f\xbd\xb5\x83\x93\x13\x11\x45\x68\xed\x50\x24\xc9\xa8\xe2\xee\xa5\x5f\xc2\xcb\x8b\xc5\x14\x9a\x13\xc0\xa7\x93\x13\x00\x80\xd3\xd3\x53\xb8\x2e\x44\xff\x46\xb8\xb5\xe5\xc7\x21\xbe\x04\x1d\x9c\xe9\x24\x41\x16\xe6\xb5\xd3\x46\xdc\x22\x0d\x9d\x42\xf0\xe3\x00\xd8\x9b\x6c\x99\xc8\xc8\x43\x55\xdf\x2b\x1a\xe8\x17\x6c\xd7\x68\x90\xd7\x2f\x95\xca\xa1\x01\xbb\xe6\xb5\x5d\x22\x58\xa7\x0d\xc6\xe5\xf0\xc5\x1a\x2b\x8d\xd9\x10\xd9\xbc\x1a\x7e\xe9\x8b\x39\x41\x98\x02\x10\xa4\x6a\xbe\x34\x68\x75\x66\x22\x04\xb7\xdb\x60\x27\xf5\xaf\x99\x88\x5e\x86\x4b\x62\x7e\x47\x88\xd6\x5a\x5b\x4f\xba\x12\xa9\x5f\x78\x62\x66\xcc\xea\xec\x48\xe9\x68\x1a\x88\x84\x82\xb5\xb8\x47\x56\x33\x1e\xa9\xf4\xb6\x44\xb4\xc4\x48\x64\x39\x1a\x9e\x7b\x25\x22\xac\x94\xd4\xe0\x9f\x99\x34\x48\xbb\x83\x36\x01\xa3\x01\xbb\xc1\x88\x94\xd3\x63\x23\xb4\xa9\x36\x6d\x7e\x4a\x6e\x3b\xb5\x61\x42\xf4\xe6\x1a\xd1\x25\x09\x19\x4f\xe1\xed\x5c\xb9\x1f\xbf\xaf\xc6\x10\xc1\x17\x46\xa7\x4c\xed\xb9\xb4\x9b\x44\xec\x4a\xfd\x86\x7b\x89\xdb\x5e\x74\x44\x2a\xc9\xd2\x48\x75\xdb\x3b\x28\x46\x1b\x19\xb9\xa1\xb5\x3a\x38\xd6\xad\xb3\x74\xa9\x84\x4c\xca\x91\x75\x32\x73\xd5\xb8\xd2\x3b\x91\x38\x89\x76\x3f\x9d\x16\x93\x95\xc7\x6b\x0a\x80\x29\xbc\xaf\x6d\xb9\x89\x47\xb5\xbb\xa9\x4f\xf4\x1b\x2a\x34\x32\x82\x58\x7a\xc3\x63\x76\x6c\xe7\x8c\x20\x33\x41\x14\xb0\x5e\x08\xdb\x3f\x63\x41\xd8\x14\x3e\x79\x4e\xa6\xf0\x8b\xda\x5d\x3b\x93\x45\xee\xa1\x9a\x4c\x2a\xe9\x86\xe5\x2f\xfa\x84\x32\x1d\xd7\xde\x74\x08\xb2\x3e\xa0\x25\xbd\xfa\xeb\xc3\x42\xa8\x8f\xdf\xcb\x42\x35\x74\x04\x9f\x6a\x60\x24\x83\x89\x8c\x61\xe6\xbf\x65\x99\x8c\xdb\xef\x59\xc9\x67\xcc\x6c\xfb\x65\xc0\x28\xcc\x42\xb6\xdb\x43\x4b\x96\x61\x56\xb1\xdf\x1e\x56\xb2\x0e\xb3\x4a\x0c\xed\x61\xa5\x36\xcd\x4a\xe6\xcb\x41\x0f\x75\x0d\x89\x0c\x0a\x87\x2f\xd3\x8d\xdb\x55\xc6\x31\x7f\xea\xcf\x5d\x7a\x15\x18\xce\x1a\xb4\x50\x31\x18\x74\x99\x51\x36\xb7\x02\x6c\xd4\x44\x92\x90\xb1\xa4\x5f\x82\xcf\xbf\x1d\x1b\x1a\xbd\x55\x7c\x36\xd5\x50\xfc\xfc\xa9\xb5\xf9\xab\xc9\x1e\x3a\x77\xd8\x2a\x53\xdd\x74\x0f\x47\xd3\x03\xf8\x1a\x6b\xec\x69\x87\xe7\x4f\xaa\xa3\x69\xd2\x8d\x59\xad\xdc\x62\xb7\xc1\x29\xd0\xdf\xe7\x3f\x07\xe3\x2f\x2f\x16\x3f\x0d\x47\xa3\x2e\x01\x87\x44\xd3\xc6\x66\xca\x6f\xd1\xb1\xb6\x12\xb1\xef\x09\xdb\x4d\x37\x51\xef\x6b\x0f\xe9\xc3\x53\xd7\x35\x3e\xb7\x73\x3f\x0d\x47\xe3\x63\x86\x97\x06\xe7\x58\x80\x97\xb1\x24\xf6\x8f\x1f\xff\xd1\xa1\x51\x22\x79\x7b\xf5\xea\x58\x90\xcb\x8b\x45\x25\xe7\x73\xe1\xc4\xe7\x01\x3e\x4e\x10\xd7\x68\xa4\x48\x8e\x1d\xbd\x60\x83\x79\xb4\x0c\xde\xbd\xfe\xd5\xc8\xf8\x16\xe3\xe2\xf9\x4f\xc3\x51\x0d\xf0\xe6\x90\xb2\x90\x9e\x18\xef\x64\x11\xce\xe1\x07\x56\x1f\xaf\x7c\xa3\xc0\x7c\xbd\x68\xda\xac\xad\x74\xd1\xda\xeb\xda\xa7\x16\xad\x91\xb0\xb8\x5f\x89\xa6\x2d\x18\xa8\x14\xb2\x13\x68\xd8\x09\x01\xe5\x01\x50\x5a\xc9\xb6\xe8\x8a\x4f\xed\x3c\x68\x1a\xce\x7e\xb0\xe0\x94\xa8\x53\xf6\x1f\x8b\xc5\x9b\x0b\x99\x60\x3f\x69\xf4\xc9\x4c\x32\x6d\xd8\xde\xde\xf1\xa3\xce\x37\xed\xa7\x7d\x02\x0e\x76\x51\xb7\x84\xbd\x07\x49\xae\x14\x79\x56\x90\x8a\x8f\xa0\xb2\x74\x89\x86\x8e\x6b\x0e\x2a\xd8\x92\x92\x11\x5d\xe6\xce\x68\x0c\x2b\xef\xec\x04\xf1\x43\x1f\x6e\xeb\xed\x32\xa1\x45\x4f\x0a\xac\x24\x26\x31\xdc\x8b\x24\xe3\x49\x2d\xb2\xf5\x56\x3d\x42\x20\x4f\x20\x87\x9c\xab\x95\x86\x19\x74\x32\x38\xf4\x6b\x3e\xc8\xad\x23\x7b\x17\xf9\xab\xc1\x38\xe7\x68\x5a\x1c\xac\x63\xa2\x67\x4a\x53\x76\x8b\x37\x98\xf3\x95\xb4\xae\x75\xd8\xe7\x88\x6f\x60\x06\xef\x03\xda\x6e\x8e\x57\xe1\x62\x59\xfa\x15\x25\x98\xff\x0b\x55\xa0\x34\x38\x8f\xd8\x62\x1e\xa6\x9f\xba\x5c\x90\x5f\x48\x59\x78\x26\x3c\x82\xb8\x12\xec\x00\x7d\xdd\x6e\xca\xe3\xc9\xac\x9f\x2c\x8f\x20\x34\x00\x1c\x0e\xd6\xce\x6d\xec\xf4\xf4\x34\xcf\x26\x3c\x51\x2b\x37\xd1\x6a\x95\xe8\xed\x44\x9b\xdb\xd3\xc1\x24\xd2\x2a\x12\x6e\x98\x8b\x76\xe2\xb4\x77\x19\x87\xa3\xd1\xf1\xa4\x76\x9d\x68\x7b\x09\x0e\xbc\x89\xdc\xea\x9f\xe5\x3b\x9a\xad\x7f\x11\x2b\xed\x75\x40\xc6\x6c\xf5\x83\x21\x87\x69\xfa\x5c\x8e\x8e\x3b\x2e\xfe\xd7\x99\x2a\xc9\x3a\x9e\xaf\xf2\x60\xef\x35\xcb\xf8\x31\x4a\xb2\xb8\xb0\xb9\x0b\xc9\x31\x6d\x0c\x2b\xad\xc9\x5e\xda\xb5\xde\x82\x76\x6b\x34\x90\x59\xb4\x64\xad\x3d\xca\x7e\x8b\xe6\xf1\xc5\x7e\x18\xd9\xae\x41\x85\x7a\x30\x86\xc1\x4a\xeb\x41\xb7\x0d\xe3\xc0\x92\xc1\x88\xf8\x96\x0d\xa6\x18\x6f\xa1\x3d\xde\x21\xfd\x98\xd6\x83\x81\x71\x39\xf7\xa5\x48\x29\x78\xaa\x93\x32\x3a\xe9\x13\x41\xc0\xba\xb4\x20\x20\x53\xf2\x23\x38\x99\xa2\x75\x22\xdd\x8c\x61\x8b\x45\x5e\x24\x15\xe6\x8e\xe2\x00\x4e\x31\x09\x88\xfd\x8a\x90\xdc\xe9\x08\xda\x24\xc2\xad\xb4\x49\x2d\xdc\x29\xbd\xe5\xa4\x59\x21\x42\xe9\x26\xbd\x2c\x57\xd3\x33\xa1\x2d\xbe\xf9\x69\x71\xf2\xd4\x64\xc9\xa7\x5b\x43\x0a\x35\x71\xdf\x7c\x35\x0e\x89\x9c\xc2\xe0\x5c\x38\x82\x34\xc2\x48\xb7\xdb\x73\x38\x55\xeb\x30\x11\xb1\x97\xe0\xb0\x41\x68\xbf\x40\x49\x79\x58\x92\x8c\xc5\x4b\x8b\x94\x81\xe2\x23\x3f\x73\xaf\x30\x56\xda\xaf\xf0\x15\x0f\x6b\xc9\xc2\x3f\x1e\xda\x48\x1b\x9c\xc2\xb3\xa7\x93\xa7\xf9\x29\xfb\xec\x29\x7f\xaf\xb9\x5a\x83\x33\x9d\xa6\x5a\x0d\xfa\x8f\xdf\x62\xb6\xfd\x32\x27\x8d\xed\x13\x36\x6b\x73\x43\xc8\x4a\x26\x95\x84\xeb\x0c\x1d\x2f\xec\x02\xae\x47\xca\xb9\x0d\xaa\x20\x8f\x3f\x67\xba\xbc\xf7\x5e\xf3\x30\x2f\xf2\xb4\x3e\xcb\x2c\xad\xf7\xbd\x6f\xe5\x3d\xfa\x04\xcb\xc6\xe8\x3f\x30\x72\xde\x45\xd3\x09\xe8\x7b\x34\x5e\xf5\xd7\x08\x4b\x3f\x11\xfb\x49\xd2\x82\xc1\x8d\x41\x8b\xec\xdc\x09\x0a\xbe\xfb\x66\x7d\x79\x75\xf6\xb7\x6f\x9f\xc1\x76\x8d\xaa\xc4\xe1\x34\xbc\x7c\xf7\x1a\xb4\xf2\xd9\xf0\x7b\x29\xfc\xfc\x9c\xdb\x04\xa9\x56\x46\x58\x8e\x19\x32\x53\x4c\x3c\xe9\xd5\xd0\xdf\xb0\x48\x5b\x7b\x8b\xfd\x24\xc1\x7b\x4c\x8a\x94\x5e\x0c\x76\x97\x2e\x75\xe2\xd7\xbc\xdf\xd6\x15\xd0\xaf\x18\x78\x76\xe8\x44\xd8\xeb\xae\xd7\x8f\x0b\x52\xa1\xbd\xc3\xf7\x1e\x1b\x87\x03\xb4\xf0\x33\x02\x61\xbf\x6a\xfa\x14\x2d\x0c\x2f\xba\x65\x29\x57\x35\x49\xbc\xae\x12\x33\x75\xe1\xb4\x83\xb5\x60\x35\xce\x74\xba\x29\xb2\xb9\x4e\xdf\xa1\xca\x97\xe3\xed\xd5\x1c\x96\xc2\x62\x4c\xab\x2e\xf8\x2b\x3f\xa3\x15\x2a\xc7\xc2\xfc\x7c\x0c\x1b\x2d\x73\x15\xd5\x20\xe0\x3f\xaf\xff\x79\x09\x2b\x99\xe0\x84\xcb\x0f\xfb\xa6\xde\x16\xf9\x6e\xc1\x00\xb0\xd3\xd9\xbf\xdd\x23\x64\x9b\x44\x8b\x98\xd4\x54\xc5\x9c\xd5\x5e\x6b\xcb\xf8\xad\x4e\xd1\x67\xcd\x9f\xf8\x14\x37\x45\x27\x44\x17\x05\x65\x41\xf2\x39\xca\xf1\xee\x9b\x7b\xfe\xe6\xe2\x7a\x0c\xd7\xdf\x8d\xe9\x28\x21\xa1\xbd\xbd\x7a\xc5\x62\x13\x52\x15\x45\x1d\x66\x25\x96\x06\x23\x97\xec\xc6\x80\x2e\xea\x3e\x48\x20\x57\x49\x92\x11\x89\x68\x06\x87\x5c\x41\x2f\xe8\xc2\x92\x9d\x0e\xf6\xa2\xcd\x8c\x7c\xc7\xa1\xd4\x0c\xda\x9e\x63\xe1\x53\x0e\x26\x7f\x58\x36\xb7\xbd\xa8\xba\xfd\xd7\x96\xae\xed\xdf\x29\xde\x2a\x37\x35\xee\x40\x0c\x4e\x1f\xbf\xa9\x3b\x40\xfd\x8b\xfd\xc0\x99\x91\xcd\x38\xfc\xed\xd5\x7c\x3f\xa5\xf4\xc9\x17\x64\x5a\x7c\x19\xd3\xca\x73\xdd\x8a\x96\xb8\x58\x2e\x83\x36\x4b\x9c\x25\x95\x12\xe0\xc5\x89\xaa\x2c\x00\x16\xa3\x48\x19\xd9\x24\x1d\x9c\x35\x3c\xac\xf6\xaf\xd5\x3e\x2c\x7b\x6c\x46\xe7\x9b\x07\xc0\xc4\xe2\x9e\xbd\x9e\xaf\x7f\x5f\x14\xfe\x70\xd2\xff\xab\x03\xd4\x0f\x78\x28\xea\x42\x70\x4e\xc7\x0b\x97\x10\xa7\xf0\x4f\x95\xec\xb8\x20\xc4\x65\xaa\xa5\x88\xee\xb6\xc2\xc4\x10\xe9\x74\x23\x9c\x5c\x4a\x5f\xa1\x84\xbe\xa2\x4d\x55\x0c\xaa\x6c\x7a\xb3\xb6\x06\x9f\xf2\xa9\x3b\x31\x54\xa3\x3b\xaa\x3f\xd5\xcb\xf1\xde\x09\x6a\x89\xe4\x7a\x8d\x83\x8e\xd4\x48\x2b\xf2\x37\xbd\xdd\xbb\x43\x55\x4f\x3c\xe7\x87\xae\xa8\x17\xde\x72\xdf\x55\xc1\xbf\x7c\x7d\xe9\x5f\x30\x3f\xf7\xc9\x92\xee\xac\xae\x30\xe4\xb6\x61\x7c\x79\xb1\xb0\x53\xf8\xf9\x93\x87\x9a\x42\x3b\x0b\x7d\x79\xb1\x78\x68\x54\x4c\x60\xd8\x59\x74\x28\x11\xc2\xf3\x27\x24\xc5\x6a\x41\x6b\x0c\xdc\xa2\xbb\xce\x36\x1b\x6d\x1c\x8f\xa6\x83\xce\x96\xd9\x78\x01\x89\xb4\xae\x90\x84\xe3\x77\x79\x36\x9e\x3d\x8d\x08\x25\x79\x22\xc4\xcb\xc6\xb5\xea\x3f\xad\x8c\x75\x6b\xa2\xe1\x68\x0a\x9f\xfc\x09\xfb\xab\xd6\x49\x33\xb1\x4e\x46\xd1\x16\x30\x0c\xd0\x18\x3e\x0b\x19\x63\xce\x6b\xa3\xdf\xf7\x04\x84\x37\x30\x03\x67\x1a\x3b\x3c\xd7\xfd\x3a\x86\x3e\xa9\x5d\xe5\x02\xda\xae\x91\xe3\x36\x6d\xb8\x96\x49\x87\x09\x79\x6d\xca\x6b\x01\x29\x06\x8b\x06\x63\x58\xee\x1a\xa5\xda\x1a\xbe\x5f\xc2\x1a\x6e\x99\xa5\xf3\xc0\x5c\xfe\x64\x7c\x79\x80\xf4\x47\x66\x5d\xe5\x9b\x66\x48\xb8\x63\x5c\x89\x2c\x71\xfb\x97\x40\xda\xe6\x0a\x0c\x5d\xe9\xde\x8c\xbc\x50\xbb\xcb\x08\x3c\xfd\x6c\xd6\x17\x61\xf7\x89\x89\xb6\x41\x6c\xc4\x16\x0c\xa6\xfa\xde\x97\x82\x48\x93\x56\x45\x85\x35\x2c\x6b\xab\x18\xfc\xa0\x66\x0d\xa8\xc9\x54\x6b\x53\xfc\x9e\x4f\xe3\x53\xde\xc5\xa4\xc3\xe2\xcb\xfc\xbc\xa8\xf3\x76\x57\x76\x68\x4f\x75\x68\x9e\x77\x7c\x9e\x3f\x69\x6c\xa7\x89\xe7\x65\x78\x87\xbb\x29\x54\x53\xb4\x8d\xf5\x8b\x17\xb0\x11\x4a\x46\xc3\x41\x20\xaf\xca\xfc\x4c\x0a\xd8\x29\x9c\xf1\xb2\x92\x02\x95\x02\xcb\x05\xc5\x76\x64\x7e\x0e\xfd\x8e\x43\x71\xd6\x54\x94\x84\xe9\xa6\x83\x60\x83\x09\x9c\xad\x31\xba\x63\x71\xdb\x6c\x99\x4a\x47\xda\x3a\x3f\xa7\x25\x48\xc5\x1d\x3d\xf4\xc5\x79\x69\x41\x2b\x0c\xb6\x7f\xb0\x76\x7a\xab\xec\x64\x30\x6a\x38\x25\x65\x5d\x8c\x25\xd9\xa7\x23\x31\x6e\xb4\xa5\x25\x17\x77\xdc\x64\x42\x6c\xb3\x43\x18\xc7\x35\x55\x28\x67\xb3\x81\x91\x6e\xd5\x11\x19\x8a\xc6\x7b\x0e\xb8\xe7\x80\x9c\x4b\x23\x76\xbd\x35\x92\x9c\x82\x21\x93\xd9\xab\x21\x4d\x23\x5b\x53\x11\xff\x85\x5c\xfc\xc6\xe6\x68\x81\x70\x2d\x98\x87\x4f\x64\x5c\x97\x17\xb1\x10\x7b\xa7\x5b\xe1\x36\xc7\x99\x33\x11\x9c\x4b\xdb\xb5\x8c\xd6\xe5\x8e\xe2\x76\xa3\x84\x9c\x77\x6c\xcd\xa5\x93\x78\xd1\xad\xc4\xef\x0b\x0a\x6e\x4a\xea\xeb\xb4\xc4\x68\x9d\xd1\xbb\x12\x45\x8b\xd2\xbc\xe5\x28\x66\x2b\xc7\x5d\x2a\xe8\x9d\xf7\x4d\x66\x28\xce\x20\x6d\x49\x76\x4d\xa8\x73\xcd\x6a\xce\x6c\x6a\x8a\x03\x4c\xd5\xd8\x93\xa9\x04\xad\xa5\x87\xcd\x2e\x90\x26\x16\x83\xc2\x6a\x16\xcd\x56\x28\xd6\x10\x4c\xa5\x2b\x5a\x11\xde\x6e\x62\xee\x70\xc2\x7b\x54\xae\x8a\x25\x9a\x48\xa4\xaa\xcf\xdf\x92\x9e\xc8\xdc\x9a\x79\xbf\xc2\x15\xcc\x60\xf8\x75\x43\x84\x24\x3c\x0a\xb0\x33\xb7\x6e\x9b\x24\x4f\xc4\x08\xbe\xee\x56\xa6\x17\xa3\xaf\x1a\xf4\x84\xb3\x4d\x32\x86\x5e\x18\xa1\xec\x0a\xcd\xb9\x70\x38\xa4\x07\x53\x3a\x44\xcf\x32\x63\x50\xb9\x5f\x13\x1d\xdd\x0d\x47\x93\x32\x85\x56\xdf\xeb\x81\x16\x92\x6c\x2a\xb1\x0c\xc3\x89\x7a\x0d\xf7\x2d\xba\xf9\x79\xe0\x07\x28\xbf\x85\x8a\xfe\x36\x7a\xc7\x86\x80\xa2\xb6\x56\x13\xd2\x41\x3f\x60\x7e\xee\xeb\xd6\xde\x28\xf7\x54\xae\x1b\x56\xf7\x0e\x77\xbd\xa7\xf1\x6f\x98\x37\xa2\x88\x54\x67\xca\x95\xe5\xae\xbe\x2e\xa9\x83\x04\xbe\x42\x75\xeb\xd6\x44\xe3\x5c\xb9\xa3\xc8\x4b\x18\xe2\x50\x45\xb6\x9c\x63\xa9\x8d\xd1\xdb\xcb\x8b\xc5\xf0\x43\xd0\x86\x34\x9a\xf6\xea\x4b\x37\x11\x1d\x2a\xd9\x27\xa3\x5f\x79\x46\x16\x04\x53\x91\xe7\x4e\x4c\xd9\x61\x96\x6f\xb6\x3c\x91\x34\x3f\x3f\x86\x81\xb0\x8d\x6f\xd8\xe0\x23\x7c\x37\x29\xbe\xb4\x18\xc9\x53\x1b\x6a\xe5\x60\xd6\xc5\x0e\xed\xb0\x23\x65\x12\xc8\x85\xd0\x31\x60\x37\x11\x8f\x8d\x80\x6a\x82\x7c\x74\xaf\x4b\xb1\x69\xac\x48\x83\xb6\x3c\x38\xa2\xf9\xa5\x36\xf0\xe7\x9c\xb4\x5f\xaa\x39\xa2\x23\xe6\xf8\xff\xd4\xf2\x02\x61\xa4\xf9\x39\x92\xee\xd6\xe5\x52\x1e\x5f\xd8\x6c\x74\x9c\x28\x6b\x0c\x3f\x46\xae\xa5\x4c\x73\xc4\x10\xae\x4f\x53\x36\x17\x79\x17\xb0\xa7\xb7\xb4\xd3\x49\xc2\xec\x94\x19\x42\xce\xa1\x54\x7d\xc0\x3e\x0e\x11\x14\x2b\x43\xa3\xcb\x39\x47\x7c\xd2\x52\xb7\xc0\xf4\xfb\xe0\xb0\xcc\xab\xb0\x73\x15\xa0\xbe\xe7\x84\x8d\xf7\x0c\x7c\x4f\xc0\x56\x26\x09\x2c\x11\x32\xcb\x33\x97\xc8\x8b\x4f\x8c\xf7\x98\xe8\x0d\x1a\x4b\x0b\xc1\x05\x1d\xef\xdd\x6c\x84\x11\x29\x3a\xe4\xc6\xe8\x8d\xb0\xb6\x58\xa8\xb0\x9f\x65\x04\x29\xba\xb5\x8e\x27\x35\xe2\xfb\x6c\x7a\x98\x25\xb6\x1d\x85\xc3\x17\x5d\x9d\x54\x9d\x5d\x54\x9f\xd5\x7e\xf4\xb9\xad\x47\x8f\xce\x3c\xdf\x1c\x52\x15\x16\x20\x79\xda\xb5\x76\xd1\x7c\xef\x04\x7d\x20\x93\xb6\x4e\xf0\xb2\x14\x5d\x44\x6b\x5f\xf9\x28\x4c\x4f\x8c\x56\x9a\x5c\x0b\x26\x6d\x35\x82\xaa\x6e\x50\x56\x28\x0a\x25\x32\xf8\x67\x86\xd6\x35\x81\x3b\x37\xdd\x71\x55\xe0\x17\xcd\x9a\x6f\x5f\xbf\x53\xd0\xeb\xc4\xcc\xd4\xcd\xdc\x97\xd5\xe6\x7d\xce\x3e\x1c\xd6\x2a\x81\xb5\x10\x75\xe7\x3a\x6d\xd8\xad\xcd\x87\x64\x67\xeb\x7a\x77\x72\x75\x13\x34\xa9\x37\x60\xab\x9e\xf5\x7d\xa0\x61\x96\x8d\x85\xf1\x75\x67\x40\xdb\xd9\xd9\x56\x61\x79\x25\xd5\x9d\xcf\xaa\x7c\x1e\x96\x4e\x6b\x5b\xe8\xf6\x14\x86\xab\xec\xf1\xc7\x58\xf8\xf9\x2b\x8e\xb4\xf0\xf3\xd0\x7e\xdc\x7e\x92\x13\x51\xd7\x9a\xcf\x50\xc9\x3d\xcd\x15\xbe\x1f\x3b\x96\x6d\x65\x7c\x4d\x4f\xbb\x15\x70\x25\x13\x7c\x7c\x87\x1c\x77\xc7\x95\x25\x12\x61\x2d\x3a\x3b\xd9\xe2\xd2\x4a\x87\x4f\x08\xa5\x9d\x44\x3a\x3d\xfd\x61\xf5\xe3\xb7\xff\xf8\x3e\x7a\x1a\xfd\x4d\xfc\x3d\x8a\xe3\x1f\xbf\xff\x6e\xf9\x2c\xfa\xfb\xb7\x4f\x1b\x2f\xc4\x0f\x3f\x44\xcb\x67\xd1\x3f\xbe\xfb\xf1\xc3\x45\xa2\xb7\x1f\x7e\xd7\x26\x4e\x85\xb9\x9b\xd8\xfb\xdb\xee\xfc\x48\x8f\x26\x31\xf7\x79\xa9\x5e\xa6\xe2\x16\x4f\xed\xfd\xed\xbf\x7f\x4c\x93\x36\x96\xde\x15\x3a\x2c\xfc\x6e\xb1\xe4\xd5\x6e\x32\x9e\x45\x7f\x5b\x05\x39\xe8\xa6\xb7\x5e\x6f\x5f\x34\x72\x2f\xd2\xfa\xe3\x55\xd4\x2e\x38\x39\x0d\x6b\x4c\x36\x1c\x4d\xe7\xa7\xac\x0f\x77\x15\x7e\x74\xf9\x55\xa7\x8b\xc5\xa4\x67\x46\xac\xba\x9d\x9a\xab\xfe\x88\x46\xa8\x41\x8f\xfc\xed\x9f\x99\x30\x38\x27\xc9\x4f\xfd\x62\x74\x8f\x5b\x0a\xa5\xd0\x1c\x1e\x67\x75\x24\x45\x62\xa7\x7b\x36\xf7\xc0\x6d\xa5\x73\x68\x06\x47\xb1\x93\x0f\x66\xe5\x24\x66\x3e\x2c\x29\xd8\x8e\xd6\x42\xf6\x15\x73\x1e\x0e\x68\xce\x17\xf6\x09\xfc\xe5\x3d\x02\x79\x33\x40\xd7\xc4\x7f\x41\x7f\x40\xa3\x1a\xdd\xe8\x0f\x78\x7b\x35\x9f\xc0\x3c\x28\xfb\x8e\x6b\xa3\x2a\xb7\x45\x5a\x48\xb4\xbf\xcd\xa6\x15\x27\x7a\xb8\x40\xcc\x65\xe4\xb6\xa6\x9c\x9e\x16\x97\xf0\x8a\xb2\xf1\xff\x58\x6d\xf8\x8b\x2a\xae\xf5\x6e\xd7\xcb\x8b\x45\xcf\x9e\x2c\x0a\xab\x83\xff\x7a\xfd\xe6\x55\xcf\x98\xc7\xd6\x4f\xcb\xba\x29\x77\xd3\x9c\x9e\x82\x45\xe7\xc2\x92\xa9\xb0\xf4\x8a\x1e\xdb\xa0\xb8\xe1\x9d\x7b\xe1\x1f\x65\x46\x86\x7d\xc0\xbd\x73\xe5\xd5\xd2\x43\x15\xf3\x52\x19\xca\x4b\x85\x5c\x43\xed\xb6\xef\x7b\x76\xdd\x43\xd3\x87\x2f\x42\xfa\xc0\x33\xbe\x2a\x6b\x76\x9c\xcb\x52\x20\xe2\x54\x2a\xd0\x86\x95\xc9\xad\xb9\x17\x21\xbf\xa0\xe9\x7b\x18\x28\x1e\xf4\x77\x37\x0b\x1c\x62\xe9\xad\x6d\x2a\x95\xe3\xb4\x6d\x19\x2e\x76\x79\xb0\xe1\x85\x35\x7f\x11\x2f\xbc\xa0\x76\x9a\xf7\xc9\xd1\x2e\xa5\xff\xe4\xa4\xe7\x28\x8b\x6e\x38\xfa\x19\xe4\x66\xf6\x47\xb4\x44\x3f\xc9\x13\x3f\x76\x17\x86\xc8\x9f\xce\xe7\xfb\xbf\x73\xed\xaa\x1c\x4e\xce\x5c\xdd\xb7\x0a\x65\x05\xa5\x2b\xb3\xe7\x5e\x56\xbb\x40\xc8\x3e\x79\x90\x41\x85\x59\x3b\xa7\x5a\x03\x68\xb6\xfc\xf1\x98\xc1\x0d\xcc\x6a\x68\x26\x6b\x94\xb7\x6b\xb7\x17\xd2\x37\x0b\x36\x01\xcb\xfc\x6d\x2b\xc3\xce\xf6\x6f\x23\x31\xe2\x10\xab\xb4\x7a\xb5\x98\xba\x68\x7d\xc4\x74\x89\x71\x4c\xeb\xed\x5b\xe2\x40\x2a\x6e\xd2\xe1\xd6\xb5\x1e\xaa\xb8\xab\x0e\x66\x30\x58\x0a\x33\x68\xcd\x9e\xe7\x20\x4a\x05\xac\xbd\xbf\x17\xe4\x48\x6c\x69\x49\xaa\x74\x45\x4b\x8b\x2a\x4d\xea\x6e\x1b\xa9\xe9\xd2\xde\xdb\x1a\x81\x52\x95\x5f\xdb\xa3\x02\xdd\x2a\xbf\xb6\x47\x55\x0a\x53\xf6\xb4\xd6\xc6\xf4\x15\xb1\x3c\xbf\xdd\xd9\x2a\xbe\xb8\x38\xaa\x6f\x65\xb8\xce\xdb\xdf\x88\xf9\xfc\x3a\x6f\x15\x76\xf6\xc6\x70\x30\x83\xd3\x3c\xdc\x2b\x4c\x64\xcd\xbb\xec\x43\x51\x85\x72\x84\xc1\x1f\xc8\x47\x20\x68\xdd\x06\xee\x9e\xdf\x0f\xab\xb1\x77\x56\x28\xc8\x59\xc7\xed\x63\x6e\xef\x13\xf7\xc5\xad\xde\x1c\x61\x09\x5e\x8f\x8c\xf7\xa5\xbc\x4a\x42\x45\x14\xe9\x4c\xb9\x49\x8e\x6a\x42\xd8\x87\xcf\x9f\x44\x41\x93\x87\xd3\xfb\x82\xe3\x51\x8d\xfa\x52\xbd\x73\xd7\x25\x12\x1b\xe1\x1b\x56\x3a\xae\x5c\xf7\xd0\x7d\x26\x36\x45\xab\x56\x41\x5d\x89\x46\xa2\x2d\x49\x95\xd6\x66\xfd\xe1\xee\x3e\x8a\x3b\x25\x50\x9b\x83\xc9\xb7\xeb\x61\x8d\xaa\x31\x08\xb7\x27\xd6\x1f\x75\xaf\x63\x7e\x1e\x3d\x66\x0d\xf3\x0b\xed\x35\x1b\xe0\xd1\x1c\xb9\x7c\x1e\x41\xb0\x74\x2d\x7d\x2c\x32\x9f\x0f\x27\xff\x1d\x00\x00\xff\xff\x6c\xb6\x54\xe9\xcf\x41\x00\x00" + +func contractsTestingExamplenftCdcBytes() ([]byte, error) { + return bindataRead( + _contractsTestingExamplenftCdc, + "contracts/testing/ExampleNFT.cdc", + ) +} + +func contractsTestingExamplenftCdc() (*asset, error) { + bytes, err := contractsTestingExamplenftCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "contracts/testing/ExampleNFT.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xee, 0x18, 0xbe, 0x2e, 0xc1, 0xd4, 0x88, 0x60, 0xfc, 0xaf, 0x1a, 0xa8, 0x6b, 0x94, 0xb, 0x58, 0xba, 0xa1, 0x80, 0x75, 0xb4, 0x68, 0xb3, 0x7f, 0xd6, 0x52, 0x56, 0xc7, 0xc5, 0xf9, 0x94, 0x1c}} + return a, nil +} + +var _contractsTestingExampletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5a\x6d\x6f\xdb\x38\x12\xfe\x9e\x5f\x31\x9b\x03\xee\x6c\x34\x71\xd2\xdd\xb6\xb7\x6b\x24\xcd\xa6\xdd\x06\x77\xc0\x16\x28\xda\x6c\xf7\x43\x51\x34\xb4\x34\xb6\x78\xa1\x48\x81\xa4\xec\x78\x83\xfe\xf7\xc3\xf0\x45\x16\x65\x29\x71\xd2\x1e\x70\xfe\xd0\xe8\x85\x33\x1c\xce\x3c\x9c\x99\x87\x2a\x2f\x2b\xa5\x2d\xec\x5f\xd4\x72\xc1\x67\x02\x2f\xd5\x35\xca\xfd\xbd\xf8\xf8\x2d\x5a\x96\x33\xcb\x3e\x72\x5c\x99\xcd\xe3\x64\x74\x67\xcc\x1e\xcb\x32\x34\x66\xc4\x84\x18\x43\xa6\xa4\xd5\x2c\xb3\xf0\xe6\x86\x95\x55\x10\x98\x42\x22\x0f\xb7\x7b\x7b\x00\x00\x47\x47\x47\x70\x59\x20\xe0\x12\xa5\x05\x5b\x30\x0b\xdc\x00\x96\xdc\x5a\xcc\x61\x55\xa0\x04\x89\x2b\xb0\x24\x63\x80\x69\x84\x92\x4b\x8b\xb9\x13\x6e\x4f\xea\x15\x38\xdd\xe6\xad\x1b\x32\x62\xa5\xaa\xa5\x9d\xc2\x1f\x17\xfc\xe6\xc5\xb3\x03\xb0\xeb\x0a\xa7\xf0\xc1\x6a\x2e\x17\xe3\xd6\xf4\xca\x32\x01\xa6\xae\x2a\xb1\x06\x35\x4f\xac\x36\xc0\x25\xe0\x0d\x37\x16\x65\x86\x5b\x93\x2e\x99\x06\x4b\xe2\x1f\x9c\x74\x9c\x6a\xa3\xfb\x83\x55\x9a\x2d\x10\x98\xcc\xe1\x5d\x3d\x13\x3c\x83\x77\xcc\x16\x66\x4b\x93\x40\x0b\x1f\x59\x2d\x6c\x90\xa0\x51\x53\x68\xdd\x0c\x4b\x78\xbd\x5e\x60\x73\xdd\x3b\xfe\x3d\x66\xc8\x97\xa8\x1f\x20\x72\x9e\x97\x5c\x0e\x1a\xb5\xed\x11\x8e\x2b\x98\xd7\x12\x16\x68\x5f\x07\x1c\x38\x8c\x8c\x34\x1a\x55\xeb\x0c\x2f\x5d\x14\xe8\xdf\xb3\xf1\x14\x3e\xd1\xc5\x67\xb8\x75\x8a\xe8\xa7\xd1\xd6\x5a\xc2\xa7\xe6\x01\xfd\x68\xd0\xc9\x30\xfe\x26\x17\x97\xf4\xf7\xe5\x68\x7c\xf0\x40\xb1\xdf\xb8\xa9\x04\x5b\x3f\x42\xd2\xb9\xfe\x37\x66\xd9\x83\x65\x2f\x37\x80\x79\x39\x1a\x37\xa2\x9f\xdd\xd5\xd7\x6d\x97\x92\x37\xc9\x79\x62\x89\x6d\x8f\xf6\x39\xf4\xc0\xf9\x7f\xf3\x60\x3c\x85\x73\xb9\xfe\x60\x75\x9d\xd9\xb3\x96\x93\xcd\x8a\xdb\xac\x68\x06\xb7\xde\xd0\x2f\x63\x06\x77\x77\xf9\x34\x91\x6d\x85\xf0\x5e\xe1\xd1\x96\x24\xfd\xe6\x36\x04\x65\x0a\x06\xc5\x7c\x72\xff\xd2\x25\x17\xdd\x85\xef\x1a\xf5\x31\x30\xf3\xc3\xdd\x96\x86\xc1\x67\x07\x03\xd6\x36\x40\xf8\xdf\xd9\xdb\xc6\xda\x0e\x16\x37\xc3\xcf\xb6\x4c\x1e\x3f\x26\xd0\x1b\x77\x6d\xc7\x9a\x52\x44\x89\x39\x67\x70\x0a\xa9\xdc\x5b\x7a\xda\x1f\x62\xe7\x38\x2e\x70\xda\x11\xf9\xd7\xe5\xe5\xbb\x0b\x2e\x70\x58\xaa\xd6\x62\x0a\xfb\x85\xb5\x95\x99\x1e\x1d\x31\x63\xd0\x9a\xc9\x0a\x67\x86\x5b\x3c\x24\x95\x66\x92\xa9\xf2\xe8\xf9\xfc\xc5\x8f\xbf\x3c\xcb\x8e\xb3\x7f\xb2\x9f\xb3\x3c\x7f\xf1\xec\xa7\xd9\xd3\xec\xe7\x1f\x8f\x3b\x2f\xd8\xf3\xe7\xd9\xec\x69\xf6\xcb\x4f\x2f\xbe\x5c\x08\xb5\xfa\xf2\xa7\xd2\x79\xc9\xf4\xf5\xc4\x2c\x17\xfb\xbd\x36\x8c\xfb\x51\xe0\x3c\xe0\xa3\xb9\xcf\x4b\xb6\xc0\x23\xb3\x5c\x3c\xb9\x29\xc5\xb6\x96\xf1\xb0\x0b\x4d\xbf\x0f\xcd\xe8\x93\x7b\xfd\x79\x5b\x74\x97\x9d\x16\xa2\xd7\xef\x53\xc9\x4a\xb2\x39\x94\xbc\x46\x91\xaf\xa3\xfb\xfd\x8b\x35\xeb\x72\xa6\x28\x0c\x6f\x2e\x2e\x07\x86\xe4\x68\x32\xcd\x2b\xcb\x95\x9c\xc2\xfe\x65\xc1\x0d\x65\x31\xaf\xda\x95\x72\x2a\xf2\xb5\xc1\x1c\x98\x01\x46\x15\xd6\xcf\x6f\x15\x14\x28\x2a\x58\xab\x1a\x72\x5c\xa2\x50\xee\x5a\x83\xc4\x1b\x0b\x17\x97\xf0\x37\x25\x29\x52\x93\x81\x79\xf1\xc6\xa2\x96\x4c\xfc\xf1\xfe\xf7\x2e\xb6\xde\x6c\x5e\x8d\x1a\x00\x85\x79\x0f\xe7\x76\xa2\xe4\x9c\x14\x2b\xbd\xd8\x1f\x08\xb2\x50\x0b\x65\xa6\x21\x54\x03\xae\x51\x19\x67\xc2\x4c\x3b\x09\xb5\xfd\xdb\xb7\x2b\xea\x6d\xf4\xfe\x4e\x06\x86\xc1\x0e\xd4\x64\xdf\x97\x99\x50\xd9\x75\x56\x30\x2e\xf7\xb7\xe1\x00\xae\x80\x74\x9f\x3c\x6a\xcf\xb7\x53\xce\x23\x33\x7c\xd4\xd0\x8f\x3c\xd3\x6e\x29\x8e\xc2\x5d\x0c\x88\x53\xe8\x14\xf4\xfb\x59\xc7\x3e\xc6\x4b\x57\xae\x85\x49\x84\x63\xa7\x33\xb4\x5f\xbd\xad\xc3\xf2\x3b\x4c\xfe\x3b\x97\xd7\x98\xb7\x72\xf8\xdf\xdb\x9d\xe3\xc4\x69\xd8\x6a\x0e\xba\x16\x7c\x93\x92\x4c\x23\xb3\xf8\xa6\xac\xec\xda\x0d\xbc\xa8\x65\xe6\xf7\xdc\x68\x5e\xcb\xd1\x78\x0a\xbf\xde\x26\x31\xf2\xfa\xbe\xde\x01\xcf\x10\xd9\x93\xc3\xc4\x8c\xee\x44\xa3\x25\xfd\xdb\xb2\xfa\xd7\x5e\xab\x07\x10\xba\xfd\xf8\x11\x10\x4d\xbb\xa8\xc7\x40\xb4\xa5\xa1\x1f\xa2\x49\x67\x9f\x2c\xb0\xf5\xe6\x8e\xb5\x7c\xed\x36\xb5\x92\x8b\x76\x93\x47\x04\xc1\xb9\x2a\xde\x35\x4f\xdf\xb0\xac\xa0\xfc\xa8\xdd\x36\x41\x97\x23\xb9\x34\x96\xc9\x0c\x89\xa2\x28\x29\xd6\x60\x0b\xf4\xe2\xc4\x51\x6c\x81\x5c\xc7\x4d\x95\x30\xab\x79\x00\x85\x09\xc3\x82\x0c\x31\x92\x85\x5a\xa2\x96\x98\xc3\xcc\x6b\xab\xb4\x67\x2a\x95\x32\x96\x58\x5c\xce\x9d\x60\xa3\x8e\x77\xfc\xe9\xf9\x99\x2d\x70\xed\x98\x59\xc6\x84\xc0\x7c\x92\xcc\x9e\x15\x98\x5d\x1b\x28\x58\x55\xa1\x04\x66\x41\xd7\xd2\xf2\x12\x9d\x28\x2e\x51\x03\x6b\x2c\xa4\xa2\xd0\xd1\xd1\xe8\x7a\x1f\x3a\x28\x1a\x21\xfd\xfa\x67\x18\x36\x40\x1e\x57\x46\xc4\x93\x0a\x85\x9a\x37\xb7\x8e\x87\x3a\x5a\x49\x66\x36\xea\xc8\xdc\x1c\xe7\x5c\x3a\xe1\x03\x30\x8a\xde\x6b\x24\x13\xa4\x82\x15\x5b\xc3\x5c\x91\x6d\x25\x13\x3c\xe3\xaa\x36\x3e\x1c\x56\x85\x39\xbd\x17\x37\xae\x51\x75\x98\x96\x4b\x60\x5c\x4f\xe0\x1c\x4c\x85\x54\x0d\xc0\xb1\x51\x0d\xb1\x07\x04\x89\x98\x1b\xd2\x34\xdb\xd8\x60\x95\xe3\xb5\x8d\xba\x0d\xe7\x4d\x5d\xd1\xe6\x05\x8d\x42\x67\x4a\x87\x5f\xfb\x3d\x18\x59\x76\x3b\x22\x0e\xbb\x30\x63\x22\x82\xc9\x52\x79\x5e\x36\x38\xec\x4e\x43\x1c\x37\x8c\x4e\xf9\xad\x57\x0a\x5c\x72\xcb\x99\xe0\x7f\xa1\x73\x7a\x54\x4c\xa1\x8e\x06\x3a\x97\x51\x80\x29\xf2\x8d\x2c\x09\x8e\x3a\x9a\xc7\x9d\xd4\xe4\x3a\xea\xa8\xf2\x34\x2a\x6f\xed\xb0\x64\x79\xaf\x1d\x78\x3c\x2a\x59\x4f\xc7\x31\xab\x1d\xda\x97\x9c\x39\x53\xaf\x5e\xd1\xbd\x9e\xd0\xe3\xd1\xf8\x8a\x72\x72\xa1\xf2\xae\x13\x22\x8a\x3c\x11\xa3\xb1\x34\xcd\x8c\x65\xd7\xa3\xae\xb5\x7c\x9e\x1a\xfc\x12\x8e\x27\xc7\x3d\xc9\x76\x28\x97\xc0\xe9\xf0\xab\xc3\x44\x75\xa2\xf2\xeb\x5d\x2e\x3b\x9e\x1c\xf7\xb9\x6b\x88\xb3\x7b\xae\xde\x47\xcc\x5b\x79\x2c\x31\xf2\x1e\xa2\x2f\xb9\x18\xdf\x67\x40\x8b\xe1\x3a\xba\xf4\xc5\x99\x74\x37\x85\x1d\x32\xe7\xc1\xf4\x8b\xae\x7a\x2d\x24\x44\x2d\xd0\x92\xff\x95\xb6\x98\x7f\x8c\x35\xcf\x80\x72\xad\x2d\x13\x62\x1d\x6c\x30\xc0\x40\x70\xe3\x72\x80\xdb\x4a\xee\xb0\xc9\xc4\xcc\xc3\x4d\xd3\x35\xb8\x85\x57\x21\x73\xdc\x15\x89\x9e\x79\x29\x2e\xb7\xde\xea\x57\x4a\x89\x6e\x1d\x27\x22\x61\xa2\x94\x13\xe8\x0c\x3f\x85\xdb\x0e\x56\x92\xd1\x9f\x1c\x74\x16\xe8\x26\x1b\x8d\x3f\xc3\x29\x58\x5d\x63\x9f\xcb\x53\xc1\x9d\x01\xc6\xcd\xf6\xaa\x46\xb6\x7d\x5c\x41\x86\xf6\x47\x39\x1a\xd7\xeb\x97\x4f\xd6\xa1\xf5\xec\x0c\xe6\x4c\x98\xc1\x04\x71\x6e\xae\x0d\xed\x52\xda\xfd\xfe\x74\xd0\x95\x93\x19\xc2\x8a\xdb\x22\xd7\x6c\x25\x61\xae\x55\x79\x6f\x4e\xdc\x2c\xe8\x7c\xc9\xb8\x60\x2e\xed\xfe\x19\x74\x74\x0e\x1e\xef\x5c\x55\xb0\xe2\xe4\xb4\x7f\x7b\x77\xec\x8f\x56\xb6\x1f\x26\x03\x62\x07\x18\x80\xc7\xae\x7d\xef\x10\x66\xf1\x64\x8b\xe9\x45\x5d\xa2\xb4\x89\x20\x95\xfd\xa8\x3d\xc0\x36\x08\x05\x7f\x84\x32\x33\x19\x9c\xfa\xdf\x36\x94\x46\xda\x0b\xae\x7e\x61\x59\x29\xcd\xf4\x3a\x74\x1c\xf1\x70\xd7\xf1\x3e\x62\x7a\x4a\xe4\x89\x06\x5b\x60\x3c\xe8\xf5\x06\x68\x84\x19\x72\xb9\x00\xab\x99\x34\x73\xd4\x1a\xf3\x09\x4d\x14\x37\x1d\x49\x48\x5c\xb5\xba\x30\xd2\x13\xbb\x82\x30\xad\x4a\x7a\x03\xa7\xd9\x77\x19\x54\xf5\x79\x83\x80\x1c\x2b\x65\x78\x3c\x5a\x8e\xba\x50\x18\x5c\x51\x67\xd0\xbf\xf0\x00\x8a\xb4\xf4\x46\x1c\xf8\xc4\xb6\x1a\x44\x45\x4f\xd3\x7c\x77\xf9\x4b\x6e\x0f\x43\x80\xfa\x50\x75\x72\xd8\xee\x52\x36\x45\xd6\x4b\x0c\x66\xbb\xe0\x82\x87\xa1\x2b\xb8\x59\xcd\xfe\x83\x59\x17\x62\x0e\x56\x2c\xcf\x4d\xa2\x86\x5b\xd3\xb4\x09\x21\x3a\x49\x3b\x82\xa0\x56\x12\xb5\xd9\x01\x71\xdc\x00\x13\x42\xad\x3c\xa2\x72\x34\x56\x2b\xdf\xcb\x1a\x9a\xde\x9b\x36\xc3\x8c\xd5\x06\x37\x20\x4e\xf7\x14\x99\xdc\x02\x2b\xc1\x12\x75\xb4\x24\x34\x61\xae\x73\x72\xb2\xff\xd8\xd8\x5e\xb0\x74\x5d\x33\x44\x49\x38\x33\x75\x89\xb9\x5b\xba\xeb\x29\xe7\xca\xf5\xc6\x01\x64\xce\xc2\xd8\xe1\x0e\xc0\xa9\x29\x8a\x21\x20\x23\xda\x83\x43\x64\xae\xdb\x84\x50\x15\xf0\x25\xe8\xe4\xd0\x6f\x5e\x66\x7e\xe8\xc3\xda\xce\x48\x7b\xe2\xf5\xf5\xf6\x1e\xc9\x9b\x4e\xbb\x01\xfe\x24\xc8\x85\x24\xcd\xa5\x1d\xdc\x75\xe9\xe5\x8e\x00\x4c\xd3\x8d\x8f\x35\xed\x36\x60\x6d\x3c\xfd\x85\x5a\x6d\xa5\xba\x98\x40\xf8\x26\x3f\x30\x21\x28\xd5\x84\x3c\x41\x0d\xbc\xeb\xf8\xcb\xda\xf8\x7c\xe1\x6b\x42\xe4\x2a\x5b\x1a\x1d\x51\x73\x9a\xbc\xee\x26\xff\x74\xc9\x19\x3d\x50\x3a\xf7\x64\xc2\x81\xd7\xbf\x4f\x35\x66\x99\x4b\xbe\x9e\x25\x30\xdf\xc5\xc6\x1e\x22\xc2\xc2\x34\xdd\xbb\xef\x70\xa9\x06\xee\x86\xab\x2d\x3e\xbf\x53\x36\xba\x27\xb9\x1c\x4f\x8e\xbb\xdc\xb7\x45\x74\x3d\x0b\x1a\xe4\x75\x31\x7f\xf8\xcc\xe2\x96\xc3\xf2\x92\xc8\x94\xf7\x84\xe7\x7d\xb4\x37\x23\x57\x7a\x18\x47\x0a\x24\xec\x36\xf1\x32\xa9\xf1\x9f\xf9\x76\x44\x1c\x09\x98\xd6\xc4\x07\x2e\xb9\x51\xfc\xca\x88\x23\xdb\xfa\x9a\x78\x30\x88\xbb\xb6\x44\x17\x79\x3b\x45\x70\x63\xfa\x63\xea\xca\x63\x08\xc8\x93\xbe\x7a\x83\x25\x1f\xf8\xe8\xea\xff\xc6\x8f\xae\x69\x67\x39\xe1\x39\x4a\xcb\xe7\x1c\xf5\xf8\xdb\xca\x57\x07\x64\xbd\x89\xa4\x0d\xb7\x6f\x4a\x20\xdf\x37\x79\x7c\xdf\xc4\xf1\x1d\x92\x46\xdf\xfe\xe9\x4d\x16\x9d\xc3\xbf\x7b\x11\xd7\x44\x15\xee\x49\x1c\x21\x92\xee\x60\xa0\x5d\xd6\x1c\x7a\x52\x98\x3e\x3d\x3e\xa6\x52\x93\x0e\xe9\x7e\x40\x87\xd3\x3b\x4e\x96\x7b\x44\x37\x9f\xc2\x49\x72\xe8\x54\x38\x15\xdc\xfe\xa4\x3e\x20\x1b\x07\xa6\xe2\xdd\xcf\xeb\x43\x26\xbb\x71\xc9\xb9\xcb\x6b\xef\xcb\xcd\x89\x9e\x43\x6e\x37\x05\xb9\x68\x87\xff\x3c\x41\x60\x63\x4b\x24\xdc\x72\x99\x9c\x15\x7a\x95\xcd\x65\xd2\x42\xf4\xc7\xac\x1b\x92\x71\x9f\x6d\x0c\xbc\x1f\x20\x63\x15\x9b\x71\xc1\xed\x3a\xee\x18\x87\xfa\xbc\xcd\x0c\xf0\xa6\x52\x06\xdb\x99\xd8\x1f\xd2\x04\xdc\xc6\xe3\x19\x7f\x70\x89\xf6\xdc\xd1\xe8\x40\x40\xe3\x3b\x5b\x68\x55\x2f\xbc\x17\xae\xa2\xc3\xaf\xc0\xe5\xfe\x39\xcb\xda\x8b\x8d\xfd\x19\x5c\x85\x35\x5d\xf5\x2a\x79\x15\x5f\xf6\xe9\x48\x1c\xd6\x8e\xd6\x6b\x56\xc5\x26\x2a\x6c\xca\x49\xe3\x02\x8e\x66\x12\x7c\x3f\xe1\xc6\xd4\x03\x47\xfe\xbd\x80\x1e\xa7\xe0\xe9\xd5\xed\x5c\x6e\x8a\x51\xc7\x9e\x03\x60\x76\xda\x8b\xf5\x71\xb2\x8c\x78\x4e\xf1\xff\xb0\x84\x96\x2d\x2d\xf3\xb7\x77\xdc\x78\xaf\x5f\x69\xb4\x91\x50\x3f\x3a\x39\x74\x90\x3e\x00\xab\xee\xfa\xe0\xd4\xd2\x45\xee\xf0\x4d\xc8\x66\x1b\xf8\x3e\x62\x34\xb0\x8a\xce\x84\x4e\xd8\x4f\xd8\xbb\xd9\x63\xd6\xfb\xba\xf7\xdf\x00\x00\x00\xff\xff\x1d\x03\xee\x05\x92\x25\x00\x00" + +func contractsTestingExampletokenCdcBytes() ([]byte, error) { + return bindataRead( + _contractsTestingExampletokenCdc, + "contracts/testing/ExampleToken.cdc", + ) +} + +func contractsTestingExampletokenCdc() (*asset, error) { + bytes, err := contractsTestingExampletokenCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "contracts/testing/ExampleToken.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x19, 0xe1, 0x22, 0xe2, 0x84, 0x9e, 0x35, 0x53, 0x73, 0xe9, 0xd7, 0x66, 0x7f, 0x34, 0x84, 0xde, 0xb, 0x2b, 0xe6, 0x23, 0x4e, 0x51, 0x16, 0xb7, 0xab, 0x54, 0x32, 0xdc, 0x41, 0xf3, 0x91, 0xdb}} + return a, nil +} + var _contractsThirdpartyNft_catalogNftcatalogCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3b\x5f\x6f\x1b\x37\xf2\xef\xfa\x14\x13\x3f\xfc\x7e\x52\x4f\x95\xda\x43\x51\xe0\x84\xaa\xa9\x9b\xd8\x80\xd1\x26\x67\x24\x76\xfb\x10\x04\x05\xbd\x3b\xb2\x08\xaf\x48\x1d\xc9\xb5\x6a\x18\xfe\xee\x07\x2e\x97\xbb\xe4\x72\x76\x57\x0e\xfa\xe7\x1e\xe2\x87\x44\xda\x9d\x19\xce\x0c\xe7\x3f\x29\xbe\xdb\x4b\x65\xe0\x0d\x1a\x96\x33\xc3\x7e\xe1\x78\xd0\xb0\x51\x72\x07\x27\x8b\xc5\x72\xb1\x58\x6a\xc3\x44\xce\x54\xbe\x8c\x40\x16\x59\x9e\x9d\x4c\x26\xcb\x25\xbc\x3d\xbf\x7a\xc5\x0c\x2b\xe4\xed\x64\xb9\xb4\x0f\x4e\xe1\x16\x05\x2a\x56\xc0\xbe\x54\x7b\xa9\xd1\x82\x80\xc2\x5b\xae\x8d\x7a\x80\x8d\x54\x70\x5e\xc8\x03\xbc\x95\xe2\xbc\x14\xb7\xfc\xa6\xc0\x2b\x79\x87\x42\x2f\x6a\x02\x67\x2c\xdb\x42\xe6\x68\x02\x0a\x8b\xa4\x8d\x54\xa8\xc1\x2e\x0f\xec\x46\x96\x06\xcc\xd6\xd1\xe5\x22\x2b\xca\x9c\x0b\xbb\x3a\x70\xa3\x21\x93\x45\x81\x99\xe1\x52\x00\xcf\x51\x18\xbe\xe1\xa8\xe6\x20\x36\x06\xcc\xc3\x1e\xe7\x15\x2d\x76\x8b\xc0\x44\x0e\xfb\xf2\xa6\xe0\x19\xec\x99\xd9\xea\x39\xa0\xc9\x3c\x0f\x57\x12\x76\xec\xce\x02\x01\xcb\x73\x5e\x91\x33\xb2\x5a\xd5\x73\xf6\x20\x4b\xc8\x98\x80\xbd\x92\x95\x94\x4c\x54\x0c\x55\x64\x95\xbc\xe7\x39\x56\xfc\xec\x6a\xb5\x2d\x2a\xdd\x08\x38\xcd\x77\x5c\x54\x88\x6c\x6f\xe1\x10\x58\x4d\x82\x15\x70\xd8\xf2\x6c\x0b\x07\x59\x16\xb9\x5d\xb7\x91\x32\x5e\x7a\x32\x61\x59\x86\x5a\x4f\x59\x51\xcc\x20\x93\xc2\x28\x96\x99\x60\x27\xe0\x71\x02\x00\x60\x75\x69\xd5\x77\x9a\xe7\x98\xfb\x27\xa7\x8e\xcd\x40\x4d\x5b\xa6\xe1\x06\xb1\x92\x14\xf3\xee\x5a\x16\x2d\x5c\x0e\xef\x51\x98\x80\xee\xb4\x82\xb0\x7f\x2d\xc9\x8b\x46\xf1\xb0\x82\xf7\x46\x71\x71\x3b\x0f\xc0\x1c\xbf\x6f\xd9\x0e\x07\x5e\x9f\xe6\xb9\x42\xad\x61\x05\xf5\xa7\x16\x44\x6c\xcc\xd5\xc3\xde\x22\xdb\xff\xda\xe7\xf5\xce\x5e\x32\xb3\xb5\x74\x9b\x2f\x2d\x84\xdb\x6f\x07\x70\xd9\x7c\xee\xbe\xff\x99\x8b\x3b\xcc\xc9\x25\x72\xae\xf7\x05\x7b\xe8\xe1\x3d\x47\x9d\x29\xbe\xb7\x2a\x48\x5f\xe2\xef\x06\x95\x60\xc5\xf5\xbb\x9f\x1b\xd4\xea\xe5\x6c\x12\xed\xd6\xf5\x3e\x67\x26\xd9\xaf\x57\xc4\x7e\x95\x0e\x12\xb8\x38\x76\xc7\x6a\xda\x9f\xf7\xec\x0f\xde\xb3\x77\xb8\x93\xf7\x47\xed\x99\x72\x90\x2e\xc4\x1e\xb9\x6b\x35\xf5\xe9\xf0\x66\x79\x15\x3b\xf1\x5b\x06\x2f\xeb\xe0\x42\x84\x02\x10\x78\x68\x83\x8f\x89\x62\x1e\x15\xf2\x1a\x29\x76\x2c\xc7\x1e\x8e\xd3\xe5\xa6\x7e\x85\x8b\xd7\xb0\x82\xeb\x0b\x61\xbe\xfd\x66\x3e\x62\x79\xb0\x43\xad\xd9\x2d\xb6\x0f\xb4\x61\xa6\xd4\xed\xf7\x3a\xec\xaa\xd6\xd8\x7a\x44\xee\xfa\x53\x2b\x70\xd7\x91\x8e\x91\xc8\x7b\xd0\xdf\x2b\x53\xd7\xde\x08\x99\x22\x43\xab\xbd\xec\x18\x01\xbd\xb1\x11\x02\xd6\xcc\x84\x04\x0a\x6c\xd1\xdf\x30\xc1\x6e\x51\xbd\xef\xf1\xe8\xa3\x90\x2f\x49\x67\x8f\x50\x35\x16\x1b\x87\x5b\x9b\xe5\x0a\x1e\x9d\x02\x61\x15\xe4\xc0\x45\xfb\xd1\x57\x2e\x4f\x56\x57\x8f\xf4\x2e\x7d\xf9\x7d\x53\x03\xc1\xd3\xe0\x72\xd6\xbb\x5e\x33\xc3\xc2\x65\xdb\x4f\x3f\x4a\x59\x3c\x55\x0b\x9d\xd6\x75\x03\x2b\xe0\x9e\xe3\xc1\xfa\xd2\xad\x74\xdb\xf1\x58\x85\x87\x2a\x58\xc5\x2c\x3c\x06\x21\x23\x32\x21\x4b\x16\x9e\xe0\x69\x58\x13\x5e\x99\x36\x02\x3f\xba\x3d\x8b\x74\xe2\xdf\xd7\x8a\xb8\x0c\xb7\x38\x90\x3e\x5d\xe3\x9e\x29\x30\xd2\xb0\x22\x5c\xc1\x2d\xd0\x18\x68\xba\x4c\xbd\xa7\x1e\xe0\x5a\xbb\xea\x82\x95\x66\x6b\x45\xcb\x98\xc1\xc6\x70\x75\x15\x53\x92\x42\xa7\x6b\x32\x0a\xb5\x2c\x55\x86\xc0\x85\x41\xb5\x61\x19\xf6\xaf\xeb\xec\xa7\xae\x85\xba\x84\xaa\x2d\xd9\x94\x02\x6e\xd1\xbc\x2a\x95\x42\x61\x22\x37\x98\xce\xbc\x5b\xbe\xac\xf0\x9f\x52\x5e\xac\x0c\xa6\xc0\x5d\xe8\x42\xa7\xd5\xde\xfd\xfb\x20\x50\x0d\x30\xdf\xcb\x32\xb5\x59\x7d\xd2\x90\x9b\x94\x11\xa2\xb4\x82\x50\xb8\xcf\xd5\x46\x87\x03\xfb\xa7\xd0\x94\x4a\x80\xe5\x62\x41\x31\x10\x21\x3c\x91\x5c\x10\xfa\x9b\x55\x0c\xe9\x1e\x86\xda\xda\xbe\xe1\x6c\x46\xb0\xd6\xcb\x13\xac\x83\xf6\x60\x88\x41\x2e\xb8\x81\xe9\x73\x69\x0b\x5e\x74\x88\xd6\xa4\xfb\x8d\xe2\xbd\x60\x7b\xbd\x95\xa6\xcf\x60\xed\xee\x3a\xcb\xf0\x90\x74\xe0\x6b\xa2\x5d\x2f\x19\xbd\xb5\x0d\xc6\xb5\xc6\x96\x90\x8d\x2f\x13\x12\xa1\xde\x84\x4b\xa6\x0c\x67\x85\xc7\x98\xfe\x06\xba\xfe\xf8\x13\x3e\xb4\x19\xac\x7d\x5c\x9b\x5e\xca\x57\x57\x95\x4e\x8d\xb1\x64\x1f\x02\xe2\x1f\x61\x1d\x13\x9d\x10\x3b\x45\x70\xfc\xbe\x2b\xa5\xe5\x99\x96\x9c\x64\x29\x81\xb5\x7c\x74\x9f\x8d\xf1\x12\x39\x56\x2c\xa3\xf5\xa9\xc1\xfd\xeb\x30\x15\x79\x59\x4c\x8a\xe2\xc2\xda\x6d\x62\xb6\xbd\x82\x6d\x58\xa1\x71\x74\x5b\x60\x0d\x8f\x4f\x93\xc4\xa6\xa9\x0d\xc8\x14\x32\x83\x67\xbb\xbd\x79\x08\x05\xfe\x81\xb0\xf2\x5a\xb0\xef\xbe\xac\x91\xa0\x45\x08\x57\xa8\x53\x4c\x93\x20\x6d\x0e\xf6\x2f\xde\xe1\x5e\xa1\x46\x61\x34\x70\xb1\x91\x6a\xc7\xaa\x14\xea\x46\x05\x2c\xe9\x78\xbd\xcf\x35\x74\xa5\xc1\x95\xfd\x17\x4a\x6d\xb7\xc3\xa6\x20\x6d\x54\x99\x19\x97\xaf\x9b\xdc\xe8\x87\x21\x90\x97\x36\x57\x79\x7c\x2e\xd8\x0d\x2f\xb8\x79\xb0\xf9\xab\x9a\x55\x58\x1d\x54\x6b\xe9\x44\x3b\x35\xe1\x44\x16\x78\xa4\x4d\xc8\xe6\xf7\xa0\x4b\x82\xb8\xa8\xea\xc3\x68\xbb\x26\x88\x2a\xa9\x61\xf8\xb6\x8b\x72\x5d\x44\xc7\x9c\x62\x03\xe9\xe3\x69\x1e\x81\xf5\x30\x42\x01\x0d\xf4\x70\xb4\x21\x07\x1c\xac\x43\x7e\x52\xd0\x80\x8b\x75\xc0\x52\x1f\x60\xc0\xc9\x3a\x61\x8e\x76\x80\xa8\x02\xf2\x06\x43\xd8\x67\x30\xc3\x72\x86\x39\x64\x20\x31\xb5\x9e\xcc\x50\x15\x80\x54\x83\x3e\x0a\x9d\xf4\xeb\xbd\x18\x51\x6f\x39\x40\x37\x34\xe8\x55\x8f\xbf\x8e\x60\xba\x6e\x7d\x15\x8f\x24\x17\x31\x29\x07\x13\x5b\x27\x4c\xe9\x29\xc5\xc0\x74\x22\x16\x6b\xde\xe1\x1f\x08\x01\xe6\x29\xa7\x70\x0c\xab\x74\xd2\x0b\xf9\x5d\x47\x7b\xd8\x0f\xec\xa5\x58\x77\xe5\x4a\x51\xfc\xcc\x65\xed\xe5\xa4\xa8\x46\x12\xaf\x3b\x2a\x18\x44\xa8\xc5\x5f\xa7\x2a\x39\xc2\x43\x7c\xc1\x44\x78\x08\x8b\x46\x12\xdd\x19\xc9\x72\x09\x17\xd5\xcc\x17\x3f\xc9\x97\xfc\xba\x83\xbe\x34\xd0\xc5\xf7\x62\xf9\x39\x2f\x99\xcb\x07\xb0\xaa\x91\xc0\x38\x79\x37\x2a\x18\x87\x4b\x47\x08\xfd\x72\x56\xd9\x36\xbf\xe2\x95\xb7\x5c\x9f\xf3\xdf\x7d\x37\xe7\x5d\x6a\x6c\xe2\x34\x28\xf3\x3c\x11\x6e\xde\x95\x82\x9c\x78\xd0\x9e\x42\xf0\xb1\x26\x77\x2a\x45\x6e\xb8\x5c\x37\x0c\x53\x40\x8e\xd7\xb5\xe7\x9a\x4a\x37\x15\xf3\xeb\x5a\x0a\x22\x77\x78\x61\xd6\x8d\x5c\x84\x28\x81\xd6\xd7\x41\xbf\xf5\x63\x21\xb3\xbb\xe9\x6c\x61\xf8\x0e\xb5\x61\xbb\x7d\x8f\x13\x7d\xd1\x3c\x7f\x7d\x76\xf9\xee\xec\xd5\xe9\xd5\xd9\xeb\xe6\xd1\xc5\x06\xe4\x8d\x61\x5c\xd8\x2a\x86\x15\x05\xa0\xeb\x4f\x75\x32\x6f\x04\xae\x01\xb5\x75\x38\xce\x8a\x39\xec\x0b\x64\x41\x01\x58\x6a\xac\x80\xdb\xaa\xf5\x27\x7c\xd0\xd5\xd9\xc6\x46\xaa\x33\x96\x6d\xdb\xc7\x56\xa9\x5b\x99\xdb\xca\x4b\x1b\x64\xf9\xc2\x51\xf9\x62\x99\x38\x23\x51\x0c\x4f\x67\x70\x7c\x15\x5c\xf9\x41\x50\x8c\x5b\x75\xb2\x2c\x93\xa5\x30\xbe\x16\x58\xdc\x48\xa5\xe4\xe1\xbb\xff\x0b\x06\x41\xbe\x9c\xfc\x7e\x6a\x95\xb0\x82\x65\x0d\xbb\xec\x14\xe4\xb3\xd6\xf6\x37\xed\x3a\x2f\xaa\x66\xae\x63\x94\x5d\x4e\xea\x8f\x2f\xe2\xce\xb1\xa5\x42\xd4\xdc\xfd\x6d\xb4\xc7\xa1\x5a\x86\xb8\xa9\x04\x2c\x34\x8e\x35\xe4\x41\xec\x8c\x2d\xaa\x97\xc4\x10\x7a\x6f\xd1\x4f\x6c\xae\xb5\x19\x5b\xf4\x7f\x70\xfb\xfb\x31\xad\xf9\xc3\x25\x16\x77\xf8\xa0\x87\x5a\x8a\xc4\xf2\xa6\xbf\x35\x65\xf6\xaa\x82\x98\xba\x85\x66\x69\x57\x17\x2d\x54\x13\xb2\x14\x3c\xfe\xec\x19\x62\xb9\x01\xc4\x60\x68\x9c\x91\xb6\xfc\x72\x58\x01\x1f\x28\x92\x1f\x8f\x62\xac\x41\xd4\xe7\x52\xd9\x4c\x3f\xad\x33\xfe\x45\x32\x26\x99\xa5\xe3\xca\x11\xbe\xfc\xc0\xf3\x43\x42\xf3\x38\xe6\x62\x2a\x1d\x8f\x4f\x26\xa7\x47\xb1\xd2\x29\x2b\x2e\xe3\x23\xd8\xa0\xd3\xa3\x0b\x88\x1f\xf6\x4c\xb1\x1d\x99\x3e\x56\x70\xb5\x45\x28\x05\xff\x4f\x89\x20\x6c\x61\xc6\xb4\xed\x09\xfd\xc1\x28\xd7\xd5\x51\x72\x8b\xda\xa1\xe9\x33\x8c\xa3\xd3\x54\xee\x1b\xa9\x9a\xc3\xdc\x90\xbd\x2d\x33\x70\xe0\x45\x01\x37\xe8\x1a\x47\xf2\x34\x2f\x24\x5f\x1f\x21\x9c\x36\xd9\xb5\x73\x46\x23\x0f\x02\x95\xee\xa0\xf9\x74\xb4\x82\x5f\xb7\xd2\x86\xfe\x1d\xbb\xf3\x8d\xae\x7b\x57\x8d\xaa\xa7\xf6\x3b\xab\x0b\x4c\x81\x98\x6b\x4b\xfd\x06\xe1\x1e\x95\xd5\x4e\x3e\x23\x1d\xb3\xa6\xfe\xf6\xfc\xca\xcb\xfb\x87\x17\x0e\x54\x9d\xe0\x27\xd0\x9d\x0c\xe1\x41\xeb\xb9\xe9\x3b\xdc\xb8\x3c\x7b\xea\x32\xc5\xd4\xbf\x9f\x2d\x32\xb6\x77\x7d\x3b\x47\x4d\x24\x8e\xce\x00\xf6\xfb\xb8\xfd\x0d\x12\x4c\xef\x19\x46\xd0\xbe\xbe\x7c\x09\x7b\x26\x78\x36\x3d\xb9\xf4\xa2\x34\x0a\xd6\x68\xa0\xdc\x03\x83\x9d\x23\x70\x32\x0b\x26\x01\x5a\xa3\x6a\x99\x6e\x85\x5a\xf4\x8e\x6a\x5f\xc0\x9a\x2e\x8d\x82\x13\xa8\x93\xb3\xdf\xf7\x98\x19\xcc\xdb\x5a\xdb\xdd\xb4\xc8\x25\x6a\x10\xd2\xc0\x8e\x99\x6c\x5b\x3f\xf4\xd6\xeb\xb9\x08\x19\x24\x8e\x1f\x60\x4d\x14\xdc\x7d\x26\xd1\xc7\x68\x63\x20\x3b\xc2\x2c\xea\x4f\xed\x09\xda\xc9\xc5\xdb\xdf\xde\x9d\xfd\x72\x71\xf6\xeb\xc9\x3c\xb0\xf6\x66\xaf\xe3\x44\xd0\x39\xca\x58\x93\x4f\xff\x01\x5f\x93\xe9\xa3\x81\xf8\x40\x60\x7d\xb4\x55\x69\xa7\xc3\x69\xa8\xe0\x8e\x8f\x9f\x8f\x12\x44\x7b\x0f\x16\x47\x36\xb9\xc3\xc8\x22\xd1\x5a\x17\xc0\x3d\x0f\x15\xd8\x85\x48\x15\x1a\x46\xe9\x98\xed\x4e\x90\xfe\x95\x9b\x6d\xae\xd8\x21\xec\xef\xc8\x53\xf0\x6e\xd8\xb2\x8a\x71\xe1\xf4\xe2\x35\xc8\x4d\x8b\xfd\x20\x4b\x38\x30\x61\xac\x0f\x1d\x6a\xea\x64\x80\xf2\x2f\xdf\x9e\x5f\x35\xe6\x48\x9d\x6f\x06\x91\x64\xaf\xba\x55\x11\x6d\x03\x2d\x99\x8f\xbe\x54\xb4\xd6\x28\xee\x59\xc1\xf3\x66\xb3\xe1\xe2\xf5\x49\xa7\x84\x8a\xc3\x55\xe5\x34\xa3\x2b\xbc\x20\x03\x5d\xd3\x6e\x04\xfb\x33\xf9\x1c\x12\x93\x90\xd8\x28\xe9\x2f\x8b\x8d\xd5\x86\xba\x83\xf8\x6e\x34\x8c\xcc\xaf\xfd\xf2\x9c\x3a\xb4\x31\x11\x57\x52\x0d\x9e\xf7\x0e\x56\x55\xa4\xc7\x1e\xb9\xb8\x53\x30\xe9\x4c\x14\x27\x23\xa5\x26\x69\xf5\x9f\xc0\x95\xeb\x3c\x60\x05\x1f\x1c\x33\x23\xad\x47\xb3\xec\x33\x7b\x90\x60\xb9\xb4\x17\xa9\xd5\x30\xdc\x8b\xb4\x2b\x3f\xa7\x29\x69\x0f\x58\x7a\x5d\xb3\x3a\x6c\xe9\x7d\x4b\x9d\xbe\xd4\x87\x2f\x03\x14\x29\x76\x5c\x04\x71\x2c\xb1\x3c\x3f\xbe\x45\x9a\x07\xa5\xf2\xf0\x21\xe1\x70\x28\xa6\xbb\x26\xeb\xef\x75\x2c\xb6\x89\xc3\x96\xec\x55\x31\xbf\x65\x1a\x58\xa1\x90\xe5\x0f\xfd\x77\x1e\xc3\x50\x1d\xef\x5a\x2b\xa1\xed\x44\x06\xa5\x24\x1f\x87\x42\xfb\x4f\xdd\x78\x31\x22\x57\x3b\xc3\x8a\xeb\x0a\xea\x46\x26\xf4\xdf\xf0\x23\x63\x60\x07\x31\x9a\xa6\x37\xf7\x58\xc3\xe7\x34\x46\x3b\x68\x4f\x90\x92\x7b\x81\xd0\xde\x0d\x0c\xc0\xeb\x27\x31\x58\x74\x55\x30\xa0\x1c\x0e\xac\xc3\x33\xa1\xbe\x73\xa8\x7e\xe4\xfd\xf1\xc7\x53\xc3\x24\x5a\xd0\x98\x50\x7c\x15\x91\xa2\xe1\x00\x16\x22\x51\x6e\x74\x4f\x71\x00\x33\x80\x8b\x09\xc4\x77\x19\x07\x28\x04\x80\x8b\x52\xb5\xf7\x18\x46\xfd\xdf\x5d\xa3\x3b\x3e\x04\xc0\x9f\x1c\x03\xd2\x7a\x8c\xbc\x1c\x4e\x55\x66\xcb\x65\x7d\x81\xce\xae\x7c\xcf\x65\xa9\x9b\x1b\xe4\x2e\xef\x0f\xe4\xf8\x3f\x32\x34\x04\xfc\xb0\x3c\x6f\x6e\xfc\x0e\xf1\xf2\xbf\x19\xa3\x82\x43\xc4\xe0\xbd\x77\x74\x2a\x96\x25\x77\x95\xe1\x73\x34\x6b\xfe\x3e\x47\xb3\x3f\x3d\x9a\x45\x3e\x7d\xd4\xcc\xf7\xaf\x0f\x57\x91\x7b\xd5\x37\x7e\x6b\x17\xfb\x33\xe2\xd2\xb8\x10\x2f\x66\xf4\xc8\xdd\x31\x32\xbd\xc3\x07\x7a\x99\x19\x15\x01\x46\xee\xbd\xd3\x6d\x5c\xe3\x7e\x81\x3a\xba\xf7\x88\xae\xb6\x5c\x37\xe5\x3a\x70\xd7\xd4\xed\x15\x6e\x50\x29\xcc\xe7\xd5\x39\xd7\x81\x69\x28\x35\xe6\x4d\x83\xb7\x91\x45\x21\x0f\x36\x6d\x71\xad\x4b\x5c\x79\x62\x5b\x63\xf6\x7a\xb5\x5c\xde\x72\xb3\x2d\x6f\x16\x99\xdc\x2d\xa5\xd8\x14\xf2\xb0\xcc\x58\x8e\x22\xc3\x65\x05\xaf\x97\xff\xfc\xf6\x9b\x7f\x79\xa4\x8b\x0d\xb0\x26\xc2\xfc\xbf\x76\xc1\xbc\x62\x04\x0a\x29\x6c\x85\xae\x50\xcb\xe2\x9e\xdd\x14\x08\xd5\xef\x85\x2a\x52\x15\x67\x99\x62\x7a\xdb\xfc\x4c\x61\xb9\x74\x53\xe9\x46\x9c\x8c\x09\xb8\x41\xc7\xbb\x91\x3e\x8d\x71\x93\x0c\x5b\x16\xcf\x30\xfd\x6b\xa1\xd9\x06\xc9\x9d\x48\x7e\x80\x40\x9d\x39\x3c\x86\x99\xcc\xed\x6b\x34\xb5\x26\xf2\xd8\x27\x98\x4e\x4c\x9b\x48\x90\x7c\x03\xd3\x23\x8f\x36\x5e\x54\xbd\xe0\xa2\x40\x71\x6b\xb6\xb6\x9d\xf8\x7a\xe8\xe2\xa2\x27\x14\x71\x9b\x10\x9d\x0d\x9f\xbb\x1d\xcd\xd9\xb8\x4a\xda\x10\x31\x12\xe5\xa2\x9a\x8d\x98\x4e\xb4\x3f\x6e\xf0\xcf\xde\x50\xb3\x7b\x8f\x39\xda\xe7\x46\x03\xb3\x75\x42\x74\x68\x58\x4a\xfe\xf4\xa2\xfd\xd2\x3b\x25\xed\xae\x31\x36\xff\x49\xe0\x93\xb9\x69\x02\x91\x0e\x4e\x13\x90\x78\x72\x7a\x6c\xde\x39\x76\x5c\x49\xcf\x14\x5a\x3b\xe9\x0c\x99\x06\xb4\x4c\xfe\xfe\x63\x78\x40\xe5\xe3\x58\x77\x0a\x30\x9a\x70\x9e\xdd\x06\xf0\x0d\xed\x24\xdd\x52\x6b\xc1\xd3\xbc\x9a\x9e\xe0\x9b\x1a\x3d\x3d\x86\xec\x0c\x63\x8f\x5a\x27\x3e\xfc\xaf\x87\x94\xcf\xa7\x32\x38\xcf\x08\xcf\x40\x3e\x65\xb0\x11\xdf\x1f\xf0\xf2\xf7\x96\xf1\x46\x95\xfd\x97\x82\x8f\x53\xfe\xba\x59\x65\x38\xf6\x8d\xee\x47\x70\xf1\xf8\xef\xe4\x7d\xd4\xfc\x9f\x57\x72\x1d\xe7\x01\xee\x7e\x62\x72\xce\x89\xf7\x6f\xda\xab\x4d\x47\xd4\x66\x09\x7a\x7a\x6f\xa0\xcf\xf0\xc3\xc5\x86\x8d\x9f\xa6\x1b\x87\xa2\xe1\x9c\xc5\x37\x7d\x44\xda\x64\xfc\xd5\x73\x73\xf1\x88\x00\x9f\x92\x99\xc7\x74\x52\xa5\x37\x4a\x0e\xaa\x80\xaf\xc7\xb0\x49\x63\x1c\x80\x25\x37\xfa\x2b\xae\xfa\x7f\x7d\x07\xeb\xf6\xaa\x93\xd8\x74\x47\xe4\xe1\x8f\xb3\xfa\x88\x5d\x86\xb7\xa6\x97\xae\x19\x1c\x20\x15\xd3\x4a\x0e\x59\xbf\x22\xb3\x55\xec\xda\x94\xa2\x1d\xc4\x70\xaa\x6b\xa9\x3c\x4d\x26\x4f\x93\xff\x06\x00\x00\xff\xff\xb2\x69\x56\x7c\xd6\x40\x00\x00" func contractsThirdpartyNft_catalogNftcatalogCdcBytes() ([]byte, error) { @@ -468,7 +468,7 @@ func contractsThirdpartyVersusContentCdc() (*asset, error) { return a, nil } -var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\x4f\x6f\xdb\x4a\x0e\xc0\xcf\xce\xa7\x28\x74\x6e\x1d\xce\x3f\xce\x4c\x6e\xdd\x76\x7b\xeb\x1e\x9a\xee\x5e\x8a\xc5\x03\x67\xc8\x49\x8d\x38\x52\x9e\x24\x27\x28\x8a\x7e\xf7\x07\xc7\xb2\x63\x3b\x4a\xec\xe6\xa1\x79\x68\x4e\x09\x45\x32\x3f\x52\x24\xc5\x99\xef\x27\x93\x2a\x37\x75\xdf\x52\xee\xbb\xea\xec\xd5\xf7\x93\xc9\xa4\x7a\xdb\xf6\xc3\xaf\x93\xaa\x6b\x16\x6d\x96\xea\xec\x55\x35\x3d\xdd\x28\x9e\xf6\x5f\x67\x2d\x5f\x53\xdb\x7f\x3b\xbd\x91\xb6\x5b\x74\xa7\x6f\xdb\x7e\x9a\x39\x57\xaf\xef\xac\x68\x3e\xa3\x4e\xd6\x0e\x27\x93\xea\x8a\x66\x75\x2d\x4b\xb7\x15\xfb\x88\xa5\x28\xaf\xc0\xa7\x54\x0a\xae\x4c\x26\x55\x2f\x5d\x3f\xa8\xc4\x98\x09\xac\x0e\x0a\x62\x48\xc6\x70\xb5\xd4\xf8\x71\x32\x99\xfc\x58\xea\x56\xff\x5a\xb4\xb5\xb4\x07\x10\xbb\x9e\x6a\xa6\x96\x4f\x57\xda\x4f\xc1\xc9\xd5\x62\x4e\x7d\xb3\xf4\x58\x95\xc0\x28\xe0\x02\x26\x20\x0d\xd9\x6f\xd3\xcd\xea\x8b\xa5\x0a\xec\xfe\xf8\xb1\x00\x08\x3c\x22\x47\x93\x10\x21\x24\xbf\x17\xc0\xbb\xa6\xee\xa5\xfe\xf9\x24\x0f\x76\x2f\x96\xe8\xf7\xb3\x8b\x59\x4f\xf3\xc3\xf5\x70\xaf\x78\x24\x9b\xc9\xc9\x67\x91\x84\xda\x11\x02\xd0\x08\x9b\xb7\x2e\x41\x70\x4c\x85\xd9\x96\x0c\x7b\x6c\xff\xbe\x91\xf6\xa2\x15\xa9\x0f\xa0\x6d\xf4\x5e\x8c\xec\xc3\x7f\xcf\xdf\x1f\x5b\x9c\x4b\xdd\xa3\xc1\x5c\x74\x31\x39\x0c\x21\xa2\x89\x66\x04\x4c\xb4\x36\x1c\x08\x75\x14\x1b\x33\x86\x7d\xb0\x79\x73\xfb\xb9\xb9\x3c\x98\xb2\x7b\xba\xb5\xc1\xb1\xdd\x03\x24\xce\xe4\x84\x62\x8a\xd5\xe4\xe3\x9a\x71\x2b\x0c\x85\xce\xa2\x33\x26\x46\xb0\x40\xa8\x0e\x37\xd8\x58\xa4\x5e\x10\xb8\x80\xd5\x14\x33\x84\x87\x91\x2e\xea\x8b\x59\x9a\xcb\xcf\x45\xbb\x6d\x74\x6c\xc4\x22\x41\x07\x87\xa9\x68\x10\x4d\x84\x23\x11\x17\x6d\x0c\x67\x91\x10\x8a\x00\x25\xf9\x25\x23\x65\x07\xfe\xa3\xf4\xc4\xd4\xd3\xff\x66\x72\xdb\x3d\x2b\xfc\x1d\x0f\x7f\x77\x76\xfe\xa3\xb9\x38\xbf\x9d\xf5\xf9\x6b\x6a\xa8\xe5\x67\x65\x62\xcb\xfe\x77\xcb\xc3\xb3\xca\xe0\x57\xbd\x79\xc5\x5e\x9c\x27\x72\x2e\x28\x6f\x6d\x38\x1c\xb1\x1a\x89\x18\x8d\x92\x10\x48\x7c\x51\xec\xb3\xde\x1f\xbd\xff\xf9\xf0\xf9\x1d\xf5\x34\x6f\x2e\x8e\xff\xb6\xd6\xa5\xff\x23\xaf\x8c\x4e\xef\xed\x8f\x1c\xca\x36\x92\xcf\x4c\x86\x94\x48\xce\x3a\x8e\x20\x1b\x6d\xb3\xb1\xa2\xb2\x53\x5e\x2c\xa7\x87\xc8\x9f\xa4\x6f\x67\x72\x43\xf3\x67\x43\x6f\x3c\xbc\x24\xf6\x79\xdf\xb4\x52\xda\xe6\xe0\x22\xb3\xa9\xad\x1d\xa3\x63\x51\x25\x05\x52\x90\x53\x2c\xc1\x1b\x37\xda\x06\x36\x01\xe6\x92\x49\x71\x20\xeb\x71\x1f\xb5\xa9\x9f\xf5\x3d\xd8\xb7\xfb\xdd\x9a\xe1\x5c\xfe\x5c\xc8\xfc\x23\xb5\x97\xd2\x5f\xcf\xe9\x2e\xd2\xa7\x02\x7f\xa0\xff\x62\x1b\xd3\x72\xd6\x7c\x92\xae\x99\xdf\x1c\xbf\xd6\x6f\xdb\xfc\x46\x6f\xe6\xe4\x2e\xe4\xaa\x96\xfe\xb6\x69\x2f\x37\x47\xae\x6d\x4a\xa5\xfd\x14\xa6\x30\x55\x67\xc6\xe1\xaa\x35\xb7\x09\x29\x67\xe9\xba\xe9\x20\x99\xd6\x0d\x4b\x37\x6d\xea\x32\x6f\x6e\xa7\x4d\x7b\x71\x16\x01\x60\x65\xb4\xc5\x3c\xe6\x73\x8b\x77\xf0\xc9\x72\xf3\xb8\xcb\x81\x9c\x72\x6e\x16\x75\xff\x80\xfc\xcd\xf0\x60\xf3\xfe\x88\xb9\x95\xae\x7b\x3c\xef\xd5\xa5\x7c\xbb\x2b\x8e\x9c\x0d\x29\xf4\x11\xbc\x07\xed\x03\x38\xa7\x85\x25\x49\xf4\xc8\x96\x38\x38\xad\x0c\xfb\xc2\x5a\x59\xf1\x25\xe5\x10\x93\x0b\x1e\xac\x91\xac\x94\xbf\x9b\x4c\xab\x3a\xda\xb0\x74\x77\xa5\xfc\x86\xf8\x6a\x56\x8f\x01\x29\x1f\x13\x26\x95\x13\x7a\xe7\xc4\xa8\x5d\xa0\xec\x21\x38\x14\x67\x93\x4e\xda\x85\x10\x28\x2b\x43\x1c\xbd\x4b\x84\x4e\x33\xe4\xe8\x14\x04\x46\x60\xcf\xc5\x79\xb7\x2c\x69\xb4\x11\x15\x46\xef\x58\x1e\x07\xba\x9e\x53\x5f\x9a\xf6\x6a\x34\x49\xa6\x64\xd6\x59\x91\x0f\xc5\x89\xc8\x2e\x53\x00\xd0\xae\x00\xab\xa2\x0b\xab\x44\x20\x2a\x14\x6b\x3d\x06\x55\x98\x91\x70\xb9\xf6\x0b\x05\xcc\x3a\xeb\x22\x85\x82\x52\x5c\x20\x20\x5b\xe0\x64\xf2\x08\xd3\xa2\x93\x56\x8d\x91\x08\x18\x26\x49\xc2\x21\x13\xa0\x72\x7b\xaf\x0b\x45\xa3\x0e\x9a\xa9\x24\x6d\x91\x5d\xf0\x3e\xa8\xe0\xd9\x78\xf6\x5a\x0a\xb1\x18\xf4\x31\x03\x26\xb2\xda\x04\xe7\xcc\x32\x83\x5c\x42\x4a\x4a\x56\x67\xcc\x11\x12\x3d\x46\x02\xd6\x91\xf2\x68\x72\x34\x00\x98\x69\x97\x44\x65\x2c\x11\x83\xce\x39\x88\x07\xa5\x83\x18\x87\x25\x3a\x56\xa6\x58\xc5\xba\x64\xcc\xd1\x46\x63\xa2\x4f\x18\x05\x4a\x81\xa4\x0a\x16\x5d\x40\x32\xe8\xb1\xc2\x59\x92\x98\xd1\x8a\xd1\x20\x5e\x3b\x70\x60\x2c\x64\x4a\xbb\x24\xd1\x24\x65\x93\x71\xa2\x13\x6b\x31\x1c\x91\x81\x85\xb2\xc3\x14\x54\x8c\x29\x10\x68\x16\x96\xe2\x74\xd6\x4b\x40\x46\x95\xb5\x2e\x36\x5a\x96\xa0\x56\x24\x43\x83\xb1\x5c\xcf\x9b\x6f\x57\x32\xd2\x63\x1b\xb0\x91\xa6\xfb\xb2\x1a\x42\xc3\xdd\xc8\x30\x92\x76\x06\xeb\x20\xdb\xdd\x0a\x07\xe1\x83\x6f\xe4\x20\x7f\xe2\x58\xb1\xd6\x58\x9e\x76\xd7\x5e\x76\x96\x82\x7b\xe1\x7a\x27\xbb\x97\xdc\xaf\x3c\x83\xec\x6d\xbb\x31\x58\xdf\x8e\x2c\xff\xfa\xff\xeb\xdd\x78\xf7\x1a\xfb\xcb\x08\xe5\xf6\xc2\x3f\x78\xbc\xbf\x2b\x18\x04\x5b\x17\x1b\x83\xe4\xe1\xc7\xf2\x89\x7f\xbf\xd5\xc6\x5f\xf6\x55\xd6\x5d\x35\xfa\x40\x3f\xf6\xc0\xdc\x3d\x18\xaa\xe0\xe4\xc7\xc9\x5f\x01\x00\x00\xff\xff\x37\x2a\x85\xf0\x98\x13\x00\x00" +var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\x4f\x6f\xdb\xc8\x0e\xc0\xcf\xce\xa7\x28\x74\x6e\x1d\xce\xff\x99\xdc\xfa\xfa\x5e\x6f\x7d\x87\xb6\x78\x97\xe2\x61\xc1\x21\x39\xa9\x11\x47\xca\x4a\x72\xb2\x45\xd1\xef\xbe\x70\xac\x38\x96\xa3\xc4\xde\x00\x9b\x45\x72\x8a\x29\x92\xfa\x71\x86\xe4\x70\xf4\xf3\x64\x56\x51\x53\xf7\x2d\x52\xdf\x55\x67\x6f\x7e\x9e\xcc\x66\xd5\xfb\xb6\x1f\xfe\x9d\x55\x5d\xb3\x6a\x49\xaa\xb3\x37\xd5\xfc\x74\xab\x78\xda\x7f\x5f\xb4\x7c\x85\x6d\xff\xe3\xf4\x5a\xda\x6e\xd5\x9d\xbe\x6f\xfb\x39\x31\x55\x6f\x6f\xad\x70\xb9\xc0\x4e\xee\x1c\xce\x66\xd5\x25\x2e\xea\x5a\xd6\x6e\x2b\x0e\xc9\x97\xa2\x82\x82\x90\x73\x29\x7e\x63\x32\xab\x7a\xe9\xfa\x41\x25\x25\x42\xb0\x3a\x2a\x48\x31\x1b\xc3\xd5\x5a\xe3\xd7\xc9\x6c\xf6\x6b\xad\x5b\xfd\x6b\xd5\xd6\xd2\x1e\x40\xec\x7a\xac\x19\x5b\x3e\xdd\x68\x3f\x05\x27\x97\xab\x25\xf6\xcd\xda\x63\x55\x22\x7b\x01\x17\x7d\x06\xd4\x40\xe1\x8e\x6e\x27\x80\xa2\x8d\x61\x12\x89\xb1\x08\x60\x96\xdd\x00\x16\xf5\xf9\x5a\x05\xc6\x7f\x61\x2a\x46\x84\xe0\x3d\x27\x93\xbd\x87\x98\xc3\x5e\x8c\x1f\x9a\xba\x97\xfa\xaf\xef\xc3\x60\xf7\x62\x7b\xf1\xef\xc5\xf9\xa2\xc7\xe5\xe1\x94\xb9\x57\x3c\x92\xcd\x50\x0e\x24\x92\xbd\x76\xe8\x01\x70\x82\x2d\x58\x97\x21\x3a\xc6\xc2\x6c\x0b\xc1\x1e\xdb\x7f\xae\xa5\x3d\x6f\x45\xea\x03\x68\x5b\xbd\x97\x23\xfb\x03\x2f\xaf\x96\xf2\xb5\xb9\x38\x08\x37\x64\xd5\xe9\xae\xc9\xe3\x9c\xf7\xaf\xf8\xb8\x6c\x6e\x8e\xf1\xbf\xad\x93\xad\xc1\xb1\xa5\x02\x28\xce\x50\xf6\x62\x8a\xd5\x18\xd2\x44\xa9\x28\xef\xac\x77\xc6\xa4\x04\x16\xd0\xab\xc3\xa5\x62\xa6\x16\x53\x3c\x70\x01\xab\x31\x11\x44\x1f\xf7\x16\xf3\xe3\xaa\x3e\x5f\xe4\xe3\x56\xf3\x3e\xda\x5d\xa3\x63\x23\x16\x89\x3a\x3a\x9f\x8b\x06\xd1\x88\xfe\x9f\x6a\x0e\x23\xf8\x4f\xd2\x23\x63\x8f\xff\x5b\xc8\x4d\xf7\xac\xf0\x47\x1e\x5e\x5b\xa3\x1c\x45\xf2\xe5\x66\xd1\xd3\xf7\xdc\x60\xcb\xcf\x5a\x89\x1d\xfb\xd7\xb6\x0e\xcf\x4a\x83\xbf\x6b\xe7\x15\x07\x71\x01\xd1\xb9\xa8\x82\xb5\xf1\x70\xc4\x6a\x22\x62\x6f\x94\xc4\x88\x12\x8a\xe2\x40\x7a\xbf\x89\xfe\xf7\xe3\xd7\x0f\xd8\xe3\xb2\x39\x3f\xfe\x94\xac\x4b\xff\x1b\x6d\x8c\x4e\xef\xed\x8f\xec\xfb\x36\x61\x20\x46\x83\x4a\x84\x48\xa7\x09\x64\xa3\x2d\x19\x2b\x8a\x9c\x0a\x62\x39\x3f\x44\xfe\x2c\x7d\xbb\x90\x6b\x5c\x3e\x1b\x7a\xeb\xe1\x25\xb1\xbf\xf4\x4d\x2b\xa5\x6d\x0e\x8e\x24\xdb\xdc\x1a\x19\x1d\x8b\x2a\x39\xa2\x02\xca\xa9\xc4\x60\xdc\x64\x19\xd8\x0c\x9e\x0a\xa1\xe2\x88\x36\xf8\x7d\xd4\xa6\x7e\xd6\x79\xb0\x6f\xf7\xda\x8a\xe1\x8b\xfc\xbe\x92\xe5\x27\x6c\x2f\xa4\xbf\x5a\xe2\x6d\xa4\x4f\x05\xfe\x40\xff\xc5\x66\x9f\x75\xaf\xf9\x2c\x5d\xb3\xbc\x3e\x7e\x86\xdf\xb5\x79\x45\x3b\x73\x72\x1b\x72\x55\x4b\x7f\xd3\xb4\x17\xdb\xfb\xd5\x2e\xa5\xd2\x61\x0e\x73\x98\xab\x33\xe3\xfc\xa6\x34\x77\x09\x91\x48\xba\x6e\x3e\x48\xe6\x75\xc3\xd2\xcd\x9b\xba\x2c\x9b\x9b\x79\xd3\x9e\x9f\x25\x00\xd8\x18\xed\x30\x4f\xf9\xdc\xe1\x1d\x7c\xb2\x5c\x3f\xee\x72\x20\x47\xa2\x66\x55\xf7\x0f\xc8\xdf\x0d\x0f\xb6\xfb\x87\xcc\xad\x74\xdd\xe3\xeb\x5e\x5d\xc8\x8f\xdb\xe4\x20\x32\xa8\x7c\x48\x10\x02\xe8\x10\xc1\x39\x2d\x2c\x59\x52\xf0\x6c\x91\xa3\xd3\xca\x70\x28\xac\x95\x95\x50\x32\xc5\x94\x5d\x0c\x60\x8d\x90\x52\xe1\xb6\x33\x6d\xf2\x68\xcb\xd2\xdd\xa6\xf2\x3b\xe4\xcb\x45\x3d\x05\xa4\x42\xca\x3e\x2b\xca\x3e\x38\x27\x46\x8d\x81\x28\x40\x74\x5e\x9c\xcd\x3a\x6b\x17\x63\x44\x52\x06\x39\x05\x97\xd1\x3b\xcd\x40\xc9\x29\x88\xec\x81\x03\x17\x17\xdc\x3a\xa5\xbd\x4d\x5e\xf9\x14\x1c\xcb\xe3\x40\x57\x4b\xec\x4b\xd3\x5e\x4e\x2e\x92\x29\xc4\x9a\x14\x86\x58\x9c\x88\x8c\x99\x22\x80\x76\x05\x58\x15\x5d\x58\x65\x04\x51\xb1\x58\x1b\x7c\x54\x85\xd9\xa3\x8f\xe8\xb5\x60\xf4\xa4\x49\x17\x29\x18\x95\xe2\x02\xd1\xb3\x05\xce\x86\x26\x98\x56\x9d\xb4\x6a\x8a\x44\xc0\x30\x4a\x16\x8e\x84\xe0\x95\xdb\xdb\x2e\x2f\xda\xeb\xa8\x19\x4b\xd6\xd6\xb3\x8b\x21\x44\x15\x03\x9b\xc0\x41\x4b\x41\x16\xe3\x43\x22\xf0\x19\xad\x36\xd1\x39\xb3\x5e\x41\x2e\x31\x67\x25\x9b\xdb\xe2\x04\x89\x9e\x22\x01\xeb\x50\x05\x6f\x28\x19\x00\x4f\x38\x26\x51\xe4\x4b\xf2\x51\x13\x45\x09\xa0\x74\x14\xe3\x7c\x49\x8e\x95\x29\x56\xb1\x2e\xe4\x29\xd9\x64\x4c\x0a\xd9\x27\x81\x52\x20\xab\xe2\x8b\x2e\x20\x04\x7a\x2a\x71\xd6\x24\x66\x32\x63\x34\x48\xd0\x0e\x1c\x18\x0b\x84\x79\x4c\x92\x4c\x56\x36\x1b\x27\x3a\xb3\x16\xc3\xc9\x33\xb0\x20\x39\x9f\xa3\x4a\x29\x47\x04\xcd\xc2\x52\x9c\x26\xbd\x06\x64\xaf\x48\xeb\x62\x93\x65\x89\x6a\x43\x32\x14\x18\xcb\xd5\xb2\xf9\x71\x29\x13\x35\xb6\x05\x9b\x28\xba\x6f\x9b\x26\x34\x7c\x08\x19\x5a\xd2\xa8\xb1\x0e\xb2\xf1\x54\x38\x08\x1f\x9c\x91\x83\xfc\x89\x6b\xc5\x9d\xe5\x68\x10\xb8\x17\xde\xcd\x61\xf7\x92\xfb\x31\x67\x90\xbd\x6f\xb7\x06\x77\xdf\x36\x86\x9f\xa3\xcb\xf0\x5a\xf4\xff\xb7\xe3\xb8\xf7\x0a\xfc\xdb\x04\xed\xee\xe0\x7f\xe7\x76\x7b\xfb\x1f\x04\x3b\x9f\x2a\x06\xc9\xc3\x43\xf3\x89\xd7\xef\x94\xf3\xb7\x7d\x95\xbb\xea\x9a\x7c\xa0\x1f\x7b\x60\x6e\x1f\x0c\xd9\x70\xf2\xeb\xe4\xcf\x00\x00\x00\xff\xff\x3e\x93\xf8\xc8\x8d\x13\x00\x00" func flowJsonBytes() ([]byte, error) { return bindataRead( @@ -484,7 +484,7 @@ func flowJson() (*asset, error) { } info := bindataFileInfo{name: "flow.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5f, 0xcb, 0xfc, 0x23, 0x87, 0x1f, 0x83, 0xf1, 0x4d, 0x10, 0x3e, 0xce, 0xbe, 0x1b, 0xf7, 0x7e, 0xb6, 0xa5, 0x16, 0xa2, 0xbf, 0xc4, 0x76, 0xc3, 0x3f, 0x1b, 0xb2, 0x35, 0x67, 0x8c, 0xe9, 0x41}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0xaf, 0x1d, 0x70, 0xb2, 0xf3, 0xf, 0xd5, 0xf, 0x64, 0x13, 0xc7, 0x9d, 0xd4, 0x29, 0xab, 0x7e, 0xe1, 0x4b, 0xf7, 0xb8, 0x56, 0xa7, 0x8d, 0x7c, 0xb3, 0x8f, 0x47, 0x67, 0x2d, 0x2e, 0x99}} return a, nil } @@ -584,8 +584,6 @@ var _bindata = map[string]func() (*asset, error){ "contracts/SOURCES.md": contractsSourcesMd, "contracts/SequelMarketplace.cdc": contractsSequelmarketplaceCdc, "contracts/standard/Burner.cdc": contractsStandardBurnerCdc, - "contracts/standard/ExampleNFT.cdc": contractsStandardExamplenftCdc, - "contracts/standard/FUSD.cdc": contractsStandardFusdCdc, "contracts/standard/FlowToken.cdc": contractsStandardFlowtokenCdc, "contracts/standard/FungibleToken.cdc": contractsStandardFungibletokenCdc, "contracts/standard/FungibleTokenMetadataViews.cdc": contractsStandardFungibletokenmetadataviewsCdc, @@ -594,6 +592,8 @@ var _bindata = map[string]func() (*asset, error){ "contracts/standard/NFTStorefront.cdc": contractsStandardNftstorefrontCdc, "contracts/standard/NonFungibleToken.cdc": contractsStandardNonfungibletokenCdc, "contracts/standard/ViewResolver.cdc": contractsStandardViewresolverCdc, + "contracts/testing/ExampleNFT.cdc": contractsTestingExamplenftCdc, + "contracts/testing/ExampleToken.cdc": contractsTestingExampletokenCdc, "contracts/thirdparty/nft_catalog/NFTCatalog.cdc": contractsThirdpartyNft_catalogNftcatalogCdc, "contracts/thirdparty/nft_catalog/NFTRetrieval.cdc": contractsThirdpartyNft_catalogNftretrievalCdc, "contracts/thirdparty/versus/Art.cdc": contractsThirdpartyVersusArtCdc, @@ -654,8 +654,6 @@ var _bintree = &bintree{nil, map[string]*bintree{ "SequelMarketplace.cdc": {contractsSequelmarketplaceCdc, map[string]*bintree{}}, "standard": {nil, map[string]*bintree{ "Burner.cdc": {contractsStandardBurnerCdc, map[string]*bintree{}}, - "ExampleNFT.cdc": {contractsStandardExamplenftCdc, map[string]*bintree{}}, - "FUSD.cdc": {contractsStandardFusdCdc, map[string]*bintree{}}, "FlowToken.cdc": {contractsStandardFlowtokenCdc, map[string]*bintree{}}, "FungibleToken.cdc": {contractsStandardFungibletokenCdc, map[string]*bintree{}}, "FungibleTokenMetadataViews.cdc": {contractsStandardFungibletokenmetadataviewsCdc, map[string]*bintree{}}, @@ -665,6 +663,10 @@ var _bintree = &bintree{nil, map[string]*bintree{ "NonFungibleToken.cdc": {contractsStandardNonfungibletokenCdc, map[string]*bintree{}}, "ViewResolver.cdc": {contractsStandardViewresolverCdc, map[string]*bintree{}}, }}, + "testing": {nil, map[string]*bintree{ + "ExampleNFT.cdc": {contractsTestingExamplenftCdc, map[string]*bintree{}}, + "ExampleToken.cdc": {contractsTestingExampletokenCdc, map[string]*bintree{}}, + }}, "thirdparty": {nil, map[string]*bintree{ "nft_catalog": {nil, map[string]*bintree{ "NFTCatalog.cdc": {contractsThirdpartyNft_catalogNftcatalogCdc, map[string]*bintree{}}, diff --git a/lib/go/iinft/scripts/engine.go b/lib/go/iinft/scripts/engine.go index f7481c1..7faa822 100644 --- a/lib/go/iinft/scripts/engine.go +++ b/lib/go/iinft/scripts/engine.go @@ -4,11 +4,13 @@ import ( "bytes" "embed" "fmt" + "path" "strings" "text/template" "github.com/onflow/cadence/runtime/format" + "github.com/onflow/flow-go-sdk" "github.com/piprate/sequel-flow-contracts/lib/go/iinft" "github.com/piprate/sequel-flow-contracts/lib/go/iinft/gwtf" "github.com/rs/zerolog/log" @@ -42,9 +44,10 @@ func init() { type ( Engine struct { - client *gwtf.GoWithTheFlow - preloadedTemplates map[string]string - wellKnownAddresses map[string]string + client *gwtf.GoWithTheFlow + preloadedTemplates map[string]string + wellKnownAddresses map[string]string + wellKnownAddressesBinary map[string]flow.Address } ) @@ -53,18 +56,21 @@ const ( ) var ( - requiredWellKnownAddresses = []string{ - "FungibleToken", "FlowToken", "NonFungibleToken", "NFTStorefront", "FUSD", - "NFTCatalog", "NFTRetrieval", "Art", "Content", "Evergreen", - "DigitalArt", "SequelMarketplace", "FungibleTokenSwitchboard", + requiredWellKnownContracts = []string{ + "Burner", "FlowToken", "FungibleToken", "FungibleTokenMetadataViews", + "FungibleTokenSwitchboard", "MetadataViews", "NFTStorefront", + "NonFungibleToken", "NFTCatalog", "NFTRetrieval", + "Art", "Content", + "Evergreen", "DigitalArt", "SequelMarketplace", } ) func NewEngine(client *gwtf.GoWithTheFlow, preload bool) (*Engine, error) { eng := &Engine{ - client: client, - preloadedTemplates: make(map[string]string), - wellKnownAddresses: make(map[string]string), + client: client, + preloadedTemplates: make(map[string]string), + wellKnownAddresses: make(map[string]string), + wellKnownAddressesBinary: make(map[string]flow.Address), } if err := eng.loadContractAddresses(); err != nil { @@ -85,21 +91,25 @@ func (e *Engine) loadContractAddresses() error { for _, contract := range *contracts { for _, alias := range contract.Aliases { if alias.Network == networkName { - e.wellKnownAddresses[contract.Name] = alias.Address.HexWithPrefix() + e.wellKnownAddressesBinary[contract.Name] = alias.Address } } } for _, contract := range deployedContracts { - e.wellKnownAddresses[strings.Split(path.Base(contract.Location()), ".")[0]] = contract.AccountAddress.HexWithPrefix() + e.wellKnownAddressesBinary[strings.Split(path.Base(contract.Location()), ".")[0]] = contract.AccountAddress } - for _, requiredAddress := range requiredWellKnownAddresses { - if _, found := e.wellKnownAddresses[requiredAddress]; !found { - return fmt.Errorf("address not found for contract %s", requiredAddress) + for _, requiredContractName := range requiredWellKnownContracts { + if _, found := e.wellKnownAddressesBinary[requiredContractName]; !found { + return fmt.Errorf("address not found for contract %s", requiredContractName) } } log.Debug().Str("addresses", fmt.Sprintf("%v", e.wellKnownAddresses)).Msg("Loaded contract addresses") + for name, addr := range e.wellKnownAddressesBinary { + e.wellKnownAddresses[name] = addr.HexWithPrefix() + } + return nil } @@ -107,6 +117,10 @@ func (e *Engine) WellKnownAddresses() map[string]string { return e.wellKnownAddresses } +func (e *Engine) ContractAddress(contractName string) flow.Address { + return e.wellKnownAddressesBinary[contractName] +} + func (e *Engine) GetStandardScript(scriptID string) string { s, found := e.preloadedTemplates[scriptID] if !found { diff --git a/lib/go/iinft/scripts/engine_test.go b/lib/go/iinft/scripts/engine_test.go index 92b0ef1..1da9943 100644 --- a/lib/go/iinft/scripts/engine_test.go +++ b/lib/go/iinft/scripts/engine_test.go @@ -110,7 +110,7 @@ func TestEngine_GetStandardScript_Versus(t *testing.T) { println(res) } -func TestEngine_GetCustomScript_MOD_FUSD(t *testing.T) { +func TestEngine_GetCustomScript_MOD_Flow(t *testing.T) { client, err := iinft.NewGoWithTheFlowEmbedded("mainnet", false, false) require.NoError(t, err) @@ -125,7 +125,7 @@ func TestEngine_GetCustomScript_MOD_FUSD(t *testing.T) { e, err := scripts.NewEngine(client, false) require.NoError(t, err) - res := e.GetCustomScript("digitalart_mint_on_demand_fusd", &scripts.MintOnDemandParameters{ + res := e.GetCustomScript("digitalart_mint_on_demand_flow", &scripts.MintOnDemandParameters{ Metadata: &iinft.DigitalArtMetadata{ MetadataURI: "ipfs://QmMetadata", Name: "Pure Art", diff --git a/lib/go/iinft/scripts/helpers.go b/lib/go/iinft/scripts/helpers.go index fd013f4..94683c7 100644 --- a/lib/go/iinft/scripts/helpers.go +++ b/lib/go/iinft/scripts/helpers.go @@ -7,7 +7,7 @@ import ( type ( // MintOnDemandParameters provides inputs for "digitalart_mint_on_demand_flow" and - // "digitalart_mint_on_demand_fusd" transaction templates. + // "digitalart_mint_on_demand" transaction templates. // If Metadata is nil, the transactions won't include checks if the master is sealed // (and sealing it, if it's not). MintOnDemandParameters struct { diff --git a/lib/go/iinft/scripts/templates/scripts/digitalart_get_metadata.cdc b/lib/go/iinft/scripts/templates/scripts/digitalart_get_metadata.cdc index 0d54468..38df9a4 100644 --- a/lib/go/iinft/scripts/templates/scripts/digitalart_get_metadata.cdc +++ b/lib/go/iinft/scripts/templates/scripts/digitalart_get_metadata.cdc @@ -2,9 +2,9 @@ import NonFungibleToken from {{.NonFungibleToken}} import DigitalArt from {{.DigitalArt}} -pub fun main(address:Address, tokenId:UInt64) : DigitalArt.Metadata? { +access(all) fun main(address:Address, tokenId:UInt64) : &DigitalArt.Metadata? { let meta = DigitalArt.getMetadata(address: address, tokenId: tokenId) return meta } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_balance_example_ft.cdc b/lib/go/iinft/scripts/templates/transactions/account_balance_example_ft.cdc new file mode 100644 index 0000000..1fe96eb --- /dev/null +++ b/lib/go/iinft/scripts/templates/transactions/account_balance_example_ft.cdc @@ -0,0 +1,16 @@ +{{ define "account_balance_example_ft" }} +// This script reads the balance field of an account's ExampleToken Balance +import FungibleToken from {{.FungibleToken}} +import ExampleToken from {{.ExampleToken}} + +access(all) fun main(account: Address): UFix64 { + + let vaultRef = getAccount(account).capabilities.borrow<&{FungibleToken.Balance}>(/public/exampleTokenVault) + + if vaultRef != nil { + return vaultRef!.balance + } else { + return 0.0 + } +} +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_balance_flow.cdc b/lib/go/iinft/scripts/templates/transactions/account_balance_flow.cdc index 7602872..ebde36c 100644 --- a/lib/go/iinft/scripts/templates/transactions/account_balance_flow.cdc +++ b/lib/go/iinft/scripts/templates/transactions/account_balance_flow.cdc @@ -1,15 +1,13 @@ {{ define "account_balance_flow" }} // This script reads the balance field of an account's FlowToken Balance -import FungibleToken from {{.FungibleToken}} import FlowToken from {{.FlowToken}} -pub fun main(account: Address): UFix64 { +access(all) fun main(account: Address): UFix64 { let vaultRef = getAccount(account) - .getCapability(/public/flowTokenBalance) - .borrow<&FlowToken.Vault{FungibleToken.Balance}>() + .capabilities.borrow<&FlowToken.Vault>(/public/flowTokenBalance) ?? panic("Could not borrow Balance reference to the Vault") return vaultRef.balance } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_balance_fusd.cdc b/lib/go/iinft/scripts/templates/transactions/account_balance_fusd.cdc deleted file mode 100644 index 13f6da5..0000000 --- a/lib/go/iinft/scripts/templates/transactions/account_balance_fusd.cdc +++ /dev/null @@ -1,17 +0,0 @@ -{{ define "account_balance_fusd" }} -import FungibleToken from {{.FungibleToken}} -import FUSD from {{.FUSD}} - -pub fun main(address: Address): UFix64 { - let account = getAccount(address) - - let vaultRef = account.getCapability(/public/fusdBalance)! - .borrow<&FUSD.Vault{FungibleToken.Balance}>() - - if vaultRef != nil { - return vaultRef!.balance - } else { - return 0.0 - } -} -{{ end }} \ No newline at end of file diff --git a/lib/go/iinft/scripts/templates/transactions/account_fund_example_ft.cdc b/lib/go/iinft/scripts/templates/transactions/account_fund_example_ft.cdc new file mode 100644 index 0000000..d1e55a3 --- /dev/null +++ b/lib/go/iinft/scripts/templates/transactions/account_fund_example_ft.cdc @@ -0,0 +1,42 @@ +{{ define "account_fund_example_ft" }} +import FungibleToken from {{.FungibleToken}} +import ExampleToken from {{.ExampleToken}} +import FungibleTokenMetadataViews from {{.FungibleTokenMetadataViews}} + +/// This transaction is what the minter Account uses to mint new tokens +/// They provide the recipient address and amount to mint, and the tokens +/// are transferred to the address after minting + +transaction(recipient: Address, amount: UFix64) { + + let tokenMinter: &ExampleToken.Minter + let tokenReceiver: &{FungibleToken.Receiver} + + /// The total supply of tokens before the burn + let supplyBefore: UFix64 + + prepare(signer: auth(BorrowValue) &Account) { + self.supplyBefore = ExampleToken.totalSupply + + // Borrow a reference to the admin object + self.tokenMinter = signer.storage.borrow<&ExampleToken.Minter>(from: ExampleToken.AdminStoragePath) + ?? panic("Cannot mint: Signer does not store the ExampleToken Minter in their account!") + + let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ?? panic("Could not resolve FTVaultData view. The ExampleToken" + .concat(" contract needs to implement the FTVaultData Metadata view in order to execute this transaction.")) + + self.tokenReceiver = getAccount(recipient).capabilities.borrow<&{FungibleToken.Receiver}>(vaultData.receiverPath) + ?? panic("Could not borrow a Receiver reference to the FungibleToken Vault in account " + .concat(recipient.toString()).concat(" at path ").concat(vaultData.receiverPath.toString()) + .concat(". Make sure you are sending to an address that has ") + .concat("a FungibleToken Vault set up properly at the specified path.")) + } + + execute { + let mintedVault <- self.tokenMinter.mintTokens(amount: amount) + + self.tokenReceiver.deposit(from: <-mintedVault) + } +} +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_fund_fusd.cdc b/lib/go/iinft/scripts/templates/transactions/account_fund_fusd.cdc deleted file mode 100644 index be2dc7d..0000000 --- a/lib/go/iinft/scripts/templates/transactions/account_fund_fusd.cdc +++ /dev/null @@ -1,27 +0,0 @@ -{{ define "account_fund_fusd" }} -import FungibleToken from {{.FungibleToken}} -import FUSD from {{.FUSD}} - -transaction(recipient: Address, amount: UFix64) { - - let tokenMinter: &FUSD.MinterProxy - let tokenReceiver: &{FungibleToken.Receiver} - - prepare(minterAccount: AuthAccount) { - self.tokenMinter = minterAccount - .borrow<&FUSD.MinterProxy>(from: FUSD.MinterProxyStoragePath) - ?? panic("No minter available") - - self.tokenReceiver = getAccount(recipient) - .getCapability(/public/fusdReceiver)! - .borrow<&{FungibleToken.Receiver}>() - ?? panic("Unable to borrow receiver reference") - } - - execute { - let mintedVault <- self.tokenMinter.mintTokens(amount: amount) - - self.tokenReceiver.deposit(from: <-mintedVault) - } -} -{{ end }} \ No newline at end of file diff --git a/lib/go/iinft/scripts/templates/transactions/account_royalty_receiver_setup.cdc b/lib/go/iinft/scripts/templates/transactions/account_royalty_receiver_setup.cdc index af0470f..7788763 100644 --- a/lib/go/iinft/scripts/templates/transactions/account_royalty_receiver_setup.cdc +++ b/lib/go/iinft/scripts/templates/transactions/account_royalty_receiver_setup.cdc @@ -1,95 +1,114 @@ {{ define "account_royalty_receiver_setup" }} import FungibleTokenSwitchboard from {{.FungibleTokenSwitchboard}} import FungibleToken from {{.FungibleToken}} +import FungibleTokenMetadataViews from {{.FungibleTokenMetadataViews}} import FlowToken from {{.FlowToken}} -import FUSD from {{.FUSD}} import MetadataViews from {{.MetadataViews}} -transaction { +transaction(extraTokenContractAddresses: [Address], extraTokenContractNames: [String]) { - let flowTokenVaultCapabilty: Capability<&{FungibleToken.Receiver}> - let fusdTokenVaultCapabilty: Capability<&{FungibleToken.Receiver}> - let switchboardRef: &FungibleTokenSwitchboard.Switchboard + let tokenVaultCapabilities: [Capability<&{FungibleToken.Receiver}>] + let switchboardRef: auth(FungibleTokenSwitchboard.Owner) &FungibleTokenSwitchboard.Switchboard - prepare(acct: AuthAccount) { - // Check if the account already has a Switchboard resource - if acct.borrow<&FungibleTokenSwitchboard.Switchboard> - (from: FungibleTokenSwitchboard.StoragePath) == nil { - - // Create a new Switchboard resource and put it into storage - acct.save( - <- FungibleTokenSwitchboard.createSwitchboard(), - to: FungibleTokenSwitchboard.StoragePath) - - // Create a public capability to the Switchboard exposing the deposit - // function through the {FungibleToken.Receiver} interface - acct.link<&FungibleTokenSwitchboard.Switchboard{FungibleToken.Receiver}>( - FungibleTokenSwitchboard.ReceiverPublicPath, - target: FungibleTokenSwitchboard.StoragePath - ) + prepare(signer: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability, UnpublishCapability) &Account) { + assert(extraTokenContractAddresses.length == extraTokenContractNames.length, message: "lengths of extraTokenContractAddresses and extraTokenContractNames should be equal") - // Create a public capability to the Switchboard exposing both the - // deposit function and the getVaultCapabilities function through the - // {FungibleTokenSwitchboard.SwitchboardPublic} interface - acct.link<&FungibleTokenSwitchboard.Switchboard{FungibleTokenSwitchboard.SwitchboardPublic}>( - FungibleTokenSwitchboard.PublicPath, - target: FungibleTokenSwitchboard.StoragePath - ) + // Check if the account already has a Switchboard resource + if signer.storage.borrow<&FungibleTokenSwitchboard.Switchboard>(from: FungibleTokenSwitchboard.StoragePath) == nil { + // Create a new Switchboard and save it in storage + signer.storage.save(<-FungibleTokenSwitchboard.createSwitchboard(), to: FungibleTokenSwitchboard.StoragePath) + // Clear existing Capabilities at canonical paths + signer.capabilities.unpublish(FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.unpublish(FungibleTokenSwitchboard.PublicPath) + // Issue Receiver & Switchboard Capabilities + let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + let switchboardPublicCap = signer.capabilities.storage.issue<&{FungibleTokenSwitchboard.SwitchboardPublic, FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + // Publish Capabilities + signer.capabilities.publish(receiverCap, at: FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.publish(switchboardPublicCap, at: FungibleTokenSwitchboard.PublicPath) } - // Get a reference to the signers switchboard - self.switchboardRef = acct.borrow<&FungibleTokenSwitchboard.Switchboard> - (from: FungibleTokenSwitchboard.StoragePath) + // Get a reference to the account's switchboard + self.switchboardRef = signer.storage.borrow( + from: FungibleTokenSwitchboard.StoragePath) ?? panic("Could not borrow reference to switchboard") - if acct.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) == nil { + if signer.storage.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) == nil { // Create a new flowToken Vault and put it in storage - acct.save(<-FlowToken.createEmptyVault(), to: /storage/flowTokenVault) + signer.storage.save(<-FlowToken.createEmptyVault(vaultType: Type<@FlowToken.Vault>()), to: /storage/flowTokenVault) // Create a public capability to the Vault that only exposes // the deposit function through the Receiver interface - acct.link<&FlowToken.Vault{FungibleToken.Receiver}>( - /public/flowTokenReceiver, - target: /storage/flowTokenVault + let vaultCap = signer.capabilities.storage.issue<&FlowToken.Vault>( + /storage/flowTokenVault + ) + + signer.capabilities.publish( + vaultCap, + at: /public/flowTokenReceiver ) // Create a public capability to the Vault that only exposes // the balance field through the Balance interface - acct.link<&FlowToken.Vault{FungibleToken.Balance}>( - /public/flowTokenBalance, - target: /storage/flowTokenVault + let balanceCap = signer.capabilities.storage.issue<&FlowToken.Vault>( + /storage/flowTokenVault + ) + + signer.capabilities.publish( + balanceCap, + at: /public/flowTokenBalance ) } - self.flowTokenVaultCapabilty = - acct.getCapability<&{FungibleToken.Receiver}>(/public/flowTokenReceiver) + self.tokenVaultCapabilities = [signer.capabilities.get<&{FungibleToken.Receiver}>(/public/flowTokenReceiver)] - if(acct.borrow<&FUSD.Vault>(from: /storage/fusdVault) == nil) { - // Create a new FUSD Vault and put it in storage - acct.save(<-FUSD.createEmptyVault(), to: /storage/fusdVault) + var i = 0 + for contractAddress in extraTokenContractAddresses { + let contractName = extraTokenContractNames[i] - // Create a public capability to the Vault that only exposes - // the deposit function through the Receiver interface - acct.link<&FUSD.Vault{FungibleToken.Receiver}>( - /public/fusdReceiver, - target: /storage/fusdVault - ) + // Borrow a reference to the vault stored on the passed account at the passed publicPath + let resolverRef = getAccount(contractAddress) + .contracts.borrow<&{FungibleToken}>(name: contractName) + ?? panic("Could not borrow FungibleToken reference to the contract. Make sure the provided contract name (" + .concat(contractName).concat(") and address (").concat(contractAddress.toString()).concat(") are correct!")) - // Create a public capability to the Vault that only exposes - // the balance field through the Balance interface - acct.link<&FUSD.Vault{FungibleToken.Balance}>( - /public/fusdBalance, - target: /storage/fusdVault - ) - } + // Use that reference to retrieve the FTView + let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ?? panic("Could not resolve FTVaultData view. The ".concat(contractName) + .concat(" contract needs to implement the FTVaultData Metadata view in order to execute this transaction.")) + + if signer.storage.borrow<&{FungibleToken.Vault}>(from: ftVaultData.storagePath) == nil { + // Create a new empty vault using the createEmptyVault function inside the FTVaultData + let emptyVault <-ftVaultData.createEmptyVault() + + // Save it to the account + signer.storage.save(<-emptyVault, to: ftVaultData.storagePath) + + // Create a public capability for the vault which includes the .Resolver interface + let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath) + signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath) - self.fusdTokenVaultCapabilty = - acct.getCapability<&{FungibleToken.Receiver}>(/public/fusdReceiver) + // Create a public capability for the vault exposing the receiver interface + let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath) + signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath) + } + + let cap = signer.capabilities.get<&{FungibleToken.Receiver}>(ftVaultData.receiverPath) + self.tokenVaultCapabilities.append(cap) + + i = i + 1 + } } execute { - self.switchboardRef.addNewVault(capability: self.flowTokenVaultCapabilty) - self.switchboardRef.addNewVault(capability: self.fusdTokenVaultCapabilty) + for cap in self.tokenVaultCapabilities { + self.switchboardRef.addNewVault(capability: cap) + } + } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_setup.cdc b/lib/go/iinft/scripts/templates/transactions/account_setup.cdc index e608f62..afa0be5 100644 --- a/lib/go/iinft/scripts/templates/transactions/account_setup.cdc +++ b/lib/go/iinft/scripts/templates/transactions/account_setup.cdc @@ -9,24 +9,26 @@ import DigitalArt from {{.DigitalArt}} transaction { - prepare(acct: AuthAccount) { + prepare(signer: auth(BorrowValue, IssueStorageCapabilityController, PublishCapability, SaveValue, UnpublishCapability) &Account) { + + let collectionData = DigitalArt.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData? + ?? panic("Could not resolve NFTCollectionData view. The DigitalArt contract needs to implement the NFTCollectionData Metadata view in order to execute this transaction") // Return early if the account already has a collection - if acct.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) != nil { + if signer.storage.borrow<&DigitalArt.Collection>(from: collectionData.storagePath) != nil { return } // Create a new empty collection - let collection <- DigitalArt.createEmptyCollection() + let collection <- DigitalArt.createEmptyCollection(nftType: Type<@DigitalArt.NFT>()) // save it to the account - acct.save(<-collection, to: DigitalArt.CollectionStoragePath) + signer.storage.save(<-collection, to: collectionData.storagePath) // create a public capability for the collection - acct.link<&{NonFungibleToken.CollectionPublic, NonFungibleToken.Receiver, MetadataViews.ResolverCollection, Evergreen.CollectionPublic, DigitalArt.CollectionPublic}>( - DigitalArt.CollectionPublicPath, - target: DigitalArt.CollectionStoragePath - ) + signer.capabilities.unpublish(collectionData.publicPath) + let collectionCap = signer.capabilities.storage.issue<&DigitalArt.Collection>(collectionData.storagePath) + signer.capabilities.publish(collectionCap, at: collectionData.publicPath) } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_setup_example_ft.cdc b/lib/go/iinft/scripts/templates/transactions/account_setup_example_ft.cdc new file mode 100644 index 0000000..a710342 --- /dev/null +++ b/lib/go/iinft/scripts/templates/transactions/account_setup_example_ft.cdc @@ -0,0 +1,41 @@ +{{ define "account_setup_example_ft" }} +// This transaction is a template for a transaction to allow +// anyone to add a Vault resource to their account so that +// they can use the exampleToken + +import FungibleToken from {{.FungibleToken}} +import ExampleToken from {{.ExampleToken}} +import ViewResolver from {{.ViewResolver}} +import FungibleTokenMetadataViews from {{.FungibleTokenMetadataViews}} + +transaction () { + + prepare(signer: auth(BorrowValue, IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) { + + let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ?? panic("ViewResolver does not resolve FTVaultData view") + + // Return early if the account already stores a ExampleToken Vault + if signer.storage.borrow<&ExampleToken.Vault>(from: vaultData.storagePath) != nil { + return + } + + let vault <- ExampleToken.createEmptyVault(vaultType: Type<@ExampleToken.Vault>()) + + // Create a new ExampleToken Vault and put it in storage + signer.storage.save(<-vault, to: vaultData.storagePath) + + // Create a public capability to the Vault that exposes the Vault interfaces + let vaultCap = signer.capabilities.storage.issue<&ExampleToken.Vault>( + vaultData.storagePath + ) + signer.capabilities.publish(vaultCap, at: vaultData.metadataPath) + + // Create a public Capability to the Vault's Receiver functionality + let receiverCap = signer.capabilities.storage.issue<&ExampleToken.Vault>( + vaultData.storagePath + ) + signer.capabilities.publish(receiverCap, at: vaultData.receiverPath) + } +} +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_setup_flow.cdc b/lib/go/iinft/scripts/templates/transactions/account_setup_flow.cdc index 10deda9..b740db8 100644 --- a/lib/go/iinft/scripts/templates/transactions/account_setup_flow.cdc +++ b/lib/go/iinft/scripts/templates/transactions/account_setup_flow.cdc @@ -4,26 +4,21 @@ import FlowToken from {{.FlowToken}} transaction { - prepare(signer: AuthAccount) { - - if signer.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) == nil { + prepare(signer: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability) &Account) { + if signer.storage.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) == nil { // Create a new flowToken Vault and put it in storage - signer.save(<-FlowToken.createEmptyVault(), to: /storage/flowTokenVault) + signer.storage.save(<-FlowToken.createEmptyVault(vaultType: Type<@FlowToken.Vault>()), to: /storage/flowTokenVault) // Create a public capability to the Vault that only exposes // the deposit function through the Receiver interface - signer.link<&FlowToken.Vault{FungibleToken.Receiver}>( - /public/flowTokenReceiver, - target: /storage/flowTokenVault - ) + let vaultCap = signer.capabilities.storage.issue<&FlowToken.Vault>(/storage/flowTokenVault) + signer.capabilities.publish(vaultCap, at: /public/flowTokenReceiver) // Create a public capability to the Vault that only exposes // the balance field through the Balance interface - signer.link<&FlowToken.Vault{FungibleToken.Balance}>( - /public/flowTokenBalance, - target: /storage/flowTokenVault - ) + let balanceCap = signer.capabilities.storage.issue<&FlowToken.Vault>(/storage/flowTokenVault) + signer.capabilities.publish(balanceCap, at: /public/flowTokenBalance) } } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_setup_fusd.cdc b/lib/go/iinft/scripts/templates/transactions/account_setup_fusd.cdc deleted file mode 100644 index 8514a66..0000000 --- a/lib/go/iinft/scripts/templates/transactions/account_setup_fusd.cdc +++ /dev/null @@ -1,35 +0,0 @@ -{{ define "account_setup_fusd" }} -// This transaction configures the signer's account with an empty FUSD vault. - -import FungibleToken from {{.FungibleToken}} -import FUSD from {{.FUSD}} - -transaction { - - prepare(signer: AuthAccount) { - - // It's OK if the account already has a Vault, but we don't want to replace it - if(signer.borrow<&FUSD.Vault>(from: /storage/fusdVault) != nil) { - return - } - - // Create a new FUSD Vault and put it in storage - signer.save(<-FUSD.createEmptyVault(), to: /storage/fusdVault) - - // Create a public capability to the Vault that only exposes - // the deposit function through the Receiver interface - signer.link<&FUSD.Vault{FungibleToken.Receiver}>( - /public/fusdReceiver, - target: /storage/fusdVault - ) - - // Create a public capability to the Vault that only exposes - // the balance field through the Balance interface - signer.link<&FUSD.Vault{FungibleToken.Balance}>( - /public/fusdBalance, - target: /storage/fusdVault - ) - } -} - -{{ end }} \ No newline at end of file diff --git a/lib/go/iinft/scripts/templates/transactions/account_setup_usdc.cdc b/lib/go/iinft/scripts/templates/transactions/account_setup_usdc.cdc new file mode 100644 index 0000000..44b6a82 --- /dev/null +++ b/lib/go/iinft/scripts/templates/transactions/account_setup_usdc.cdc @@ -0,0 +1,34 @@ +{{ define "account_setup_usdc" }} +import FungibleToken from {{.FungibleToken}} +import USDCFlow from {{.USDCFlow}} + +/// This script is used to add a USDCFlow.Vault resource to the signer's account +/// so that they can use USDCFlow +/// +/// If the Vault already exist for the account, +/// the script will return immediately without error +/// + +transaction { + + prepare(signer: auth(Storage, BorrowValue, Capabilities, AddContract) &Account) { + + // Return early if the account already stores a USDCFlow Vault + if signer.storage.borrow<&USDCFlow.Vault>(from: USDCFlow.VaultStoragePath) != nil { + return + } + + // Create a new ExampleToken Vault and put it in storage + signer.storage.save( + <-USDCFlow.createEmptyVault(vaultType: Type<@USDCFlow.Vault>()), + to: USDCFlow.VaultStoragePath + ) + + let receiver = signer.capabilities.storage.issue<&USDCFlow.Vault>( + USDCFlow.VaultStoragePath + ) + signer.capabilities.publish(receiver, at: USDCFlow.ReceiverPublicPath) + signer.capabilities.publish(receiver, at: USDCFlow.VaultPublicPath) + } +} +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/account_switchboard_setup.cdc b/lib/go/iinft/scripts/templates/transactions/account_switchboard_setup.cdc index f4381cd..f8e9b3b 100644 --- a/lib/go/iinft/scripts/templates/transactions/account_switchboard_setup.cdc +++ b/lib/go/iinft/scripts/templates/transactions/account_switchboard_setup.cdc @@ -5,32 +5,25 @@ import MetadataViews from {{.MetadataViews}} transaction { - prepare(acct: AuthAccount) { + prepare(signer: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability, UnpublishCapability) &Account) { // Check if the account already has a Switchboard resource - if acct.borrow<&FungibleTokenSwitchboard.Switchboard> - (from: FungibleTokenSwitchboard.StoragePath) == nil { - - // Create a new Switchboard resource and put it into storage - acct.save( - <- FungibleTokenSwitchboard.createSwitchboard(), - to: FungibleTokenSwitchboard.StoragePath) - - // Create a public capability to the Switchboard exposing the deposit - // function through the {FungibleToken.Receiver} interface - acct.link<&FungibleTokenSwitchboard.Switchboard{FungibleToken.Receiver}>( - FungibleTokenSwitchboard.ReceiverPublicPath, - target: FungibleTokenSwitchboard.StoragePath - ) - - // Create a public capability to the Switchboard exposing both the - // deposit function and the getVaultCapabilities function through the - // {FungibleTokenSwitchboard.SwitchboardPublic} interface - acct.link<&FungibleTokenSwitchboard.Switchboard{FungibleTokenSwitchboard.SwitchboardPublic}>( - FungibleTokenSwitchboard.PublicPath, - target: FungibleTokenSwitchboard.StoragePath - ) + if signer.storage.borrow<&FungibleTokenSwitchboard.Switchboard>(from: FungibleTokenSwitchboard.StoragePath) == nil { + // Create a new Switchboard and save it in storage + signer.storage.save(<-FungibleTokenSwitchboard.createSwitchboard(), to: FungibleTokenSwitchboard.StoragePath) + // Clear existing Capabilities at canonical paths + signer.capabilities.unpublish(FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.unpublish(FungibleTokenSwitchboard.PublicPath) + // Issue Receiver & Switchboard Capabilities + let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + let switchboardPublicCap = signer.capabilities.storage.issue<&{FungibleTokenSwitchboard.SwitchboardPublic, FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + // Publish Capabilities + signer.capabilities.publish(receiverCap, at: FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.publish(switchboardPublicCap, at: FungibleTokenSwitchboard.PublicPath) } - } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/digitalart_destroy.cdc b/lib/go/iinft/scripts/templates/transactions/digitalart_destroy.cdc index bca8a52..c009c16 100644 --- a/lib/go/iinft/scripts/templates/transactions/digitalart_destroy.cdc +++ b/lib/go/iinft/scripts/templates/transactions/digitalart_destroy.cdc @@ -1,14 +1,20 @@ {{ define "digitalart_destroy" }} import NonFungibleToken from {{.NonFungibleToken}} +import Burner from {{.Burner}} import DigitalArt from {{.DigitalArt}} transaction(tokenId: UInt64) { - prepare(acct: AuthAccount) { - let collection <- acct.load<@DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath)! - let nft <- collection.withdraw(withdrawID: tokenId) - destroy nft + let collectionRef: auth(NonFungibleToken.Withdraw) &DigitalArt.Collection - acct.save(<-collection, to: DigitalArt.CollectionStoragePath) - } + prepare(signer: auth(BorrowValue) &Account) { + self.collectionRef = signer.storage.borrow(from: DigitalArt.CollectionStoragePath)! + } + + execute { + // withdraw the NFT from the owner's collection + let nft <- self.collectionRef.withdraw(withdrawID: tokenId) + + Burner.burn(<-nft) + } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/digitalart_mint_edition.cdc b/lib/go/iinft/scripts/templates/transactions/digitalart_mint_edition.cdc index 99b2033..7b6d6cd 100644 --- a/lib/go/iinft/scripts/templates/transactions/digitalart_mint_edition.cdc +++ b/lib/go/iinft/scripts/templates/transactions/digitalart_mint_edition.cdc @@ -1,23 +1,26 @@ {{ define "digitalart_mint_edition" }} +import NonFungibleToken from {{.NonFungibleToken}} import DigitalArt from {{.DigitalArt}} -transaction(masterId: String, amount: UInt64, recipientAddr: Address) { +transaction(masterId: String, amount: UInt64, recipient: Address) { let admin: &DigitalArt.Admin let availableEditions: UInt64 + /// Reference to the receiver's collection + let recipientCollectionRef: &{NonFungibleToken.Receiver} - prepare(signer: AuthAccount) { - self.admin = signer.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! + prepare(signer: auth(BorrowValue) &Account) { + self.admin = signer.storage.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! self.availableEditions = self.admin.availableEditions(masterId: masterId) + + // Borrow the recipient's public NFT collection reference + self.recipientCollectionRef = getAccount(recipient).capabilities.borrow<&{NonFungibleToken.Receiver}>(DigitalArt.CollectionPublicPath) + ?? panic("The recipient does not have a NonFungibleToken Receiver at " + .concat(DigitalArt.CollectionPublicPath.toString()) + .concat(" that is capable of receiving an NFT.") + .concat("The recipient must initialize their account with this collection and receiver first!")) } execute { - let recipient = getAccount(recipientAddr) - - let receiver = recipient - .getCapability(DigitalArt.CollectionPublicPath)! - .borrow<&{DigitalArt.CollectionPublic}>() - ?? panic("Could not get receiver reference to the NFT Collection") - if amount > self.availableEditions { panic("too many editions requested") } @@ -25,9 +28,9 @@ transaction(masterId: String, amount: UInt64, recipientAddr: Address) { var i = UInt64(0) while i < amount { let newNFT <- self.admin.mintEditionNFT(masterId: masterId, modID: 0) - receiver.deposit(token: <-newNFT) + self.recipientCollectionRef.deposit(token: <-newNFT) i = i + 1 } } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand_fusd.cdc b/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand.cdc similarity index 58% rename from lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand_fusd.cdc rename to lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand.cdc index e605580..f096b53 100644 --- a/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand_fusd.cdc +++ b/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand.cdc @@ -1,24 +1,24 @@ -{{ define "digitalart_mint_on_demand_fusd" }} +{{ define "digitalart_mint_on_demand" }} import NonFungibleToken from {{.NonFungibleToken}} import FungibleToken from {{.FungibleToken}} -import FUSD from {{.FUSD}} +import FungibleTokenMetadataViews from {{.FungibleTokenMetadataViews}} import Evergreen from {{.Evergreen}} import DigitalArt from {{.DigitalArt}} import SequelMarketplace from {{.SequelMarketplace}} -transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, modID: UInt64) { +transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, ftContractAddress: Address, ftContractName: String, modID: UInt64) { let admin: &DigitalArt.Admin let evergreenProfile: Evergreen.Profile - let paymentVault: @FungibleToken.Vault - let tokenReceiver: &{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver} + let paymentVault: @{FungibleToken.Vault} + let tokenReceiver: &{NonFungibleToken.Receiver} let buyerAddress: Address - prepare(buyer: AuthAccount, platform: AuthAccount) { + prepare(buyer: auth(BorrowValue, IssueStorageCapabilityController, PublishCapability, SaveValue) &Account, platform: auth(BorrowValue) &Account) { if numEditions == 0 { panic("no editions requested") } - self.admin = platform.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! + self.admin = platform.storage.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! {{- if .Parameters.Metadata }} if !self.admin.isSealed(masterId: masterId) { @@ -63,22 +63,31 @@ transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, modID: UIn self.evergreenProfile = self.admin.evergreenProfile(masterId: masterId) - let mainVault = buyer.borrow<&FUSD.Vault>(from: /storage/fusdVault) - ?? panic("Cannot borrow FUSD vault from acct storage") + // Borrow a reference to the vault stored on the passed account at the passed publicPath + let resolverRef = getAccount(ftContractAddress) + .contracts.borrow<&{FungibleToken}>(name: ftContractName) + ?? panic("Could not borrow FungibleToken reference to the contract. Make sure the provided contract name (" + .concat(ftContractName).concat(") and address (").concat(ftContractAddress.toString()).concat(") are correct!")) + + // Use that reference to retrieve the FTView + let vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ?? panic("Could not resolve FTVaultData view. The ".concat(ftContractName).concat(" contract at ") + .concat(ftContractAddress.toString()).concat(" needs to implement the FTVaultData Metadata view in order to execute this transaction.")) + + let vaultRef = buyer.storage.borrow(from: vaultData.storagePath) + ?? panic("Cannot borrow fungible token vault from acct storage") let price = unitPrice * UFix64(numEditions) - self.paymentVault <- mainVault.withdraw(amount: price) + self.paymentVault <- vaultRef.withdraw(amount: price) - if buyer.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { - let collection <- DigitalArt.createEmptyCollection() as! @DigitalArt.Collection - buyer.save(<-collection, to: DigitalArt.CollectionStoragePath) - buyer.link<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver, DigitalArt.CollectionPublic}>( - DigitalArt.CollectionPublicPath, - target: DigitalArt.CollectionStoragePath - ) + if buyer.storage.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { + let collection <- DigitalArt.createEmptyCollection(nftType: Type<@DigitalArt.NFT>()) + buyer.storage.save(<-collection, to: DigitalArt.CollectionStoragePath) + let collectionCap = buyer.capabilities.storage.issue<&DigitalArt.Collection>(DigitalArt.CollectionStoragePath) + buyer.capabilities.publish(collectionCap, at: DigitalArt.CollectionPublicPath) } - self.tokenReceiver = buyer.getCapability(DigitalArt.CollectionPublicPath) - .borrow<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver}>() + self.tokenReceiver = buyer.capabilities + .borrow<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver}>(DigitalArt.CollectionPublicPath) ?? panic("Cannot borrow NFT collection receiver from acct") self.buyerAddress = buyer.address @@ -95,10 +104,10 @@ transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, modID: UIn unitPrice: unitPrice, numEditions: numEditions, sellerRole: "Artist", - sellerVaultPath: /public/fusdReceiver, + sellerVaultPath: /public/flowTokenReceiver, paymentVault: <-self.paymentVault, evergreenProfile: self.evergreenProfile, ) } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand_flow.cdc b/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand_flow.cdc index ab590d4..21ae229 100644 --- a/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand_flow.cdc +++ b/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand_flow.cdc @@ -9,16 +9,16 @@ import SequelMarketplace from {{.SequelMarketplace}} transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, modID: UInt64) { let admin: &DigitalArt.Admin let evergreenProfile: Evergreen.Profile - let paymentVault: @FungibleToken.Vault - let tokenReceiver: &{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver} + let paymentVault: @{FungibleToken.Vault} + let tokenReceiver: &{NonFungibleToken.Receiver} let buyerAddress: Address - prepare(buyer: AuthAccount, platform: AuthAccount) { + prepare(buyer: auth(BorrowValue, IssueStorageCapabilityController, PublishCapability, SaveValue) &Account, platform: auth(BorrowValue) &Account) { if numEditions == 0 { panic("no editions requested") } - self.admin = platform.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! + self.admin = platform.storage.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! {{- if .Parameters.Metadata }} if !self.admin.isSealed(masterId: masterId) { @@ -63,22 +63,20 @@ transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, modID: UIn self.evergreenProfile = self.admin.evergreenProfile(masterId: masterId) - let mainVault = buyer.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) - ?? panic("Cannot borrow FlowToken vault from acct storage") + let vaultRef = buyer.storage.borrow(from: /storage/flowTokenVault) + ?? panic("The buyer does not have a FlowToken Vault") let price = unitPrice * UFix64(numEditions) - self.paymentVault <- mainVault.withdraw(amount: price) + self.paymentVault <- vaultRef.withdraw(amount: price) - if buyer.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { - let collection <- DigitalArt.createEmptyCollection() as! @DigitalArt.Collection - buyer.save(<-collection, to: DigitalArt.CollectionStoragePath) - buyer.link<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver, DigitalArt.CollectionPublic}>( - DigitalArt.CollectionPublicPath, - target: DigitalArt.CollectionStoragePath - ) + if buyer.storage.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { + let collection <- DigitalArt.createEmptyCollection(nftType: Type<@DigitalArt.NFT>()) + buyer.storage.save(<-collection, to: DigitalArt.CollectionStoragePath) + let collectionCap = buyer.capabilities.storage.issue<&DigitalArt.Collection>(DigitalArt.CollectionStoragePath) + buyer.capabilities.publish(collectionCap, at: DigitalArt.CollectionPublicPath) } - self.tokenReceiver = buyer.getCapability(DigitalArt.CollectionPublicPath) - .borrow<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver}>() + self.tokenReceiver = buyer.capabilities + .borrow<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver}>(DigitalArt.CollectionPublicPath) ?? panic("Cannot borrow NFT collection receiver from acct") self.buyerAddress = buyer.address @@ -101,4 +99,4 @@ transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, modID: UIn ) } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/digitalart_transfer.cdc b/lib/go/iinft/scripts/templates/transactions/digitalart_transfer.cdc index d72fee5..45521d1 100644 --- a/lib/go/iinft/scripts/templates/transactions/digitalart_transfer.cdc +++ b/lib/go/iinft/scripts/templates/transactions/digitalart_transfer.cdc @@ -3,12 +3,12 @@ import NonFungibleToken from {{.NonFungibleToken}} import DigitalArt from {{.DigitalArt}} transaction(tokenId: UInt64, recipientAddr: Address) { - prepare(acct: AuthAccount) { + prepare(acct: auth(BorrowValue) &Account) { let recipient = getAccount(recipientAddr) - let collectionRef = acct.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath)! - let depositRef = recipient.getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{NonFungibleToken.CollectionPublic}>()! + let collectionRef = acct.storage.borrow(from: DigitalArt.CollectionStoragePath)! + let depositRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(DigitalArt.CollectionPublicPath)! let nft <- collectionRef.withdraw(withdrawID: tokenId) depositRef.deposit(token: <-nft) } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/marketplace_buy.cdc b/lib/go/iinft/scripts/templates/transactions/marketplace_buy.cdc new file mode 100644 index 0000000..65337c5 --- /dev/null +++ b/lib/go/iinft/scripts/templates/transactions/marketplace_buy.cdc @@ -0,0 +1,67 @@ +{{ define "marketplace_buy" }} +import NonFungibleToken from {{.NonFungibleToken}} +import FungibleToken from {{.FungibleToken}} +import FungibleTokenMetadataViews from {{.FungibleTokenMetadataViews}} +import NFTStorefront from {{.NFTStorefront}} +import DigitalArt from {{.DigitalArt}} +import SequelMarketplace from {{.SequelMarketplace}} + +transaction(listingID: UInt64, storefrontAddress: Address, ftContractAddress: Address, ftContractName: String, metadataLink: String?) { + let listing: &{NFTStorefront.ListingPublic} + let paymentVault: @{FungibleToken.Vault} + let storefront: &NFTStorefront.Storefront + let tokenReceiver: &{NonFungibleToken.Receiver} + let buyerAddress: Address + let vaultData: FungibleTokenMetadataViews.FTVaultData + + prepare(acct: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability) &Account) { + self.storefront = getAccount(storefrontAddress).capabilities.borrow<&NFTStorefront.Storefront>(NFTStorefront.StorefrontPublicPath) + ?? panic("Could not borrow Storefront from provided address") + + self.listing = self.storefront.borrowListing(listingResourceID: listingID) + ?? panic("No Offer with that ID in Storefront") + let price = self.listing.getDetails().salePrice + + // Borrow a reference to the vault stored on the passed account at the passed publicPath + let resolverRef = getAccount(ftContractAddress) + .contracts.borrow<&{FungibleToken}>(name: ftContractName) + ?? panic("Could not borrow FungibleToken reference to the contract. Make sure the provided contract name (" + .concat(ftContractName).concat(") and address (").concat(ftContractAddress.toString()).concat(") are correct!")) + + // Use that reference to retrieve the FTView + self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ?? panic("Could not resolve FTVaultData view. The ".concat(ftContractName).concat(" contract at ") + .concat(ftContractAddress.toString()).concat(" needs to implement the FTVaultData Metadata view in order to execute this transaction.")) + + let vaultRef = acct.storage.borrow(from: self.vaultData.storagePath) + ?? panic("Cannot borrow fungible token vault from acct storage") + self.paymentVault <- vaultRef.withdraw(amount: price) + + if acct.storage.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { + let collection <- DigitalArt.createEmptyCollection(nftType: Type<@DigitalArt.NFT>()) + acct.storage.save(<-collection, to: DigitalArt.CollectionStoragePath) + let collectionCap = acct.capabilities.storage.issue<&DigitalArt.Collection>(DigitalArt.CollectionStoragePath) + acct.capabilities.publish(collectionCap, at: DigitalArt.CollectionPublicPath) + } + + self.tokenReceiver = acct.capabilities + .borrow<&{NonFungibleToken.Receiver}>(DigitalArt.CollectionPublicPath) + ?? panic("Cannot borrow NFT collection receiver from acct") + + self.buyerAddress = acct.address + } + + execute { + let item <- SequelMarketplace.buyToken( + storefrontAddress: storefrontAddress, + storefront: self.storefront, + listingID: listingID, + listing: self.listing, + paymentVault: <- self.paymentVault, + buyerAddress: self.buyerAddress, + metadataLink: metadataLink + ) + self.tokenReceiver.deposit(token: <-item) + } +} +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/marketplace_buy_flow.cdc b/lib/go/iinft/scripts/templates/transactions/marketplace_buy_flow.cdc index ae57288..0f50b5e 100644 --- a/lib/go/iinft/scripts/templates/transactions/marketplace_buy_flow.cdc +++ b/lib/go/iinft/scripts/templates/transactions/marketplace_buy_flow.cdc @@ -7,34 +7,33 @@ import DigitalArt from {{.DigitalArt}} import SequelMarketplace from {{.SequelMarketplace}} transaction(listingID: UInt64, storefrontAddress: Address, metadataLink: String?) { - let listing: &NFTStorefront.Listing{NFTStorefront.ListingPublic} - let paymentVault: @FungibleToken.Vault - let storefront: &NFTStorefront.Storefront{NFTStorefront.StorefrontPublic} - let tokenReceiver: &{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver} + let listing: &{NFTStorefront.ListingPublic} + let paymentVault: @{FungibleToken.Vault} + let storefront: &NFTStorefront.Storefront + let tokenReceiver: &{NonFungibleToken.Receiver} let buyerAddress: Address - prepare(acct: AuthAccount) { - self.storefront = getAccount(storefrontAddress) - .getCapability(NFTStorefront.StorefrontPublicPath)! - .borrow<&NFTStorefront.Storefront{NFTStorefront.StorefrontPublic}>() + prepare(acct: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability) &Account) { + self.storefront = getAccount(storefrontAddress).capabilities.borrow<&NFTStorefront.Storefront>(NFTStorefront.StorefrontPublicPath) ?? panic("Could not borrow Storefront from provided address") self.listing = self.storefront.borrowListing(listingResourceID: listingID) ?? panic("No Offer with that ID in Storefront") let price = self.listing.getDetails().salePrice - let mainVault = acct.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) + let mainVault = acct.storage.borrow(from: /storage/flowTokenVault) ?? panic("Cannot borrow FlowToken vault from acct storage") self.paymentVault <- mainVault.withdraw(amount: price) - if acct.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { - let collection <- DigitalArt.createEmptyCollection() as! @DigitalArt.Collection - acct.save(<-collection, to: DigitalArt.CollectionStoragePath) - acct.link<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver}>(DigitalArt.CollectionPublicPath, target: DigitalArt.CollectionStoragePath) + if acct.storage.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { + let collection <- DigitalArt.createEmptyCollection(nftType: Type<@DigitalArt.NFT>()) + acct.storage.save(<-collection, to: DigitalArt.CollectionStoragePath) + let collectionCap = acct.capabilities.storage.issue<&DigitalArt.Collection>(DigitalArt.CollectionStoragePath) + acct.capabilities.publish(collectionCap, at: DigitalArt.CollectionPublicPath) } - self.tokenReceiver = acct.getCapability(DigitalArt.CollectionPublicPath) - .borrow<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver}>() + self.tokenReceiver = acct.capabilities + .borrow<&{NonFungibleToken.Receiver}>(DigitalArt.CollectionPublicPath) ?? panic("Cannot borrow NFT collection receiver from acct") self.buyerAddress = acct.address @@ -53,4 +52,4 @@ transaction(listingID: UInt64, storefrontAddress: Address, metadataLink: String? self.tokenReceiver.deposit(token: <-item) } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/marketplace_buy_fusd.cdc b/lib/go/iinft/scripts/templates/transactions/marketplace_buy_fusd.cdc deleted file mode 100644 index 3291df0..0000000 --- a/lib/go/iinft/scripts/templates/transactions/marketplace_buy_fusd.cdc +++ /dev/null @@ -1,56 +0,0 @@ -{{ define "marketplace_buy_fusd" }} -import NonFungibleToken from {{.NonFungibleToken}} -import FungibleToken from {{.FungibleToken}} -import NFTStorefront from {{.NFTStorefront}} -import FUSD from {{.FUSD}} -import DigitalArt from {{.DigitalArt}} -import SequelMarketplace from {{.SequelMarketplace}} - -transaction(listingID: UInt64, storefrontAddress: Address, metadataLink: String?) { - let listing: &NFTStorefront.Listing{NFTStorefront.ListingPublic} - let paymentVault: @FungibleToken.Vault - let storefront: &NFTStorefront.Storefront{NFTStorefront.StorefrontPublic} - let tokenReceiver: &{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver} - let buyerAddress: Address - - prepare(acct: AuthAccount) { - self.storefront = getAccount(storefrontAddress) - .getCapability(NFTStorefront.StorefrontPublicPath)! - .borrow<&NFTStorefront.Storefront{NFTStorefront.StorefrontPublic}>() - ?? panic("Could not borrow Storefront from provided address") - - self.listing = self.storefront.borrowListing(listingResourceID: listingID) - ?? panic("No Offer with that ID in Storefront") - let price = self.listing.getDetails().salePrice - - let mainVault = acct.borrow<&FUSD.Vault>(from: /storage/fusdVault) - ?? panic("Cannot borrow FUSD vault from acct storage") - self.paymentVault <- mainVault.withdraw(amount: price) - - if acct.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { - let collection <- DigitalArt.createEmptyCollection() as! @DigitalArt.Collection - acct.save(<-collection, to: DigitalArt.CollectionStoragePath) - acct.link<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver}>(DigitalArt.CollectionPublicPath, target: DigitalArt.CollectionStoragePath) - } - - self.tokenReceiver = acct.getCapability(DigitalArt.CollectionPublicPath) - .borrow<&{NonFungibleToken.CollectionPublic,NonFungibleToken.Receiver}>() - ?? panic("Cannot borrow NFT collection receiver from acct") - - self.buyerAddress = acct.address - } - - execute { - let item <- SequelMarketplace.buyToken( - storefrontAddress: storefrontAddress, - storefront: self.storefront, - listingID: listingID, - listing: self.listing, - paymentVault: <- self.paymentVault, - buyerAddress: self.buyerAddress, - metadataLink: metadataLink - ) - self.tokenReceiver.deposit(token: <-item) - } -} -{{ end }} \ No newline at end of file diff --git a/lib/go/iinft/scripts/templates/transactions/marketplace_list.cdc b/lib/go/iinft/scripts/templates/transactions/marketplace_list.cdc new file mode 100644 index 0000000..0349ab3 --- /dev/null +++ b/lib/go/iinft/scripts/templates/transactions/marketplace_list.cdc @@ -0,0 +1,75 @@ +{{ define "marketplace_list" }} +import FungibleToken from {{.FungibleToken}} +import FungibleTokenMetadataViews from {{.FungibleTokenMetadataViews}} +import NonFungibleToken from {{.NonFungibleToken}} +import Burner from {{.Burner}} +import NFTStorefront from {{.NFTStorefront}} +import Evergreen from {{.Evergreen}} +import DigitalArt from {{.DigitalArt}} +import SequelMarketplace from {{.SequelMarketplace}} + +transaction(tokenID: UInt64, price: UFix64, ftContractAddress: Address, ftContractName: String, metadataLink: String?) { + let nftProviderCapability: Capability + let storefront: auth(NFTStorefront.CreateListing) &NFTStorefront.Storefront + // FTVaultData struct to get paths from + let vaultData: FungibleTokenMetadataViews.FTVaultData + let paymentVaultType: Type + + prepare(acct: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability) &Account) { + // Borrow a reference to the vault stored on the passed account at the passed publicPath + let resolverRef = getAccount(ftContractAddress) + .contracts.borrow<&{FungibleToken}>(name: ftContractName) + ?? panic("Could not borrow FungibleToken reference to the contract. Make sure the provided contract name (" + .concat(ftContractName).concat(") and address (").concat(ftContractAddress.toString()).concat(") are correct!")) + + // Use that reference to retrieve the FTView + self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ?? panic("Could not resolve FTVaultData view. The ".concat(ftContractName).concat(" contract at ") + .concat(ftContractAddress.toString()).concat(" needs to implement the FTVaultData Metadata view in order to execute this transaction.")) + + self.nftProviderCapability = acct.capabilities.storage.issue( + DigitalArt.CollectionStoragePath + ) + assert(self.nftProviderCapability.check(), message: "Missing or mis-typed nft collection provider") + + // If the account doesn't already have a Storefront + if acct.storage.borrow<&NFTStorefront.Storefront>(from: NFTStorefront.StorefrontStoragePath) == nil { + + // Create a new empty .Storefront + let storefront <- NFTStorefront.createStorefront() + + // save it to the account + acct.storage.save(<-storefront, to: NFTStorefront.StorefrontStoragePath) + + // create a public capability for the .Storefront & publish + let storefrontPublicCap = acct.capabilities.storage.issue<&{NFTStorefront.StorefrontPublic}>( + NFTStorefront.StorefrontStoragePath + ) + acct.capabilities.publish(storefrontPublicCap, at: NFTStorefront.StorefrontPublicPath) + } + + self.storefront = acct.storage.borrow(from: NFTStorefront.StorefrontStoragePath) + ?? panic("Could not borrow Storefront from provided address") + + // Create a new empty vault to extract vault type, instead of using + // vaultData.receiverLinkedType which is a reference. + let emptyVault <-self.vaultData.createEmptyVault() + self.paymentVaultType = emptyVault.getType() + Burner.burn(<-emptyVault) + } + + execute { + SequelMarketplace.listToken( + storefront: self.storefront, + nftProviderCapability: self.nftProviderCapability, + nftType: Type<@DigitalArt.NFT>(), + nftID: tokenID, + sellerVaultPath: self.vaultData.receiverPath, + paymentVaultType: self.paymentVaultType, + price: price, + extraRoles: [], + metadataLink: metadataLink + ) + } +} +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/marketplace_list_flow.cdc b/lib/go/iinft/scripts/templates/transactions/marketplace_list_flow.cdc index 9229569..d940b81 100644 --- a/lib/go/iinft/scripts/templates/transactions/marketplace_list_flow.cdc +++ b/lib/go/iinft/scripts/templates/transactions/marketplace_list_flow.cdc @@ -7,25 +7,33 @@ import DigitalArt from {{.DigitalArt}} import SequelMarketplace from {{.SequelMarketplace}} transaction(tokenID: UInt64, price: UFix64, metadataLink: String?) { - let nftProviderCapability: Capability<&{NonFungibleToken.Provider,NonFungibleToken.CollectionPublic,Evergreen.CollectionPublic}> - let storefront: &NFTStorefront.Storefront + let nftProviderCapability: Capability + let storefront: auth(NFTStorefront.CreateListing) &NFTStorefront.Storefront - prepare(acct: AuthAccount) { - let nftProviderPath = /private/SequelNFTProviderForNFTStorefront - if !acct.getCapability<&{NonFungibleToken.Provider,NonFungibleToken.CollectionPublic,Evergreen.CollectionPublic}>(nftProviderPath)!.check() { - acct.link<&{NonFungibleToken.Provider,NonFungibleToken.CollectionPublic,Evergreen.CollectionPublic}>(nftProviderPath, target: DigitalArt.CollectionStoragePath) - } + prepare(acct: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability) &Account) { + self.nftProviderCapability = acct.capabilities.storage.issue( + DigitalArt.CollectionStoragePath + ) + assert(self.nftProviderCapability.check(), message: "Missing or mis-typed nft collection provider") + + // If the account doesn't already have a Storefront + if acct.storage.borrow<&NFTStorefront.Storefront>(from: NFTStorefront.StorefrontStoragePath) == nil { - self.nftProviderCapability = acct.getCapability<&{NonFungibleToken.Provider,NonFungibleToken.CollectionPublic,Evergreen.CollectionPublic}>(nftProviderPath)! - assert(self.nftProviderCapability.borrow() != nil, message: "Missing or mis-typed nft collection provider") + // Create a new empty .Storefront + let storefront <- NFTStorefront.createStorefront() - if acct.borrow<&NFTStorefront.Storefront>(from: NFTStorefront.StorefrontStoragePath) == nil { - let storefront <- NFTStorefront.createStorefront() as! @NFTStorefront.Storefront - acct.save(<-storefront, to: NFTStorefront.StorefrontStoragePath) - acct.link<&NFTStorefront.Storefront{NFTStorefront.StorefrontPublic}>(NFTStorefront.StorefrontPublicPath, target: NFTStorefront.StorefrontStoragePath) + // save it to the account + acct.storage.save(<-storefront, to: NFTStorefront.StorefrontStoragePath) + + // create a public capability for the .Storefront & publish + let storefrontPublicCap = acct.capabilities.storage.issue<&{NFTStorefront.StorefrontPublic}>( + NFTStorefront.StorefrontStoragePath + ) + acct.capabilities.publish(storefrontPublicCap, at: NFTStorefront.StorefrontPublicPath) } - self.storefront = acct.borrow<&NFTStorefront.Storefront>(from: NFTStorefront.StorefrontStoragePath) - ?? panic("Missing or mis-typed NFTStorefront Storefront") + + self.storefront = acct.storage.borrow(from: NFTStorefront.StorefrontStoragePath) + ?? panic("Could not borrow Storefront from provided address") } execute { @@ -42,4 +50,4 @@ transaction(tokenID: UInt64, price: UFix64, metadataLink: String?) { ) } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/marketplace_list_fusd.cdc b/lib/go/iinft/scripts/templates/transactions/marketplace_list_fusd.cdc deleted file mode 100644 index ae5ff30..0000000 --- a/lib/go/iinft/scripts/templates/transactions/marketplace_list_fusd.cdc +++ /dev/null @@ -1,45 +0,0 @@ -{{ define "marketplace_list_fusd" }} -import NonFungibleToken from {{.NonFungibleToken}} -import NFTStorefront from {{.NFTStorefront}} -import FUSD from {{.FUSD}} -import Evergreen from {{.Evergreen}} -import DigitalArt from {{.DigitalArt}} -import SequelMarketplace from {{.SequelMarketplace}} - -transaction(tokenID: UInt64, price: UFix64, metadataLink: String?) { - let nftProviderCapability: Capability<&{NonFungibleToken.Provider,NonFungibleToken.CollectionPublic,Evergreen.CollectionPublic}> - let storefront: &NFTStorefront.Storefront - - prepare(acct: AuthAccount) { - let nftProviderPath = /private/SequelNFTProviderForNFTStorefront - if !acct.getCapability<&{NonFungibleToken.Provider,NonFungibleToken.CollectionPublic,Evergreen.CollectionPublic}>(nftProviderPath)!.check() { - acct.link<&{NonFungibleToken.Provider,NonFungibleToken.CollectionPublic,Evergreen.CollectionPublic}>(nftProviderPath, target: DigitalArt.CollectionStoragePath) - } - - self.nftProviderCapability = acct.getCapability<&{NonFungibleToken.Provider,NonFungibleToken.CollectionPublic,Evergreen.CollectionPublic}>(nftProviderPath)! - assert(self.nftProviderCapability.borrow() != nil, message: "Missing or mis-typed nft collection provider") - - if acct.borrow<&NFTStorefront.Storefront>(from: NFTStorefront.StorefrontStoragePath) == nil { - let storefront <- NFTStorefront.createStorefront() as! @NFTStorefront.Storefront - acct.save(<-storefront, to: NFTStorefront.StorefrontStoragePath) - acct.link<&NFTStorefront.Storefront{NFTStorefront.StorefrontPublic}>(NFTStorefront.StorefrontPublicPath, target: NFTStorefront.StorefrontStoragePath) - } - self.storefront = acct.borrow<&NFTStorefront.Storefront>(from: NFTStorefront.StorefrontStoragePath) - ?? panic("Missing or mis-typed NFTStorefront Storefront") - } - - execute { - SequelMarketplace.listToken( - storefront: self.storefront, - nftProviderCapability: self.nftProviderCapability, - nftType: Type<@DigitalArt.NFT>(), - nftID: tokenID, - sellerVaultPath: /public/fusdReceiver, - paymentVaultType: Type<@FUSD.Vault>(), - price: price, - extraRoles: [], - metadataLink: metadataLink - ) - } -} -{{ end }} \ No newline at end of file diff --git a/lib/go/iinft/scripts/templates/transactions/marketplace_withdraw.cdc b/lib/go/iinft/scripts/templates/transactions/marketplace_withdraw.cdc index ead4911..966e844 100644 --- a/lib/go/iinft/scripts/templates/transactions/marketplace_withdraw.cdc +++ b/lib/go/iinft/scripts/templates/transactions/marketplace_withdraw.cdc @@ -3,11 +3,11 @@ import NFTStorefront from {{.NFTStorefront}} import SequelMarketplace from {{.SequelMarketplace}} transaction(listingID: UInt64) { - let storefront: &NFTStorefront.Storefront + let storefront: auth(NFTStorefront.RemoveListing) &NFTStorefront.Storefront let storefrontAddress: Address - prepare(acct: AuthAccount) { - self.storefront = acct.borrow<&NFTStorefront.Storefront>(from: NFTStorefront.StorefrontStoragePath) + prepare(acct: auth(BorrowValue) &Account) { + self.storefront = acct.storage.borrow(from: NFTStorefront.StorefrontStoragePath) ?? panic("Could not borrow Storefront from provided address") self.storefrontAddress = acct.address } @@ -20,4 +20,4 @@ transaction(listingID: UInt64) { ) } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/master_seal.cdc b/lib/go/iinft/scripts/templates/transactions/master_seal.cdc index f887726..7ad03e0 100644 --- a/lib/go/iinft/scripts/templates/transactions/master_seal.cdc +++ b/lib/go/iinft/scripts/templates/transactions/master_seal.cdc @@ -6,12 +6,12 @@ import DigitalArt from {{.DigitalArt}} transaction(metadata: DigitalArt.Metadata, evergreenProfile: Evergreen.Profile) { let admin: &DigitalArt.Admin - prepare(signer: AuthAccount) { - self.admin = signer.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! + prepare(signer: auth(BorrowValue) &Account) { + self.admin = signer.storage.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! } execute { self.admin.sealMaster(metadata: metadata, evergreenProfile: evergreenProfile) } } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/transactions/service_deposit_fusd_minter.cdc b/lib/go/iinft/scripts/templates/transactions/service_deposit_fusd_minter.cdc deleted file mode 100644 index 8e07d08..0000000 --- a/lib/go/iinft/scripts/templates/transactions/service_deposit_fusd_minter.cdc +++ /dev/null @@ -1,56 +0,0 @@ -{{ define "service_deposit_fusd_minter" }} -// This transaction creates a new FUSD minter and deposits -// it into an existing minter proxy resource on the specified account. -// -// Parameters: -// - minterAddress: The minter account address. -// -// This transaction will fail if the authorizer does not have the FUSD.Administrator -// resource. -// -// This transaction will fail if the minter account does not have -// an FUSD.MinterProxy resource. Use the setup_fusd_minter.cdc transaction to -// create a minter proxy in the minter account. - -import FUSD from {{.FUSD}} - -transaction(minterAddress: Address) { - - let resourceStoragePath: StoragePath - let capabilityPrivatePath: CapabilityPath - let minterCapability: Capability<&FUSD.Minter> - - prepare(adminAccount: AuthAccount) { - - // These paths must be unique within the FUSD contract account's storage - self.resourceStoragePath = /storage/test_minter - self.capabilityPrivatePath = /private/test_minter - - // Create a reference to the admin resource in storage. - let tokenAdmin = adminAccount.borrow<&FUSD.Administrator>(from: FUSD.AdminStoragePath) - ?? panic("Could not borrow a reference to the admin resource") - - // Create a new minter resource and a private link to a capability for it in the admin's storage. - let minter <- tokenAdmin.createNewMinter() - adminAccount.save(<- minter, to: self.resourceStoragePath) - self.minterCapability = adminAccount.link<&FUSD.Minter>( - self.capabilityPrivatePath, - target: self.resourceStoragePath - ) ?? panic("Could not link minter") - - } - - execute { - // This is the account that the capability will be given to - let minterAccount = getAccount(minterAddress) - - let capabilityReceiver = minterAccount.getCapability - <&FUSD.MinterProxy{FUSD.MinterProxyPublic}> - (FUSD.MinterProxyPublicPath)! - .borrow() ?? panic("Could not borrow capability receiver reference") - - capabilityReceiver.setMinterCapability(cap: self.minterCapability) - } - -} -{{ end }} \ No newline at end of file diff --git a/lib/go/iinft/scripts/templates/transactions/service_setup_fusd_minter.cdc b/lib/go/iinft/scripts/templates/transactions/service_setup_fusd_minter.cdc deleted file mode 100644 index 8c77d4f..0000000 --- a/lib/go/iinft/scripts/templates/transactions/service_setup_fusd_minter.cdc +++ /dev/null @@ -1,28 +0,0 @@ -{{ define "service_setup_fusd_minter" }} -// This transaction creates a new minter proxy resource and -// stores it in the signer's account. -// -// After running this transaction, the FUSD administrator -// must run service_deposit_fusd_minter.cdc to deposit a minter resource -// inside the minter proxy. - -import FUSD from {{.FUSD}} - -transaction { - - prepare(minter: AuthAccount) { - - let minterProxy <- FUSD.createMinterProxy() - - minter.save( - <- minterProxy, - to: FUSD.MinterProxyStoragePath, - ) - - minter.link<&FUSD.MinterProxy{FUSD.MinterProxyPublic}>( - FUSD.MinterProxyPublicPath, - target: FUSD.MinterProxyStoragePath - ) - } -} -{{ end }} \ No newline at end of file diff --git a/lib/go/iinft/scripts/testing.go b/lib/go/iinft/scripts/testing.go index 5adeff6..3f5627c 100644 --- a/lib/go/iinft/scripts/testing.go +++ b/lib/go/iinft/scripts/testing.go @@ -99,25 +99,10 @@ func GetFlowBalance(t *testing.T, se *Engine, address flow.Address) float64 { return iinft.ToFloat64(v) } -func PrepareFUSDMinter(t *testing.T, se *Engine, minterAddress flow.Address) { +func FundAccountWithExampleToken(t *testing.T, se *Engine, receiverAddress flow.Address, amount string) { t.Helper() - _ = se.NewTransaction("service_setup_fusd_minter"). - SignProposeAndPayAsService(). - Test(t). - AssertSuccess() - - _ = se.NewTransaction("service_deposit_fusd_minter"). - Argument(cadence.NewAddress(minterAddress)). - SignProposeAndPayAsService(). - Test(t). - AssertSuccess() -} - -func FundAccountWithFUSD(t *testing.T, se *Engine, receiverAddress flow.Address, amount string) { - t.Helper() - - _ = se.NewTransaction("account_fund_fusd"). + _ = se.NewTransaction("account_fund_example_ft"). Argument(cadence.NewAddress(receiverAddress)). UFix64Argument(amount). SignProposeAndPayAsService(). @@ -125,10 +110,10 @@ func FundAccountWithFUSD(t *testing.T, se *Engine, receiverAddress flow.Address, AssertSuccess() } -func GetFUSDBalance(t *testing.T, se *Engine, address flow.Address) float64 { +func GetExampleTokenBalance(t *testing.T, se *Engine, address flow.Address) float64 { t.Helper() - v, err := se.NewScript("account_balance_fusd"). + v, err := se.NewScript("account_balance_example_ft"). Argument(cadence.NewAddress(address)). RunReturns(context.Background()) require.NoError(t, err) @@ -136,6 +121,26 @@ func GetFUSDBalance(t *testing.T, se *Engine, address flow.Address) float64 { return iinft.ToFloat64(v) } +func SetUpRoyaltyReceivers(t *testing.T, se *Engine, signAndProposeAs, payAs string, extraTokenNames ...string) { + t.Helper() + + var addresses []cadence.Value + var names []cadence.Value + + for _, name := range extraTokenNames { + addresses = append(addresses, cadence.NewAddress(se.ContractAddress(name))) + names = append(names, cadence.String(name)) + } + + _ = se.NewTransaction("account_royalty_receiver_setup"). + SignAndProposeAs(signAndProposeAs). + PayAs(payAs). + Argument(cadence.NewArray(addresses)). + Argument(cadence.NewArray(names)). + Test(t). + AssertSuccess() +} + func CreateSealDigitalArtTx(t *testing.T, se *Engine, client *gwtf.GoWithTheFlow, metadata *iinft.DigitalArtMetadata, profile *evergreen.Profile) gwtf.FlowTransactionBuilder { t.Helper() diff --git a/lib/go/iinft/test/digitalart_integration_test.go b/lib/go/iinft/test/digitalart_integration_test.go index a8babef..31c69f5 100644 --- a/lib/go/iinft/test/digitalart_integration_test.go +++ b/lib/go/iinft/test/digitalart_integration_test.go @@ -13,7 +13,7 @@ import ( "github.com/stretchr/testify/require" ) -func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { +func TestDigitalArt_Integration_MintOnDemand_ExampleToken(t *testing.T) { client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) require.NoError(t, err) @@ -22,27 +22,25 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) - // set up platform account platformAcct := client.Account(platformAccountName) - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(platformAccountName).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, platformAccountName, adminAccountName, "ExampleToken") // set up green account greenAcctName := user3AccountName greenAcct := client.Account(greenAcctName) - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(greenAcctName).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, greenAcctName, adminAccountName, "ExampleToken") // set up artist account artistAcctName := user1AccountName artistAcct := client.Account(artistAcctName) - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(artistAcctName).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, artistAcctName, adminAccountName, "ExampleToken") // set up buyer account @@ -52,8 +50,8 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() - scripts.FundAccountWithFUSD(t, se, buyerAcct.Address, "1000.0") + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() + scripts.FundAccountWithExampleToken(t, se, buyerAcct.Address, "1000.0") checkDigitalArtNFTSupply(t, se, 0) checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 0) @@ -85,7 +83,7 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { t.Run("Should be able to mint a token on demand (master not sealed)", func(t *testing.T) { - _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand_fusd", scripts.MintOnDemandParameters{ + _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand", scripts.MintOnDemandParameters{ Metadata: metadata, Profile: profile, })). @@ -94,24 +92,26 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { StringArgument(metadata.Asset). UInt64Argument(1). UFix64Argument("100.0"). + Argument(cadence.NewAddress(se.ContractAddress("ExampleToken"))). + StringArgument("ExampleToken"). UInt64Argument(123). Test(t). AssertSuccess(). - AssertEventCount(12). + AssertEventCount(15). AssertEmitEventName( - "A.01cf0e2f2f715450.DigitalArt.Minted", - "A.01cf0e2f2f715450.DigitalArt.Deposit", - "A.f8d6e0586b0a20c7.FUSD.TokensWithdrawn", - "A.f8d6e0586b0a20c7.FUSD.TokensDeposited"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + "A.179b6b1cb6755e31.DigitalArt.Minted", + "A.179b6b1cb6755e31.DigitalArt.Deposit", + "A.ee82856bf20e2aa6.FungibleToken.Withdrawn", + "A.ee82856bf20e2aa6.FungibleToken.Deposited"). + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Minted", map[string]interface{}{ "id": "0", "asset": "did:sequel:asset-id", "edition": "1", "modID": "123", })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Deposit", map[string]interface{}{ "id": "0", - "to": "0xe03daebed8ca0615", + "to": "0x045a1763c93006ca", })) // Assert that the account's collection is correct @@ -130,15 +130,15 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { assert.Equal(t, uint64(1), meta.Edition) - assert.Equal(t, 90.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) - assert.Equal(t, 900.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address)) - assert.Equal(t, 5.0, scripts.GetFUSDBalance(t, se, platformAcct.Address)) - assert.Equal(t, 5.0, scripts.GetFUSDBalance(t, se, greenAcct.Address)) + assert.Equal(t, 90.0, scripts.GetExampleTokenBalance(t, se, artistAcct.Address)) + assert.Equal(t, 900.0, scripts.GetExampleTokenBalance(t, se, buyerAcct.Address)) + assert.Equal(t, 5.0, scripts.GetExampleTokenBalance(t, se, platformAcct.Address)) + assert.Equal(t, 5.0, scripts.GetExampleTokenBalance(t, se, greenAcct.Address)) }) t.Run("Should be able to mint a token on demand (master sealed, metadata provided)", func(t *testing.T) { - _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand_fusd", scripts.MintOnDemandParameters{ + _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand", scripts.MintOnDemandParameters{ Metadata: metadata, Profile: profile, })). @@ -147,24 +147,26 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { StringArgument(metadata.Asset). UInt64Argument(1). UFix64Argument("100.0"). + Argument(cadence.NewAddress(se.ContractAddress("ExampleToken"))). + StringArgument("ExampleToken"). UInt64Argument(123). Test(t). AssertSuccess(). - AssertEventCount(12). + AssertEventCount(15). AssertEmitEventName( - "A.01cf0e2f2f715450.DigitalArt.Minted", - "A.01cf0e2f2f715450.DigitalArt.Deposit", - "A.f8d6e0586b0a20c7.FUSD.TokensWithdrawn", - "A.f8d6e0586b0a20c7.FUSD.TokensDeposited"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + "A.179b6b1cb6755e31.DigitalArt.Minted", + "A.179b6b1cb6755e31.DigitalArt.Deposit", + "A.ee82856bf20e2aa6.FungibleToken.Withdrawn", + "A.ee82856bf20e2aa6.FungibleToken.Deposited"). + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Minted", map[string]interface{}{ "id": "1", "asset": "did:sequel:asset-id", "edition": "2", "modID": "123", })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Deposit", map[string]interface{}{ "id": "1", - "to": "0xe03daebed8ca0615", + "to": "0x045a1763c93006ca", })) // Assert that the account's collection is correct @@ -183,38 +185,40 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { assert.Equal(t, uint64(1), meta.Edition) - assert.Equal(t, 180.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) - assert.Equal(t, 800.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address)) - assert.Equal(t, 10.0, scripts.GetFUSDBalance(t, se, platformAcct.Address)) - assert.Equal(t, 10.0, scripts.GetFUSDBalance(t, se, greenAcct.Address)) + assert.Equal(t, 180.0, scripts.GetExampleTokenBalance(t, se, artistAcct.Address)) + assert.Equal(t, 800.0, scripts.GetExampleTokenBalance(t, se, buyerAcct.Address)) + assert.Equal(t, 10.0, scripts.GetExampleTokenBalance(t, se, platformAcct.Address)) + assert.Equal(t, 10.0, scripts.GetExampleTokenBalance(t, se, greenAcct.Address)) }) t.Run("Should be able to mint a token on demand (master sealed, metadata not provided)", func(t *testing.T) { - _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand_fusd", scripts.MintOnDemandParameters{})). + _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand", scripts.MintOnDemandParameters{})). PayloadSigner(buyerAcctName). SignProposeAndPayAs(adminAccountName). StringArgument(metadata.Asset). UInt64Argument(1). UFix64Argument("100.0"). + Argument(cadence.NewAddress(se.ContractAddress("ExampleToken"))). + StringArgument("ExampleToken"). UInt64Argument(123). Test(t). AssertSuccess(). - AssertEventCount(12). + AssertEventCount(15). AssertEmitEventName( - "A.01cf0e2f2f715450.DigitalArt.Minted", - "A.01cf0e2f2f715450.DigitalArt.Deposit", - "A.f8d6e0586b0a20c7.FUSD.TokensWithdrawn", - "A.f8d6e0586b0a20c7.FUSD.TokensDeposited"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + "A.179b6b1cb6755e31.DigitalArt.Minted", + "A.179b6b1cb6755e31.DigitalArt.Deposit", + "A.ee82856bf20e2aa6.FungibleToken.Withdrawn", + "A.ee82856bf20e2aa6.FungibleToken.Deposited"). + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Minted", map[string]interface{}{ "asset": "did:sequel:asset-id", "edition": "3", "id": "2", "modID": "123", })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Deposit", map[string]interface{}{ "id": "2", - "to": "0xe03daebed8ca0615", + "to": "0x045a1763c93006ca", })) // Assert that the account's collection is correct @@ -233,10 +237,10 @@ func TestDigitalArt_Integration_MintOnDemand_FUSD(t *testing.T) { assert.Equal(t, uint64(1), meta.Edition) - assert.Equal(t, 270.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) - assert.Equal(t, 700.0, scripts.GetFUSDBalance(t, se, buyerAcct.Address)) - assert.Equal(t, 15.0, scripts.GetFUSDBalance(t, se, platformAcct.Address)) - assert.Equal(t, 15.0, scripts.GetFUSDBalance(t, se, greenAcct.Address)) + assert.Equal(t, 270.0, scripts.GetExampleTokenBalance(t, se, artistAcct.Address)) + assert.Equal(t, 700.0, scripts.GetExampleTokenBalance(t, se, buyerAcct.Address)) + assert.Equal(t, 15.0, scripts.GetExampleTokenBalance(t, se, platformAcct.Address)) + assert.Equal(t, 15.0, scripts.GetExampleTokenBalance(t, se, greenAcct.Address)) }) } @@ -253,21 +257,21 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { platformAcct := client.Account(platformAccountName) - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(platformAccountName).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, platformAccountName, adminAccountName) // set up green account greenAcctName := user3AccountName greenAcct := client.Account(greenAcctName) - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(greenAcctName).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, greenAcctName, adminAccountName) // set up artist account artistAcctName := user1AccountName artistAcct := client.Account(artistAcctName) - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(artistAcctName).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, artistAcctName, adminAccountName) // set up buyer account @@ -320,21 +324,21 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { UInt64Argument(123). Test(t). AssertSuccess(). - AssertEventCount(12). + AssertEventCount(22). AssertEmitEventName( - "A.01cf0e2f2f715450.DigitalArt.Minted", - "A.01cf0e2f2f715450.DigitalArt.Deposit", + "A.179b6b1cb6755e31.DigitalArt.Minted", + "A.179b6b1cb6755e31.DigitalArt.Deposit", "A.0ae53cb6e3f42a79.FlowToken.TokensWithdrawn", "A.0ae53cb6e3f42a79.FlowToken.TokensDeposited"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Minted", map[string]interface{}{ "id": "0", "asset": "did:sequel:asset-id", "edition": "1", "modID": "123", })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Deposit", map[string]interface{}{ "id": "0", - "to": "0xe03daebed8ca0615", + "to": "0x045a1763c93006ca", })) // Assert that the account's collection is correct @@ -373,21 +377,21 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { UInt64Argument(123). Test(t). AssertSuccess(). - AssertEventCount(12). + AssertEventCount(22). AssertEmitEventName( - "A.01cf0e2f2f715450.DigitalArt.Minted", - "A.01cf0e2f2f715450.DigitalArt.Deposit", + "A.179b6b1cb6755e31.DigitalArt.Minted", + "A.179b6b1cb6755e31.DigitalArt.Deposit", "A.0ae53cb6e3f42a79.FlowToken.TokensWithdrawn", "A.0ae53cb6e3f42a79.FlowToken.TokensDeposited"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Minted", map[string]interface{}{ "id": "1", "asset": "did:sequel:asset-id", "edition": "2", "modID": "123", })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Deposit", map[string]interface{}{ "id": "1", - "to": "0xe03daebed8ca0615", + "to": "0x045a1763c93006ca", })) // Assert that the account's collection is correct @@ -469,7 +473,7 @@ func TestDigitalArt_Integration_Transfer(t *testing.T) { UInt64Argument(3). Argument(cadence.Address(receiverAcct.Address)). Test(t). - AssertFailure("missing NFT") + AssertFailure("Could not withdraw an NFT with ID") checkDigitalArtCollectionLen(t, se, receiverAcct.Address.String(), 0) checkDigitalArtCollectionLen(t, se, senderAcct.Address.String(), 1) diff --git a/lib/go/iinft/test/digitalart_test.go b/lib/go/iinft/test/digitalart_test.go index b5196aa..e586584 100644 --- a/lib/go/iinft/test/digitalart_test.go +++ b/lib/go/iinft/test/digitalart_test.go @@ -52,10 +52,10 @@ func TestDigitalArt_Master(t *testing.T) { t.Run("Should be able to seal new digital art master", func(t *testing.T) { _, err := client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 -import Evergreen from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 +import Evergreen from 0x179b6b1cb6755e31 -pub fun main(metadata: DigitalArt.Metadata, evergreenProfile: Evergreen.Profile) { +access(all) fun main(metadata: DigitalArt.Metadata, evergreenProfile: Evergreen.Profile) { // test typical master lifecycle @@ -209,9 +209,9 @@ func TestDigitalArt_sealMaster(t *testing.T) { // ensure the master is closed _, err := client.Script(` - import DigitalArt from 0x01cf0e2f2f715450 + import DigitalArt from 0x179b6b1cb6755e31 - pub fun main(masterId: String) { + access(all) fun main(masterId: String) { assert(DigitalArt.isClosed(masterId: masterId), message: "master is not closed") } `). @@ -264,17 +264,17 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { Argument(cadence.Address(userAcct.Address)). Test(t). AssertSuccess(). - AssertEventCount(5). - AssertEmitEventName("A.01cf0e2f2f715450.DigitalArt.Minted", "A.01cf0e2f2f715450.DigitalArt.Deposit"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + AssertEventCount(8). + AssertEmitEventName("A.179b6b1cb6755e31.DigitalArt.Minted", "A.179b6b1cb6755e31.DigitalArt.Deposit"). + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Minted", map[string]interface{}{ "id": "0", "asset": "did:sequel:asset-id", "edition": "1", "modID": "0", })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Deposit", map[string]interface{}{ "id": "0", - "to": "0xf3fcd2c1a78f5eee", + "to": "0xe03daebed8ca0615", })) // Assert that the account's collection is correct @@ -302,17 +302,17 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { Argument(cadence.Address(userAcct.Address)). Test(t). AssertSuccess(). - AssertEventCount(5). - AssertEmitEventName("A.01cf0e2f2f715450.DigitalArt.Minted", "A.01cf0e2f2f715450.DigitalArt.Deposit"). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Minted", map[string]interface{}{ + AssertEventCount(8). + AssertEmitEventName("A.179b6b1cb6755e31.DigitalArt.Minted", "A.179b6b1cb6755e31.DigitalArt.Deposit"). + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Minted", map[string]interface{}{ "id": "1", "asset": "did:sequel:asset-id", "edition": "2", "modID": "0", })). - AssertEmitEvent(gwtf.NewTestEvent("A.01cf0e2f2f715450.DigitalArt.Deposit", map[string]interface{}{ + AssertEmitEvent(gwtf.NewTestEvent("A.179b6b1cb6755e31.DigitalArt.Deposit", map[string]interface{}{ "id": "1", - "to": "0xf3fcd2c1a78f5eee", + "to": "0xe03daebed8ca0615", })) // Assert that the account's collection is correct @@ -344,13 +344,13 @@ func TestDigitalArt_mintEditionNFT(t *testing.T) { t.Run("Should fail if no available editions", func(t *testing.T) { _ = client.Transaction(` -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 transaction(masterId: String) { let admin: &DigitalArt.Admin - prepare(signer: AuthAccount) { - self.admin = signer.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! + prepare(signer: auth(BorrowValue) &Account) { + self.admin = signer.storage.borrow<&DigitalArt.Admin>(from: DigitalArt.AdminStoragePath)! assert(self.admin.availableEditions(masterId: masterId) == 0, message: "Available editions remain") } @@ -388,9 +388,9 @@ func TestDigitalArt_isClosed(t *testing.T) { AssertSuccess() _, err := client.Script(` - import DigitalArt from 0x01cf0e2f2f715450 + import DigitalArt from 0x179b6b1cb6755e31 - pub fun main(masterId: String) { + access(all) fun main(masterId: String) { assert(!DigitalArt.isClosed(masterId: masterId), message: "test failed") } `). @@ -401,9 +401,9 @@ func TestDigitalArt_isClosed(t *testing.T) { t.Run("isClosed() should return false, if master isn't sealed at all", func(t *testing.T) { _, err := client.Script(` - import DigitalArt from 0x01cf0e2f2f715450 + import DigitalArt from 0x179b6b1cb6755e31 - pub fun main(masterId: String) { + access(all) fun main(masterId: String) { assert(!DigitalArt.isClosed(masterId: masterId), message: "test failed") } `). @@ -445,9 +445,9 @@ func TestDigitalArt_isClosed(t *testing.T) { // ensure the master is closed _, err := client.Script(` - import DigitalArt from 0x01cf0e2f2f715450 + import DigitalArt from 0x179b6b1cb6755e31 - pub fun main(masterId: String) { + access(all) fun main(masterId: String) { assert(DigitalArt.isClosed(masterId: masterId), message: "master is not closed") } `). @@ -519,10 +519,10 @@ func TestDigitalArt_NFT(t *testing.T) { t.Run("getViews() should return a list of view types", func(t *testing.T) { var viewsVal cadence.Value viewsVal, err = client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : [Type] { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) : [Type] { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! if let item = collection.borrowDigitalArt(id: tokenID) { return item.getViews() } @@ -537,23 +537,24 @@ pub fun main(address:Address, tokenID:UInt64) : [Type] { viewsArray, ok := viewsVal.(cadence.Array) require.True(t, ok) - require.Equal(t, 6, len(viewsArray.Values)) + require.Equal(t, 7, len(viewsArray.Values)) assert.Equal(t, "Type()", viewsArray.Values[0].String()) - assert.Equal(t, "Type()", viewsArray.Values[1].String()) - assert.Equal(t, "Type()", viewsArray.Values[2].String()) - assert.Equal(t, "Type()", viewsArray.Values[3].String()) - assert.Equal(t, "Type()", viewsArray.Values[4].String()) - assert.Equal(t, "Type()", viewsArray.Values[5].String()) + assert.Equal(t, "Type()", viewsArray.Values[1].String()) + assert.Equal(t, "Type()", viewsArray.Values[2].String()) + assert.Equal(t, "Type()", viewsArray.Values[3].String()) + assert.Equal(t, "Type()", viewsArray.Values[4].String()) + assert.Equal(t, "Type()", viewsArray.Values[5].String()) + assert.Equal(t, "Type()", viewsArray.Values[6].String()) }) t.Run("resolveView(Type()) should return MetadataViews.Display view", func(t *testing.T) { var val cadence.Value val, err = client.Script(` import MetadataViews from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : MetadataViews.Display? { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) : MetadataViews.Display? { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! if let item = collection.borrowDigitalArt(id: tokenID) { if let view = item.resolveView(Type()) { return view as! MetadataViews.Display @@ -583,10 +584,10 @@ pub fun main(address:Address, tokenID:UInt64) : MetadataViews.Display? { _, err = client.Script(` import MetadataViews from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! var royalties: [MetadataViews.Royalty] = [] if let item = collection.borrowDigitalArt(id: tokenID) { @@ -613,10 +614,10 @@ pub fun main(address:Address, tokenID:UInt64) { _, err = client.Script(` import MetadataViews from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! var externalURL: MetadataViews.ExternalURL? = nil if let item = collection.borrowDigitalArt(id: tokenID) { @@ -639,10 +640,10 @@ pub fun main(address:Address, tokenID:UInt64) { var val cadence.Value val, err = client.Script(` import MetadataViews from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : DigitalArt.Metadata? { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) : DigitalArt.Metadata? { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! if let item = collection.borrowDigitalArt(id: tokenID) { if let view = item.resolveView(Type()) { return view as! DigitalArt.Metadata @@ -668,10 +669,10 @@ pub fun main(address:Address, tokenID:UInt64) : DigitalArt.Metadata? { t.Run("getAssetID() should return DigitalArt's master ID", func(t *testing.T) { var val cadence.Value val, err = client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : String { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) : String { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! if let item = collection.borrowDigitalArt(id: tokenID) { return item.getAssetID() } @@ -690,11 +691,11 @@ pub fun main(address:Address, tokenID:UInt64) : String { t.Run("getEvergreenProfile() should return DigitalArt's Evergreen profile", func(t *testing.T) { var val cadence.Value val, err = client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 -import Evergreen from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 +import Evergreen from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : Evergreen.Profile? { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) : Evergreen.Profile? { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! if let item = collection.borrowDigitalArt(id: tokenID) { return item.getEvergreenProfile() } @@ -752,10 +753,10 @@ func TestDigitalArt_Collection(t *testing.T) { t.Run("getIDs() should return a list of token IDs", func(t *testing.T) { var viewsVal cadence.Value viewsVal, err = client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : [UInt64] { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) : [UInt64] { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! return collection.getIDs() } `). @@ -780,13 +781,13 @@ pub fun main(address:Address, tokenID:UInt64) : [UInt64] { var val cadence.Value val, err = client.Script(` import NonFungibleToken from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : UInt64 { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{NonFungibleToken.CollectionPublic}>()! - let tokenRef = collection.borrowNFT(id: tokenID) +access(all) fun main(address:Address, tokenID:UInt64) : UInt64 { + let collection = getAccount(address).capabilities.borrow<&{NonFungibleToken.CollectionPublic}>(DigitalArt.CollectionPublicPath)! + let tokenRef = collection.borrowNFT(tokenID) as! &DigitalArt.NFT? - return tokenRef.id + return tokenRef!.id } `). Argument(cadence.Address(userAcct.Address)). @@ -794,18 +795,18 @@ pub fun main(address:Address, tokenID:UInt64) : UInt64 { RunReturns(context.Background()) require.NoError(t, err) - assert.Equal(t, uint64(1), val.(cadence.UInt64)) + assert.Equal(t, cadence.UInt64(1), val) }) t.Run("borrowNFT(...) should fail if NFT isn't found", func(t *testing.T) { _, err = client.Script(` import NonFungibleToken from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : UInt64 { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{NonFungibleToken.CollectionPublic}>()! - let tokenRef = collection.borrowNFT(id: tokenID) +access(all) fun main(address:Address, tokenID:UInt64) : UInt64 { + let collection = getAccount(address).capabilities.borrow<&{NonFungibleToken.CollectionPublic}>(DigitalArt.CollectionPublicPath)! + let tokenRef = collection.borrowNFT(tokenID) return tokenRef.id } @@ -819,10 +820,10 @@ pub fun main(address:Address, tokenID:UInt64) : UInt64 { t.Run("borrowDigitalArt(...) should return DigitalArt.NFT", func(t *testing.T) { var val cadence.Value val, err = client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : String { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) : String { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! let daToken = collection.borrowDigitalArt(id: tokenID) return daToken!.metadata.asset } @@ -838,10 +839,10 @@ pub fun main(address:Address, tokenID:UInt64) : String { t.Run("borrowDigitalArt(...) should return nil if token isn't found", func(t *testing.T) { var val cadence.Value val, err = client.Script(` -import DigitalArt from 0x01cf0e2f2f715450 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) : String { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{DigitalArt.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) : String { + let collection = getAccount(address).capabilities.borrow<&{DigitalArt.CollectionPublic}>(DigitalArt.CollectionPublicPath)! if let item = collection.borrowDigitalArt(id: tokenID) { return item.metadata.asset } @@ -860,12 +861,13 @@ pub fun main(address:Address, tokenID:UInt64) : String { _, err = client.Script(` import MetadataViews from 0xf8d6e0586b0a20c7 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{MetadataViews.ResolverCollection}>()! +import ViewResolver from 0xf8d6e0586b0a20c7 +import DigitalArt from 0x179b6b1cb6755e31 - let resolver = collection.borrowViewResolver(id: tokenID) +access(all) fun main(address:Address, tokenID:UInt64) { + let collection = getAccount(address).capabilities.borrow<&{ViewResolver.ResolverCollection}>(DigitalArt.CollectionPublicPath)! + + let resolver = collection.borrowViewResolver(id: tokenID)! if let view = resolver.resolveView(Type()) { let display = view as! MetadataViews.Display @@ -893,12 +895,12 @@ pub fun main(address:Address, tokenID:UInt64) { _, err = client.Script(` import MetadataViews from 0xf8d6e0586b0a20c7 -import Evergreen from 0x01cf0e2f2f715450 -import DigitalArt from 0x01cf0e2f2f715450 - -pub fun main(address:Address, tokenID:UInt64) { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{Evergreen.CollectionPublic}>()! +import Evergreen from 0x179b6b1cb6755e31 +import DigitalArt from 0x179b6b1cb6755e31 +access(all) fun main(address:Address, tokenID:UInt64) { + let collection = getAccount(address).capabilities.borrow<&{Evergreen.CollectionPublic}>(DigitalArt.CollectionPublicPath)! + let token = collection.borrowEvergreenToken(id: tokenID) let profile = token!.getEvergreenProfile() @@ -916,11 +918,11 @@ pub fun main(address:Address, tokenID:UInt64) { _, err = client.Script(` import MetadataViews from 0xf8d6e0586b0a20c7 -import Evergreen from 0x01cf0e2f2f715450 -import DigitalArt from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import DigitalArt from 0x179b6b1cb6755e31 -pub fun main(address:Address, tokenID:UInt64) { - let collection = getAccount(address).getCapability(DigitalArt.CollectionPublicPath)!.borrow<&{Evergreen.CollectionPublic}>()! +access(all) fun main(address:Address, tokenID:UInt64) { + let collection = getAccount(address).capabilities.borrow<&{Evergreen.CollectionPublic}>(DigitalArt.CollectionPublicPath)! let token = collection.borrowEvergreenToken(id: tokenID) diff --git a/lib/go/iinft/test/evergreen_test.go b/lib/go/iinft/test/evergreen_test.go index ff16012..291b091 100644 --- a/lib/go/iinft/test/evergreen_test.go +++ b/lib/go/iinft/test/evergreen_test.go @@ -29,9 +29,9 @@ func TestEvergreen_Role_commissionRate(t *testing.T) { artistAcct := client.Account(user1AccountName) _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 -pub fun main(addr: Address) { +access(all) fun main(addr: Address) { var role = Evergreen.Role( id: "test", @@ -60,9 +60,9 @@ func TestEvergreen_Profile_getRole(t *testing.T) { artistAcct := client.Account(user1AccountName) _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 -pub fun main(addr: Address) { +access(all) fun main(addr: Address) { var profile = Evergreen.Profile( id: "did:sequel:evergreen1", @@ -118,7 +118,7 @@ func TestEvergreen_Profile_buildRoyalties(t *testing.T) { InitialSaleCommission: 0.8, SecondaryMarketCommission: 0.05, Address: user1Acct.Address, - ReceiverPath: "/public/fusdReceiver", + ReceiverPath: "/public/exampleTokenReceiver", }, { ID: "test2", @@ -130,14 +130,14 @@ func TestEvergreen_Profile_buildRoyalties(t *testing.T) { }, } - profileVal, err := evergreen.ProfileToCadence(profile, flow.HexToAddress("0x01cf0e2f2f715450")) + profileVal, err := evergreen.ProfileToCadence(profile, flow.HexToAddress("0x179b6b1cb6755e31")) require.NoError(t, err) t.Run("Should return no royalties, if no valid receivers", func(t *testing.T) { _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile) { +access(all) fun main(profile: Evergreen.Profile) { var royalties = profile.buildRoyalties(defaultReceiverPath: nil) assert(royalties.length == 0, message: "Incorrect number of royalties") @@ -152,13 +152,13 @@ pub fun main(profile: Evergreen.Profile) { scripts.FundAccountWithFlow(t, client, user2Acct.Address, "10.0") t.Run("if defaultReceiverPath is nil, return royalties with a valid receiver", func(t *testing.T) { - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(user1AccountName). + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(user1AccountName). Test(t).AssertSuccess() _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile) { +access(all) fun main(profile: Evergreen.Profile) { var royalties = profile.buildRoyalties(defaultReceiverPath: nil) assert(royalties.length == 1, message: "Incorrect number of royalties") @@ -172,17 +172,17 @@ pub fun main(profile: Evergreen.Profile) { t.Run("if defaultReceiverPath is provided, return royalties with a valid receiver", func(t *testing.T) { scripts.FundAccountWithFlow(t, client, user1Acct.Address, "10.0") - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(user1AccountName). + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(user1AccountName). Test(t).AssertSuccess() - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(user2AccountName). + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(user2AccountName). Test(t).AssertSuccess() _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile) { - var royalties = profile.buildRoyalties(defaultReceiverPath: /public/fusdReceiver) +access(all) fun main(profile: Evergreen.Profile) { + var royalties = profile.buildRoyalties(defaultReceiverPath: /public/exampleTokenReceiver) assert(royalties.length == 2, message: "Incorrect number of royalties") } diff --git a/lib/go/iinft/test/fusd_test.go b/lib/go/iinft/test/example_ft_test.go similarity index 55% rename from lib/go/iinft/test/fusd_test.go rename to lib/go/iinft/test/example_ft_test.go index 05c6859..1d477d4 100644 --- a/lib/go/iinft/test/fusd_test.go +++ b/lib/go/iinft/test/example_ft_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/require" ) -func TestGetFUSDBalance(t *testing.T) { +func TestGetExampleTokenBalance(t *testing.T) { client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) require.NoError(t, err) @@ -18,25 +18,23 @@ func TestGetFUSDBalance(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) - artistAcctName := user1AccountName artistAcct := client.Account(artistAcctName) - assert.Equal(t, 0.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) + assert.Equal(t, 0.0, scripts.GetExampleTokenBalance(t, se, artistAcct.Address)) scripts.FundAccountWithFlow(t, client, artistAcct.Address, "10.0") - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(artistAcctName).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(artistAcctName).Test(t).AssertSuccess() - assert.Equal(t, 0.0, scripts.GetFUSDBalance(t, se, artistAcct.Address)) + assert.Equal(t, 0.0, scripts.GetExampleTokenBalance(t, se, artistAcct.Address)) - scripts.FundAccountWithFUSD(t, se, artistAcct.Address, "123.56") + scripts.FundAccountWithExampleToken(t, se, artistAcct.Address, "123.56") - assert.Equal(t, 123.56, scripts.GetFUSDBalance(t, se, artistAcct.Address)) + assert.Equal(t, 123.56, scripts.GetExampleTokenBalance(t, se, artistAcct.Address)) } -func TestSetUpFUSDAccount(t *testing.T) { +func TestSetUpExampleTokenAccount(t *testing.T) { client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) require.NoError(t, err) @@ -45,8 +43,6 @@ func TestSetUpFUSDAccount(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) - // set up platform account platformAcctName := "emulator-sequel-platform" @@ -56,9 +52,21 @@ func TestSetUpFUSDAccount(t *testing.T) { artistAcctName := user1AccountName - _ = se.NewTransaction("account_setup_fusd"). + _ = se.NewTransaction("account_setup_example_ft"). ProposeAs(artistAcctName). PayloadSigner(artistAcctName). PayAs(platformAcctName). Test(t).AssertSuccess() } + +func TestAddExampleTokenAsRoyaltyReceiver(t *testing.T) { + client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) + require.NoError(t, err) + + scripts.ConfigureInMemoryEmulator(t, client, "1000.0") + + se, err := scripts.NewEngine(client, false) + require.NoError(t, err) + + scripts.SetUpRoyaltyReceivers(t, se, user2AccountName, adminAccountName, "ExampleToken") +} diff --git a/lib/go/iinft/test/marketplace_integration_test.go b/lib/go/iinft/test/marketplace_integration_test.go index e4010ab..63c2a0e 100644 --- a/lib/go/iinft/test/marketplace_integration_test.go +++ b/lib/go/iinft/test/marketplace_integration_test.go @@ -31,7 +31,8 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { scripts.FundAccountWithFlow(t, client, sellerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() - _ = se.NewTransaction("account_royalty_receiver_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() + + scripts.SetUpRoyaltyReceivers(t, se, sellerAcctName, sellerAcctName) // set up buyer account @@ -61,7 +62,7 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { AssertSuccess() nftID := scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.DigitalArt.Minted", "id") + "A.179b6b1cb6755e31.DigitalArt.Minted", "id") // Assert that the account's collection is correct checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) @@ -79,42 +80,42 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { Test(t). AssertSuccess(). AssertPartialEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", map[string]interface{}{ "metadataLink": "link", "asset": "did:sequel:asset-id", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", "paymentVaultType": "A.0ae53cb6e3f42a79.FlowToken.Vault", "payments": []interface{}{ map[string]interface{}{ "amount": "10.00000000", "rate": "0.05000000", - "receiver": "0xf3fcd2c1a78f5eee", + "receiver": "0xe03daebed8ca0615", "role": "Artist", }, map[string]interface{}{ "amount": "190.00000000", "rate": "0.95000000", - "receiver": "0xf3fcd2c1a78f5eee", + "receiver": "0xe03daebed8ca0615", "role": "Owner", }, }, "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })). AssertPartialEvent(gwtf.NewTestEvent( "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", map[string]interface{}{ "ftVaultType": "Type\u003cA.0ae53cb6e3f42a79.FlowToken.Vault\u003e()", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "Type\u003cA.01cf0e2f2f715450.DigitalArt.NFT\u003e()", + "nftType": "Type\u003cA.179b6b1cb6755e31.DigitalArt.NFT\u003e()", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })) listingID = scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", "listingID") + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", "listingID") // test listing IDs separately, as they aren't stable assert.NotZero(t, listingID) @@ -131,15 +132,15 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { Test(t). AssertSuccess(). AssertEmitEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenSold", + "A.179b6b1cb6755e31.SequelMarketplace.TokenSold", map[string]interface{}{ "listingID": fmt.Sprintf("%d", listingID), "nftID": fmt.Sprintf("%d", nftID), - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", "paymentVaultType": "A.0ae53cb6e3f42a79.FlowToken.Vault", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", - "buyerAddress": "0xe03daebed8ca0615", + "storefrontAddress": "0xe03daebed8ca0615", + "buyerAddress": "0x045a1763c93006ca", "metadataLink": "link", })) @@ -150,7 +151,7 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { }) } -func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { +func TestMarketplace_Integration_ListAndBuyWithExampleToken(t *testing.T) { client, err := iinft.NewGoWithTheFlowFS("../../../..", "emulator", true, true) require.NoError(t, err) @@ -159,8 +160,6 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) - platformAcct := client.Account(platformAccountName) // set up seller account (seller is the artist) @@ -171,19 +170,20 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { scripts.FundAccountWithFlow(t, client, sellerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() - _ = se.NewTransaction("account_royalty_receiver_setup").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() + + scripts.SetUpRoyaltyReceivers(t, se, sellerAcctName, sellerAcctName, "ExampleToken") // set up buyer account - buyerAcctName := "emulator-user2" + buyerAcctName := user2AccountName buyerAcct := client.Account(buyerAcctName) require.NoError(t, err) scripts.FundAccountWithFlow(t, client, buyerAcct.Address, "10.0") _ = se.NewTransaction("account_setup").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() - scripts.FundAccountWithFUSD(t, se, buyerAcct.Address, "1000.0") + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(buyerAcctName).Test(t).AssertSuccess() + scripts.FundAccountWithExampleToken(t, se, buyerAcct.Address, "1000.0") metadata := SampleMetadata(1) profile := PrimaryOnlyEvergreenProfile(sellerAcct.Address, platformAcct.Address) @@ -202,7 +202,7 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { AssertSuccess() nftID := scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.DigitalArt.Minted", "id") + "A.179b6b1cb6755e31.DigitalArt.Minted", "id") // Assert that the account's collection is correct checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) @@ -212,51 +212,53 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { var listingID uint64 t.Run("Should be able to list an NFT in seller's Storefront", func(t *testing.T) { - res := se.NewTransaction("marketplace_list_fusd"). + res := se.NewTransaction("marketplace_list"). SignProposeAndPayAs(sellerAcctName). UInt64Argument(nftID). UFix64Argument("200.0"). + Argument(cadence.NewAddress(se.ContractAddress("ExampleToken"))). + StringArgument("ExampleToken"). Argument(cadence.NewOptional(nil)). Test(t). AssertSuccess(). AssertPartialEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", map[string]interface{}{ "asset": "did:sequel:asset-id", "metadataLink": "", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", - "paymentVaultType": "A.f8d6e0586b0a20c7.FUSD.Vault", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", + "paymentVaultType": "A.f8d6e0586b0a20c7.ExampleToken.Vault", "payments": []interface{}{ map[string]interface{}{ "amount": "10.00000000", "rate": "0.05000000", - "receiver": "0xf3fcd2c1a78f5eee", + "receiver": "0xe03daebed8ca0615", "role": "Artist", }, map[string]interface{}{ "amount": "190.00000000", "rate": "0.95000000", - "receiver": "0xf3fcd2c1a78f5eee", + "receiver": "0xe03daebed8ca0615", "role": "Owner", }, }, "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })). AssertPartialEvent(gwtf.NewTestEvent( "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", map[string]interface{}{ - "ftVaultType": "Type\u003cA.f8d6e0586b0a20c7.FUSD.Vault\u003e()", + "ftVaultType": "Type\u003cA.f8d6e0586b0a20c7.ExampleToken.Vault\u003e()", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "Type\u003cA.01cf0e2f2f715450.DigitalArt.NFT\u003e()", + "nftType": "Type\u003cA.179b6b1cb6755e31.DigitalArt.NFT\u003e()", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })) listingID = scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", "listingID") + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", "listingID") // test listing IDs separately, as they aren't stable assert.NotZero(t, listingID) @@ -265,23 +267,25 @@ func TestMarketplace_Integration_ListAndBuyWithFUSD(t *testing.T) { }) t.Run("Should be able to buy an NFT from seller's Storefront", func(t *testing.T) { - _ = se.NewTransaction("marketplace_buy_fusd"). + _ = se.NewTransaction("marketplace_buy"). SignProposeAndPayAs(buyerAcctName). UInt64Argument(listingID). Argument(cadence.NewAddress(sellerAcct.Address)). + Argument(cadence.NewAddress(se.ContractAddress("ExampleToken"))). + StringArgument("ExampleToken"). Argument(cadence.NewOptional(nil)). Test(t). AssertSuccess(). AssertEmitEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenSold", + "A.179b6b1cb6755e31.SequelMarketplace.TokenSold", map[string]interface{}{ "listingID": fmt.Sprintf("%d", listingID), "nftID": fmt.Sprintf("%d", nftID), - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", - "paymentVaultType": "A.f8d6e0586b0a20c7.FUSD.Vault", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", + "paymentVaultType": "A.f8d6e0586b0a20c7.ExampleToken.Vault", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", - "buyerAddress": "0xe03daebed8ca0615", + "storefrontAddress": "0xe03daebed8ca0615", + "buyerAddress": "0x045a1763c93006ca", "metadataLink": "", })) diff --git a/lib/go/iinft/test/marketplace_test.go b/lib/go/iinft/test/marketplace_test.go index b3c3de3..616bee1 100644 --- a/lib/go/iinft/test/marketplace_test.go +++ b/lib/go/iinft/test/marketplace_test.go @@ -24,8 +24,6 @@ func TestMarketplace_listToken(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) - platformAcct := client.Account(platformAccountName) // set up seller account @@ -39,7 +37,7 @@ func TestMarketplace_listToken(t *testing.T) { artistAcct := client.Account(user2AccountName) - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(user2AccountName).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, user2AccountName, adminAccountName) metadata := SampleMetadata(1) profile := PrimaryOnlyEvergreenProfile(artistAcct.Address, platformAcct.Address) @@ -58,7 +56,7 @@ func TestMarketplace_listToken(t *testing.T) { AssertSuccess() nftID := scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.DigitalArt.Minted", "id") + "A.179b6b1cb6755e31.DigitalArt.Minted", "id") // Assert that the account's collection is correct checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) @@ -73,170 +71,176 @@ func TestMarketplace_listToken(t *testing.T) { Test(t). AssertSuccess(). AssertPartialEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", map[string]interface{}{ "asset": "did:sequel:asset-id", "metadataLink": "link", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", "paymentVaultType": "A.0ae53cb6e3f42a79.FlowToken.Vault", "payments": []interface{}{ map[string]interface{}{ "amount": "10.00000000", "rate": "0.05000000", - "receiver": "0xe03daebed8ca0615", + "receiver": "0x045a1763c93006ca", "role": "Artist", }, map[string]interface{}{ "amount": "190.00000000", "rate": "0.95000000", - "receiver": "0xf3fcd2c1a78f5eee", + "receiver": "0xe03daebed8ca0615", "role": "Owner", }, }, "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })). AssertPartialEvent(gwtf.NewTestEvent( "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", map[string]interface{}{ "ftVaultType": "Type\u003cA.0ae53cb6e3f42a79.FlowToken.Vault\u003e()", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "Type\u003cA.01cf0e2f2f715450.DigitalArt.NFT\u003e()", + "nftType": "Type\u003cA.179b6b1cb6755e31.DigitalArt.NFT\u003e()", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })) // test listing IDs separately, as they aren't stable assert.NotZero(t, scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", "listingID")) + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", "listingID")) assert.NotZero(t, scripts.ExtractUInt64ValueFromEvent(res, "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", "listingResourceID")) }) - t.Run("Fail, if seller's receiver is invalid (FUSD)", func(t *testing.T) { - // Fund with Flow for FUSD setup fees + t.Run("Fail, if seller's receiver is invalid (ExampleToken)", func(t *testing.T) { + // Fund with Flow for ExampleToken setup fees scripts.FundAccountWithFlow(t, client, artistAcct.Address, "10.0") - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(artistAcct.Name).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(artistAcct.Name).Test(t).AssertSuccess() - _ = se.NewTransaction("marketplace_list_fusd"). + _ = se.NewTransaction("marketplace_list"). SignProposeAndPayAs(sellerAcctName). UInt64Argument(nftID). UFix64Argument("200.0"). + Argument(cadence.NewAddress(se.ContractAddress("ExampleToken"))). + StringArgument("ExampleToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertFailure("missing fungible token receiver") }) - t.Run("Succeed, if some receivers are invalid (FUSD)", func(t *testing.T) { - // Fund with Flow for FUSD setup fees + t.Run("Succeed, if some receivers are invalid (ExampleToken)", func(t *testing.T) { + // Fund with Flow for ExampleToken setup fees scripts.FundAccountWithFlow(t, client, artistAcct.Address, "10.0") - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(artistAcct.Name).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(artistAcct.Name).Test(t).AssertSuccess() - res := se.NewTransaction("marketplace_list_fusd"). + res := se.NewTransaction("marketplace_list"). SignProposeAndPayAs(sellerAcctName). UInt64Argument(nftID). UFix64Argument("200.0"). + Argument(cadence.NewAddress(se.ContractAddress("ExampleToken"))). + StringArgument("ExampleToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess(). AssertPartialEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", map[string]interface{}{ "asset": "did:sequel:asset-id", "metadataLink": "link", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", - "paymentVaultType": "A.f8d6e0586b0a20c7.FUSD.Vault", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", + "paymentVaultType": "A.f8d6e0586b0a20c7.ExampleToken.Vault", "payments": []interface{}{ map[string]interface{}{ "amount": "10.00000000", "rate": "0.05000000", - "receiver": "0xe03daebed8ca0615", + "receiver": "0x045a1763c93006ca", "role": "Artist", }, map[string]interface{}{ "amount": "190.00000000", "rate": "0.95000000", - "receiver": "0xf3fcd2c1a78f5eee", + "receiver": "0xe03daebed8ca0615", "role": "Owner", }, }, "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })). AssertPartialEvent(gwtf.NewTestEvent( "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", map[string]interface{}{ - "ftVaultType": "Type\u003cA.f8d6e0586b0a20c7.FUSD.Vault\u003e()", + "ftVaultType": "Type\u003cA.f8d6e0586b0a20c7.ExampleToken.Vault\u003e()", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "Type\u003cA.01cf0e2f2f715450.DigitalArt.NFT\u003e()", + "nftType": "Type\u003cA.179b6b1cb6755e31.DigitalArt.NFT\u003e()", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })) // test listing IDs separately, as they aren't stable assert.NotZero(t, scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", "listingID")) + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", "listingID")) assert.NotZero(t, scripts.ExtractUInt64ValueFromEvent(res, "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", "listingResourceID")) }) - t.Run("Happy path (FUSD)", func(t *testing.T) { - // Fund with Flow for FUSD setup fees + t.Run("Happy path (ExampleToken)", func(t *testing.T) { + // Fund with Flow for ExampleToken setup fees scripts.FundAccountWithFlow(t, client, platformAcct.Address, "10.0") - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(platformAcct.Name).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(sellerAcctName).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(platformAcct.Name).Test(t).AssertSuccess() - res := se.NewTransaction("marketplace_list_fusd"). + res := se.NewTransaction("marketplace_list"). SignProposeAndPayAs(sellerAcctName). UInt64Argument(nftID). UFix64Argument("200.0"). + Argument(cadence.NewAddress(se.ContractAddress("ExampleToken"))). + StringArgument("ExampleToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess(). AssertPartialEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", map[string]interface{}{ "asset": "did:sequel:asset-id", "metadataLink": "link", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", - "paymentVaultType": "A.f8d6e0586b0a20c7.FUSD.Vault", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", + "paymentVaultType": "A.f8d6e0586b0a20c7.ExampleToken.Vault", "payments": []interface{}{ map[string]interface{}{ "amount": "10.00000000", "rate": "0.05000000", - "receiver": "0xe03daebed8ca0615", + "receiver": "0x045a1763c93006ca", "role": "Artist", }, map[string]interface{}{ "amount": "190.00000000", "rate": "0.95000000", - "receiver": "0xf3fcd2c1a78f5eee", + "receiver": "0xe03daebed8ca0615", "role": "Owner", }, }, "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })). AssertPartialEvent(gwtf.NewTestEvent( "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", map[string]interface{}{ - "ftVaultType": "Type\u003cA.f8d6e0586b0a20c7.FUSD.Vault\u003e()", + "ftVaultType": "Type\u003cA.f8d6e0586b0a20c7.ExampleToken.Vault\u003e()", "nftID": fmt.Sprintf("%d", nftID), - "nftType": "Type\u003cA.01cf0e2f2f715450.DigitalArt.NFT\u003e()", + "nftType": "Type\u003cA.179b6b1cb6755e31.DigitalArt.NFT\u003e()", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", })) // test listing IDs separately, as they aren't stable assert.NotZero(t, scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.SequelMarketplace.TokenListed", "listingID")) + "A.179b6b1cb6755e31.SequelMarketplace.TokenListed", "listingID")) assert.NotZero(t, scripts.ExtractUInt64ValueFromEvent(res, "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", "listingResourceID")) }) @@ -289,7 +293,7 @@ func TestMarketplace_buyToken(t *testing.T) { AssertSuccess() nftID := scripts.ExtractUInt64ValueFromEvent(res, - "A.01cf0e2f2f715450.DigitalArt.Minted", "id") + "A.179b6b1cb6755e31.DigitalArt.Minted", "id") // Assert that the account's collection is correct checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) @@ -316,15 +320,15 @@ func TestMarketplace_buyToken(t *testing.T) { Test(t). AssertSuccess(). AssertEmitEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenSold", + "A.179b6b1cb6755e31.SequelMarketplace.TokenSold", map[string]interface{}{ "listingID": fmt.Sprintf("%d", listingID), "nftID": fmt.Sprintf("%d", nftID), - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", "paymentVaultType": "A.0ae53cb6e3f42a79.FlowToken.Vault", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", - "buyerAddress": "0xe03daebed8ca0615", + "storefrontAddress": "0xe03daebed8ca0615", + "buyerAddress": "0x045a1763c93006ca", "metadataLink": "link", })) @@ -344,8 +348,6 @@ func TestMarketplace_payForMintedTokens(t *testing.T) { se, err := scripts.NewEngine(client, false) require.NoError(t, err) - scripts.PrepareFUSDMinter(t, se, client.Account("emulator-account").Address) - evergreenAddr := flow.HexToAddress(se.WellKnownAddresses()["Evergreen"]) buyerAcct := client.Account(user2AccountName) @@ -373,18 +375,18 @@ func TestMarketplace_payForMintedTokens(t *testing.T) { }, evergreenAddr) require.NoError(t, err) - scriptWithFUSD := ` + scriptWithExampleToken := ` import FungibleToken from 0xee82856bf20e2aa6 -import FUSD from 0xf8d6e0586b0a20c7 -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import ExampleToken from 0xf8d6e0586b0a20c7 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) { - let paymentVault: @FungibleToken.Vault + let paymentVault: @{FungibleToken.Vault} - prepare(buyer: AuthAccount, platform: AuthAccount) { - let mainVault = buyer.borrow<&FUSD.Vault>(from: /storage/fusdVault) - ?? panic("Cannot borrow FUSD vault from acct storage") + prepare(buyer: auth(BorrowValue) &Account, platform: &Account) { + let mainVault = buyer.storage.borrow(from: /storage/exampleTokenVault) + ?? panic("Cannot borrow ExampleToken vault from acct storage") let price = unitPrice * UFix64(numEditions) self.paymentVault <- mainVault.withdraw(amount: price) } @@ -394,7 +396,7 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) unitPrice: unitPrice, numEditions: numEditions, sellerRole: "Artist", - sellerVaultPath: /public/fusdReceiver, + sellerVaultPath: /public/exampleTokenReceiver, paymentVault: <-self.paymentVault, evergreenProfile: profile, ) @@ -402,11 +404,11 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) }` t.Run("Fail if seller's receiver is invalid", func(t *testing.T) { - _ = se.NewTransaction("account_setup_fusd").SignProposeAndPayAs(buyerAcct.Name).Test(t).AssertSuccess() + _ = se.NewTransaction("account_setup_example_ft").SignProposeAndPayAs(buyerAcct.Name).Test(t).AssertSuccess() - scripts.FundAccountWithFUSD(t, se, buyerAcct.Address, "1000.0") + scripts.FundAccountWithExampleToken(t, se, buyerAcct.Address, "1000.0") - _ = client.Transaction(scriptWithFUSD). + _ = client.Transaction(scriptWithExampleToken). PayloadSigner(buyerAcct.Name). SignProposeAndPayAs(adminAccountName). UInt64Argument(1). @@ -417,11 +419,11 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) }) t.Run("If some receivers are invalid, send the remainder to last good receiver", func(t *testing.T) { - // RoleOne's FUSD receiver is missing. RoleOne's cut will go to the seller (the artist). + // RoleOne's ExampleToken receiver is missing. RoleOne's cut will go to the seller (the artist). - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(artistAcct.Name).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, artistAcct.Name, adminAccountName, "ExampleToken") - _ = client.Transaction(scriptWithFUSD). + _ = client.Transaction(scriptWithExampleToken). PayloadSigner(buyerAcct.Name). SignProposeAndPayAs(adminAccountName). UInt64Argument(1). @@ -429,40 +431,43 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) Argument(happyPathProfile). Test(t). AssertSuccess(). - AssertEmitEvent(gwtf.NewTestEvent( - "A.f8d6e0586b0a20c7.FUSD.TokensWithdrawn", + AssertPartialEvent(gwtf.NewTestEvent( + "A.ee82856bf20e2aa6.FungibleToken.Withdrawn", map[string]interface{}{ "amount": "100.00000000", "from": "0x" + buyerAcct.Address.String(), + "type": "A.f8d6e0586b0a20c7.ExampleToken.Vault", })). - AssertEmitEvent(gwtf.NewTestEvent( - "A.f8d6e0586b0a20c7.FUSD.TokensDeposited", + AssertPartialEvent(gwtf.NewTestEvent( + "A.ee82856bf20e2aa6.FungibleToken.Deposited", map[string]interface{}{ "amount": "80.00000000", - "to": "0x045a1763c93006ca", + "to": "0x120e725050340cab", + "type": "A.f8d6e0586b0a20c7.ExampleToken.Vault", })). - AssertEmitEvent(gwtf.NewTestEvent( - "A.f8d6e0586b0a20c7.FUSD.TokensDeposited", + AssertPartialEvent(gwtf.NewTestEvent( + "A.ee82856bf20e2aa6.FungibleToken.Deposited", map[string]interface{}{ "amount": "20.00000000", - "to": "0x045a1763c93006ca", + "to": "0x120e725050340cab", + "type": "A.f8d6e0586b0a20c7.ExampleToken.Vault", })) }) t.Run("Happy path (Flow)", func(t *testing.T) { - _ = se.NewTransaction("account_royalty_receiver_setup").SignAndProposeAs(roleOneAcct.Name).PayAs(adminAccountName).Test(t).AssertSuccess() + scripts.SetUpRoyaltyReceivers(t, se, roleOneAcct.Name, adminAccountName, "ExampleToken") _ = client.Transaction(` import FungibleToken from 0xee82856bf20e2aa6 import FlowToken from 0x0ae53cb6e3f42a79 -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) { - let paymentVault: @FungibleToken.Vault + let paymentVault: @{FungibleToken.Vault} - prepare(buyer: AuthAccount, platform: AuthAccount) { - let mainVault = buyer.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) + prepare(buyer: auth(BorrowValue) &Account, platform: &Account) { + let mainVault = buyer.storage.borrow(from: /storage/flowTokenVault) ?? panic("Cannot borrow FlowToken vault from acct storage") let price = unitPrice * UFix64(numEditions) self.paymentVault <- mainVault.withdraw(amount: price) @@ -496,7 +501,7 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) "A.0ae53cb6e3f42a79.FlowToken.TokensDeposited", map[string]interface{}{ "amount": "80.00000000", - "to": "0x045a1763c93006ca", + "to": "0x120e725050340cab", })). AssertEmitEvent(gwtf.NewTestEvent( "A.0ae53cb6e3f42a79.FlowToken.TokensDeposited", @@ -507,8 +512,8 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) require.NoError(t, err) }) - t.Run("Happy path (FUSD)", func(t *testing.T) { - _ = client.Transaction(scriptWithFUSD). + t.Run("Happy path (ExampleToken)", func(t *testing.T) { + _ = client.Transaction(scriptWithExampleToken). PayloadSigner(buyerAcct.Name). SignProposeAndPayAs(adminAccountName). UInt64Argument(1). @@ -516,20 +521,20 @@ transaction(numEditions: UInt64, unitPrice: UFix64, profile: Evergreen.Profile) Argument(happyPathProfile). Test(t). AssertSuccess(). - AssertEmitEvent(gwtf.NewTestEvent( - "A.f8d6e0586b0a20c7.FUSD.TokensWithdrawn", + AssertPartialEvent(gwtf.NewTestEvent( + "A.ee82856bf20e2aa6.FungibleToken.Withdrawn", map[string]interface{}{ "amount": "100.00000000", "from": "0x" + buyerAcct.Address.String(), })). - AssertEmitEvent(gwtf.NewTestEvent( - "A.f8d6e0586b0a20c7.FUSD.TokensDeposited", + AssertPartialEvent(gwtf.NewTestEvent( + "A.ee82856bf20e2aa6.FungibleToken.Deposited", map[string]interface{}{ "amount": "80.00000000", - "to": "0x045a1763c93006ca", + "to": "0x120e725050340cab", })). - AssertEmitEvent(gwtf.NewTestEvent( - "A.f8d6e0586b0a20c7.FUSD.TokensDeposited", + AssertPartialEvent(gwtf.NewTestEvent( + "A.ee82856bf20e2aa6.FungibleToken.Deposited", map[string]interface{}{ "amount": "20.00000000", "to": "0x" + roleOneAcct.Address.String(), @@ -604,25 +609,24 @@ func TestMarketplace_withdrawToken(t *testing.T) { Test(t). AssertSuccess(). AssertEmitEvent(gwtf.NewTestEvent( - "A.01cf0e2f2f715450.SequelMarketplace.TokenWithdrawn", + "A.179b6b1cb6755e31.SequelMarketplace.TokenWithdrawn", map[string]interface{}{ "listingID": fmt.Sprintf("%d", listingID), "nftID": "0", - "nftType": "A.01cf0e2f2f715450.DigitalArt.NFT", + "nftType": "A.179b6b1cb6755e31.DigitalArt.NFT", "price": "200.00000000", - "storefrontAddress": "0xf3fcd2c1a78f5eee", + "storefrontAddress": "0xe03daebed8ca0615", "vaultType": "A.0ae53cb6e3f42a79.FlowToken.Vault", })) // ensure the listing doesn't exist _, err = client.Script(` import NFTStorefront from 0xf8d6e0586b0a20c7 -import SequelMarketplace from 0x01cf0e2f2f715450 +import SequelMarketplace from 0x179b6b1cb6755e31 -pub fun main(listingID:UInt64, storefrontAddress: Address) { +access(all) fun main(listingID:UInt64, storefrontAddress: Address) { let storefront = getAccount(storefrontAddress) - .getCapability(NFTStorefront.StorefrontPublicPath)! - .borrow<&NFTStorefront.Storefront{NFTStorefront.StorefrontPublic}>() + .capabilities.borrow<&NFTStorefront.Storefront>(NFTStorefront.StorefrontPublicPath) ?? panic("Could not borrow Storefront from provided address") if let listing = storefront.borrowListing(listingResourceID: listingID) { @@ -677,10 +681,10 @@ func TestMarketplace_buildPayments(t *testing.T) { t.Run("Happy path (initial sale)", func(t *testing.T) { _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile, seller: Address) { +access(all) fun main(profile: Evergreen.Profile, seller: Address) { let instructions = SequelMarketplace.buildPayments( profile: profile, @@ -701,12 +705,12 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { assert(payments[0].role == "Role1", message: "incorrect role 1") assert(payments[0].amount == 80.0, message: "incorrect amount 1") assert(payments[0].rate == 0.8, message: "incorrect rate 1") - assert(payments[0].receiver == 0xf3fcd2c1a78f5eee, message: "incorrect receiver 1") + assert(payments[0].receiver == 0xe03daebed8ca0615, message: "incorrect receiver 1") assert(payments[1].role == "Role2", message: "incorrect role 2") assert(payments[1].amount == 20.0, message: "incorrect amount 2") assert(payments[1].rate == 0.2, message: "incorrect rate 2") - assert(payments[1].receiver == 0xe03daebed8ca0615, message: "incorrect receiver 2") + assert(payments[1].receiver == 0x045a1763c93006ca, message: "incorrect receiver 2") }`). Argument(happyPathProfile). Argument(cadence.NewAddress(sellerAcct.Address)). @@ -717,10 +721,10 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { t.Run("Happy path (secondary sale)", func(t *testing.T) { _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile, seller: Address) { +access(all) fun main(profile: Evergreen.Profile, seller: Address) { let instructions = SequelMarketplace.buildPayments( profile: profile, @@ -741,17 +745,17 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { assert(payments[0].role == "Role1", message: "incorrect role 1") assert(payments[0].amount == 5.0, message: "incorrect amount 1") assert(payments[0].rate == 0.05, message: "incorrect rate 1") - assert(payments[0].receiver == 0xf3fcd2c1a78f5eee, message: "incorrect receiver 1") + assert(payments[0].receiver == 0xe03daebed8ca0615, message: "incorrect receiver 1") assert(payments[1].role == "Role2", message: "incorrect role 2") assert(payments[1].amount == 2.5, message: "incorrect amount 2") assert(payments[1].rate == 0.025, message: "incorrect rate 2") - assert(payments[1].receiver == 0xe03daebed8ca0615, message: "incorrect receiver 2") + assert(payments[1].receiver == 0x045a1763c93006ca, message: "incorrect receiver 2") assert(payments[2].role == "Owner", message: "incorrect role 3") assert(payments[2].amount == 92.5, message: "incorrect amount 3") assert(payments[2].rate == 0.925, message: "incorrect rate 3") - assert(payments[2].receiver == 0x045a1763c93006ca, message: "incorrect receiver 2") + assert(payments[2].receiver == 0x120e725050340cab, message: "incorrect receiver 2") }`). Argument(happyPathProfile). Argument(cadence.NewAddress(sellerAcct.Address)). @@ -767,10 +771,10 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { require.NoError(t, err) _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile, seller: Address) { +access(all) fun main(profile: Evergreen.Profile, seller: Address) { let instructions = SequelMarketplace.buildPayments( profile: profile, @@ -809,10 +813,10 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { require.NoError(t, err) _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile, seller: Address) { +access(all) fun main(profile: Evergreen.Profile, seller: Address) { let instructions = SequelMarketplace.buildPayments( profile: profile, @@ -851,10 +855,10 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { require.NoError(t, err) _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile, seller: Address) { +access(all) fun main(profile: Evergreen.Profile, seller: Address) { let instructions = SequelMarketplace.buildPayments( profile: profile, @@ -875,12 +879,12 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { assert(payments[0].role == "Role1", message: "incorrect role 1") assert(payments[0].amount == 5.0, message: "incorrect amount 1") assert(payments[0].rate == 0.05, message: "incorrect rate 1") - assert(payments[0].receiver == 0xf3fcd2c1a78f5eee, message: "incorrect receiver 1") + assert(payments[0].receiver == 0xe03daebed8ca0615, message: "incorrect receiver 1") assert(payments[1].role == "Owner", message: "incorrect role 2") assert(payments[1].amount == 95.0, message: "incorrect amount 2") assert(payments[1].rate == 0.95, message: "incorrect rate 2") - assert(payments[1].receiver == 0x045a1763c93006ca, message: "incorrect receiver 2") + assert(payments[1].receiver == 0x120e725050340cab, message: "incorrect receiver 2") }`). Argument(profile). Argument(cadence.NewAddress(sellerAcct.Address)). @@ -896,10 +900,10 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { require.NoError(t, err) _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile, seller: Address) { +access(all) fun main(profile: Evergreen.Profile, seller: Address) { let instructions = SequelMarketplace.buildPayments( profile: profile, @@ -920,7 +924,7 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { assert(payments[0].role == "Owner", message: "incorrect role 1") assert(payments[0].amount == 100.0, message: "incorrect amount 1") assert(payments[0].rate == 1.0, message: "incorrect rate 1") - assert(payments[0].receiver == 0x045a1763c93006ca, message: "incorrect receiver 1") + assert(payments[0].receiver == 0x120e725050340cab, message: "incorrect receiver 1") }`). Argument(profile). Argument(cadence.NewAddress(sellerAcct.Address)). @@ -945,10 +949,10 @@ pub fun main(profile: Evergreen.Profile, seller: Address) { require.NoError(t, err) _, err = client.Script(` -import Evergreen from 0x01cf0e2f2f715450 -import SequelMarketplace from 0x01cf0e2f2f715450 +import Evergreen from 0x179b6b1cb6755e31 +import SequelMarketplace from 0x179b6b1cb6755e31 -pub fun main(profile: Evergreen.Profile, seller: Address, extra1: Address, extra2: Address) { +access(all) fun main(profile: Evergreen.Profile, seller: Address, extra1: Address, extra2: Address) { let instructions = SequelMarketplace.buildPayments( profile: profile, @@ -986,22 +990,22 @@ pub fun main(profile: Evergreen.Profile, seller: Address, extra1: Address, extra assert(payments[0].role == "Role1", message: "incorrect role 1") assert(payments[0].amount == 5.0, message: "incorrect amount 1") assert(payments[0].rate == 0.05, message: "incorrect rate 1") - assert(payments[0].receiver == 0xf3fcd2c1a78f5eee, message: "incorrect receiver 1") + assert(payments[0].receiver == 0xe03daebed8ca0615, message: "incorrect receiver 1") assert(payments[1].role == "Extra1", message: "incorrect role 2") assert(payments[1].amount == 2.0, message: "incorrect amount 2") assert(payments[1].rate == 0.02, message: "incorrect rate 2") - assert(payments[1].receiver == 0xe03daebed8ca0615, message: "incorrect receiver 2") + assert(payments[1].receiver == 0x045a1763c93006ca, message: "incorrect receiver 2") assert(payments[2].role == "Extra2", message: "incorrect role 3") assert(payments[2].amount == 4.0, message: "incorrect amount 3") assert(payments[2].rate == 0.04, message: "incorrect rate 3") - assert(payments[2].receiver == 0x179b6b1cb6755e31, message: "incorrect receiver 3") + assert(payments[2].receiver == 0xf3fcd2c1a78f5eee, message: "incorrect receiver 3") assert(payments[3].role == "Owner", message: "incorrect role 4") assert(payments[3].amount == 89.0, message: "incorrect amount 4") assert(payments[3].rate == 0.89, message: "incorrect rate 4") - assert(payments[3].receiver == 0x045a1763c93006ca, message: "incorrect receiver 4") + assert(payments[3].receiver == 0x120e725050340cab, message: "incorrect receiver 4") }`). Argument(profile). Argument(cadence.NewAddress(sellerAcct.Address)). diff --git a/lib/go/iinft/test/scripts.go b/lib/go/iinft/test/scripts.go index ff8479f..1033587 100644 --- a/lib/go/iinft/test/scripts.go +++ b/lib/go/iinft/test/scripts.go @@ -12,7 +12,7 @@ func inspectNFTSupplyScript(addrMap map[string]string, tokenContractName string, import NonFungibleToken from %s import %s from %s - pub fun main() { + access(all) fun main() { assert( %s.totalSupply == UInt64(%d), message: "incorrect totalSupply!" @@ -31,9 +31,9 @@ func inspectCollectionLenScript(addrMap map[string]string, userAddr, tokenContra import NonFungibleToken from %s import %s from %s - pub fun main() { + access(all) fun main() { let acct = getAccount(0x%s) - let collectionRef = acct.getCapability(%s)!.borrow<&{NonFungibleToken.CollectionPublic}>() + let collectionRef = acct.capabilities.borrow<&{NonFungibleToken.CollectionPublic}>(%s) ?? panic("Could not borrow capability from public collection") if %d != collectionRef.getIDs().length { @@ -53,12 +53,12 @@ func inspectCollectionScript(addrMap map[string]string, userAddr, tokenContractN import NonFungibleToken from %s import %s from %s - pub fun main() { + access(all) fun main() { let acct = getAccount(0x%s) - let collectionRef = acct.getCapability(%s)!.borrow<&{NonFungibleToken.CollectionPublic}>() + let collectionRef = acct.capabilities.borrow<&{NonFungibleToken.CollectionPublic}>(%s) ?? panic("Could not borrow capability from public collection") - let tokenRef = collectionRef.borrowNFT(id: UInt64(%d)) + let tokenRef = collectionRef.borrowNFT(UInt64(%d)) } ` diff --git a/lib/go/iinft/types.go b/lib/go/iinft/types.go index 805faa2..05b2069 100644 --- a/lib/go/iinft/types.go +++ b/lib/go/iinft/types.go @@ -74,19 +74,19 @@ func DigitalArtMetadataFromCadence(val cadence.Value) (*DigitalArtMetadata, erro allFields := valStruct.FieldsMappedByName() res := DigitalArtMetadata{ - Name: allFields["name"].String(), - Artist: allFields["artist"].String(), - Description: allFields["description"].String(), - Type: allFields["type"].String(), - ContentURI: allFields["contentURI"].String(), - ContentPreviewURI: allFields["contentPreviewURI"].String(), - ContentMimetype: allFields["mimetype"].String(), + Name: string(allFields["name"].(cadence.String)), + Artist: string(allFields["artist"].(cadence.String)), + Description: string(allFields["description"].(cadence.String)), + Type: string(allFields["type"].(cadence.String)), + ContentURI: string(allFields["contentURI"].(cadence.String)), + ContentPreviewURI: string(allFields["contentPreviewURI"].(cadence.String)), + ContentMimetype: string(allFields["mimetype"].(cadence.String)), Edition: uint64(allFields["edition"].(cadence.UInt64)), MaxEdition: uint64(allFields["maxEdition"].(cadence.UInt64)), - Asset: allFields["asset"].String(), - MetadataURI: allFields["metadataURI"].String(), - Record: allFields["record"].String(), - AssetHead: allFields["assetHead"].String(), + Asset: string(allFields["asset"].(cadence.String)), + MetadataURI: string(allFields["metadataURI"].(cadence.String)), + Record: string(allFields["record"].(cadence.String)), + AssetHead: string(allFields["assetHead"].(cadence.String)), } return &res, nil From 57bb4b8ef425e54db89815762e01b82e4e7da083 Mon Sep 17 00:00:00 2001 From: sequel21 Date: Sun, 3 Nov 2024 16:02:57 +0000 Subject: [PATCH 04/12] Cosmetic fixes --- contracts/DigitalArt.cdc | 6 +++--- lib/go/iinft/gwtf/setup.go | 10 ++++------ lib/go/iinft/gwtf/transaction.go | 11 ----------- lib/go/iinft/internal/assets/assets.go | 6 +++--- lib/go/iinft/scripts/testing.go | 2 +- 5 files changed, 11 insertions(+), 24 deletions(-) diff --git a/contracts/DigitalArt.cdc b/contracts/DigitalArt.cdc index 11dd329..a7639c0 100644 --- a/contracts/DigitalArt.cdc +++ b/contracts/DigitalArt.cdc @@ -165,8 +165,8 @@ contract DigitalArt: NonFungibleToken { // The ChainLocker asset head ID of the full metadata JSON. // It can be used to retrieve the current metadata JSON (if changed). - access(all) - let assetHead: String + access(all) + let assetHead: String init( name: String, @@ -288,7 +288,7 @@ contract DigitalArt: NonFungibleToken { // This is the interface that users can cast their DigitalArt Collection as // to allow others to deposit DigitalArt into their Collection. It also allows for reading - // the details of DigitalArt in the Collection. // REMOVE + // the details of DigitalArt in the Collection. access(all) resource interface CollectionPublic { //access(all) diff --git a/lib/go/iinft/gwtf/setup.go b/lib/go/iinft/gwtf/setup.go index 86602a7..8bfc298 100644 --- a/lib/go/iinft/gwtf/setup.go +++ b/lib/go/iinft/gwtf/setup.go @@ -15,9 +15,8 @@ import ( // GoWithTheFlow Entire configuration to work with Go With the Flow type GoWithTheFlow struct { - State *flowkit.State - Services flowkit.Services - //Network string + State *flowkit.State + Services flowkit.Services Logger output.Logger PrependNetworkToAccountNames bool } @@ -116,9 +115,8 @@ func NewGoWithTheFlowError(paths []string, network string, inMemory bool, logLev service = flowkit.NewFlowkit(state, *networkDef, gw, logger) } return &GoWithTheFlow{ - State: state, - Services: service, - //Network: network, + State: state, + Services: service, Logger: logger, PrependNetworkToAccountNames: true, }, nil diff --git a/lib/go/iinft/gwtf/transaction.go b/lib/go/iinft/gwtf/transaction.go index e43359e..37a0703 100644 --- a/lib/go/iinft/gwtf/transaction.go +++ b/lib/go/iinft/gwtf/transaction.go @@ -343,17 +343,6 @@ func (tb FlowTransactionBuilder) RunE(ctx context.Context) ([]flow.Event, error) Location: codeFileName, }, tb.GasLimit, - // - ////tb.Proposer.Address, - ////authorizers, - ////tb.Payer.Address, - //tb.Proposer.Key.Index(), - //code, - //codeFileName, - //tb.GasLimit, - //tb.Arguments, - //tb.GoWithTheFlow.Network, - //true, ) if err != nil { return nil, err diff --git a/lib/go/iinft/internal/assets/assets.go b/lib/go/iinft/internal/assets/assets.go index f9e1004..0311315 100644 --- a/lib/go/iinft/internal/assets/assets.go +++ b/lib/go/iinft/internal/assets/assets.go @@ -1,6 +1,6 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// contracts/DigitalArt.cdc (20.78kB) +// contracts/DigitalArt.cdc (20.781kB) // contracts/Evergreen.cdc (5.401kB) // contracts/SOURCES.md (1.474kB) // contracts/SequelMarketplace.cdc (10.012kB) @@ -88,7 +88,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _contractsDigitalartCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x7c\x5f\x73\xdb\xb6\xb2\xf8\x73\xfc\x29\xd6\x7a\x48\xa4\xf9\xd9\x52\x3a\x73\xe6\x77\x67\x34\x51\xd3\x34\x8e\xef\xf1\xbd\x8d\x9b\x89\x9d\xf6\xa1\x93\x39\x07\x22\x57\x12\x6a\x0a\x60\x01\xd0\x8a\xea\xe3\xef\x7e\x07\xff\x48\x80\x04\x25\x3a\xed\xed\xdc\x93\x87\xd6\x22\xb1\x8b\xc5\xee\x62\xff\x61\x41\xba\x2d\xb9\x50\x70\xcd\xd9\x65\xc5\xd6\x74\x59\xe0\x2d\xbf\x43\x06\x2b\xc1\xb7\x30\x9a\xce\xa4\x22\x2c\x27\x22\x9f\xb5\x47\x4c\xb3\x3c\x1b\x9d\x38\xf0\x9f\x28\xee\x3e\xa2\xe4\xc5\x3d\x0a\x07\xda\x40\x86\x2f\x23\xa8\xf7\xa8\x48\x4e\x14\xd1\x03\x64\x77\xc6\xe8\x75\x04\xf8\xee\x1e\xc5\x5a\x60\x40\x66\xfd\xc4\x8e\x3b\x99\xcd\xe0\x82\xae\xa9\x22\xc5\x1b\xa1\x20\xc7\x15\x65\x28\xe1\xfa\xf2\x56\x82\xda\x10\x05\x02\x4b\x81\x12\x99\x82\xdc\x0e\x03\x22\x14\x50\x06\x37\xf8\x5b\x85\xc5\x54\x23\xb8\x41\x84\x8d\x52\xa5\x9c\xcf\x66\xd2\x3e\x96\x25\xc9\x10\x56\x5c\xc0\x96\x0b\x84\x1c\x15\xa1\x85\xd4\xa3\x5b\x33\x2a\xcd\x22\x09\xb2\x2a\x5b\x04\x9b\x17\xe0\xd7\xe8\x21\x6f\x78\x25\x32\x9c\xd7\xd3\xad\xa9\xda\x54\xcb\x69\xc6\xb7\xb3\x92\x96\x82\x28\x74\x14\x9c\xaf\x0a\xbe\x3b\xcf\x38\x53\x82\x64\x4a\x6a\x70\x92\x65\x28\xe5\x98\x14\xc5\xe4\xc4\xbf\x08\x48\x99\x77\x65\xfb\x70\x72\x02\x00\x30\x9b\x69\xba\x98\x92\xee\x97\xf9\x5f\x88\x4d\xff\x46\x3d\x02\xde\x3a\xbc\x57\x8c\x2a\x4a\x0a\xfa\x3b\xe6\xe3\xc9\x81\xf1\x3f\x53\xb5\xc9\x05\xd9\x8d\x69\x3e\x87\x4f\x57\x4c\xfd\xff\xbf\x9d\x19\x59\xcd\xe1\x4d\x9e\x0b\x94\xf2\xf5\x21\xf0\x0b\x2c\xb9\xa4\x2a\x82\x56\x7c\x18\xec\x7b\xca\x14\xe6\x11\x28\x91\x12\xd5\x1c\x6e\x94\xa0\x6c\x7d\x06\x98\x53\x45\x39\x6b\xde\x6f\x79\x7e\x75\xe1\x7f\x4e\x6a\xe6\x5c\x93\x2d\xe6\xf0\x81\xa8\xcd\x41\x0e\x15\xa8\xf9\x53\x14\x98\x69\xac\x37\x8a\x0b\xb2\x46\x0d\xa5\x67\xac\x7f\x0c\x00\xfd\x50\x2d\x0b\x9a\x59\xc8\xe6\xef\x5e\xc0\x37\xf9\x96\x3e\x7d\x3a\x03\xf5\x41\xd0\x7b\xa2\x1c\x54\xf0\xa3\x5e\xfa\xed\x06\x41\x71\xbd\x2d\x58\xb5\x5d\xa2\x00\xbe\x0a\xb5\xbb\xd9\x47\x1b\x72\x8f\xb0\xd4\x8a\xbd\x35\x7c\x3f\xc4\xa8\x7b\x22\x2c\xd2\x9b\xaa\x2c\x8b\xbd\x67\x78\x3d\xe9\x4f\x44\x50\xb2\x2c\x10\x24\xfd\x1d\x21\xa7\x86\x29\x44\xec\xf5\xe4\xef\x89\x54\x28\x40\xa0\x34\x3b\x45\x86\x13\x48\x2c\x56\xcd\x0c\x5b\x33\x52\xce\xe1\xc1\xca\x7b\xee\x60\x1f\xeb\x79\x1c\x2e\x64\x7a\x32\x69\x08\x3f\xe7\xec\x3c\xc7\x2d\x61\x39\xac\x2a\x66\x27\x2e\xa8\xda\x83\x7e\xe2\xad\x07\x71\xb8\x21\xe3\xa5\x21\x8a\xd8\xdd\xec\xf1\x1a\x86\x50\x09\x95\xc4\x1c\x14\x37\x88\x81\x04\x1c\x74\x8a\x27\x61\x5c\xd0\x2d\x55\x98\xc3\x72\x0f\x5b\x67\xe5\xa6\x5b\xf2\xe5\x9d\x1b\x30\x99\x7a\x9c\x3f\xb2\x0c\x81\x14\x45\x03\x4b\x04\x3a\x5e\x9f\x81\xda\xa0\xa7\x89\x4a\x78\x91\x15\x5c\x62\xfe\x02\x96\x95\x36\x70\x5b\x42\x99\x04\xce\xce\xb3\x0d\xa1\x0d\x91\x1c\x4a\x61\x77\x8a\xc0\x73\x8d\x88\xb2\xb5\x15\xe8\x8e\xaa\x8d\x41\x29\xc9\x16\xed\xa6\x81\xab\x8b\xe9\x21\x91\x4a\x25\xaa\x4c\x79\x8e\x3e\x98\x67\xa9\x71\xb5\x70\xdc\x62\xe7\xb5\xed\x7f\x7d\x14\x06\xbd\xed\xfc\x20\xf8\x8a\x16\x38\x6f\xac\xe9\xd4\x3d\x3a\x8e\x84\xe1\x17\xf5\x2e\xde\xf7\x47\x61\x2c\x3b\xe7\xf0\x3d\xe7\xc5\x49\xfd\x86\x32\xaa\xc6\xdd\x75\x9c\x0d\xa1\x73\x02\x01\x8f\x0c\xff\xb0\x58\x4d\x3d\x32\x58\xd4\xfc\xe9\x0e\x6a\x63\x87\x45\x67\xc2\x2e\x50\xb0\x6a\x58\xc0\x37\xdd\x01\x76\x89\xb0\x80\x15\x29\x64\x83\xe0\xf1\xe4\x20\x73\x56\x15\x03\x86\x3b\x87\xf9\xea\x62\x3c\x01\xcf\xd4\xd6\xfa\xb4\xc5\xb9\x27\x05\x2c\x3a\xf4\x1c\x23\xb6\xf3\xe8\xff\xb9\x19\xc6\xdf\x4c\x22\x58\x81\xaa\x12\x4c\xcf\xf2\x14\xf2\xc9\x3d\xa1\x85\xde\xff\x7e\xcb\xf5\xaf\x81\xae\xe0\x34\x64\xd6\xf3\xe7\xb1\xd8\x4e\x83\x9d\x0b\xdf\x26\x28\x8f\xd1\x05\x34\xf7\xa3\x39\x1f\xbe\xfe\x47\xc0\x42\x62\xff\x24\x2f\xe3\xd1\x4f\x61\xd2\x1a\x95\x57\x6f\xc3\x9e\x7a\xcf\xb6\x66\x4b\x2d\xe7\x89\xf3\xbc\x6b\xe9\xb2\x99\xaf\xbb\xcf\x0f\x4c\xdc\xbb\x1b\x02\x02\x66\x33\xf8\x19\xed\xbe\xf6\x7e\x02\xc8\x4a\x9b\xae\x1e\x13\x0b\x94\x49\x85\x24\xd7\xd6\x3b\xc7\x02\x8d\xb1\xdc\x7a\x5f\x94\x71\x91\xcb\x10\xf9\xed\x86\x4a\x28\x05\xd7\xcb\x04\x64\xb2\x12\x28\x81\xf1\x25\xcf\xf7\x90\x11\x66\x76\xac\x75\x0b\x2e\x3e\x3c\x64\x72\x0f\x71\xcc\x2c\x61\x3c\x39\x62\x4d\x18\x2d\x06\x19\x92\xe4\xb8\x78\x3b\xbe\x3c\x60\x3b\x94\xa8\x42\x6e\x07\x3c\xd7\xce\xd6\x93\xe3\xbd\xa8\x0b\x23\xe0\x8d\x50\x2f\x64\xe3\xfd\x86\x78\x19\x8f\xea\x21\xe4\xb9\x8e\xd2\x0e\xf2\x4b\xdb\x20\x46\xb6\xe8\x03\xc0\x48\x1d\xde\x08\x45\xa5\x7d\x7f\x14\x09\x31\x63\x93\x68\x2e\x50\x66\x82\x96\x91\x61\xeb\x43\x93\x37\x63\x93\xb8\xde\x63\x4e\x09\xa8\x7d\x89\x73\xb8\xda\x92\x35\x9e\xc1\x9b\x2a\xa7\xfc\x0c\x7e\xa2\x39\xf2\xa3\xf8\x2d\x64\x6a\xad\xf0\xe9\xe3\x95\xd6\x64\xad\x70\x5c\xd0\x35\x65\xa4\x88\xf2\x1f\x9d\x3e\x20\x53\x87\xf5\x4f\xcf\xe1\x06\x7e\xfa\x78\x75\x7c\xa6\x70\x02\x1d\x7a\x50\xdc\x79\x78\x18\xd3\x29\x4e\x75\x1c\xb5\xa9\xb6\x4b\x46\x68\x31\x19\x3c\xf7\x07\x8b\xaa\x8f\x84\xf7\x57\xef\xdf\x19\x56\xc0\x18\xa7\xeb\x29\xbc\xa0\x9a\x95\xb3\x5f\x4b\x5c\xbf\x98\x1c\x9d\x63\x4b\xb7\xd8\xcb\x47\xbf\x2b\x9a\xc0\x4e\x2f\x73\x4d\xef\x91\xe9\x40\x6a\xea\x07\x58\x43\x52\x31\xfa\x5b\x65\x73\xc6\x7a\xa3\x5b\x0b\x72\x16\x22\xa5\x39\x32\x45\x57\xd4\x06\x85\x7a\xe4\x30\x6b\x60\x22\xa4\x56\x60\x13\x9b\x24\x4c\x45\xa0\x26\x56\xdd\x92\x7d\x10\xc0\x97\x82\xe7\x55\x86\x79\x4d\xaa\x5d\x91\xa5\x75\xda\x31\x73\x0e\x69\x46\xd8\x0b\x05\x4b\x04\xfc\x92\x21\xe6\x0d\xf9\x3e\x15\x3d\x33\xe1\xa8\xda\xa0\x40\x1d\xa4\x32\x0e\x7c\x59\xd0\x35\x89\xf6\x8a\x0d\x4c\x6d\xc0\x5c\x14\x56\x6d\x30\x2b\x88\xc0\xbc\xa6\x39\x22\xe1\x6a\x05\x81\xbb\x5c\x2c\xe0\x9b\xb3\x58\x0a\x7a\x2e\xce\xf0\x9c\xaf\xce\xc9\xf9\x1d\x65\xf9\x71\xc5\x6a\x10\xf6\x72\xf2\xe2\xea\xc2\xcb\xdb\xf2\xe5\x85\xb4\x72\x9a\x5a\xa6\x5c\x5d\xe8\x79\xbd\x9c\x43\x68\xcd\xd4\xc8\xc9\x98\xfc\xa1\xd4\x36\x25\xab\x0a\x22\x42\xbb\x68\xb4\xe8\xb8\x39\x0a\xb3\xda\xfe\xed\xb7\xaa\x8a\x68\x93\x07\x46\x17\xfe\xeb\xe6\xc7\xeb\x10\x90\x48\xa0\x0a\xf0\x0b\x95\xda\xf7\x11\x23\x36\x50\x74\x8b\x61\xa6\xb1\x23\x12\x24\x92\x02\x87\xb0\xd4\xcd\xd4\xb7\x4b\x35\x4f\xdf\xea\xf4\xe4\x07\x9e\xdd\xd5\x3e\x15\x1a\x2e\x1b\xea\xff\x3a\x7a\xed\xfc\x83\x48\xb5\xdb\x73\xa3\x83\x83\x43\xe4\xc6\x5a\xab\x4c\x18\xb0\xc4\x3a\x47\x14\xa8\x04\xc5\x7b\x4b\x70\x56\x09\xa1\xad\x62\x84\x00\xc6\x74\x05\xd9\x86\xb0\x35\xe6\x93\xe9\xc9\xb3\x67\x21\xed\xcf\x9e\xd5\x9a\xf0\x77\x24\x09\xc2\x4d\xb6\x12\xf9\xee\xd0\x15\x9e\x45\x6f\x62\xff\x16\xbf\x4b\x38\xad\x78\x40\x68\x2d\xe3\x37\x5d\x5f\x91\x7c\xdf\xb5\xe7\xf1\xb0\xb6\x49\x8e\xdf\xb6\x6b\x3a\x31\x68\x67\x63\xb7\x16\x1e\xd5\x87\x62\xd0\xae\x02\x9f\xb5\x42\xd0\x50\x63\x12\x78\x23\xb9\xe8\xa7\xe9\x24\x50\x8b\x45\x87\x62\xa1\xd9\xa8\x5f\x5a\xc9\xc0\xc2\x89\xa8\x3b\x20\x10\x0f\x2c\x42\x61\x75\x87\x1a\x9f\xb8\x30\xf2\x4a\xc4\x74\xb5\xac\x60\x11\x08\xae\x77\x60\x23\xb4\x66\x7c\xf3\x2c\x11\x9c\x3a\x21\xea\x54\xd7\xfd\x99\x88\x50\xeb\xa8\x13\xfb\x72\xc5\xd0\xf6\x07\xe2\x4d\x70\xce\xec\xd2\x85\x15\x45\x7f\xb0\x6c\x17\x10\xfc\xea\x0e\x75\xa6\x69\xe1\x24\xde\x33\x95\x96\xb6\x9f\x4e\xff\xfd\x94\x34\x48\xa2\x0f\xb8\xc7\x2d\x75\x4e\x06\xfa\xfd\x6c\x6a\xc7\xe0\xd7\x97\xb7\xfe\xcf\xa0\x88\x47\x24\x10\x16\xbc\x4b\x86\xde\xbe\xe0\xa6\xc7\x75\x2b\xc9\xd3\xeb\xcb\xdb\xb3\xa8\xf8\x3f\xf5\x7f\x9c\x05\xd9\x9b\xaf\x3a\x7b\xfa\xea\x02\xe3\x1d\xb2\x17\xda\x69\x1e\xb5\xcb\x4d\x35\xf7\x30\x1b\x43\x9f\xd3\xe4\xab\xc7\x61\x06\xd4\x6e\x22\x67\x40\xeb\x3a\xb8\x08\x1e\xc7\x56\x57\xff\xa7\x29\x2b\x9f\x25\xe8\x1a\x58\x33\x4a\xc8\x9e\x6a\x25\xb3\x13\x1c\xcc\x00\xff\x9c\x7a\xd2\x11\xdd\x35\x11\xbd\xcb\xe3\xcd\x59\xcd\x78\x32\x87\x5f\x6e\xf7\x25\x7e\x4e\xe7\xeb\xbf\x74\x6a\x15\x7a\xf0\xab\xf8\xbc\xe7\x82\xca\xb2\x20\xfb\x6f\xc7\x93\xb3\x21\xc3\xdd\xce\x19\x3a\xfc\x23\xdf\x93\x42\x51\x94\x83\xf1\x7f\x51\x28\x18\x29\x3e\x7d\xfc\x61\x28\xc8\xf5\xe5\x6d\x53\xdc\xbf\x20\x8a\x7c\x1d\xe0\x31\x3e\x34\x5b\x7a\xea\xd1\x7c\x3b\x8e\x6b\x44\x9f\x9f\x62\x86\x84\xdd\xc1\x9a\x94\xf1\x3f\x9c\x5f\xd7\x13\x4d\xe6\xf0\x86\xed\x6f\x4c\x2e\xde\x2e\xc4\xc8\x1d\x55\xd9\xc6\xe6\x5b\xdd\x4a\x54\x46\x24\x1e\x16\xf1\xbc\x03\x03\x8d\xba\x24\x81\xc6\x49\x08\xa8\x03\x9c\x68\x27\x18\xef\xda\x65\x9f\xff\x17\x05\x37\x31\x60\xf0\xaa\x1f\xbe\xce\x5e\xe7\x2d\x5a\xff\x7e\x7b\xfb\xe1\x92\x16\xd8\x4f\xac\xfe\x57\x89\x62\x1e\x18\xe6\xe9\x1a\xd5\xcf\xb8\xbc\x14\x14\x59\x5e\xec\x3f\x7d\xfc\x61\x6c\x46\xc4\x84\x75\x9c\xed\xa4\x77\x8e\xf4\x9b\xee\xd3\x3e\x31\x35\x5b\xeb\x09\x62\xf2\x9e\xcc\x4a\x83\xd1\xe2\xcc\x65\x8c\xed\x85\x38\xe7\x75\xa6\xdd\x78\xfb\x5d\xe3\xd9\x87\x53\x1b\xee\xec\x27\xd0\x5b\x83\xf5\xcb\x2a\x69\x37\xa7\xcb\x8a\x16\x79\x03\x9d\xe3\x8a\x54\x85\xfa\x88\x19\xd2\x7b\x14\xf6\x88\x2d\x9e\x6a\x8d\xca\x8e\xdf\xd7\xa3\xea\xd3\xbe\xf1\xe4\x0f\x4b\x2b\x32\x54\x4f\x91\x58\x03\x38\x1e\xf9\x83\x68\x52\x96\xd3\xf0\xec\x7b\x66\x0b\x97\x33\x97\x50\x9e\x13\xa1\x66\x23\xad\x8c\x19\x51\x63\xe7\x9a\xa6\x8a\xdb\x70\x77\x3c\x49\xac\xa6\x8f\xee\x94\xb5\x3c\x48\x7d\xb0\x63\x9c\xc9\xf2\xa7\xd4\xc6\x74\xf9\xc8\xe5\xb6\x36\x60\xaf\xbe\xbb\xbe\xbc\xd5\x76\xd4\x78\x2c\xfb\x5c\x5b\xac\xaf\xa5\x71\x98\xf5\xfa\x4b\xc8\x4c\xfb\x80\x83\x74\xa5\xab\xf5\x10\xfb\x88\x60\x7c\x58\x24\x1e\x56\xd3\x7f\xa3\x83\xe0\xab\x0b\x1d\x0d\x58\x7d\x18\x70\x6c\x30\x8d\x03\xf5\xaf\x3d\x3c\x48\xc4\x51\x7f\xf0\xe8\xa0\xb7\x12\x2f\x90\x28\x7c\xb7\x2d\xd5\xbe\x51\x0d\x4d\xc0\x77\x0f\x9d\x68\xb9\x19\xf0\x98\x24\xe6\xd5\xb9\xc5\x06\x21\xa6\xde\xa8\xde\x14\x9c\x5c\xb5\x89\x32\x85\x62\x45\x32\xb4\x85\xbd\x4a\xa2\x90\xa6\xd4\x90\x11\x69\xaa\x22\x54\x84\xa1\x7f\x83\x1f\x88\xef\x6d\x00\xc5\x81\x14\x05\xdf\x01\x57\x1b\x0d\xae\x38\xe4\xb6\x0f\x23\x04\xa5\x4c\x71\x87\xb0\xc1\x32\x85\x2b\x05\xa4\x90\x0e\x83\x34\xd5\x2e\x81\x24\xf7\x39\xaf\x39\x1d\xaf\xfb\x65\x5a\xdd\x04\x94\x99\x97\x21\x3a\x0d\xf0\xf1\xdd\xfb\x1f\x7f\x7a\x77\x38\x2b\x69\xd6\xdd\x6e\xa3\x88\xd2\x8d\x94\xf0\x66\x33\x2d\x3e\xb7\xc2\xb1\x31\x6b\x49\xa1\x5d\x5f\xde\x3e\x4e\x86\x07\xc0\x57\x17\x36\xfc\xb5\x51\xff\xe7\x81\x80\x4b\x2e\x04\xdf\x5d\x5f\xde\x8e\xff\x11\xe4\x3a\x93\x39\x3c\x4f\x13\xf4\xfa\xb8\x62\x5a\x94\x0d\x9b\xc7\x31\xde\xc0\x62\x5c\x5f\xde\xb6\xe3\x39\x5b\x61\xd5\x52\x11\x28\xab\x42\x01\x95\xec\x85\xb2\x6e\xdc\xe8\x5b\xee\x2b\x5e\x56\x75\x31\x07\x81\x2b\x14\xc8\x32\x6c\x23\x92\x1b\x5e\x15\x39\x2c\x31\x3c\xe8\xb2\x15\x6e\xb1\xae\xb6\x68\x4e\xc3\x5c\xf5\xcc\xb6\x5e\x44\x18\x4a\x2e\x55\x22\xa6\x1c\x3b\xc2\x16\xe6\xf8\x6a\x02\xff\xfa\x97\x7f\xf4\xda\x64\x47\x0b\xa0\x79\x8f\x01\x1c\xbd\x25\x8c\x71\xe5\x38\x14\x6a\x62\xbd\x86\xb9\x49\x50\x9b\xba\x5e\x77\x95\x7a\xe7\x51\x96\x71\x21\x30\x53\xa3\x96\xfd\xec\xdb\xb2\x8d\x92\xfa\x27\x6f\x20\x6b\xf6\x62\xa2\xc9\x86\xef\x98\x2d\xa9\x13\xa6\x25\xcd\x2b\xa6\x06\xa5\xeb\xcd\x4c\x31\x0f\xda\xdb\x24\x0e\x6a\x1b\xa3\x79\x78\xdc\x01\xcb\x16\x0f\x4c\x96\x06\x02\xeb\xf3\x10\x66\xd5\xb3\x56\xcf\xcf\xf5\xe5\x2d\x64\x9c\xad\xb8\xd8\x6a\xe7\x61\x23\x8f\x68\xbc\xab\xf3\x93\x66\xdd\x26\x03\x31\xa7\xaa\x84\xc1\x3f\xad\xba\xff\x53\x0b\x72\x45\xb1\xc8\x0f\x6f\x46\x22\x2c\xbb\x35\xe3\xb5\x29\xb0\xd0\x73\x48\x6f\xc1\xc7\x98\xf4\x9d\xeb\x78\x03\x81\x5b\x7e\x8f\xbe\xb6\x62\x1b\x14\xed\x79\x48\x63\x73\x59\x0e\x76\x10\xad\x75\x3f\x23\x45\x11\x14\x13\x1c\x81\x9d\x99\x7d\x63\xdd\xc4\xec\x71\x3f\xe9\xd8\xff\x11\xb4\xb1\xf5\x1a\xb3\x44\x8b\x86\x6d\x4a\x7c\xe5\xba\x0e\x6a\x26\x4c\xed\x5a\xc6\x77\xb8\x9f\x43\x33\x45\x37\x10\x79\xfd\x1a\x4a\xc2\x68\x36\x1e\x05\x66\x25\xb0\xe7\x1e\x76\x0e\x6f\x8d\x2d\xd0\xbb\xaf\x66\x98\x63\x94\x11\xda\xd5\x05\x8c\x7a\xe3\x6f\x1f\x66\x36\x94\x84\x91\xe6\x51\xb0\xd1\x14\xde\x6e\x30\xbb\xb3\x66\xa8\x5a\x6e\xa9\x52\x68\x8a\xf7\x8a\xc3\x96\xdc\xe9\x87\x02\xb5\x48\xec\xd1\x91\x75\xa5\x4a\x7b\xd9\x70\x8f\xee\x98\x9c\x8e\x26\x93\x38\x46\xc2\x2d\x6d\x35\x3d\x1a\x96\x4e\x69\xee\xdb\x1e\x6b\xce\x8a\xd7\x53\x62\xdb\x18\x27\xc9\x38\xeb\xd5\x79\xd3\x54\x06\xed\xf6\x85\x59\xed\x92\x15\xb9\x33\x2d\x69\x9a\x75\x5a\x9f\x48\x9e\x47\xea\x54\x53\x2c\x83\x5d\x15\x61\xaa\xa1\x94\x35\x75\x0e\x92\xe6\x40\x84\x20\xfb\xa3\x0e\x66\xa0\xeb\x3c\xa4\x6e\xf6\x0f\x22\x4f\xe1\xbb\xd8\x1f\x9d\x74\x60\x4c\xc5\xcb\x33\xf5\xa4\xed\x63\x48\x9e\x1b\xe2\x19\xee\x1c\x52\xb7\x9a\xc0\xa2\xec\x36\x34\xdb\xd4\xdb\xd3\x9c\x81\x17\xb9\x16\x74\x67\x2e\x5e\xe4\xb7\xe9\x1d\xf1\x0b\xcd\x3f\xd7\x84\x27\x54\x20\x6c\x5c\xd5\xb2\x57\x7c\x88\xe4\x73\x94\x4a\xf0\x7d\x3d\x6f\x9f\xec\x6d\x78\xe1\x14\xc5\x58\x18\x23\x29\xef\xa4\xf4\x3b\xa3\xb3\x44\xab\x31\x6b\xe9\xc1\xd7\x46\x30\x07\xe2\xe6\xc6\x50\xdc\xe1\x5e\xa6\xa9\x6e\x42\x9b\xf0\xe1\x7f\xa2\xb2\x66\xdb\x7b\x53\x1d\x7c\xba\x73\xdb\x5e\xc2\x75\x2c\xc1\xfd\xae\xf4\x16\xd3\x44\xb9\x3a\xd4\x04\xaa\x82\x93\x4d\xad\xdc\x7a\x80\x7f\xba\xe1\x51\xa7\xce\xff\x52\x54\x96\xe6\xd5\xf3\xae\x0e\x1d\xe4\x55\xb3\x15\xbe\x96\x65\xa6\xb6\x1f\xc4\x12\x51\xa7\x01\x7e\xd1\x3a\xca\xd6\xe6\x38\x9a\xaf\x0c\x87\x8c\x77\x94\x30\xa6\x2c\x2b\xaa\xdc\x78\xdb\x8d\x75\xa6\x57\x17\x93\xee\xd9\x3f\x95\x20\xc9\xca\xc7\x71\x02\x8d\xc6\x31\x5e\x07\x70\x4e\x0f\xdd\x59\xa7\x11\x94\xde\x69\x06\x69\xb0\xd1\x87\x0a\xe4\x0f\x87\xb3\x74\x95\xda\xc7\xa7\x26\x74\x4c\xc4\x96\xf6\x24\x78\x05\x0b\x18\x27\x64\xa7\x57\xdd\xa7\x00\x93\xd3\x0e\x32\xa7\x04\x1a\x9f\x36\x74\x2d\x4a\xe3\xc0\xf1\x48\x2b\x5f\xbb\x4f\x2b\xd9\xcc\xa7\x0d\xc5\xf7\x36\xb2\xd5\xec\x36\xca\x2c\xea\xab\x19\xbe\x0b\xa5\xc4\xcc\x36\x9b\x68\xfd\x39\x72\x00\xd3\xda\x0f\x61\x4c\xd7\x92\xc2\x43\x32\xde\xeb\xec\x0b\xba\xb2\x4d\x59\x2b\x05\x8b\xd4\xee\x38\xc4\xe1\x03\xdc\x59\x29\x0b\x98\x26\xa2\x87\x73\x3d\xec\x1d\x90\xf9\x5b\x6e\xd4\x21\xb3\xa1\xb1\xcd\x8f\xd6\x19\x58\x9f\x85\x30\x2c\x48\x6a\x38\xcd\x27\x7f\x41\x35\x22\x4d\xd5\xb1\x72\xc4\x60\x8f\x72\x63\x6f\xc1\x18\x01\xdf\xee\x4b\x34\xfe\xe5\xc1\x56\xb6\xbe\xe7\xbc\xe8\x99\xff\x21\x2a\x87\xc1\xdc\x34\x1a\x0e\x6e\x60\xad\x09\xa0\xb2\x3d\xff\x38\x38\xd4\x00\x4b\x42\x9a\x02\x7b\x54\xbd\x88\xe8\xe8\x31\xdd\x03\x4e\x04\x21\xdd\xb0\x59\xab\xbe\x0e\x2c\x1e\xfa\x93\xc7\xa4\x6c\xfd\xcb\xd2\x16\x3d\xbc\x01\x76\x71\x00\xdb\xeb\x38\xd6\xd6\x81\x8a\x42\x7b\x0c\x27\x51\x62\x22\x25\xd4\xb8\xda\x9e\xb6\x27\xb3\xec\xd7\x2e\xb6\x52\xb7\xe1\x21\xd1\xd0\xc2\x57\xad\x65\xd0\xa7\x66\x6e\xed\x29\x52\xc2\xd6\x64\x17\x54\xcd\xdd\xed\xa0\x33\x1b\x9d\x5d\xe5\x73\x7f\x78\x3e\x87\xe7\x89\xde\x51\xd3\x39\x93\x65\xda\x06\xad\x51\xbd\xb1\xc9\xf5\xb8\x8e\xd0\xc2\x61\x0d\x8b\x3e\x1a\xb7\xa0\xc1\xa6\x19\x29\xc9\x92\x16\x54\x51\x34\x35\xfd\x57\xcf\x1f\x92\xd9\x8f\x4d\xa0\x1f\xbf\xb5\xe5\xf1\xd4\x75\x9f\xc9\xa9\xdb\xfc\xe3\xc9\xc9\xb3\x67\xcf\x9a\x6c\xaa\xc9\x96\x5c\xad\xa2\x9e\x73\x6f\x13\x4b\x27\xf6\x86\xbe\x51\x10\x5a\x3a\x06\x47\xc4\xa7\xad\x8c\x63\xd8\xe4\x34\x2e\x08\x1f\xe0\x3f\x95\x6f\x4d\xfb\xef\xd8\x36\x59\x5d\xd5\x2d\x2e\x93\xce\x7e\xa2\x61\x55\x63\xea\xda\xae\xcd\xf9\x15\xa1\x4c\xfe\x37\xee\x6b\x1c\xa9\x5c\xc1\x35\x71\x2d\x22\xc7\xe9\x90\xfc\xe2\x01\x3f\x9f\x1a\xcb\x6f\xaf\xa1\xa4\x36\xb2\x6b\x62\xb4\x2d\xcb\xcd\x0e\x4b\xf9\x5b\x07\xd1\xbe\x10\x71\x5c\x1f\x53\x67\x76\x35\x4f\x3a\x05\x70\xba\x82\x4a\x14\x53\x59\xd0\x0c\xc7\x36\x45\x7c\x79\x06\x55\x79\xcb\xe7\xf0\xb7\x89\x36\x3a\x23\x5a\xae\xe4\x28\x4d\xdd\xa8\x75\x2f\x71\xbb\x2f\x29\x33\xc7\x82\x05\xaf\xf2\x99\x86\x6c\x8e\x65\xda\xf3\xfc\x87\x9f\x47\xbf\x28\x90\xad\xd5\x26\x48\x9f\x0f\x31\xa5\x12\x45\xaf\x79\x32\x17\xcb\xfc\x8f\x8f\x75\x3d\xc6\xda\x21\x20\xfa\x2d\x70\x01\x92\xeb\x68\x5c\xf3\x42\xd2\x2d\x2d\x88\x80\x9d\x51\x72\xbe\x33\x39\xdb\x12\x3d\x0a\x73\x13\xcc\x37\x85\x6a\x6b\xa5\x4d\xe4\xa0\xda\x97\xa1\x24\x2e\x2d\x99\x06\x40\x77\x4b\x49\x12\x5b\x9e\xc9\x61\x25\x10\x7f\x77\xb9\x60\x78\xb5\xcb\xa7\x18\x2c\xec\xd6\x0b\xb1\x79\xb2\x74\xf0\xd4\x6d\x4f\xed\xef\xef\xf1\x34\x7c\xfd\xfd\xa1\x58\x2c\xa5\x48\x44\x8b\xf1\x51\x8a\x8e\x72\x47\x23\x98\xc3\xc8\xd8\xed\xba\xab\xb8\x53\x66\x69\x1f\xc8\x6a\x15\x74\x37\x4e\x5e\x4e\x0c\xbc\x7b\xde\xd4\x73\x7f\x47\xc1\xfb\xf1\xc4\xb7\x62\xea\xcb\x2b\x1a\xd5\xfb\xe6\x55\x83\xcd\x64\xce\xf4\x1e\x3b\x18\x4f\x8f\x99\x8f\x68\xc1\x6e\x02\x69\x6f\x75\xe8\xcc\x70\xef\xda\x3f\xfb\xaa\xb4\xfa\x5f\xca\xb8\x44\x68\x3f\xc3\xc2\x5d\x73\xeb\x1e\x10\x37\xd2\xf4\x7f\x75\x7b\x05\xba\xd2\x3d\x78\x7d\xeb\x49\x51\x1f\x95\x37\x66\x81\x5d\x63\x7c\x30\xba\x19\x6a\x95\x9f\x42\x4a\xf7\x5e\x55\x8a\xa6\xe4\x3d\xab\xa4\x32\x0f\xf6\x1c\x8d\xd0\xb5\xbb\x5c\xf1\x8a\x75\xe4\xfd\x67\xf8\x96\x03\xce\x25\x71\xa5\xec\x29\x9c\x6b\xab\x43\x92\x71\xc7\x4e\x35\xff\xdd\x79\x98\x3c\xcc\x3d\xed\x09\xb9\xb5\x09\x76\xbc\xd6\x86\x58\xff\x94\xfe\x4e\xae\x0d\x8f\x7c\x07\xb8\xbf\x65\x65\x6f\x07\x84\x57\x2a\xec\x41\x17\x55\x2f\xcc\xf5\xde\xe8\x26\xf0\x19\x94\x82\xdf\xd3\x1c\xe1\xfd\x8f\x17\xae\x40\x5a\x50\x76\x07\x54\x35\x18\xdf\x13\x71\x87\xaa\x2c\x48\x86\xa0\x37\xfe\x92\x48\x8c\xb0\xff\xa8\x36\x28\x76\x54\xe2\x19\x68\xc3\x6b\xae\x9a\x6b\x4c\x2f\x8f\xfb\x8b\x78\x7d\x1d\x7d\x68\xdf\x5b\x87\x79\xbb\x8a\xfa\x6f\xaf\x1c\xda\xf2\x0a\x35\xee\xdf\x60\xf0\xad\x8e\x9a\xb6\x28\x25\x59\xe3\x1c\x46\xd7\xdc\x7e\x98\xc1\x5d\xaf\x73\x7e\x7a\x34\x49\x90\x16\x34\x49\xd6\xba\xd7\xdc\x76\x3c\xed\x00\x60\xd0\x6f\x6c\xc6\xc7\x37\x60\xa3\xf1\xb5\xeb\x48\xb5\xf4\xa2\xef\x68\x8a\x40\xea\x04\xcf\xe5\x66\xed\xda\x90\xbd\xc4\xbc\xd3\x52\x6d\x32\x26\xad\x16\x1d\x4f\xe3\xfb\x4e\x03\x96\x07\xb7\xee\xbb\x9e\xe9\xeb\xbc\xd7\xb0\x0d\x0b\xc6\x95\x45\x3f\x4d\x9d\x3c\xf8\x48\x43\x0f\x99\xbe\x29\x3f\xf6\xc2\xc1\xc7\x1b\x9a\xbe\x31\xbb\x0b\xcc\xff\x5a\x73\xa5\x71\xc3\xa2\xef\x45\x78\xc7\xb6\x5d\xb1\x3a\xa0\x84\x8b\x05\xbc\x4c\xd4\xa5\xc2\xa4\xa3\xa5\x20\xe9\x16\x9b\x57\xe7\x4e\xc4\xc3\xf2\x8e\xb0\xc4\x12\xf6\x14\xc9\x44\x53\xd1\xeb\x54\x4b\x6e\xb2\x1d\xf7\xab\x1a\x59\x87\xf7\x4a\xd5\x60\x9f\x07\x2d\x6d\x58\xcb\xd4\xeb\xb0\x57\xea\x50\xaf\xaa\xeb\x53\xf5\x83\x5b\x42\xfb\x63\xad\x69\xc9\xa6\xba\x0e\x68\xba\xbd\x50\x86\x9f\xf1\x48\x56\x11\x82\x6f\x7b\xa4\x1b\x51\xcb\xe0\xeb\x21\x07\xea\x10\xc7\x10\x04\x8d\x03\x96\x15\xcf\x93\xc8\x92\xed\xc8\x0d\x96\x1f\x28\xbb\xc3\x3c\xe8\x69\x7b\x22\x96\x64\xa5\xe9\xd2\x15\xb7\xe6\x46\x33\x9e\x5c\xd5\x4c\xc8\xea\xd5\x79\x40\xd6\x80\xea\xd6\xab\xef\x22\xda\xd3\x67\xce\x8f\x9d\xa7\x93\xaf\xd0\xb2\x03\xcd\x85\x03\x14\xed\x50\x8f\xb4\xed\xc8\x1d\xd9\x0f\x1d\x85\xd7\x0e\x47\x69\x59\x44\xdd\xd1\x1e\xcc\x74\x5d\x48\x9e\x51\x52\x40\x59\x10\xb5\xe2\x62\x0b\x3b\x73\x16\xa4\x7d\xc5\xde\xa6\xf8\xd4\x76\x82\x99\xc4\x80\xe5\x50\x56\x02\x8b\x3d\xac\xdc\x99\x6c\x31\xed\x99\x11\x9b\x4e\xd4\x76\xef\x6c\xb2\x49\x35\x6c\x50\x1d\xf5\x68\x94\xfc\xad\x22\x02\xcd\x7d\xea\x36\x4e\x73\xe1\xba\xbf\xed\xd7\xfa\xbb\xaf\x6e\xec\x4e\x52\x39\xdb\xf0\x2d\xce\xe8\x76\x3d\x33\xdf\x73\x72\xdf\x76\x2a\xf8\x9a\x4f\x4b\xb6\xee\x6f\x81\xe8\x59\x1c\x18\x37\x9e\x53\x62\x55\x75\x64\xef\x3a\xf7\x62\xea\xc1\xb2\x24\x8c\xa1\xf8\xbf\xcd\x22\x4b\xe3\xf4\xd7\xf2\xcf\x62\xd2\xaf\x25\x3e\x8d\x4b\x56\xe9\xe5\xfc\x80\x75\x19\x51\x26\x15\x59\x0b\xb2\x1d\x0d\xd2\xdf\xdd\x6e\x37\xad\x41\xcc\x47\xbf\xec\x6a\x0f\x2a\xb4\x99\x48\x87\x18\x3c\xe7\x6c\xd8\x3c\x7e\xf4\xd4\xae\x61\xf6\x9d\x9d\xe6\xe0\x0c\x6a\x47\x95\x42\x31\x6c\x02\x37\xb8\xbb\x84\x27\x1b\xca\xc7\x76\x90\xe2\x0f\xe7\x9a\x82\x63\xfb\xc4\xc5\x95\x05\xcd\xdd\xab\x49\x7c\xdb\xec\x06\x15\xf0\x4a\x18\xd3\x97\x43\x59\x7f\xd1\x0b\xfc\x19\x4c\xd2\xcf\xc2\x02\x66\xce\x31\xbb\xd5\x34\xde\xe2\x6d\xb7\x3d\xa1\xb7\xbc\xaf\xf1\x58\xb7\x38\x18\x4d\xfb\xdb\x5e\x21\x29\x79\x0d\xdd\x94\x5c\x63\xc0\xe0\x8b\x5e\x66\x6e\xfb\xb3\x03\x18\x25\xc1\x35\x33\xed\xc9\xbf\xf9\xf6\x97\x34\x51\x71\x3c\x41\x1c\x47\xbf\x3c\x89\xdf\xfa\x8f\xaa\x2c\xe0\x21\xce\xd5\xdf\xfa\xdc\xc6\x16\x67\xeb\x5a\xad\x76\x0b\x92\xdc\xa3\x6b\x5d\x72\x6b\xac\x21\xcd\x19\x8d\x81\x68\x92\x1e\x83\x21\x08\x24\xed\xe5\x4b\x7b\x7c\x33\x75\x08\xa6\x1a\xe7\xf8\xd5\xb9\x81\x0d\xda\x70\xda\x7c\x0d\xc2\x7c\x93\x97\xf4\x7f\xe7\xee\xf1\xe4\xf1\xe4\x7f\x02\x00\x00\xff\xff\xef\x81\xde\xef\x2c\x51\x00\x00" +var _contractsDigitalartCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x7c\x5f\x73\xdb\xb6\xb2\xf8\x73\xfd\x29\x36\x7a\x48\xa4\xf9\xc9\x52\x3a\x73\xe6\x77\x67\x34\x51\xd3\x34\x8e\xef\xf1\xbd\x8d\x9b\x89\xdd\xf6\xa1\x93\x39\x07\x22\x57\x12\x6a\x0a\x60\x01\xd0\x8a\xea\xe3\xef\x7e\x07\xff\x48\x80\x04\x25\x3a\xed\xed\xdc\x93\x87\xd6\x22\xb1\x8b\xc5\xee\x62\xff\x61\x41\xba\x2b\xb9\x50\x70\xcd\xd9\x65\xc5\x36\x74\x55\xe0\x2d\xbf\x43\x06\x6b\xc1\x77\x30\x9a\xcd\xa5\x22\x2c\x27\x22\x9f\xb7\x47\xcc\xb2\x3c\x1b\x9d\x39\xf0\x9f\x28\xee\x3f\xa2\xe4\xc5\x3d\x0a\x07\xda\x40\x86\x2f\x23\xa8\xf7\xa8\x48\x4e\x14\xd1\x03\x64\x77\xc6\xe8\x75\x04\xf8\xee\x1e\xc5\x46\x60\x40\x66\xfd\xc4\x8e\x3b\x9b\xcf\xe1\x82\x6e\xa8\x22\xc5\x1b\xa1\x20\xc7\x35\x65\x28\xe1\xfa\xf2\x56\x82\xda\x12\x05\x02\x4b\x81\x12\x99\x82\xdc\x0e\x03\x22\x14\x50\x06\x37\xf8\x5b\x85\xc5\x4c\x23\xb8\x41\x84\xad\x52\xa5\x5c\xcc\xe7\xd2\x3e\x96\x25\xc9\x10\xd6\x5c\xc0\x8e\x0b\x84\x1c\x15\xa1\x85\xd4\xa3\x5b\x33\x2a\xcd\x22\x09\xb2\x2a\x5b\x04\x9b\x17\xe0\xd7\xe8\x21\x6f\x78\x25\x32\x5c\xd4\xd3\x6d\xa8\xda\x56\xab\x59\xc6\x77\xf3\x92\x96\x82\x28\x74\x14\x9c\xaf\x0b\xbe\x3f\xcf\x38\x53\x82\x64\x4a\x6a\x70\x92\x65\x28\xe5\x98\x14\xc5\xe4\xcc\xbf\x08\x48\x59\x74\x65\xfb\x70\x76\x06\x00\x30\x9f\x6b\xba\x98\x92\xee\x97\xf9\x5f\x88\x4d\xff\x46\x3d\x02\xde\x3a\xbc\x57\x8c\x2a\x4a\x0a\xfa\x3b\xe6\xe3\xc9\x91\xf1\x3f\x53\xb5\xcd\x05\xd9\x8f\x69\xbe\x80\x1f\xaf\x98\xfa\xff\x7f\x9b\x1a\x59\x2d\xe0\x4d\x9e\x0b\x94\xf2\xf5\x31\xf0\x0b\x2c\xb9\xa4\x2a\x82\x56\x7c\x18\xec\x7b\xca\x14\xe6\x11\x28\x91\x12\xd5\x02\x6e\x94\xa0\x6c\x33\x05\xcc\xa9\xa2\x9c\x35\xef\x77\x3c\xbf\xba\xf0\x3f\x27\x35\x73\xae\xc9\x0e\x73\xf8\x40\xd4\xf6\x28\x87\x0a\xd4\xfc\x29\x0a\xcc\x34\xd6\x1b\xc5\x05\xd9\xa0\x86\xd2\x33\xd6\x3f\x06\x80\x7e\xa8\x56\x05\xcd\x2c\x64\xf3\x77\x2f\xe0\x9b\x7c\x47\x9f\x3e\x9d\x81\xfa\x20\xe8\x3d\x51\x0e\x2a\xf8\x51\x2f\xfd\x76\x8b\xa0\xb8\xde\x16\xac\xda\xad\x50\x00\x5f\x87\xda\xdd\xec\xa3\x2d\xb9\x47\x58\x69\xc5\xde\x19\xbe\x1f\x63\xd4\x3d\x11\x16\xe9\x4d\x55\x96\xc5\xc1\x33\xbc\x9e\xf4\x27\x22\x28\x59\x15\x08\x92\xfe\x8e\x90\x53\xc3\x14\x22\x0e\x7a\xf2\xf7\x44\x2a\x14\x20\x50\x9a\x9d\x22\xc3\x09\x24\x16\xeb\x66\x86\x9d\x19\x29\x17\xf0\x60\xe5\xbd\x70\xb0\x8f\xf5\x3c\x0e\x17\x32\x3d\x99\x34\x84\x9f\x73\x76\x9e\xe3\x8e\xb0\x1c\xd6\x15\xb3\x13\x17\x54\x1d\x40\x3f\xf1\xd6\x83\x38\xdc\x90\xf1\xd2\x10\x45\xec\x6e\xf6\x78\x0d\x43\xa8\x84\x4a\x62\x0e\x8a\x1b\xc4\x40\x02\x0e\x3a\xc5\x93\x30\x2e\xe8\x8e\x2a\xcc\x61\x75\x80\x9d\xb3\x72\xb3\x1d\xf9\xfc\xce\x0d\x98\xcc\x3c\xce\x1f\x58\x86\x40\x8a\xa2\x81\x25\x02\x1d\xaf\xa7\xa0\xb6\xe8\x69\xa2\x12\x5e\x64\x05\x97\x98\xbf\x80\x55\xa5\x0d\xdc\x8e\x50\x26\x81\xb3\xf3\x6c\x4b\x68\x43\x24\x87\x52\xd8\x9d\x22\xf0\x5c\x23\xa2\x6c\x63\x05\xba\xa7\x6a\x6b\x50\x4a\xb2\x43\xbb\x69\xe0\xea\x62\x76\x4c\xa4\x52\x89\x2a\x53\x9e\xa3\x0f\xe6\x59\x6a\x5c\x2d\x1c\xb7\xd8\x45\x6d\xfb\x5f\x9f\x84\x41\x6f\x3b\x3f\x08\xbe\xa6\x05\x2e\x1a\x6b\x3a\x73\x8f\x4e\x23\x61\xf8\x59\xbd\x8b\xf7\xfd\x49\x18\xcb\xce\x05\x7c\xc7\x79\x71\x56\xbf\xa1\x8c\xaa\x71\x77\x1d\xd3\x21\x74\x4e\x20\xe0\x91\xe1\x1f\x16\xeb\x99\x47\x06\xcb\x9a\x3f\xdd\x41\x6d\xec\xb0\xec\x4c\xd8\x05\x0a\x56\x0d\x4b\xf8\xba\x3b\xc0\x2e\x11\x96\xb0\x26\x85\x6c\x10\x3c\x9e\x1d\x65\xce\xba\x62\xc0\x70\xef\x30\x5f\x5d\x8c\x27\xe0\x99\xda\x5a\x9f\xb6\x38\xf7\xa4\x80\x65\x87\x9e\x53\xc4\x76\x1e\xfd\x3f\x37\xc3\xf8\xeb\x49\x04\x2b\x50\x55\x82\xe9\x59\x9e\x42\x3e\xb9\x27\xb4\xd0\xfb\xdf\x6f\xb9\xfe\x35\xd0\x35\x3c\x0b\x99\xf5\xfc\x79\x2c\xb6\x67\xc1\xce\x85\x6f\x12\x94\xc7\xe8\x02\x9a\xfb\xd1\x9c\x0f\x5f\xff\x23\x60\x21\xb1\x7f\x92\x97\xf1\xe8\xa7\x30\x69\x83\xca\xab\xb7\x61\x4f\xbd\x67\x5b\xb3\xa5\x96\xf3\xc4\x79\xde\xb5\x74\xd9\xcc\xd7\xdd\xe7\x47\x26\xee\xdd\x0d\x01\x01\xf3\x39\xfc\x8c\x76\x5f\x7b\x3f\x01\x64\xad\x4d\x57\x8f\x89\x05\xca\xa4\x42\x92\x6b\xeb\x9d\x63\x81\xc6\x58\xee\xbc\x2f\xca\xb8\xc8\x65\x88\xfc\x76\x4b\x25\x94\x82\xeb\x65\x02\x32\x59\x09\x94\xc0\xf8\x8a\xe7\x07\xc8\x08\x33\x3b\xd6\xba\x05\x17\x1f\x1e\x33\xb9\xc7\x38\x66\x96\x30\x9e\x9c\xb0\x26\x8c\x16\x83\x0c\x49\x72\x5c\xbc\x1d\x5f\x1e\xb1\x1d\x4a\x54\x21\xb7\x03\x9e\x6b\x67\xeb\xc9\xf1\x5e\xd4\x85\x11\xf0\x46\xa8\x17\xb2\xf1\x7e\x43\xbc\x8c\x47\xf5\x10\xf2\x5c\x47\x69\x47\xf9\xa5\x6d\x10\x23\x3b\xf4\x01\x60\xa4\x0e\x6f\x84\xa2\xd2\xbe\x3f\x89\x84\x98\xb1\x49\x34\x17\x28\x33\x41\xcb\xc8\xb0\xf5\xa1\xc9\x9b\xb1\x49\x5c\xef\x31\xa7\x04\xd4\xa1\xc4\x05\x5c\xed\xc8\x06\xa7\xf0\xa6\xca\x29\x9f\xc2\x4f\x34\x47\x7e\x12\xbf\x85\x4c\xad\x15\x7e\xfc\x78\xa5\x35\x59\x2b\x1c\x17\x74\x43\x19\x29\xa2\xfc\x47\xa7\x0f\xc8\xd4\x71\xfd\xd3\x73\xb8\x81\x3f\x7e\xbc\x3a\x3d\x53\x38\x81\x0e\x3d\x28\xee\x3d\x3c\x8c\xe9\x0c\x67\x3a\x8e\xda\x56\xbb\x15\x23\xb4\x98\x0c\x9e\xfb\x83\x45\xd5\x47\xc2\xfb\xab\xf7\xef\x0c\x2b\x60\x8c\xb3\xcd\x0c\x5e\x50\xcd\xca\xf9\xaf\x25\x6e\x5e\x4c\x4e\xce\xb1\xa3\x3b\xec\xe5\xa3\xdf\x15\x4d\x60\xa7\x97\xb9\xa1\xf7\xc8\x74\x20\x35\xf3\x03\xac\x21\xa9\x18\xfd\xad\xb2\x39\x63\xbd\xd1\xad\x05\x99\x86\x48\x69\x8e\x4c\xd1\x35\xb5\x41\xa1\x1e\x39\xcc\x1a\x98\x08\xa9\x15\xd8\xc4\x26\x09\x53\x11\xa8\x89\x55\x77\xe4\x10\x04\xf0\xa5\xe0\x79\x95\x61\x5e\x93\x6a\x57\x64\x69\x9d\x75\xcc\x9c\x43\x9a\x11\xf6\x42\xc1\x0a\x01\x3f\x67\x88\x79\x43\xbe\x4f\x45\xa7\x26\x1c\x55\x5b\x14\xa8\x83\x54\xc6\x81\xaf\x0a\xba\x21\xd1\x5e\xb1\x81\xa9\x0d\x98\x8b\xc2\xaa\x0d\x66\x05\x11\x98\xd7\x34\x47\x24\x5c\xad\x21\x70\x97\xcb\x25\x7c\x3d\x8d\xa5\xa0\xe7\xe2\x0c\xcf\xf9\xfa\x9c\x9c\xdf\x51\x96\x9f\x56\xac\x06\x61\x2f\x27\x2f\xae\x2e\xbc\xbc\x2d\x5f\x5e\x48\x2b\xa7\x99\x65\xca\xd5\x85\x9e\xd7\xcb\x39\x84\xd6\x4c\x8d\x9c\x8c\xc9\x1f\x4a\x6d\x53\xb2\xaa\x20\x22\xb4\x8b\x46\x8b\x4e\x9b\xa3\x30\xab\xed\xdf\x7e\xeb\xaa\x88\x36\x79\x60\x74\xe1\xbf\x6e\x7e\xb8\x0e\x01\x89\x04\xaa\x00\x3f\x53\xa9\x7d\x1f\x31\x62\x03\x45\x77\x18\x66\x1a\x7b\x22\x41\x22\x29\x70\x08\x4b\xdd\x4c\x7d\xbb\x54\xf3\xf4\xad\x4e\x4f\xbe\xe7\xd9\x5d\xed\x53\xa1\xe1\xb2\xa1\xfe\xaf\xa3\xd7\xce\x3f\x88\x54\xbb\x3d\xb7\x3a\x38\x38\x46\x6e\xac\xb5\xca\x84\x01\x2b\xac\x73\x44\x81\x4a\x50\xbc\xb7\x04\x67\x95\x10\xda\x2a\x46\x08\x60\x4c\xd7\x90\x6d\x09\xdb\x60\x3e\xc0\x3a\x1a\xb2\xfe\x8e\x24\xb1\x08\x93\xb9\x44\x7e\x3c\x74\x8b\xd3\xe8\x4d\xec\xeb\xe2\x77\x09\x07\x16\x0f\x08\x2d\x67\xfc\xa6\xeb\x37\x92\xef\xbb\xb6\x3d\x1e\xd6\x36\xcf\xf1\xdb\x76\x7d\x27\x06\xed\x6c\xf2\xd6\xc2\xa3\x5a\x51\x0c\xda\x55\xe6\x69\x2b\x1c\x0d\xb5\x27\x81\x37\x92\x8b\x7e\x9a\x4e\x08\xb5\x58\x74\x58\x16\x9a\x90\xfa\xa5\x95\x0c\x2c\x9d\x88\xba\x03\x02\xf1\xc0\x32\x14\x56\x77\xa8\xf1\x8f\x4b\x23\xaf\x44\x7c\x57\xcb\x0a\x96\x81\xe0\x7a\x07\x36\x42\x6b\xc6\x37\xcf\x12\x81\xaa\x13\xa2\x4e\x7b\xdd\x9f\x89\x68\xb5\x8e\x40\xb1\x2f\x6f\x0c\xfd\x40\x20\xde\x04\xe7\xcc\x8e\x5d\x5a\x51\xf4\x07\xce\x76\x01\xc1\xaf\xee\x50\x67\xa6\x96\x4e\xe2\x3d\x53\x69\x69\xfb\xe9\xf4\xdf\x4f\x49\x89\x24\xfa\xe0\x7b\xdc\x52\xe7\x64\xd0\xdf\xcf\xa6\x76\x3c\x7e\x7d\x79\xeb\xff\x0c\x0a\x7a\x44\x02\x61\xc1\xbb\x64\x18\xee\x8b\x6f\x7a\x5c\xb7\xaa\x3c\xbb\xbe\xbc\x9d\x46\x07\x01\x33\xff\xc7\x34\xc8\xe4\x7c\x05\xda\xd3\x57\x17\x1b\xef\x90\xbd\xd0\x0e\xf4\xa4\x85\x6b\x2a\xbb\xc7\xd9\x18\xfa\x9f\x26\x77\x3d\x0d\x33\xa0\x8e\x13\x39\x06\x5a\xd7\xc4\x45\xf0\x38\xb6\xba\xfa\x3f\x4d\x89\x79\x9a\xa0\x6b\x60\xfd\x28\x21\x7b\xaa\x95\xcc\x4e\x70\x34\x1b\xfc\x73\x6a\x4b\x27\x74\xd7\x44\xf7\x2e\xa7\x37\xe7\x36\xe3\xc9\x02\x7e\xb9\x3d\x94\xf8\x29\x9d\xbb\xff\xd2\xa9\x5b\xe8\xc1\xaf\xe2\xb3\x9f\x0b\x2a\xcb\x82\x1c\xbe\x19\x4f\xa6\x43\x86\xbb\x9d\x33\x74\xf8\x47\x7e\x20\x85\xa2\x28\x07\xe3\xff\xac\x50\x30\x52\xfc\xf8\xf1\xfb\xa1\x20\xd7\x97\xb7\x4d\xa1\xff\x82\x28\xf2\x65\x80\xa7\xf8\xd0\x6c\xe9\x99\x47\xf3\xcd\x38\xae\x17\x7d\x7a\x8a\x19\x12\x76\x07\x6b\x52\xc6\xff\x70\x7e\x5d\x4f\x34\x59\xc0\x1b\x76\xb8\x31\x79\x79\xbb\x28\x23\xf7\x54\x65\x5b\x9b\x7b\x75\xab\x52\x19\x91\x78\x5c\xc4\x8b\x0e\x0c\x34\xea\x92\x04\x1a\x27\x21\xa0\x0e\x70\xa2\x9d\x60\xbc\x6b\x97\x7d\xfe\x5f\x14\xdc\xc4\x80\xc1\xab\x7e\xf8\x3a\x93\x5d\xb4\x68\xfd\xfb\xed\xed\x87\x4b\x5a\x60\x3f\xb1\xfa\x5f\x25\x8a\x45\x60\x98\x67\x1b\x54\x3f\xe3\xea\x52\x50\x64\x79\x71\xf8\xf1\xe3\xf7\x63\x33\x22\x26\xac\xe3\x6c\x27\xbd\x73\xa4\xdf\x74\x9f\xf6\x89\xa9\xd9\x5a\x4f\x10\x93\xf7\x64\x56\x1a\x8c\x16\x53\x97\x3d\xb6\x17\xe2\x9c\xd7\x54\xbb\xf1\xf6\xbb\xc6\xb3\x0f\xa7\x36\xdc\xd9\x4f\xa0\xb7\x06\xeb\x97\x55\xd2\x6e\xce\x56\x15\x2d\xf2\x06\x3a\xc7\x35\xa9\x0a\xf5\x11\x33\xa4\xf7\x28\xec\x71\x5b\x3c\xd5\x06\x95\x1d\x7f\xa8\x47\xd5\x27\x7f\xe3\xc9\x1f\x96\x56\x64\xa8\x9e\x22\xb1\x06\x70\x3c\xf2\x87\xd2\xa4\x2c\x67\xe1\x39\xf8\xdc\x16\x31\xe7\x2e\xb9\x3c\x27\x42\xcd\x47\x5a\x19\x33\xa2\xc6\xce\x35\xcd\x14\xb7\xe1\xee\x78\x92\x58\x4d\x1f\xdd\x29\x6b\x79\x94\xfa\x60\xc7\x38\x93\xe5\x4f\xac\x8d\xe9\xf2\x91\xcb\x6d\x6d\xc0\x5e\x7d\x7b\x7d\x79\xab\xed\xa8\xf1\x58\xf6\xb9\xb6\x58\x5f\x4a\xe3\x30\xeb\xf5\x97\x90\x99\xf6\x01\x47\xe9\x4a\x57\xee\x21\xf6\x11\xc1\xf8\xb0\x60\x3c\xac\xbe\xff\x46\x07\xc1\x57\x17\x3a\x1a\xb0\xfa\x30\xe0\x08\x61\x16\x07\xea\x5f\x7a\x90\x90\x88\xa3\xfe\xe0\x31\x42\x6f\x55\x5e\x20\x51\xf8\x6e\x57\xaa\x43\xa3\x1a\x9a\x80\x6f\x1f\x3a\xd1\x72\x33\xe0\x31\x49\xcc\xab\x73\x8b\x0d\x42\x4c\xbd\x51\xbd\x29\x3e\xb9\xca\x13\x65\x0a\xc5\x9a\x64\x68\x8b\x7c\x95\x44\x21\x4d\xd9\x21\x23\xd2\x54\x48\xa8\x08\x43\xff\x06\x3f\x10\xdf\xe7\x00\x8a\x03\x29\x0a\xbe\x07\xae\xb6\x1a\x5c\x71\xc8\x6d\x4f\x46\x08\x4a\x99\xe2\x0e\x61\x83\x65\x06\x57\x0a\x48\x21\x1d\x06\x69\x2a\x5f\x02\x49\xee\x73\x5e\x73\x52\x5e\xf7\xce\xb4\x3a\x0b\x28\x33\x2f\x03\x74\xc7\x53\x91\x66\xb1\xed\x3e\x8a\x28\xc7\x48\x49\x6c\x3e\xd7\x32\x73\xcb\x1a\x1b\x5b\x96\x94\xd4\xf5\xe5\xed\xe3\x64\x78\xd4\x7b\x75\x61\x63\x5e\x1b\xea\x7f\x1a\x08\xb8\xe2\x42\xf0\xfd\xf5\xe5\xed\xf8\x1f\x41\x82\x33\x59\xc0\xf3\x34\x41\xaf\x4f\x6b\xa3\x45\xd9\xf0\x76\x1c\xe3\x0d\xcc\xc4\xf5\xe5\x6d\x3b\x88\xb3\x25\x56\x2d\x0a\x81\xb2\x2a\x14\x50\xc9\x5e\x28\xeb\xbb\x8d\x92\xe5\xbe\xe4\x65\xf5\x15\x73\x10\xb8\x46\x81\x2c\xc3\x36\x22\xb9\xe5\x55\x91\xc3\x0a\xc3\x93\x2e\x5b\xe2\x16\x9b\x6a\x87\xe6\x38\xcc\x95\xcf\x6c\xef\x45\x84\xa1\xe4\x52\x25\x02\xc9\xb1\x23\x6c\x69\xce\xaf\x26\xf0\xaf\x7f\xf9\x47\xaf\x4d\x4a\xb4\x04\x9a\xf7\x58\xbd\xd1\x5b\xc2\x18\x57\x8e\x43\xa1\xfa\xd5\x6b\x58\x98\xac\xb4\x29\xec\x75\x57\xa9\xb7\x1b\x65\x19\x17\x02\x33\x35\x6a\x19\xcd\xbe\x7d\xda\x28\xa9\x7f\xf2\x06\xb2\x66\x03\x26\xba\x6c\xf8\x9e\xd9\x9a\x3a\x61\x5a\xd2\xbc\x62\x6a\x50\x8e\xde\xcc\x14\xf3\xa0\xbd\x4d\xe2\x48\xb6\xb1\x94\xc7\xc7\x1d\x31\x67\xf1\xc0\x64\x3d\x20\x30\x39\x0f\x61\x2a\x3d\x6f\x35\xfd\x5c\x5f\xde\x42\xc6\xd9\x9a\x8b\x9d\xf6\x18\x36\xdc\x88\xc6\xbb\x42\x3f\x69\xd6\x6d\xd2\x0e\x73\xac\x4a\x18\xfc\xd3\xaa\xfb\x3f\xb5\x20\xd7\x14\x8b\xfc\xf8\x66\x24\xc2\xb2\x5b\x33\x5e\x9b\x02\x0b\xbd\x80\xf4\x16\x7c\x8c\x49\xdf\xbb\x96\x37\x10\xb8\xe3\xf7\xe8\x0b\x2a\xb6\x43\xd1\x1e\x88\x34\x86\x96\xe5\x60\x07\xd1\x5a\xf7\x33\x52\x14\x41\x05\xc1\x11\xd8\x99\xd9\x77\xd6\x4d\xcc\x1e\xf7\x93\x8e\xfd\x1f\x41\x1f\x5b\xaf\x31\x4b\xf4\x68\xd8\xae\xc4\x57\xae\xed\xa0\x66\xc2\xcc\xae\x65\x7c\x87\x87\x05\x34\x53\x74\xa3\x8f\xd7\xaf\xa1\x24\x8c\x66\xe3\x51\x60\x56\x02\x23\xee\x61\x17\xf0\xd6\xd8\x02\xbd\xfb\x6a\x86\x39\x46\x19\xa1\x5d\x5d\xc0\xa8\x37\xe8\xf6\xb1\x65\x43\x49\x18\x5e\x9e\x04\x1b\xcd\xe0\xed\x16\xb3\x3b\x6b\x86\xaa\xd5\x8e\x2a\x85\xa6\x7a\xaf\x38\xec\xc8\x9d\x7e\x28\x50\x8b\xc4\x9e\x1d\x59\xff\xa9\xb4\x6b\x0d\xf7\xe8\x9e\xc9\xd9\x68\x32\x89\x03\x23\xdc\xd1\x56\xd7\xa3\x61\xe9\x8c\xe6\xbe\xef\xb1\xe6\xac\x78\x3d\x23\xb6\x8f\x71\x92\x0c\xae\x5e\x9d\x37\x5d\x65\xd0\xee\x5f\x98\xd7\x7e\x58\x91\x3b\xd3\x93\xa6\x59\xa7\xf5\x89\xe4\x79\xa4\x4e\x35\xc5\x32\xd8\x55\x11\xa6\x1a\x4a\x59\x53\xe7\x20\x69\x0e\x44\x08\x72\x38\xe9\x60\x06\xba\xce\x63\xea\x66\xff\x20\xf2\x19\x7c\x1b\xfb\xa3\xb3\x0e\x8c\x29\x73\x79\xa6\x9e\xb5\x7d\x0c\xc9\x73\x43\x3c\xc3\xbd\x43\xea\x56\x13\x58\x94\xfd\x96\x66\xdb\x7a\x7b\x9a\x43\xf0\x22\xd7\x82\xee\xcc\xc5\x8b\xfc\x36\xbd\x23\x7e\xa1\xf9\xa7\x9a\xf0\x84\x0a\x84\x9d\xab\x5a\xf6\x8a\x0f\x91\x7c\x8e\x52\x09\x7e\xa8\xe7\xed\x93\xbd\x0d\x2f\x9c\xa2\x18\x0b\x63\x24\xe5\x9d\x94\x7e\x67\x74\x96\x68\x35\x66\x2d\x3d\xf8\xd2\x08\xe6\x48\xb0\xdc\x18\x8a\x3b\x3c\xc8\x34\xd5\x4d\x68\x13\x3e\xfc\x4f\x54\xd6\x6c\x7b\x6f\xaa\x23\x4e\x77\x70\xdb\x4b\xb8\x8e\x25\xb8\xdf\x95\xde\x62\x9a\xd0\x56\xc7\x97\x40\x55\x70\xb4\xa9\x95\x5b\x0f\xf0\x4f\xb7\x3c\x6a\xd5\xf9\x5f\x8a\xca\xd2\xbc\x7a\xde\xd5\xa1\xa3\xbc\x6a\xb6\xc2\x97\xb2\xcc\x14\xf4\x83\x58\x22\x6a\x35\xc0\xcf\x5a\x47\xd9\xc6\x9c\x47\xf3\xb5\xe1\x90\xf1\x8e\x12\xc6\x94\x65\x45\x95\x1b\x6f\xbb\xb5\xce\xf4\xea\x62\xd2\x3d\xfc\xa7\x12\x24\x59\xfb\x38\x4e\xa0\xd1\x38\xc6\xeb\x00\xce\xe9\xa1\x3b\xec\x34\x82\xd2\x3b\xcd\x20\x0d\x36\xfa\x50\x81\xfc\xe1\x70\x96\xae\x53\xfb\xf8\x99\x09\x1d\x13\xb1\xa5\x3d\x0a\x5e\xc3\x12\xc6\x09\xd9\xe9\x55\xf7\x29\xc0\xe4\x59\x07\x99\x53\x02\x8d\x4f\x1b\xba\x16\xa5\x71\xe0\x78\xa2\x97\xaf\xdd\xa8\x95\xec\xe6\xd3\x86\xe2\x3b\x1b\xd9\x6a\x76\x1b\x65\x16\xf5\xdd\x0c\xdf\x86\x52\x62\x66\xbb\x4d\xb4\xfe\x9c\x38\x75\x69\xed\x87\x30\xa6\x6b\x49\xe1\x21\x19\xef\x75\xf6\x05\x5d\xdb\xae\xac\xb5\x82\x65\x6a\x77\x1c\xe3\xf0\x11\xee\xac\x95\x05\x4c\x13\xd1\xc3\xb9\x1e\xf6\x0e\x48\xf7\x2d\x37\xea\x90\xd9\xd0\xd8\xe6\x47\xeb\xe0\xab\xcf\x42\x18\x16\x24\x35\x9c\xe6\x93\xbf\xa0\x04\x91\xa6\xea\x54\x0d\x62\xb0\x47\xb9\xb1\xd7\x60\x8c\x80\x6f\x0f\x25\x1a\xff\xf2\x60\xcb\x59\xdf\x71\x5e\xf4\xcc\xff\x10\xd5\xc0\x60\x61\x3a\x0d\x07\x77\xb0\xd6\x04\x50\xd9\x9e\x7f\x1c\x9c\x64\x80\x25\x21\x4d\x81\x3d\x9f\x5e\x46\x74\xf4\x98\xee\x01\xc7\x80\x90\xee\xd8\xac\x55\x5f\x07\x16\x0f\xfd\xc9\x63\x52\xb6\xfe\x65\x69\x8b\x1e\xde\x00\xbb\x38\x80\x1d\x74\x1c\x6b\x8b\x3f\x45\xa1\x3d\x86\x93\x28\x31\x91\x12\x6a\x5c\x6d\x4f\xdb\x93\x59\xf6\x6b\x17\x5b\xab\xdb\xf0\x64\x68\x68\xb5\xab\xd6\x32\xe8\x53\x33\xb7\xf6\x14\x29\x61\x6f\xb2\x0b\xaa\x16\xee\x7a\xd0\xd4\x46\x67\x57\xf9\xc2\x9f\x98\x2f\xe0\x79\xa2\x79\xd4\xb4\xcb\x64\x99\xb6\x41\x1b\x54\x6f\x6c\x72\x3d\xae\x23\xb4\x70\x58\xc3\xa2\x8f\xc6\x2d\x68\xb0\x59\x46\x4a\xb2\xa2\x05\x55\x14\x4d\x21\xff\xd5\xf3\x87\x64\xf6\x63\x13\xe8\xc7\x6f\x6c\x4d\x3c\x75\xdf\x67\xf2\xcc\x6d\xfe\xf1\xe4\xec\xab\xaf\xbe\x6a\xb2\xa9\x26\x5b\x72\xb5\x8a\x7a\xce\x83\x4d\x2c\x9d\xd8\x1b\xfa\x46\x41\x68\xe9\x18\x1c\x11\x9f\xb6\x32\x8e\x61\x93\x67\x71\x15\xf8\x08\xff\xa9\x7c\x6b\xfa\x7f\xc7\xb6\xcb\xea\xaa\xee\x6b\x99\x74\xf6\x13\x0d\xab\x1a\x33\xd7\x77\x6d\x0e\xad\x08\x65\xf2\xbf\xf1\x50\xe3\x48\xe5\x0a\xae\x8b\x6b\x19\x39\x4e\x87\xe4\x17\x0f\xf8\xe9\x99\xb1\xfc\xf6\x1e\x4a\x6a\x23\xbb\x2e\x46\xdb\xb3\xdc\xec\xb0\x94\xbf\x75\x10\xed\x1b\x11\xa7\xf5\x31\x75\x50\x57\xf3\xa4\x53\xf5\xa6\x6b\xa8\x44\x31\x93\x05\xcd\x70\x6c\x53\xc4\x97\x53\xa8\xca\x5b\xbe\x80\xbf\x4d\xb4\xd1\x19\xd1\x72\x2d\x47\x69\xea\x46\xad\x8b\x89\xbb\x43\x49\x99\x39\x0b\x2c\x78\x95\xcf\x35\x64\x73\x16\xd3\x9e\xe7\x3f\xfc\x3c\xfa\x45\x81\x6c\xa3\xb6\x41\xfa\x7c\x8c\x29\x95\x28\x7a\xcd\x93\xb9\x59\xe6\x7f\x7c\xac\xeb\x31\xd6\x0e\x01\xd1\x6f\x81\x0b\x90\x5c\x47\xe3\x9a\x17\x92\xee\x68\x41\x04\xec\x8d\x92\xf3\xbd\xc9\xd9\x56\xe8\x51\x98\xab\x60\xbe\x2b\x54\x5b\x2b\x6d\x22\x07\xd5\xbe\x0c\x25\x71\x69\xc9\x74\x00\xba\x6b\x4a\x92\xd8\xf2\x4c\x0e\x6b\x81\xf8\xbb\xcb\x05\xc3\xbb\x5d\x3e\xc5\x60\x61\xbb\x5e\x88\xcd\x93\xa5\x83\xa7\x6e\x7f\x6a\x7f\x53\x8f\xa7\xe1\xcb\x2f\x10\xc5\x62\x29\x45\x22\x5a\x8c\xcf\x4f\x74\x94\x3b\x1a\xc1\x02\x46\xc6\x6e\xd7\x6d\xc5\x9d\x32\x4b\xfb\x14\x56\xab\xa0\xbb\x72\xf2\x72\x62\xe0\xdd\xf3\xa6\x9e\xfb\x3b\x0a\xde\x8f\x27\xbe\x16\x53\xdf\x5e\xd1\xa8\xde\x37\xaf\x1a\x6c\x26\x73\xa6\xf7\xd8\xc1\xf8\xec\x94\xf9\x88\x16\xec\x26\x90\xf6\x5a\x87\xce\x0c\x0f\xae\xff\xb3\xaf\x4a\xab\xff\xa5\x8c\x4b\x84\xf6\x13\x2c\xdd\x3d\xb7\xee\xa9\x70\x23\x4d\xff\x57\xb7\x41\xa0\x2b\xdd\xa3\xf7\xb7\x9e\x14\xf5\x51\x79\x63\x16\xd8\x35\xc6\x47\xa3\x9b\xa1\x56\xf9\x29\xa4\x74\x2f\x56\xa5\x68\x4a\x5e\xb4\x4a\x2a\xf3\x60\xcf\xd1\x08\x5d\xbb\xcb\x35\xaf\x58\x47\xde\x7f\x86\x6f\x39\xe2\x5c\x12\x77\xca\x9e\xc2\xb9\xb6\x3a\x24\x19\x77\xea\x28\xf3\xdf\x9d\x87\xc9\x13\xdc\x67\x3d\x21\xb7\x36\xc1\x8e\xd7\xda\x10\xeb\x9f\xd2\x5f\xca\xb5\xe1\x91\x6f\x01\xf7\xd7\xac\xec\xf5\x80\xf0\x4e\x85\x3d\xe8\xa2\xea\x85\xb9\xdf\x1b\x5d\x05\x9e\x42\x29\xf8\x3d\xcd\x11\xde\xff\x70\xe1\x0a\xa4\x05\x65\x77\x40\x55\x83\xf1\x3d\x11\x77\xa8\xca\x82\x64\x08\x7a\xe3\xaf\x88\xc4\x08\xfb\x0f\x6a\x8b\x62\x4f\x25\x4e\x41\x1b\x5e\x73\xd7\x5c\x63\x7a\x79\xda\x5f\xc4\xeb\xeb\xe8\x43\xfb\xe2\x3a\x2c\xda\x55\xd4\x7f\x7b\xe5\xd0\x96\x57\xa8\x71\xff\x06\x83\x6f\x74\xd4\xb4\x43\x29\xc9\x06\x17\x30\xba\xe6\xf6\xcb\x0c\xee\x7e\x9d\xf3\xd3\xa3\x49\x82\xb4\xa0\x33\xb2\xd6\xbd\xe6\xba\xe3\xb3\x0e\x00\x06\x4d\xc6\x66\x7c\x7c\x05\x36\x1a\x5f\xbb\x8e\x54\x1f\x2f\xfa\x36\xa6\x08\xa4\x4e\xf0\x5c\x6e\xd6\xae\x0d\xd9\x5b\xcc\x7b\x2d\xd5\x26\x63\xd2\x6a\xd1\xf1\x34\xbe\xd9\x34\x60\x79\x70\xed\xbe\xeb\x99\xbe\xcc\x7b\x0d\xdb\xb0\x60\x5c\x59\xf4\xd3\xd4\xc9\x83\xaf\x34\xf4\x90\xe9\x3b\xf1\x63\x2f\x1c\x7c\xbd\xa1\x69\x16\xb3\xbb\xc0\xfc\xaf\x35\x57\x1a\x37\x2c\xfb\x5e\x84\x97\x6c\xdb\x15\xab\x23\x4a\xb8\x5c\xc2\xcb\x44\x5d\x2a\x4c\x3a\x5a\x0a\x92\xee\xab\x79\x75\xee\x44\x3c\x2c\xef\x08\x4b\x2c\x61\x23\x91\x4c\x74\x12\xbd\x4e\xf5\xe1\x26\x7b\x70\xbf\xa8\x7b\x75\x78\x83\x54\x0d\xf6\x69\xd0\xd2\x86\xf5\x49\xbd\x0e\x1b\xa4\x8e\x35\xa8\xba\xe6\x54\x3f\xb8\x25\xb4\x3f\xd6\x8f\x96\xec\xa4\xeb\x80\xa6\x7b\x0a\x65\xf8\x1d\x8f\x64\x15\x21\xf8\xb8\x47\xba\xfb\xb4\x0c\x3e\x1f\x72\xa4\x0e\x71\x0a\x41\xd0\x38\x60\x59\xf1\x3c\x89\x2c\xd9\x83\xdc\x60\xf9\x9e\xb2\x3b\xcc\x83\x46\xb6\x27\x62\x49\x56\x9a\x2e\x5d\x71\x6b\x61\x34\xe3\xc9\x55\xcd\x84\xac\x5e\x9d\x07\x64\x0d\xa8\x6e\xbd\xfa\x36\xa2\x3d\x7d\xe6\xfc\xd8\x79\x3a\xf9\x02\x2d\x3b\xd2\x51\x38\x40\xd1\x8e\x35\x46\xdb\x36\xdc\x91\xfd\xd2\x51\x78\xef\x70\x94\x96\x45\xd4\x12\xed\xc1\x4c\xd7\x85\xe4\x19\x25\x05\x94\x05\x51\x6b\x2e\x76\xb0\x37\x67\x41\xda\x57\x1c\x6c\x8a\x4f\x6d\xfb\x97\x49\x0c\x58\x0e\x65\x25\xb0\x38\xc0\xda\x9d\xc9\x16\xb3\x9e\x19\xb1\x69\x3f\x6d\x37\xcc\x26\x3b\x53\xc3\xae\xd4\x51\x8f\x46\xc9\xdf\x2a\x22\xd0\x5c\xa8\x6e\xe3\x34\x37\xae\xfb\x7b\x7d\xad\xbf\xfb\xe2\x6e\xee\x24\x95\xf3\x2d\xdf\xe1\x9c\xee\x36\x73\xf3\x41\x27\xf7\x71\xa7\x82\x6f\xf8\xac\x64\x9b\xfe\x16\x88\x9e\xc5\x81\x71\xe3\x39\x25\x56\x55\x47\xf6\xb2\x73\x2f\xa6\x1e\x2c\x2b\xc2\x18\x8a\xff\xdb\x2c\xb2\x34\xce\x7e\x2d\xff\x2c\x26\xfd\x5a\xe2\xd3\xb8\x64\x95\x5e\x2e\x8e\x58\x97\x11\x65\x52\x91\x8d\x20\xbb\xd1\x20\xfd\xdd\xef\xf7\xb3\x1a\xc4\x7c\xf5\xcb\xae\xf6\xa8\x42\x9b\x89\x74\x88\xc1\x73\xce\x86\xcd\xe3\x47\xcf\xec\x1a\xe6\xdf\xda\x69\x8e\xce\xa0\xf6\x54\x29\x14\xc3\x26\x70\x83\xbb\x4b\x78\xb2\xa1\x7c\x6c\x07\x29\xfe\x70\xae\x29\x38\xb6\x4f\x5c\x5c\x59\xd0\x5c\xb8\x9a\xc4\x57\xcc\x6e\x50\x01\xaf\x84\x31\x7d\x39\x94\xf5\x27\xbd\xc0\x9f\xc1\x24\xfd\x2c\x2c\x61\xee\x1c\xb3\x5b\x4d\xe3\x2d\xde\x76\xdb\x13\x7a\xcb\xfb\x1a\x8f\x75\x8b\x83\xd1\xb4\x3f\xee\x15\x92\x92\xd7\xd0\x4d\xc9\x35\x06\x0c\x3e\xe9\x65\xe6\xb6\x3f\x3b\x80\x51\x12\x5c\x33\xd3\x9e\xfc\x9b\x8f\x7f\x49\x13\x15\xc7\x13\xc4\x71\xf4\xcb\xb3\xf8\xad\xff\xaa\xca\x12\x1e\xe2\x5c\xfd\xad\xcf\x6d\x6c\x71\xb6\xae\xd5\x6a\xb7\x20\xc9\x3d\xba\xd6\x25\xb7\xc6\x1a\xd2\x9c\xd1\x18\x88\x26\xe9\x31\x18\x82\x40\xd2\xde\xb8\xb4\xc7\x37\x33\x87\x60\xa6\x71\x8e\x5f\x9d\x1b\xd8\xa0\x0d\xa7\xcd\xd7\x20\xcc\x37\x79\x49\xff\x87\xee\x1e\xcf\x1e\xcf\xfe\x27\x00\x00\xff\xff\x53\xf4\x40\x5f\x2d\x51\x00\x00" func contractsDigitalartCdcBytes() ([]byte, error) { return bindataRead( @@ -104,7 +104,7 @@ func contractsDigitalartCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/DigitalArt.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x20, 0xf, 0x25, 0xb7, 0x4d, 0x70, 0x5a, 0xb9, 0x70, 0x4b, 0x5b, 0x12, 0x87, 0xbd, 0xf1, 0xef, 0xb4, 0xb9, 0x16, 0x86, 0x6a, 0xcd, 0xc0, 0xed, 0x1e, 0x76, 0xc, 0x11, 0x0, 0xc4, 0x64, 0x81}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0x19, 0x9f, 0xe5, 0xb, 0xb2, 0x8b, 0x31, 0xad, 0x58, 0x5, 0x18, 0x5a, 0x40, 0xf7, 0xf2, 0xa, 0x81, 0xfe, 0x9f, 0x99, 0x20, 0x80, 0xde, 0xc6, 0xf4, 0xd8, 0x5d, 0x12, 0xe0, 0xa0, 0x1b}} return a, nil } diff --git a/lib/go/iinft/scripts/testing.go b/lib/go/iinft/scripts/testing.go index 3f5627c..025d362 100644 --- a/lib/go/iinft/scripts/testing.go +++ b/lib/go/iinft/scripts/testing.go @@ -33,7 +33,7 @@ func ConfigureInMemoryEmulator(t *testing.T, client *gwtf.GoWithTheFlow, adminFl func FundAccountWithFlow(t *testing.T, client *gwtf.GoWithTheFlow, receiverAddress flow.Address, amount string) { t.Helper() - contracts := client.State.Contracts() //.ByNetwork(client.Network) + contracts := client.State.Contracts() addrMap := make(map[string]string) networkName := client.Services.Network().Name From f02ba1f6c4599aa17cfd740414b6e2b096059470 Mon Sep 17 00:00:00 2001 From: sequel21 Date: Sun, 3 Nov 2024 20:10:02 +0000 Subject: [PATCH 05/12] Use generic scripts when paying with Flow. Fix deployment. --- flow.json | 6 ++---- lib/go/iinft/internal/assets/assets.go | 6 +++--- lib/go/iinft/test/digitalart_integration_test.go | 8 ++++++-- .../iinft/test/marketplace_integration_test.go | 8 ++++++-- lib/go/iinft/test/marketplace_test.go | 16 ++++++++++++---- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/flow.json b/flow.json index b408d23..98adb74 100644 --- a/flow.json +++ b/flow.json @@ -63,7 +63,7 @@ "FungibleTokenMetadataViews": { "source": "./contracts/standard/FungibleTokenMetadataViews.cdc", "aliases": { - "emulator": "f8d6e0586b0a20c7", + "emulator": "ee82856bf20e2aa6", "mainnet": "f233dcee88fe0abe", "testing": "0000000000000007", "testnet": "9a0766d93b6608b7" @@ -72,7 +72,7 @@ "FungibleTokenSwitchboard": { "source": "./contracts/standard/FungibleTokenSwitchboard.cdc", "aliases": { - "emulator": "f8d6e0586b0a20c7", + "emulator": "ee82856bf20e2aa6", "mainnet": "f233dcee88fe0abe", "testing": "0000000000000007", "testnet": "9a0766d93b6608b7" @@ -173,7 +173,6 @@ "ViewResolver", "MetadataViews", "NonFungibleToken", - "FungibleTokenMetadataViews", "NFTStorefront", "NFTCatalog", "NFTRetrieval", @@ -182,7 +181,6 @@ "ExampleToken" ], "emulator-sequel-admin": [ - "FungibleTokenSwitchboard", "Evergreen", "DigitalArt", "SequelMarketplace" diff --git a/lib/go/iinft/internal/assets/assets.go b/lib/go/iinft/internal/assets/assets.go index 0311315..520a512 100644 --- a/lib/go/iinft/internal/assets/assets.go +++ b/lib/go/iinft/internal/assets/assets.go @@ -19,7 +19,7 @@ // contracts/thirdparty/nft_catalog/NFTRetrieval.cdc (8.973kB) // contracts/thirdparty/versus/Art.cdc (17.353kB) // contracts/thirdparty/versus/Content.cdc (2.981kB) -// flow.json (5.005kB) +// flow.json (4.939kB) package assets @@ -468,7 +468,7 @@ func contractsThirdpartyVersusContentCdc() (*asset, error) { return a, nil } -var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\x4f\x6f\xdb\xc8\x0e\xc0\xcf\xce\xa7\x28\x74\x6e\x1d\xce\xff\x99\xdc\xfa\xfa\x5e\x6f\x7d\x87\xb6\x78\x97\xe2\x61\xc1\x21\x39\xa9\x11\x47\xca\x4a\x72\xb2\x45\xd1\xef\xbe\x70\xac\x38\x96\xa3\xc4\xde\x00\x9b\x45\x72\x8a\x29\x92\xfa\x71\x86\xe4\x70\xf4\xf3\x64\x56\x51\x53\xf7\x2d\x52\xdf\x55\x67\x6f\x7e\x9e\xcc\x66\xd5\xfb\xb6\x1f\xfe\x9d\x55\x5d\xb3\x6a\x49\xaa\xb3\x37\xd5\xfc\x74\xab\x78\xda\x7f\x5f\xb4\x7c\x85\x6d\xff\xe3\xf4\x5a\xda\x6e\xd5\x9d\xbe\x6f\xfb\x39\x31\x55\x6f\x6f\xad\x70\xb9\xc0\x4e\xee\x1c\xce\x66\xd5\x25\x2e\xea\x5a\xd6\x6e\x2b\x0e\xc9\x97\xa2\x82\x82\x90\x73\x29\x7e\x63\x32\xab\x7a\xe9\xfa\x41\x25\x25\x42\xb0\x3a\x2a\x48\x31\x1b\xc3\xd5\x5a\xe3\xd7\xc9\x6c\xf6\x6b\xad\x5b\xfd\x6b\xd5\xd6\xd2\x1e\x40\xec\x7a\xac\x19\x5b\x3e\xdd\x68\x3f\x05\x27\x97\xab\x25\xf6\xcd\xda\x63\x55\x22\x7b\x01\x17\x7d\x06\xd4\x40\xe1\x8e\x6e\x27\x80\xa2\x8d\x61\x12\x89\xb1\x08\x60\x96\xdd\x00\x16\xf5\xf9\x5a\x05\xc6\x7f\x61\x2a\x46\x84\xe0\x3d\x27\x93\xbd\x87\x98\xc3\x5e\x8c\x1f\x9a\xba\x97\xfa\xaf\xef\xc3\x60\xf7\x62\x7b\xf1\xef\xc5\xf9\xa2\xc7\xe5\xe1\x94\xb9\x57\x3c\x92\xcd\x50\x0e\x24\x92\xbd\x76\xe8\x01\x70\x82\x2d\x58\x97\x21\x3a\xc6\xc2\x6c\x0b\xc1\x1e\xdb\x7f\xae\xa5\x3d\x6f\x45\xea\x03\x68\x5b\xbd\x97\x23\xfb\x03\x2f\xaf\x96\xf2\xb5\xb9\x38\x08\x37\x64\xd5\xe9\xae\xc9\xe3\x9c\xf7\xaf\xf8\xb8\x6c\x6e\x8e\xf1\xbf\xad\x93\xad\xc1\xb1\xa5\x02\x28\xce\x50\xf6\x62\x8a\xd5\x18\xd2\x44\xa9\x28\xef\xac\x77\xc6\xa4\x04\x16\xd0\xab\xc3\xa5\x62\xa6\x16\x53\x3c\x70\x01\xab\x31\x11\x44\x1f\xf7\x16\xf3\xe3\xaa\x3e\x5f\xe4\xe3\x56\xf3\x3e\xda\x5d\xa3\x63\x23\x16\x89\x3a\x3a\x9f\x8b\x06\xd1\x88\xfe\x9f\x6a\x0e\x23\xf8\x4f\xd2\x23\x63\x8f\xff\x5b\xc8\x4d\xf7\xac\xf0\x47\x1e\x5e\x5b\xa3\x1c\x45\xf2\xe5\x66\xd1\xd3\xf7\xdc\x60\xcb\xcf\x5a\x89\x1d\xfb\xd7\xb6\x0e\xcf\x4a\x83\xbf\x6b\xe7\x15\x07\x71\x01\xd1\xb9\xa8\x82\xb5\xf1\x70\xc4\x6a\x22\x62\x6f\x94\xc4\x88\x12\x8a\xe2\x40\x7a\xbf\x89\xfe\xf7\xe3\xd7\x0f\xd8\xe3\xb2\x39\x3f\xfe\x94\xac\x4b\xff\x1b\x6d\x8c\x4e\xef\xed\x8f\xec\xfb\x36\x61\x20\x46\x83\x4a\x84\x48\xa7\x09\x64\xa3\x2d\x19\x2b\x8a\x9c\x0a\x62\x39\x3f\x44\xfe\x2c\x7d\xbb\x90\x6b\x5c\x3e\x1b\x7a\xeb\xe1\x25\xb1\xbf\xf4\x4d\x2b\xa5\x6d\x0e\x8e\x24\xdb\xdc\x1a\x19\x1d\x8b\x2a\x39\xa2\x02\xca\xa9\xc4\x60\xdc\x64\x19\xd8\x0c\x9e\x0a\xa1\xe2\x88\x36\xf8\x7d\xd4\xa6\x7e\xd6\x79\xb0\x6f\xf7\xda\x8a\xe1\x8b\xfc\xbe\x92\xe5\x27\x6c\x2f\xa4\xbf\x5a\xe2\x6d\xa4\x4f\x05\xfe\x40\xff\xc5\x66\x9f\x75\xaf\xf9\x2c\x5d\xb3\xbc\x3e\x7e\x86\xdf\xb5\x79\x45\x3b\x73\x72\x1b\x72\x55\x4b\x7f\xd3\xb4\x17\xdb\xfb\xd5\x2e\xa5\xd2\x61\x0e\x73\x98\xab\x33\xe3\xfc\xa6\x34\x77\x09\x91\x48\xba\x6e\x3e\x48\xe6\x75\xc3\xd2\xcd\x9b\xba\x2c\x9b\x9b\x79\xd3\x9e\x9f\x25\x00\xd8\x18\xed\x30\x4f\xf9\xdc\xe1\x1d\x7c\xb2\x5c\x3f\xee\x72\x20\x47\xa2\x66\x55\xf7\x0f\xc8\xdf\x0d\x0f\xb6\xfb\x87\xcc\xad\x74\xdd\xe3\xeb\x5e\x5d\xc8\x8f\xdb\xe4\x20\x32\xa8\x7c\x48\x10\x02\xe8\x10\xc1\x39\x2d\x2c\x59\x52\xf0\x6c\x91\xa3\xd3\xca\x70\x28\xac\x95\x95\x50\x32\xc5\x94\x5d\x0c\x60\x8d\x90\x52\xe1\xb6\x33\x6d\xf2\x68\xcb\xd2\xdd\xa6\xf2\x3b\xe4\xcb\x45\x3d\x05\xa4\x42\xca\x3e\x2b\xca\x3e\x38\x27\x46\x8d\x81\x28\x40\x74\x5e\x9c\xcd\x3a\x6b\x17\x63\x44\x52\x06\x39\x05\x97\xd1\x3b\xcd\x40\xc9\x29\x88\xec\x81\x03\x17\x17\xdc\x3a\xa5\xbd\x4d\x5e\xf9\x14\x1c\xcb\xe3\x40\x57\x4b\xec\x4b\xd3\x5e\x4e\x2e\x92\x29\xc4\x9a\x14\x86\x58\x9c\x88\x8c\x99\x22\x80\x76\x05\x58\x15\x5d\x58\x65\x04\x51\xb1\x58\x1b\x7c\x54\x85\xd9\xa3\x8f\xe8\xb5\x60\xf4\xa4\x49\x17\x29\x18\x95\xe2\x02\xd1\xb3\x05\xce\x86\x26\x98\x56\x9d\xb4\x6a\x8a\x44\xc0\x30\x4a\x16\x8e\x84\xe0\x95\xdb\xdb\x2e\x2f\xda\xeb\xa8\x19\x4b\xd6\xd6\xb3\x8b\x21\x44\x15\x03\x9b\xc0\x41\x4b\x41\x16\xe3\x43\x22\xf0\x19\xad\x36\xd1\x39\xb3\x5e\x41\x2e\x31\x67\x25\x9b\xdb\xe2\x04\x89\x9e\x22\x01\xeb\x50\x05\x6f\x28\x19\x00\x4f\x38\x26\x51\xe4\x4b\xf2\x51\x13\x45\x09\xa0\x74\x14\xe3\x7c\x49\x8e\x95\x29\x56\xb1\x2e\xe4\x29\xd9\x64\x4c\x0a\xd9\x27\x81\x52\x20\xab\xe2\x8b\x2e\x20\x04\x7a\x2a\x71\xd6\x24\x66\x32\x63\x34\x48\xd0\x0e\x1c\x18\x0b\x84\x79\x4c\x92\x4c\x56\x36\x1b\x27\x3a\xb3\x16\xc3\xc9\x33\xb0\x20\x39\x9f\xa3\x4a\x29\x47\x04\xcd\xc2\x52\x9c\x26\xbd\x06\x64\xaf\x48\xeb\x62\x93\x65\x89\x6a\x43\x32\x14\x18\xcb\xd5\xb2\xf9\x71\x29\x13\x35\xb6\x05\x9b\x28\xba\x6f\x9b\x26\x34\x7c\x08\x19\x5a\xd2\xa8\xb1\x0e\xb2\xf1\x54\x38\x08\x1f\x9c\x91\x83\xfc\x89\x6b\xc5\x9d\xe5\x68\x10\xb8\x17\xde\xcd\x61\xf7\x92\xfb\x31\x67\x90\xbd\x6f\xb7\x06\x77\xdf\x36\x86\x9f\xa3\xcb\xf0\x5a\xf4\xff\xb7\xe3\xb8\xf7\x0a\xfc\xdb\x04\xed\xee\xe0\x7f\xe7\x76\x7b\xfb\x1f\x04\x3b\x9f\x2a\x06\xc9\xc3\x43\xf3\x89\xd7\xef\x94\xf3\xb7\x7d\x95\xbb\xea\x9a\x7c\xa0\x1f\x7b\x60\x6e\x1f\x0c\xd9\x70\xf2\xeb\xe4\xcf\x00\x00\x00\xff\xff\x3e\x93\xf8\xc8\x8d\x13\x00\x00" +var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\xcd\x72\xdb\x46\x0c\x80\xcf\xf2\x53\x64\x78\x4e\x64\xec\xff\xae\x6f\x69\xda\xdc\xd2\x43\x92\xe9\x25\xd3\xe9\x60\x01\xac\xa3\xb1\x4c\xba\x24\x65\x37\x93\xc9\xbb\x77\x24\xd1\xfa\x33\x1d\xa9\x3e\xb8\x63\x9f\x68\x10\x80\x3e\x60\x01\xec\x2e\xbf\x9f\x4d\x2a\x6a\xea\xbe\x45\xea\xbb\xea\xe2\xd5\xf7\xb3\xc9\xa4\x7a\xdb\xf6\xc3\xe3\xa4\xea\x9a\x45\x4b\x52\x5d\xbc\xaa\xa6\xe7\x1b\xc5\xf3\xfe\xeb\xac\xe5\x1b\x6c\xfb\x6f\xe7\xb7\xd2\x76\x8b\xee\xfc\x6d\xdb\x4f\x89\xa9\x7a\xbd\xb2\xc2\xf9\x0c\x3b\xb9\x77\x38\x99\x54\xd7\x38\xab\x6b\x59\xba\xad\x38\x24\x5f\x8a\x0a\x0a\x42\xce\xa5\xf8\xb5\xc9\xa4\xea\xa5\xeb\x07\x95\x94\x08\xc1\xea\xa8\x20\xc5\x6c\x0c\x57\x4b\x8d\x1f\x67\x93\xc9\x8f\xa5\x6e\xf5\xcb\xa2\xad\xa5\x3d\x82\xd8\xf5\x58\x33\xb6\x7c\xbe\xd6\xfe\x19\x9c\x5c\x2f\xe6\xd8\x37\x4b\x8f\x55\x89\xec\x05\x5c\xf4\x19\x50\x03\x85\x7b\xba\x9d\x00\x8a\x36\x86\x49\x24\xc6\x22\x80\x59\x76\x03\x98\xd5\x97\x4b\x15\xd8\xff\x0b\x63\x31\x22\x04\xef\x39\x99\xec\x3d\xc4\x1c\x0e\x62\x7c\xd7\xd4\xbd\xd4\xff\x7d\x1d\x06\xbb\x67\x5b\x8b\x5f\x67\x97\xb3\x1e\xe7\xc7\x4b\x66\xab\x78\x22\x9b\xa1\x1c\x48\x24\x7b\xed\xd0\x03\xe0\x08\x5b\xb0\x2e\x43\x74\x8c\x85\xd9\x16\x82\x03\xb6\xdf\x6e\xa5\xbd\x6c\x45\xea\x23\x68\x1b\xbd\xe7\x23\xfb\x07\xaf\x6f\xe6\xf2\xb9\xb9\x3a\x0a\x37\x54\xd5\xf9\xae\xc9\xe3\x9c\xdb\x9f\x78\x3f\x6f\xee\x4e\xf1\xbf\xe9\x93\x8d\xc1\xa9\xad\x02\x28\xce\x50\xf6\x62\x8a\xd5\x18\xd2\x48\xab\x28\xef\xac\x77\xc6\xa4\x04\x16\xd0\xab\xe3\xad\x62\xc6\x92\x29\x1e\xb8\x80\xd5\x98\x08\xa2\x8f\x07\xc9\x7c\xbf\xa8\x2f\x67\xf9\xb4\x6c\x6e\xa3\xdd\x35\x3a\x35\x62\x91\xa8\xa3\xf3\xb9\x68\x10\x8d\xe8\xff\xaf\xe1\xb0\x07\xff\x41\x7a\x64\xec\xf1\x8f\x99\xdc\x75\x4f\x0a\x7f\xcf\xc3\x8b\xce\xc5\xa7\xbb\x59\x4f\x5f\x73\x83\x2d\x3f\x29\x13\x3b\xf6\x2f\x2d\x0f\x4f\x2a\x83\x27\xad\xfc\x09\x5b\xa4\xe2\x20\x2e\x20\x3a\x17\x55\xb0\x36\x1e\x8f\x58\x8d\x44\xec\x8d\x92\x18\x51\x42\x51\x1c\x48\x1f\x0e\xd1\xdf\xdf\x7f\x7e\x87\x3d\xce\x9b\xcb\xd3\x77\xc9\xba\xf4\x7f\xd1\xda\xe8\x7c\x6b\x7f\xe2\xdc\xb7\x09\x03\x31\x1a\x54\x22\x44\x3a\x8d\x20\x1b\x6d\xc9\x58\x51\xe4\x54\x10\xcb\xf9\x21\xf2\x47\xe9\xdb\x99\xdc\xe2\xfc\xc9\xd0\x1b\x0f\xcf\x89\xfd\xa9\x6f\x5a\x29\x6d\x73\xf4\x48\xb2\xa9\xad\x3d\xa3\x53\x51\x25\x47\x54\x40\x39\x95\x18\x8c\x1b\x6d\x03\x9b\xc1\x53\x21\x54\x1c\xd1\x06\x7f\x88\xda\xd4\x4f\xda\x0f\x0e\xed\x5e\x5a\x33\x7c\x92\xbf\x17\x32\xff\x80\xed\x95\xf4\x37\x73\x5c\x45\xfa\xb3\xc0\x1f\xe8\x3f\xdb\xd9\x67\x39\x6b\x3e\x4a\xd7\xcc\x6f\x4f\x3f\xc3\xef\xda\xbc\xa0\x95\x39\x5b\x85\x5c\xd5\xd2\xdf\x35\xed\xd5\xe6\x7e\xb5\x4b\xa9\x74\x98\xc2\x14\xa6\xea\xc2\x38\xbf\x6e\xcd\x5d\x42\x24\x92\xae\x9b\x0e\x92\x69\xdd\xb0\x74\xd3\xa6\x2e\xf3\xe6\x6e\xda\xb4\x97\x17\x09\x00\xd6\x46\x3b\xcc\x63\x3e\x77\x78\x07\x9f\x2c\xb7\x8f\xbb\x1c\xc8\x91\xa8\x59\xd4\xfd\x03\xf2\x37\xc3\x8b\xcd\xfa\x21\x73\x2b\x5d\xf7\x78\xde\xab\x2b\xf9\xb6\x2a\x0e\x22\x83\xca\x87\x04\x21\x80\x0e\x11\x9c\xd3\xc2\x92\x25\x05\xcf\x16\x39\x3a\xad\x0c\x87\xc2\x5a\x59\x09\x25\x53\x4c\xd9\xc5\x00\xd6\x08\x29\x15\x56\x93\x69\x5d\x47\x1b\x96\x6e\x55\xca\x6f\x90\xaf\x67\xf5\x18\x90\x0a\x29\xfb\xac\x28\xfb\xe0\x9c\x18\xb5\x0f\x44\x01\xa2\xf3\xe2\x6c\xd6\x59\xbb\x18\x23\x92\x32\xc8\x29\xb8\x8c\xde\x69\x06\x4a\x4e\x41\x64\x0f\x1c\xb8\xb8\xe0\x96\x25\xed\x6d\xf2\xca\xa7\xe0\x58\x1e\x07\xba\x99\x63\x5f\x9a\xf6\x7a\x34\x49\xa6\x10\x6b\x52\x18\x62\x71\x22\xb2\xcf\x14\x01\xb4\x2b\xc0\xaa\xe8\xc2\x2a\x23\x88\x8a\xc5\xda\xe0\xa3\x2a\xcc\x1e\x7d\x44\xaf\x05\xa3\x27\x4d\xba\x48\xc1\xa8\x14\x17\x88\x9e\x2d\x70\x36\x34\xc2\xb4\xe8\xa4\x55\x63\x24\x02\x86\x51\xb2\x70\x24\x04\xaf\xdc\xc1\x72\x79\xd1\x5e\x47\xcd\x58\xb2\xb6\x9e\x5d\x0c\x21\xaa\x18\xd8\x04\x0e\x5a\x0a\xb2\x18\x1f\x12\x81\xcf\x68\xb5\x89\xce\x99\x65\x06\xb9\xc4\x9c\x95\xac\x6f\x8b\x23\x24\x7a\x8c\x04\xac\x43\x15\xbc\xa1\x64\x00\x3c\xe1\x3e\x89\x22\x5f\x92\x8f\x9a\x28\x4a\x00\xa5\xa3\x18\xe7\x4b\x72\xac\x4c\xb1\x8a\x75\x21\x4f\xc9\x26\x63\x52\xc8\x3e\x09\x94\x02\x59\x15\x5f\x74\x01\x21\xd0\x63\x85\xb3\x24\x31\xa3\x15\xa3\x41\x82\x76\xe0\xc0\x58\x20\xcc\xfb\x24\xc9\x64\x65\xb3\x71\xa2\x33\x6b\x31\x9c\x3c\x03\x0b\x92\xf3\x39\xaa\x94\x72\x44\xd0\x2c\x2c\xc5\x69\xd2\x4b\x40\xf6\x8a\xb4\x2e\x36\x59\x96\xa8\xd6\x24\x43\x83\xb1\xdc\xcc\x9b\x6f\xd7\x32\xd2\x63\x1b\xb0\x91\xa6\xfb\xb2\x1e\x42\xc3\x87\x90\x61\x24\xed\x0d\xd6\x41\xb6\x7f\x2a\x1c\x84\x0f\xf6\xc8\x7b\xf9\xde\x36\xbf\x15\xde\x9f\xb2\xb6\x92\xed\x21\x66\x90\x2d\xef\xff\xc3\xe3\xfd\x97\x8b\xe1\xdf\xbd\xab\xee\x52\xf4\xe7\xeb\xfd\xa8\x0e\xda\x77\x08\x6d\x7b\x77\x1f\xfc\xec\x7c\x68\x18\x24\x0f\xb7\xbc\x9f\xb8\xdf\x69\xc6\x2f\x87\x2a\xf7\xbd\x31\xfa\x42\x3f\xf6\xc2\xac\x5e\x0c\x6b\x79\xf6\xe3\xec\xdf\x00\x00\x00\xff\xff\x3b\xae\x68\x39\x4b\x13\x00\x00" func flowJsonBytes() ([]byte, error) { return bindataRead( @@ -484,7 +484,7 @@ func flowJson() (*asset, error) { } info := bindataFileInfo{name: "flow.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0xaf, 0x1d, 0x70, 0xb2, 0xf3, 0xf, 0xd5, 0xf, 0x64, 0x13, 0xc7, 0x9d, 0xd4, 0x29, 0xab, 0x7e, 0xe1, 0x4b, 0xf7, 0xb8, 0x56, 0xa7, 0x8d, 0x7c, 0xb3, 0x8f, 0x47, 0x67, 0x2d, 0x2e, 0x99}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x7c, 0xd5, 0x2a, 0xde, 0x1a, 0x3f, 0x48, 0x5c, 0x16, 0xb8, 0x30, 0x8c, 0x4f, 0xd5, 0x47, 0xbe, 0x26, 0xad, 0x46, 0x30, 0x52, 0x8d, 0x41, 0x28, 0xd9, 0x81, 0xa8, 0x54, 0xae, 0x1d, 0x96}} return a, nil } diff --git a/lib/go/iinft/test/digitalart_integration_test.go b/lib/go/iinft/test/digitalart_integration_test.go index 31c69f5..042091f 100644 --- a/lib/go/iinft/test/digitalart_integration_test.go +++ b/lib/go/iinft/test/digitalart_integration_test.go @@ -312,7 +312,7 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { t.Run("Should be able to mint a token on demand (master not sealed)", func(t *testing.T) { - _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand_flow", scripts.MintOnDemandParameters{ + _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand", scripts.MintOnDemandParameters{ Metadata: metadata, Profile: profile, })). @@ -321,6 +321,8 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { StringArgument(metadata.Asset). UInt64Argument(1). UFix64Argument("100.0"). + Argument(cadence.NewAddress(se.ContractAddress("FlowToken"))). + StringArgument("FlowToken"). UInt64Argument(123). Test(t). AssertSuccess(). @@ -365,7 +367,7 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { t.Run("Should be able to mint a token on demand (master sealed)", func(t *testing.T) { - _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand_flow", scripts.MintOnDemandParameters{ + _ = client.Transaction(se.GetCustomScript("digitalart_mint_on_demand", scripts.MintOnDemandParameters{ Metadata: metadata, Profile: profile, })). @@ -374,6 +376,8 @@ func TestDigitalArt_Integration_MintOnDemand_Flow(t *testing.T) { StringArgument(metadata.Asset). UInt64Argument(1). UFix64Argument("100.0"). + Argument(cadence.NewAddress(se.ContractAddress("FlowToken"))). + StringArgument("FlowToken"). UInt64Argument(123). Test(t). AssertSuccess(). diff --git a/lib/go/iinft/test/marketplace_integration_test.go b/lib/go/iinft/test/marketplace_integration_test.go index 63c2a0e..7c46e10 100644 --- a/lib/go/iinft/test/marketplace_integration_test.go +++ b/lib/go/iinft/test/marketplace_integration_test.go @@ -72,10 +72,12 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { var listingID uint64 t.Run("Should be able to list an NFT in seller's Storefront", func(t *testing.T) { - res := se.NewTransaction("marketplace_list_flow"). + res := se.NewTransaction("marketplace_list"). SignProposeAndPayAs(sellerAcctName). UInt64Argument(nftID). UFix64Argument("200.0"). + Argument(cadence.NewAddress(se.ContractAddress("FlowToken"))). + StringArgument("FlowToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess(). @@ -124,10 +126,12 @@ func TestMarketplace_Integration_ListAndBuyWithFlow(t *testing.T) { }) t.Run("Should be able to buy an NFT from seller's Storefront", func(t *testing.T) { - _ = se.NewTransaction("marketplace_buy_flow"). + _ = se.NewTransaction("marketplace_buy"). SignProposeAndPayAs(buyerAcctName). UInt64Argument(listingID). Argument(cadence.NewAddress(sellerAcct.Address)). + Argument(cadence.NewAddress(se.ContractAddress("FlowToken"))). + StringArgument("FlowToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess(). diff --git a/lib/go/iinft/test/marketplace_test.go b/lib/go/iinft/test/marketplace_test.go index 616bee1..277179e 100644 --- a/lib/go/iinft/test/marketplace_test.go +++ b/lib/go/iinft/test/marketplace_test.go @@ -63,10 +63,12 @@ func TestMarketplace_listToken(t *testing.T) { checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 1) t.Run("Happy path (Flow)", func(t *testing.T) { - res := se.NewTransaction("marketplace_list_flow"). + res := se.NewTransaction("marketplace_list"). SignProposeAndPayAs(sellerAcctName). UInt64Argument(nftID). UFix64Argument("200.0"). + Argument(cadence.NewAddress(se.ContractAddress("FlowToken"))). + StringArgument("FlowToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess(). @@ -300,10 +302,12 @@ func TestMarketplace_buyToken(t *testing.T) { checkDigitalArtCollectionLen(t, se, sellerAcct.Address.String(), 1) checkDigitalArtCollectionLen(t, se, buyerAcct.Address.String(), 0) - res = se.NewTransaction("marketplace_list_flow"). + res = se.NewTransaction("marketplace_list"). SignProposeAndPayAs(sellerAcctName). UInt64Argument(nftID). UFix64Argument("200.0"). + Argument(cadence.NewAddress(se.ContractAddress("FlowToken"))). + StringArgument("FlowToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess() @@ -312,10 +316,12 @@ func TestMarketplace_buyToken(t *testing.T) { "A.f8d6e0586b0a20c7.NFTStorefront.ListingAvailable", "listingResourceID") t.Run("Happy path (Flow)", func(t *testing.T) { - _ = se.NewTransaction("marketplace_buy_flow"). + _ = se.NewTransaction("marketplace_buy"). SignProposeAndPayAs(buyerAcctName). UInt64Argument(listingID). Argument(cadence.NewAddress(sellerAcct.Address)). + Argument(cadence.NewAddress(se.ContractAddress("FlowToken"))). + StringArgument("FlowToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess(). @@ -583,10 +589,12 @@ func TestMarketplace_withdrawToken(t *testing.T) { // Assert that the account's collection is correct checkTokenInDigitalArtCollection(t, se, sellerAcct.Address.String(), nftID) - res := se.NewTransaction("marketplace_list_flow"). + res := se.NewTransaction("marketplace_list"). SignProposeAndPayAs(sellerAcctName). UInt64Argument(nftID). UFix64Argument("200.0"). + Argument(cadence.NewAddress(se.ContractAddress("FlowToken"))). + StringArgument("FlowToken"). Argument(cadence.NewOptional(cadence.String("link"))). Test(t). AssertSuccess() From 85b124d04bab2a2c92199100f6bc335f4b86020b Mon Sep 17 00:00:00 2001 From: sequel21 Date: Mon, 4 Nov 2024 19:33:30 +0000 Subject: [PATCH 06/12] Update ci.yaml to 1.22 --- .github/workflows/ci.yml | 8 ++++---- .../templates/transactions/digitalart_mint_on_demand.cdc | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b1a238a..681103b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.22 - name: Checkout code uses: actions/checkout@v2 @@ -53,7 +53,7 @@ jobs: uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.22 - uses: actions/cache@v3 with: path: | @@ -65,7 +65,7 @@ jobs: - uses: zencargo/github-action-go-mod-tidy@v1 with: path: lib/go/iinft - go-version: 1.18 + go-version: 1.22 test: runs-on: ubuntu-latest @@ -75,7 +75,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.22 - name: Set up Cache uses: actions/cache@v3 with: diff --git a/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand.cdc b/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand.cdc index f096b53..8a8d769 100644 --- a/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand.cdc +++ b/lib/go/iinft/scripts/templates/transactions/digitalart_mint_on_demand.cdc @@ -12,6 +12,7 @@ transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, ftContract let paymentVault: @{FungibleToken.Vault} let tokenReceiver: &{NonFungibleToken.Receiver} let buyerAddress: Address + let sellerVaultPath: PublicPath prepare(buyer: auth(BorrowValue, IssueStorageCapabilityController, PublishCapability, SaveValue) &Account, platform: auth(BorrowValue) &Account) { if numEditions == 0 { @@ -78,6 +79,7 @@ transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, ftContract ?? panic("Cannot borrow fungible token vault from acct storage") let price = unitPrice * UFix64(numEditions) self.paymentVault <- vaultRef.withdraw(amount: price) + self.sellerVaultPath = vaultData.receiverPath if buyer.storage.borrow<&DigitalArt.Collection>(from: DigitalArt.CollectionStoragePath) == nil { let collection <- DigitalArt.createEmptyCollection(nftType: Type<@DigitalArt.NFT>()) @@ -104,7 +106,7 @@ transaction(masterId: String, numEditions: UInt64, unitPrice: UFix64, ftContract unitPrice: unitPrice, numEditions: numEditions, sellerRole: "Artist", - sellerVaultPath: /public/flowTokenReceiver, + sellerVaultPath: self.sellerVaultPath, paymentVault: <-self.paymentVault, evergreenProfile: self.evergreenProfile, ) From d21189bc13cdfc8d01153c1833ba56e8e41bf816 Mon Sep 17 00:00:00 2001 From: sequel21 Date: Mon, 4 Nov 2024 22:14:59 +0000 Subject: [PATCH 07/12] Fix linting issues --- .golangci.yml | 11 +++++++---- lib/go/iinft/go.mod | 2 +- lib/go/iinft/gwtf/event.go | 4 ++-- lib/go/iinft/gwtf/script.go | 2 +- lib/go/iinft/gwtf/transaction.go | 4 ++-- lib/go/iinft/scripts/testing.go | 10 +++++----- lib/go/iinft/test/digitalart_test.go | 14 +++++++------- lib/go/iinft/test/marketplace_test.go | 1 + 8 files changed, 26 insertions(+), 22 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 62f0a2a..4c947ee 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -12,9 +12,11 @@ linters-settings: - performance - style govet: - check-shadowing: true + enable: + # report about shadowed variables + - shadowing nolintlint: - require-explanation: true + require-explanation: false require-specific: true funlen: lines: 100 @@ -30,12 +32,12 @@ linters: - asciicheck - bodyclose - contextcheck - - depguard + - copyloopvar +# - depguard - dogsled # - dupl - errcheck - errorlint - - exportloopref - exhaustive - goconst # - gocritic @@ -65,4 +67,5 @@ linters: run: issues-exit-code: 1 + go: '1.22' diff --git a/lib/go/iinft/go.mod b/lib/go/iinft/go.mod index 18af423..a3f4ad7 100644 --- a/lib/go/iinft/go.mod +++ b/lib/go/iinft/go.mod @@ -13,6 +13,7 @@ require ( github.com/rs/zerolog v1.29.0 github.com/spf13/afero v1.10.0 github.com/stretchr/testify v1.9.0 + golang.org/x/exp v0.0.0-20240119083558-1b970713d09a ) require ( @@ -212,7 +213,6 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.26.0 // indirect - golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/oauth2 v0.17.0 // indirect golang.org/x/sync v0.8.0 // indirect diff --git a/lib/go/iinft/gwtf/event.go b/lib/go/iinft/gwtf/event.go index efd2253..7adce64 100644 --- a/lib/go/iinft/gwtf/event.go +++ b/lib/go/iinft/gwtf/event.go @@ -86,7 +86,7 @@ func (e EventFetcherBuilder) End(blockHeight uint64) EventFetcherBuilder { // Last fetch events from the number last blocks func (e EventFetcherBuilder) Last(number uint64) EventFetcherBuilder { e.EndAtCurrentHeight = true - e.FromIndex = -int64(number) + e.FromIndex = -int64(number) //nolint:gosec return e } @@ -187,7 +187,7 @@ func (e EventFetcherBuilder) Run(ctx context.Context) ([]*FormatedEvent, error) fromIndex := e.FromIndex // if we have a negative fromIndex is relative to endIndex if e.FromIndex <= 0 { - fromIndex = int64(endIndex) + e.FromIndex + fromIndex = int64(endIndex) + e.FromIndex //nolint:gosec } if fromIndex < 0 { diff --git a/lib/go/iinft/gwtf/script.go b/lib/go/iinft/gwtf/script.go index 69b8849..023a7fd 100644 --- a/lib/go/iinft/gwtf/script.go +++ b/lib/go/iinft/gwtf/script.go @@ -3,12 +3,12 @@ package gwtf import ( "context" "fmt" - "github.com/onflow/flowkit/v2" "log" "os" "github.com/onflow/cadence" "github.com/onflow/flow-go-sdk" + "github.com/onflow/flowkit/v2" ) // FlowScriptBuilder is a struct to hold information for running a script diff --git a/lib/go/iinft/gwtf/transaction.go b/lib/go/iinft/gwtf/transaction.go index 37a0703..4de6868 100644 --- a/lib/go/iinft/gwtf/transaction.go +++ b/lib/go/iinft/gwtf/transaction.go @@ -4,8 +4,6 @@ import ( "context" "errors" "fmt" - "github.com/onflow/flowkit/v2" - "github.com/onflow/flowkit/v2/transactions" "log" "os" "time" @@ -13,7 +11,9 @@ import ( "github.com/araddon/dateparse" "github.com/onflow/cadence" "github.com/onflow/flow-go-sdk" + "github.com/onflow/flowkit/v2" "github.com/onflow/flowkit/v2/accounts" + "github.com/onflow/flowkit/v2/transactions" ) // TransactionFromFile will start a flow transaction builder diff --git a/lib/go/iinft/scripts/testing.go b/lib/go/iinft/scripts/testing.go index 025d362..f29b027 100644 --- a/lib/go/iinft/scripts/testing.go +++ b/lib/go/iinft/scripts/testing.go @@ -124,12 +124,12 @@ func GetExampleTokenBalance(t *testing.T, se *Engine, address flow.Address) floa func SetUpRoyaltyReceivers(t *testing.T, se *Engine, signAndProposeAs, payAs string, extraTokenNames ...string) { t.Helper() - var addresses []cadence.Value - var names []cadence.Value + addresses := make([]cadence.Value, len(extraTokenNames)) + names := make([]cadence.Value, len(extraTokenNames)) - for _, name := range extraTokenNames { - addresses = append(addresses, cadence.NewAddress(se.ContractAddress(name))) - names = append(names, cadence.String(name)) + for i, name := range extraTokenNames { + addresses[i] = cadence.NewAddress(se.ContractAddress(name)) + names[i] = cadence.String(name) } _ = se.NewTransaction("account_royalty_receiver_setup"). diff --git a/lib/go/iinft/test/digitalart_test.go b/lib/go/iinft/test/digitalart_test.go index e586584..dbc56b7 100644 --- a/lib/go/iinft/test/digitalart_test.go +++ b/lib/go/iinft/test/digitalart_test.go @@ -3,7 +3,7 @@ package test import ( "context" "os" - "sort" + "slices" "testing" "time" @@ -768,13 +768,13 @@ access(all) fun main(address:Address, tokenID:UInt64) : [UInt64] { idArray, ok := viewsVal.(cadence.Array) require.True(t, ok) require.Equal(t, 2, len(idArray.Values)) - ids := []int{ - int(idArray.Values[0].(cadence.UInt64)), - int(idArray.Values[1].(cadence.UInt64)), + ids := []uint64{ + uint64(idArray.Values[0].(cadence.UInt64)), + uint64(idArray.Values[1].(cadence.UInt64)), } - sort.Ints(ids) - assert.Equal(t, 0, ids[0]) - assert.Equal(t, 1, ids[1]) + slices.Sort(ids) + assert.Equal(t, uint64(0), ids[0]) + assert.Equal(t, uint64(1), ids[1]) }) t.Run("borrowNFT(...) should return NonFungibleToken.NFT", func(t *testing.T) { diff --git a/lib/go/iinft/test/marketplace_test.go b/lib/go/iinft/test/marketplace_test.go index 277179e..3c5a8c6 100644 --- a/lib/go/iinft/test/marketplace_test.go +++ b/lib/go/iinft/test/marketplace_test.go @@ -381,6 +381,7 @@ func TestMarketplace_payForMintedTokens(t *testing.T) { }, evergreenAddr) require.NoError(t, err) + //nolint:gosec scriptWithExampleToken := ` import FungibleToken from 0xee82856bf20e2aa6 import ExampleToken from 0xf8d6e0586b0a20c7 From 2f3d9e77ff60fa3db9893ecc1a1b11c685300cdc Mon Sep 17 00:00:00 2001 From: sequel21 Date: Mon, 4 Nov 2024 22:15:39 +0000 Subject: [PATCH 08/12] Update NFT Catalog script --- .../nft_catalog/get_token_metadata.cdc | 61 ++++++++++++++----- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_token_metadata.cdc b/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_token_metadata.cdc index d8587de..6db79d6 100644 --- a/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_token_metadata.cdc +++ b/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_token_metadata.cdc @@ -1,14 +1,14 @@ {{ define "catalog_get_token_metadata" }} import MetadataViews from {{.MetadataViews}} import NFTCatalog from {{.NFTCatalog}} -import NFTRetrieval from {{.NFTRetrieval}} +import ViewResolver from {{.ViewResolver}} -pub struct NFT { - pub let id: UInt64 - pub let name: String - pub let description: String - pub let thumbnail: String - pub let externalURL: String +access(all) struct NFT { + access(all) let id: UInt64 + access(all) let name: String + access(all) let description: String + access(all) let thumbnail: String + access(all) let externalURL: String init( id: UInt64, @@ -25,21 +25,54 @@ pub struct NFT { } } -pub fun main(ownerAddress: Address, collectionIdentifier: String, id: UInt64): NFT? { +access(all) fun main(ownerAddress: Address, collectionIdentifier: String, id: UInt64): NFT? { + pre { + NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier) != nil : "Invalid collection identifier" + } + let account = getAccount(ownerAddress) let value = NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier)! - let collectionCap = account - .getCapability<&AnyResource{MetadataViews.ResolverCollection}>(value.collectionData.publicPath) - + let collectionCap = account.capabilities.get<&{ViewResolver.ResolverCollection}>(value.collectionData.publicPath) if !collectionCap.check() { return nil } - let views = NFTRetrieval.getNFTViewsFromIDs(collectionIdentifier: collectionIdentifier, ids: [id], collectionCap: collectionCap) + let items : [MetadataViews.NFTView] = [] + + fun hasMultipleCollectionsFn(nftTypeIdentifier : String): Bool { + let typeCollections = NFTCatalog.getCollectionsForType(nftTypeIdentifier: nftTypeIdentifier)! + var numberOfCollections = 0 + for identifier in typeCollections.keys { + let existence = typeCollections[identifier]! + if existence { + numberOfCollections = numberOfCollections + 1 + } + if numberOfCollections > 1 { + return true + } + } + return false + } + + // Check if we have multiple collections for the NFT type... + let hasMultipleCollections = hasMultipleCollectionsFn(nftTypeIdentifier : value.nftType.identifier) + + if collectionCap.check() { + let collectionRef = collectionCap.borrow()! + if collectionRef.getIDs().contains(id) { + let nftResolver = collectionRef.borrowViewResolver(id: id) + let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver!) + if !hasMultipleCollections { + items.append(nftViews) + } else if nftViews.display!.name == value.collectionDisplay.name { + items.append(nftViews) + } + } + } - for view in views { + for view in items { let displayView = view.display let externalURLView = view.externalURL @@ -63,4 +96,4 @@ pub fun main(ownerAddress: Address, collectionIdentifier: String, id: UInt64): N return nil } -{{ end }} \ No newline at end of file +{{ end }} From bd4eb4f6e70db8483e8af6e57726b73d5eac8a9e Mon Sep 17 00:00:00 2001 From: sequel21 Date: Sat, 9 Nov 2024 00:30:23 +0000 Subject: [PATCH 09/12] Update more scripts and fix local development --- flow.json | 11 +- lib/go/iinft/internal/assets/assets.go | 12 +- .../nft_catalog/get_collection_tokens.cdc | 56 +++++-- .../scripts/nft_catalog/get_collections.cdc | 66 +++++--- scripts/get_fusd_balance.cdc | 13 -- scripts/get_switchboard_vault_types.cdc | 14 ++ .../account_royalty_receiver_setup.cdc | 141 ++++++++++-------- transactions/account_setup_fusd.cdc | 32 ---- transactions/account_switchboard_setup.cdc | 41 +++-- transactions/transfer_flow_tokens.cdc | 24 +-- 10 files changed, 223 insertions(+), 187 deletions(-) delete mode 100644 scripts/get_fusd_balance.cdc create mode 100644 scripts/get_switchboard_vault_types.cdc delete mode 100644 transactions/account_setup_fusd.cdc diff --git a/flow.json b/flow.json index 98adb74..d816fca 100644 --- a/flow.json +++ b/flow.json @@ -132,6 +132,13 @@ "testing": "0000000000000001", "testnet": "631e88ae7f1d7c20" } + }, + "USDCFlow": { + "aliases": { + "mainnet": "f1ab99c82dee3526", + "testing": "0000000000000007", + "testnet": "64adf39cbc354fcb" + } } }, "networks": { @@ -169,10 +176,6 @@ "deployments": { "emulator": { "emulator-account": [ - "Burner", - "ViewResolver", - "MetadataViews", - "NonFungibleToken", "NFTStorefront", "NFTCatalog", "NFTRetrieval", diff --git a/lib/go/iinft/internal/assets/assets.go b/lib/go/iinft/internal/assets/assets.go index 520a512..2f449e5 100644 --- a/lib/go/iinft/internal/assets/assets.go +++ b/lib/go/iinft/internal/assets/assets.go @@ -2,7 +2,7 @@ // sources: // contracts/DigitalArt.cdc (20.781kB) // contracts/Evergreen.cdc (5.401kB) -// contracts/SOURCES.md (1.474kB) +// contracts/SOURCES.md (1.569kB) // contracts/SequelMarketplace.cdc (10.012kB) // contracts/standard/Burner.cdc (1.998kB) // contracts/standard/FlowToken.cdc (13.194kB) @@ -19,7 +19,7 @@ // contracts/thirdparty/nft_catalog/NFTRetrieval.cdc (8.973kB) // contracts/thirdparty/versus/Art.cdc (17.353kB) // contracts/thirdparty/versus/Content.cdc (2.981kB) -// flow.json (4.939kB) +// flow.json (5.006kB) package assets @@ -128,7 +128,7 @@ func contractsEvergreenCdc() (*asset, error) { return a, nil } -var _contractsSourcesMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xd4\xcf\x8e\xda\x30\x10\x06\xf0\x3b\x4f\x81\xd4\x4b\x39\x04\xf3\xa7\x44\xa1\xc7\x96\x72\x6b\x0f\x04\x7a\xa9\xaa\x6a\x6c\x4f\x12\xab\xc6\x46\xf6\x84\x2c\x6f\xbf\x8a\x10\xac\x03\x81\x2c\x5a\x2e\x88\x43\xf2\xfd\x3c\x9f\x26\xfe\xd4\x4f\x6d\xe9\x04\xfa\x5e\x2f\xea\xff\xf1\x04\x46\x82\x93\xec\x5b\xe9\x0c\xba\xa1\x90\xe2\xef\xe7\x82\x68\xe7\xbf\x32\x96\x2b\x2a\x4a\x3e\x14\x76\xcb\xac\xc9\xb4\xad\x58\xfd\x13\x65\xc4\xb8\xb6\x9c\x6d\xc1\x13\x3a\x26\xac\x21\x07\x82\x3c\x2b\x49\x69\x45\x87\x20\x6b\xd0\x30\x96\xda\x56\x6b\xfb\x1f\x4d\x27\x21\xac\xc3\xe8\x2d\xb8\x9d\x3b\xc7\xb5\x48\xa5\xc9\x15\xd7\xf8\x3e\xed\xe6\x40\x8d\x98\x0e\xe5\x27\x12\x48\x20\xf8\xad\xb0\xf2\x4f\x22\x1b\x99\x1d\x7e\x5a\x29\x12\x05\xb7\xe0\xe4\x93\xf4\x20\xb1\xc5\xde\xa4\x8b\xbb\x4e\xe9\xe5\x09\x51\x26\x24\x36\xe9\xe2\x3a\xee\xb1\xf6\xcc\xcd\x01\x3a\x1a\xfb\xb5\x5c\xa7\x64\x1d\x66\xce\x1a\xba\xc7\x98\x8c\x22\x7f\x7e\xf2\x88\xcd\x92\x78\x22\xb8\x88\x31\x9e\xe2\x97\x11\x8e\x93\x39\x9f\xc9\x44\x4c\x81\x4f\xe3\xf1\x1c\x12\x90\x93\x78\x06\x23\x19\x1c\xa7\xe1\xb5\x1c\xc7\x9a\xc7\x36\xf5\xf6\xe0\x97\x51\xd7\x58\x5d\xc9\x0a\xbd\xd5\x7b\x74\x1f\x80\xc2\x98\x33\x42\x85\x72\x72\x07\x8e\x0e\x75\x73\xff\x04\x10\x68\x9b\xd7\xe3\x7f\x3f\xfe\xed\xba\x58\xea\xbe\x4f\x6f\x05\x5b\x03\x12\x8d\xc0\x66\xa1\x41\x62\x87\xbd\x42\x72\x0a\xf7\xa0\x9f\xa8\x37\x32\x8f\x3e\x7a\x52\x26\x67\x3f\x5e\x60\xbb\x0b\xda\x7f\x74\xbd\x2e\xbe\x93\xd3\x65\x7a\x19\x3b\xe8\xbd\x06\x00\x00\xff\xff\xbc\xa4\x82\x05\xc2\x05\x00\x00" +var _contractsSourcesMd = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xd4\xbf\xee\xda\x30\x10\xc0\xf1\x9d\xa7\xf8\x49\x5d\xca\x10\xcc\x9f\x12\x85\x8e\x85\xb2\xb5\x03\x81\x2e\x55\x55\x9d\xed\x4b\x62\xd5\xd8\xc8\xbe\x90\xf2\xf6\x55\x84\x42\x1d\x08\xa4\xa8\x2c\x88\x01\xbe\x9f\xf8\xec\xf8\xdd\x5b\x6a\x4b\x27\xd0\x0f\x06\xd1\xdb\x77\x4f\x60\x24\x38\xc9\x3e\x95\xce\xa0\x1b\x09\x29\x7e\xbc\x2f\x88\x0e\xfe\x23\x63\xb9\xa2\xa2\xe4\x23\x61\xf7\xcc\x9a\x4c\xdb\x8a\xd5\x1f\x51\x46\x8c\x6b\xcb\xd9\x1e\x3c\xa1\x63\xc2\x1a\x72\x20\xc8\xb3\x92\x94\x56\x74\x0a\x5a\xc3\x96\xb1\xd6\xb6\xda\xda\x5f\x68\x7a\x09\x61\x1d\x46\x7f\xc3\xdd\xdc\x25\xd7\x21\x95\x26\x57\x5c\xe3\xbf\x69\x77\x17\xd4\xca\xf4\x28\x5f\x90\x40\x02\xc1\x37\x85\x95\x7f\x11\xd9\x6a\xf6\xf8\x69\xa5\x48\x14\xdc\x82\x93\x2f\xd2\x83\x62\x87\xbd\x4b\x57\x0f\x9d\xd2\xcb\x06\x51\x26\x24\x76\xe9\xea\x36\xf7\xdc\xf4\xcc\xdd\x05\xf4\x4c\xec\xeb\x7a\x9b\x92\x75\x98\x39\x6b\xe8\x11\x63\x32\x8a\xfc\xe5\x97\x67\x6c\x9e\xc4\x53\xc1\x45\x8c\xf1\x0c\x3f\x8c\x71\x92\x2c\xf8\x5c\x26\x62\x06\x7c\x16\x4f\x16\x90\x80\x9c\xc6\x73\x18\xcb\xe0\x71\x5a\x5e\xc7\xe3\x58\xf3\xdc\x49\xbd\xbf\xf0\xeb\xd4\x2d\x56\x8f\x64\x83\xde\xea\x23\xba\xff\x80\xc2\xcc\x2d\xb2\x4b\x57\xcb\xfa\xbd\x7c\x04\x70\xa7\x64\x8e\x32\x2a\xbd\x14\x9d\x47\xa4\x89\x5c\xf2\x54\x28\x27\x0f\xe0\xe8\x54\x6f\xcc\x4f\x01\x04\xda\xe6\xf5\x74\x97\xe7\xaf\x7d\xf7\x56\xbd\x9d\xcd\xbf\x02\x11\x24\x1a\x81\xed\xfd\x0a\x8a\x3d\xf6\x06\xc9\x29\x3c\x82\x7e\xa1\xde\x6a\x9e\x7d\xf4\xa4\x4c\xce\x3e\xff\x86\xfd\x21\xd8\xdc\x67\x4f\xef\xd5\x8c\x9b\xbb\xfa\x3a\x3b\x1c\xfc\x09\x00\x00\xff\xff\x12\x3c\xeb\xcc\x21\x06\x00\x00" func contractsSourcesMdBytes() ([]byte, error) { return bindataRead( @@ -144,7 +144,7 @@ func contractsSourcesMd() (*asset, error) { } info := bindataFileInfo{name: "contracts/SOURCES.md", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5, 0x13, 0xa9, 0x90, 0xd5, 0xd4, 0xbd, 0x52, 0x4, 0xad, 0x11, 0x2c, 0x52, 0xc6, 0xdb, 0xc, 0xe8, 0x34, 0xa9, 0x97, 0x93, 0x77, 0x2e, 0xe5, 0x6f, 0xab, 0xaf, 0x33, 0xf0, 0x26, 0x3f, 0x31}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa5, 0xe9, 0x83, 0xc2, 0xac, 0x6, 0x8c, 0x4c, 0xdc, 0x79, 0x9d, 0xaa, 0xd9, 0x43, 0xec, 0x52, 0x8b, 0x24, 0xce, 0x62, 0x46, 0xd6, 0xac, 0x2b, 0x88, 0x8, 0x4c, 0x6b, 0xc0, 0xb8, 0xe8, 0xc7}} return a, nil } @@ -468,7 +468,7 @@ func contractsThirdpartyVersusContentCdc() (*asset, error) { return a, nil } -var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\xcd\x72\xdb\x46\x0c\x80\xcf\xf2\x53\x64\x78\x4e\x64\xec\xff\xae\x6f\x69\xda\xdc\xd2\x43\x92\xe9\x25\xd3\xe9\x60\x01\xac\xa3\xb1\x4c\xba\x24\x65\x37\x93\xc9\xbb\x77\x24\xd1\xfa\x33\x1d\xa9\x3e\xb8\x63\x9f\x68\x10\x80\x3e\x60\x01\xec\x2e\xbf\x9f\x4d\x2a\x6a\xea\xbe\x45\xea\xbb\xea\xe2\xd5\xf7\xb3\xc9\xa4\x7a\xdb\xf6\xc3\xe3\xa4\xea\x9a\x45\x4b\x52\x5d\xbc\xaa\xa6\xe7\x1b\xc5\xf3\xfe\xeb\xac\xe5\x1b\x6c\xfb\x6f\xe7\xb7\xd2\x76\x8b\xee\xfc\x6d\xdb\x4f\x89\xa9\x7a\xbd\xb2\xc2\xf9\x0c\x3b\xb9\x77\x38\x99\x54\xd7\x38\xab\x6b\x59\xba\xad\x38\x24\x5f\x8a\x0a\x0a\x42\xce\xa5\xf8\xb5\xc9\xa4\xea\xa5\xeb\x07\x95\x94\x08\xc1\xea\xa8\x20\xc5\x6c\x0c\x57\x4b\x8d\x1f\x67\x93\xc9\x8f\xa5\x6e\xf5\xcb\xa2\xad\xa5\x3d\x82\xd8\xf5\x58\x33\xb6\x7c\xbe\xd6\xfe\x19\x9c\x5c\x2f\xe6\xd8\x37\x4b\x8f\x55\x89\xec\x05\x5c\xf4\x19\x50\x03\x85\x7b\xba\x9d\x00\x8a\x36\x86\x49\x24\xc6\x22\x80\x59\x76\x03\x98\xd5\x97\x4b\x15\xd8\xff\x0b\x63\x31\x22\x04\xef\x39\x99\xec\x3d\xc4\x1c\x0e\x62\x7c\xd7\xd4\xbd\xd4\xff\x7d\x1d\x06\xbb\x67\x5b\x8b\x5f\x67\x97\xb3\x1e\xe7\xc7\x4b\x66\xab\x78\x22\x9b\xa1\x1c\x48\x24\x7b\xed\xd0\x03\xe0\x08\x5b\xb0\x2e\x43\x74\x8c\x85\xd9\x16\x82\x03\xb6\xdf\x6e\xa5\xbd\x6c\x45\xea\x23\x68\x1b\xbd\xe7\x23\xfb\x07\xaf\x6f\xe6\xf2\xb9\xb9\x3a\x0a\x37\x54\xd5\xf9\xae\xc9\xe3\x9c\xdb\x9f\x78\x3f\x6f\xee\x4e\xf1\xbf\xe9\x93\x8d\xc1\xa9\xad\x02\x28\xce\x50\xf6\x62\x8a\xd5\x18\xd2\x48\xab\x28\xef\xac\x77\xc6\xa4\x04\x16\xd0\xab\xe3\xad\x62\xc6\x92\x29\x1e\xb8\x80\xd5\x98\x08\xa2\x8f\x07\xc9\x7c\xbf\xa8\x2f\x67\xf9\xb4\x6c\x6e\xa3\xdd\x35\x3a\x35\x62\x91\xa8\xa3\xf3\xb9\x68\x10\x8d\xe8\xff\xaf\xe1\xb0\x07\xff\x41\x7a\x64\xec\xf1\x8f\x99\xdc\x75\x4f\x0a\x7f\xcf\xc3\x8b\xce\xc5\xa7\xbb\x59\x4f\x5f\x73\x83\x2d\x3f\x29\x13\x3b\xf6\x2f\x2d\x0f\x4f\x2a\x83\x27\xad\xfc\x09\x5b\xa4\xe2\x20\x2e\x20\x3a\x17\x55\xb0\x36\x1e\x8f\x58\x8d\x44\xec\x8d\x92\x18\x51\x42\x51\x1c\x48\x1f\x0e\xd1\xdf\xdf\x7f\x7e\x87\x3d\xce\x9b\xcb\xd3\x77\xc9\xba\xf4\x7f\xd1\xda\xe8\x7c\x6b\x7f\xe2\xdc\xb7\x09\x03\x31\x1a\x54\x22\x44\x3a\x8d\x20\x1b\x6d\xc9\x58\x51\xe4\x54\x10\xcb\xf9\x21\xf2\x47\xe9\xdb\x99\xdc\xe2\xfc\xc9\xd0\x1b\x0f\xcf\x89\xfd\xa9\x6f\x5a\x29\x6d\x73\xf4\x48\xb2\xa9\xad\x3d\xa3\x53\x51\x25\x47\x54\x40\x39\x95\x18\x8c\x1b\x6d\x03\x9b\xc1\x53\x21\x54\x1c\xd1\x06\x7f\x88\xda\xd4\x4f\xda\x0f\x0e\xed\x5e\x5a\x33\x7c\x92\xbf\x17\x32\xff\x80\xed\x95\xf4\x37\x73\x5c\x45\xfa\xb3\xc0\x1f\xe8\x3f\xdb\xd9\x67\x39\x6b\x3e\x4a\xd7\xcc\x6f\x4f\x3f\xc3\xef\xda\xbc\xa0\x95\x39\x5b\x85\x5c\xd5\xd2\xdf\x35\xed\xd5\xe6\x7e\xb5\x4b\xa9\x74\x98\xc2\x14\xa6\xea\xc2\x38\xbf\x6e\xcd\x5d\x42\x24\x92\xae\x9b\x0e\x92\x69\xdd\xb0\x74\xd3\xa6\x2e\xf3\xe6\x6e\xda\xb4\x97\x17\x09\x00\xd6\x46\x3b\xcc\x63\x3e\x77\x78\x07\x9f\x2c\xb7\x8f\xbb\x1c\xc8\x91\xa8\x59\xd4\xfd\x03\xf2\x37\xc3\x8b\xcd\xfa\x21\x73\x2b\x5d\xf7\x78\xde\xab\x2b\xf9\xb6\x2a\x0e\x22\x83\xca\x87\x04\x21\x80\x0e\x11\x9c\xd3\xc2\x92\x25\x05\xcf\x16\x39\x3a\xad\x0c\x87\xc2\x5a\x59\x09\x25\x53\x4c\xd9\xc5\x00\xd6\x08\x29\x15\x56\x93\x69\x5d\x47\x1b\x96\x6e\x55\xca\x6f\x90\xaf\x67\xf5\x18\x90\x0a\x29\xfb\xac\x28\xfb\xe0\x9c\x18\xb5\x0f\x44\x01\xa2\xf3\xe2\x6c\xd6\x59\xbb\x18\x23\x92\x32\xc8\x29\xb8\x8c\xde\x69\x06\x4a\x4e\x41\x64\x0f\x1c\xb8\xb8\xe0\x96\x25\xed\x6d\xf2\xca\xa7\xe0\x58\x1e\x07\xba\x99\x63\x5f\x9a\xf6\x7a\x34\x49\xa6\x10\x6b\x52\x18\x62\x71\x22\xb2\xcf\x14\x01\xb4\x2b\xc0\xaa\xe8\xc2\x2a\x23\x88\x8a\xc5\xda\xe0\xa3\x2a\xcc\x1e\x7d\x44\xaf\x05\xa3\x27\x4d\xba\x48\xc1\xa8\x14\x17\x88\x9e\x2d\x70\x36\x34\xc2\xb4\xe8\xa4\x55\x63\x24\x02\x86\x51\xb2\x70\x24\x04\xaf\xdc\xc1\x72\x79\xd1\x5e\x47\xcd\x58\xb2\xb6\x9e\x5d\x0c\x21\xaa\x18\xd8\x04\x0e\x5a\x0a\xb2\x18\x1f\x12\x81\xcf\x68\xb5\x89\xce\x99\x65\x06\xb9\xc4\x9c\x95\xac\x6f\x8b\x23\x24\x7a\x8c\x04\xac\x43\x15\xbc\xa1\x64\x00\x3c\xe1\x3e\x89\x22\x5f\x92\x8f\x9a\x28\x4a\x00\xa5\xa3\x18\xe7\x4b\x72\xac\x4c\xb1\x8a\x75\x21\x4f\xc9\x26\x63\x52\xc8\x3e\x09\x94\x02\x59\x15\x5f\x74\x01\x21\xd0\x63\x85\xb3\x24\x31\xa3\x15\xa3\x41\x82\x76\xe0\xc0\x58\x20\xcc\xfb\x24\xc9\x64\x65\xb3\x71\xa2\x33\x6b\x31\x9c\x3c\x03\x0b\x92\xf3\x39\xaa\x94\x72\x44\xd0\x2c\x2c\xc5\x69\xd2\x4b\x40\xf6\x8a\xb4\x2e\x36\x59\x96\xa8\xd6\x24\x43\x83\xb1\xdc\xcc\x9b\x6f\xd7\x32\xd2\x63\x1b\xb0\x91\xa6\xfb\xb2\x1e\x42\xc3\x87\x90\x61\x24\xed\x0d\xd6\x41\xb6\x7f\x2a\x1c\x84\x0f\xf6\xc8\x7b\xf9\xde\x36\xbf\x15\xde\x9f\xb2\xb6\x92\xed\x21\x66\x90\x2d\xef\xff\xc3\xe3\xfd\x97\x8b\xe1\xdf\xbd\xab\xee\x52\xf4\xe7\xeb\xfd\xa8\x0e\xda\x77\x08\x6d\x7b\x77\x1f\xfc\xec\x7c\x68\x18\x24\x0f\xb7\xbc\x9f\xb8\xdf\x69\xc6\x2f\x87\x2a\xf7\xbd\x31\xfa\x42\x3f\xf6\xc2\xac\x5e\x0c\x6b\x79\xf6\xe3\xec\xdf\x00\x00\x00\xff\xff\x3b\xae\x68\x39\x4b\x13\x00\x00" +var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\x4b\x53\x1c\x49\x0e\xc7\xcf\xcd\xa7\x70\xd4\xd9\x6e\x94\xef\x4c\x6e\x5e\x7b\x7d\xf3\x1e\x8c\x77\x2e\x8e\x89\x09\xa5\xa4\xc4\x1d\x34\x55\x4c\x55\x35\x8c\xc3\xe1\xef\x3e\xd1\x74\xd1\x2f\x0a\xe8\xe9\x03\x13\x70\x82\x4c\xfd\xc5\x4f\x4a\x29\x1f\xf5\xf3\x64\x52\x51\x53\xf7\x2d\x52\xdf\x55\x67\x6f\x7e\x9e\x4c\x26\xd5\xfb\xb6\x1f\x7e\x9d\x54\x5d\xb3\x68\x49\xaa\xb3\x37\xd5\xf4\x74\x6d\x78\xda\x7f\x9f\xb5\x7c\x8d\x6d\xff\xe3\xf4\x46\xda\x6e\xd1\x9d\xbe\x6f\xfb\x29\x31\x55\x6f\xef\x54\x38\x9f\x61\x27\xf7\x0e\x27\x93\xea\x0a\x67\x75\x2d\x4b\xb7\x15\x87\xe4\x4b\x51\x41\x41\xc8\xb9\x14\xbf\x92\x4c\xaa\x5e\xba\x7e\x30\x49\x89\x10\xac\x8e\x0a\x52\xcc\xc6\x70\xb5\xb4\xf8\x75\x32\x99\xfc\x5a\xda\x56\xff\x59\xb4\xb5\xb4\xcf\x20\x76\x3d\xd6\x8c\x2d\x9f\xae\xac\x9f\x82\x93\xab\xc5\x1c\xfb\x66\xe9\xb1\x2a\x91\xbd\x80\x8b\x3e\x03\x6a\xa0\x70\x4f\xb7\x15\x40\xd1\xc6\x30\x89\xc4\x58\x04\x30\xcb\x76\x00\xb3\xfa\x62\x69\x02\xbb\x3f\x61\x2c\x46\x84\xe0\x3d\x27\x93\xbd\x87\x98\xc3\x5e\x8c\x1f\x9a\xba\x97\xfa\x9f\xaf\xc3\xa0\x7b\xb1\xb5\xf8\x38\xbb\x98\xf5\x38\x7f\xbe\x64\x36\x86\x07\xb2\x19\xca\x81\x44\xb2\xd7\x0e\x3d\x00\x8e\xb0\x05\xeb\x32\x44\xc7\x58\x98\x6d\x21\xd8\x63\xfb\xef\x8d\xb4\x17\xad\x48\xfd\x0c\xda\xda\xee\xe5\xc8\xfe\xc2\xab\xeb\xb9\x7c\x6d\x2e\x9f\x85\x1b\xaa\xea\x74\x5b\xf2\x38\xe7\xe6\x5f\x7c\x9a\x37\xb7\x87\xf8\x5f\xf7\xc9\x5a\x70\x68\xab\x00\x8a\x33\x94\xbd\x98\x62\x35\x86\x34\xd2\x2a\xca\x3b\xeb\x9d\x31\x29\x81\x05\xf4\xea\xf9\x56\x31\x63\xc9\x14\x0f\x5c\xc0\x6a\x4c\x04\xd1\xc7\xbd\x64\x7e\x5a\xd4\x17\xb3\x7c\x58\x36\x37\xd1\x6e\x8b\x0e\x8d\x58\x24\xea\xe8\x7c\x2e\x1a\x44\x23\xfa\x7f\x6b\x73\xd8\x81\xff\x2c\x3d\x32\xf6\xf8\xdb\x4c\x6e\xbb\xa3\xc2\xdf\xf1\xf0\xaa\x73\x71\x7e\x3b\xeb\xe9\x7b\x6e\xb0\xe5\xa3\x32\xb1\xa5\x7f\x6d\x79\x38\xaa\x0c\x8e\x5a\xf9\x03\x8e\x48\xc5\x41\x5c\x40\x74\x2e\xaa\x60\x6d\x7c\x3e\x62\x35\x12\xb1\x37\x4a\x62\x44\x09\x45\x71\x20\xbd\xbf\x89\xfe\xef\xd3\xd7\x0f\xd8\xe3\xbc\xb9\x38\xfc\x94\xac\x4b\xff\x07\xad\x44\xa7\x1b\xfd\x81\xfb\xbe\x4d\x18\x88\xd1\xa0\x12\x21\xd2\x69\x04\xd9\x68\x4b\xc6\x8a\x22\xa7\x82\x58\xce\x0f\x91\xbf\x48\xdf\xce\xe4\x06\xe7\x47\x43\xaf\x3d\xbc\x24\xf6\x79\xdf\xb4\x52\xda\xe6\xd9\x2b\xc9\xba\xb6\x76\x44\x87\xa2\x4a\x8e\xa8\x80\x72\x2a\x31\x18\x37\xda\x06\x36\x83\xa7\x42\xa8\x38\xa2\x0d\x7e\x1f\xb5\xa9\x8f\x3a\x0f\xf6\x75\xaf\xad\x19\xce\xe5\xcf\x85\xcc\x3f\x63\x7b\x29\xfd\xf5\x1c\xef\x22\x7d\x2a\xf0\x07\xf6\x2f\x76\xf7\x59\xee\x35\x5f\xa4\x6b\xe6\x37\x87\xdf\xe1\xb7\x35\xaf\x6d\x65\xfe\x7f\xfe\xf1\xc3\xf2\x6e\xb5\x8e\xf5\xa9\xf4\x16\x85\x39\x25\x8a\x9a\x45\x8c\xd3\xfe\xb8\xa3\xc2\x5b\xe4\x62\x12\x65\x32\xce\x16\xda\x6a\xe7\x93\x3b\xa8\xaa\x96\xfe\xb6\x69\x2f\xd7\x2f\xbe\xed\xbc\x29\x1d\xa6\x30\x85\xa9\x3a\x33\xce\xaf\x36\x8b\x6d\x42\x24\x92\xae\x9b\x0e\x23\xd3\xba\x61\xe9\xa6\x4d\x5d\xe6\xcd\xed\xb4\x69\x2f\xce\x12\x00\xac\x44\x5b\xcc\x63\x3e\xb7\x78\x07\x9f\x2c\x37\x8f\xbb\x1c\xc8\x91\xa8\x59\xd4\xfd\x03\xf2\x77\xc3\xc4\x26\xcb\xcc\xad\x74\xdd\xe3\x95\x50\x5d\xca\x8f\xbb\x72\x25\x32\xa8\x7c\x48\x10\x02\xe8\x10\xc1\x39\x2d\x2c\x59\x52\xf0\x6c\x91\xa3\xd3\xca\x70\x28\xac\x95\x95\x50\x32\xc5\x94\x5d\x0c\x60\x8d\x90\x52\xe1\x2e\xb9\xab\x95\x5e\xb3\x74\x77\xcd\xf5\x0e\xf9\x6a\x56\x8f\x01\xa9\x90\xb2\xcf\x8a\xb2\x0f\xce\x89\x51\xbb\x40\x14\x20\x3a\x2f\xce\x66\x9d\xb5\x8b\x31\x22\x29\x83\x9c\x82\xcb\xe8\x9d\x66\xa0\xe4\x14\x44\xf6\xc0\x81\x8b\x0b\xcb\x25\x06\x6f\x93\x57\x3e\x05\xc7\xf2\x38\xd0\xf5\x1c\xfb\xd2\xb4\x57\xa3\x49\x32\x85\x58\x93\xc2\x10\x8b\x13\x91\x5d\xa6\x08\xa0\x5d\x01\x56\x45\x17\x56\x19\x41\x54\x2c\xd6\x06\x1f\x55\x61\xf6\xe8\x23\x7a\x2d\x18\x3d\x69\xd2\x45\x0a\x46\xa5\xb8\x40\xf4\x6c\x81\xb3\xa1\x11\xa6\x45\x27\xad\x1a\x23\x11\x30\x8c\x92\x85\x23\x21\x78\xe5\xf6\x96\xcb\x8b\xf6\x3a\x6a\xc6\x92\xb5\xf5\xec\x62\x08\x51\xc5\xc0\x26\x70\xd0\x52\x90\xc5\xf8\x90\x08\x7c\x46\xab\x4d\x74\xce\x2c\x33\xc8\x25\xe6\xac\x64\xf5\x7e\x1d\x21\xd1\x63\x24\x60\x1d\xaa\xe0\x0d\x25\x03\xe0\x09\x77\x49\x14\xf9\x92\x7c\xd4\x44\x51\x02\x28\x1d\xc5\x38\x5f\x92\x63\x65\x8a\x55\xac\x0b\x79\x4a\x36\x19\x93\x42\xf6\x49\xa0\x14\xc8\xaa\xf8\xa2\x0b\x08\x81\x1e\x2b\x9c\x25\x89\x19\xad\x18\x0d\x12\xb4\x03\x07\xc6\x02\x61\xde\x25\x49\x26\x2b\x9b\x8d\x13\x9d\x59\x8b\xe1\xe4\x19\x58\x90\x9c\xcf\x51\xa5\x94\x23\x82\x66\x61\x29\x4e\x93\x5e\x02\xb2\x57\xa4\x75\xb1\xc9\xb2\x44\xb5\x22\x19\x1a\x8c\xe5\x7a\xde\xfc\xb8\x92\x91\x1e\x5b\x83\x8d\x34\xdd\xb7\xd5\x26\xb4\x7b\x53\x78\xbb\x1e\xbc\xbf\xa8\x6d\x46\x36\xf7\xa0\x61\xec\x7d\xbb\x16\xdc\x7f\xfc\x18\xfe\xdc\x79\x2d\x2f\x87\x7e\x7f\xbb\x8b\xb1\xd7\x6f\x03\xcb\xe6\xf9\x3f\xf8\xd9\xfa\x56\x31\x8c\x3c\x3c\x35\x9f\x70\xbf\xd5\x3d\xdf\xf6\x4d\xee\x8b\x79\x74\x42\x3f\x36\x61\xee\x26\x86\xe4\x9f\xfc\x3a\xf9\x3b\x00\x00\xff\xff\x43\xcf\xa9\x27\x8e\x13\x00\x00" func flowJsonBytes() ([]byte, error) { return bindataRead( @@ -484,7 +484,7 @@ func flowJson() (*asset, error) { } info := bindataFileInfo{name: "flow.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x7c, 0xd5, 0x2a, 0xde, 0x1a, 0x3f, 0x48, 0x5c, 0x16, 0xb8, 0x30, 0x8c, 0x4f, 0xd5, 0x47, 0xbe, 0x26, 0xad, 0x46, 0x30, 0x52, 0x8d, 0x41, 0x28, 0xd9, 0x81, 0xa8, 0x54, 0xae, 0x1d, 0x96}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x69, 0xf7, 0x17, 0xe, 0xb7, 0x4e, 0x77, 0x3a, 0xaf, 0x1a, 0x4f, 0x3, 0x6c, 0xd5, 0x27, 0xa6, 0xdc, 0x85, 0x39, 0x3c, 0x83, 0x28, 0x55, 0x5a, 0x3a, 0x8d, 0x34, 0xad, 0x95, 0x46, 0xf9, 0x94}} return a, nil } diff --git a/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_collection_tokens.cdc b/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_collection_tokens.cdc index ccd8093..1df82e0 100644 --- a/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_collection_tokens.cdc +++ b/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_collection_tokens.cdc @@ -1,14 +1,13 @@ {{ define "catalog_get_collection_tokens" }} import MetadataViews from {{.MetadataViews}} import NFTCatalog from {{.NFTCatalog}} -import NFTRetrieval from {{.NFTRetrieval}} -pub struct NFT { - pub let id: UInt64 - pub let name: String - pub let description: String - pub let thumbnail: String - pub let externalURL: String +access(all) struct NFT { + access(all) let id: UInt64 + access(all) let name: String + access(all) let description: String + access(all) let thumbnail: String + access(all) let externalURL: String init( id: UInt64, @@ -25,7 +24,7 @@ pub struct NFT { } } -pub fun main(ownerAddress: Address, collectionIdentifier: String): [NFT] { +access(all) fun main(ownerAddress: Address, collectionIdentifier: String): [NFT] { let account = getAuthAccount(ownerAddress) let value = NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier)! @@ -33,18 +32,45 @@ pub fun main(ownerAddress: Address, collectionIdentifier: String): [NFT] { let tempPathStr = "catalog".concat(keyHash) let tempPublicPath = PublicPath(identifier: tempPathStr)! - account.link<&{MetadataViews.ResolverCollection}>( - tempPublicPath, - target: value.collectionData.storagePath - ) - let collectionCap = account.getCapability<&AnyResource{MetadataViews.ResolverCollection}>(tempPublicPath) if !collectionCap.check() { return [] } - let views = NFTRetrieval.getNFTViewsFromCap(collectionIdentifier: collectionIdentifier, collectionCap: collectionCap) + fun hasMultipleCollectionsFn(nftTypeIdentifier : String): Bool { + let typeCollections = NFTCatalog.getCollectionsForType(nftTypeIdentifier: nftTypeIdentifier)! + var numberOfCollections = 0 + for identifier in typeCollections.keys { + let existence = typeCollections[identifier]! + if existence { + numberOfCollections = numberOfCollections + 1 + } + if numberOfCollections > 1 { + return true + } + } + return false + } + + let views : [MetadataViews.NFTView] = [] + + // Check if we have multiple collections for the NFT type... + let hasMultipleCollections = self.hasMultipleCollections(nftTypeIdentifier : value.nftType.identifier) + + if collectionCap.check() { + let collectionRef = collectionCap.borrow()! + for id in collectionRef.getIDs() { + let nftResolver = collectionRef.borrowViewResolver(id: id) + let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver!) + if !hasMultipleCollections { + views.append(nftViews) + } else if nftViews.display!.name == value.collectionDisplay.name { + views.append(nftViews) + } + + } + } let items: [NFT] = [] @@ -70,4 +96,4 @@ pub fun main(ownerAddress: Address, collectionIdentifier: String): [NFT] { return items } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_collections.cdc b/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_collections.cdc index b3ff026..368bfa7 100644 --- a/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_collections.cdc +++ b/lib/go/iinft/scripts/templates/scripts/nft_catalog/get_collections.cdc @@ -1,16 +1,16 @@ {{ define "catalog_get_collections" }} import MetadataViews from {{.MetadataViews}} import NFTCatalog from {{.NFTCatalog}} -import NFTRetrieval from {{.NFTRetrieval}} +import ViewResolver from {{.ViewResolver}} -pub struct NFTCollection { - pub let id: String - pub let name: String - pub let description: String - pub let squareImage: String - pub let bannerImage: String - pub let externalURL: String - pub let count: Number +access(all) struct NFTCollection { + access(all) let id: String + access(all) let name: String + access(all) let description: String + access(all) let squareImage: String + access(all) let bannerImage: String + access(all) let externalURL: String + access(all) let count: Number init( id: String, @@ -31,28 +31,50 @@ pub struct NFTCollection { } } -pub fun main(ownerAddress: Address): {String: NFTCollection} { - let account = getAuthAccount(ownerAddress) +access(all) fun main(ownerAddress: Address): {String: NFTCollection} { + let account = getAccount(ownerAddress) let collections: {String: NFTCollection} = {} + fun hasMultipleCollectionsFn(nftTypeIdentifier : String): Bool { + let typeCollections = NFTCatalog.getCollectionsForType(nftTypeIdentifier: nftTypeIdentifier)! + var numberOfCollections = 0 + for identifier in typeCollections.keys { + let existence = typeCollections[identifier]! + if existence { + numberOfCollections = numberOfCollections + 1 + } + if numberOfCollections > 1 { + return true + } + } + return false + } + NFTCatalog.forEachCatalogKey(fun (collectionIdentifier: String):Bool { let value = NFTCatalog.getCatalogEntry(collectionIdentifier: collectionIdentifier)! - let keyHash = String.encodeHex(HashAlgorithm.SHA3_256.hash(collectionIdentifier.utf8)) - let tempPathStr = "catalog".concat(keyHash) - let tempPublicPath = PublicPath(identifier: tempPathStr)! - account.link<&{MetadataViews.ResolverCollection}>( - tempPublicPath, - target: value.collectionData.storagePath - ) - - let collectionCap = account.getCapability<&AnyResource{MetadataViews.ResolverCollection}>(tempPublicPath) + let collectionCap = account.capabilities.get<&{ViewResolver.ResolverCollection}>(value.collectionData.publicPath) if !collectionCap.check() { return true } - let count = NFTRetrieval.getNFTCountFromCap(collectionIdentifier: collectionIdentifier, collectionCap: collectionCap) + // Check if we have multiple collections for the NFT type... + let hasMultipleCollections = hasMultipleCollectionsFn(nftTypeIdentifier : value.nftType.identifier) + + var count : UInt64 = 0 + let collectionRef = collectionCap.borrow()! + if !hasMultipleCollections { + count = UInt64(collectionRef.getIDs().length) + } else { + for id in collectionRef.getIDs() { + let nftResolver = collectionRef.borrowViewResolver(id: id) + let nftViews = MetadataViews.getNFTView(id: id, viewResolver: nftResolver!) + if nftViews.display!.name == value.collectionDisplay.name { + count = count + 1 + } + } + } if count != 0 { collections[collectionIdentifier] = NFTCollection( @@ -70,4 +92,4 @@ pub fun main(ownerAddress: Address): {String: NFTCollection} { return collections } -{{ end }} \ No newline at end of file +{{ end }} diff --git a/scripts/get_fusd_balance.cdc b/scripts/get_fusd_balance.cdc deleted file mode 100644 index 538696b..0000000 --- a/scripts/get_fusd_balance.cdc +++ /dev/null @@ -1,13 +0,0 @@ -import FungibleToken from "../contracts/standard/FungibleToken.cdc" -import FUSD from "../contracts/standard/FUSD.cdc" - -pub fun main(address: Address): UFix64 { - let account = getAccount(address) - - let vaultRef = account - .getCapability(/public/fusdBalance) - .borrow<&FUSD.Vault{FungibleToken.Balance}>() - ?? panic("Could not borrow Balance capability") - - return vaultRef.balance -} diff --git a/scripts/get_switchboard_vault_types.cdc b/scripts/get_switchboard_vault_types.cdc new file mode 100644 index 0000000..650045a --- /dev/null +++ b/scripts/get_switchboard_vault_types.cdc @@ -0,0 +1,14 @@ +import FungibleTokenSwitchboard from "../contracts/standard/FungibleTokenSwitchboard.cdc" +import FungibleToken from "../contracts/standard/FungibleToken.cdc" + +access(all) fun main(account: Address): [Type] { + let acct = getAccount(account) + // Get a reference to the switchboard conforming to FungibleToken.Receiver + let switchboardRef = acct.capabilities.borrow<&{FungibleToken.Receiver}>(FungibleTokenSwitchboard.ReceiverPublicPath) + + if switchboardRef == nil { + return [] + } + + return switchboardRef!.getSupportedVaultTypes().keys +} diff --git a/transactions/account_royalty_receiver_setup.cdc b/transactions/account_royalty_receiver_setup.cdc index 636bc17..ffe6153 100644 --- a/transactions/account_royalty_receiver_setup.cdc +++ b/transactions/account_royalty_receiver_setup.cdc @@ -1,93 +1,112 @@ import FungibleTokenSwitchboard from "../contracts/standard/FungibleTokenSwitchboard.cdc" import FungibleToken from "../contracts/standard/FungibleToken.cdc" +import FungibleTokenMetadataViews from "../contracts/standard/FungibleTokenMetadataViews.cdc" import FlowToken from "../contracts/standard/FlowToken.cdc" -import FUSD from "../contracts/standard/FUSD.cdc" import MetadataViews from "../contracts/standard/MetadataViews.cdc" -transaction { +transaction(extraTokenContractAddresses: [Address], extraTokenContractNames: [String]) { - let flowTokenVaultCapabilty: Capability<&{FungibleToken.Receiver}> - let fusdTokenVaultCapabilty: Capability<&{FungibleToken.Receiver}> - let switchboardRef: &FungibleTokenSwitchboard.Switchboard + let tokenVaultCapabilities: [Capability<&{FungibleToken.Receiver}>] + let switchboardRef: auth(FungibleTokenSwitchboard.Owner) &FungibleTokenSwitchboard.Switchboard - prepare(acct: AuthAccount) { - // Check if the account already has a Switchboard resource - if acct.borrow<&FungibleTokenSwitchboard.Switchboard> - (from: FungibleTokenSwitchboard.StoragePath) == nil { - - // Create a new Switchboard resource and put it into storage - acct.save( - <- FungibleTokenSwitchboard.createSwitchboard(), - to: FungibleTokenSwitchboard.StoragePath) - - // Create a public capability to the Switchboard exposing the deposit - // function through the {FungibleToken.Receiver} interface - acct.link<&FungibleTokenSwitchboard.Switchboard{FungibleToken.Receiver}>( - FungibleTokenSwitchboard.ReceiverPublicPath, - target: FungibleTokenSwitchboard.StoragePath - ) + prepare(signer: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability, UnpublishCapability) &Account) { + assert(extraTokenContractAddresses.length == extraTokenContractNames.length, message: "lengths of extraTokenContractAddresses and extraTokenContractNames should be equal") - // Create a public capability to the Switchboard exposing both the - // deposit function and the getVaultCapabilities function through the - // {FungibleTokenSwitchboard.SwitchboardPublic} interface - acct.link<&FungibleTokenSwitchboard.Switchboard{FungibleTokenSwitchboard.SwitchboardPublic}>( - FungibleTokenSwitchboard.PublicPath, - target: FungibleTokenSwitchboard.StoragePath - ) + // Check if the account already has a Switchboard resource + if signer.storage.borrow<&FungibleTokenSwitchboard.Switchboard>(from: FungibleTokenSwitchboard.StoragePath) == nil { + // Create a new Switchboard and save it in storage + signer.storage.save(<-FungibleTokenSwitchboard.createSwitchboard(), to: FungibleTokenSwitchboard.StoragePath) + // Clear existing Capabilities at canonical paths + signer.capabilities.unpublish(FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.unpublish(FungibleTokenSwitchboard.PublicPath) + // Issue Receiver & Switchboard Capabilities + let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + let switchboardPublicCap = signer.capabilities.storage.issue<&{FungibleTokenSwitchboard.SwitchboardPublic, FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + // Publish Capabilities + signer.capabilities.publish(receiverCap, at: FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.publish(switchboardPublicCap, at: FungibleTokenSwitchboard.PublicPath) } - // Get a reference to the signers switchboard - self.switchboardRef = acct.borrow<&FungibleTokenSwitchboard.Switchboard> - (from: FungibleTokenSwitchboard.StoragePath) + // Get a reference to the account's switchboard + self.switchboardRef = signer.storage.borrow( + from: FungibleTokenSwitchboard.StoragePath) ?? panic("Could not borrow reference to switchboard") - if acct.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) == nil { + if signer.storage.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) == nil { // Create a new flowToken Vault and put it in storage - acct.save(<-FlowToken.createEmptyVault(), to: /storage/flowTokenVault) + signer.storage.save(<-FlowToken.createEmptyVault(vaultType: Type<@FlowToken.Vault>()), to: /storage/flowTokenVault) // Create a public capability to the Vault that only exposes // the deposit function through the Receiver interface - acct.link<&FlowToken.Vault{FungibleToken.Receiver}>( - /public/flowTokenReceiver, - target: /storage/flowTokenVault + let vaultCap = signer.capabilities.storage.issue<&FlowToken.Vault>( + /storage/flowTokenVault + ) + + signer.capabilities.publish( + vaultCap, + at: /public/flowTokenReceiver ) // Create a public capability to the Vault that only exposes // the balance field through the Balance interface - acct.link<&FlowToken.Vault{FungibleToken.Balance}>( - /public/flowTokenBalance, - target: /storage/flowTokenVault + let balanceCap = signer.capabilities.storage.issue<&FlowToken.Vault>( + /storage/flowTokenVault + ) + + signer.capabilities.publish( + balanceCap, + at: /public/flowTokenBalance ) } - self.flowTokenVaultCapabilty = - acct.getCapability<&{FungibleToken.Receiver}>(/public/flowTokenReceiver) + self.tokenVaultCapabilities = [signer.capabilities.get<&{FungibleToken.Receiver}>(/public/flowTokenReceiver)] - if(acct.borrow<&FUSD.Vault>(from: /storage/fusdVault) == nil) { - // Create a new FUSD Vault and put it in storage - acct.save(<-FUSD.createEmptyVault(), to: /storage/fusdVault) + var i = 0 + for contractAddress in extraTokenContractAddresses { + let contractName = extraTokenContractNames[i] - // Create a public capability to the Vault that only exposes - // the deposit function through the Receiver interface - acct.link<&FUSD.Vault{FungibleToken.Receiver}>( - /public/fusdReceiver, - target: /storage/fusdVault - ) + // Borrow a reference to the vault stored on the passed account at the passed publicPath + let resolverRef = getAccount(contractAddress) + .contracts.borrow<&{FungibleToken}>(name: contractName) + ?? panic("Could not borrow FungibleToken reference to the contract. Make sure the provided contract name (" + .concat(contractName).concat(") and address (").concat(contractAddress.toString()).concat(") are correct!")) - // Create a public capability to the Vault that only exposes - // the balance field through the Balance interface - acct.link<&FUSD.Vault{FungibleToken.Balance}>( - /public/fusdBalance, - target: /storage/fusdVault - ) - } + // Use that reference to retrieve the FTView + let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ?? panic("Could not resolve FTVaultData view. The ".concat(contractName) + .concat(" contract needs to implement the FTVaultData Metadata view in order to execute this transaction.")) + + if signer.storage.borrow<&{FungibleToken.Vault}>(from: ftVaultData.storagePath) == nil { + // Create a new empty vault using the createEmptyVault function inside the FTVaultData + let emptyVault <-ftVaultData.createEmptyVault() + + // Save it to the account + signer.storage.save(<-emptyVault, to: ftVaultData.storagePath) + + // Create a public capability for the vault which includes the .Resolver interface + let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath) + signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath) - self.fusdTokenVaultCapabilty = - acct.getCapability<&{FungibleToken.Receiver}>(/public/fusdReceiver) + // Create a public capability for the vault exposing the receiver interface + let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath) + signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath) + } + + let cap = signer.capabilities.get<&{FungibleToken.Receiver}>(ftVaultData.receiverPath) + self.tokenVaultCapabilities.append(cap) + + i = i + 1 + } } execute { - self.switchboardRef.addNewVault(capability: self.flowTokenVaultCapabilty) - self.switchboardRef.addNewVault(capability: self.fusdTokenVaultCapabilty) + for cap in self.tokenVaultCapabilities { + self.switchboardRef.addNewVault(capability: cap) + } + } } diff --git a/transactions/account_setup_fusd.cdc b/transactions/account_setup_fusd.cdc deleted file mode 100644 index 08c2a38..0000000 --- a/transactions/account_setup_fusd.cdc +++ /dev/null @@ -1,32 +0,0 @@ -// This transaction configures the signer's account with an empty FUSD vault. - -import FungibleToken from "../contracts/standard/FungibleToken.cdc" -import FUSD from "../contracts/standard/FUSD.cdc" - -transaction { - - prepare(signer: AuthAccount) { - - // It's OK if the account already has a Vault, but we don't want to replace it - if(signer.borrow<&FUSD.Vault>(from: /storage/fusdVault) != nil) { - return - } - - // Create a new FUSD Vault and put it in storage - signer.save(<-FUSD.createEmptyVault(), to: /storage/fusdVault) - - // Create a public capability to the Vault that only exposes - // the deposit function through the Receiver interface - signer.link<&FUSD.Vault{FungibleToken.Receiver}>( - /public/fusdReceiver, - target: /storage/fusdVault - ) - - // Create a public capability to the Vault that only exposes - // the balance field through the Balance interface - signer.link<&FUSD.Vault{FungibleToken.Balance}>( - /public/fusdBalance, - target: /storage/fusdVault - ) - } -} diff --git a/transactions/account_switchboard_setup.cdc b/transactions/account_switchboard_setup.cdc index e326eb8..9c2890e 100644 --- a/transactions/account_switchboard_setup.cdc +++ b/transactions/account_switchboard_setup.cdc @@ -4,31 +4,24 @@ import MetadataViews from "../contracts/standard/MetadataViews.cdc" transaction { - prepare(acct: AuthAccount) { + prepare(signer: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability, UnpublishCapability) &Account) { // Check if the account already has a Switchboard resource - if acct.borrow<&FungibleTokenSwitchboard.Switchboard> - (from: FungibleTokenSwitchboard.StoragePath) == nil { - - // Create a new Switchboard resource and put it into storage - acct.save( - <- FungibleTokenSwitchboard.createSwitchboard(), - to: FungibleTokenSwitchboard.StoragePath) - - // Create a public capability to the Switchboard exposing the deposit - // function through the {FungibleToken.Receiver} interface - acct.link<&FungibleTokenSwitchboard.Switchboard{FungibleToken.Receiver}>( - FungibleTokenSwitchboard.ReceiverPublicPath, - target: FungibleTokenSwitchboard.StoragePath - ) - - // Create a public capability to the Switchboard exposing both the - // deposit function and the getVaultCapabilities function through the - // {FungibleTokenSwitchboard.SwitchboardPublic} interface - acct.link<&FungibleTokenSwitchboard.Switchboard{FungibleTokenSwitchboard.SwitchboardPublic}>( - FungibleTokenSwitchboard.PublicPath, - target: FungibleTokenSwitchboard.StoragePath - ) + if signer.storage.borrow<&FungibleTokenSwitchboard.Switchboard>(from: FungibleTokenSwitchboard.StoragePath) == nil { + // Create a new Switchboard and save it in storage + signer.storage.save(<-FungibleTokenSwitchboard.createSwitchboard(), to: FungibleTokenSwitchboard.StoragePath) + // Clear existing Capabilities at canonical paths + signer.capabilities.unpublish(FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.unpublish(FungibleTokenSwitchboard.PublicPath) + // Issue Receiver & Switchboard Capabilities + let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + let switchboardPublicCap = signer.capabilities.storage.issue<&{FungibleTokenSwitchboard.SwitchboardPublic, FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + // Publish Capabilities + signer.capabilities.publish(receiverCap, at: FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.publish(switchboardPublicCap, at: FungibleTokenSwitchboard.PublicPath) } - } } diff --git a/transactions/transfer_flow_tokens.cdc b/transactions/transfer_flow_tokens.cdc index 06a5df8..e9850ed 100644 --- a/transactions/transfer_flow_tokens.cdc +++ b/transactions/transfer_flow_tokens.cdc @@ -1,16 +1,18 @@ -import "../contracts/standard/FungibleToken.cdc" -import "../contracts/standard/FlowToken.cdc" +import FungibleToken from "../contracts/standard/FungibleToken.cdc" +import FlowToken from "../contracts/standard/FlowToken.cdc" transaction(amount: UFix64, to: Address) { // The Vault resource that holds the tokens that are being transferred - let sentVault: @FungibleToken.Vault + let sentVault: @{FungibleToken.Vault} - prepare(signer: AuthAccount) { + prepare(signer: auth(BorrowValue) &Account) { // Get a reference to the signer's stored vault - let vaultRef = signer.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) - ?? panic("Could not borrow reference to the owner's Vault!") + let vaultRef = signer.storage.borrow(from: /storage/flowTokenVault) + ?? panic("The signer does not store a FlowToken Vault object at the path " + .concat("/storage/flowTokenVault. ") + .concat("The signer must initialize their account with this vault first!")) // Withdraw tokens from the signer's stored vault self.sentVault <- vaultRef.withdraw(amount: amount) @@ -20,11 +22,13 @@ transaction(amount: UFix64, to: Address) { // Get a reference to the recipient's Receiver let receiverRef = getAccount(to) - .getCapability(/public/flowTokenReceiver) - .borrow<&{FungibleToken.Receiver}>() - ?? panic("Could not borrow receiver reference to the recipient's Vault") + .capabilities.borrow<&{FungibleToken.Receiver}>(/public/flowTokenReceiver) + ?? panic("Could not borrow a Receiver reference to the FlowToken Vault in account " + .concat(to.toString()).concat(" at path /public/flowTokenReceiver") + .concat(". Make sure you are sending to an address that has ") + .concat("a FlowToken Vault set up properly at the specified path.")) // Deposit the withdrawn tokens in the recipient's receiver receiverRef.deposit(from: <-self.sentVault) } -} \ No newline at end of file +} From 037213a782827d875a3fe18a85bea977b372c057 Mon Sep 17 00:00:00 2001 From: sequel21 Date: Tue, 12 Nov 2024 00:21:50 +0000 Subject: [PATCH 10/12] Fixes after testing on testnet --- contracts/DigitalArt.cdc | 15 ++- flow.json | 6 +- flow.testnet.json | 103 +++++++++++++----- lib/go/iinft/internal/assets/assets.go | 10 +- .../account_add_flow_royalty_receiver.cdc | 73 +++++++++++++ 5 files changed, 166 insertions(+), 41 deletions(-) create mode 100644 transactions/account_add_flow_royalty_receiver.cdc diff --git a/contracts/DigitalArt.cdc b/contracts/DigitalArt.cdc index a7639c0..5fb2081 100644 --- a/contracts/DigitalArt.cdc +++ b/contracts/DigitalArt.cdc @@ -32,8 +32,6 @@ contract DigitalArt: NonFungibleToken { let CollectionPublicPath: PublicPath access(all) let AdminStoragePath: StoragePath - access(all) - let AdminPrivatePath: PrivatePath // The total number of DigitalArt NFTs that have been minted // @@ -594,16 +592,23 @@ contract DigitalArt: NonFungibleToken { // init() { // Set our named paths - self.CollectionStoragePath = /storage/sequelDigitalArtCollection - self.CollectionPublicPath = /public/sequelDigitalArtCollection + self.CollectionStoragePath = /storage/sequelDigitalArtCollectionV2 + self.CollectionPublicPath = /public/sequelDigitalArtCollectionV2 self.AdminStoragePath = /storage/digitalArtAdmin - self.AdminPrivatePath = /private/digitalArtAdmin // Initialize the total supply self.totalSupply = 0 self.masters = {} + // Create a Collection resource and save it to storage + let collection <- create Collection() + self.account.storage.save(<-collection, to: self.CollectionStoragePath) + + // create a public capability for the collection + let collectionCap = self.account.capabilities.storage.issue<&DigitalArt.Collection>(self.CollectionStoragePath) + self.account.capabilities.publish(collectionCap, at: self.CollectionPublicPath) + // Create a Admin resource and save it to storage let admin <- create Admin() self.account.storage.save(<-admin, to: self.AdminStoragePath) diff --git a/flow.json b/flow.json index d816fca..6780f9e 100644 --- a/flow.json +++ b/flow.json @@ -27,14 +27,14 @@ "source": "./contracts/DigitalArt.cdc", "aliases": { "mainnet": "3cb7ceeb625a600a", - "testnet": "745b085dafdd4fc0" + "testnet": "fdf325e9204fc94a" } }, "Evergreen": { "source": "./contracts/Evergreen.cdc", "aliases": { "mainnet": "3cb7ceeb625a600a", - "testnet": "745b085dafdd4fc0" + "testnet": "fdf325e9204fc94a" } }, "ExampleToken": { @@ -121,7 +121,7 @@ "source": "./contracts/SequelMarketplace.cdc", "aliases": { "mainnet": "3cb7ceeb625a600a", - "testnet": "745b085dafdd4fc0" + "testnet": "fdf325e9204fc94a" } }, "ViewResolver": { diff --git a/flow.testnet.json b/flow.testnet.json index 7e7c4f4..c25cf9c 100644 --- a/flow.testnet.json +++ b/flow.testnet.json @@ -1,52 +1,100 @@ { "contracts": { - "FungibleToken": { - "source": "./contracts/standard/FungibleToken.cdc", + "Art": { + "source": "./contracts/thirdparty/versus/Art.cdc", + "aliases": { + "mainnet": "d796ff17107bbff6", + "testnet": "99ca04281098b33d" + } + }, + "Burner": { + "source": "./contracts/standard/Burner.cdc", "aliases": { - "testnet": "0x9a0766d93b6608b7", - "mainnet" :"0xf233dcee88fe0abe" + "mainnet": "f233dcee88fe0abe", + "testnet": "9a0766d93b6608b7" + } + }, + "Content": { + "source": "./contracts/thirdparty/versus/Content.cdc", + "aliases": { + "mainnet": "d796ff17107bbff6", + "testnet": "99ca04281098b33d" } }, "FlowToken": { "source": "./contracts/standard/FlowToken.cdc", "aliases": { - "testnet": "0x7e60df042a9c0868", - "mainnet" : "0x1654653399040a61" + "mainnet": "1654653399040a61", + "testnet": "7e60df042a9c0868" } }, - "NonFungibleToken": { - "source": "./contracts/standard/NonFungibleToken.cdc", + "FungibleToken": { + "source": "./contracts/standard/FungibleToken.cdc", "aliases": { - "testnet": "0x631e88ae7f1d7c20", - "mainnet": "0x1d7e57aa55817448" + "mainnet": "f233dcee88fe0abe", + "testnet": "9a0766d93b6608b7" } }, - "NFTStorefront": { - "source": "./contracts/standard/NFTStorefront.cdc", + "FungibleTokenMetadataViews": { + "source": "./contracts/standard/FungibleTokenMetadataViews.cdc", + "aliases": { + "mainnet": "f233dcee88fe0abe", + "testnet": "9a0766d93b6608b7" + } + }, + "FungibleTokenSwitchboard": { + "source": "./contracts/standard/FungibleTokenSwitchboard.cdc", "aliases": { - "testnet": "0x94b06cfca1d8a476", - "mainnet": "0x4eb8a10cb9f87357" + "mainnet": "f233dcee88fe0abe", + "testnet": "9a0766d93b6608b7" } }, "MetadataViews": { "source": "./contracts/standard/MetadataViews.cdc", "aliases": { - "testnet": "0x631e88ae7f1d7c20", - "mainnet": "0x1d7e57aa55817448" + "mainnet": "1d7e57aa55817448", + "testnet": "631e88ae7f1d7c20" } }, - "FungibleTokenSwitchboard": { - "source": "./contracts/standard/FungibleTokenSwitchboard.cdc", + "NFTCatalog": { + "source": "./contracts/thirdparty/nft_catalog/NFTCatalog.cdc", + "aliases": { + "mainnet": "49a7cda3a1eecc29", + "testnet": "324c34e1c517e4db" + } + }, + "NFTRetrieval": { + "source": "./contracts/thirdparty/nft_catalog/NFTRetrieval.cdc", + "aliases": { + "mainnet": "49a7cda3a1eecc29", + "testnet": "324c34e1c517e4db" + } + }, + "NFTStorefront": { + "source": "./contracts/standard/NFTStorefront.cdc", + "aliases": { + "mainnet": "4eb8a10cb9f87357", + "testnet": "94b06cfca1d8a476" + } + }, + "NonFungibleToken": { + "source": "./contracts/standard/NonFungibleToken.cdc", + "aliases": { + "mainnet": "1d7e57aa55817448", + "testnet": "631e88ae7f1d7c20" + } + }, + "ViewResolver": { + "source": "./contracts/standard/ViewResolver.cdc", "aliases": { - "testnet": "0x745b085dafdd4fc0", - "mainnet": "0x3cb7ceeb625a600a" + "mainnet": "1d7e57aa55817448", + "testnet": "631e88ae7f1d7c20" } }, - "FUSD": { - "source": "./contracts/standard/FUSD.cdc", + "USDCFlow": { "aliases": { - "testnet": "0xe223d8a629e49c68", - "mainnet": "0x3c5959b568896393" + "mainnet": "f1ab99c82dee3526", + "testnet": "64adf39cbc354fcb" } }, "Evergreen": "./contracts/Evergreen.cdc", @@ -59,11 +107,11 @@ }, "accounts": { "testnet-sequel-admin": { - "address": "0x745b085dafdd4fc0", + "address": "fdf325e9204fc94a", "key": "${TESTNET_SEQUEL_ADMIN}" }, "testnet-sequel-platform" : { - "address": "0x28e872069e9ca2b4", + "address": "28cfd058c66054a5", "key": "${TESTNET_SEQUEL_PLATFORM}" } }, @@ -72,8 +120,7 @@ "testnet-sequel-admin": [ "Evergreen", "DigitalArt", - "SequelMarketplace", - "FungibleTokenSwitchboard" + "SequelMarketplace" ] } } diff --git a/lib/go/iinft/internal/assets/assets.go b/lib/go/iinft/internal/assets/assets.go index 2f449e5..0f307ae 100644 --- a/lib/go/iinft/internal/assets/assets.go +++ b/lib/go/iinft/internal/assets/assets.go @@ -1,6 +1,6 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// contracts/DigitalArt.cdc (20.781kB) +// contracts/DigitalArt.cdc (21.13kB) // contracts/Evergreen.cdc (5.401kB) // contracts/SOURCES.md (1.569kB) // contracts/SequelMarketplace.cdc (10.012kB) @@ -88,7 +88,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _contractsDigitalartCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x7c\x5f\x73\xdb\xb6\xb2\xf8\x73\xfd\x29\x36\x7a\x48\xa4\xf9\xc9\x52\x3a\x73\xe6\x77\x67\x34\x51\xd3\x34\x8e\xef\xf1\xbd\x8d\x9b\x89\xdd\xf6\xa1\x93\x39\x07\x22\x57\x12\x6a\x0a\x60\x01\xd0\x8a\xea\xe3\xef\x7e\x07\xff\x48\x80\x04\x25\x3a\xed\xed\xdc\x93\x87\xd6\x22\xb1\x8b\xc5\xee\x62\xff\x61\x41\xba\x2b\xb9\x50\x70\xcd\xd9\x65\xc5\x36\x74\x55\xe0\x2d\xbf\x43\x06\x6b\xc1\x77\x30\x9a\xcd\xa5\x22\x2c\x27\x22\x9f\xb7\x47\xcc\xb2\x3c\x1b\x9d\x39\xf0\x9f\x28\xee\x3f\xa2\xe4\xc5\x3d\x0a\x07\xda\x40\x86\x2f\x23\xa8\xf7\xa8\x48\x4e\x14\xd1\x03\x64\x77\xc6\xe8\x75\x04\xf8\xee\x1e\xc5\x46\x60\x40\x66\xfd\xc4\x8e\x3b\x9b\xcf\xe1\x82\x6e\xa8\x22\xc5\x1b\xa1\x20\xc7\x35\x65\x28\xe1\xfa\xf2\x56\x82\xda\x12\x05\x02\x4b\x81\x12\x99\x82\xdc\x0e\x03\x22\x14\x50\x06\x37\xf8\x5b\x85\xc5\x4c\x23\xb8\x41\x84\xad\x52\xa5\x5c\xcc\xe7\xd2\x3e\x96\x25\xc9\x10\xd6\x5c\xc0\x8e\x0b\x84\x1c\x15\xa1\x85\xd4\xa3\x5b\x33\x2a\xcd\x22\x09\xb2\x2a\x5b\x04\x9b\x17\xe0\xd7\xe8\x21\x6f\x78\x25\x32\x5c\xd4\xd3\x6d\xa8\xda\x56\xab\x59\xc6\x77\xf3\x92\x96\x82\x28\x74\x14\x9c\xaf\x0b\xbe\x3f\xcf\x38\x53\x82\x64\x4a\x6a\x70\x92\x65\x28\xe5\x98\x14\xc5\xe4\xcc\xbf\x08\x48\x59\x74\x65\xfb\x70\x76\x06\x00\x30\x9f\x6b\xba\x98\x92\xee\x97\xf9\x5f\x88\x4d\xff\x46\x3d\x02\xde\x3a\xbc\x57\x8c\x2a\x4a\x0a\xfa\x3b\xe6\xe3\xc9\x91\xf1\x3f\x53\xb5\xcd\x05\xd9\x8f\x69\xbe\x80\x1f\xaf\x98\xfa\xff\x7f\x9b\x1a\x59\x2d\xe0\x4d\x9e\x0b\x94\xf2\xf5\x31\xf0\x0b\x2c\xb9\xa4\x2a\x82\x56\x7c\x18\xec\x7b\xca\x14\xe6\x11\x28\x91\x12\xd5\x02\x6e\x94\xa0\x6c\x33\x05\xcc\xa9\xa2\x9c\x35\xef\x77\x3c\xbf\xba\xf0\x3f\x27\x35\x73\xae\xc9\x0e\x73\xf8\x40\xd4\xf6\x28\x87\x0a\xd4\xfc\x29\x0a\xcc\x34\xd6\x1b\xc5\x05\xd9\xa0\x86\xd2\x33\xd6\x3f\x06\x80\x7e\xa8\x56\x05\xcd\x2c\x64\xf3\x77\x2f\xe0\x9b\x7c\x47\x9f\x3e\x9d\x81\xfa\x20\xe8\x3d\x51\x0e\x2a\xf8\x51\x2f\xfd\x76\x8b\xa0\xb8\xde\x16\xac\xda\xad\x50\x00\x5f\x87\xda\xdd\xec\xa3\x2d\xb9\x47\x58\x69\xc5\xde\x19\xbe\x1f\x63\xd4\x3d\x11\x16\xe9\x4d\x55\x96\xc5\xc1\x33\xbc\x9e\xf4\x27\x22\x28\x59\x15\x08\x92\xfe\x8e\x90\x53\xc3\x14\x22\x0e\x7a\xf2\xf7\x44\x2a\x14\x20\x50\x9a\x9d\x22\xc3\x09\x24\x16\xeb\x66\x86\x9d\x19\x29\x17\xf0\x60\xe5\xbd\x70\xb0\x8f\xf5\x3c\x0e\x17\x32\x3d\x99\x34\x84\x9f\x73\x76\x9e\xe3\x8e\xb0\x1c\xd6\x15\xb3\x13\x17\x54\x1d\x40\x3f\xf1\xd6\x83\x38\xdc\x90\xf1\xd2\x10\x45\xec\x6e\xf6\x78\x0d\x43\xa8\x84\x4a\x62\x0e\x8a\x1b\xc4\x40\x02\x0e\x3a\xc5\x93\x30\x2e\xe8\x8e\x2a\xcc\x61\x75\x80\x9d\xb3\x72\xb3\x1d\xf9\xfc\xce\x0d\x98\xcc\x3c\xce\x1f\x58\x86\x40\x8a\xa2\x81\x25\x02\x1d\xaf\xa7\xa0\xb6\xe8\x69\xa2\x12\x5e\x64\x05\x97\x98\xbf\x80\x55\xa5\x0d\xdc\x8e\x50\x26\x81\xb3\xf3\x6c\x4b\x68\x43\x24\x87\x52\xd8\x9d\x22\xf0\x5c\x23\xa2\x6c\x63\x05\xba\xa7\x6a\x6b\x50\x4a\xb2\x43\xbb\x69\xe0\xea\x62\x76\x4c\xa4\x52\x89\x2a\x53\x9e\xa3\x0f\xe6\x59\x6a\x5c\x2d\x1c\xb7\xd8\x45\x6d\xfb\x5f\x9f\x84\x41\x6f\x3b\x3f\x08\xbe\xa6\x05\x2e\x1a\x6b\x3a\x73\x8f\x4e\x23\x61\xf8\x59\xbd\x8b\xf7\xfd\x49\x18\xcb\xce\x05\x7c\xc7\x79\x71\x56\xbf\xa1\x8c\xaa\x71\x77\x1d\xd3\x21\x74\x4e\x20\xe0\x91\xe1\x1f\x16\xeb\x99\x47\x06\xcb\x9a\x3f\xdd\x41\x6d\xec\xb0\xec\x4c\xd8\x05\x0a\x56\x0d\x4b\xf8\xba\x3b\xc0\x2e\x11\x96\xb0\x26\x85\x6c\x10\x3c\x9e\x1d\x65\xce\xba\x62\xc0\x70\xef\x30\x5f\x5d\x8c\x27\xe0\x99\xda\x5a\x9f\xb6\x38\xf7\xa4\x80\x65\x87\x9e\x53\xc4\x76\x1e\xfd\x3f\x37\xc3\xf8\xeb\x49\x04\x2b\x50\x55\x82\xe9\x59\x9e\x42\x3e\xb9\x27\xb4\xd0\xfb\xdf\x6f\xb9\xfe\x35\xd0\x35\x3c\x0b\x99\xf5\xfc\x79\x2c\xb6\x67\xc1\xce\x85\x6f\x12\x94\xc7\xe8\x02\x9a\xfb\xd1\x9c\x0f\x5f\xff\x23\x60\x21\xb1\x7f\x92\x97\xf1\xe8\xa7\x30\x69\x83\xca\xab\xb7\x61\x4f\xbd\x67\x5b\xb3\xa5\x96\xf3\xc4\x79\xde\xb5\x74\xd9\xcc\xd7\xdd\xe7\x47\x26\xee\xdd\x0d\x01\x01\xf3\x39\xfc\x8c\x76\x5f\x7b\x3f\x01\x64\xad\x4d\x57\x8f\x89\x05\xca\xa4\x42\x92\x6b\xeb\x9d\x63\x81\xc6\x58\xee\xbc\x2f\xca\xb8\xc8\x65\x88\xfc\x76\x4b\x25\x94\x82\xeb\x65\x02\x32\x59\x09\x94\xc0\xf8\x8a\xe7\x07\xc8\x08\x33\x3b\xd6\xba\x05\x17\x1f\x1e\x33\xb9\xc7\x38\x66\x96\x30\x9e\x9c\xb0\x26\x8c\x16\x83\x0c\x49\x72\x5c\xbc\x1d\x5f\x1e\xb1\x1d\x4a\x54\x21\xb7\x03\x9e\x6b\x67\xeb\xc9\xf1\x5e\xd4\x85\x11\xf0\x46\xa8\x17\xb2\xf1\x7e\x43\xbc\x8c\x47\xf5\x10\xf2\x5c\x47\x69\x47\xf9\xa5\x6d\x10\x23\x3b\xf4\x01\x60\xa4\x0e\x6f\x84\xa2\xd2\xbe\x3f\x89\x84\x98\xb1\x49\x34\x17\x28\x33\x41\xcb\xc8\xb0\xf5\xa1\xc9\x9b\xb1\x49\x5c\xef\x31\xa7\x04\xd4\xa1\xc4\x05\x5c\xed\xc8\x06\xa7\xf0\xa6\xca\x29\x9f\xc2\x4f\x34\x47\x7e\x12\xbf\x85\x4c\xad\x15\x7e\xfc\x78\xa5\x35\x59\x2b\x1c\x17\x74\x43\x19\x29\xa2\xfc\x47\xa7\x0f\xc8\xd4\x71\xfd\xd3\x73\xb8\x81\x3f\x7e\xbc\x3a\x3d\x53\x38\x81\x0e\x3d\x28\xee\x3d\x3c\x8c\xe9\x0c\x67\x3a\x8e\xda\x56\xbb\x15\x23\xb4\x98\x0c\x9e\xfb\x83\x45\xd5\x47\xc2\xfb\xab\xf7\xef\x0c\x2b\x60\x8c\xb3\xcd\x0c\x5e\x50\xcd\xca\xf9\xaf\x25\x6e\x5e\x4c\x4e\xce\xb1\xa3\x3b\xec\xe5\xa3\xdf\x15\x4d\x60\xa7\x97\xb9\xa1\xf7\xc8\x74\x20\x35\xf3\x03\xac\x21\xa9\x18\xfd\xad\xb2\x39\x63\xbd\xd1\xad\x05\x99\x86\x48\x69\x8e\x4c\xd1\x35\xb5\x41\xa1\x1e\x39\xcc\x1a\x98\x08\xa9\x15\xd8\xc4\x26\x09\x53\x11\xa8\x89\x55\x77\xe4\x10\x04\xf0\xa5\xe0\x79\x95\x61\x5e\x93\x6a\x57\x64\x69\x9d\x75\xcc\x9c\x43\x9a\x11\xf6\x42\xc1\x0a\x01\x3f\x67\x88\x79\x43\xbe\x4f\x45\xa7\x26\x1c\x55\x5b\x14\xa8\x83\x54\xc6\x81\xaf\x0a\xba\x21\xd1\x5e\xb1\x81\xa9\x0d\x98\x8b\xc2\xaa\x0d\x66\x05\x11\x98\xd7\x34\x47\x24\x5c\xad\x21\x70\x97\xcb\x25\x7c\x3d\x8d\xa5\xa0\xe7\xe2\x0c\xcf\xf9\xfa\x9c\x9c\xdf\x51\x96\x9f\x56\xac\x06\x61\x2f\x27\x2f\xae\x2e\xbc\xbc\x2d\x5f\x5e\x48\x2b\xa7\x99\x65\xca\xd5\x85\x9e\xd7\xcb\x39\x84\xd6\x4c\x8d\x9c\x8c\xc9\x1f\x4a\x6d\x53\xb2\xaa\x20\x22\xb4\x8b\x46\x8b\x4e\x9b\xa3\x30\xab\xed\xdf\x7e\xeb\xaa\x88\x36\x79\x60\x74\xe1\xbf\x6e\x7e\xb8\x0e\x01\x89\x04\xaa\x00\x3f\x53\xa9\x7d\x1f\x31\x62\x03\x45\x77\x18\x66\x1a\x7b\x22\x41\x22\x29\x70\x08\x4b\xdd\x4c\x7d\xbb\x54\xf3\xf4\xad\x4e\x4f\xbe\xe7\xd9\x5d\xed\x53\xa1\xe1\xb2\xa1\xfe\xaf\xa3\xd7\xce\x3f\x88\x54\xbb\x3d\xb7\x3a\x38\x38\x46\x6e\xac\xb5\xca\x84\x01\x2b\xac\x73\x44\x81\x4a\x50\xbc\xb7\x04\x67\x95\x10\xda\x2a\x46\x08\x60\x4c\xd7\x90\x6d\x09\xdb\x60\x3e\xc0\x3a\x1a\xb2\xfe\x8e\x24\xb1\x08\x93\xb9\x44\x7e\x3c\x74\x8b\xd3\xe8\x4d\xec\xeb\xe2\x77\x09\x07\x16\x0f\x08\x2d\x67\xfc\xa6\xeb\x37\x92\xef\xbb\xb6\x3d\x1e\xd6\x36\xcf\xf1\xdb\x76\x7d\x27\x06\xed\x6c\xf2\xd6\xc2\xa3\x5a\x51\x0c\xda\x55\xe6\x69\x2b\x1c\x0d\xb5\x27\x81\x37\x92\x8b\x7e\x9a\x4e\x08\xb5\x58\x74\x58\x16\x9a\x90\xfa\xa5\x95\x0c\x2c\x9d\x88\xba\x03\x02\xf1\xc0\x32\x14\x56\x77\xa8\xf1\x8f\x4b\x23\xaf\x44\x7c\x57\xcb\x0a\x96\x81\xe0\x7a\x07\x36\x42\x6b\xc6\x37\xcf\x12\x81\xaa\x13\xa2\x4e\x7b\xdd\x9f\x89\x68\xb5\x8e\x40\xb1\x2f\x6f\x0c\xfd\x40\x20\xde\x04\xe7\xcc\x8e\x5d\x5a\x51\xf4\x07\xce\x76\x01\xc1\xaf\xee\x50\x67\xa6\x96\x4e\xe2\x3d\x53\x69\x69\xfb\xe9\xf4\xdf\x4f\x49\x89\x24\xfa\xe0\x7b\xdc\x52\xe7\x64\xd0\xdf\xcf\xa6\x76\x3c\x7e\x7d\x79\xeb\xff\x0c\x0a\x7a\x44\x02\x61\xc1\xbb\x64\x18\xee\x8b\x6f\x7a\x5c\xb7\xaa\x3c\xbb\xbe\xbc\x9d\x46\x07\x01\x33\xff\xc7\x34\xc8\xe4\x7c\x05\xda\xd3\x57\x17\x1b\xef\x90\xbd\xd0\x0e\xf4\xa4\x85\x6b\x2a\xbb\xc7\xd9\x18\xfa\x9f\x26\x77\x3d\x0d\x33\xa0\x8e\x13\x39\x06\x5a\xd7\xc4\x45\xf0\x38\xb6\xba\xfa\x3f\x4d\x89\x79\x9a\xa0\x6b\x60\xfd\x28\x21\x7b\xaa\x95\xcc\x4e\x70\x34\x1b\xfc\x73\x6a\x4b\x27\x74\xd7\x44\xf7\x2e\xa7\x37\xe7\x36\xe3\xc9\x02\x7e\xb9\x3d\x94\xf8\x29\x9d\xbb\xff\xd2\xa9\x5b\xe8\xc1\xaf\xe2\xb3\x9f\x0b\x2a\xcb\x82\x1c\xbe\x19\x4f\xa6\x43\x86\xbb\x9d\x33\x74\xf8\x47\x7e\x20\x85\xa2\x28\x07\xe3\xff\xac\x50\x30\x52\xfc\xf8\xf1\xfb\xa1\x20\xd7\x97\xb7\x4d\xa1\xff\x82\x28\xf2\x65\x80\xa7\xf8\xd0\x6c\xe9\x99\x47\xf3\xcd\x38\xae\x17\x7d\x7a\x8a\x19\x12\x76\x07\x6b\x52\xc6\xff\x70\x7e\x5d\x4f\x34\x59\xc0\x1b\x76\xb8\x31\x79\x79\xbb\x28\x23\xf7\x54\x65\x5b\x9b\x7b\x75\xab\x52\x19\x91\x78\x5c\xc4\x8b\x0e\x0c\x34\xea\x92\x04\x1a\x27\x21\xa0\x0e\x70\xa2\x9d\x60\xbc\x6b\x97\x7d\xfe\x5f\x14\xdc\xc4\x80\xc1\xab\x7e\xf8\x3a\x93\x5d\xb4\x68\xfd\xfb\xed\xed\x87\x4b\x5a\x60\x3f\xb1\xfa\x5f\x25\x8a\x45\x60\x98\x67\x1b\x54\x3f\xe3\xea\x52\x50\x64\x79\x71\xf8\xf1\xe3\xf7\x63\x33\x22\x26\xac\xe3\x6c\x27\xbd\x73\xa4\xdf\x74\x9f\xf6\x89\xa9\xd9\x5a\x4f\x10\x93\xf7\x64\x56\x1a\x8c\x16\x53\x97\x3d\xb6\x17\xe2\x9c\xd7\x54\xbb\xf1\xf6\xbb\xc6\xb3\x0f\xa7\x36\xdc\xd9\x4f\xa0\xb7\x06\xeb\x97\x55\xd2\x6e\xce\x56\x15\x2d\xf2\x06\x3a\xc7\x35\xa9\x0a\xf5\x11\x33\xa4\xf7\x28\xec\x71\x5b\x3c\xd5\x06\x95\x1d\x7f\xa8\x47\xd5\x27\x7f\xe3\xc9\x1f\x96\x56\x64\xa8\x9e\x22\xb1\x06\x70\x3c\xf2\x87\xd2\xa4\x2c\x67\xe1\x39\xf8\xdc\x16\x31\xe7\x2e\xb9\x3c\x27\x42\xcd\x47\x5a\x19\x33\xa2\xc6\xce\x35\xcd\x14\xb7\xe1\xee\x78\x92\x58\x4d\x1f\xdd\x29\x6b\x79\x94\xfa\x60\xc7\x38\x93\xe5\x4f\xac\x8d\xe9\xf2\x91\xcb\x6d\x6d\xc0\x5e\x7d\x7b\x7d\x79\xab\xed\xa8\xf1\x58\xf6\xb9\xb6\x58\x5f\x4a\xe3\x30\xeb\xf5\x97\x90\x99\xf6\x01\x47\xe9\x4a\x57\xee\x21\xf6\x11\xc1\xf8\xb0\x60\x3c\xac\xbe\xff\x46\x07\xc1\x57\x17\x3a\x1a\xb0\xfa\x30\xe0\x08\x61\x16\x07\xea\x5f\x7a\x90\x90\x88\xa3\xfe\xe0\x31\x42\x6f\x55\x5e\x20\x51\xf8\x6e\x57\xaa\x43\xa3\x1a\x9a\x80\x6f\x1f\x3a\xd1\x72\x33\xe0\x31\x49\xcc\xab\x73\x8b\x0d\x42\x4c\xbd\x51\xbd\x29\x3e\xb9\xca\x13\x65\x0a\xc5\x9a\x64\x68\x8b\x7c\x95\x44\x21\x4d\xd9\x21\x23\xd2\x54\x48\xa8\x08\x43\xff\x06\x3f\x10\xdf\xe7\x00\x8a\x03\x29\x0a\xbe\x07\xae\xb6\x1a\x5c\x71\xc8\x6d\x4f\x46\x08\x4a\x99\xe2\x0e\x61\x83\x65\x06\x57\x0a\x48\x21\x1d\x06\x69\x2a\x5f\x02\x49\xee\x73\x5e\x73\x52\x5e\xf7\xce\xb4\x3a\x0b\x28\x33\x2f\x03\x74\xc7\x53\x91\x66\xb1\xed\x3e\x8a\x28\xc7\x48\x49\x6c\x3e\xd7\x32\x73\xcb\x1a\x1b\x5b\x96\x94\xd4\xf5\xe5\xed\xe3\x64\x78\xd4\x7b\x75\x61\x63\x5e\x1b\xea\x7f\x1a\x08\xb8\xe2\x42\xf0\xfd\xf5\xe5\xed\xf8\x1f\x41\x82\x33\x59\xc0\xf3\x34\x41\xaf\x4f\x6b\xa3\x45\xd9\xf0\x76\x1c\xe3\x0d\xcc\xc4\xf5\xe5\x6d\x3b\x88\xb3\x25\x56\x2d\x0a\x81\xb2\x2a\x14\x50\xc9\x5e\x28\xeb\xbb\x8d\x92\xe5\xbe\xe4\x65\xf5\x15\x73\x10\xb8\x46\x81\x2c\xc3\x36\x22\xb9\xe5\x55\x91\xc3\x0a\xc3\x93\x2e\x5b\xe2\x16\x9b\x6a\x87\xe6\x38\xcc\x95\xcf\x6c\xef\x45\x84\xa1\xe4\x52\x25\x02\xc9\xb1\x23\x6c\x69\xce\xaf\x26\xf0\xaf\x7f\xf9\x47\xaf\x4d\x4a\xb4\x04\x9a\xf7\x58\xbd\xd1\x5b\xc2\x18\x57\x8e\x43\xa1\xfa\xd5\x6b\x58\x98\xac\xb4\x29\xec\x75\x57\xa9\xb7\x1b\x65\x19\x17\x02\x33\x35\x6a\x19\xcd\xbe\x7d\xda\x28\xa9\x7f\xf2\x06\xb2\x66\x03\x26\xba\x6c\xf8\x9e\xd9\x9a\x3a\x61\x5a\xd2\xbc\x62\x6a\x50\x8e\xde\xcc\x14\xf3\xa0\xbd\x4d\xe2\x48\xb6\xb1\x94\xc7\xc7\x1d\x31\x67\xf1\xc0\x64\x3d\x20\x30\x39\x0f\x61\x2a\x3d\x6f\x35\xfd\x5c\x5f\xde\x42\xc6\xd9\x9a\x8b\x9d\xf6\x18\x36\xdc\x88\xc6\xbb\x42\x3f\x69\xd6\x6d\xd2\x0e\x73\xac\x4a\x18\xfc\xd3\xaa\xfb\x3f\xb5\x20\xd7\x14\x8b\xfc\xf8\x66\x24\xc2\xb2\x5b\x33\x5e\x9b\x02\x0b\xbd\x80\xf4\x16\x7c\x8c\x49\xdf\xbb\x96\x37\x10\xb8\xe3\xf7\xe8\x0b\x2a\xb6\x43\xd1\x1e\x88\x34\x86\x96\xe5\x60\x07\xd1\x5a\xf7\x33\x52\x14\x41\x05\xc1\x11\xd8\x99\xd9\x77\xd6\x4d\xcc\x1e\xf7\x93\x8e\xfd\x1f\x41\x1f\x5b\xaf\x31\x4b\xf4\x68\xd8\xae\xc4\x57\xae\xed\xa0\x66\xc2\xcc\xae\x65\x7c\x87\x87\x05\x34\x53\x74\xa3\x8f\xd7\xaf\xa1\x24\x8c\x66\xe3\x51\x60\x56\x02\x23\xee\x61\x17\xf0\xd6\xd8\x02\xbd\xfb\x6a\x86\x39\x46\x19\xa1\x5d\x5d\xc0\xa8\x37\xe8\xf6\xb1\x65\x43\x49\x18\x5e\x9e\x04\x1b\xcd\xe0\xed\x16\xb3\x3b\x6b\x86\xaa\xd5\x8e\x2a\x85\xa6\x7a\xaf\x38\xec\xc8\x9d\x7e\x28\x50\x8b\xc4\x9e\x1d\x59\xff\xa9\xb4\x6b\x0d\xf7\xe8\x9e\xc9\xd9\x68\x32\x89\x03\x23\xdc\xd1\x56\xd7\xa3\x61\xe9\x8c\xe6\xbe\xef\xb1\xe6\xac\x78\x3d\x23\xb6\x8f\x71\x92\x0c\xae\x5e\x9d\x37\x5d\x65\xd0\xee\x5f\x98\xd7\x7e\x58\x91\x3b\xd3\x93\xa6\x59\xa7\xf5\x89\xe4\x79\xa4\x4e\x35\xc5\x32\xd8\x55\x11\xa6\x1a\x4a\x59\x53\xe7\x20\x69\x0e\x44\x08\x72\x38\xe9\x60\x06\xba\xce\x63\xea\x66\xff\x20\xf2\x19\x7c\x1b\xfb\xa3\xb3\x0e\x8c\x29\x73\x79\xa6\x9e\xb5\x7d\x0c\xc9\x73\x43\x3c\xc3\xbd\x43\xea\x56\x13\x58\x94\xfd\x96\x66\xdb\x7a\x7b\x9a\x43\xf0\x22\xd7\x82\xee\xcc\xc5\x8b\xfc\x36\xbd\x23\x7e\xa1\xf9\xa7\x9a\xf0\x84\x0a\x84\x9d\xab\x5a\xf6\x8a\x0f\x91\x7c\x8e\x52\x09\x7e\xa8\xe7\xed\x93\xbd\x0d\x2f\x9c\xa2\x18\x0b\x63\x24\xe5\x9d\x94\x7e\x67\x74\x96\x68\x35\x66\x2d\x3d\xf8\xd2\x08\xe6\x48\xb0\xdc\x18\x8a\x3b\x3c\xc8\x34\xd5\x4d\x68\x13\x3e\xfc\x4f\x54\xd6\x6c\x7b\x6f\xaa\x23\x4e\x77\x70\xdb\x4b\xb8\x8e\x25\xb8\xdf\x95\xde\x62\x9a\xd0\x56\xc7\x97\x40\x55\x70\xb4\xa9\x95\x5b\x0f\xf0\x4f\xb7\x3c\x6a\xd5\xf9\x5f\x8a\xca\xd2\xbc\x7a\xde\xd5\xa1\xa3\xbc\x6a\xb6\xc2\x97\xb2\xcc\x14\xf4\x83\x58\x22\x6a\x35\xc0\xcf\x5a\x47\xd9\xc6\x9c\x47\xf3\xb5\xe1\x90\xf1\x8e\x12\xc6\x94\x65\x45\x95\x1b\x6f\xbb\xb5\xce\xf4\xea\x62\xd2\x3d\xfc\xa7\x12\x24\x59\xfb\x38\x4e\xa0\xd1\x38\xc6\xeb\x00\xce\xe9\xa1\x3b\xec\x34\x82\xd2\x3b\xcd\x20\x0d\x36\xfa\x50\x81\xfc\xe1\x70\x96\xae\x53\xfb\xf8\x99\x09\x1d\x13\xb1\xa5\x3d\x0a\x5e\xc3\x12\xc6\x09\xd9\xe9\x55\xf7\x29\xc0\xe4\x59\x07\x99\x53\x02\x8d\x4f\x1b\xba\x16\xa5\x71\xe0\x78\xa2\x97\xaf\xdd\xa8\x95\xec\xe6\xd3\x86\xe2\x3b\x1b\xd9\x6a\x76\x1b\x65\x16\xf5\xdd\x0c\xdf\x86\x52\x62\x66\xbb\x4d\xb4\xfe\x9c\x38\x75\x69\xed\x87\x30\xa6\x6b\x49\xe1\x21\x19\xef\x75\xf6\x05\x5d\xdb\xae\xac\xb5\x82\x65\x6a\x77\x1c\xe3\xf0\x11\xee\xac\x95\x05\x4c\x13\xd1\xc3\xb9\x1e\xf6\x0e\x48\xf7\x2d\x37\xea\x90\xd9\xd0\xd8\xe6\x47\xeb\xe0\xab\xcf\x42\x18\x16\x24\x35\x9c\xe6\x93\xbf\xa0\x04\x91\xa6\xea\x54\x0d\x62\xb0\x47\xb9\xb1\xd7\x60\x8c\x80\x6f\x0f\x25\x1a\xff\xf2\x60\xcb\x59\xdf\x71\x5e\xf4\xcc\xff\x10\xd5\xc0\x60\x61\x3a\x0d\x07\x77\xb0\xd6\x04\x50\xd9\x9e\x7f\x1c\x9c\x64\x80\x25\x21\x4d\x81\x3d\x9f\x5e\x46\x74\xf4\x98\xee\x01\xc7\x80\x90\xee\xd8\xac\x55\x5f\x07\x16\x0f\xfd\xc9\x63\x52\xb6\xfe\x65\x69\x8b\x1e\xde\x00\xbb\x38\x80\x1d\x74\x1c\x6b\x8b\x3f\x45\xa1\x3d\x86\x93\x28\x31\x91\x12\x6a\x5c\x6d\x4f\xdb\x93\x59\xf6\x6b\x17\x5b\xab\xdb\xf0\x64\x68\x68\xb5\xab\xd6\x32\xe8\x53\x33\xb7\xf6\x14\x29\x61\x6f\xb2\x0b\xaa\x16\xee\x7a\xd0\xd4\x46\x67\x57\xf9\xc2\x9f\x98\x2f\xe0\x79\xa2\x79\xd4\xb4\xcb\x64\x99\xb6\x41\x1b\x54\x6f\x6c\x72\x3d\xae\x23\xb4\x70\x58\xc3\xa2\x8f\xc6\x2d\x68\xb0\x59\x46\x4a\xb2\xa2\x05\x55\x14\x4d\x21\xff\xd5\xf3\x87\x64\xf6\x63\x13\xe8\xc7\x6f\x6c\x4d\x3c\x75\xdf\x67\xf2\xcc\x6d\xfe\xf1\xe4\xec\xab\xaf\xbe\x6a\xb2\xa9\x26\x5b\x72\xb5\x8a\x7a\xce\x83\x4d\x2c\x9d\xd8\x1b\xfa\x46\x41\x68\xe9\x18\x1c\x11\x9f\xb6\x32\x8e\x61\x93\x67\x71\x15\xf8\x08\xff\xa9\x7c\x6b\xfa\x7f\xc7\xb6\xcb\xea\xaa\xee\x6b\x99\x74\xf6\x13\x0d\xab\x1a\x33\xd7\x77\x6d\x0e\xad\x08\x65\xf2\xbf\xf1\x50\xe3\x48\xe5\x0a\xae\x8b\x6b\x19\x39\x4e\x87\xe4\x17\x0f\xf8\xe9\x99\xb1\xfc\xf6\x1e\x4a\x6a\x23\xbb\x2e\x46\xdb\xb3\xdc\xec\xb0\x94\xbf\x75\x10\xed\x1b\x11\xa7\xf5\x31\x75\x50\x57\xf3\xa4\x53\xf5\xa6\x6b\xa8\x44\x31\x93\x05\xcd\x70\x6c\x53\xc4\x97\x53\xa8\xca\x5b\xbe\x80\xbf\x4d\xb4\xd1\x19\xd1\x72\x2d\x47\x69\xea\x46\xad\x8b\x89\xbb\x43\x49\x99\x39\x0b\x2c\x78\x95\xcf\x35\x64\x73\x16\xd3\x9e\xe7\x3f\xfc\x3c\xfa\x45\x81\x6c\xa3\xb6\x41\xfa\x7c\x8c\x29\x95\x28\x7a\xcd\x93\xb9\x59\xe6\x7f\x7c\xac\xeb\x31\xd6\x0e\x01\xd1\x6f\x81\x0b\x90\x5c\x47\xe3\x9a\x17\x92\xee\x68\x41\x04\xec\x8d\x92\xf3\xbd\xc9\xd9\x56\xe8\x51\x98\xab\x60\xbe\x2b\x54\x5b\x2b\x6d\x22\x07\xd5\xbe\x0c\x25\x71\x69\xc9\x74\x00\xba\x6b\x4a\x92\xd8\xf2\x4c\x0e\x6b\x81\xf8\xbb\xcb\x05\xc3\xbb\x5d\x3e\xc5\x60\x61\xbb\x5e\x88\xcd\x93\xa5\x83\xa7\x6e\x7f\x6a\x7f\x53\x8f\xa7\xe1\xcb\x2f\x10\xc5\x62\x29\x45\x22\x5a\x8c\xcf\x4f\x74\x94\x3b\x1a\xc1\x02\x46\xc6\x6e\xd7\x6d\xc5\x9d\x32\x4b\xfb\x14\x56\xab\xa0\xbb\x72\xf2\x72\x62\xe0\xdd\xf3\xa6\x9e\xfb\x3b\x0a\xde\x8f\x27\xbe\x16\x53\xdf\x5e\xd1\xa8\xde\x37\xaf\x1a\x6c\x26\x73\xa6\xf7\xd8\xc1\xf8\xec\x94\xf9\x88\x16\xec\x26\x90\xf6\x5a\x87\xce\x0c\x0f\xae\xff\xb3\xaf\x4a\xab\xff\xa5\x8c\x4b\x84\xf6\x13\x2c\xdd\x3d\xb7\xee\xa9\x70\x23\x4d\xff\x57\xb7\x41\xa0\x2b\xdd\xa3\xf7\xb7\x9e\x14\xf5\x51\x79\x63\x16\xd8\x35\xc6\x47\xa3\x9b\xa1\x56\xf9\x29\xa4\x74\x2f\x56\xa5\x68\x4a\x5e\xb4\x4a\x2a\xf3\x60\xcf\xd1\x08\x5d\xbb\xcb\x35\xaf\x58\x47\xde\x7f\x86\x6f\x39\xe2\x5c\x12\x77\xca\x9e\xc2\xb9\xb6\x3a\x24\x19\x77\xea\x28\xf3\xdf\x9d\x87\xc9\x13\xdc\x67\x3d\x21\xb7\x36\xc1\x8e\xd7\xda\x10\xeb\x9f\xd2\x5f\xca\xb5\xe1\x91\x6f\x01\xf7\xd7\xac\xec\xf5\x80\xf0\x4e\x85\x3d\xe8\xa2\xea\x85\xb9\xdf\x1b\x5d\x05\x9e\x42\x29\xf8\x3d\xcd\x11\xde\xff\x70\xe1\x0a\xa4\x05\x65\x77\x40\x55\x83\xf1\x3d\x11\x77\xa8\xca\x82\x64\x08\x7a\xe3\xaf\x88\xc4\x08\xfb\x0f\x6a\x8b\x62\x4f\x25\x4e\x41\x1b\x5e\x73\xd7\x5c\x63\x7a\x79\xda\x5f\xc4\xeb\xeb\xe8\x43\xfb\xe2\x3a\x2c\xda\x55\xd4\x7f\x7b\xe5\xd0\x96\x57\xa8\x71\xff\x06\x83\x6f\x74\xd4\xb4\x43\x29\xc9\x06\x17\x30\xba\xe6\xf6\xcb\x0c\xee\x7e\x9d\xf3\xd3\xa3\x49\x82\xb4\xa0\x33\xb2\xd6\xbd\xe6\xba\xe3\xb3\x0e\x00\x06\x4d\xc6\x66\x7c\x7c\x05\x36\x1a\x5f\xbb\x8e\x54\x1f\x2f\xfa\x36\xa6\x08\xa4\x4e\xf0\x5c\x6e\xd6\xae\x0d\xd9\x5b\xcc\x7b\x2d\xd5\x26\x63\xd2\x6a\xd1\xf1\x34\xbe\xd9\x34\x60\x79\x70\xed\xbe\xeb\x99\xbe\xcc\x7b\x0d\xdb\xb0\x60\x5c\x59\xf4\xd3\xd4\xc9\x83\xaf\x34\xf4\x90\xe9\x3b\xf1\x63\x2f\x1c\x7c\xbd\xa1\x69\x16\xb3\xbb\xc0\xfc\xaf\x35\x57\x1a\x37\x2c\xfb\x5e\x84\x97\x6c\xdb\x15\xab\x23\x4a\xb8\x5c\xc2\xcb\x44\x5d\x2a\x4c\x3a\x5a\x0a\x92\xee\xab\x79\x75\xee\x44\x3c\x2c\xef\x08\x4b\x2c\x61\x23\x91\x4c\x74\x12\xbd\x4e\xf5\xe1\x26\x7b\x70\xbf\xa8\x7b\x75\x78\x83\x54\x0d\xf6\x69\xd0\xd2\x86\xf5\x49\xbd\x0e\x1b\xa4\x8e\x35\xa8\xba\xe6\x54\x3f\xb8\x25\xb4\x3f\xd6\x8f\x96\xec\xa4\xeb\x80\xa6\x7b\x0a\x65\xf8\x1d\x8f\x64\x15\x21\xf8\xb8\x47\xba\xfb\xb4\x0c\x3e\x1f\x72\xa4\x0e\x71\x0a\x41\xd0\x38\x60\x59\xf1\x3c\x89\x2c\xd9\x83\xdc\x60\xf9\x9e\xb2\x3b\xcc\x83\x46\xb6\x27\x62\x49\x56\x9a\x2e\x5d\x71\x6b\x61\x34\xe3\xc9\x55\xcd\x84\xac\x5e\x9d\x07\x64\x0d\xa8\x6e\xbd\xfa\x36\xa2\x3d\x7d\xe6\xfc\xd8\x79\x3a\xf9\x02\x2d\x3b\xd2\x51\x38\x40\xd1\x8e\x35\x46\xdb\x36\xdc\x91\xfd\xd2\x51\x78\xef\x70\x94\x96\x45\xd4\x12\xed\xc1\x4c\xd7\x85\xe4\x19\x25\x05\x94\x05\x51\x6b\x2e\x76\xb0\x37\x67\x41\xda\x57\x1c\x6c\x8a\x4f\x6d\xfb\x97\x49\x0c\x58\x0e\x65\x25\xb0\x38\xc0\xda\x9d\xc9\x16\xb3\x9e\x19\xb1\x69\x3f\x6d\x37\xcc\x26\x3b\x53\xc3\xae\xd4\x51\x8f\x46\xc9\xdf\x2a\x22\xd0\x5c\xa8\x6e\xe3\x34\x37\xae\xfb\x7b\x7d\xad\xbf\xfb\xe2\x6e\xee\x24\x95\xf3\x2d\xdf\xe1\x9c\xee\x36\x73\xf3\x41\x27\xf7\x71\xa7\x82\x6f\xf8\xac\x64\x9b\xfe\x16\x88\x9e\xc5\x81\x71\xe3\x39\x25\x56\x55\x47\xf6\xb2\x73\x2f\xa6\x1e\x2c\x2b\xc2\x18\x8a\xff\xdb\x2c\xb2\x34\xce\x7e\x2d\xff\x2c\x26\xfd\x5a\xe2\xd3\xb8\x64\x95\x5e\x2e\x8e\x58\x97\x11\x65\x52\x91\x8d\x20\xbb\xd1\x20\xfd\xdd\xef\xf7\xb3\x1a\xc4\x7c\xf5\xcb\xae\xf6\xa8\x42\x9b\x89\x74\x88\xc1\x73\xce\x86\xcd\xe3\x47\xcf\xec\x1a\xe6\xdf\xda\x69\x8e\xce\xa0\xf6\x54\x29\x14\xc3\x26\x70\x83\xbb\x4b\x78\xb2\xa1\x7c\x6c\x07\x29\xfe\x70\xae\x29\x38\xb6\x4f\x5c\x5c\x59\xd0\x5c\xb8\x9a\xc4\x57\xcc\x6e\x50\x01\xaf\x84\x31\x7d\x39\x94\xf5\x27\xbd\xc0\x9f\xc1\x24\xfd\x2c\x2c\x61\xee\x1c\xb3\x5b\x4d\xe3\x2d\xde\x76\xdb\x13\x7a\xcb\xfb\x1a\x8f\x75\x8b\x83\xd1\xb4\x3f\xee\x15\x92\x92\xd7\xd0\x4d\xc9\x35\x06\x0c\x3e\xe9\x65\xe6\xb6\x3f\x3b\x80\x51\x12\x5c\x33\xd3\x9e\xfc\x9b\x8f\x7f\x49\x13\x15\xc7\x13\xc4\x71\xf4\xcb\xb3\xf8\xad\xff\xaa\xca\x12\x1e\xe2\x5c\xfd\xad\xcf\x6d\x6c\x71\xb6\xae\xd5\x6a\xb7\x20\xc9\x3d\xba\xd6\x25\xb7\xc6\x1a\xd2\x9c\xd1\x18\x88\x26\xe9\x31\x18\x82\x40\xd2\xde\xb8\xb4\xc7\x37\x33\x87\x60\xa6\x71\x8e\x5f\x9d\x1b\xd8\xa0\x0d\xa7\xcd\xd7\x20\xcc\x37\x79\x49\xff\x87\xee\x1e\xcf\x1e\xcf\xfe\x27\x00\x00\xff\xff\x53\xf4\x40\x5f\x2d\x51\x00\x00" +var _contractsDigitalartCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x3c\x5d\x73\x1b\x37\x92\xcf\xab\x5f\xd1\xe2\x83\x4d\xd6\x51\xa4\xf7\x6a\xeb\xae\x8a\x65\xc6\xf1\x5a\xd6\xad\xee\x62\x25\x65\x29\xc9\x43\xca\xb5\x0b\xce\x34\x49\x44\x43\x60\x02\x60\x44\x33\x5a\xfd\xf7\x2b\x7c\xcd\x00\x33\x18\x72\xe4\xe4\x52\xb7\x7e\x48\xc4\x19\x74\xa3\xd1\xdd\xe8\x2f\x34\x86\xee\x4a\x2e\x14\xdc\x70\x76\x55\xb1\x0d\x5d\x15\x78\xc7\xef\x91\xc1\x5a\xf0\x1d\x8c\x66\x73\xa9\x08\xcb\x89\xc8\xe7\xed\x11\xb3\x2c\xcf\x46\x67\x0e\xfc\x07\x8a\xfb\x8f\x28\x79\xf1\x80\xc2\x81\x36\x90\xe1\xcb\x08\xea\x03\x2a\x92\x13\x45\xf4\x00\xd9\x9d\x31\x7a\x1d\x01\xbe\x7f\x40\xb1\x11\x18\x90\x59\x3f\xb1\xe3\xce\xe6\x73\xb8\xa4\x1b\xaa\x48\xf1\x56\x28\xc8\x71\x4d\x19\x4a\xb8\xb9\xba\x93\xa0\xb6\x44\x81\xc0\x52\xa0\x44\xa6\x20\xb7\xc3\x80\x08\x05\x94\xc1\x2d\xfe\x52\x61\x31\xd3\x08\x6e\x11\x61\xab\x54\x29\x17\xf3\xb9\xb4\x8f\x65\x49\x32\x84\x35\x17\xb0\xe3\x02\x21\x47\x45\x68\x21\xf5\xe8\xd6\x8c\x4a\xb3\x48\x82\xac\xca\x16\xc1\xe6\x05\xf8\x35\x7a\xc8\x5b\x5e\x89\x0c\x17\xf5\x74\x1b\xaa\xb6\xd5\x6a\x96\xf1\xdd\xbc\xa4\xa5\x20\x0a\x1d\x05\x17\xeb\x82\xef\x2f\x32\xce\x94\x20\x99\x92\x1a\x9c\x64\x19\x4a\x39\x26\x45\x31\x39\xf3\x2f\x02\x52\x16\x5d\xd9\x3e\x9e\x9d\x01\x00\xcc\xe7\x9a\x2e\xa6\xa4\xfb\x65\xfe\x17\x62\xd3\xbf\x51\x8f\x80\x77\x0e\xef\x35\xa3\x8a\x92\x82\xfe\x8a\xf9\x78\x72\x64\xfc\x8f\x54\x6d\x73\x41\xf6\x63\x9a\x2f\xe0\xfb\x6b\xa6\xfe\xe3\x2f\x53\x23\xab\x05\xbc\xcd\x73\x81\x52\xbe\x39\x06\x7e\x89\x25\x97\x54\x45\xd0\x8a\x0f\x83\xfd\x40\x99\xc2\x3c\x02\x25\x52\xa2\x5a\xc0\xad\x12\x94\x6d\xa6\x80\x39\x55\x94\xb3\xe6\xfd\x8e\xe7\xd7\x97\xfe\xe7\xa4\x66\xce\x0d\xd9\x61\x0e\xdf\x11\xb5\x3d\xca\xa1\x02\x35\x7f\x8a\x02\x33\x8d\xf5\x56\x71\x41\x36\xa8\xa1\xf4\x8c\xf5\x8f\x01\xa0\xdf\x55\xab\x82\x66\x16\xb2\xf9\xbb\x17\xf0\x6d\xbe\xa3\xfd\xd3\xf9\x45\xdc\x6d\x11\x14\xd7\x0a\xce\xaa\xdd\x0a\x05\xf0\x75\xa8\xa7\xcd\x8e\xd8\x92\x07\x84\x95\x56\xd1\x9d\xe1\xe0\xb1\x25\x3f\x10\x61\x91\xde\x56\x65\x59\x1c\x3c\xeb\xea\x49\x7f\x20\x82\x92\x55\x81\x20\xe9\xaf\x08\x39\x35\xcb\x23\xe2\xa0\x27\xff\x40\xa4\x42\x01\x02\xa5\xd1\x79\x19\x4e\x20\xb1\x58\x37\x33\xec\xcc\x48\xb9\x80\x47\x2b\xb9\x85\x83\x7d\xaa\xe7\x71\xb8\x90\xe9\xc9\xa4\x21\xfc\x82\xb3\x8b\x1c\x77\x84\xe5\xb0\xae\x98\x9d\xb8\xa0\xea\x00\xfa\x89\xb7\x03\xc4\xe1\x86\x8c\x97\x86\x28\x62\xf7\xa5\xc7\x6b\x18\x42\x25\x54\x12\x73\x50\xdc\x20\x06\x12\x70\xd0\xa9\x90\x84\x71\x41\x77\x54\x61\x0e\xab\x03\xec\x9c\xbd\x9a\xed\xc8\xe7\xf7\x6e\xc0\x64\xe6\x71\x7e\xcb\x32\x04\x52\x14\x0d\x2c\x11\xe8\x78\x3d\x05\xb5\x45\x4f\x13\x95\xf0\x32\x2b\xb8\xc4\xfc\x25\xac\x2a\x6d\xaa\x76\x84\x32\x09\x9c\x5d\x64\x5b\x42\x1b\x22\x39\x94\xc2\xea\xbc\xc0\x0b\x8d\x88\xb2\x8d\x15\xe8\x9e\xaa\xad\x41\x29\xc9\x0e\xad\xfa\xc3\xf5\xe5\xec\x98\x48\xa5\x12\x55\xa6\x3c\x47\x1f\xcd\xb3\xd4\xb8\x5a\x38\x6e\xb1\x8b\xda\x8a\xbf\x39\x09\x83\xde\x0a\x7e\x27\xf8\x9a\x16\xb8\x68\xec\xe2\xcc\x3d\x3a\x8d\x84\xe1\x67\xf5\x3e\xde\xc1\x27\x61\x2c\x3b\x17\xf0\x57\xce\x8b\xb3\xfa\x0d\x65\x54\x8d\xbb\xeb\x98\x0e\xa1\x73\x02\x01\x8f\x0c\xff\xb0\x58\xcf\x3c\x32\x58\xd6\xfc\xe9\x0e\x6a\x63\x87\x65\x67\xc2\x2e\x50\xb0\x6a\x58\xc2\x9f\xbb\x03\xec\x12\x61\x09\x6b\x52\xc8\x06\xc1\xd3\xd9\x51\xe6\xac\x2b\x06\x0c\xf7\x0e\xf3\xf5\xe5\x78\x02\x9e\xa9\xad\xf5\x69\x8b\xf3\x40\x0a\x58\x76\xe8\x39\x45\x6c\xe7\xd1\xbf\xb9\x19\xc6\x7f\x9e\x44\xb0\x02\x55\x25\x98\x9e\xe5\x39\xe4\x93\x07\x42\x0b\xbd\xff\xfd\x96\xeb\x5f\x03\x5d\xc3\x79\xc8\xac\x17\x2f\x62\xb1\x9d\x07\x3b\x17\xbe\x4a\x50\x1e\xa3\x0b\x68\xee\x47\x73\x31\x7c\xfd\x4f\x80\x85\xc4\xfe\x49\x5e\xc5\xa3\x9f\xc3\xa4\x0d\x2a\xaf\xde\x86\x3d\xf5\x9e\x6d\xcd\x96\x5a\xce\x33\xe7\x79\xdf\xd2\x65\x33\x5f\x77\x9f\x1f\x99\xb8\x77\x37\x04\x04\xcc\xe7\xf0\x23\xda\x7d\xed\xfd\x04\x90\xb5\x36\x5d\x3d\x26\x16\x28\x93\x0a\x49\xae\xad\x77\x8e\x05\x1a\x63\xb9\xf3\xbe\x28\xe3\x22\x97\x21\xf2\xbb\x2d\x95\x50\x0a\xae\x97\x09\xc8\x64\x25\x50\x02\xe3\x2b\x9e\x1f\x20\x23\xcc\xec\x58\xeb\x16\x5c\xa4\x77\xcc\xe4\x1e\xe3\x98\x59\xc2\x78\x72\xc2\x9a\x30\x5a\x0c\x32\x24\xc9\x71\xf1\x76\x7c\x75\xc4\x76\x28\x51\x85\xdc\x0e\x78\xae\x9d\xad\x27\xc7\x7b\x51\x17\x46\xc0\x5b\xa1\x5e\xca\xc6\xfb\x0d\xf1\x32\x1e\xd5\x63\xc8\x73\x1d\x6f\x1d\xe5\x97\xb6\x41\x8c\xec\xd0\x87\x72\x91\x3a\xbc\x15\x8a\x4a\xfb\xfe\x24\x12\x62\xc6\x26\xd1\x5c\xa2\xcc\x04\x2d\x23\xc3\xd6\x87\x26\x6f\xc6\x26\x71\x7d\xc0\x9c\x12\x50\x87\x12\x17\x70\xbd\x23\x1b\x9c\xc2\xdb\x2a\xa7\x7c\x0a\x3f\xd0\x1c\xf9\x49\xfc\x16\x32\xb5\x56\xf8\xfe\xe3\xb5\xd6\x64\xad\x70\x5c\xd0\x0d\x65\xa4\x88\x32\x19\x9d\x08\x20\x53\xc7\xf5\x4f\xcf\xe1\x06\x7e\xff\xf1\xfa\xf4\x4c\xe1\x04\x3a\xf4\xa0\xb8\xf7\xf0\x30\xa6\x33\x9c\xe9\x38\x6a\x5b\xed\x56\x8c\xd0\x62\x32\x78\xee\xef\x2c\xaa\x3e\x12\x3e\x5c\x7f\x78\x6f\x58\x01\x63\x9c\x6d\x66\xf0\x92\x6a\x56\xce\x7f\x2e\x71\xf3\x72\x72\x72\x8e\x1d\xdd\x61\x2f\x1f\xfd\xae\x68\x02\x3b\xbd\xcc\x0d\x7d\x40\xa6\x03\xa9\x99\x1f\x60\x0d\x49\xc5\xe8\x2f\x95\xcd\xfe\xea\x8d\x6e\x2d\xc8\x34\x44\x4a\x73\x64\x8a\xae\xa9\x0d\x0a\xf5\xc8\x61\xd6\xc0\x44\x48\xad\xc0\x26\x36\x49\x98\x8a\x40\x4d\xac\xba\x23\x87\x20\x80\x2f\x05\xcf\xab\x0c\xf3\x9a\x54\xbb\x22\x4b\xeb\xac\x63\xe6\x1c\xd2\x8c\xb0\x97\x0a\x56\x08\xf8\x39\x43\xcc\x1b\xf2\x7d\x52\x39\x35\xe1\xa8\xda\xa2\x40\x1d\xa4\x32\x0e\x7c\x55\xd0\x0d\x89\xf6\x8a\x0d\x4c\x6d\xc0\x5c\x14\x56\x6d\x30\x2b\x88\xc0\xbc\xa6\x39\x22\xe1\x7a\x0d\x81\xbb\x5c\x2e\xe1\xcf\xd3\x58\x0a\x7a\x2e\xce\xf0\x82\xaf\x2f\xc8\xc5\x3d\x65\xf9\x69\xc5\x6a\x10\xf6\x72\xf2\xf2\xfa\xd2\xcb\xdb\xf2\xe5\xa5\xb4\x72\x9a\x59\xa6\x5c\x5f\xea\x79\xbd\x9c\x43\x68\xcd\xd4\xc8\xc9\x98\xfc\xa1\xd4\x36\x25\xab\x0a\x22\x42\xbb\x68\xb4\xe8\xb4\x39\x0a\xf3\xd3\xfe\xed\xb7\xae\x8a\x68\x93\x07\x46\x17\xfe\xfb\xf6\xdb\x9b\x10\x90\x48\xa0\x0a\xf0\x33\x95\xda\xf7\x11\x23\x36\x50\x74\x87\x61\xa6\xb1\x27\x12\x24\x92\x02\x87\xb0\xd4\xcd\xd4\xb7\x4b\x35\x4f\xdf\xe9\xf4\xe4\x1b\x9e\xdd\xd7\x3e\x15\x1a\x2e\x1b\xea\xff\x38\x7a\xed\xfc\x83\x48\xb5\xdb\x73\xab\x83\x83\x63\xe4\xc6\x5a\xab\x4c\x18\xb0\xc2\x3a\x47\x14\xa8\x04\xc5\x07\x4b\x70\x56\x09\xa1\xad\x62\x84\x00\xc6\x74\x0d\xd9\x96\xb0\x0d\xe6\x03\xac\xa3\x21\xeb\x6f\x48\x12\x8b\x30\x99\x4b\xe4\xc7\x43\xb7\x38\x8d\xde\xc4\xbe\x2e\x7e\x97\x70\x60\xf1\x80\xd0\x72\xc6\x6f\xba\x7e\x23\xf9\xbe\x6b\xdb\xe3\x61\x6d\xf3\x1c\xbf\x6d\x57\x6a\x62\xd0\xce\x26\x6f\x2d\x3c\xaa\xfa\xc4\xa0\x5d\x65\x9e\xb6\xc2\xd1\x50\x7b\x12\x78\x23\xb9\xe8\xa7\xe9\x84\x50\x8b\x45\x87\x65\xa1\x09\xa9\x5f\x5a\xc9\xc0\xd2\x89\xa8\x3b\x20\x10\x0f\x2c\x43\x61\x75\x87\x1a\xff\xb8\x34\xf2\x4a\xc4\x77\xb5\xac\x60\x19\x08\xae\x77\x60\x23\xb4\x66\x7c\xf3\x2c\x11\xa8\x3a\x21\xea\xb4\xd7\xfd\x99\x88\x56\xeb\x08\x14\xfb\xf2\xc6\xd0\x0f\x04\xe2\x4d\x70\xce\xec\xd8\xa5\x15\x45\x7f\xe0\x6c\x17\x10\xfc\xea\x0e\x75\x66\x6a\xe9\x24\xde\x33\x95\x96\xb6\x9f\x4e\xff\xfd\x9c\x94\x48\xa2\x0f\xbe\xc7\x2d\x75\x4e\x06\xfd\xfd\x6c\x6a\xc7\xe3\x37\x57\x77\xfe\xcf\xa0\xa0\x47\x24\x10\x16\xbc\x4b\x86\xe1\xbe\xf8\xa6\xc7\x75\xeb\xc3\xb3\x9b\xab\xbb\x69\x54\xd2\x9f\xf9\x3f\xa6\x41\x26\xe7\x6b\xc9\x9e\xbe\xba\xd8\x78\x8f\xec\xa5\x76\xa0\x27\x2d\x5c\x53\xa3\x3d\xce\xc6\xd0\xff\x34\xb9\xeb\x69\x98\x01\x75\x9c\xc8\x31\xd0\xba\xba\x2d\x82\xc7\xb1\xd5\xd5\xff\x69\x8a\xc5\xd3\x04\x5d\x03\xeb\x47\x09\xd9\x53\xad\x64\x76\x82\xa3\xd9\xe0\xef\x53\x5b\x3a\xa1\xbb\x26\xba\x77\x39\xbd\x39\x81\x19\x4f\x16\xf0\xd3\xdd\xa1\xc4\x4f\xe9\xdc\xfd\xa7\x4e\xdd\x42\x0f\x7e\x1d\x9f\xe2\x5c\x52\x59\x16\xe4\xf0\xd5\x78\x32\x1d\x32\xdc\xed\x9c\xa1\xc3\x3f\xf2\x03\x29\x14\x45\x39\x18\xff\x67\x85\x82\x91\xe2\xfb\x8f\xdf\x0c\x05\xb9\xb9\xba\x6b\x4a\xf6\x97\x44\x91\x2f\x03\x3c\xc5\x87\x66\x4b\xcf\x3c\x9a\xaf\xc6\x71\xbd\xe8\xd3\x73\xcc\x90\xb0\x3b\x58\x93\x32\xfe\xbb\xf3\xeb\x7a\xa2\xc9\x02\xde\xb2\xc3\xad\xc9\xcb\xdb\x45\x19\xb9\xa7\x2a\xdb\xda\xdc\xab\x5b\x95\xca\x88\xc4\xe3\x22\x5e\x74\x60\xa0\x51\x97\x24\xd0\x38\x09\x01\x75\x80\x13\xed\x04\xe3\x5d\xbb\xec\xf3\xff\xa2\xe0\x26\x06\x0c\x5e\xf5\xc3\xd7\x99\xec\xa2\x45\xeb\xdf\xee\xee\xbe\xbb\xa2\x05\xf6\x13\xab\xff\x55\xa2\x58\x04\x86\x79\xb6\x41\xf5\x23\xae\xae\x04\x45\x96\x17\x87\xef\x3f\x7e\x33\x36\x23\x62\xc2\x3a\xce\x76\xd2\x3b\x47\xfa\x4d\xf7\x69\x9f\x98\x9a\xad\xf5\x0c\x31\x79\x4f\x66\xa5\xc1\x68\x31\x75\xd9\x63\x7b\x21\xce\x79\x4d\xb5\x1b\x6f\xbf\x6b\x3c\xfb\x70\x6a\xc3\x9d\xfd\x0c\x7a\x6b\xb0\x7e\x59\x25\xed\xe6\x6c\x55\xd1\x22\x6f\xa0\x73\x5c\x93\xaa\x50\x1f\x31\x43\xfa\x80\xc2\x1e\xb7\xc5\x53\x6d\x50\xd9\xf1\x87\x7a\x54\x7d\x86\x37\x9e\xfc\x66\x69\x45\x86\xea\x39\x12\x6b\x00\xc7\x23\x7f\xbc\x4c\xca\x72\x16\x9e\x68\xcf\x6d\x11\x73\xee\x92\xcb\x0b\x22\xd4\x7c\xa4\x95\x31\x23\x6a\xec\x5c\xd3\x4c\x71\x1b\xee\x8e\x27\x89\xd5\xf4\xd1\x9d\xb2\x96\x47\xa9\x0f\x76\x8c\x33\x59\xfe\xec\xd9\x98\x2e\x1f\xb9\xdc\xd5\x06\xec\xf5\xd7\x37\x57\x77\xda\x8e\x1a\x8f\x65\x9f\x6b\x8b\xf5\xa5\x34\x0e\xb3\x5e\x7f\x08\x99\x69\x1f\x70\x94\xae\x74\xe5\x1e\x62\x1f\x11\x8c\x0f\x0b\xc6\xc3\xea\xfb\x6f\x75\x10\x7c\x7d\xa9\xa3\x01\xab\x0f\x03\x8e\x10\x66\x71\xa0\xfe\xa5\x07\x09\x89\x38\xea\x37\x1e\x23\xf4\x56\xe5\x05\x12\x85\xef\x77\xa5\x3a\x34\xaa\xa1\x09\xf8\xfa\xb1\x13\x2d\x37\x03\x9e\x92\xc4\xbc\xbe\xb0\xd8\x20\xc4\xd4\x1b\xd5\x9b\xe2\x93\xab\x3c\x51\xa6\x50\xac\x49\x86\xb6\xc8\x57\x49\x14\xd2\x94\x1d\x32\x22\x4d\x85\x84\x8a\x30\xf4\x6f\xf0\x03\xf1\x1d\x0b\xa0\x38\x90\xa2\xe0\x7b\xe0\x6a\xab\xc1\x15\x87\xdc\x76\x57\x84\xa0\x94\x29\xee\x10\x36\x58\x66\x70\xad\x80\x14\xd2\x61\x90\xa6\xf2\x25\x90\xe4\x3e\xe7\x35\x27\xe5\x75\x17\x4c\xab\xb3\x80\x32\xf3\x32\x40\x77\x3c\x15\x69\x16\xdb\xee\x88\x88\x72\x8c\x94\xc4\xe6\x73\x2d\x33\xb7\xac\xb1\xb1\x65\x49\x49\xdd\x5c\xdd\x3d\x4d\x86\x47\xbd\xd7\x97\x36\xe6\xb5\xa1\xfe\xa7\x81\x80\x2b\x2e\x04\xdf\xdf\x5c\xdd\x8d\xff\x1e\x24\x38\x93\x05\xbc\x48\x13\xf4\xe6\xb4\x36\x5a\x94\x0d\x6f\xc7\x31\xde\xc0\x4c\xdc\x5c\xdd\xb5\x83\x38\x5b\x62\xd5\xa2\x10\x28\xab\x42\x01\x95\xec\xa5\xb2\xbe\xdb\x28\x59\xee\x4b\x5e\x56\x5f\x31\x07\x81\x6b\x14\xc8\x32\x6c\x23\x92\x5b\x5e\x15\x39\xac\x30\x3c\xe9\xb2\x25\x6e\xb1\xa9\x76\x68\x8e\xc3\x5c\xf9\xcc\xf6\x5e\x44\x18\x4a\x2e\x55\x22\x90\x1c\x3b\xc2\x96\xe6\xfc\x6a\x02\xff\xfc\xa7\x7f\xf4\xc6\xa4\x44\x4b\xa0\x79\x8f\xd5\x1b\xbd\x23\x8c\x71\xe5\x38\x14\xaa\x5f\xbd\x86\x85\xc9\x4a\x9b\xc2\x5e\x77\x95\x7a\xbb\x51\x96\x71\x21\x30\x53\xa3\x96\xd1\xec\xdb\xa7\x8d\x92\xfa\x27\x6f\x21\x6b\x36\x60\xa2\xcb\x86\xef\x99\xad\xa9\x13\xa6\x25\xcd\x2b\xa6\x06\xe5\xe8\xcd\x4c\x31\x0f\xda\xdb\x24\x8e\x64\x1b\x4b\x79\x7c\xdc\x11\x73\x16\x0f\x4c\xd6\x03\x02\x93\xf3\x18\xa6\xd2\xf3\x56\xd3\xcf\xcd\xd5\x1d\x64\x9c\xad\xb9\xd8\x69\x8f\x61\xc3\x8d\x68\xbc\x2b\xf4\x93\x66\xdd\x26\xed\x30\xc7\xaa\x84\xc1\x3f\xac\xba\xff\x43\x0b\x72\x4d\xb1\xc8\x8f\x6f\x46\x22\x2c\xbb\x35\xe3\xb5\x29\xb0\xd0\x0b\x48\x6f\xc1\xa7\x98\xf4\xbd\x6b\x5e\x03\x81\x3b\xfe\x80\xbe\xa0\x62\x7b\x0d\xed\x81\x48\x63\x68\x59\x0e\x76\x10\xad\x75\x3f\x23\x45\x11\x54\x10\x1c\x81\x9d\x99\x7d\x8f\xdc\xc4\xec\x71\x3f\xe9\xd8\xff\x11\x74\xa4\xf5\x1a\xb3\x44\x8f\x86\xed\x2f\x7c\xed\xda\x0e\x6a\x26\xcc\xec\x5a\xc6\xf7\x78\x58\x40\x33\x45\x37\xfa\x78\xf3\x06\x4a\xc2\x68\x36\x1e\x05\x66\x25\x30\xe2\x1e\x76\x01\xef\x8c\x2d\xd0\xbb\xaf\x66\x98\x63\x94\x11\xda\xf5\x25\x8c\x7a\x83\x6e\x1f\x5b\x36\x94\x84\xe1\xe5\x49\xb0\xd1\x0c\xde\x6d\x31\xbb\xb7\x66\xa8\x5a\xed\xa8\x52\x68\xaa\xf7\x8a\xc3\x8e\xdc\xeb\x87\x02\xb5\x48\xec\xd9\x91\xf5\x9f\x4a\xbb\xd6\x70\x8f\xee\x99\x9c\x8d\x26\x93\x38\x30\xc2\x1d\x6d\xf5\x2f\x1a\x96\xce\x68\xee\x3b\x18\x6b\xce\x8a\x37\x33\x62\x3b\x12\x27\xc9\xe0\xea\xf5\x45\xd3\x55\x06\xed\xfe\x85\x79\xed\x87\x15\xb9\x37\x3d\x69\x9a\x75\x5a\x9f\x48\x9e\x47\xea\x54\x53\x2c\x83\x5d\x15\x61\xaa\xa1\x94\x35\x75\x0e\x92\xe6\x40\x84\x20\x87\x93\x0e\x66\xa0\xeb\x3c\xa6\x6e\xf6\x0f\x22\xcf\xe1\xeb\xd8\x1f\x9d\x75\x60\x4c\x99\xcb\x33\xf5\xac\xed\x63\x48\x9e\x1b\xe2\x19\xee\x1d\x52\xb7\x9a\xc0\xa2\xec\xb7\x34\xdb\xd6\xdb\xd3\x1c\x82\x17\xb9\x16\x74\x67\x2e\x5e\xe4\x77\xe9\x1d\xf1\x13\xcd\x3f\xd5\x84\x27\x54\x20\xec\x41\xd5\xb2\x57\x7c\x88\xe4\x73\x94\x4a\xf0\x43\x3d\x6f\x9f\xec\x6d\x78\xe1\x14\xc5\x58\x18\x23\x29\xef\xa4\xf4\x3b\xa3\xb3\x44\xab\x31\x6b\xe9\xc1\x97\x46\x30\x47\x82\xe5\xc6\x50\xdc\xe3\x41\xa6\xa9\x6e\x42\x9b\xf0\xe1\x7f\xa1\xb2\x66\xdb\x7b\x53\x1d\x71\xba\x83\xdb\x5e\xc2\x75\x2c\xc1\xfd\xae\xf4\x16\xd3\x84\xb6\x3a\xbe\x04\xaa\x82\xa3\x4d\xad\xdc\x7a\x80\x7f\xba\xe5\x51\xab\xce\xff\x51\x54\x96\xe6\xd5\x8b\xae\x0e\x1d\xe5\x55\xb3\x15\xbe\x94\x65\xa6\xa0\x1f\xc4\x12\x51\xab\x01\x7e\xd6\x3a\xca\x36\xe6\x3c\x9a\xaf\x0d\x87\x8c\x77\x94\x30\xa6\x2c\x2b\xaa\xdc\x78\xdb\xad\x75\xa6\xd7\x97\x93\xee\xe1\x3f\x95\x20\xc9\xda\xc7\x71\x02\x8d\xc6\x31\x5e\x07\x70\x4e\x0f\xdd\x61\xa7\x11\x94\xde\x69\x06\x69\xb0\xd1\x87\x0a\xe4\x37\x87\xb3\x74\x9d\xda\xc7\xe7\x26\x74\x4c\xc4\x96\xf6\x28\x78\x0d\x4b\x18\x27\x64\xa7\x57\xdd\xa7\x00\x93\xf3\x0e\x32\xa7\x04\x1a\x9f\x36\x74\x2d\x4a\xe3\xc0\xf1\x44\x2f\x5f\xbb\x51\x2b\xd9\xcd\xa7\x0d\xc5\x5f\x6d\x64\xab\xd9\x6d\x94\x59\xd4\xb7\x2c\x7c\x1b\x4a\x89\x99\xed\x36\xd1\xfa\x73\xe2\xd4\xa5\xb5\x1f\xc2\x98\xae\x25\x85\xc7\x64\xbc\xd7\xd9\x17\x74\x6d\xbb\xb2\xd6\x0a\x96\xa9\xdd\x71\x8c\xc3\x47\xb8\xb3\x56\x16\x30\x4d\x44\x0f\xe7\x7a\xd8\x3b\x20\xdd\xb7\xdc\xa8\x43\x66\x43\x63\x9b\x1f\xad\x83\xaf\x3e\x0b\x61\x58\x90\xd4\x70\x9a\x4f\xfe\x80\x12\x44\x9a\xaa\x53\x35\x88\xc1\x1e\xe5\xd6\x5e\x68\x31\x02\xbe\x3b\x94\x68\xfc\xcb\xa3\x2d\x67\xfd\x95\xf3\xa2\x67\xfe\xc7\xa8\x06\x06\x0b\xd3\x69\x38\xb8\x83\xb5\x26\x80\xca\xf6\xfc\xe3\xe0\x24\x03\x2c\x09\x69\x0a\xec\xf9\xf4\x32\xa2\xa3\xc7\x74\x0f\x38\x06\x84\x74\xc7\x66\xad\xfa\x3a\xb0\x78\xec\x4f\x1e\x93\xb2\xf5\x2f\x4b\x5b\xf4\xf0\x06\xd8\xc5\x01\xec\xa0\xe3\x58\x5b\xfc\x29\x0a\xed\x31\x9c\x44\x89\x89\x94\x50\xe3\x6a\x7b\xda\x9e\xcc\xb2\x5f\xbb\xd8\x5a\xdd\x85\x27\x43\x43\xab\x5d\xb5\x96\x41\x9f\x9a\xb9\xb5\xa7\x48\x09\x7b\x93\x5d\x50\xb5\x70\x17\x7d\xa6\x36\x3a\xbb\xce\x17\xfe\xc4\x7c\x01\x2f\x12\xcd\xa3\xa6\x5d\x26\xcb\xb4\x0d\xda\xa0\x7a\x6b\x93\xeb\x71\x1d\xa1\x85\xc3\x1a\x16\x7d\x34\x6e\x41\x83\xcd\x32\x52\x92\x15\x2d\xa8\xa2\x68\x0a\xf9\xaf\x5f\x3c\x26\xb3\x1f\x9b\x40\x3f\x7d\x65\x6b\xe2\xa9\x9b\x3b\x93\x73\xb7\xf9\xc7\x93\xb3\x3f\xfd\xe9\x4f\x4d\x36\xd5\x64\x4b\xae\x56\x51\xcf\x79\xb0\x89\xa5\x13\x7b\x43\xdf\x28\x08\x2d\x1d\x83\x23\xe2\xd3\x56\xc6\x31\x6c\x72\x1e\x57\x81\x8f\xf0\x9f\xca\x77\xa6\xff\x77\x6c\xbb\xac\xae\xeb\xbe\x96\x49\x67\x3f\xd1\xb0\xaa\x31\x73\x7d\xd7\xe6\xd0\x8a\x50\x26\xff\x07\x0f\x35\x8e\x54\xae\xe0\xba\xb8\x96\x91\xe3\x74\x48\x7e\xf2\x80\x9f\xce\x8d\xe5\xb7\xf7\x50\x52\x1b\xd9\x75\x31\xda\x9e\xe5\x66\x87\xa5\xfc\xad\x83\x68\xdf\x88\x38\xad\x8f\xa9\x83\xba\x9a\x27\x9d\xaa\x37\x5d\x43\x25\x8a\x99\x2c\x68\x86\x63\x9b\x22\xbe\x9a\x42\x55\xde\xf1\x05\xfc\x65\xa2\x8d\xce\x88\x96\x6b\x39\x4a\x53\x37\x6a\x5d\x31\xdc\x1d\x4a\xca\xcc\x59\x60\xc1\xab\x7c\xae\x21\x9b\xb3\x98\xf6\x3c\xff\xe9\xe7\xd1\x2f\x0a\x64\x1b\xb5\x0d\xd2\xe7\x63\x4c\xa9\x44\xd1\x6b\x9e\xcc\xcd\x32\xff\xe3\x63\x5d\x8f\xb1\x76\x08\x88\x7e\x0b\x5c\x80\xe4\x3a\x1a\xd7\xbc\x90\x74\x47\x0b\x22\x60\x6f\x94\x9c\xef\x4d\xce\xb6\x42\x8f\xc2\x5c\x05\xf3\x5d\xa1\xda\x5a\x69\x13\x39\xa8\xf6\x65\x28\x89\x4b\x4b\xa6\x03\xd0\x5d\x53\x92\xc4\x96\x67\x72\x58\x0b\xc4\x5f\x5d\x2e\x18\xde\xed\xf2\x29\x06\x0b\xdb\xf5\x42\x6c\x9e\x2c\x1d\x3c\x75\xfb\x53\xfb\x9b\x7a\x3c\x0d\x5f\x7e\x81\x28\x16\x4b\x29\x12\xd1\x62\x7c\x7e\xa2\xa3\xdc\xd1\x08\x16\x30\x32\x76\xbb\x6e\x2b\xee\x94\x59\xda\xa7\xb0\x5a\x05\xdd\x95\x93\x57\x13\x03\xef\x9e\x37\xf5\xdc\x5f\x51\xf0\x7e\x3c\xf1\xb5\x98\xfa\xf6\x8a\x46\xf5\xa1\x79\xd5\x60\x33\x99\x33\x7d\xc0\x0e\xc6\xf3\x53\xe6\x23\x5a\xb0\x9b\x40\xda\x6b\x1d\x3a\x33\x3c\xb8\xfe\xcf\xbe\x2a\xad\xfe\x97\x32\x2e\x11\xda\x4f\xb0\x74\xf7\xdc\xba\xa7\xc2\x8d\x34\xfd\x5f\xdd\x06\x81\xae\x74\x8f\xde\xdf\x7a\x56\xd4\x47\xe5\xad\x59\x60\xd7\x18\x1f\x8d\x6e\x86\x5a\xe5\xe7\x90\xd2\xbd\x58\x95\xa2\x29\x79\xd1\x2a\xa9\xcc\x83\x3d\x47\x23\x74\xed\x2e\xd7\xbc\x62\x1d\x79\xff\x1e\xbe\xe5\x88\x73\x49\xdc\x29\x7b\x0e\xe7\xda\xea\x90\x64\xdc\xa9\xa3\xcc\x7f\x75\x1e\x26\x4f\x70\xcf\x7b\x42\x6e\x6d\x82\x1d\xaf\xb5\x21\xd6\x3f\xa5\xbf\x94\x6b\xc3\x23\xdf\x02\xee\xaf\x59\xd9\xeb\x01\xe1\x9d\x0a\x7b\xd0\x45\xd5\x4b\x73\xbf\x37\xba\x0a\x3c\x85\x52\xf0\x07\x9a\x23\x7c\xf8\xf6\xd2\x15\x48\x0b\xca\xee\x81\xaa\x06\xe3\x07\x22\xee\x51\x95\x05\xc9\x10\xf4\xc6\x5f\x11\x89\x11\xf6\x6f\xd5\x16\xc5\x9e\x4a\x9c\x82\x36\xbc\xe6\xd6\xb8\xc6\xf4\xea\xb4\xbf\x88\xd7\xd7\xd1\x87\xf6\x15\x74\x58\xb4\xab\xa8\xff\xf2\xca\xa1\x2d\xaf\x50\xe3\xfe\x0d\x06\x5f\xe9\xa8\x69\x87\x52\x92\x0d\x2e\x60\x74\xc3\xed\x37\x16\xdc\xfd\x3a\xe7\xa7\x47\x93\x04\x69\x41\x67\x64\xad\x7b\xcd\x75\xc7\xf3\x0e\x00\x06\x4d\xc6\x66\x7c\x7c\x05\x36\x1a\x5f\xbb\x8e\x54\x1f\x2f\xfa\x36\xa6\x08\xa4\x4e\xf0\x5c\x6e\xd6\xae\x0d\xd9\x5b\xcc\x7b\x2d\xd5\x26\x63\xd2\x6a\xd1\xf1\x34\xbe\xd9\x34\x60\x79\x70\xed\xbe\xeb\x99\xbe\xcc\x7b\x0d\xdb\xb0\x60\x5c\x59\xf4\xd3\xd4\xc9\x83\xef\x2d\xf4\x90\xe9\x3b\xf1\x63\x2f\x1c\x7c\x87\xa1\x69\x16\xb3\xbb\xc0\xfc\xaf\x35\x57\x1a\x37\x2c\xfb\x5e\x84\x97\x6c\xdb\x15\xab\x23\x4a\xb8\x5c\xc2\xab\x44\x5d\x2a\x4c\x3a\x5a\x0a\x92\xee\xab\x79\x7d\xe1\x44\x3c\x2c\xef\x08\x4b\x2c\x61\x23\x91\x4c\x74\x12\xbd\x49\xf5\xe1\x26\x7b\x70\xbf\xa8\x7b\x75\x78\x83\x54\x0d\xf6\x69\xd0\xd2\x86\xf5\x49\xbd\x09\x1b\xa4\x8e\x35\xa8\xba\xe6\x54\x3f\xb8\x25\xb4\xdf\xd6\x8f\x96\xec\xa4\xeb\x80\xa6\x7b\x0a\x65\xf8\x45\x8e\x64\x15\x21\xf8\x4c\x47\xba\xfb\xb4\x0c\x3e\x04\x72\xa4\x0e\x71\x0a\x41\xd0\x38\x60\x59\xf1\x22\x89\x2c\xd9\x83\xdc\x60\xf9\x86\xb2\x7b\xcc\x83\x46\xb6\x67\x62\x49\x56\x9a\xae\x5c\x71\x6b\x61\x34\xe3\xd9\x55\xcd\x84\xac\x5e\x5f\x04\x64\x0d\xa8\x6e\xbd\xfe\x3a\xa2\x3d\x7d\xe6\xfc\xd4\x79\x3a\xf9\x02\x2d\x3b\xd2\x51\x38\x40\xd1\x8e\x35\x46\xdb\x36\xdc\x91\xfd\x66\x51\x78\xef\x70\x94\x96\x45\xd4\x12\xed\xc1\x4c\xd7\x85\xe4\x19\x25\x05\x94\x05\x51\x6b\x2e\x76\xb0\x37\x67\x41\xda\x57\x1c\x6c\x8a\x4f\x6d\xfb\x97\x49\x0c\x58\x0e\x65\x25\xb0\x38\xc0\xda\x9d\xc9\x16\xb3\x9e\x19\xb1\x69\x3f\x6d\x37\xcc\x26\x3b\x53\xc3\xae\xd4\x51\x8f\x46\xc9\x5f\x2a\x22\xd0\x5c\xa8\x6e\xe3\x34\x37\xae\xfb\x7b\x7d\xad\xbf\xfb\xe2\x6e\xee\x24\x95\xf3\x2d\xdf\xe1\x9c\xee\x36\x73\xf3\x69\x26\xf7\x99\xa6\x82\x6f\xf8\xac\x64\x9b\xfe\x16\x88\x9e\xc5\x81\x71\xe3\x39\x25\x56\x55\x47\xf6\xb2\x73\x2f\xa6\x1e\x2c\x2b\xc2\x18\x8a\xff\xdf\x2c\xb2\x34\xce\x7e\x2e\x7f\x2f\x26\xfd\x5c\xe2\xf3\xb8\x64\x95\x5e\x2e\x8e\x58\x97\x11\x65\x52\x91\x8d\x20\xbb\xd1\x20\xfd\xdd\xef\xf7\xb3\x1a\xc4\x7c\xbf\xcb\xae\xf6\xa8\x42\x9b\x89\x74\x88\xc1\x73\xce\x86\xcd\xe3\x47\xcf\xec\x1a\xe6\x5f\xdb\x69\x8e\xce\xa0\xf6\x54\x29\x14\xc3\x26\x70\x83\xbb\x4b\x78\xb6\xa1\x7c\x6a\x07\x29\xfe\x70\xae\x29\x38\xb6\x4f\x5c\x5c\x59\xd0\x5c\xb8\x9a\xc4\x57\xcc\x6e\x51\x01\xaf\x84\x31\x7d\x39\x94\xf5\xc7\xb9\xc0\x9f\xc1\x24\xfd\x2c\x2c\x61\xee\x1c\xb3\x5b\x4d\xe3\x2d\x1a\x80\x1f\xfe\xbd\x0f\x55\xe3\x70\x35\x26\xeb\x18\x9f\x81\xa8\xfd\xa9\xae\x90\x9c\xbc\x86\xb7\x65\xd7\x28\x9f\xad\xf9\x62\x0f\xf1\xcd\x77\xbc\xa4\x09\x70\xe3\x09\xe2\x90\xf8\xd5\x59\xfc\xd6\x7f\x20\x65\x09\x8f\x71\xda\xfd\xce\xa7\x29\x41\x1f\x5f\x5d\x7b\xd5\x66\x5e\x92\x07\x74\xad\x48\x8e\xde\x1a\x3c\x3e\x4c\x39\x76\xf6\x53\xd3\xe1\xba\x1e\x67\x0e\xd5\x4c\x63\x1f\xbf\xbe\x68\xb0\x04\x5d\x36\x49\x31\x4e\x22\xea\xeb\x24\xcb\x1f\x9d\x04\x27\x2a\xee\x70\x3c\xd1\x7a\x12\xd3\xfd\x8e\x94\xfe\x13\x45\x9e\xba\xe8\x30\xc8\x93\x4a\xa5\xac\xfa\x43\x9f\x63\x14\x27\x39\x10\xcd\x61\xc8\x97\xdb\x71\x44\xd5\x14\x88\xea\xb0\x22\x38\x67\x4a\xcb\xd1\xd6\xcb\x9f\x23\x42\x5b\xcd\x6f\xa4\x67\x30\x0c\x14\x9c\x81\x0d\x64\xd6\x56\xf3\x80\x48\x93\x2a\xf6\x7f\x45\xf0\xe9\xec\xe9\xec\x7f\x03\x00\x00\xff\xff\xef\x96\x81\xe1\x8a\x52\x00\x00" func contractsDigitalartCdcBytes() ([]byte, error) { return bindataRead( @@ -104,7 +104,7 @@ func contractsDigitalartCdc() (*asset, error) { } info := bindataFileInfo{name: "contracts/DigitalArt.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0x19, 0x9f, 0xe5, 0xb, 0xb2, 0x8b, 0x31, 0xad, 0x58, 0x5, 0x18, 0x5a, 0x40, 0xf7, 0xf2, 0xa, 0x81, 0xfe, 0x9f, 0x99, 0x20, 0x80, 0xde, 0xc6, 0xf4, 0xd8, 0x5d, 0x12, 0xe0, 0xa0, 0x1b}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x29, 0xe5, 0x8d, 0xed, 0x7f, 0x98, 0x4f, 0xd1, 0xdd, 0xd3, 0xc0, 0xc8, 0x3, 0xa4, 0xe8, 0xf, 0x5a, 0x42, 0x67, 0xec, 0xd9, 0x28, 0xdd, 0xbc, 0x8, 0xb2, 0x98, 0x9, 0xfe, 0xfc, 0xf2, 0xde}} return a, nil } @@ -468,7 +468,7 @@ func contractsThirdpartyVersusContentCdc() (*asset, error) { return a, nil } -var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\x4b\x53\x1c\x49\x0e\xc7\xcf\xcd\xa7\x70\xd4\xd9\x6e\x94\xef\x4c\x6e\x5e\x7b\x7d\xf3\x1e\x8c\x77\x2e\x8e\x89\x09\xa5\xa4\xc4\x1d\x34\x55\x4c\x55\x35\x8c\xc3\xe1\xef\x3e\xd1\x74\xd1\x2f\x0a\xe8\xe9\x03\x13\x70\x82\x4c\xfd\xc5\x4f\x4a\x29\x1f\xf5\xf3\x64\x52\x51\x53\xf7\x2d\x52\xdf\x55\x67\x6f\x7e\x9e\x4c\x26\xd5\xfb\xb6\x1f\x7e\x9d\x54\x5d\xb3\x68\x49\xaa\xb3\x37\xd5\xf4\x74\x6d\x78\xda\x7f\x9f\xb5\x7c\x8d\x6d\xff\xe3\xf4\x46\xda\x6e\xd1\x9d\xbe\x6f\xfb\x29\x31\x55\x6f\xef\x54\x38\x9f\x61\x27\xf7\x0e\x27\x93\xea\x0a\x67\x75\x2d\x4b\xb7\x15\x87\xe4\x4b\x51\x41\x41\xc8\xb9\x14\xbf\x92\x4c\xaa\x5e\xba\x7e\x30\x49\x89\x10\xac\x8e\x0a\x52\xcc\xc6\x70\xb5\xb4\xf8\x75\x32\x99\xfc\x5a\xda\x56\xff\x59\xb4\xb5\xb4\xcf\x20\x76\x3d\xd6\x8c\x2d\x9f\xae\xac\x9f\x82\x93\xab\xc5\x1c\xfb\x66\xe9\xb1\x2a\x91\xbd\x80\x8b\x3e\x03\x6a\xa0\x70\x4f\xb7\x15\x40\xd1\xc6\x30\x89\xc4\x58\x04\x30\xcb\x76\x00\xb3\xfa\x62\x69\x02\xbb\x3f\x61\x2c\x46\x84\xe0\x3d\x27\x93\xbd\x87\x98\xc3\x5e\x8c\x1f\x9a\xba\x97\xfa\x9f\xaf\xc3\xa0\x7b\xb1\xb5\xf8\x38\xbb\x98\xf5\x38\x7f\xbe\x64\x36\x86\x07\xb2\x19\xca\x81\x44\xb2\xd7\x0e\x3d\x00\x8e\xb0\x05\xeb\x32\x44\xc7\x58\x98\x6d\x21\xd8\x63\xfb\xef\x8d\xb4\x17\xad\x48\xfd\x0c\xda\xda\xee\xe5\xc8\xfe\xc2\xab\xeb\xb9\x7c\x6d\x2e\x9f\x85\x1b\xaa\xea\x74\x5b\xf2\x38\xe7\xe6\x5f\x7c\x9a\x37\xb7\x87\xf8\x5f\xf7\xc9\x5a\x70\x68\xab\x00\x8a\x33\x94\xbd\x98\x62\x35\x86\x34\xd2\x2a\xca\x3b\xeb\x9d\x31\x29\x81\x05\xf4\xea\xf9\x56\x31\x63\xc9\x14\x0f\x5c\xc0\x6a\x4c\x04\xd1\xc7\xbd\x64\x7e\x5a\xd4\x17\xb3\x7c\x58\x36\x37\xd1\x6e\x8b\x0e\x8d\x58\x24\xea\xe8\x7c\x2e\x1a\x44\x23\xfa\x7f\x6b\x73\xd8\x81\xff\x2c\x3d\x32\xf6\xf8\xdb\x4c\x6e\xbb\xa3\xc2\xdf\xf1\xf0\xaa\x73\x71\x7e\x3b\xeb\xe9\x7b\x6e\xb0\xe5\xa3\x32\xb1\xa5\x7f\x6d\x79\x38\xaa\x0c\x8e\x5a\xf9\x03\x8e\x48\xc5\x41\x5c\x40\x74\x2e\xaa\x60\x6d\x7c\x3e\x62\x35\x12\xb1\x37\x4a\x62\x44\x09\x45\x71\x20\xbd\xbf\x89\xfe\xef\xd3\xd7\x0f\xd8\xe3\xbc\xb9\x38\xfc\x94\xac\x4b\xff\x07\xad\x44\xa7\x1b\xfd\x81\xfb\xbe\x4d\x18\x88\xd1\xa0\x12\x21\xd2\x69\x04\xd9\x68\x4b\xc6\x8a\x22\xa7\x82\x58\xce\x0f\x91\xbf\x48\xdf\xce\xe4\x06\xe7\x47\x43\xaf\x3d\xbc\x24\xf6\x79\xdf\xb4\x52\xda\xe6\xd9\x2b\xc9\xba\xb6\x76\x44\x87\xa2\x4a\x8e\xa8\x80\x72\x2a\x31\x18\x37\xda\x06\x36\x83\xa7\x42\xa8\x38\xa2\x0d\x7e\x1f\xb5\xa9\x8f\x3a\x0f\xf6\x75\xaf\xad\x19\xce\xe5\xcf\x85\xcc\x3f\x63\x7b\x29\xfd\xf5\x1c\xef\x22\x7d\x2a\xf0\x07\xf6\x2f\x76\xf7\x59\xee\x35\x5f\xa4\x6b\xe6\x37\x87\xdf\xe1\xb7\x35\xaf\x6d\x65\xfe\x7f\xfe\xf1\xc3\xf2\x6e\xb5\x8e\xf5\xa9\xf4\x16\x85\x39\x25\x8a\x9a\x45\x8c\xd3\xfe\xb8\xa3\xc2\x5b\xe4\x62\x12\x65\x32\xce\x16\xda\x6a\xe7\x93\x3b\xa8\xaa\x96\xfe\xb6\x69\x2f\xd7\x2f\xbe\xed\xbc\x29\x1d\xa6\x30\x85\xa9\x3a\x33\xce\xaf\x36\x8b\x6d\x42\x24\x92\xae\x9b\x0e\x23\xd3\xba\x61\xe9\xa6\x4d\x5d\xe6\xcd\xed\xb4\x69\x2f\xce\x12\x00\xac\x44\x5b\xcc\x63\x3e\xb7\x78\x07\x9f\x2c\x37\x8f\xbb\x1c\xc8\x91\xa8\x59\xd4\xfd\x03\xf2\x77\xc3\xc4\x26\xcb\xcc\xad\x74\xdd\xe3\x95\x50\x5d\xca\x8f\xbb\x72\x25\x32\xa8\x7c\x48\x10\x02\xe8\x10\xc1\x39\x2d\x2c\x59\x52\xf0\x6c\x91\xa3\xd3\xca\x70\x28\xac\x95\x95\x50\x32\xc5\x94\x5d\x0c\x60\x8d\x90\x52\xe1\x2e\xb9\xab\x95\x5e\xb3\x74\x77\xcd\xf5\x0e\xf9\x6a\x56\x8f\x01\xa9\x90\xb2\xcf\x8a\xb2\x0f\xce\x89\x51\xbb\x40\x14\x20\x3a\x2f\xce\x66\x9d\xb5\x8b\x31\x22\x29\x83\x9c\x82\xcb\xe8\x9d\x66\xa0\xe4\x14\x44\xf6\xc0\x81\x8b\x0b\xcb\x25\x06\x6f\x93\x57\x3e\x05\xc7\xf2\x38\xd0\xf5\x1c\xfb\xd2\xb4\x57\xa3\x49\x32\x85\x58\x93\xc2\x10\x8b\x13\x91\x5d\xa6\x08\xa0\x5d\x01\x56\x45\x17\x56\x19\x41\x54\x2c\xd6\x06\x1f\x55\x61\xf6\xe8\x23\x7a\x2d\x18\x3d\x69\xd2\x45\x0a\x46\xa5\xb8\x40\xf4\x6c\x81\xb3\xa1\x11\xa6\x45\x27\xad\x1a\x23\x11\x30\x8c\x92\x85\x23\x21\x78\xe5\xf6\x96\xcb\x8b\xf6\x3a\x6a\xc6\x92\xb5\xf5\xec\x62\x08\x51\xc5\xc0\x26\x70\xd0\x52\x90\xc5\xf8\x90\x08\x7c\x46\xab\x4d\x74\xce\x2c\x33\xc8\x25\xe6\xac\x64\xf5\x7e\x1d\x21\xd1\x63\x24\x60\x1d\xaa\xe0\x0d\x25\x03\xe0\x09\x77\x49\x14\xf9\x92\x7c\xd4\x44\x51\x02\x28\x1d\xc5\x38\x5f\x92\x63\x65\x8a\x55\xac\x0b\x79\x4a\x36\x19\x93\x42\xf6\x49\xa0\x14\xc8\xaa\xf8\xa2\x0b\x08\x81\x1e\x2b\x9c\x25\x89\x19\xad\x18\x0d\x12\xb4\x03\x07\xc6\x02\x61\xde\x25\x49\x26\x2b\x9b\x8d\x13\x9d\x59\x8b\xe1\xe4\x19\x58\x90\x9c\xcf\x51\xa5\x94\x23\x82\x66\x61\x29\x4e\x93\x5e\x02\xb2\x57\xa4\x75\xb1\xc9\xb2\x44\xb5\x22\x19\x1a\x8c\xe5\x7a\xde\xfc\xb8\x92\x91\x1e\x5b\x83\x8d\x34\xdd\xb7\xd5\x26\xb4\x7b\x53\x78\xbb\x1e\xbc\xbf\xa8\x6d\x46\x36\xf7\xa0\x61\xec\x7d\xbb\x16\xdc\x7f\xfc\x18\xfe\xdc\x79\x2d\x2f\x87\x7e\x7f\xbb\x8b\xb1\xd7\x6f\x03\xcb\xe6\xf9\x3f\xf8\xd9\xfa\x56\x31\x8c\x3c\x3c\x35\x9f\x70\xbf\xd5\x3d\xdf\xf6\x4d\xee\x8b\x79\x74\x42\x3f\x36\x61\xee\x26\x86\xe4\x9f\xfc\x3a\xf9\x3b\x00\x00\xff\xff\x43\xcf\xa9\x27\x8e\x13\x00\x00" +var _flowJson = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x98\xcd\x53\x1b\xb9\x12\xc0\xcf\xe6\xaf\x48\xcd\x39\x31\xad\x6f\x89\x5b\x5e\xf2\x72\xcb\x3b\x84\xbc\xbd\xa4\xb6\xb6\x5a\xdd\x2d\xe2\xc2\xcc\xb0\x33\x63\xd8\x54\x2a\xff\xfb\x96\xf1\xe0\x2f\x06\xf0\xfa\xc0\x16\x9c\x40\xea\x6e\x7e\xfd\x25\xb5\xe6\xe7\xc9\xa4\xa2\xa6\xee\x5b\xa4\xbe\xab\xce\xde\xfc\x3c\x99\x4c\xaa\xf7\x6d\x3f\xfc\x3a\xa9\xba\x66\xd1\x92\x54\x67\x6f\xaa\xe9\xe9\x5a\xf0\xb4\xff\x3e\x6b\xf9\x1a\xdb\xfe\xc7\xe9\x8d\xb4\xdd\xa2\x3b\x7d\xdf\xf6\x53\x62\xaa\xde\xde\x69\xe1\x7c\x86\x9d\xdc\x1b\x9c\x4c\xaa\x2b\x9c\xd5\xb5\x2c\xcd\x56\x1c\x92\x2f\x45\x05\x05\x21\xe7\x52\xfc\x4a\x65\x52\xf5\xd2\xf5\x83\x48\x4a\x84\x60\x75\x54\x90\x62\x36\x86\xab\xa5\xc4\xaf\x93\xc9\xe4\xd7\x52\xb6\xfa\xcf\xa2\xad\xa5\x7d\x06\xb1\xeb\xb1\x66\x6c\xf9\x74\x25\xfd\x14\x9c\x5c\x2d\xe6\xd8\x37\x4b\x8b\x55\x89\xec\x05\x5c\xf4\x19\x50\x03\x85\x7b\xba\x2d\x07\x8a\x36\x86\x49\x24\xc6\x22\x80\x59\xb6\x1d\x98\xd5\x17\x4b\x11\xd8\xfd\x09\x63\x3e\x22\x04\xef\x39\x99\xec\x3d\xc4\x1c\xf6\x7c\xfc\xd0\xd4\xbd\xd4\xff\x3c\x0f\x83\xde\x8b\xe5\xe2\xe3\xec\x62\xd6\xe3\xfc\xf9\x92\xd9\x08\x1e\xc8\x66\x28\x07\x12\xc9\x5e\x3b\xf4\x00\x38\xc2\x56\xb8\x18\xed\x24\x69\xb0\x85\x92\xc5\x3d\xb6\xff\xde\x48\x7b\xd1\x8a\xd4\xcf\xa0\xad\xe5\x5e\x8e\xec\x2f\xbc\xba\x9e\xcb\xd7\xe6\xf2\x59\xb8\xa1\xaa\x4e\xb7\x55\x1e\xe7\xdc\xfc\x8b\x4f\xf3\xe6\xf6\x10\xfb\xeb\x3e\x59\x2b\x1c\xda\x2a\x80\xe2\x0c\x65\x2f\xa6\x58\x8d\x21\x8d\xb4\x8a\xf2\xce\x7a\x67\x4c\x4a\x60\x01\xbd\x7a\xbe\x55\xcc\x48\x30\x83\x78\xe0\x02\x56\x63\x22\x88\x3e\xee\x05\xf3\xd3\xa2\xbe\x98\xe5\xc3\xa2\xb9\xf1\x76\x5b\xe9\x50\x8f\x45\xa2\x8e\xce\xe7\xa2\x41\x34\xa2\xff\xb7\x0e\x87\x1d\xf8\xcf\xd2\x23\x63\x8f\xbf\xcd\xe4\xb6\x3b\xca\xfd\x1d\x0b\xaf\x3a\x16\xe7\xb7\xb3\x9e\xbe\xe7\x06\x5b\x3e\x2a\x12\x5b\xfa\xaf\x2d\x0e\x47\x95\xc1\x51\x99\x3f\xe0\x8a\x54\x1c\xc4\x05\x44\xe7\xa2\x0a\xd6\xc6\xe7\x3d\x56\x23\x1e\x7b\xa3\x24\x46\x94\x50\x14\x07\xd2\xb0\xe7\xf1\xff\x3e\x7d\xfd\x80\x3d\xce\x9b\x8b\xc3\x6f\xc9\xba\xf4\x7f\xd0\x4a\xe9\x74\xa3\x7f\xe0\xb9\x6f\x13\x06\x62\x34\xa8\x44\x88\x74\x1a\x41\x36\xda\x92\xb1\xa2\xc8\xa9\x20\x96\xf3\x43\xe4\x2f\xd2\xb7\x33\xb9\xc1\xf9\xd1\xd0\x6b\x0b\x2f\x89\x7d\xde\x37\xad\x94\xb6\x79\x76\x24\x59\xd7\xd6\x8e\xd2\xa1\xa8\x92\x23\x2a\xa0\x9c\x4a\x0c\xc6\x8d\xb6\x81\xcd\xe0\xa9\x10\x2a\x8e\x68\x83\xdf\x47\x6d\xea\xa3\xee\x83\x7d\xbd\xd7\xd6\x0c\xe7\xf2\xe7\x42\xe6\x9f\xb1\xbd\x94\xfe\x7a\x8e\x77\x9e\x3e\xe5\xf8\x03\xf9\x17\x9b\x7d\x96\x67\xcd\x17\xe9\x9a\xf9\xcd\xe1\x33\xfc\xb6\xce\x6b\xcb\xcc\xff\xcf\x3f\x7e\x58\xce\x56\x6b\x5f\x9f\x0a\x6f\x51\x98\x53\xa2\xa8\x59\xc4\x38\xed\x8f\xbb\x2a\xbc\x45\x2e\x26\x51\x26\xe3\x6c\xa1\xad\x76\x3e\xb9\x83\xaa\x6a\xe9\x6f\x9b\xf6\x72\xfd\xe2\xdb\x8e\x9b\xd2\x61\x0a\x53\x98\xaa\x33\xe3\xfc\xea\xb0\xd8\x26\x44\x22\xe9\xba\xe9\xb0\x32\xad\x1b\x96\x6e\xda\xd4\x65\xde\xdc\x4e\x9b\xf6\xe2\x2c\x01\xc0\x4a\x69\x8b\x79\xcc\xe6\x16\xef\x60\x93\xe5\xe6\x71\x93\x03\x39\x12\x35\x8b\xba\x7f\x40\xfe\x6e\xd8\xd8\x44\x99\xb9\x95\xae\x7b\xbc\x12\xaa\x4b\xf9\x71\x37\x5d\x12\x19\x54\x3e\x24\x08\x01\x74\x88\xe0\x9c\x16\x96\x2c\x29\x78\xb6\xc8\xd1\x69\x65\x38\x14\xd6\xca\x4a\x28\x99\x62\xca\x2e\x06\xb0\x46\x48\xa9\x70\x17\xdc\x55\xa6\xd7\x2c\xdd\x5d\x73\xbd\x43\xbe\x9a\xd5\x63\x40\x2a\xa4\xec\xb3\xa2\xec\x83\x73\x62\xd4\x2e\x10\x05\x88\xce\x8b\xb3\x59\x67\xed\x62\x8c\x48\xca\x20\xa7\xe0\x32\x7a\xa7\x19\x28\x39\x05\x91\x3d\x70\xe0\xe2\xc2\x32\xc5\xe0\x6d\xf2\xca\xa7\xe0\x58\x1e\x07\xba\x9e\x63\x5f\x9a\xf6\x6a\x34\x48\xa6\x10\x6b\x52\x18\x62\x71\x22\xb2\xcb\x14\x01\xb4\x2b\xc0\xaa\xe8\xc2\x2a\x23\x88\x8a\xc5\xda\xe0\xa3\x2a\xcc\x1e\x7d\x44\xaf\x05\xa3\x27\x4d\xba\x48\xc1\xa8\x14\x17\x88\x9e\x2d\x70\x36\x34\xc2\xb4\xe8\xa4\x55\x63\x24\x02\x86\x51\xb2\x70\x24\x04\xaf\xdc\x5e\xba\xbc\x68\xaf\xa3\x66\x2c\x59\x5b\xcf\x2e\x86\x10\x55\x0c\x6c\x02\x07\x2d\x05\x59\x8c\x0f\x89\xc0\x67\xb4\xda\x44\xe7\xcc\x32\x82\x5c\x62\xce\x4a\x56\xef\xd7\x11\x12\x3d\x46\x02\xd6\xa1\x0a\xde\x50\x32\x00\x9e\x70\x97\x44\x91\x2f\xc9\x47\x4d\x14\x25\x80\xd2\x51\x8c\xf3\x25\x39\x56\xa6\x58\xc5\xba\x90\xa7\x64\x93\x31\x29\x64\x9f\x04\x4a\x81\xac\x8a\x2f\xba\x80\x10\xe8\xb1\xc2\x59\x92\x98\xd1\x8a\xd1\x20\x41\x3b\x70\x60\x2c\x10\xe6\x5d\x92\x64\xb2\xb2\xd9\x38\xd1\x99\xb5\x18\x4e\x9e\x81\x05\xc9\xf9\x1c\x55\x4a\x39\x22\x68\x16\x96\xe2\x34\xe9\x25\x20\x7b\x45\x5a\x17\x9b\x2c\x4b\x54\x2b\x92\xa1\xc1\x58\xae\xe7\xcd\x8f\x2b\x19\xe9\xb1\x35\xd8\x48\xd3\x7d\x5b\x1d\x42\xbb\x93\xc2\xdb\xf5\xe2\xfd\xa0\xb6\x59\xd9\xcc\x41\xc3\xda\xfb\x76\xad\x70\xff\xf1\x63\xf8\x73\xe7\xb5\xbc\x5c\xfa\xfd\xed\x2e\xc6\x5e\xbf\x0d\x2c\x9b\xe7\xff\x60\x67\xeb\x5b\xc5\xb0\xf2\xf0\xd6\x7c\xc2\xfc\x56\xf7\x7c\xdb\x17\xb9\x2f\xe6\xd1\x0d\xfd\xd8\x86\xb9\xdb\x18\x82\x7f\xf2\xeb\xe4\xef\x00\x00\x00\xff\xff\x7f\xca\x79\xbc\x8e\x13\x00\x00" func flowJsonBytes() ([]byte, error) { return bindataRead( @@ -484,7 +484,7 @@ func flowJson() (*asset, error) { } info := bindataFileInfo{name: "flow.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x69, 0xf7, 0x17, 0xe, 0xb7, 0x4e, 0x77, 0x3a, 0xaf, 0x1a, 0x4f, 0x3, 0x6c, 0xd5, 0x27, 0xa6, 0xdc, 0x85, 0x39, 0x3c, 0x83, 0x28, 0x55, 0x5a, 0x3a, 0x8d, 0x34, 0xad, 0x95, 0x46, 0xf9, 0x94}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x57, 0xc9, 0xf3, 0x6b, 0xc2, 0xda, 0x75, 0x9c, 0xf8, 0xee, 0xa, 0x68, 0xa0, 0x54, 0xff, 0x91, 0xe2, 0xdc, 0xe2, 0x50, 0x10, 0x9e, 0xd9, 0x25, 0xbd, 0x3e, 0xe9, 0x99, 0xa4, 0x65, 0x4a, 0xf9}} return a, nil } diff --git a/transactions/account_add_flow_royalty_receiver.cdc b/transactions/account_add_flow_royalty_receiver.cdc new file mode 100644 index 0000000..2a0ba3d --- /dev/null +++ b/transactions/account_add_flow_royalty_receiver.cdc @@ -0,0 +1,73 @@ +import FungibleTokenSwitchboard from "../contracts/standard/FungibleTokenSwitchboard.cdc" +import FungibleToken from "../contracts/standard/FungibleToken.cdc" +import FungibleTokenMetadataViews from "../contracts/standard/FungibleTokenMetadataViews.cdc" +import FlowToken from "../contracts/standard/FlowToken.cdc" +import MetadataViews from "../contracts/standard/MetadataViews.cdc" + +transaction { + + let tokenVaultCapabilities: [Capability<&{FungibleToken.Receiver}>] + let switchboardRef: auth(FungibleTokenSwitchboard.Owner) &FungibleTokenSwitchboard.Switchboard + + prepare(signer: auth(BorrowValue, SaveValue, IssueStorageCapabilityController, PublishCapability, UnpublishCapability) &Account) { + // Check if the account already has a Switchboard resource + if signer.storage.borrow<&FungibleTokenSwitchboard.Switchboard>(from: FungibleTokenSwitchboard.StoragePath) == nil { + // Create a new Switchboard and save it in storage + signer.storage.save(<-FungibleTokenSwitchboard.createSwitchboard(), to: FungibleTokenSwitchboard.StoragePath) + // Clear existing Capabilities at canonical paths + signer.capabilities.unpublish(FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.unpublish(FungibleTokenSwitchboard.PublicPath) + // Issue Receiver & Switchboard Capabilities + let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + let switchboardPublicCap = signer.capabilities.storage.issue<&{FungibleTokenSwitchboard.SwitchboardPublic, FungibleToken.Receiver}>( + FungibleTokenSwitchboard.StoragePath + ) + // Publish Capabilities + signer.capabilities.publish(receiverCap, at: FungibleTokenSwitchboard.ReceiverPublicPath) + signer.capabilities.publish(switchboardPublicCap, at: FungibleTokenSwitchboard.PublicPath) + } + + // Get a reference to the account's switchboard + self.switchboardRef = signer.storage.borrow( + from: FungibleTokenSwitchboard.StoragePath) + ?? panic("Could not borrow reference to switchboard") + + if signer.storage.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) == nil { + // Create a new flowToken Vault and put it in storage + signer.storage.save(<-FlowToken.createEmptyVault(vaultType: Type<@FlowToken.Vault>()), to: /storage/flowTokenVault) + + // Create a public capability to the Vault that only exposes + // the deposit function through the Receiver interface + let vaultCap = signer.capabilities.storage.issue<&FlowToken.Vault>( + /storage/flowTokenVault + ) + + signer.capabilities.publish( + vaultCap, + at: /public/flowTokenReceiver + ) + + // Create a public capability to the Vault that only exposes + // the balance field through the Balance interface + let balanceCap = signer.capabilities.storage.issue<&FlowToken.Vault>( + /storage/flowTokenVault + ) + + signer.capabilities.publish( + balanceCap, + at: /public/flowTokenBalance + ) + } + + self.tokenVaultCapabilities = [signer.capabilities.get<&{FungibleToken.Receiver}>(/public/flowTokenReceiver)] + } + + execute { + for cap in self.tokenVaultCapabilities { + self.switchboardRef.addNewVault(capability: cap) + } + + } +} From c3429dac338dcab147c67e446221ce619d86af50 Mon Sep 17 00:00:00 2001 From: sequel21 Date: Tue, 12 Nov 2024 00:35:02 +0000 Subject: [PATCH 11/12] Disable errorchk rule --- .golangci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index 4c947ee..3c469af 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,6 +1,6 @@ linters-settings: errcheck: - check-type-assertions: true + check-type-assertions: false goconst: min-len: 2 min-occurrences: 3 From 68a44f5f1a672b3e99b545172e2201c8f1ac060e Mon Sep 17 00:00:00 2001 From: sequel21 Date: Wed, 13 Nov 2024 20:49:57 +0000 Subject: [PATCH 12/12] Update dependencies --- lib/go/iinft/evergreen/cadence.go | 2 +- lib/go/iinft/go.mod | 37 +- lib/go/iinft/go.sum | 2438 +---------------------------- lib/go/iinft/scripts/engine.go | 2 +- lib/go/iinft/types.go | 2 +- 5 files changed, 61 insertions(+), 2420 deletions(-) diff --git a/lib/go/iinft/evergreen/cadence.go b/lib/go/iinft/evergreen/cadence.go index ec000df..876977a 100644 --- a/lib/go/iinft/evergreen/cadence.go +++ b/lib/go/iinft/evergreen/cadence.go @@ -4,7 +4,7 @@ import ( "errors" "github.com/onflow/cadence" - "github.com/onflow/cadence/runtime/common" + "github.com/onflow/cadence/common" "github.com/onflow/flow-go-sdk" "github.com/piprate/sequel-flow-contracts/lib/go/iinft" ) diff --git a/lib/go/iinft/go.mod b/lib/go/iinft/go.mod index a3f4ad7..2e1fc9d 100644 --- a/lib/go/iinft/go.mod +++ b/lib/go/iinft/go.mod @@ -1,19 +1,19 @@ module github.com/piprate/sequel-flow-contracts/lib/go/iinft -go 1.22 +go 1.22.0 -toolchain go1.22.3 +toolchain go1.23.3 require ( github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de - github.com/onflow/cadence v1.0.0 - github.com/onflow/flow-emulator v1.0.1 - github.com/onflow/flow-go-sdk v1.0.0 - github.com/onflow/flowkit/v2 v2.0.1 - github.com/rs/zerolog v1.29.0 - github.com/spf13/afero v1.10.0 + github.com/onflow/cadence v1.2.1 + github.com/onflow/flow-emulator v1.1.0 + github.com/onflow/flow-go-sdk v1.2.2 + github.com/onflow/flowkit/v2 v2.1.0 + github.com/rs/zerolog v1.33.0 + github.com/spf13/afero v1.11.0 github.com/stretchr/testify v1.9.0 - golang.org/x/exp v0.0.0-20240119083558-1b970713d09a + golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f ) require ( @@ -147,17 +147,18 @@ require ( github.com/multiformats/go-multistream v0.5.0 // indirect github.com/multiformats/go-varint v0.0.7 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/onflow/atree v0.8.0-rc.6 // indirect + github.com/onflow/atree v0.8.0 // indirect github.com/onflow/crypto v0.25.2 // indirect - github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1 // indirect - github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1 // indirect - github.com/onflow/flow-ft/lib/go/contracts v1.0.0 // indirect - github.com/onflow/flow-ft/lib/go/templates v1.0.0 // indirect - github.com/onflow/flow-go v0.38.0-preview.0.0.20241002124048-21cfe5aea5a8 // indirect - github.com/onflow/flow-nft/lib/go/contracts v1.2.1 // indirect - github.com/onflow/flow-nft/lib/go/templates v1.2.0 // indirect + github.com/onflow/flow-core-contracts/lib/go/contracts v1.4.0 // indirect + github.com/onflow/flow-core-contracts/lib/go/templates v1.4.0 // indirect + github.com/onflow/flow-ft/lib/go/contracts v1.0.1 // indirect + github.com/onflow/flow-ft/lib/go/templates v1.0.1 // indirect + github.com/onflow/flow-go v0.38.0-preview.0.0.20241022154145-6a254edbec23 // indirect + github.com/onflow/flow-nft/lib/go/contracts v1.2.2 // indirect + github.com/onflow/flow-nft/lib/go/templates v1.2.1 // indirect github.com/onflow/flow/protobuf/go/flow v0.4.7 // indirect github.com/onflow/go-ethereum v1.14.7 // indirect + github.com/onflow/nft-storefront/lib/go/contracts v1.0.0 // indirect github.com/onflow/sdks v0.6.0-preview.1 // indirect github.com/onflow/wal v1.0.2 // indirect github.com/onsi/gomega v1.29.0 // indirect @@ -215,7 +216,7 @@ require ( golang.org/x/crypto v0.26.0 // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/oauth2 v0.17.0 // indirect - golang.org/x/sync v0.8.0 // indirect + golang.org/x/sync v0.9.0 // indirect golang.org/x/sys v0.23.0 // indirect golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.5.0 // indirect diff --git a/lib/go/iinft/go.sum b/lib/go/iinft/go.sum index cfd419b..13a9af6 100644 --- a/lib/go/iinft/go.sum +++ b/lib/go/iinft/go.sum @@ -1,976 +1,23 @@ -cloud.google.com/go v0.0.0-20170206221025-ce650573d812/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= -cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= -cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= -cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= -cloud.google.com/go/accessapproval v1.7.2/go.mod h1:/gShiq9/kK/h8T/eEn1BTzalDvk0mZxJlhfw0p+Xuc0= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= -cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= -cloud.google.com/go/accesscontextmanager v1.8.0/go.mod h1:uI+AI/r1oyWK99NN8cQ3UK76AMelMzgZCvJfsi2c+ps= -cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= -cloud.google.com/go/accesscontextmanager v1.8.2/go.mod h1:E6/SCRM30elQJ2PKtFMs2YhfJpZSNcJyejhuzoId4Zk= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= -cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= -cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= -cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= -cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= -cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= -cloud.google.com/go/aiplatform v1.50.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= -cloud.google.com/go/aiplatform v1.51.0/go.mod h1:IRc2b8XAMTa9ZmfJV1BCCQbieWWvDnP1A8znyz5N7y4= -cloud.google.com/go/aiplatform v1.51.1/go.mod h1:kY3nIMAVQOK2XDqDPHaOuD9e+FdMA6OOpfBjsvaFSOo= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= -cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= -cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= -cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= -cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= -cloud.google.com/go/analytics v0.21.4/go.mod h1:zZgNCxLCy8b2rKKVfC1YkC2vTrpfZmeRCySM3aUbskA= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= -cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= -cloud.google.com/go/apigateway v1.6.2/go.mod h1:CwMC90nnZElorCW63P2pAYm25AtQrHfuOkbRSHj0bT8= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= -cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= -cloud.google.com/go/apigeeconnect v1.6.2/go.mod h1:s6O0CgXT9RgAxlq3DLXvG8riw8PYYbU/v25jqP3Dy18= -cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= -cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= -cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= -cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= -cloud.google.com/go/apigeeregistry v0.7.2/go.mod h1:9CA2B2+TGsPKtfi3F7/1ncCCsL62NXBRfM6iPoGSM+8= -cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= -cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= -cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= -cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= -cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= -cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= -cloud.google.com/go/appengine v1.8.2/go.mod h1:WMeJV9oZ51pvclqFN2PqHoGnys7rK0rz6s3Mp6yMvDo= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= -cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= -cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= -cloud.google.com/go/area120 v0.8.2/go.mod h1:a5qfo+x77SRLXnCynFWPUZhnZGeSgvQ+Y0v1kSItkh4= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= -cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= -cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= -cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= -cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= -cloud.google.com/go/artifactregistry v1.14.2/go.mod h1:Xk+QbsKEb0ElmyeMfdHAey41B+qBq3q5R5f5xD4XT3U= -cloud.google.com/go/artifactregistry v1.14.3/go.mod h1:A2/E9GXnsyXl7GUvQ/2CjHA+mVRoWAXC0brg2os+kNI= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= -cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= -cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= -cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= -cloud.google.com/go/asset v1.15.0/go.mod h1:tpKafV6mEut3+vN9ScGvCHXHj7FALFVta+okxFECHcg= -cloud.google.com/go/asset v1.15.1/go.mod h1:yX/amTvFWRpp5rcFq6XbCxzKT8RJUam1UoboE179jU4= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= -cloud.google.com/go/assuredworkloads v1.11.2/go.mod h1:O1dfr+oZJMlE6mw0Bp0P1KZSlj5SghMBvTpZqIcUAW4= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= -cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= -cloud.google.com/go/automl v1.13.2/go.mod h1:gNY/fUmDEN40sP8amAX3MaXkxcqPIn7F1UIIPZpy4Mg= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= -cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= -cloud.google.com/go/baremetalsolution v1.2.0/go.mod h1:68wi9AwPYkEWIUT4SvSGS9UJwKzNpshjHsH4lzk8iOw= -cloud.google.com/go/baremetalsolution v1.2.1/go.mod h1:3qKpKIw12RPXStwQXcbhfxVj1dqQGEvcmA+SX/mUR88= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= -cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= -cloud.google.com/go/batch v1.4.1/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= -cloud.google.com/go/batch v1.5.0/go.mod h1:KdBmDD61K0ovcxoRHGrN6GmOBWeAOyCgKD0Mugx4Fkk= -cloud.google.com/go/batch v1.5.1/go.mod h1:RpBuIYLkQu8+CWDk3dFD/t/jOCGuUpkpX+Y0n1Xccs8= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= -cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= -cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= -cloud.google.com/go/beyondcorp v0.6.1/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= -cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= -cloud.google.com/go/beyondcorp v1.0.1/go.mod h1:zl/rWWAFVeV+kx+X2Javly7o1EIQThU4WlkynffL/lk= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= -cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= -cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= -cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= -cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= -cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= -cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= -cloud.google.com/go/bigquery v1.55.0/go.mod h1:9Y5I3PN9kQWuid6183JFhOGOW3GcirA5LpsKCUn+2ec= -cloud.google.com/go/bigquery v1.56.0/go.mod h1:KDcsploXTEY7XT3fDQzMUZlpQLHzE4itubHrnmhUrZA= -cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= -cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= -cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= -cloud.google.com/go/billing v1.17.0/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= -cloud.google.com/go/billing v1.17.1/go.mod h1:Z9+vZXEq+HwH7bhJkyI4OQcR6TSbeMrjlpEjO2vzY64= -cloud.google.com/go/billing v1.17.2/go.mod h1:u/AdV/3wr3xoRBk5xvUzYMS1IawOAPwQMuHgHMdljDg= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= -cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= -cloud.google.com/go/binaryauthorization v1.7.0/go.mod h1:Zn+S6QqTMn6odcMU1zDZCJxPjU2tZPV1oDl45lWY154= -cloud.google.com/go/binaryauthorization v1.7.1/go.mod h1:GTAyfRWYgcbsP3NJogpV3yeunbUIjx2T9xVeYovtURE= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= -cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= -cloud.google.com/go/certificatemanager v1.7.2/go.mod h1:15SYTDQMd00kdoW0+XY5d9e+JbOPjp24AvF48D8BbcQ= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= -cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= -cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= -cloud.google.com/go/channel v1.17.0/go.mod h1:RpbhJsGi/lXWAUM1eF4IbQGbsfVlg2o8Iiy2/YLfVT0= -cloud.google.com/go/channel v1.17.1/go.mod h1:xqfzcOZAcP4b/hUDH0GkGg1Sd5to6di1HOJn/pi5uBQ= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= -cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= -cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= -cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= -cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= -cloud.google.com/go/cloudbuild v1.14.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= -cloud.google.com/go/cloudbuild v1.14.1/go.mod h1:K7wGc/3zfvmYWOWwYTgF/d/UVJhS4pu+HAy7PL7mCsU= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= -cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= -cloud.google.com/go/clouddms v1.7.0/go.mod h1:MW1dC6SOtI/tPNCciTsXtsGNEM0i0OccykPvv3hiYeM= -cloud.google.com/go/clouddms v1.7.1/go.mod h1:o4SR8U95+P7gZ/TX+YbJxehOCsM+fe6/brlrFquiszk= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= -cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= -cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= -cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= -cloud.google.com/go/cloudtasks v1.12.2/go.mod h1:A7nYkjNlW2gUoROg1kvJrQGhJP/38UaWwsnuBDOBVUk= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= -cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= -cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= -cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= -cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= -cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute v1.21.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= -cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= -cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= -cloud.google.com/go/contactcenterinsights v1.11.0/go.mod h1:hutBdImE4XNZ1NV4vbPJKSFOnQruhC5Lj9bZqWMTKiU= -cloud.google.com/go/contactcenterinsights v1.11.1/go.mod h1:FeNP3Kg8iteKM80lMwSk3zZZKVxr+PGnAId6soKuXwE= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= -cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= -cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= -cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= -cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= -cloud.google.com/go/container v1.26.0/go.mod h1:YJCmRet6+6jnYYRS000T6k0D0xUXQgBSaJ7VwI8FBj4= -cloud.google.com/go/container v1.26.1/go.mod h1:5smONjPRUxeEpDG7bMKWfDL4sauswqEtnBK1/KKpR04= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= -cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= -cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= -cloud.google.com/go/containeranalysis v0.11.0/go.mod h1:4n2e99ZwpGxpNcz+YsFT1dfOHPQFGcAC8FN2M2/ne/U= -cloud.google.com/go/containeranalysis v0.11.1/go.mod h1:rYlUOM7nem1OJMKwE1SadufX0JP3wnXj844EtZAwWLY= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= -cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= -cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= -cloud.google.com/go/datacatalog v1.14.0/go.mod h1:h0PrGtlihoutNMp/uvwhawLQ9+c63Kz65UFqh49Yo+E= -cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= -cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= -cloud.google.com/go/datacatalog v1.17.1/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= -cloud.google.com/go/datacatalog v1.18.0/go.mod h1:nCSYFHgtxh2MiEktWIz71s/X+7ds/UT9kp0PC7waCzE= -cloud.google.com/go/datacatalog v1.18.1/go.mod h1:TzAWaz+ON1tkNr4MOcak8EBHX7wIRX/gZKM+yTVsv+A= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= -cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= -cloud.google.com/go/dataflow v0.9.2/go.mod h1:vBfdBZ/ejlTaYIGB3zB4T08UshH70vbtZeMD+urnUSo= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= -cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= -cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= -cloud.google.com/go/dataform v0.8.2/go.mod h1:X9RIqDs6NbGPLR80tnYoPNiO1w0wenKTb8PxxlhTMKM= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= -cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= -cloud.google.com/go/datafusion v1.7.2/go.mod h1:62K2NEC6DRlpNmI43WHMWf9Vg/YvN6QVi8EVwifElI0= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= -cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= -cloud.google.com/go/datalabeling v0.8.2/go.mod h1:cyDvGHuJWu9U/cLDA7d8sb9a0tWLEletStu2sTmg3BE= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= -cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= -cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= -cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= -cloud.google.com/go/dataplex v1.9.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= -cloud.google.com/go/dataplex v1.10.1/go.mod h1:1MzmBv8FvjYfc7vDdxhnLFNskikkB+3vl475/XdCDhs= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= -cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= -cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= -cloud.google.com/go/dataproc/v2 v2.2.0/go.mod h1:lZR7AQtwZPvmINx5J87DSOOpTfof9LVZju6/Qo4lmcY= -cloud.google.com/go/dataproc/v2 v2.2.1/go.mod h1:QdAJLaBjh+l4PVlVZcmrmhGccosY/omC1qwfQ61Zv/o= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= -cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= -cloud.google.com/go/dataqna v0.8.2/go.mod h1:KNEqgx8TTmUipnQsScOoDpq/VlXVptUqVMZnt30WAPs= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= -cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= -cloud.google.com/go/datastore v1.12.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= -cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= -cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= -cloud.google.com/go/datastore v1.14.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= -cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= -cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= -cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= -cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= -cloud.google.com/go/datastream v1.10.1/go.mod h1:7ngSYwnw95YFyTd5tOGBxHlOZiL+OtpjheqU7t2/s/c= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= -cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= -cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= -cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= -cloud.google.com/go/deploy v1.13.1/go.mod h1:8jeadyLkH9qu9xgO3hVWw8jVr29N1mnW42gRJT8GY6g= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= -cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= -cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= -cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= -cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= -cloud.google.com/go/dialogflow v1.43.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= -cloud.google.com/go/dialogflow v1.44.0/go.mod h1:pDUJdi4elL0MFmt1REMvFkdsUTYSHq+rTCS8wg0S3+M= -cloud.google.com/go/dialogflow v1.44.1/go.mod h1:n/h+/N2ouKOO+rbe/ZnI186xImpqvCVj2DdsWS/0EAk= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= -cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= -cloud.google.com/go/dlp v1.10.2/go.mod h1:ZbdKIhcnyhILgccwVDzkwqybthh7+MplGC3kZVZsIOQ= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= -cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= -cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= -cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= -cloud.google.com/go/documentai v1.22.1/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= -cloud.google.com/go/documentai v1.23.0/go.mod h1:LKs22aDHbJv7ufXuPypzRO7rG3ALLJxzdCXDPutw4Qc= -cloud.google.com/go/documentai v1.23.2/go.mod h1:Q/wcRT+qnuXOpjAkvOV4A+IeQl04q2/ReT7SSbytLSo= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= -cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= -cloud.google.com/go/domains v0.9.2/go.mod h1:3YvXGYzZG1Temjbk7EyGCuGGiXHJwVNmwIf+E/cUp5I= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= -cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= -cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= -cloud.google.com/go/edgecontainer v1.1.2/go.mod h1:wQRjIzqxEs9e9wrtle4hQPSR1Y51kqN75dgF7UllZZ4= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= -cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= -cloud.google.com/go/essentialcontacts v1.6.3/go.mod h1:yiPCD7f2TkP82oJEFXFTou8Jl8L6LBRPeBEkTaO0Ggo= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= -cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= -cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= -cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= -cloud.google.com/go/eventarc v1.13.1/go.mod h1:EqBxmGHFrruIara4FUQ3RHlgfCn7yo1HYsu2Hpt/C3Y= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= -cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= -cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= -cloud.google.com/go/filestore v1.7.2/go.mod h1:TYOlyJs25f/omgj+vY7/tIG/E7BX369triSPzE4LdgE= -cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= -cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= -cloud.google.com/go/firestore v1.12.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= -cloud.google.com/go/firestore v1.13.0/go.mod h1:QojqqOh8IntInDUSTAh0c8ZsPYAr68Ma8c5DWOy8xb8= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= -cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= -cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= -cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= -cloud.google.com/go/functions v1.15.2/go.mod h1:CHAjtcR6OU4XF2HuiVeriEdELNcnvRZSk1Q8RMqy4lE= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= -cloud.google.com/go/gaming v1.10.1/go.mod h1:XQQvtfP8Rb9Rxnxm5wFVpAp9zCQkJi2bLIb7iHGwB3s= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= -cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= -cloud.google.com/go/gkebackup v1.3.1/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= -cloud.google.com/go/gkebackup v1.3.2/go.mod h1:OMZbXzEJloyXMC7gqdSB+EOEQ1AKcpGYvO3s1ec5ixk= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= -cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= -cloud.google.com/go/gkeconnect v0.8.2/go.mod h1:6nAVhwchBJYgQCXD2pHBFQNiJNyAd/wyxljpaa6ZPrY= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= -cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= -cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= -cloud.google.com/go/gkehub v0.14.2/go.mod h1:iyjYH23XzAxSdhrbmfoQdePnlMj2EWcvnR+tHdBQsCY= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= -cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= -cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= -cloud.google.com/go/gkemulticloud v1.0.1/go.mod h1:AcrGoin6VLKT/fwZEYuqvVominLriQBCKmbjtnbMjG8= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= -cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= -cloud.google.com/go/gsuiteaddons v1.6.2/go.mod h1:K65m9XSgs8hTF3X9nNTPi8IQueljSdYo9F+Mi+s4MyU= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= -cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= -cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= -cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= -cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= -cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= -cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= -cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= -cloud.google.com/go/iap v1.9.0/go.mod h1:01OFxd1R+NFrg78S+hoPV5PxEzv22HXaNqUUlmNHFuY= -cloud.google.com/go/iap v1.9.1/go.mod h1:SIAkY7cGMLohLSdBR25BuIxO+I4fXJiL06IBL7cy/5Q= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= -cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= -cloud.google.com/go/ids v1.4.2/go.mod h1:3vw8DX6YddRu9BncxuzMyWn0g8+ooUjI2gslJ7FH3vk= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= -cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= -cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= -cloud.google.com/go/iot v1.7.2/go.mod h1:q+0P5zr1wRFpw7/MOgDXrG/HVA+l+cSwdObffkrpnSg= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= -cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= -cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= -cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= -cloud.google.com/go/kms v1.11.0/go.mod h1:hwdiYC0xjnWsKQQCQQmIQnS9asjYVSK6jtXm+zFqXLM= -cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= -cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= -cloud.google.com/go/kms v1.15.2/go.mod h1:3hopT4+7ooWRCjc2DxgnpESFxhIraaI2IpAVUEhbT/w= -cloud.google.com/go/kms v1.15.3/go.mod h1:AJdXqHxS2GlPyduM99s9iGqi2nwbviBbhV/hdmt4iOQ= -cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/kms v1.15.7 h1:7caV9K3yIxvlQPAcaFffhlT7d1qpxjB1wHBtjWa13SM= cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= -cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= -cloud.google.com/go/language v1.11.0/go.mod h1:uDx+pFDdAKTY8ehpWbiXyQdz8tDSYLJbQcXsCkjYyvQ= -cloud.google.com/go/language v1.11.1/go.mod h1:Xyid9MG9WOX3utvDbpX7j3tXDmmDooMyMDqgUVpH17U= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= -cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= -cloud.google.com/go/lifesciences v0.9.2/go.mod h1:QHEOO4tDzcSAzeJg7s2qwnLM2ji8IRpQl4p6m5Z9yTA= -cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= -cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= -cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= -cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= -cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= -cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= -cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= -cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= -cloud.google.com/go/managedidentities v1.6.2/go.mod h1:5c2VG66eCa0WIq6IylRk3TBW83l161zkFvCj28X7jn8= -cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= -cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= -cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= -cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= -cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= -cloud.google.com/go/maps v1.4.1/go.mod h1:BxSa0BnW1g2U2gNdbq5zikLlHUuHW0GFWh7sgML2kIY= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= -cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= -cloud.google.com/go/mediatranslation v0.8.2/go.mod h1:c9pUaDRLkgHRx3irYE5ZC8tfXGrMYwNZdmDqKMSfFp8= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= -cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= -cloud.google.com/go/memcache v1.10.2/go.mod h1:f9ZzJHLBrmd4BkguIAa/l/Vle6uTHzHokdnzSWOdQ6A= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= -cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= -cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= -cloud.google.com/go/metastore v1.13.0/go.mod h1:URDhpG6XLeh5K+Glq0NOt74OfrPKTwS62gEPZzb5SOk= -cloud.google.com/go/metastore v1.13.1/go.mod h1:IbF62JLxuZmhItCppcIfzBBfUFq0DIB9HPDoLgWrVOU= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= -cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= -cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= -cloud.google.com/go/monitoring v1.16.0/go.mod h1:Ptp15HgAyM1fNICAojDMoNc/wUmn67mLHQfyqbw+poY= -cloud.google.com/go/monitoring v1.16.1/go.mod h1:6HsxddR+3y9j+o/cMJH6q/KJ/CBTvM/38L/1m7bTRJ4= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= -cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= -cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= -cloud.google.com/go/networkconnectivity v1.13.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= -cloud.google.com/go/networkconnectivity v1.14.0/go.mod h1:SAnGPes88pl7QRLUen2HmcBSE9AowVAcdug8c0RSBFk= -cloud.google.com/go/networkconnectivity v1.14.1/go.mod h1:LyGPXR742uQcDxZ/wv4EI0Vu5N6NKJ77ZYVnDe69Zug= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= -cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= -cloud.google.com/go/networkmanagement v1.9.0/go.mod h1:UTUaEU9YwbCAhhz3jEOHr+2/K/MrBk2XxOLS89LQzFw= -cloud.google.com/go/networkmanagement v1.9.1/go.mod h1:CCSYgrQQvW73EJawO2QamemYcOb57LvrDdDU51F0mcI= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= -cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= -cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= -cloud.google.com/go/networksecurity v0.9.2/go.mod h1:jG0SeAttWzPMUILEHDUvFYdQTl8L/E/KC8iZDj85lEI= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= -cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= -cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= -cloud.google.com/go/notebooks v1.10.0/go.mod h1:SOPYMZnttHxqot0SGSFSkRrwE29eqnKPBJFqgWmiK2k= -cloud.google.com/go/notebooks v1.10.1/go.mod h1:5PdJc2SgAybE76kFQCWrTfJolCOUQXF97e+gteUUA6A= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= -cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= -cloud.google.com/go/optimization v1.5.0/go.mod h1:evo1OvTxeBRBu6ydPlrIRizKY/LJKo/drDMMRKqGEUU= -cloud.google.com/go/optimization v1.5.1/go.mod h1:NC0gnUD5MWVAF7XLdoYVPmYYVth93Q6BUzqAq3ZwtV8= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= -cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= -cloud.google.com/go/orchestration v1.8.2/go.mod h1:T1cP+6WyTmh6LSZzeUhvGf0uZVmJyTx7t8z7Vg87+A0= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= -cloud.google.com/go/orgpolicy v1.11.0/go.mod h1:2RK748+FtVvnfuynxBzdnyu7sygtoZa1za/0ZfpOs1M= -cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= -cloud.google.com/go/orgpolicy v1.11.2/go.mod h1:biRDpNwfyytYnmCRWZWxrKF22Nkz9eNVj9zyaBdpm1o= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= -cloud.google.com/go/osconfig v1.12.0/go.mod h1:8f/PaYzoS3JMVfdfTubkowZYGmAhUCjjwnjqWI7NVBc= -cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= -cloud.google.com/go/osconfig v1.12.2/go.mod h1:eh9GPaMZpI6mEJEuhEjUJmaxvQ3gav+fFEJon1Y8Iw0= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= -cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= -cloud.google.com/go/oslogin v1.11.0/go.mod h1:8GMTJs4X2nOAUVJiPGqIWVcDaF0eniEto3xlOxaboXE= -cloud.google.com/go/oslogin v1.11.1/go.mod h1:OhD2icArCVNUxKqtK0mcSmKL7lgr0LVlQz+v9s1ujTg= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= -cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= -cloud.google.com/go/phishingprotection v0.8.2/go.mod h1:LhJ91uyVHEYKSKcMGhOa14zMMWfbEdxG032oT6ECbC8= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= -cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= -cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0= -cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= -cloud.google.com/go/policytroubleshooter v1.9.0/go.mod h1:+E2Lga7TycpeSTj2FsH4oXxTnrbHJGRlKhVZBLGgU64= -cloud.google.com/go/policytroubleshooter v1.9.1/go.mod h1:MYI8i0bCrL8cW+VHN1PoiBTyNZTstCg2WUw2eVC4c4U= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= -cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= -cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= -cloud.google.com/go/privatecatalog v0.9.2/go.mod h1:RMA4ATa8IXfzvjrhhK8J6H4wwcztab+oZph3c6WmtFc= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= -cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= -cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= -cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= -cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= -cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= -cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= -cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= -cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= -cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= -cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= -cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= -cloud.google.com/go/recaptchaenterprise/v2 v2.8.0/go.mod h1:QuE8EdU9dEnesG8/kG3XuJyNsjEqMlMzg3v3scCJ46c= -cloud.google.com/go/recaptchaenterprise/v2 v2.8.1/go.mod h1:JZYZJOeZjgSSTGP4uz7NlQ4/d1w5hGmksVgM0lbEij0= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= -cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= -cloud.google.com/go/recommendationengine v0.8.2/go.mod h1:QIybYHPK58qir9CV2ix/re/M//Ty10OxjnnhWdaKS1Y= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= -cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= -cloud.google.com/go/recommender v1.11.0/go.mod h1:kPiRQhPyTJ9kyXPCG6u/dlPLbYfFlkwHNRwdzPVAoII= -cloud.google.com/go/recommender v1.11.1/go.mod h1:sGwFFAyI57v2Hc5LbIj+lTwXipGu9NW015rkaEM5B18= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= -cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= -cloud.google.com/go/redis v1.13.2/go.mod h1:0Hg7pCMXS9uz02q+LoEVl5dNHUkIQv+C/3L76fandSA= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= -cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= -cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= -cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= -cloud.google.com/go/resourcemanager v1.9.2/go.mod h1:OujkBg1UZg5lX2yIyMo5Vz9O5hf7XQOSV7WxqxxMtQE= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= -cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= -cloud.google.com/go/resourcesettings v1.6.2/go.mod h1:mJIEDd9MobzunWMeniaMp6tzg4I2GvD3TTmPkc8vBXk= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= -cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= -cloud.google.com/go/retail v1.14.2/go.mod h1:W7rrNRChAEChX336QF7bnMxbsjugcOCPU44i5kbLiL8= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= -cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= -cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= -cloud.google.com/go/run v1.3.0/go.mod h1:S/osX/4jIPZGg+ssuqh6GNgg7syixKe3YnprwehzHKU= -cloud.google.com/go/run v1.3.1/go.mod h1:cymddtZOzdwLIAsmS6s+Asl4JoXIDm/K1cpZTxV4Q5s= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= -cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= -cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= -cloud.google.com/go/scheduler v1.10.2/go.mod h1:O3jX6HRH5eKCA3FutMw375XHZJudNIKVonSCHv7ropY= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= -cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= -cloud.google.com/go/secretmanager v1.11.2/go.mod h1:MQm4t3deoSub7+WNwiC4/tRYgDBHJgJPvswqQVB1Vss= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= -cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= -cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= -cloud.google.com/go/security v1.15.2/go.mod h1:2GVE/v1oixIRHDaClVbHuPcZwAqFM28mXuAKCfMgYIg= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= -cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= -cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= -cloud.google.com/go/securitycenter v1.23.1/go.mod h1:w2HV3Mv/yKhbXKwOCu2i8bCuLtNP1IMHuiYQn4HJq5s= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= -cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= -cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= -cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= -cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= -cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= -cloud.google.com/go/servicedirectory v1.11.1/go.mod h1:tJywXimEWzNzw9FvtNjsQxxJ3/41jseeILgwU/QLrGI= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= -cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= -cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= -cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= -cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= -cloud.google.com/go/shell v1.7.2/go.mod h1:KqRPKwBV0UyLickMn0+BY1qIyE98kKyI216sH/TuHmc= -cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= -cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= -cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= -cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= -cloud.google.com/go/spanner v1.49.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= -cloud.google.com/go/spanner v1.50.0/go.mod h1:eGj9mQGK8+hkgSVbHNQ06pQ4oS+cyc4tXXd6Dif1KoM= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= -cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= -cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= -cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= -cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= -cloud.google.com/go/speech v1.19.1/go.mod h1:WcuaWz/3hOlzPFOVo9DUsblMIHwxP589y6ZMtaG+iAA= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= cloud.google.com/go/storage v1.37.0 h1:WI8CsaFO8Q9KjPVtsZ5Cmi0dXV25zMoX0FklT7c3Jm4= cloud.google.com/go/storage v1.37.0/go.mod h1:i34TiT2IhiNDmcj65PqwCjcoUX7Z5pLzS8DEmoiFq1k= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= -cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= -cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= -cloud.google.com/go/storagetransfer v1.10.1/go.mod h1:rS7Sy0BtPviWYTTJVWCSV4QrbBitgPeuK4/FKa4IdLs= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= -cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= -cloud.google.com/go/talent v1.6.3/go.mod h1:xoDO97Qd4AK43rGjJvyBHMskiEf3KulgYzcH6YWOVoo= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= -cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= -cloud.google.com/go/texttospeech v1.7.2/go.mod h1:VYPT6aTOEl3herQjFHYErTlSZJ4vB00Q2ZTmuVgluD4= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= -cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= -cloud.google.com/go/tpu v1.6.2/go.mod h1:NXh3NDwt71TsPZdtGWgAG5ThDfGd32X1mJ2cMaRlVgU= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= -cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= -cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= -cloud.google.com/go/trace v1.10.2/go.mod h1:NPXemMi6MToRFcSxRl2uDnu/qAlAQ3oULUphcHGh1vA= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= -cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= -cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= -cloud.google.com/go/translate v1.9.0/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= -cloud.google.com/go/translate v1.9.1/go.mod h1:TWIgDZknq2+JD4iRcojgeDtqGEp154HN/uL6hMvylS8= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= -cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= -cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= -cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= -cloud.google.com/go/video v1.20.0/go.mod h1:U3G3FTnsvAGqglq9LxgqzOiBc/Nt8zis8S+850N2DUM= -cloud.google.com/go/video v1.20.1/go.mod h1:3gJS+iDprnj8SY6pe0SwLeC5BUW80NjhwX7INWEuWGU= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= -cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= -cloud.google.com/go/videointelligence v1.11.2/go.mod h1:ocfIGYtIVmIcWk1DsSGOoDiXca4vaZQII1C85qtoplc= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= -cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= -cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= -cloud.google.com/go/vision/v2 v2.7.3/go.mod h1:V0IcLCY7W+hpMKXK1JYE0LV5llEqVmj+UJChjvA1WsM= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= -cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= -cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= -cloud.google.com/go/vmmigration v1.7.2/go.mod h1:iA2hVj22sm2LLYXGPT1pB63mXHhrH1m/ruux9TwWLd8= -cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= -cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= -cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= -cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= -cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= -cloud.google.com/go/vmwareengine v1.0.1/go.mod h1:aT3Xsm5sNx0QShk1Jc1B8OddrxAScYLwzVoaiXfdzzk= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= -cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= -cloud.google.com/go/vpcaccess v1.7.2/go.mod h1:mmg/MnRHv+3e8FJUjeSibVFvQF1cCy2MsFaFqxeY1HU= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= -cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= -cloud.google.com/go/webrisk v1.9.2/go.mod h1:pY9kfDgAqxUpDBOrG4w8deLfhvJmejKB0qd/5uQIPBc= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= -cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= -cloud.google.com/go/websecurityscanner v1.6.2/go.mod h1:7YgjuU5tun7Eg2kpKgGnDuEOXWIrh8x8lWrJT4zfmas= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= -cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= -cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= -cloud.google.com/go/workflows v1.12.0/go.mod h1:PYhSk2b6DhZ508tj8HXKaBh+OFe+xdl0dHF/tJdzPQM= -cloud.google.com/go/workflows v1.12.1/go.mod h1:5A95OhD/edtOhQd/O741NSfIMezNTbCwLM1P1tBRGHM= -collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= -git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0/go.mod h1:ceIuwmxDWptoW3eCqSXlnPsZFKh4X+R38dWPv7GS9Vs= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0/go.mod h1:c+Lifp3EDEamAkPVzMooRNOK6CZjNSdEnf1A7jsI9u4= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4= -github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= -github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= -github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U= -github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190129172621-c8b1d7a94ddf/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -978,91 +25,31 @@ github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8 github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/SaveTheRbtz/mph v0.1.1-0.20240117162131-4166ec7869bc h1:DCHzPQOcU/7gwDTWbFQZc5qHMPS1g0xTO56k8NXsv9M= github.com/SaveTheRbtz/mph v0.1.1-0.20240117162131-4166ec7869bc/go.mod h1:LJM5a3zcIJ/8TmZwlUczvROEJT8ntOdhdG9jjcR1B0I= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= -github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= -github.com/aclements/go-gg v0.0.0-20170118225347-6dbb4e4fefb0/go.mod h1:55qNq4vcpkIuHowELi5C8e+1yUHtoLoOUR9QU5j7Tes= -github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= -github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20210923152817-c3b6e2f0c527/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= -github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= -github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= -github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= -github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= -github.com/aws/aws-sdk-go-v2 v1.21.2/go.mod h1:ErQhvNuEMhJjweavOYhxVkn2RUx7kQXVATHrjKtxIpM= -github.com/aws/aws-sdk-go-v2 v1.23.1/go.mod h1:i1XDttT4rnf6vxc9AuskLc6s7XBee8rlLilKlc03uAA= github.com/aws/aws-sdk-go-v2 v1.27.0 h1:7bZWKoXhzI+mMR/HjdMx8ZCC5+6fY0lS5tr0bbgiLlo= github.com/aws/aws-sdk-go-v2 v1.27.0/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= -github.com/aws/aws-sdk-go-v2/config v1.18.45/go.mod h1:ZwDUgFnQgsazQTnWfeLWk5GjeqTQTL8lMkoE1UXzxdE= -github.com/aws/aws-sdk-go-v2/config v1.25.5/go.mod h1:Bf4gDvy4ZcFIK0rqDu1wp9wrubNba2DojiPB2rt6nvI= -github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= -github.com/aws/aws-sdk-go-v2/credentials v1.13.43/go.mod h1:zWJBz1Yf1ZtX5NGax9ZdNjhhI4rgjfgsyk6vTY1yfVg= -github.com/aws/aws-sdk-go-v2/credentials v1.16.4/go.mod h1:Kdh/okh+//vQ/AjEt81CjvkTo64+/zIE4OewP7RpfXk= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13/go.mod h1:f/Ib/qYjhV2/qdsf79H3QP/eRE4AkVyEf6sk7XfZ1tg= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.5/go.mod h1:VhnExhw6uXy9QzetvpXDolo1/hjhx4u9qukBGkuUwjs= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.5.1 h1:VGkV9KmhGqOQWnHyi4gLG98kE6OecT42fdrCGFWxJsc= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.5.1/go.mod h1:PLlnMiki//sGnCJiW+aVpvP/C8Kcm8mEj/IVm9+9qk4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43/go.mod h1:auo+PiyLl0n1l8A0e8RIeR8tOzYPfZZH/JNlrJ8igTQ= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.4/go.mod h1:xEhvbJcyUf/31yfGSQBe01fukXwXJ0gxDp7rLfymWE0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37/go.mod h1:Qe+2KtKml+FEsQF/DHmDV+xjtche/hwoF75EG4UlHW8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.4/go.mod h1:dYvTNAggxDZy6y1AF7YDwXsPuHFy/VNEpEI/2dWK9IU= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45/go.mod h1:lD5M20o09/LCuQ2mE62Mb/iSdSlCNuj6H5ci7tW7OsE= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.1/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1/go.mod h1:l9ymW25HOqymeU2m1gbUQ3rUIsTwKs8gYHXkqDQUhiI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37/go.mod h1:vBmDnwWXWxNPFRMmG2m/3MKOe+xEcMDo1tanpaWCcck= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.4/go.mod h1:aYCGNjyUCUelhofxlZyj63srdxWUSsBSGg5l6MCuXuE= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9 h1:Wx0rlZoEJR7JwlSZcHnEa7CNjrSIyVxMFWGAaXy4fJY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.9/go.mod h1:aVMHdE0aHO3v+f/iw01fmXV/5DbfQ3Bi9nN7nd9bE9Y= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.0 h1:HWsM0YQWX76V6MOp07YuTYacm8k7h69ObJuw7Nck+og= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.7.0/go.mod h1:LKb3cKNQIMh+itGnEpKGcnL/6OIjPZqrtYah1w5f+3o= -github.com/aws/aws-sdk-go-v2/service/kms v1.26.3/go.mod h1:N3++/sLV97B8Zliz7KRqNcojOX7iMBZWKiuit5FKtH0= -github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= -github.com/aws/aws-sdk-go-v2/service/route53 v1.30.2/go.mod h1:TQZBt/WaQy+zTHoW++rnl8JBrmZ0VO6EUbVua1+foCA= github.com/aws/aws-sdk-go-v2/service/s3 v1.15.0 h1:nPLfLPfglacc29Y949sDxpr3X/blaY40s3B85WT2yZU= github.com/aws/aws-sdk-go-v2/service/s3 v1.15.0/go.mod h1:Iv2aJVtVSm/D22rFoX99cLG4q4uB7tppuCsulGe98k4= -github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= -github.com/aws/aws-sdk-go-v2/service/sso v1.15.2/go.mod h1:gsL4keucRCgW+xA85ALBpRFfdSLH4kHOVSnLMSuBECo= -github.com/aws/aws-sdk-go-v2/service/sso v1.17.3/go.mod h1:oA6VjNsLll2eVuUoF2D+CMyORgNzPEW/3PyUdq6WQjI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3/go.mod h1:a7bHA82fyUXOm+ZSWKU6PIoBxrjSprdLoM8xPYvzYVg= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.20.1/go.mod h1:hHL974p5auvXlZPIjJTblXJpbkfK4klBczlsEaMCGVY= -github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= -github.com/aws/aws-sdk-go-v2/service/sts v1.23.2/go.mod h1:Eows6e1uQEsc4ZaHANmsPRzAKcVDrcmjjWiih2+HUUQ= -github.com/aws/aws-sdk-go-v2/service/sts v1.25.4/go.mod h1:feTnm2Tk/pJxdX+eooEsxvlvTWBvDm6CasRZ+JOs2IY= -github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= -github.com/aws/smithy-go v1.15.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/aws/smithy-go v1.17.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -1070,93 +57,45 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bits-and-blooms/bitset v1.5.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bits-and-blooms/bitset v1.7.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= -github.com/btcsuite/btcd/btcec/v2 v2.2.1/go.mod h1:9/CSmJxmuvqzX9Wh2fXMWToLOHhPd11lSPuIupwTkI8= github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 h1:KdUfX2zKommPRa+PD0sWZUyXe9w277ABlgELO7H04IM= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/bytecodealliance/wasmtime-go/v7 v7.0.0/go.mod h1:bu6fic7trDt20w+LMooX7j3fsOwv4/ln6j8gAdP6vmA= -github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= -github.com/c-bata/go-prompt v0.2.6/go.mod h1:/LMAke8wD2FsNu9EXNdHxNLbd9MedkPnCdfpU9wwHfY= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= -github.com/cloudflare/cloudflare-go v0.79.0/go.mod h1:gkHQf9xEubaQPEuerBuoinR9P8bf8a05Lq0X6WKy1Oc= github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e h1:0XBUw73chJ1VYSsfvcPvVT7auykAJce9FpRr10L6Qhw= github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230428030218-4003588d1b74/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= -github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= -github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= -github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= -github.com/consensys/gnark-crypto v0.10.0/go.mod h1:Iq/P3HHl0ElSjsg2E1gsMwhAyxnxoKK5nVyZKd+/KhU= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= @@ -1169,133 +108,63 @@ github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmf github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20230601170251-1830d0757c80/go.mod h1:gzbVz57IDJgQ9rLQwfSk696JGWof8ftznEL9GoAv3NI= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/dave/astrid v0.0.0-20170323122508-8c2895878b14/go.mod h1:Sth2QfxfATb/nW4EsrSi2KyJmbcniZ8TgTaji17D6ms= -github.com/dave/brenda v1.1.0/go.mod h1:4wCUr6gSlu5/1Tk7akE5X7UorwiQ8Rij0SKH3/BGMOM= -github.com/dave/courtney v0.3.0/go.mod h1:BAv3hA06AYfNUjfjQr+5gc6vxeBVOupLqrColj+QSD8= -github.com/dave/dst v0.27.2/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= -github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/dave/jennifer v1.5.0/go.mod h1:4MnyiFIlZS3l5tSDn8VnzE6ffAhYBMB2SZntBsZGUok= -github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= -github.com/dave/patsy v0.0.0-20210517141501-957256f50cba/go.mod h1:qfR88CgEGLoiqDaE+xxDCi5QA5v4vUoW0UCX2Nd5Tlc= -github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= -github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= -github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v1.6.2/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= -github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/ef-ds/deque v1.0.4 h1:iFAZNmveMT9WERAkqLJ+oaABF9AcVQ5AjXem/hroniI= github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= -github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= -github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= -github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/envoyproxy/protoc-gen-validate v1.0.1/go.mod h1:0vj8bNkYbSTNS2PIyH87KZaeN4x9zpL9Qt8fQC7d+vs= -github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= -github.com/ethereum/go-ethereum v1.13.5/go.mod h1:yMTu38GSuyxaYzQMViqNmQ1s3cE84abZexQmTgenWk0= github.com/ethereum/go-ethereum v1.13.10 h1:Ppdil79nN+Vc+mXfge0AuUgmKWuVv4eMqzoIVSdqZek= github.com/ethereum/go-ethereum v1.13.10/go.mod h1:sc48XYQxCzH3fG9BcrXCOOgQk2JfZzNAmIKnceogzsA= github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/gencodec v0.0.0-20220412091415-8bb9e558978c/go.mod h1:AzA8Lj6YtixmJWL+wkKoBGsLWy9gFrAzi4g+5bCKwpY= -github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e/go.mod h1:AzA8Lj6YtixmJWL+wkKoBGsLWy9gFrAzi4g+5bCKwpY= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= github.com/flynn/noise v1.0.1 h1:vPp/jdQLXC6ppsXSj/pM3W1BIJ5FEHE2TulSJBpb43Y= github.com/flynn/noise v1.0.1/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= @@ -1304,7 +173,6 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/fxamacker/cbor/v2 v2.4.1-0.20220515183430-ad2eae63303f/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/fxamacker/cbor/v2 v2.4.1-0.20230228173756-c0c9f774e40c h1:5tm/Wbs9d9r+qZaUFXk59CWDD0+77PBqDREffYkyi5c= github.com/fxamacker/cbor/v2 v2.4.1-0.20230228173756-c0c9f774e40c/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/fxamacker/circlehash v0.3.0 h1:XKdvTtIJV9t7DDUtsf0RIpC1OcxZtPbmgIH7ekx28WA= @@ -1315,69 +183,32 @@ github.com/gammazero/deque v0.1.0 h1:f9LnNmq66VDeuAlSAapemq/U7hJ2jpIWa4c09q8Dlik github.com/gammazero/deque v0.1.0/go.mod h1:KQw7vFau1hHuM8xmI9RbgKFbAsQFWmBpqQ2KenFLk6M= github.com/gammazero/workerpool v1.1.2 h1:vuioDQbgrz4HoaCi2q1HLlOXdpbap5AET7xu5/qj87g= github.com/gammazero/workerpool v1.1.2/go.mod h1:UelbXcO0zCIGFcufcirHhq2/xtLXJdQ29qZNlXG9OjQ= -github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61/go.mod h1:Q0X6pkwTILDlzrGEckF6HKjXe48EgsY/l7K7vhY4MW8= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.0.0-20230607174250-df487255f46b/go.mod h1:CDncRYVRSDqwakm282WEkjfaAj1hxU/v5RXxk5nXOiI= -github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= -github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ= github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc= -github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= -github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= -github.com/go-fonts/latin-modern v0.3.0/go.mod h1:ysEQXnuT/sCDOAONxC7ImeEDVINbltClhasMAqEtRK0= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.3.0/go.mod h1:jdJ+cqF+F4SUL2V+qxBth8fvBpBDS7yloUL5Fi8GTGY= -github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= -github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= -github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9/go.mod h1:gWuR/CrFDDeVRFQwHPvsv9soJVB/iqymhuZQuJ3a9OM= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= @@ -1386,66 +217,32 @@ github.com/go-playground/validator/v10 v10.14.1 h1:9c50NUPC30zyuKprjL3vNZ0m5oG+j github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= -github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -1455,170 +252,69 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= -github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82/go.mod h1:PxC8OnwL11+aosOB5+iEPoV3picfs8tUpkVd0pDo+Kg= -github.com/gonum/internal v0.0.0-20181124074243-f884aa714029/go.mod h1:Pu4dmpkhSyOzRwuXkOgAvijx4o+4YMUJJo9OvPYMkks= -github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2EAE789SSiSJNqxPaC0aE9J8NTOI0Jo/A= -github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= -github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= github.com/google/pprof v0.0.0-20231229205709-960ae82b1e42 h1:dHLYa5D8/Ta0aLR2XcPsrkpAgGeFs6thhMcQK0oQ0n8= github.com/google/pprof v0.0.0-20231229205709-960ae82b1e42/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/safehtml v0.0.2/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go v0.0.0-20161107002406-da06d194a00e/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= -github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uilive v0.0.4 h1:hUEBpQDj8D8jXgtCdBu7sWsy5sbW/5GhuO8KBwJ2jyY= github.com/gosuri/uilive v0.0.4/go.mod h1:V/epo5LjjlDE5RJUcqx8dbw+zc93y5Ya3yg8tfZ74VI= -github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No= github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU= -github.com/guptarohit/asciigraph v0.5.5/go.mod h1:dYl5wwK4gNsnFf9Zp+l06rFiDZ5YtXM6x7SRWZ3KGag= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= -github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/holiman/uint256 v1.3.0 h1:4wdcm/tnd0xXdu7iS3ruNvxkWwrb4aeBQv19ayYn8F4= github.com/holiman/uint256 v1.3.0/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -1628,33 +324,13 @@ github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE= github.com/huandu/go-clone/generic v1.7.2 h1:47pQphxs1Xc9cVADjOHN+Bm5D0hNagwH9UXErbxgVKA= github.com/huandu/go-clone/generic v1.7.2/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs= -github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= -github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= -github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= -github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= -github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= -github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= -github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= -github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= -github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= @@ -1681,10 +357,6 @@ github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fG github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= github.com/ipld/go-ipld-prime v0.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH9C2E= github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= @@ -1692,95 +364,42 @@ github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABo github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= -github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267/go.mod h1:h1nSAbGFqGVzn6Jyl1R/iCcBUHN4g+gW1u9CoBTrb9E= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/k0kubun/pp v3.0.1+incompatible h1:3tqvf7QgUnZ5tXO6pNAZlrvHgl6DvifjDrd9g2S9Z40= github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= -github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapdz1EwA= -github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= -github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= -github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= -github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kevinburke/go-bindata v3.23.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= github.com/kevinburke/go-bindata v3.24.0+incompatible h1:qajFA3D0pH94OTLU4zcCCKCDgR+Zr2cZK/RPJHDdFoY= github.com/kevinburke/go-bindata v3.24.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= -github.com/kilic/bls12-381 v0.1.0/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhdmfzw1ig= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= -github.com/klauspost/cpuid/v2 v2.2.0/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc= github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= -github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= -github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/libp2p/go-addr-util v0.1.0 h1:acKsntI33w2bTU7tC9a0SaPimJGfSI0bFKC18ChxeVI= github.com/libp2p/go-addr-util v0.1.0/go.mod h1:6I3ZYuFr2O/9D+SoyM0zEw0EF3YkldtTX406BpdQMqw= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= @@ -1821,94 +440,44 @@ github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczG github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/logrusorgru/aurora/v4 v4.0.0 h1:sRjfPpun/63iADiSvGGjgA1cAYegEWMPCJdUpJYn9JA= github.com/logrusorgru/aurora/v4 v4.0.0/go.mod h1:lP0iIa2nrnT/qoFXcOZSrZQpJ1o6n2CUf/hyHi2Q4ZQ= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= -github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= -github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= -github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= -github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= -github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= -github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= @@ -1930,63 +499,50 @@ github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dy github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onflow/atree v0.6.1-0.20230711151834-86040b30171f/go.mod h1:xvP61FoOs95K7IYdIYRnNcYQGf4nbF/uuJ0tHf4DRuM= -github.com/onflow/atree v0.8.0-rc.6 h1:GWgaylK24b5ta2Hq+TvyOF7X5tZLiLzMMn7lEt59fsA= -github.com/onflow/atree v0.8.0-rc.6/go.mod h1:yccR+LR7xc1Jdic0mrjocbHvUD7lnVvg8/Ct1AA5zBo= -github.com/onflow/cadence v1.0.0-M3/go.mod h1:odXGZZ/wGNA5mwT8bC9v8u8EXACHllB2ABSZK65TGL8= -github.com/onflow/cadence v1.0.0 h1:bvT75F2LZJvDCBmmajAv7QLISK6Qp30FAKcSwqNNH+o= -github.com/onflow/cadence v1.0.0/go.mod h1:7wvvecnAZtYOspLOS3Lh+FuAmMeSrXhAWiycC3kQ1UU= -github.com/onflow/crypto v0.25.0/go.mod h1:C8FbaX0x8y+FxWjbkHy0Q4EASCDR9bSPWZqlpCLYyVI= +github.com/onflow/atree v0.8.0 h1:qg5c6J1gVDNObughpEeWm8oxqhPGdEyGrda121GM4u0= +github.com/onflow/atree v0.8.0/go.mod h1:yccR+LR7xc1Jdic0mrjocbHvUD7lnVvg8/Ct1AA5zBo= +github.com/onflow/cadence v1.2.1 h1:hmSsgX3rTsp2E5qTSl1JXINt8qepdRrHTwDSYqN5Nxs= +github.com/onflow/cadence v1.2.1/go.mod h1:fJxxOAp1wnWDfOHT8GOc1ypsU0RR5E3z51AhG8Yf5jg= github.com/onflow/crypto v0.25.2 h1:GjHunqVt+vPcdqhxxhAXiMIF3YiLX7gTuTR5O+VG2ns= github.com/onflow/crypto v0.25.2/go.mod h1:fY7eLqUdMKV8EGOw301unP8h7PvLVy8/6gVR++/g0BY= -github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1 h1:q9tXLIALwQ76bO4bmSrhtTkyc2cZF4/gH11ix9E3F5k= -github.com/onflow/flow-core-contracts/lib/go/contracts v1.3.1/go.mod h1:u/mkP/B+PbV33tEG3qfkhhBlydSvAKxfLZSfB4lsJHg= -github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1 h1:FfhMBAb78p6VAWkJ+iqdKLErGQVQgxk5w6DP5ZruWX8= -github.com/onflow/flow-core-contracts/lib/go/templates v1.3.1/go.mod h1:NgbMOYnMh0GN48VsNKZuiwK7uyk38Wyo8jN9+C9QE30= -github.com/onflow/flow-emulator v1.0.1 h1:yQc/YOzj4jJ4hPhWtzDTR4KXTq02LNXySMsU1ZK1uEw= -github.com/onflow/flow-emulator v1.0.1/go.mod h1:xDln3yR7WNfv+45RojHlezV0N8QziMrII16agWaOwFE= -github.com/onflow/flow-ft/lib/go/contracts v1.0.0 h1:mToacZ5NWqtlWwk/7RgIl/jeKB/Sy/tIXdw90yKHcV0= -github.com/onflow/flow-ft/lib/go/contracts v1.0.0/go.mod h1:PwsL8fC81cjnUnTfmyL/HOIyHnyaw/JA474Wfj2tl6A= -github.com/onflow/flow-ft/lib/go/templates v1.0.0 h1:6cMS/lUJJ17HjKBfMO/eh0GGvnpElPgBXx7h5aoWJhs= -github.com/onflow/flow-ft/lib/go/templates v1.0.0/go.mod h1:uQ8XFqmMK2jxyBSVrmyuwdWjTEb+6zGjRYotfDJ5pAE= -github.com/onflow/flow-go v0.38.0-preview.0.0.20241002124048-21cfe5aea5a8 h1:gQcr59aPL9YjsUkgYwcc8ec8h2bw3ttX03553S/aW34= -github.com/onflow/flow-go v0.38.0-preview.0.0.20241002124048-21cfe5aea5a8/go.mod h1:kdaRKWlvm1vC8Lhf2uI4XvDxS+AvfWvrWZr2CFOz8y8= -github.com/onflow/flow-go-sdk v1.0.0-M1/go.mod h1:TDW0MNuCs4SvqYRUzkbRnRmHQL1h4X8wURsCw9P9beo= -github.com/onflow/flow-go-sdk v1.0.0 h1:Ha4fQm1MMKsyaqMkQLCN3rA/yaQKG6DGwiIfx06j40c= -github.com/onflow/flow-go-sdk v1.0.0/go.mod h1:iZkW2IWieVUZKK06mQCxpjJzPDgS0VtGpTaP/rKu6J4= -github.com/onflow/flow-nft/lib/go/contracts v1.2.1 h1:woAAS5z651sDpi7ihAHll8NvRS9uFXIXkL6xR+bKFZY= -github.com/onflow/flow-nft/lib/go/contracts v1.2.1/go.mod h1:2gpbza+uzs1k7x31hkpBPlggIRkI53Suo0n2AyA2HcE= -github.com/onflow/flow-nft/lib/go/templates v1.2.0 h1:JSQyh9rg0RC+D1930BiRXN8lrtMs+ubVMK6aQPon6Yc= -github.com/onflow/flow-nft/lib/go/templates v1.2.0/go.mod h1:p+2hRvtjLUR3MW1NsoJe5Gqgr2eeH49QB6+s6ze00w0= -github.com/onflow/flow/protobuf/go/flow v0.3.2-0.20231121210617-52ee94b830c2/go.mod h1:NA2pX2nw8zuaxfKphhKsk00kWLwfd+tv8mS23YXO4Sk= +github.com/onflow/flow-core-contracts/lib/go/contracts v1.4.0 h1:R86HaOuk6vpuECZnriEUE7bw9inC2AtdSn8lL/iwQLQ= +github.com/onflow/flow-core-contracts/lib/go/contracts v1.4.0/go.mod h1:9asTBnB6Tw2UlVVtQKyS/egYv3xr4zVlJnJ75z1dfac= +github.com/onflow/flow-core-contracts/lib/go/templates v1.4.0 h1:u2DAG8pk0xFH7TwS70t1gSZ/FtIIZWMSNyiu4SeXBYg= +github.com/onflow/flow-core-contracts/lib/go/templates v1.4.0/go.mod h1:pN768Al/wLRlf3bwugv9TyxniqJxMu4sxnX9eQJam64= +github.com/onflow/flow-emulator v1.1.0 h1:ocF5Pv/zrY5jb0iMxQ15NOM6EuS9Y/N+SUzREi+lKcg= +github.com/onflow/flow-emulator v1.1.0/go.mod h1:wuSY3boFgO+ZRW8PGeWcs+iwcicqkO58G1iPHqRQYDY= +github.com/onflow/flow-ft/lib/go/contracts v1.0.1 h1:Ts5ob+CoCY2EjEd0W6vdLJ7hLL3SsEftzXG2JlmSe24= +github.com/onflow/flow-ft/lib/go/contracts v1.0.1/go.mod h1:PwsL8fC81cjnUnTfmyL/HOIyHnyaw/JA474Wfj2tl6A= +github.com/onflow/flow-ft/lib/go/templates v1.0.1 h1:FDYKAiGowABtoMNusLuRCILIZDtVqJ/5tYI4VkF5zfM= +github.com/onflow/flow-ft/lib/go/templates v1.0.1/go.mod h1:uQ8XFqmMK2jxyBSVrmyuwdWjTEb+6zGjRYotfDJ5pAE= +github.com/onflow/flow-go v0.38.0-preview.0.0.20241022154145-6a254edbec23 h1:spF44tXZ341oVDTuXzzKTQ0W6rwZFV9r2/SRVVaMReo= +github.com/onflow/flow-go v0.38.0-preview.0.0.20241022154145-6a254edbec23/go.mod h1:6f7CTcguVOBINmraaWMiij5e2zu7W2mKsOmXAfvCZ2g= +github.com/onflow/flow-go-sdk v1.2.2 h1:F78Sq/VaExgtaQv739k06gnx2aIyLF5wVE0XwxFpmsc= +github.com/onflow/flow-go-sdk v1.2.2/go.mod h1:yhQ5+Sp2xWoCQ1fuRDswawTDQ0ng0z5nTkFVH82xL7E= +github.com/onflow/flow-nft/lib/go/contracts v1.2.2 h1:XFERNVUDGbZ4ViZjt7P1cGD80mO1PzUJYPfdhXFsGbQ= +github.com/onflow/flow-nft/lib/go/contracts v1.2.2/go.mod h1:eZ9VMMNfCq0ho6kV25xJn1kXeCfxnkhj3MwF3ed08gY= +github.com/onflow/flow-nft/lib/go/templates v1.2.1 h1:SAALMZPDw9Eb9p5kSLnmnFxjyig1MLiT4JUlLp0/bSE= +github.com/onflow/flow-nft/lib/go/templates v1.2.1/go.mod h1:W6hOWU0xltPqNpv9gQX8Pj8Jtf0OmRxc1XX2V0kzJaI= github.com/onflow/flow/protobuf/go/flow v0.4.7 h1:iP6DFx4wZ3ETORsyeqzHu7neFT3d1CXF6wdK+AOOjmc= github.com/onflow/flow/protobuf/go/flow v0.4.7/go.mod h1:NA2pX2nw8zuaxfKphhKsk00kWLwfd+tv8mS23YXO4Sk= -github.com/onflow/flowkit/v2 v2.0.1 h1:GIZ2irR7OTO8wXx7ntYkQp/aaqX6M6Tg5I8wR6xWFI8= -github.com/onflow/flowkit/v2 v2.0.1/go.mod h1:vT6Ml14Vti69UW3n5jbW/kY4a1Qyc/NwM1jT7Tcr/sQ= +github.com/onflow/flowkit/v2 v2.1.0 h1:HWx3wLMOZltC8D12YZn11bYDUaLBeVq3qVy2TY+5b7k= +github.com/onflow/flowkit/v2 v2.1.0/go.mod h1:LgV2PJRp9zRtmThruzJ/uaAxPgplAGEA+gBzLODm6Q4= github.com/onflow/go-ethereum v1.14.7 h1:gg3awYqI02e3AypRdpJKEvNTJ6kz/OhAqRti0h54Wlc= github.com/onflow/go-ethereum v1.14.7/go.mod h1:zV14QLrXyYu5ucvcwHUA0r6UaqveqbXaehAVQJlSW+I= -github.com/onflow/sdks v0.5.1-0.20230912225508-b35402f12bba/go.mod h1:F0dj0EyHC55kknLkeD10js4mo14yTdMotnWMslPirrU= +github.com/onflow/nft-storefront/lib/go/contracts v1.0.0 h1:sxyWLqGm/p4EKT6DUlQESDG1ZNMN9GjPCm1gTq7NGfc= +github.com/onflow/nft-storefront/lib/go/contracts v1.0.0/go.mod h1:kMeq9zUwCrgrSojEbTUTTJpZ4WwacVm2pA7LVFr+glk= github.com/onflow/sdks v0.6.0-preview.1 h1:mb/cUezuqWEP1gFZNAgUI4boBltudv4nlfxke1KBp9k= github.com/onflow/sdks v0.6.0-preview.1/go.mod h1:F0dj0EyHC55kknLkeD10js4mo14yTdMotnWMslPirrU= github.com/onflow/wal v1.0.2 h1:5bgsJVf2O3cfMNK12fiiTyYZ8cOrUiELt3heBJfHOhc= github.com/onflow/wal v1.0.2/go.mod h1:iMC8gkLqu4nkbkAla5HkSBb+FGyQOZiWz3DYm2wSXCk= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= @@ -1998,81 +554,44 @@ github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= -github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= -github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= -github.com/pkg/term v1.2.0-beta.2/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/polydawn/refmt v0.89.0 h1:ADJTApkvkeBZsN0tBTx8QjpD9JkmxbKp0cxfr9qszm4= github.com/polydawn/refmt v0.89.0/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.0/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7/go.mod h1:IToEjHuttnUzwZI5KBSM/LOOW3qLbbrHOEfp3SbECGY= github.com/psiemens/graceland v1.0.0 h1:L580AVV4Q2XLcPpmvxJRH9UpEAYr/eu2jBKmMglhvM8= github.com/psiemens/graceland v1.0.0/go.mod h1:1Tof+vt1LbmcZFE0lzgdwMN0QBymAChG3FRgDx8XisU= github.com/psiemens/sconfig v0.1.0 h1:xfWqW+TRpih7mXZIqKYTmpRhlZLQ1kbxV8EjllPv76s= @@ -2087,74 +606,44 @@ github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFD github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= -github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= -github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg= -github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sethvargo/go-retry v0.2.3 h1:oYlgvIvsju3jNbottWABtbnoLC+GDtLdBHxKWxQm/iU= github.com/sethvargo/go-retry v0.2.3/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/slok/go-http-metrics v0.10.0 h1:rh0LaYEKza5eaYRGDXujKrOln57nHBi4TtVhmNEpbgM= github.com/slok/go-http-metrics v0.10.0/go.mod h1:lFqdaS4kWMfUKCSukjC47PdCeTk+hXDUVm8kLHRqJ38= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= -github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= @@ -2167,7 +656,6 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= -github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -2177,26 +665,18 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v0.0.0-20170601210322-f6abca593680/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/supranational/blst v0.3.8-0.20220526154634-513d2456b344/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= @@ -2205,32 +685,17 @@ github.com/texttheater/golang-levenshtein/levenshtein v0.0.0-20200805054039-cae8 github.com/texttheater/golang-levenshtein/levenshtein v0.0.0-20200805054039-cae8b0eaed6c/go.mod h1:JlzghshsemAMDGZLytTFY8C1JQxQPhnatWqNwUXjggo= github.com/thoas/go-funk v0.9.2 h1:oKlNYv0AY5nyf9g+/GhMgS/UO2ces0QRdPKwkhY3VCk= github.com/thoas/go-funk v0.9.2/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= -github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/turbolent/prettier v0.0.0-20220320183459-661cc755135d h1:5JInRQbk5UBX8JfUvKh2oYTLMVwj3p6n+wapDDm7hko= github.com/turbolent/prettier v0.0.0-20220320183459-661cc755135d/go.mod h1:Nlx5Y115XQvNcIdIy7dZXaNSUpzwBSge4/Ivk93/Yog= -github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/urfave/cli/v2 v2.10.2/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= -github.com/urfave/cli/v2 v2.24.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= -github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.11 h1:Q47CePddpNGNhk4GCnAx9DDtASi2rasatE0cd26cZoE= @@ -2239,26 +704,13 @@ github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37w github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= -github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= @@ -2267,56 +719,36 @@ github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= -github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= -go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= -go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= -go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= -go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= go.uber.org/dig v1.17.1 h1:Tga8Lz8PcYNsWsyHMZ1Vm0OQOUaJNDyvPImgbAu9YSc= go.uber.org/dig v1.17.1/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= go.uber.org/fx v1.20.1 h1:zVwVQGS8zYvhh9Xxcu4w1M6ESyeMzebzj2NbSayZ4Mk= go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= @@ -2325,7 +757,6 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= @@ -2334,251 +765,60 @@ golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= -golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA= -golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.5.0/go.mod h1:FVC7BI/5Ym8R25iw5OLsgshdUBbT1h5jZTpA+mvAdZ4= -golang.org/x/image v0.6.0/go.mod h1:MXLdDR43H7cDJq5GEGXEVeeNhPgi+YYEQ2pC1byI1x0= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= -golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/oauth2 v0.0.0-20170207211851-4464e7848382/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= -golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= -golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= -golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5/go.mod h1:UBKtEnL8aqnd+0JHqZ+2qoMDwtuy6cYhhKNoHLBiTQc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2586,611 +826,94 @@ golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200918174421-af09f7315aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191126055441-b0650ceb63d9/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.8-0.20211029000441-d6a9af8af023/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= +golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/gonum v0.6.1/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -gonum.org/v1/gonum v0.13.0/go.mod h1:/WPYRckkfWrhWefxyYTfrTtQR0KH4iyHNuzxqXAKyAU= gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.0/go.mod h1:JWIHJ7U20drSQb/aDpTetJzfC1KlAPldJLpkSy88dvQ= -gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= -google.golang.org/api v0.0.0-20170206182103-3d017632ea10/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= -google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= -google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= -google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= -google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= -google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= -google.golang.org/api v0.139.0/go.mod h1:CVagp6Eekz9CjGZ718Z+sloknzkDJE7Vc1Ckj9+viBk= -google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= -google.golang.org/api v0.151.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= -google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= -google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= -google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:O9kGHb51iE/nOGvQaDUuadVYqovW56s5emA88lQnj6Y= -google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= -google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= -google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= -google.golang.org/genproto v0.0.0-20230821184602-ccc8af3d0e93/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= -google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:CCviP9RmpZ1mxVr8MUjCnSiY09IbAXZxhLE6EhHIdPU= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= -google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= -google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:SUBoKXbI1Efip18FClrQVGjWcyd0QZd8KkvdP34t7ww= -google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20230807174057-1744710a1577/go.mod h1:NjCQG/D8JandXxM57PZbAJL1DCNL6EypA0vPPwfsc7c= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20231030173426-d783a09b4405/go.mod h1:GRUCuLdzVqZte8+Dl/D4N25yLzcGqqWaYkeVOwulFqw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230731190214-cbb8c96f2d6d/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920183334-c177e329c48b/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= -google.golang.org/grpc v0.0.0-20170208002647-2a6bf6142e96/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= -google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= -google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -3199,135 +922,52 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= launchpad.net/gocheck v0.0.0-20140225173054-000000000087 h1:Izowp2XBH6Ya6rv+hqbceQyw/gSGoXfH/UPoTGduL54= launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= -lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= -lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= -lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.37.0/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20= -modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= -modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= -modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= -modernc.org/ccgo/v3 v3.0.0-20220904174949-82d86e1b6d56/go.mod h1:YSXjPL62P2AMSxBphRHPn7IkzhVHqkvOnRKAKh+W6ZI= -modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= -modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= -modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g= -modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= -modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= -modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= -modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= -modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= -modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= -modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= -modernc.org/libc v1.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA= -modernc.org/libc v1.18.0/go.mod h1:vj6zehR5bfc98ipowQOM2nIDUZnVew/wNC/2tOGS+q0= -modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0= -modernc.org/libc v1.21.4/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI= -modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug= modernc.org/libc v1.37.6 h1:orZH3c5wmhIQFTXF+Nt+eeauyd+ZIt2BX6ARe+kD+aw= modernc.org/libc v1.37.6/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE= -modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= -modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= -modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= -modernc.org/sqlite v1.18.2/go.mod h1:kvrTLEWgxUcHa2GfHBQtanR1H9ht3hTJNtKpzH9k1u0= modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ= modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0= -modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= -modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= -modernc.org/tcl v1.13.2/go.mod h1:7CLiGIPo1M8Rv1Mitpv5akc2+8fxUd2y2UzC/MfMzy0= -modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= -pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/lib/go/iinft/scripts/engine.go b/lib/go/iinft/scripts/engine.go index 7faa822..dfe643c 100644 --- a/lib/go/iinft/scripts/engine.go +++ b/lib/go/iinft/scripts/engine.go @@ -9,7 +9,7 @@ import ( "strings" "text/template" - "github.com/onflow/cadence/runtime/format" + "github.com/onflow/cadence/format" "github.com/onflow/flow-go-sdk" "github.com/piprate/sequel-flow-contracts/lib/go/iinft" "github.com/piprate/sequel-flow-contracts/lib/go/iinft/gwtf" diff --git a/lib/go/iinft/types.go b/lib/go/iinft/types.go index 05b2069..f972f14 100644 --- a/lib/go/iinft/types.go +++ b/lib/go/iinft/types.go @@ -7,7 +7,7 @@ import ( "strings" "github.com/onflow/cadence" - "github.com/onflow/cadence/runtime/common" + "github.com/onflow/cadence/common" "github.com/onflow/flow-go-sdk" )