diff --git a/.golangci.yml b/.golangci.yml index d7cae30..7ff72de 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -71,12 +71,11 @@ linters-settings: allow-cuddle-declarations: false godot: check-all: false - gomoddirectives: - replace-local: true linters: enable-all: true disable: + - gomoddirectives - nolintlint - varnamelen - tenv diff --git a/dataintegrity/suite/ecdsa2019/ecdsa2019.go b/dataintegrity/suite/ecdsa2019/ecdsa2019.go index a5f0155..b4d8fcf 100644 --- a/dataintegrity/suite/ecdsa2019/ecdsa2019.go +++ b/dataintegrity/suite/ecdsa2019/ecdsa2019.go @@ -311,19 +311,19 @@ func canonicalize(data map[string]interface{}, loader ld.DocumentLoader) ([]byte return out, nil } -func hashData(transformedDoc, confData []byte, h hash.Hash) []byte { - h.Write(transformedDoc) +func hashData(docData, proofData []byte, h hash.Hash) []byte { + h.Write(docData) docHash := h.Sum(nil) h.Reset() - h.Write(confData) - result := h.Sum(docHash) + h.Write(proofData) + proofHash := h.Sum(nil) - return result + return append(proofHash, docHash...) } func proofConfig(docCtx interface{}, opts *models.ProofOptions) map[string]interface{} { - return map[string]interface{}{ + proof := map[string]interface{}{ ldCtxKey: docCtx, "type": models.DataIntegrityProof, "cryptosuite": opts.SuiteType, @@ -331,6 +331,15 @@ func proofConfig(docCtx interface{}, opts *models.ProofOptions) map[string]inter "created": opts.Created.Format(models.DateTimeFormat), "proofPurpose": opts.Purpose, } + + if opts.Challenge != "" { + proof["challenge"] = opts.Challenge + } + if opts.Domain != "" { + proof["domain"] = opts.Domain + } + + return proof } func sign(sigBase []byte, key *jwk.JWK, signerGetter SignerGetter) ([]byte, error) { diff --git a/dataintegrity/suite/eddsa2022/eddsa2022.go b/dataintegrity/suite/eddsa2022/eddsa2022.go index 7211e0e..5e7b2a3 100644 --- a/dataintegrity/suite/eddsa2022/eddsa2022.go +++ b/dataintegrity/suite/eddsa2022/eddsa2022.go @@ -31,6 +31,9 @@ const ( // implementing eddsa signatures with RDF canonicalization as per this // spec:https://w3c.github.io/vc-di-eddsa/#verify-proof-eddsa-rdfc-2022 SuiteType = "eddsa-rdfc-2022" + + // SuiteType2 "eddsa-2022" is the data integrity Type identifier for the suite. Alias (vc playground). + SuiteType2 = "eddsa-2022" ) // SignerGetter returns a Signer, which must sign with the private key matching @@ -126,7 +129,7 @@ func (i initializer) Verifier() (suite.Verifier, error) { // Type private, implements suite.SignerInitializer and // suite.VerifierInitializer. func (i initializer) Type() []string { - return []string{SuiteType} + return []string{SuiteType, SuiteType2} } // SignerInitializerOptions provides options for a SignerInitializer. @@ -200,6 +203,7 @@ func (s *Suite) CreateProof(doc []byte, opts *models.ProofOptions) (*models.Proo return p, nil } +// nolint:gocyclo func (s *Suite) transformAndHash(doc []byte, opts *models.ProofOptions) ([]byte, *pubkey.PublicKey, Verifier, error) { docData := make(map[string]interface{}) @@ -208,11 +212,6 @@ func (s *Suite) transformAndHash(doc []byte, opts *models.ProofOptions) ([]byte, return nil, nil, nil, fmt.Errorf("eddsa-2022 suite expects JSON-LD payload: %w", err) } - vmKey := opts.VerificationMethod.JSONWebKey() - if vmKey == nil { - return nil, nil, nil, errors.New("verification method needs JWK") - } - var ( keyType kms.KeyType h hash.Hash @@ -221,11 +220,22 @@ func (s *Suite) transformAndHash(doc []byte, opts *models.ProofOptions) ([]byte, verifier = s.eD25519Verifier keyType = kms.ED25519Type + + finalKey := &pubkey.PublicKey{Type: keyType, JWK: opts.VerificationMethod.JSONWebKey()} + if finalKey.JWK == nil && len(opts.VerificationMethod.Value) > 0 { + finalKey.BytesKey = &pubkey.BytesKey{Bytes: opts.VerificationMethod.Value} + } + + if finalKey.JWK == nil && finalKey.BytesKey == nil { + return nil, nil, nil, errors.New("verification method needs JWK") + } + h = sha256.New() confData := proofConfig(docData[ldCtxKey], opts) - if opts.ProofType != "DataIntegrityProof" || opts.SuiteType != SuiteType { + if opts.ProofType != "DataIntegrityProof" || (opts.SuiteType != SuiteType && + opts.SuiteType != SuiteType2) { return nil, nil, nil, suite.ErrProofTransformation } @@ -241,7 +251,7 @@ func (s *Suite) transformAndHash(doc []byte, opts *models.ProofOptions) ([]byte, docHash := hashData(canonDoc, canonConf, h) - return docHash, &pubkey.PublicKey{Type: keyType, JWK: vmKey}, verifier, nil + return docHash, finalKey, verifier, nil } // VerifyProof implements the eddsa-2022 cryptographic suite for CheckJWTProof Proof. @@ -279,26 +289,41 @@ func canonicalize(data map[string]interface{}, loader ld.DocumentLoader) ([]byte return out, nil } -func hashData(transformedDoc, confData []byte, h hash.Hash) []byte { - h.Write(transformedDoc) +func hashData(docData, proofData []byte, h hash.Hash) []byte { + h.Write(docData) docHash := h.Sum(nil) h.Reset() - h.Write(confData) - result := h.Sum(docHash) + h.Write(proofData) + proofHash := h.Sum(nil) - return result + return append(proofHash, docHash...) } func proofConfig(docCtx interface{}, opts *models.ProofOptions) map[string]interface{} { - return map[string]interface{}{ + suiteType := SuiteType + if opts.SuiteType != "" { + suiteType = opts.SuiteType + } + + proof := map[string]interface{}{ ldCtxKey: docCtx, "type": models.DataIntegrityProof, - "cryptosuite": SuiteType, + "cryptosuite": suiteType, "verificationMethod": opts.VerificationMethodID, "created": opts.Created.Format(models.DateTimeFormat), "proofPurpose": opts.Purpose, } + + if opts.Challenge != "" { + proof["challenge"] = opts.Challenge + } + + if opts.Domain != "" { + proof["domain"] = opts.Domain + } + + return proof } func sign(sigBase []byte, key *jwk.JWK, signerGetter SignerGetter) ([]byte, error) { diff --git a/dataintegrity/suite/eddsa2022/eddsa2022_test.go b/dataintegrity/suite/eddsa2022/eddsa2022_test.go index 7fbc198..bff9495 100644 --- a/dataintegrity/suite/eddsa2022/eddsa2022_test.go +++ b/dataintegrity/suite/eddsa2022/eddsa2022_test.go @@ -51,7 +51,7 @@ func TestNew(t *testing.T) { require.NotNil(t, signer) require.False(t, signer.RequiresCreated()) - require.EqualValues(t, []string{"eddsa-rdfc-2022"}, sigInit.Type()) + require.EqualValues(t, []string{"eddsa-rdfc-2022", "eddsa-2022"}, sigInit.Type()) }) t.Run("verifier success", func(t *testing.T) { @@ -250,18 +250,6 @@ func TestSharedFailures(t *testing.T) { testSign(t, tc) }) - t.Run("no jwk in vm", func(t *testing.T) { - tc := successCase(t) - - tc.proofOpts.VerificationMethod = &did.VerificationMethod{ - ID: tc.proofOpts.VerificationMethodID, - Value: []byte(fooBar), - } - tc.errStr = "verification method needs JWK" - - testSign(t, tc) - }) - t.Run("invalid proof/suite type", func(t *testing.T) { tc := successCase(t) diff --git a/go.mod b/go.mod index 55d5b5d..998cfd4 100644 --- a/go.mod +++ b/go.mod @@ -21,11 +21,11 @@ require ( github.com/multiformats/go-multibase v0.1.1 github.com/piprate/json-gold v0.5.1-0.20230111113000-6ddbe6e6f19f github.com/samber/lo v1.47.0 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.3 github.com/tidwall/gjson v1.14.3 github.com/tidwall/sjson v1.1.4 github.com/trustbloc/bbs-signature-go v1.0.2 - github.com/trustbloc/did-go v1.3.1-0.20240910130808-bf0188fdfe70 + github.com/trustbloc/did-go v1.3.1-0.20241021165331-5721a3ff7396 github.com/trustbloc/kms-go v1.1.2 github.com/veraison/go-cose v1.1.1-0.20240126165338-2300d5c96dbd github.com/xeipuuv/gojsonschema v1.2.0 @@ -67,3 +67,5 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) + +replace github.com/piprate/json-gold v0.5.1-0.20230111113000-6ddbe6e6f19f => github.com/trustbloc/json-gold v0.5.1 diff --git a/go.sum b/go.sum index 205305f..bcaff40 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,6 @@ github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1 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/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/piprate/json-gold v0.5.1-0.20230111113000-6ddbe6e6f19f h1:HlPa7RcxTCrva5izPfTEfvYecO7LTahgmMRD1Qp13xg= -github.com/piprate/json-gold v0.5.1-0.20230111113000-6ddbe6e6f19f/go.mod h1:WZ501QQMbZZ+3pXFPhQKzNwS1+jls0oqov3uQ2WasLs= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -111,14 +109,10 @@ github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5 github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/teserakt-io/golang-ed25519 v0.0.0-20210104091850-3888c087a4c8 h1:RBkacARv7qY5laaXGlF4wFB/tk5rnthhPb8oIBGoagY= github.com/teserakt-io/golang-ed25519 v0.0.0-20210104091850-3888c087a4c8/go.mod h1:9PdLyPiZIiW3UopXyRnPYyjUXSpiQNHRLu8fOsR3o8M= github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= @@ -134,8 +128,10 @@ github.com/tidwall/sjson v1.1.4 h1:bTSsPLdAYF5QNLSwYsKfBKKTnlGbIuhqL3CpRsjzGhg= github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg= github.com/trustbloc/bbs-signature-go v1.0.2 h1:gepEsbLiZHv/vva9FKG5gF38mGtOIyGez7desZxiI1o= github.com/trustbloc/bbs-signature-go v1.0.2/go.mod h1:xYotcXHAbcE0TO+SteW0J6XI3geQaXq4wdnXR2k+XCU= -github.com/trustbloc/did-go v1.3.1-0.20240910130808-bf0188fdfe70 h1:5GOoXZcKYDTsobaTCeFUEBjbognYbjBh38fCjkvClU4= -github.com/trustbloc/did-go v1.3.1-0.20240910130808-bf0188fdfe70/go.mod h1:packTRoBoo8DrwOE7QKsI98xXS3Vf6ovUXYD4FUAcB4= +github.com/trustbloc/did-go v1.3.1-0.20241021165331-5721a3ff7396 h1:z9x5gLgDeUtcPUS8uQgHD/KQ/PL5VK2QV9oENYjsWbU= +github.com/trustbloc/did-go v1.3.1-0.20241021165331-5721a3ff7396/go.mod h1:L5m4TVlPwe7VN5FRrANPMg6EJN8wIlthC8CvossDZVI= +github.com/trustbloc/json-gold v0.5.1 h1:0HHf0ildMnN4rUr7Rgxwnm1CO116JoGMrgoWIFngM1U= +github.com/trustbloc/json-gold v0.5.1/go.mod h1:RVhE35veDX19r5gfUAR+IYHkAUuPwJO8Ie/qVeFaIzw= github.com/trustbloc/kms-go v1.1.2 h1:nAlhDoHkSyX1eQFRz/sJsdgmJuNadyX7FJEy/9ROwys= github.com/trustbloc/kms-go v1.1.2/go.mod h1:OKOtsLbE6W5s4mpjWkvk8XEqcmt9vTgVmDNkHELpWO0= github.com/veraison/go-cose v1.1.1-0.20240126165338-2300d5c96dbd h1:QhdCHSW1/oosJbzBTEYLU6xcKxXbQzzqFnhCtW2UWbA= diff --git a/proof/ldproofs/ed25519signature2020/proof.go b/proof/ldproofs/ed25519signature2020/proof.go index 6a2e747..df70d2a 100644 --- a/proof/ldproofs/ed25519signature2020/proof.go +++ b/proof/ldproofs/ed25519signature2020/proof.go @@ -50,6 +50,12 @@ func New() *Proof { JWKKeyType: JWKKeyType, JWKCurve: JWKCurve, }, + { + VerificationMethodType: "Ed25519VerificationKey2018", + KMSKeyType: kms.ED25519Type, + JWKKeyType: JWKKeyType, + JWKCurve: JWKCurve, + }, { VerificationMethodType: "JsonWebKey2020", KMSKeyType: kms.ED25519Type, diff --git a/verifiable/data_integrity_proof_test.go b/verifiable/data_integrity_proof_test.go index c4cbe5f..bd85605 100644 --- a/verifiable/data_integrity_proof_test.go +++ b/verifiable/data_integrity_proof_test.go @@ -7,17 +7,27 @@ SPDX-License-Identifier: Apache-2.0 package verifiable import ( + _ "embed" + "net/http" "testing" "time" + "github.com/piprate/json-gold/ld" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/trustbloc/did-go/doc/did" + "github.com/trustbloc/did-go/method/jwk" + "github.com/trustbloc/did-go/method/key" + vdrpkg "github.com/trustbloc/did-go/vdr" vdrapi "github.com/trustbloc/did-go/vdr/api" kmsapi "github.com/trustbloc/kms-go/spi/kms" "github.com/trustbloc/vc-go/dataintegrity" "github.com/trustbloc/vc-go/dataintegrity/suite/ecdsa2019" + "github.com/trustbloc/vc-go/dataintegrity/suite/eddsa2022" "github.com/trustbloc/vc-go/internal/testutil/kmscryptoutil" + "github.com/trustbloc/vc-go/proof/defaults" + "github.com/trustbloc/vc-go/vermethod" ) func Test_DataIntegrity_SignVerify(t *testing.T) { @@ -178,6 +188,62 @@ func Test_DataIntegrity_SignVerify(t *testing.T) { }) } +//go:embed testdata/example_presentation.jsonld +var examplePresentation []byte + +//go:embed testdata/example_presentation_2.json +var examplePresentation2 []byte + +//go:embed testdata/context/credential_v2.jsonld +var credentialV2Context []byte + +func TestCanParseRDFC2022Presentation(t *testing.T) { + vdr := vdrpkg.New(vdrpkg.WithVDR(jwk.New()), vdrpkg.WithVDR(key.New())) + + loader := ld.NewDefaultDocumentLoader(http.DefaultClient) + verifier, err := dataintegrity.NewVerifier(&dataintegrity.Options{ + DIDResolver: vdr, + }, eddsa2022.NewVerifierInitializer(&eddsa2022.VerifierInitializerOptions{ + LDDocumentLoader: loader, + })) + + resp, err := ParsePresentation(examplePresentation, + WithPresDataIntegrityVerifier(verifier), + WithPresJSONLDDocumentLoader(loader), + WithPresExpectedDataIntegrityFields("authentication", + "github.com/w3c/vc-data-model-2.0-test-suite", "ubXbWYV5hUDu1VCy2b75qKg"), + ) + require.NoError(t, err) + assert.NotNil(t, resp) +} + +func TestCanParsePlaygroundPresentation(t *testing.T) { + vdr := vdrpkg.New(vdrpkg.WithVDR(jwk.New()), vdrpkg.WithVDR(key.New())) + + loader := ld.NewDefaultDocumentLoader(http.DefaultClient) + verifier, err := dataintegrity.NewVerifier(&dataintegrity.Options{ + DIDResolver: vdr, + }, eddsa2022.NewVerifierInitializer(&eddsa2022.VerifierInitializerOptions{ + LDDocumentLoader: loader, + }), ecdsa2019.NewVerifierInitializer(&ecdsa2019.VerifierInitializerOptions{ + LDDocumentLoader: loader, + })) + + proofChecker := defaults.NewDefaultProofChecker(vermethod.NewVDRResolver(vdr)) + + resp, err := ParsePresentation(examplePresentation2, + WithPresDataIntegrityVerifier(verifier), + WithPresJSONLDDocumentLoader(loader), + WithPresProofChecker(proofChecker), + WithPresExpectedDataIntegrityFields("authentication", + "https://playground.chapi.io", + "3779e883a51a8086039db1d4e773aec26faeb3ee99643706345c572cddded857", + ), + ) + require.NoError(t, err) + assert.NotNil(t, resp) +} + type resolveFunc func(id string) (*did.DocResolution, error) func (f resolveFunc) Resolve(id string, opts ...vdrapi.DIDMethodOption) (*did.DocResolution, error) { diff --git a/verifiable/testdata/context/credential_v2.jsonld b/verifiable/testdata/context/credential_v2.jsonld new file mode 100644 index 0000000..827fe1d --- /dev/null +++ b/verifiable/testdata/context/credential_v2.jsonld @@ -0,0 +1,340 @@ +{ + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "description": "https://schema.org/description", + "digestMultibase": { + "@id": "https://w3id.org/security#digestMultibase", + "@type": "https://w3id.org/security#multibase" + }, + "digestSRI": { + "@id": "https://www.w3.org/2018/credentials#digestSRI", + "@type": "https://www.w3.org/2018/credentials#sriString" + }, + "mediaType": { + "@id": "https://schema.org/encodingFormat" + }, + "name": "https://schema.org/name", + + "VerifiableCredential": { + "@id": "https://www.w3.org/2018/credentials#VerifiableCredential", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "confidenceMethod": { + "@id": "https://www.w3.org/2018/credentials#confidenceMethod", + "@type": "@id" + }, + "credentialSchema": { + "@id": "https://www.w3.org/2018/credentials#credentialSchema", + "@type": "@id" + }, + "credentialStatus": { + "@id": "https://www.w3.org/2018/credentials#credentialStatus", + "@type": "@id" + }, + "credentialSubject": { + "@id": "https://www.w3.org/2018/credentials#credentialSubject", + "@type": "@id" + }, + "description": "https://schema.org/description", + "evidence": { + "@id": "https://www.w3.org/2018/credentials#evidence", + "@type": "@id" + }, + "issuer": { + "@id": "https://www.w3.org/2018/credentials#issuer", + "@type": "@id" + }, + "name": "https://schema.org/name", + "proof": { + "@id": "https://w3id.org/security#proof", + "@type": "@id", + "@container": "@graph" + }, + "refreshService": { + "@id": "https://www.w3.org/2018/credentials#refreshService", + "@type": "@id" + }, + "relatedResource": { + "@id": "https://www.w3.org/2018/credentials#relatedResource", + "@type": "@id" + }, + "renderMethod": { + "@id": "https://www.w3.org/2018/credentials#renderMethod", + "@type": "@id" + }, + "termsOfUse": { + "@id": "https://www.w3.org/2018/credentials#termsOfUse", + "@type": "@id" + }, + "validFrom": { + "@id": "https://www.w3.org/2018/credentials#validFrom", + "@type": "http://www.w3.org/2001/XMLSchema#dateTime" + }, + "validUntil": { + "@id": "https://www.w3.org/2018/credentials#validUntil", + "@type": "http://www.w3.org/2001/XMLSchema#dateTime" + } + } + }, + + "EnvelopedVerifiableCredential": + "https://www.w3.org/2018/credentials#EnvelopedVerifiableCredential", + + "VerifiablePresentation": { + "@id": "https://www.w3.org/2018/credentials#VerifiablePresentation", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "holder": { + "@id": "https://www.w3.org/2018/credentials#holder", + "@type": "@id" + }, + "proof": { + "@id": "https://w3id.org/security#proof", + "@type": "@id", + "@container": "@graph" + }, + "termsOfUse": { + "@id": "https://www.w3.org/2018/credentials#termsOfUse", + "@type": "@id" + }, + "verifiableCredential": { + "@id": "https://www.w3.org/2018/credentials#verifiableCredential", + "@type": "@id", + "@container": "@graph", + "@context": null + } + } + }, + + "EnvelopedVerifiablePresentation": + "https://www.w3.org/2018/credentials#EnvelopedVerifiablePresentation", + + "JsonSchemaCredential": + "https://www.w3.org/2018/credentials#JsonSchemaCredential", + + "JsonSchema": { + "@id": "https://www.w3.org/2018/credentials#JsonSchema", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "jsonSchema": { + "@id": "https://www.w3.org/2018/credentials#jsonSchema", + "@type": "@json" + } + } + }, + + "BitstringStatusListCredential": + "https://www.w3.org/ns/credentials/status#BitstringStatusListCredential", + + "BitstringStatusList": { + "@id": "https://www.w3.org/ns/credentials/status#BitstringStatusList", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "encodedList": { + "@id": "https://www.w3.org/ns/credentials/status#encodedList", + "@type": "https://w3id.org/security#multibase" + }, + "statusMessage": { + "@id": "https://www.w3.org/ns/credentials/status#statusMessage", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "message": "https://www.w3.org/ns/credentials/status#message", + "status": "https://www.w3.org/ns/credentials/status#status" + } + }, + "statusPurpose": + "https://www.w3.org/ns/credentials/status#statusPurpose", + "statusReference": { + "@id": "https://www.w3.org/ns/credentials/status#statusReference", + "@type": "@id" + }, + "statusSize": { + "@id": "https://www.w3.org/ns/credentials/status#statusSize", + "@type": "https://www.w3.org/2001/XMLSchema#positiveInteger" + }, + "ttl": "https://www.w3.org/ns/credentials/status#ttl" + } + }, + + "BitstringStatusListEntry": { + "@id": + "https://www.w3.org/ns/credentials/status#BitstringStatusListEntry", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "statusListCredential": { + "@id": + "https://www.w3.org/ns/credentials/status#statusListCredential", + "@type": "@id" + }, + "statusListIndex": + "https://www.w3.org/ns/credentials/status#statusListIndex", + "statusPurpose": + "https://www.w3.org/ns/credentials/status#statusPurpose" + } + }, + + "DataIntegrityProof": { + "@id": "https://w3id.org/security#DataIntegrityProof", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "challenge": "https://w3id.org/security#challenge", + "created": { + "@id": "http://purl.org/dc/terms/created", + "@type": "http://www.w3.org/2001/XMLSchema#dateTime" + }, + "cryptosuite": { + "@id": "https://w3id.org/security#cryptosuite", + "@type": "https://w3id.org/security#cryptosuiteString" + }, + "domain": "https://w3id.org/security#domain", + "expires": { + "@id": "https://w3id.org/security#expiration", + "@type": "http://www.w3.org/2001/XMLSchema#dateTime" + }, + "nonce": "https://w3id.org/security#nonce", + "previousProof": { + "@id": "https://w3id.org/security#previousProof", + "@type": "@id" + }, + "proofPurpose": { + "@id": "https://w3id.org/security#proofPurpose", + "@type": "@vocab", + "@context": { + "@protected": true, + + "id": "@id", + "type": "@type", + + "assertionMethod": { + "@id": "https://w3id.org/security#assertionMethod", + "@type": "@id", + "@container": "@set" + }, + "authentication": { + "@id": "https://w3id.org/security#authenticationMethod", + "@type": "@id", + "@container": "@set" + }, + "capabilityDelegation": { + "@id": "https://w3id.org/security#capabilityDelegationMethod", + "@type": "@id", + "@container": "@set" + }, + "capabilityInvocation": { + "@id": "https://w3id.org/security#capabilityInvocationMethod", + "@type": "@id", + "@container": "@set" + }, + "keyAgreement": { + "@id": "https://w3id.org/security#keyAgreementMethod", + "@type": "@id", + "@container": "@set" + } + } + }, + "proofValue": { + "@id": "https://w3id.org/security#proofValue", + "@type": "https://w3id.org/security#multibase" + }, + "verificationMethod": { + "@id": "https://w3id.org/security#verificationMethod", + "@type": "@id" + } + } + }, + + "...": { + "@id": "https://www.iana.org/assignments/jwt#..." + }, + "_sd": { + "@id": "https://www.iana.org/assignments/jwt#_sd", + "@type": "@json" + }, + "_sd_alg": { + "@id": "https://www.iana.org/assignments/jwt#_sd_alg" + }, + "aud": { + "@id": "https://www.iana.org/assignments/jwt#aud", + "@type": "@id" + }, + "cnf": { + "@id": "https://www.iana.org/assignments/jwt#cnf", + "@context": { + "@protected": true, + + "kid": { + "@id": "https://www.iana.org/assignments/jwt#kid", + "@type": "@id" + }, + "jwk": { + "@id": "https://www.iana.org/assignments/jwt#jwk", + "@type": "@json" + } + } + }, + "exp": { + "@id": "https://www.iana.org/assignments/jwt#exp", + "@type": "https://www.w3.org/2001/XMLSchema#nonNegativeInteger" + }, + "iat": { + "@id": "https://www.iana.org/assignments/jwt#iat", + "@type": "https://www.w3.org/2001/XMLSchema#nonNegativeInteger" + }, + "iss": { + "@id": "https://www.iana.org/assignments/jose#iss", + "@type": "@id" + }, + "jku": { + "@id": "https://www.iana.org/assignments/jose#jku", + "@type": "@id" + }, + "kid": { + "@id": "https://www.iana.org/assignments/jose#kid", + "@type": "@id" + }, + "nbf": { + "@id": "https://www.iana.org/assignments/jwt#nbf", + "@type": "https://www.w3.org/2001/XMLSchema#nonNegativeInteger" + }, + "sub": { + "@id": "https://www.iana.org/assignments/jose#sub", + "@type": "@id" + }, + "x5u": { + "@id": "https://www.iana.org/assignments/jose#x5u", + "@type": "@id" + } + } +} diff --git a/verifiable/testdata/example_presentation.jsonld b/verifiable/testdata/example_presentation.jsonld new file mode 100644 index 0000000..f808017 --- /dev/null +++ b/verifiable/testdata/example_presentation.jsonld @@ -0,0 +1,40 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2" + ], + "type": [ + "VerifiablePresentation" + ], + "verifiableCredential": [ + { + "@context": [ + "https://www.w3.org/ns/credentials/v2" + ], + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkpJySvETLnxhQG9DzEdmKJtysBDjuuTeDfUj1uNNCUqcj", + "credentialSubject": { + "id": "did:example:subject" + }, + "proof": { + "type": "DataIntegrityProof", + "created": "2024-10-21T19:27:16Z", + "verificationMethod": "did:key:z6MkpJySvETLnxhQG9DzEdmKJtysBDjuuTeDfUj1uNNCUqcj#z6MkpJySvETLnxhQG9DzEdmKJtysBDjuuTeDfUj1uNNCUqcj", + "cryptosuite": "eddsa-rdfc-2022", + "proofPurpose": "assertionMethod", + "proofValue": "z2kb5qAGHsTYw9zeGqEScYFFHmWj8qoYrN5JeK6rp3PJ88Ma5sPAgvoZpvPbbfRFwAZZhmDG1w3L5A2jdzSKX4TPJ" + } + } + ], + "proof": { + "type": "DataIntegrityProof", + "created": "2024-10-21T19:27:40Z", + "verificationMethod": "did:key:z6MkpJySvETLnxhQG9DzEdmKJtysBDjuuTeDfUj1uNNCUqcj#z6MkpJySvETLnxhQG9DzEdmKJtysBDjuuTeDfUj1uNNCUqcj", + "cryptosuite": "eddsa-rdfc-2022", + "proofPurpose": "authentication", + "challenge": "ubXbWYV5hUDu1VCy2b75qKg", + "domain": "github.com/w3c/vc-data-model-2.0-test-suite", + "proofValue": "z2dmNLqEfBenLXXJnd79ucZr1UJR2qkNdWkNuohmTfXfKMwc7U2MKuMVSje1mJKmSWpNtfVmZRDKeSeLsNrWPRk9f" + } +} diff --git a/verifiable/testdata/example_presentation_2.json b/verifiable/testdata/example_presentation_2.json new file mode 100644 index 0000000..fc1ac6c --- /dev/null +++ b/verifiable/testdata/example_presentation_2.json @@ -0,0 +1,76 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context.json", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "type": [ + "VerifiablePresentation" + ], + "holder": "did:key:z6Mkt4Jf2FtLZ52N2ffVN1mFhmVV4SvUJL69jGBEvgx3y3FK", + "verifiableCredential": [ + { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context.json", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:29f07569-ab0f-4980-ab81-998c1c11ddbe", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "name": "Intro to CHAPI", + "issuer": { + "type": [ + "Profile" + ], + "id": "did:key:z6Mkv4v7tCJurgqgGxD7biXmXH8YGdHSggNhrMLpkMEoPi7e", + "name": "W3C Verifiable Credentials Education Task Force", + "image": { + "id": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAgICAgJCAkKCgkNDgwODRMREBARExwUFhQWFBwrGx8bGx8bKyYuJSMlLiZENS8vNUROQj5CTl9VVV93cXecnNEBCAgICAkICQoKCQ0ODA4NExEQEBETHBQWFBYUHCsbHxsbHxsrJi4lIyUuJkQ1Ly81RE5CPkJOX1VVX3dxd5yc0f/CABEIAqsCqwMBIgACEQEDEQH/xAA1AAEBAAIDAQAAAAAAAAAAAAAAAQUGAgQHAwEBAAIDAQEBAAAAAAAAAAAAAAEHBAUGAwII/9oADAMBAAIQAxAAAADNjZ1uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb1kvDc+ZvTD78zemDzN6YPM3pg8zemDzN6YPM3pg8zemDzN6YPM3pg8zemDzN6YPM3pg8zemDzN6YPM3pHmv3gch6YQAAAAAAAAAAAAAAAAAAAAAAAAGV++DfOTnGDROcYMZxgxnGDGcYMZxgxnGDGcYMZxgxnGDGcYMZxgxnGDGcYMZxgxmsJX15BPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbXn/La+atg1/7wA+vE9A7XjufNXc6frqAn5Gz/PvrD0p5bTzV6UPNXpQ81elee/eH1x6YBsGW88/SWVxX3iHch1GS78euvMnjJ8Qn4AAAAAAAAAAAAAAAAAAAAAAAAA2H0LyD17E6rBedeweQ/eHxGRod72jzr0XB7TR9U9H84yefD11j07zn1vG6A+Pm3jt/T3mD0wfT3X7HhvOr5TsOt5nINs1z1ePTm62sY3Rbh55ns994mA170bzL7wvvsevcvvE+us7Jrfpg0feGAAAAAAAAAAAEAkAAAAAAAAAAAA9J822zx2u7+c+jat4b7RRm8Z3PV9D3zD63j5D7B53PxgBl8tsu/a9sOD2uu+fbHrmTzba9b9W+cj7YnLeYeG7xYzuK2zcMLicTrNf6Zlcq2TW0enovnX3+Hz73I4194thPwAAAAACQQAAAAAAAAAAAAAAAAAAA73RkffsnT497XWB44yPQ2Nf+hZ/59fA7zuaxsPzR5NZms/hvRPpcRr+985+LIbDgdq2mXX95rOheraRk89gBkaD0zzzePPfDdUe+lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3fbPNvScLstKxu3437wdq1Ta/N/jP2bYvP8A0CPvy/ZPhsnpre/pW6+WfOXj8xh2XynpPf8AJ3hufY2qbXjdH55r/q/lGXym2ank8Z94ofeIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfXfIfQsfe7B1e2xep+XkXoPnuVy329c8d9Lj77vbMbpun5RvOjZfJh76UDl694/6ljdBkfLvUfOfjMwcMzkwAAAAAAAAAASCAAAAAAAAAAAAAAAAAAAAGy619/nI9cRrrA0LWvv8ADY1+23UshH36mfPX9555g+WX2HBYZ6ppvzl66PXVT1nzj1LF6Voe+eT/AD79RsutZXMh9eIHPubV0fLaaoPXVgAAAAAAAAAAAABAJAAAAAAAAAAAAAAemsCw+s1AZnJgerY3p47D6zWO/wBBl8t7F89O3bA7nQuj6W9MHGZN1fLaYrzvtdXN4vavtp/oHxmaBPXelHr5nuuz3zz3l+R1311Ye+lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyDHvn2D68QMv0esj2CfFnMGj19B7Hmzx2e7aj13phB94gGx53z95bHe9XxifgPTBAAAAAAAAAAAAAACASAAAAAAAAAAAAAAAABIAIAAAAAAAAAAAAAAABIIAAAAAAAAAAAAAAAAAAAM/2fPN1dtBOrtoJ1dtA1dtA1dtA1dtA1dtBGrtoGrtoGrtoGrtoGrtoGrtoGrtoGrtoGrtm1j68KPrwAAAABIAIAAAAAAAAAAAAAAAAAA3Dv6A8tpv7QEfe/tAG/tAG/tAG/tAG/tAG/tAG/tAG/tAG/tAG/tAG/tAG/tAG/tAG/tAG96HX3hh94gAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAAJBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBAhSFACQAAAQAAAAAAAAAAAAAAACQAQAAAAAAA2DX9t5fd/FnFb9fgNa9E8/7nmuA7fmhDO9vK/embEwbOdXz+9GF01wEnb7u1cV0mJyf0Vr2M+P3Ynvr+v8AoGM7nmdPFo8SAAAAAA7vSy2tzMjyzSoO/wAMzL4+sPcu+ZxGH2/Wui1OBFqcPnO32slT9gYOZ1r8rXejuDNx/PZvms9xzWJHV6IBkcdndPsO0zip+6weD3jT+p0uMFj8fme99MxUne4NnGqzdB+XZ611V0L7ectsOAmAGfwGS02x3EURZzS901btOewotzgX0+ffxvbdB+ebZYjL610OpwIu6tne6O587t+/SkrIGB2GJnmn5Pda7O6hmtR3+rCxuQABIAIAAZbE5bUZ+2ihrQGOyvHIsE2+Bnda7GK6DVY4WfxW45LG5KhLSDVZp1+x6/AeX3rGD9C0e2uF6o7bmmdwWd0O02YUbZbT9w0/tedxgtvgtrzGHzFF2cGj2Ojdfs9f9EVPLb7+UcrD4D6+QH0+b5n0N1uz+d7bYLO43a4OnC9axZvCbNzu3zopGyGmbn5/3/LcBaPE9veNd2Koe/Djegw+qd/oXlWgb7VgAAAAAAAMtictqM/bRQ1oNW2nVus0WFFyV6ABuOSxuSoS0ks1+X53seuc76q30J8ftQlpMLmuGbjefrL+qtncFndFtNmFG2W0/cNQ7XncWttvg9pzGIy9F2aGj2Ok9ftdf9D1TLb7+UWw6o+/MADbMvrWy0jZL5fVodp53ft8f0TUjctM3/iOl+oqnuOro216pbnBidpzm55Hhz/PdsJen8fWkD9D1KAAAAAAAAAy2Jy2oz9tFDWg1badW6zRYUXJXoAG45LG5KhLSSzX5fnfLjy/RdQ7VmdZ2akrKDnNtpfQzmDvqr2dwWex/XZRRtltR27Uu153GW22uE2fLYrK0ZZgaPY6Z8Oz8P0NVUcr7+UWxPRHp4gAZHcvP/QKu7YOA6nTcdncFfFYfbfdN3LhOnDguo1nBZDH3zWD6/LuZ+Lu4/O9ssXlMLu9dqwvWsQAAAAAAAAGWxOW1Gftooa0GrbTq3WaLCi5K9AA3HJY3JUJaSWa/L875ceX6LqHKbfpG71P3gcP0mC1rbdUuSvpncHnc3G2MUdZTU9s1XtOextq2eF2XK4vKUbZQaTY6h8Ox8f0LVcW+3lLanGj18AAG86NtfF9HmBUfeYXVt00u4OBzuzYTN8H046mj2ek8T9D1KyWNyuszduFB2iwGf13pNRrwuytwAAAAAAAAGWxOW1Gftooa0GrbTq3WaLCi5K9AA3HJY3JUJaSWa/L875Tl+i6h+2+aBv9adoFddZ0NQ3HULZ4bjnMLmtvr9iFH2S1badY7TnsbeS2OG2PJ4zJ0dZQaTYan8Ox8f0JVstvt5S2pxI9sYABncFkNRsNzFDWfw8/9D0Sx+R2zv8ADnwfTsNmdZ3OvwQuyt2Yw+a0+x2kUPZzW9k1rqdJgRc9dgAAPv8ADN63M6zcVbdhpzcRpzcRp3W3rXdxga8LD5JlsTltRn7aKGtBq208Nzr/AD16A7fm/P7v+A2OJgB1/P7jksbkqEtJLNfl+fcpz/RVRN+0LfK57Gituu6mobfqVrcRxzOIzO612fFH2Q1nZtb7Pn8dbbY4fYMljsjR9kBpNhq3x7Hx/QdXS2+3nHIYYe+KAA5cUT6G6nb/ADxbTWNn6G41/fHP7Rpe5+f2DyvEWfxTNYXM6bZbUKIs1rWy611OkwIueuwAAGbwmb0ez2gUXZgADXdi13ptPrwuquGWxOW1Gftooa0AAGvbDr/T6fXbbdFc7dkcdkaFtFLNfl6DznP9E1JN70feK57AK363qapteq2rxMzGJy+61+dFIWM1zY9d7PQdC22vw+dyOPyFIWOGk2Gs/L7/AC/QVYRyvt5cbbE4IZOGAABtWZ1jZ6TsgOb24HT0jadWt7gg7LnWWxOT1WduAoS0WubHr/TafXBdVcAAAO503j6Z5gWl2OeYEZ5gRnuh0GT5Bt9ey2Jy2oz9tFDWgwOe1jp9N1mPtscN3/h8L9/MtuZj7XkOh36Gs9LNfl6LznP9EVM3bTNzrfsArrq+pq+z61a/EzLYrLbfAzYpGxWv7BgOz0HRtWtxOc7/AEO/SNihpNhrvy+/y/QNYyr7ectsNeGVhAAAd/dPPvQKw7WivuqA1jB97o33V4bXAd7o9jEyN7H56tdgs7iN9rNTF5VmAAAAAAAAKTL4rLajYbWKGs9rOza31mjwttuKv5bYmLyTtHf6PeoazUswMvSec5/oep+W4aptdZ9kFf8AUdDX89g7e4XjlsXlc/GzApKw2CzuD7LQ9G8lrcTme90u7SNihpc/AfL7/K/6ylt9/OW2J1oZeAAAA3fSNp43os0Kh71L0sny0qH6GqYJhZIeiOt2fztbjH5D5e/loKX9B1QAAAAAAWkckTLamZbF5XUZ+0Ch7Oa5seu9XpMPbbi4CW2EWp2bvdLu0PZqWYGVpvJy/Q1U9nZsDnqo7kOL3+KxGSx92V7MpjcmZYUnYTCZvC9lounbbV4rLd3p9ykrDDS5+D+f2+d/VpLb7ecchq4zNeAAAzeE72qzt1FCWiwua1fpdPhBddcAAbZl9V2qk7IDm9vovW2DX77q4NrggBAJFqZbYReSeN5ImW1MymMyuoz9lFEWY1/YMB1ekxFtuHgeNtiZbTY+70+5RFmJZgZWo8nP9B1ZmMl8/pRVlDhgZOB+HJf1ZTJY/IanOyopOwWHzGL6/SdG22txOU7fW7NJWIGnzcNw5y/60lt9PjjbU6mM3WgAALET6Fej3vzzbLSt08+7nmYLO4sADnvmgbBxnRbGKi73hqG5N7rPOvrvnPrtDrGF9C1v7+cBasHlJbUy2ktsTFqZbYS2pmTxuT1GfsYomy2JyzYYutXZHSanXOrtut9Hqepbey5/YO51O3RVlBrcvB5DuOg1gc7tGP7+B6/R/G22vxM7PX5eHrsD5fWhrKfL6jEfXJOp04cju3Dn1Nrh9G23bX0WxMtpp4ztYAAABtGb1TZKasT4aVsmt9tzQdfoAAHLiid27ugbRU3d5ccV0YQcZgtvg4f4cl6VnLb9/MtRJamW2EtqYthMnjshqs/YnyUjY31fIfV8h9ddzuC7Tn+taszj892+l2aSsX6Pm1mX9Hz4/fz9p0uh0eq+3Uts7j5bcnyi0+2Wwn25Td5Z8PvWHYBi+pOvsMb646rW4yOTd4EtsJbU6WM/VAAAAJQAAAAWnG2xP27+LuDlZb49C+HtZWzwpbSW1PHlUC1MtsTLRLbEy2p43khLamW2J48rSWomW1PG8kJbUy2xMtqYthLamW2JnI+fr6OFxvUtyfKW0i2JltTHInSBsNQAAAAAAAWplthFqZbYmW0i2JltTLbEy0S2xMtpHJEy2pltiZaJbYmW2JltItiZbUy2ktRMtsTLamLYS2pltTLbDjbYmW1MtQLUy2xMtEpE6MNlpwAAABSLUy2wltTLUSWplthHKpi2JltJaiZbYmW0ltiYtTLamW2HHlUTLaS2xMWpltiZbSVYmW1MtsTLaRbEy2ktsTFqZbYS2p422JlpIQAA0YbLTgACktsTKqZbSW2JlqJltJbYmWklsJbUy1Ey2plthLamLYmW0ltiZVTLbCW1MtsTxtpLbEy0mW2JltJaiS1MtsJbUxbEy2ktsTFJCAAAAGjDZacUltiZbUxysTFpLbExyqeN5IS2pltieNtJbYmW1MqwltTLbExypxtsTLamOSEtqZbYmWky2wltTLbEyqS2xMtsTLRLbEy2pi1MtsJRIQCQAAAQA0e1sdRLamW2JltItiZbUy2wi1MtsTLaRbEy2pltiZVJbYmW1MtQLUy2xMtpxtsTLbEy2p422EtqZbUxbCW2JltJaiZbUy2xMqkokIAAAAAAAAaVeTYaqW1MtQl5VPG2xMtpHJEy2plthLSZbYmW1McrDjbYmW0lqJltTLbEy2kWxMtqZbYRyJLYmW0ltieNtTLbCORMtsTLSQgEggAAAEggEgAgBp1tz9XLamWomW2EtqYtiZbSW2JlpMtsTLaS2xMWplthLanjbYmW0ltiYtTLbEy2ktRMtpLbEy2pi2EtqZaiSkhAAAJBAAAAJBAAAADUrbna2OSJltJbYmW1PG2wltTLUTLyEtsTLamLYS2pltiZVTLbCW1McrE8baS2xMtsTxtpLamWomW0ltiYpIQAAAACQQAAAAAAAAA1arm66W2JltTKsC1MtRK0lVhKqVqBamW2JlWJLSW1MtsTKqZbYS2plWBbEy0lVC2JlIkAAAAAAAAAAAAAAAAAD//EAEwQAAECBAECEgYJAwQCAgMAAAECAwAEBREgEJIGEhMVFiEwMTRRUlNUcXJzkbEiMjNBgYIUQFBhYqKywdEjQmA1Q6HhJIBEgyZVY//aAAgBAQABPwD/ANyKPSKZMU2Xeel9M4oG5uR741ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGNYaP0MZxjWGj9DGcY1ho/QxnGHqFSUsuqTKAEIUR6R9whJulJ+4fastW6nKsoZZfCW07w0oMbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgjZJWelDMEbJKz0oZgheiGrrSpKpkEEEH0BvGALAD/wBjdD9Pps9LP6uyVOtuWvpyLpULiNj1H6MrPVGiGmsSL0uqXQUtOIIsTeyk5TEjR6NNSUs+JZV1tgn01b8bHqP0ZWeqKjK/RJ6Zl/chwhPZO2MOh6lS06iZdmUFSElKEC5G3vkxseo/RlZ6o2PUfoys9UbHqP0ZWeqNj1H6MrPVGx6j9GVnqjY9R+jKz1Rseo/RlZ6om0JbmphtAslLq0gfcDbLIaHZybQHXCGGzvaYXUeoQrQkzY6Secv+JAtFRo07T7qcSFtc4je+PFkp8oqdnGWBvFV1HiSN+J9gS89NsAWDbqgOrfESkk2pn6VNOKQxp9IgIF1ur5KIVLspv/8Aj81qY31F1eniZkmSwqak1rWyk2dQsWcZJ5Vt8ff9raGZjUqmGibJfQUfMNsZNEkvq1LWsD0mFhz4bxwaFZnTyb0uTttOaYdleTRXLaSZlpkDacbKFdaMNEljLUuVQRZSwXFda9vHOzbcnKuzDm8gbQ5SjvCHHFuOLcWQVLUVK6yb5NDtIS7admE3QD/SSd4kf3ZSAQUqAIIsQYr1IEg8HWR/47h2hyFcmNDEjqMqqaWPTf8AV7A/mNEyNSqswoD120OfG1v2io+hUZCWTtNsIlkoHaIUT8YmJSZdrbrrNSCENFK1thaioJTv+j98MzbM5X31NJ/oTaVtqBHrJKL3PhA3h1farLypd5p9O+2sLzYSoLSlaTcKAI6jDraXWnGlC6VoKT8YW2ppa21+shRSetJtl0NzGo1RtBNkvpLZ698ZNEUvq1KeVb0mSHR1DfwSkuZmal2B/uOBPw98AAAAbwiZfTLy776vVbQVH4Qa5WFEkz7oub2FrCNeqx/+we/4gVmsqUEpn3yokAAW2yYlG32pZpD76nXQPTWfecmiSoiZmhLNqu0wSD+Jfv8ADJJyq5uaYl0mxcXYniHvMNtoabQ2hICEJCUge4CJqclpNouzDgQn3cZPEBD2i1INmZK441rt5XiT0USbygiZaLB5d9MiJiXl5yWcZdAU24n3eIIMJSlKUpSAEpFgOICK1PJnp91afZJ9BH3pHv8AjCEmoolXWvSnJYIStq9i6hs3Ck8ZG8RCqo+K59ORKPJ27KZKTcptYiHEopy5mbUgsvvBQl5cm6mwv1lr/YQBYAD7W0PzGr0pgE+k0S0fl3smiOX1GqurAsl4B0eRy05pbtQk20Gyi8ix4rG5yLQlxC0KF0qSUnqMOtKZdcaVvtrKD8ptl0LS+nn1vneZaNu0vJonmNSpyWhvvuAfKnbOXQxTtUdVOuD0GzZv71+8/DJWqh9AklKSf6rnoN/ufhl0Jy4U/NTJHqIDaetW2YmplqUl3Jh02QgePEB95ienn5+YLzx+5KRvIHEMtArKpN1Ms+q8ss2F/wDbJ/aNEM+ZSRLaFWdfuhPGE/3HICQQQSCDcEGxECsVYJ0oqD9uuCSpRUpRKibkk3J+19CkzpZiZlidpxAWnrRtHJorltPKy8yBttuaRXUvLoVl9PPOvneabsO0vLoll9Rqi3ALJfQHPjvHLoZl9Spuqkek84VfKNoZNFExqlRDI3mGwD2lbZyS0s7NTDTDXrrVYHi4zEuw3LS7TDQshtNhFwASd4RWKh9PnVuJ9kj0Guzx/HLoYbCKXp/e48sn5fRjRVOFT7Umn1WwFr7SsL8y/MlsvLKihtLab8SftumTP0SoSj/uS4ArqVtHJUJb6VIzTHvW2dL2htjLoal9RpiXCPSfWV/DeGXRVLaeSZmANtpyx7K8gSpZCE+sohKes7QhhlLDDLKRZLaAkfCCQkFR3gLmJh8zMw8+d9xZX8DvZNDNP1JlU6sem6LI+5H/AHk0S1HUJYSjav6jw9P8KP8AvBQbCjSX3pUo/ExOPmZm5l/nHFEdW8P8AIuCIpkz9Kp8q8fWLYCu0naOSrS30WpTbQHo6oVJ7K9uEIU4tLafWWoJHWo2hlpLLLTSBZKEBI+EVGZMpITMwLaZCDpe0doRLvJmJdh5JuHG0q8YnpcTUnMsH+9sgdfujb94sfeI0Py4fqsvcei1d1Xy5K9MahSpkg2U5ZpPz5KXI/T55qXJsg3Uvsp34AAAAFgBYDJOU2RnR/XYSVWsFjaUPiIqtAmJFKnmlF2XG+q1lI7Q/fLIPhrQxqo325d0eBIgCwA4hb/AdCkzdialifUWHE9SsmiyXs7KzIHrJLautO2I0Oy+r1VlRF0sgunyGTRXMaWXlpYHbcWVq6kRoYmdVpxZJ22HCn5VekMlZlhK1OabA9Er06epe3GhOXsxNTJHrrDaepO2cmiyYu7Kyw/tSXFdatoZKHOS8lP6s+opRqS03AKts24oGiKjE8IWOtpUS0/Ize0xNNLPEDt+GTaIIMV+lJkXw6wm0u6TYchXJySLoXoVqiPe0VjPsf8AAtD8xqFVl7myXbtK+bJXpbV6VM2F1N2dHyRoUl9LLTMyd9xYQnsoyaIZjV6q+AbpaAaHy78aF5nUqgpknafbI+ZG2Mmi2XsZWaA9ym1fD0hFLlvotOlWT6wRdXaVtnJVpn6VUpt4erqhSnso2sFyCCDtjePvEUCtrfWJOaXddv6bh31W/tOSoSiZ2Sflza6k3SeJQ2wY2/eLH3jiMU9/SsVKW5+VVbtI9If4EFKQQtPrJIUnrG2IYeQ+wy8g3S4hKh8RBAUCki4IIPUYkZVMnJsSyTcNptfjMPvJYYeeUbJbQVH4QpSlqUtXrKJUrrJuYl31S0wy+nfbWF+G/AIUAobxAI6jE9JonZfUV7wcbXmG+SozH0WQmn/ehs27R2hAFha+FDi2VodQbKQoKHWnbhtwONtuJ3lpCh8RfJWGAxVJ1sCwDpI+b0oBKSCDYj/A9DMzqtNLRPpMOFPyq9IZdE0xqVN1IH0nnAj5RtnLQZnV6VL3N1N3aPy5dFcxpJaWlwdtxZWeyjHSCVUmnk9HRk0SC1Xe7ps/4JoXmdSn1sk7TzRzkbYy6KZjVKghgbzLdj2l7Zy6E5iz01LE+ukOJ607Ry6IpnV6q6kG6WQGh5nJxfebDATYE8QvEg0WZCTaO+hlAPhkqraZuuTssm2nKEpb7bab2+YY221uuIbbSVLWoJSOMmKnJGQm1S5VprIQq/aH25KzBlZliYG+04FfAb8AggEbxFxBIAJO8BcxNTBmZl+YP+44VfA72WlTP0Woyj3uDgSrsr2jkedSyy66s2ShBUfhC1qcWpxfrLUVHrUbxRaW1UnXUrfKA2kKKUi5UDEnTJCS9gwArln0leJjRHTjLThmEJ/ovm/ZX7xlpUkZ2eZZt6AOmWeJKchIAJO8IdnHFz7k4g+mXy6k9R2orMgl5pFWlBdh5IU6kf2KxaHaQpgCdmEWcUP6SDvpB/uP3mNFjQTNSjvLZIPyH7docz9Jpcsom6kAtq+TaiuTJlqVMqBspYDSfnwEXBEU2Z+lyEq/71NgK7SdoxolmNRpimwfSfWEfDfOSmTpkJ1qY/sF0rHGhW/AKVJSpJBBAII4jEwwzMsLZeQFIUNsRO6F55lRMrZ9vwXDVAq7irGTUgcpZAEUqmNU5gpSdM6v2i+O37DJoinhKyJZSr+q/dI4wj+45NDVSDS1SLxGpum6L7wUd8fNFV0MuJJekE6ZB2yz7x2IWlSFlC0lKhvpULHwORll6Yc1NltTi+JIvFJ0OhlSX5yynAbpbG2lPXxmFrQ2hbi1BKEgqUTvACKpPqqE4t43CB6LaeJI+3dCczZc3LE74DqesbRjRZMXXKSw/tBdV1naGHQpM6aXmZYn2aw4nqXGiqY0880wN5pu57S8uh+tpYCZKaVZo+yWd5P4ThnZ2XkWC8+qw3kpG+o8QidnHp2ZW+7vq3gN5IG8BloldE2lMtNLtMAWSo7zgH7w/LS8wnSvsNuD8SQY1lpF763s5sNtNNJ0rTaUJ4kiwhSkoSVLUEpAuSTYARW639NOoS5Ilwds84R+329SptMnUJd9ZsgKIX2VCxiqzYnKjMvpN0FVkdlO0MNEnkSNQQ66ohpSVIXbiMTkwZmbmHz/ALjhI6t4YKdX52RSGzZ5kbyFnbT2TDOiimLA1QPNHiKNN/ymDoio4HCFnqbVEzoraAIlZZSlctzaHgImpuZnHS7MOFa/AAcQGGR0SzsskNvp1dscZssDrhGimmkDTofQezpvKHtFcmkf0Jd1w/isgRP1edn/AEXVhLd7htO0n48f/snJ6HZqclW5lEwylK72SoG8bE53pbGaqNic70tjNVGxOd6WxmqjYnO9LYzVRsTnelsZqo2JzvS2M1UbE53pbGaqNic70tjNVGxOd6WxmqjYnO9LYzVRsTnelsZqo2JzvS2M1UbE53pbGaqNic70tjNVGxOd6WxmqjYnO9LYzVRsTnelsZqo2JzvS2M1UbE53pbGaqNic70tjNVGxOd6WxmqjYnO9LYzVRsTnelsZqo2JzvS2M1UbE53pbGaqNic70tjNVGxOd6WxmqjYnO9LYzVRsTnelsZqo2JzvS2M1UbE53pbGaqF6FZxCFrM0wQlJNrK90A3APGPtWl6IJKUkGJd1p4qRe5Ta22Y2VU7mX/AAEbKqdzL/gI2VU7mX/ARsqp3Mv+AjZVTuZf8BGyqncy/wCAjZVTuZf8BGyqncy/4CNlVO5l/wABGyqncy/4CNlVO5l/wEbKqdzL/gI2VU7mX/ARsqp3Mv8AgI2VU7mX/ARsqp3Mv+AjZVTuZf8AARsqp3Mv+AjZVTuZf8BGyqncy/4CNlVO5l/wEbKqdzL/AICNlVO5l/wEbKqdzL/gI2VU7mX/AAEbKqdzL/gI2VU7mX/ARsqp3Mv+AjZVTuZf8BGyqncy/wCAjZVTuZf8BDuienracQGX7qQobw94hIslI4gP/YzTJva4vFjAIO8Qf8AlqPLvy7L2rujToBt6P8RrDL8+7+X+I1hl+fd/L/EOUNlLayl90qCSQDpf4gG4B4xhkqQ3MSzby3XElVzZNrWvtb4jWGX5938v8RrDL8+7+X+I1hl+kO/l/iDa5sbi5t1YZWRmJo/002TfbWrehijSjYu5d1X4t7whDLTYshtCR9wtkdlZZ4WcZQrrETNDSQVSy7HkKNx4w4240socQUqG+D9QkJVE3MakpakjSFV029xHHGsMvz735f4jWKV513xH8RrHKc474iNZJTlO+MaySXG5nRrJI/8A9c8xrJI8TmeYqsmxKLYDQVZSVE3JO9bLJUlmZlkPKecBVfaFrbRt7xGsMvz7v5f4jWGX5938v8RrCx0h38v8Qug8iZzk/wAWh2kTzdyEJcH4Dt+BhSVJUUqSQoe4ixx06SROLdStak6RKSNLb33441hl+fd/L/Eawy/Pu/l/iNYZfn3fy/xE9LJlZlTKVFQCUm5tfby0+mNTbBcW6tJ05TZNv3Eawy/Pu/l/iNYZfn3fy/xGsMvz7v5f4h9sNPutgkhCym5+7c6K5p5IJ96FqT++BxGpuuI5K1J8DbATYE8QiVb1KWYb5LaRlnXdSlJhwb4bNoAsAMFNpn0izzws17hy/wDqEpSlISkAACwAxVVEsZRa3htp9Qjf0x+oUThx7lfmNwr/ALWV7C/MZaRwBnrV+o4n5ZiYTpXWwof8jqMT1Kdl7uNkra/MnFQfbTPYR5nBWf8AUF92jLROBK71WCd4ZM96rLbcKC56cw3xhK/2wVNGkn5gcohXiMDSNUdaRylpHicFbc0smEctxI8NvBT5P6XMBJ9mnbX/AB8YAAAAFgMdVm/pExpEn+m3cD71e8/UKJw49yvzG4V/2sr2F+Yy0jgDPWr9R3Cq04NXmGRZBPpp5P34aD7aZ7CPM4Kz/qC+7RlonAld6rBO8Mme9VFsFsVJc0k+1+MKR+/7YK6i0y0vlt2zT/3gpaNPPsfhJV4DBXnLuS7fElSj5DBTJb6PKIBFlr9NfWcE5WghZblkpURtFZ3vhArE+DfToPyRLVttZCZhGpnlDbTFTnQxLANq9N0WSR7h7z9RonDj3K/MYJypNya0IW2tRUm/o2/eNfmOju/l/mNfmOju/l/mNfmOju/l/mKjPInFtKQ2pOkSoelb324stI4Az1q/UcDc3KvGzb7ajxBQOBSQoFKhcEWIidljKzC2v7d9J/CcFB9tM9hHmcFZ/wBQX3aMtE4ErvVYJzhcz3qstotjZc1J5pzkrSfgDt4K6i7LC+S5Y9RGChIvMvL5LYGcf+sFVc1Sfe/DpUeAv++WRY1ebZb919MrqTt4KxNlllLSDZbt/gkb+D3Ae4fUaJw49yvzGCu8JY7o+eOkcAZ61fqOVXqq6oT6iOoRSqitS0y7yr39RR8jgrbGnl0vDfaO32TgoPtpnsI8zgrP+oL7tGWicDPeqwTnC5nvVRaLbiRcERJu6tKS7nvU2L5asjTyD34bLzTfBQkWYfXynLeAwOOao445y1qV4nLQmdt94/cgeZwVN7Vp1432k+gPl+q0Thx7lfmMFd4Sx3R88dI4Az1q/UcqvVV1Qj1E9kQCpJCkmygQR1iJd4PsNOjeWkHK42l1tbat5SSD8YKSklKt9JKT1g2y0H20z2EeZwVj/UF92iLZKLwM96rBOcLmO9VulFc00npOQ4oePpZX2w6y62d5SCPEQLkC+/bLSUaSQY/Fdecb5Z50tScwsb4bNuuALC2WlN6SQY/GCvON8qiEpKj7heNMV3Wd9RKj8dv6rROHHuV+YwV3hLHdHzx0jgDPWr9Ryq9VXVCPUT2RkojumlFI5twjx28FUb1OffHuVZY+Iy0H20z2EeZwVj/UF92jLRuBnvFYJvhcx3istotuFBcs5MN8aUqHkcEwjU5h9HJcV53GQ3sbb9oYbDbLTY3koA8Blrbmlk0o5bgHh6WU3sbb9tqG0BDaEDeSkDwy1BekkZpQ39TVb6tROHHuV+YwV3hLHdHzx0jgDPWr9Ryq9VXVCPUT2RkoK7OzCONCT4YK6iz7C+Ugg/KctB9tM9hHmcFX4evu0fvFotFG4Ie8Vgm+FTHeKi0W3KlOaSfZ/EFI8Rf9sFWRpJ938QSrxFv2yS6NUmGEcbifO5wV1y7zDfJSVH4mwysJ077CeN1HngrKtLIL+9aB+b6tROHHuV+YwV3hLHdHzx0jgDPWr9Ryq9VXVCPUT2RkoyrT6fxNrHkcFdRdhhXE5bxBy0L20z2EeZwVbh6+7R++Wj8EPeKwTfCpjvFbo05qbrbnJWlXgcFdRZ6XXxoUk/A5KSjTz7X4QpXgLfvgqjmqT7/4bI8Blp400/Kj8fkCcFdVaVaHKdH/AACfq1E4ce5X5jBXeEsd0fPHSOAM9av1HKr1VdUI9RPZGSnK0s/Kn8dvEHBWU3kVHicR52y0L20z2EeZwVXh6+7R++WkcFPeKwTXCn+8Vulri0SLuqycus75bF+vLXUXlW18hwfmFslCRd59fEhIHxOBa9UcW5y1KV4m+WkC8+19yVH/AItgrx/pyw/GfL6tROHHuV+YwV3hLHdHzx0jgDPWr9Ryq9VXVCPUT2RkljpZmXVxOo88FUF5F/7gD4GLRaKH7aZ7CPM4Krw5fYRFotFJ4Ke8OCa4S/3it1ojmmk1I5Dih4+llqaNPITH3J02bt5KEi0q6vluH8otln3C1JzCxvhs26zFrZaKLz47pfmMFePBh2z9WonDj3K/MYK7wljuj546RwBnrV+o5VeqrqhHqI7Ii0I2nGzxLSfA4KkLyE13Zy0T20z2EeZwVThq+wnLSuCnvDgmuEv94rJbJbcaC5Z59vlJCh8DY5VpC0LSd5SSIAIsDvjaPWIpaNJIS/3p02dt5a45pZRCOW4Py+lgoY/8xfdHzGCv+vK9lf7blLyz0ypSWUglIubm0a0VDmkZ8a0VDmkZ8a0VDmkZ8a0VDmkZ8a0VDmkZ8a0VDmkZ8a0VDmkZ8TEpMS2l1ZIGmvaxvvYKJw49yvzGCvECZYuR7I+cadHKHjGnRyh4xp0coeMAg7xBy0jgDPWr9Ryq9VXVCPUR2RkG+OvBP8Bmu6V5ZaL7aY7CPM4Knw1fYTlpXBj3hwTPCX+8VktltuFLc1OfY/FdHiME62UTUy2N/VFW+bbHnDaAhCEDeSkDwy11y7zDfJQVH5jgofCnO6PmMFe9rK9hfmNyoXCX+6HnuFe35b5/2wUThx7lfmMCm21m6kJPWLxqDHNIzRGoMc0jNEagxzSM0RXEIR9G0qEi+nvYW4stJ4Az1q/UcqvVV1Qj1EdkRbJ7ss/wGa7pXlktFG9rMdhHmcFT4YrsJy0vgx7ZwTPCHu2rdUL1NaHOQoK8DeL3yzrF6yyLbThbVm7/AJYKm5qk++eSQnwGCh8Kc7o+YwV720t2F+Y3KhcJf7oee4V7flvn/bBROHHuV+Y3Cvf/ABvn/aLZKTwBnrV+o5VeqrqhHqI7IyAbYwT/AAGa7pfllo/tX+wnzOCpcLV2E5aZwY9s4JjhD3bOC0W3C14kHC7Jy6zvlAB6xldY08/KO22kIc/a2UmwJha9UWtfLUVZxvgofC190fMYK/7WV7C/MblQuEv90PPcK9vy3z/tgonDj3K/MbhXf/jfP+2WlcBZ+b9Ryn1VdUI9RHZGRI2x1jBPcDme7OWke0f7KfM4KlwtXZTlpvBz2zgmOEPds5LbpQ3NNKLRyHD+bbxVBzUpKYUN/SEDrO1honDv/qX5jBXvWlT9y/23KSnFSbi1hsL0yQLE2jX93oqc8/xGv7vRU55/iNf3eipzz/Ea/O9FTnn+I1/d6KnPP8Rr+70VOef4jX93oqc8/wARPT6pzU7tBGkvvKve+CicOPcr8xgqs7My77SWnNKCgk7QPvjXWf578ojXSf578ojXSf578oh+afmNLqq9Npb22gN+LRaKXwFn5v1HKfVV1Qj1EdkRaEj0k9oYJ7gcx2DlpPtH+yn98FR4Urspy03g57ZwTHt3u2d2oTln32+UgKHynFXHNLKoRy3B+Xbw0c2n0fehYwV71ZY/iUPq1E4ce5X5jBXOEsd0fPLaLZaXwFr5v1HKd49UIHoJ7IyNj+o320+eCf4I71Dzy0n2j3ZT++CocKV2U5adwc9s4Jj27vbO7UxzU59g8olPiMVdcu+y3yUEn5j/ANYaYrSz8t96iPFJwV4f0Jc8Tvmk/VqLw7/6V+YwVvhDHdnzi2KmcCa+bzOU7x6oR6qeoZGRd5rvEeeCpH/xFdpPnktFK9d7sp/fBP8ACVdkZLRT+DntnA/7d3tnBaLbihZbWhfIUFZpvANwCMNTc1SffPEQkfAYZRWkm5ZXE6n/AJNsFbTeSvxOJ/j6pbJReGnuVeYwVrhDPdnzw2i0U3gTXzeZynePVCR6KeoZJYXmGe2nBUzZhI41jLS/Xe7KcE/wlXZGWQ9ge2cD/tne2clt1p7mqyUuonb0gB6xtYCQASfdCl6opS+WoqzjfCFaUpVySFeBvgqqdNT5j7khWab/AFajcNPdK8xgrPt2e7PnltFstN4G183nlO8YT6qeoZJJN5pntE+AwVQ+iyn7yctM9d7spwT3CT2RlkPYHtnA/wC2d7Z3ehuaaVcRyHD+bbwVFzU5GYUDY6QgdatrERcEccSbmqysu5ym0nK82HGXWzvKQR4iBewvv23e2C0Wij8MPdK8xgrPt2e7PnFsVO4G183nlO8YT6o6otFMReYKuSjzwVJV3kJ4keeWm+u72U4J3hB7IyWiR9ge2cD3tnO0d3oTlph5vlNgj5T/AN4K45aVbRy3B+UXx0V3Tyek97ayn9xgnGtRm30cSyR1K2/qNsFI4We6V5jBWPbs9g+eOn8Ea+bzyneMJHojqyU1uzS18pX/AAME0rTzDh++3hFslO9d3qGCd4QeyMlokvYntHA97VztHBbc6a5qc9LnjJSfmGCuuXmGW+Q2TnH/AKx0R/STK2idpxO12k4K5LG6JlI/Av8AbcrYbYqRws92rzGCr+2a7B88lsNP4I383nlO8YTvDqhKSpQSkXJNhDTYbbQgf2i2VxYQ2tZ9wJjbO/lp5s44ONOCdQQ6FcafLLKJKWU/eScC9taz+I5LRbdAvSKSvkkKzTeAQQCN4i+WpOapPTB4lBI+UY23FNOIcR6yFBQhl1DzSHUG6VpBGVxtDiFIWm6VCxETlMfllEpBW17lAXI6xGmTyh4w0248bNIUs/hF4aoj6mlqcWELt6KRt7f4jBBBIIIIJBB9xGW2G2K0Wik8KPdq8xgqEo++42ptIICSDc2jW2b5AzhGt03yBnCNbpvkDOELbU2tSFCyhv5LRIcEb+bzy+4wmmzFhco8TEtJoY9InTL4+LBPuWQlsb6jc9QwSqtI+j79rxwOtJdRpT8DCpV4H1L9RhqUUTdzaHFgWrSoUriEWi2C2501zVJGXUd8I0p607WQkJBJ9wvBXpypfKJVnG+4USasVSyjv3Uj9xhLTSjctpJ+8QAALAWyVmTsr6SgbRsF/scNotitFstK4Ue7V5jcJ3hb3WPIZZHgrfx89wJCQSTYCHnC64pZ+HVgEMuBxsK8evcZpe0EDrOK250Jy8s6jkOfqF8lSc1ORmCDYlGlHWra3FKlIUlaDZSTcHiMSM6iba0wsFj108WNaEuIUhYulQsREywZd9xq99Kdo/cclotitipXCj3Z8xuE5wp7rHkMsjwVv4+eMkJBJNgImZku+inaR55bZLQw6WlfhO+ISoKAINwcbjgbH3+4QSSSSds5bbtRX0NPupWsJCkDfNhdJj6TLc+3nCK1Mtqlm20OJVpnBexvYAX3Jl5xhxLjatKoRKVdh6yXSGnPv9U9RwrcQ2kqWsJSN8k2icq9wUS1+8P7DHaLbhTVJRMEqUANId/rEauzzqPGNXZ51HjGrs84jxjV2ecR4xqzPOJ8Y1ZnnE+Mas1zifGJshUy6Qbi48ssm42mXQCtIO37/vjVmucT4xqrXOJ8Y1Vrlp8Y1Vvlp8YMwwnfdT43hc8geokqP37Qhx5x03Ufh7twadW2dre94hEw2v32PEcBIAuTYQuYSNpG2eOCSo3JuclvqNhxbpaGZmYY9k8tI4r3HgYTWJ4b5bV1p/gwa1N22kND4H+YXVJ5f+6E9lNvO8LWtxWmcWpR41G+K0W3K0Wi0Wi0Wi0Wi2W0Wi0Wi2S242i0JUpO8oiA87yzGqun+8wbnbJvktjt9WtgtFsVotudsdtxtuNotit9g2i2K0W3K24W3G242+w7YbY7bjbJbHaLbjbJbdbfYVsVothtitjtFtwtktjtFsVsdvq1sFotitFsNt1tuNtxtu1vq1sFotitFtytFsdtxtitlt9h2w2i2K31O2423G2C2S3122G2K0W3O2O0Ww2y23K32HbDbFaLYbYLZLY7bjbJbHaLfYVsNotitFtytuFsVstslsFstvsi0WxWxWw23C2423C0W+yLY7bnbHaLbhbcbRbFb7ItFsNsVsdotuFtxtFsVvsi0W3O2O2423G0WxWx2yW+v2i24WyW3C242yWx23K32dbJbHaLbjbJbBbLbFb7OtitjtuNtytit9qWx23G2K2W27W/z/8A/8QAShEAAQIDAwUMBwYEBAcBAAAAAQIDAAQFBhAREhMhMTUUIFFSYXFyc3SRkrIWIjNBVIKxMDRAU4HBMmDC0iNQVdEVQ0VkgIOTof/aAAgBAgEBPwD+Yy+gEjAxuhHAY3QjgMboRwGN0I4DG6EcBjdCOAxuhHAY3QjgMboRwGN0I4DG6EcBjdCOAxuhHAY3QjgMboRwGEOBeOH4vIRxRGQjijujIRxR3RkI4o7oyEcUd0ZCOKO6MhHFEZCOKO6MhHFHdGQjijujIRxR3RkI4ojIRxR3RkI4o7oyEcUd0ZCOKO6AANQA/kZTyUqIIMJUFAEXF9AJGBgHEA3KUEgkxuhHAY3QjgMboRwGEOJXjhjcXWwcCqAQRiDGIxw9+GMFQBgHH8XMD1geERLqxSRwG55ODh5dMMqxbHJoumFaEphDSl44ERudXGTBhlGSnE6zD68kZI1mEtrVqEJK2laRohpRU6pUEE6BrCTCMPdqwA/FvJxbPJphhWDg5dF0wcVgcAiXPrEcNzysXDyaIZTg2OXTDy8lOSNZhpGUrkFyhnHiIAAGAhSQoEGG0ZCcIIB1gH8YRjiDGlKuUGAQQDBJWs8phByVg8BhRyQTwCACpQHCYOAHIIWoqUSYZWgAJ1G5oeu6eXD/ACF9OC+eEr/wD3QwMXOaHk4OHl0wteLKeX9oYTivHgEEAggwZdHuJhaCg4GGV5SdOsQkYFfKcf8AIZgYpB4DGJwwiXTgknhMTA0JVGJwwhgYIx4TfMDQkxLn1zzf5EsZSSOEXIGSkCFpykKF2hCNOoCEPJUrDC6YV/CmGASVHkhKgoY3hwF0JGrD8fkf4+HuxxvSjB/D3A4wQCCDC0lCvoYD68NQj1lK4SYbRkJw98OBSCVo/UQJhPvSYW+pWgDCGW8nSdZ/H4DKyvfhhfkjKyvfhhcUhQwIxjMN8sJQlOoXlls+7uhLaE6h/JJcbBwKozrfHEZ1vjiM63xxGdb44jOt8cRnW+OIzrfHEZ1vjiM63xxGdb44jOt8cRnW+OIzrfHEZ1vjiM63xxCVJVjgcfxZZQSTpjMN8sZhvljMN8sZhvljMN8sZhvljMN8sZhvljMN8sZhvljMN8sZhvljMN8sZhvljMN8sIQlGOH8zWsmp6TpiJiTeLakvALIAPqmPSmvfHq8KYsbV5yoCdRNvFxaCgpJA1G+etTWd2zWZnVJazy8gZKdCcYlrR2gfmGWUz68XFpQPVTrUb7QWubkFrlZMJcmBoUo/wAKIm6tUpxRVMTbq+THBPcIamH2VBTTy0K4UqIMWftbP7pZlJsKmEuKCEqH8YJ+wrDzrFLnXmlZLiGVKSeAgR6UV749fcmDaSun/qDsekdc/wBRf8UWVq9Tm6yy1MTjrjZQvFKlEjQm6rWjrTFTnmWp1SUIfWlIwToAMC1Nf+PV4UxLW1rbRGcW28OBaAPLhFHtbIVFSWXBmHzqSo4pVzG+vzD0rR5x9hZQ4hKSlXzCPSmvfHq8KYsjWqnP1J1qamS4gMKUAQNYULq5aGsS1XnWGZxSW0OYJGCY9Ka98erwpiXUpcuypRxJbSSeUje2hl900Wfb9+aKx8nrXWGfzdXW1+awofqCFXTr+55OZf8Ay2lr8Ixg6zFlJfP12THuQS4fkGIutNVjTKYtbasH3TkN/uYJJJJOJMU2lTtTeLUq1lEaVKOhKecxN2NrUs2XAht4DWGiSe4gRYmjFOXUn0YHShkHuUr7CvbGqPZ13SclMzz4YlmytwgkJxA1c8eitf8AgVeNMWYoNWkquy/MypQ2ErBVik603VzbNS7S55oAJOAh5h9hWQ80ttXAoFJusfXVzzKpOZXi+0nFCjrWi60+wZ/oJ84usJth7sqvMm60u3aj1t0r91l+qR9N6pKVpUhQxSoEEchiZZUxMPMq1tuKQedJwizj+YrdPXwvBHj9W61T+YoU6fesJQPmN1gZfKm52Y4jQR4zj+11t50v1US4PqS6APmVpN1m6ciQpMujJwccSHHDyq+yr2xqj2dd1itutdU59N5XNs1LtLnmhn2zfSEVWmS9TlHJd5IxIOQr3oVwiHWlsuuNLGC0KKVDgIikzypCoysyDoQsZXKk6DAIIxBi0+wZ/oJ84usJtd7sqvMm60m3ah1t0r91l+qR9N9aqXzFdnB7lqDg+cYmGXFNOtuJ1oUFDnENrS4hC06lJChzGLeP5FOlWeO/leAXWGl83SXHiNLrx7kjC6ozBmZ+bf8AzHlq7zEmzn5uWZ/MdQjxHCOb7KvbGqPZ13WK2611Tn03lc2zUu0ueaGfbN9IQdZi1cuGK7OAalkOeMYm6hTG6aPIOk4kspSedHqxafYM/wBBPnF1hNrv9lV5k3Wk27UOtulfusv1SPpvrfS+TNyUxx2ijwG6gP5+i09zH/khPg9WLfP5U9JscRkq8ZuoMvuajSDWGBzIUedfrRNuZqUmXOI0tXhGMGLON5yuU4cDwV4dP2de2NUezrusVt1rqnPpvK5tmpdpc80M+2b6Qg6zFvG8KpLr40uP/wAUbrFuFdCaTxHVp/qi0+wZ/oJ84usLtd/sqvMm60m3Kh1t0r92l+qR9N9bmXzlJbeGtp4dyhhdYh/OUbN/lPLT+hwVFrX89XpvgRko8IiVYMxNMMDW44lA+Y4QlISAlIwAGAitKyaRUT/2znlusiMbQSXz+Q/Z17Y1R7Ou6xW3Wuqc+m8rm2al2lzzQz7ZvpCDrMW/SM5Tl8KXB3YXWEVjSXxwTKvKmLT7Bn+gnzi6wu13uyq8ybrSbcqHW3Sv3Zjq0/TfV6X3TRp9rDE5kqHOj1rrAP8ArT7BOsIWIqD+6Z6bf/MeWvvOMWTl8/XZTgbJcPyi60GxKj1CrrG7flui55DvavNuyVNmppoJK20YgK1a49PKx+RKeBf90enlY/IlPAv+6PTysfkSngX/AHRQbWVGo1RiVealwhYXiUJUDoST7zdXtjVHs67qFU0UqoImltFwBChkg4axHp/K/AOeMRSrXMVOealESi0FYV6xUDqGN1c2zUu0ueaGfbN9IQdZi3+qm87v9N1hNmTPaT5RFptgz/QT5hdYba73ZVeZN1o9uVDrbpX7sx1afpvikKBChiCMDE2wZeafYOttxSD8pwizs9uKbml44ZUm8BzhOUPpdYGXxmZ2Y4jaUeM4/tdaDYlR6hV1jdvS/Qc8h3tpdhVHqv3G8sft+T5nPIbq9sao9nXvLH7flOZzyG6ubZqXaXPNDPtm+kIOsxb/AFU3/wBv9N1hNmTPaT5RFpthT/QT5hdYba73ZleZN1o9uT/W3S33Zjq0/Tf2sl8xXZvgcwcHzC+w8vmqOp0jS88o/onRdXE40eo9mcPcLrIKwtBJ8oc8h3sxLszLLjDyMttYwUnEjGPRagfAJ8a/949FqB8Anxr/AN49FqB8AnxriVoNIk30Py8olDqccFBSjrGHvN1e2NUezrusiww/Wm23mkOIza/VWAoao/4RSv8ATpX/AOSYap1PYcDjMmwhY1KS2lJF1c2xUe0ueaGfbN9IQdZi3+um8zv9N1hRhSX+0q8oi02wp/oJ8wusPtZ7syvMm60e25/rbpb7sx1afpv7fS+EzIzHHbUjwHH976HL7mo8g1hgQyknnX6xun287IzjfHYcT3pgxZlebrtPPC5k+IYfZ17Y1R7Ou6xe3Wuqc+m8rm2Kj2lzzQz7ZvpCDri3qsX5BPAhZusYjJoiTxnlmLS7Dn+gnzC6w+1nuzK8ybrR7bn+tulvuzHVp+m/txL52jpd97LyT+itF0mwZmbl2BrcdSjxHCAAAANQuwB0GJlosTDzR1ocUk/ocIpr+56hJvHU2+hR5gfs69sao9nXdYvbjXVufTeVvbFR7S55oZ9s30hBi3DwXVGW+IwO8km6zTWZocinhQVeJRMWl2HPdBPmF1iNrPdmV5hdaLbc/wBbdLfdmOrT9N/W5fdNIn2veWVEc6fWF1kZfP12V4G8pw/KN5ayTMrW5nRgl7B1Pza7qJPJn6XKvhWKigJX006D9lXtjVHs67rGbca6tf03lb2xUe0ueaGfbN9IQohIJJwA1mKxOieqc3MA4pUs5PRGgQ02t11ttAxUtQSBwkxLspYl2WU6m20oHMkYRaME0SfA4gPcQbrFLSmrrBOlTCgO8G6vrSusz6knEZ4ju0QIYBSy0k6whI7hvyARgdUTrBlpyZYOtt1SPCcIsBL4vz0zxW0tj5jj+28tpSzNyCZptOLstiTyoN1Er83R3FZsBbKzits/UcBhy37eQc3Tzl8rkWctXMTtQXLzykDPexwGASeL9hXdjVDqF3UypP0yaTMspQpYSRgsEjTHp1VvyJXwq/uizVop2rTbzL7bKUoayxkAg44ge8m6t7YqPaXPNCVFKgoawcYn7UVaeZUytxCG1aFBsYY3WPpqpmoCaWn/AApfTzr9100wmZln2FanG1IPzDCJlh2WfdYdTgtCikjmiXfdlnm3mVlLiDikiHraVRxgtpQyhZGBcSDjBJJJJxJihyKp6py7IGKQoKX0U6/sbVyD6K5NKbZWUuZKwQknWIsVKKl6QVrQUqdeUrTwDRvCAQQQCCMCDFobJzEq6uYkWy5LnSUDSpuCCLqVSKlUH0blbUAFAl06Ep/WGg4lptLi8tYSApWGGURrOG/rgUqkT4AJJYXgBG5Jr4d3wmNyTXw7vhMbkmvh3fCYsQy83UJkraWkZg6weMLqzLTCqtUClhwgzDmBCTxo3JNfDueEwiQnnDgiUeUeRBMU2x9QmVBU0Mw1y/xnmEScnLyUuiXl0ZKE955TfaGziKmM+wQiZA/RcTUjNybhRMMLbVyjQeYxgYkaTPz6wmXYUR71nQkc5iiUVmksEA5by/aL/YfgJimU6ZUVPybLiuMpAJ74bolHbOKadL48qAYSEpASkAAagPwykpWClSQQfcYElJA4iUZB6CY1DAf+RH//xABJEQABAgMCBwsJBQcEAwAAAAABAgMABAUQERITFSExkZIGIjVBUVJUcXOxshQgMjRTYXKB0TAzQILBFiNCUGBjoSQlYuFEgIP/2gAIAQMBAT8A/qNqizTjaHAtu5SQoXk8cZBm/aNaz9IyDN+0a1n6RkGb9o1rP0jIM37RrWfpGQZv2jWs/SMgzftGtZ+kZBm/aNaz9IyDN+0a1n6RkGb9o1rP0jIM37RrWfpGQZv2jWs/SMgzftGtZ+kZBm/aNaz9IyDN+0a1n6RkGb9o1rP0ickXZMthxSThgkYPu/FpnJpICUzDgAFwAUY8tnOku7Zjy2c6S7tmPLZzpLu2Y8tnOku7Zjy2c6S7tmPLZzpLu2Y8tnOku7Zjy2c6S7tmPLZzpLu2Y8tnOku7Zjy2c6S7tmPLZzpLu2Y8tnOku7Zjy2c6S7tmPLZzpLu2YcedduLjil3aMIk/0MxSJl9lDqFt4Khxk/SH2Vy7y2l3YSdN1iKJNLSlaXGiFAEZz9IWlSFqQrSkkHrFkvLuTLyWm7sI36dGaMgznPa1n6RkGc57Ws/SMgznPa1n6ROU9+TShTikEKNwwSbGqZPOoC0sG46LyB3w4040socQUqHEYxS8Vjbt5h4N/vuvhEs4pIUSEgi8XhR8IMLbU2bjxi8EZwR+LoL2Ew6ydKFXjqVFeZwX2nQMy03HrTZR3sbIoHG2SjVoisM4qeWRoWAuygM3uPPHiAQPnnMTtRZkyhK0qUVAm5N0ZflvYPf4+sJJUlJKSkkX3HSIrE55RMYCTvG7x1njMUaSS86p5wXobOYcqomJ6Vljc66AeTSdQiYRK1SXViVpK050nQQff7jFVZalqawwDvgoXe88ZhDzSCpSwShx5tSbrxckA8nN5ImirMHCMZjHFm7NcFXfi6O9ip1AJzLBTFZZxsis8bZC7KE0Uyq3D/GvN1CK8zhMtPD+BVx6lWUlnFSLXKvfn5xVXsbPO8iLkD5RRpPHP45Q3jZ1qiqznk0sQk/vF5k/qbGXRI0dtwAYShePeVwtalqUtaiVE3kmGH3Jd1LrZuUP8+4xPzhm3y5cQkABIhDjiL8BxSb9OCSPxiFqQtK06UkEdYgYD7HKhxH+FCFtqQ4tsjfJUUnrEMoTKyiEnQ23vvkM8TbQmZN1Cc+Gi9PXpEMtF51tsfxqA1w6tLDC13b1CCbuoQlK3nQkZ1rVrJiVl0SzCGk8QznlPGYrEpOKdU+QFNgXC7+EDlFlTd/0tOaGjEhR1AD+Q0Z7GSSUnS2op/UQ9J31tvNvVXOn8sVl7FySkjS4Qn9TFJexsi1yo3h+UScngVh/NvW71D8+iK49gSgbGlxQHyGeGnFNOIcTdhJIIvhuvTIO/abUPdePrErMtTTIcb0aCDpBirSaZaYBQLkOC8DkPGImHcY1K/8ABrA2Sf0/kNCewZhxo6FpvHWmChJWF3b4AgH3GK69hTDbQ0ITeetUUB6515k/xJCh8oCEhalgb4gAnqiuPYc2Gwczaf8AKs9tAWQ6+3xFIVqivJBlWlcYd7wf5FKvYiZZd5qgT1cdk09j5l53iUokdXFEi9iJthziCgD1HMYJABJNwEHGTk2rAF63FkgE3RNUl+Wlw6pYVnuUE8VlAZIx7xGY3JHeYrbqENy6FC8Fy8j/AIgXHvh9hTDhQrPxpVxKB0EWqp6m6aqYWLllaSByJ0fj/LP9lxt+/wADF/P0bX5y+jBy/fLQEfPQYQtTa0rSblJII6xErNMzrGEADeLloOe6F0KTUvCCnEjmgi6EpZlmbhchtA1RUJvyuYUsegMyB7okXZeaaTJzWkfdL4x7oXQHgrePII94IiUozLBDjqsYofJIirVATCgy0b20m8nnH8fjnMRiL95h4fzuutLzhYSyTvAsqHWRdYy86ysLaWUq5RArk8BcQ0feUmJmempn71wkc0ZhazVZ5lISHAoDQFi+JiozkwnBcc3p0pTmH9Epp08tKVJl1FJAIN4jJlQ6MrWmMmVDoytYjJlQ6MrWmMmVDoytaYyZUOjK1iMmVDoytaYyZUOjK1pjJlQ6MrWmMmVDoytaYyZUOjK1iMmVDoytYjJlQ6MrWIyZUOjK1pjJlQ6MrWIyZUOjK1iHpZ+XKQ82UFWi+7i/Ft1edbQhCSm5IAG95Iy1Pc5GzGWp7nI2Yy1Pc5GzGWp7nI2Yy1Pc5GzGWp7nI2Yy1Pc5GzGWp7nI2Yy1Pc5GzGWp7nI2Yy1Pc5GzGWp7nI2Yy1Pc5GzGWp7nI2Yy1Pc5GzE1OPTZQXSL0ggXC7T/AEKT/IaCxLTE4pqYbCwWyU9YjIlL6KNZjdDIS8oZZTDYQlWEFWy1Ep/k7OMlgV4tOEbzpuh2kUpppxxUqLkJKjnVxW0qgrmkpfmCUNH0Uj0lfQRLyUpLABlhCfeBn1wtttxJStCVDkIvEVWgyuJcfYIZKElRH8BA7vsKe2h2dlm1i9KnEgiBRaX0VOsxkimdEbjJFM6EzsxW6fIsU15xqWbQsFFygkA51CyRpFOdkpVxcsCpTSCTedJEZEpfRRrVD25ymuDeIW2eVKifFfFQoM1KJLiDjWhpIFxHWLaUy2/UZZp1OEhSjePymMiUvoo1mK9TpKVk0OMshCi6BfedFxsptJp70hLOOS4K1Ngk3mMiUvoo1mHkhLzqQLgFqA1+bSXsTUpRf9wJ297Zumaw6elfs3UnXmslmsdMMNc9xKdZusrjuKpcyeNQCNo3WUWQE7OpCxe0jfL/AEFk5PS0k2FvruB0DSTDG6GmvLCCtTZOgrFw1iN0lRvwZNpXIpwj/A+wpfCMp2qbH5hmWbLry8FAIBPXGW6X0obKorVUkJinOtMvhSyUXC48SgbKbwfJ9g34bG3G3E4Ta0qHKk3izdBS0yzgmWU3NLNyhzVWUThaT+JXhNm6bg9vth3GykcGSfZCyY9Yf7RXf5qVFJCk6QbxDTiXWm3E6FJCh84qzWNps2nkbKtnPZQmsZVJbkSSo/IWbqXbpeWa5zhVsj/uzc3LYqQLpG+dUT8k5hZWJtU1PvKv3iCUI6k/ZUvhGU7VNm6Pgp340eLzKbwfJ9g34YV6KuqKfOvSTzbzZPFhJ5w5IQtLiELSb0qAIPuMT0sJqUfYP8STd7jpFlE4Vk/iV4TZun4Pb7YdxspHBkn2QsmPWHu0V3+dRHcbS5Y80FGyboWkLQpJ0EEGFJKFKQdKSQesRuWavm33OY1dtH/qzdM7hz6G+Jtoa1WSrWIlmGuY2lOoQ+5imHXOYhStQjPxn7Kl8Iynaps3R8FO/GjxeZTeD5PsG/DCvRV1Qn0R1RQ3cbS5YnSkFGybhZVGsTUZtH9wna30UThWT+JXhNm6bg9vth4TZSeDZTsxZMffvdorv87cs7fLzLXNcCtof9WVVrFVKbR/cKtrfRuWaulZhznOXbIsqruOqM2v+4U7O9iXRhzDCOc4lOs3WVdeBTJw8rRTtZvs6XwjKdqmzdHwU78aPF5lN4Pk+wb8MK9FXVCfRHVG5dd8i8nmvHwizdGjBqazzm0K/T9IovCsn8SvCbN03qDfbjwmyk8GynZiyY+/e7RXf525l3Anlt8TjR1ps3StYFRC+e0k/MXiKE1i6XL8qr1azDzgaZdcOhCCo/IQSSSSc50xTRfUJPtkd9ldN1KmfyeIfZ0vhGU7VNm6Pgp340eLzKbwfJ9g34YV6KuqE+iOqNyp3k2n3oNm6cf65rsR3mKNwrJ/ErwmzdL6g32w7jZSeDZTsxY/9+92iu/zqU7iajKL/uBO1vbN1Te9lHbtBUnXcYlmsTLMNcxtKdQiuu4qlzHKoBG0bKRwlKdoLN0PBL/WjxjzafLomZ2XYWSErUQSNOgmP2Yp/tH9pP0j9mKf7R/Wn6R+zFP9o/tJ+kVOhScpIuvtrdKk4NwURdnIHJZS+EZTtU2VOSVPSi2ErCCVJN5F+g3x+yr/AExGwYnqA7JyrkwqZSsJuzBJGk3WU3g+T7Bvwwr0VdUJ9FPVG5X/AMz/AOf62bpvXGexHeYo3Ckp8SvCbN0nqCO2HcbKVwdKdmLH/v3vjV3+cCQQRpGiGXA6y04NC0BQ+YirSvlLDKbr8GYaJ6ibj/g2bqXrmJZnnLKtkXfrZSOEpTtBZuh4Jf8AiR4h5tG4Vk/jPhPmV/gqZ/J4hZS+EZTtU+ZX+Cpn8niFlN4Pk+wR4YV6KuqEeinqEblh65+T9bN03rjPYjvMUbhSU+JXhNm6P1BHbDuNlK4OlezFj/373xq7/PoTuNpcvyoBRsm3dM9hz6UcTbYHzOeymG6oSfbI77K+L6TM/k8Q81l1xl1DrSsFaTeDGW6t0xWyj6RlurdMVso+kZcq3TFbKPpD9UqEw0pp6ZKkK0jBSNHULKXwjKdqmyvOutU1xbbikKw0Z0m46Y8vn+mP7aoXNzbqChyZdUk6QpZIsp3B8n2CO6FeirqhA3qeqNy+ic/J+tm6X11rsR3mKNwnK/ErwmzdH6gjth3GylcHSvZix/79341d/n7lnb2JlnmrCtoXfpbU3cdUJtf90jZ3tkovAmpZfNdQdRsrKcKlzfuRhbJv+zpfCMp2qbN0XBbnxo8XmU71CT7FHdCvRV1QnQOqNzCbmplXKpIs3Qm+o9TaRFH4TlfiPhNm6L1FHbDuNlL4PlezFj/37vxq7/P3NPYFQUjicbI+Yz2Puhlh106EIUrUL4znOTnszjRphpYcabcGhSQR84m2sdKzDXPbUnWPs6XwjKdqmzdDwY58aO/zKd6hKdijuhXoq6oAzCNzjeDIrVz3SdQAsrC8OpTJ5CBqAEUfhKV+I+E2bofUUdqO42Uvg+V7MWP/AHzvxq7/AD6Y7iahKL/ugfJWY2V53FUt/lXcjWfMoUwH6axytjFn8tlSlTKzz7RFwwiU/Cc4+ypfCEp2qbN0HBjnxo7/ADKf6hKdijuhXoq6oSCbgBEhL+TSbDJ0pTn6znMLUlCVLUbgkEn5Q64XXXHDpWoq1mKRmqUt8R7jZugSTIAgaHEk2U1JTISoPsxY6Qp1w8qifPzjRphh0PMMujQtCVaxG6l25mVZ5yyvZF36+ZucnQxNFhZuQ9o9yxZUqXL1BCcMlLifRWIRuVVhb+cGD7kZ4q9Cal5RL0sFfu/vLzeSOX7Cl8ISnapsnJRqcYUy4VBJIO905o/ZuQ9o9rH0ir0mWkmG3GlOEqcwd8RyE2U/1CU7FHdBF4iWo0jLLDiUFShoKjfdZXZsMypZB37ub8vHYy4WXm3RpQoK1Q04h1tDiDelQBEONodQptab0qFxEIoEkhzDJcUOaSLrJ+YEtKOuX57rk9Z+xoc02qmMBTiQpF6bieQ5o3Rvh2fCUqBShsD5nP5gJBBBuMUmutPoS1MrCHhmCjmC7Z6flJRs49Yzj0NJV8oWUlayhOCkkkJvvuHJ59MIE/Kkm4BwRjmfao1iMcz7VGsRjmfao1iN0S0LlGQlaT++Gg+42SDrQkZUFxIIZRx+6Mcz7VGsQqYl0i9TzYHvUIm67Ksghk41fu9HXEw+7MuqddVeo20uqmU/dO3qZJ+aYZfZfThNOJUPdZMTktLJvdcA93GYqFQcnXAbsFtPop/U/gGZybZADUw4kcgUbtULqVQWLlTbvyUR3QSSSSbydJ+xui6Lrbou88EpN4JBjymZIuL7l3xH/wBif//Z", + "type": "Image" + } + }, + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "achievement": { + "id": "urn:uuid:1a197ca4-7a29-457c-ae74-a7f8db1fe8e5", + "type": [ + "Achievement" + ], + "achievementType": "Badge", + "name": "VC-EDU - Introduction to CHAPI", + "description": "The holder of this badge used the CHAPI Playground to issue and obtain an Open Badges 3.0 credential", + "criteria": { + "narrative": "The Verifiable Credentials Task Force (VC-EDU) aims to increase understanding of how to issue and use verifiable credentials (VCs) as learning and employment records (LERs). [CHAPI (Credential Handler API)](https://chapi.io/) is one way for VCs to be securely transported on the web. This intro badge demonstrates how CHAPI works with a real Open Badges 3.0 VC. To earn this badge, the holder used the tools at [CHAPI Playground](https://playground.chapi.io) to issue the badge and store it in a CHAPI-enabled digital wallet." + }, + "image": { + "id": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAFAAUADASIAAhEBAxEB/8QAHQABAAIDAQEBAQAAAAAAAAAAAAcIAgUGBAMJAf/EAFoQAAAFAgIEBQsOCwcDBAMAAAACAwQFAQYHEwgSFDMRFSNTYRYhIjI1Q3N0obKzJDE0NjdBUVJicnWCkZIlQkRjg4STorHBwhdUVWRxgZQYJ1Ymo7TRRWXh/8QAHAEAAQUBAQEAAAAAAAAAAAAAAAIEBQYHCAMB/8QARREAAQMDAQQFCgIHBwQDAAAAAQACAwQFEQYHEiExExRBUXEIFSIzNGFygbGyMjY1QlJzgpHBFiMkN2KhwhdTouElJkT/2gAMAwEAAhEDEQA/AOwAAFtXI6AAAQgAAEIAABCAAAQgAAEIAABCAAAQgAAEIAABCAAAQgAAEIAABCAAAQgAAEIAABCAAAQgAAEIAABCAAAQgAAEIAn/AEccOLOvS3JR9dEAjIKovcsp1anpWtKU97r0HE6QNrQNpX/SHt+OQZMzR6ahkyU4KdY1afyDdlQ10pj7VYZ9OVNPa2XRzhuOOAO1RsAsddeC1sr4KtLlt2DRQmUWDaQUOkc9KrVoShlKV6/X4aVrUVuU3QVDM2bO6m93slRZ5I2TYO+A4ELMBceFwNwseW2yknFots9ZkksY2ar21U6Vr19bh98Qzo72NaN8S802uuOReJNEkjIUMooSlKV9evr0Hi2sY5rnYPBS1Rousp6iCne9uZc44nsUPALsk0fMIOHXJaKJq/DtCtf6hyOLmEGGFtYeTUvDWyzbyDRtSqCtFD1OSuvTg9+tfhHmy4Me4NwU+qtnlwpKd875GYaCeZ7FVQBYzR5wwsS9LKcSlzW6i/ckkFiUUVqela8HB00+ESS90d8InaVUSWwRsY34yDhQhqfvBbrhGxxa4FeVBoC4XCkZVxvZhwyASVSoBJ+NGCjjDRVOUjnaruGdqUTKZWvCdA9fWKavv0r8IjBNNRRQiSQdMkbM3fYqtcLdUWuoNLUtw8IAtthdo82xbsOhJXnHoSMqctFFKL8Bkm9fgLT1v9x0dw4K4X3rFVoziGLYxqci8jylIYvTSpetUMnXBm9yVwp9nlwmphK57Q4jIaeapMA3V5WrJ2Rcby2ZMtDqtTUMU1O+p97UGlD0HPEKjTwyUshilGCDghAAS1o62Va18TcuyuuOReJINkjFoZRQtNbXrw+/QJld0TS5ycW23vulWykjIBd3qJQF2S6PmEBqcJbSRP8ArCtf6hyuLOEGGFuYezkzE2sxbvmbQyiKmactaGp/uGjbgx7g3BVxqtntfTQPndIzDQTzPYqoANvaVtSV5XCytuJNwLPDVrWvNU74oLf2/gxhbZETwyEPHuKkpyzyRTIcxq9Jj9ag9p6ttPwUNYNL1d/3pYyGxt5uKpSAtvido7WrckQrIWcwQi5RMtTpbPShUlje9Q1Kdbr/AAipaiaiSh0lUspRI+WomFU9Q2ob6Kb33TtXYJQybBaeThyKwAADhQKAAAQgAAEIAABCAAAQgAAEIAABCAAAQrS6IXtWnPpL+gojjSk90830aj59RI+iF7Vpz6S/oKI40pPdPN9Go+fURUftrlqtz/J1N4j+qs7h6nRXD2ATPSlaGiW1DcPgiilWJ9pHsm9Je3i04E0VDLM6cPDwIG7MlBdjDf2gW79FtfRFEM6WtmGcxTG9WidM1p6jc9KR69j9hv4jxo5tyct71O6vtXX7JFUsHpxgH5EcVNlte0uO+jkvR0H5/d8OP0Atf2kRv0aj6Kg/Pw49rd+J6gNopxDRkfsn/irk6MfuUsfGF/PFcscfdWuXw5PRUFjNGL3KmfjTjzxXDHL3V7l8YJ6Kg+UvtL0rVBP9l6L+H7VPeibX/t28pX1uNVa/+2mI7xTuqVs7SEPLMXZyFoZmRdH3lU6lJw0EiaJvXw8eU97jRb0aYiXHZk5lcdVo1snwquTsUiV+cUlAmP2h/gU6uUskOmKJ0RO8HMwrJ4vwaVxYZzrBQlDGozOun89OmuXyloKoYEW+lcmKMM2VJQ6DUx5A1a/GR61PLWguHfDhJnY024V6xEY1c1f9KJVFcdEZkme8JZ1T128aROn1lOH+QTTPcyB6ealoo6vUFC08zz8GnKkjSkuZWCw9LFtVKkUmHJGx605mlNZTyU8o4LRIuZdCalrROemzroFeol9+hqVpQ3kr5BtNMFU1E7Xbl9ep3Z/sIUR/o0rUQxbj0699auSfYSlf5D0iiaaIlR1zuMkesowDwBa35OC7fS6t0pHUHdRE+HM145avRXsyeWhhXYW/0p2lHOGNVuDrtpBsrT73B/MVADm3v34Qq1r+kbTXpzm/rAFAAA9VKBI4hXG0Xvcqa+NuPPFeMd/dcuLwqPokhYfRe9ypr42488V4x391y4vCo+iSETS+0vWq6ocf7L0fH9n7VIeiRbpF5SauVROnqYibRLh97W7I1fJT7R5NLS5VnNyx1qJqU2Zm0q6WL8Jz14KeSnlEhaKDMjfDdZ0X13cm4Vr9tKCE9I9Q6uL8yWnrJpNi/Yjw/wAx9i/vK0juXy4g2zRsMbOchGfnkqeNGW5l7gw4Iyeq0O4iHB2Rq0+JTgqSv2G8gr9j9b5IDFKVqQmoi/KR/SvwmPXgN5aVEo6Hzmmw3K0+Iu3P9pK//Q0ml2xTJdME8r35iql909K/zHyL+7rHNCXeP/ktHwVL+bMfXdUCgACWWUIAABCAAAQgAAEIAABCAAAQgAAEIAABCtLohe1ac+kv6CiONKT3TzfRqPn1Ej6IXtWnPpL+gojjSk90830aj59RFR+2uWq3P8nU3iP6qzVhVMlhzBGRpwmJEt9WnTREvAPLWkXi5hnwG1NnnWH+uUpWn8SHp9pR7cPeCuHkB9FNuD9kURBos3jrll7FeKU4Wi5nDT5RK17P7K1p9tQx3SS5zewq9mtjhdS0U34ZWEfMBqmW1mbtlY8cwek1HKEckipT4DlTpSvloPz+OP0cc9ZqrSlOtqG/gPzjD62HO+VRdpsXRNpW9wcPtVyNGL3KGPjC/niuGOXur3L4wT0VBY/Ri9ypn40488Vwxy91e5fGCeioPlJ7S9J1R+VqL+H7VPeibwUw7eGr/iitP/bTHZFwog1sTHGJcgodw8qmkRqibtEKlJq1NTprw1HG6J3BXDp6Wv8Aiqvo0xJMNdSMpdlw2wcxc6HM3PSlPXy1UtanloYM6jImfuq62GKmmtFG2oAPIt+IAqIdJfFePbQ6+HsM5TWePewfGLXhK3S9+humo0miD3ZuTxdp/Co4HH60DWfiO9qiSibOYpt7fg+PXrK+UdrojOOC6p9tzjJI/wBh60/mH5Y1lGd1UWCvqavWLBVDBaS0DuGCtjpgey7X+a680ojzR0916D+av6BQSZpgN6VaWy698izgn2koI30cKUri/DVr76Tk32I8H8x9i9k+RTa8s/8AubfjZ/xVgNJj3JpHwzb0pRTIXH0n1MvCl38p03L++KcBVt9V8147Sf0s34B9SgAAkFn6uNove5U18bceeK8Y7+65cXhUfRJCw+i97lTXxtx54rxjv7rlxeFR9EkIml9petU1R+VqL+H7VYfRg9ylp4048+ogHSJpwYvT36v/APHTE8aLCubhjq/EkXJf3hCGksiRHF6QVr66zRsf7CcH8h9p/a3r11GN/SVI7uLPoV3mh7vLp/1a+aYfPS/9n214N3/Ao9Gh+Smrc6lfXMZt5ph4tL9XWmLbQ+I3dq+Sg+f/ALkP/Io8f+ar2AAJZZMgAAEIAABCAAAQgAAEIAABCAAAQgAAEK0uiH7Vpyv/AOy/oKI40pPdPN9Go+fUSBonyUcytWao5etUeGQpWtDKEJ+IURxpPOG7nE0y7VVNUtI1DhMmfW4Oyr7wi4weuOK1K5yM/sfTszxyP+StJh5T/t7b/wBEtvQlFLrLu5ayMQW9zFryTV8oVzX46Bz6h6i4tgzUUlYMEmrJsynpFNutnl5ovrdcUYkO6Dnw5x8o2ZdJvL21tWGCGglgPpNyf5bq/Q+rhJ3HVcoKUMRRKpympXrV6w/Og4t1o+X+2m8OKRcpIt6PIWhmZ9dWnCZKnWTN1+jrf7CooXQMMTntTHXdwjulLRVEf6wJ+1XI0YvcpY+ML+eK4Y4+6vcvhyeioLC6NktGNcK2JHL9qgbaHFNU6xKcFdYV4xrWSWxUuMyJ0z0O4LQp0/XpXKpwhFKP8S9e2qJGHTFGwH9n7VPuiZ7nb36VV9GmNFIXbS1dKZZNU9CtphBFgt8+qRKp+UbTRbk45hh47K6ftUjGlFesZYlOvlpiIdId3Q2Lsi7YOkzHoRpUhk1fWrRKtf5hLWb9S9veCpCruHUdO0M0Z4scw/VTdpPWfx/Y1J5sSlXMGfP4fzNeCilPs4PsEL6M82nE4otUVK8BJRos2p/qWtDU/gLIQ9+WvcOGzS4LlkmLRpJMaFc0cLEKSta01Tl4a14PX4aClyq9Lduarm3pDaqRz3MaO698yz9gcKpd58ToHJlqyanorrS3mnIO9gkdvBWn0qoU8lh2jKJl4eK3yS5/mG7CvnUER6LjEzzFCr5MnAmzYrmP/rU1CCw9k33aGL1rnSrRurnI5b6PVrQ1ScNOCpTUr7w+kXb2GuDUK8ftCs4hoeua5XUV6569Na14ahu2Z0UJgIOVY6qywXO7Q36GVvRAAu/hUeaWs4kha0RAa/Ao9fUcfUSJWtfOoKtDuMYsRS4kXcaWRTOSNaJ7OyKpTg16V9ev+9Rw4k6SLooQ1ZZq26Mu91kmjOW8m+AQAAOlXFcXRf6+FbWn+bceeK847+65cXhUfRJCfNGmVjGWF7ZN0/aIGo8c0qU6xKcFdb1vXFf8clkl8VrhOidM9DrJUKdOvrVy0uERVOP8S9ahqWRh0vRsB4+j9qlvREmyqR07b5zcokuR2WnyTl//AJQc7pZQZml3RU+XdvWZ0Prp11qeQ1BHGFd9rYdXk0uAxFTsz02Z2WnrmRN61f8AavBUXCfMMP8AGK2kaOtllo45yrJGIp2p6etWladeleuCY9Wqel7CnNlMWpdPG0h4EzOWVGOiKwMnbM5JfiuXxSF+qmWn8xHulFNpyWJBGKR+CsYwolX55669PJwCwNxXZh/gpa5GLcrZomimbY49vwa6pvgLT4emopbOzL24Jl7PyB6HdSCp1z0pTgpShveH2lDpZnTkcE21TNHaLLDZGPDnji7C8IAAlFl6AAAQgAAEIAABCAAAQgAAEIAABCAAAQgAAF93jjGUy0wAAILieZQAACMkoAABBcSMFAAAI3jjGUAACEEk81mmoo2UzUlVElOcTGTh48eqZr985cqfnFdcfIAvASxLIBjKAA7m0MHrmuhAj5aqcYzU7RRxvD/MIIS+6jtWmqfrV0mEbPf2+Ce2y0113l6GhjL3dwXDAJsU0dG+XyV2K0P8OzCPbyw1uOy6Zz5JNyz/AL236xKCs2DanpPUtSKK31QMh5BwLc+G8pq6aIvlmh6zVwEN7SCHY8cLlQHoj2aklINmCW8crkTT+sJHpo/XfWnDSSiv2igmb/rGx6akZHdqhsRcMgHtUbbbDdL21zqKIvaOeFGA+zd48ZewHzlt4NXUG0u+1H9nTHE0oq3VUySKcmPXZlgTF9KPEoxy3S2HUzNo+UHc2pLTDaxeZZgKYgHf7MHgF4w2i4OrfN8TD02SN3tyFzSiiiimaqqoqpzigCSnGAl1tm6zlWSistMh1N4oI1HlYNU2fVDXutFQJQzG9u9mUu7Wa4WZzW3GMsLuWe1AAeuLj3EtINotrvHKxG6f1hOTTR0sbppjhoBJPcAoxkbp3BjBlxOAvIA7W7MKLjs6I44fumSqGuRP1NrjihHWa/2/UVN1u1zCRmSMjvCe3K1Vdpl6GtjLHYzgoADpLMsWXvlR2lGOW6VWRCHPtHyh73W60VlpH11wkDI24y48hk4XlRUU9ynbTUzS555ALmwEn/8AT7d/+JxP7RQfNxgHfCafJOYlX9KoKWzaxo17vb41Yn6G1CxvsrlGgDZTduTdsL7NOxyjY9RrRe6OvprhC2ppHiRjhkOacgqsVNNPSyGKoaWuHMEYIQB0VmWTJ3y7csYxy3SUbEzFNooOtro+3hT/APJRX7RQVe7bQNN2Ks6hcapscox6J96mqDS14udOKqkgLoz2hRgAALgCHDI5KAIwcFAAB9XxAAAIQAACEAAAhAAAlCDqLHsN5eTg+U5TbN0t4oNEzZ7Trq80JCwznE4j1AqK9eLlJTtc2m/EFaNNUFJV1sbbh6t3yyu1Z6NkG4b9e6JFJTwRBHl/4M3XYJOM1Kpvoyn5Y37388gsJb9wN8vNVVykx0UbctoXcR3DtnzN7wFOm6QoKJHq+ptlUyKslBLuTTgFbJcNn1ouNGXUMZYQODgSQqNAOqxKtDqLvKRt5KnA3TPmt+hAw5UarBM2oibMORGVz5V00lHO+nkGHNJB+SkfBix29yS55mTTzI+M73zi4sQoommmdVXk00xyOFEHxLYkalqco5LtilOlTrjSY7XApFWoSNbHokpLrZR6/myjg7WdbWbU9fC1Qv8A7vf6NncGt5uXTmnqen0Tpbr0jfT3d53eSeQW4TxfsFR/sHVCnWvOZR8v744fHK+klCI2dFuMwimo4dqJ/uEEMgOhdObBbHpm7wXeGV7+j47rsH0uwrJ7xtQud3t8lFIxrd/tGRw7ltbX9tEP9INvSC3nvmFQLX9tEP8ASDb0gt/75hlflP8A6RofgcrtsX9kqfiCrnjv7e/1JEdBo5+yJ75jYc/jv7e/1JEdBo5+yJ75jUXG/wD+SzP3UX3hV+1f5iu+N/2lTBM9x3/iy3mCnRBcWZ7jv/FVvMFOiCK8l32W4fExPdtXr6Twcg7XByM4xv8Aja97ba7j7o4oS/o6xdFJCXma97RI3+91xte1a6+aNH10+eJYWjxd6KzrQ9F1+/0sf+oOP8PFSViXFVlrGmWtO32XNJ+j7MVWFzXCCbludurTk1U6p8Ap1IM1I2QcsFd42XOn90Yx5Md136Kttrz+FwePmMLRNs1DuVFNWDtBafkvOJj0c+6E54FEQ4Jj0c+6E54BEajtt/I1b4N+8KkbOfzLTeLvtKmpRUhCHUPXrDww9yQk+mdSGl277K7fLUHqlC8DF3WnrZCgqdZc+4te42Ew2U3ZyZn5xM28HIuz3ZsNe2uvqI5S2WADdHY4nPArfNWayOmK6lhewGOXOT2jCtPcNvxd0Ra0NMt8xur8IqnckI8teceQLreNj/tExb7rVpWggXSGjE289GSqX5U1Omp+jF38nbVNVbr67T8riYpQcDue1VvazY4aq2C7Rj048ZPe0r+6O/d+V8SJ54nhTdmED6O/d+W8SJ54nhTdmFb26fn2Twj+iltmf5XZ4v8AqqZKb04wGam9OMB3vS+ob4D6Ll2X1jvEoAAHC80AATTUUUIkkBA48kASPXAm71LSNdTZyzc1TTzVGbemuv8AaODi003Mozaq7tVciagbx1cMrXOjcDjnhSNTaaulcxtQwtLxkZXkAWptSGgLpwxlI2kJHZiRHLbgTbE4NcvaCqzdNRRQiSSeaoqGVrusdza/dGN0qV1Bpqaw9Fl+90gzwQB1twYWXnbcIjcT+OzWCpOUO2V18v545ISEUsdS3ejcCPcoGqpZ6F/R1LC09xGF0Ftp5ke8+eQehunlqEGng5Di15mq7tXk1B0DjLTU5Ldqin3WJ1NVlz+TuSmYz1ijZLB+KM8R885XoTuiQjbohHUoopxO2OfMT5tQ3443OAmFDy3MYZG9oZ8z4kctstTZ3OvtB/jjXRezuVCNXSeamJYh5yHsm2zv1ctszbd7T74oM0v+lBc7m2tZIQSGtLQM72DkLcND6txb5I3kbnEuJ7FH2kcu3cYhkyt4nHo5gi1NPaVCNedORMbC5LgeXROPJ5/vHx8wLXb7TdEO152QR9INhw602ZwdzYwk/ILD7hUNvF6fLHykfw8CVbdugRs2SapdokmRMQdpEuteXh2HNtTq/eOJ34OvUV3x7UzL4RS5qPIOJNgsPWtcsldza2Ry6D2nydBpl0be0sCjUAAd9LltbK1/bRD/AEg29ILf09cwqBa/toh/pBt6QW/98w428p79I0PwOXQexf2Sp+Jqrnjv7e/1JEb/AEdN/PcHxGw8WM1r3HL3ntUVCvHTfY0eUSSOcb3ASDm4VSa45iXrGipEcvaEtQWO+3ShfseZSNmb0nRx+jvDP4woi10FUzaAah0Z3N9/HHDkVKMz3Hf+KreYKdEFxZnuO/8AFVvMFOiDw8l32W4fExem2r19J4OQWJwEi6MrJO+/vzk6n3ew/kK7C2dhxfFNoQ7Dh3bMlfrm7IWHykrr1bTkNC08ZZB/JoUTsfoemu8lT2Mb/uVvq8HBrCr2LEXxbiBKpd7dHI5+8LRcHW4KiB9IaMonNxUpT8pbHTr9UYx5O126hqzqvZMxzfmPSWi7WqHrNi6f/tuB+R4KJRMejn3QnPAIiHBMejn3QnPAIjpvbb+Rq3wb97VjGzj8y0vi77Spmk+tHO/AqCmfexcyUr6geeBOKds2aj542YJbxyciaf1hkHkzvZDQXR7zwG4fuWgbY2OfVUTGczvf0VwYhSi0QyU5xsQRPpFU4GcFT4F1hL6CFGzZFvzSeWIX0i3nqiEY82RZyMs2OtNRtCp3Rct6Q/LdcrttAd0Ok5Wv7mD55avFo7935bxInnieFN2YQPo7935bxInnieFN2YO9un59k8I/om+zP8rs8X/VUyU3pxgM1N6cYDvel9Q3wH0XLsvrHeJQAAOF5oCaiiahFUh1GG6cOpcBFZRJsrlbtup2aagnWUwbwsxDZnf2urxQ8/yX9aAh628wUMoinBwe1Wq0aUrbzSGqpHNJB/CTglc/hHiYnHO2yUgp+D5Pef5dceHFvCR5G3YzuezolRy0fOibQ3bpa+QuNG4wTxAgJTiHYU3zN8fk3jfdp/PEk4X4w2BP3e7wci7nVkpi2mpE1XCv5Xq7zUGe3G8C2VknUXZBHy4rVrfbDe7bHTXdhY9pGDyIIXrwYbyFtpScDcarZq8fOdobs9qIddRPL+II9i8H7sgJx/POonNTSXPseWrr9sp2452cwSxkh9Ma3cU7chk3lmpkylXNHpE9nQU3hDJi1SjSRSydly3Oa59UKKK6mWh8gQVqu9XBA+MANMgGe3CsU9ipbi+J1S05gJ3fflRfj5McQYYIwKVeUklkWX3ezOKxC2mK+GiuIkXlJKKNZCIOfY1FNwvrDR4eaP8AbcazOreLLjJwrzu7F+sV6orZbwJCd/JyFn2r9LXa/XkmJoEQaAHE8FWce1nIKJN9lV3fe/zY+92sImKuaTjLeebYxbOTpoL8PDwDUKKKJp5qSaiv5tMWO9OifbnzmMvGN7DR6XyWX28S01wEIeGkHdJJ9H5+5d9h/F3hNuFnStpOUmbE58x5tKGX2PZ9pmZg0l2Xg8uhwTvUe19jt/6zjd2XeE5CRbl0qnIqs/yhNvln7bsBz92SEG+lM23I1Riz1MvLGbaLvk9dczSVNHI3AOHuHAYWiaxoaa225nUJWhr+L2g8XdxHuWnG6sP26QP0gj6QaIbux+SvSB+kEfPGh6l/Q1X+7f8ARZ3Zf0hB8bfqrbit+O/ugH8SRFkP/sVvx39vZ/EkRxT5O35xd+7eujNrf5fHxtUegADvILmJbK1/bRD/AEg29ILf++YVAtf20Q/0g29ILf07Yw428p/9I0PwOXQexf2Sp+JqVrXgpWnBT/UfynbUrXr8Ir9jdKSrK98prIvUU9jR3Spye+N9o+SEg9cTdX71w67BHeq64oVw2SVNDo4asdVAsLWu3McfSICtdLryKo1AbF0OHZI3s9wypYme477xZbzBToguLM9xn3iy3mCnRBrPku+zXDxYqDtq9fSeDl7YOPUl5hhF/wB5dET+8cXF4MvrisWDkfxliAw5tsQ7kWaUVyyHU4OkVvylbj1u+0dtYfVsz83lTGx2j6vbJ60/rHHyaFpbTnKTdZX/ACMmuy+6ONx9i9ps5s+4fYL0n3DDx4CzHGR7kSVU3j3bf2g7jESLpLWRMsKe+2OoT6vZihQwHQe0OCPkGPjz4PDcq0SSjU+k5Xcy9r8eLScKqAmPRz7oTngERDgmPRz7oTngER1vtsO9oWtI7mfe1YRs6GNTUwPe77SpocplcN1kDdaqpDpjgrLwYhLTkCzDp6pJPEt3VRPUImJBUVTSIc6m7T98R88xzsBsThSdPXPQm26w4k0l/a6ppKig062R0cuBIGDPgCV0ff8AzDDPFV3dzQ9mSzeP0CkBU6ZCGUU9anrirGJVzp3Zd7x82V9SJep0PmFG+vvGOYuxueLi2/FsepvOcUEdDqfYnspq9IOdebwAJ3jDW890LEdo2uYL81tvt5Jiack95UsaO/d+W8SJ54nhTdmED6O/d+W8SJ54nhTdmGF7dPz7J4R/RaZsz/K7PF/1VMlN6cYDNTenGA73pfUN8B9Fy7L6x3iUAADheYXoTj5RRPamsa9VT5xNI43sPfE5COCKrOXLZ4nu3HaKCXsM8WIOAiyMOUVT1CcmnvEx2SmMGGb3kpRyml461FHvl7YxroauDh2HOFrGntJjdZV0NeA48xjh9VpLQxhi3ENF1xKmo6NUm5A8VHnU7AkioUc/bGiFhBhpiijjDBSUyycN9eiEXtvqTMMNti5gnhZi7DRc9eqsilGWic8izTj3Oyp/HHL4bT8viPiY3mphRTZGSJ6sGfe25BmIY+Q4PHhxK02puDaOaGkmAe95Ab/UlS5iJiWjhvbhp11EvZJ2p7HYMxWB3pn4uKPzqNYCBSb/AN3rmCa70mE3Mw8fuleTSPsyf1RFt2YAHvqQWmbdlk2zhUnKN1EuTUUGVVO0D/HPpz6EYJDT4LSqa3wMhD5xxKkzBjSktzFVTqXmE1LfuDm+c+YOm0gZO44WxFlYLk03J9nduO+JoGFArst+57En8t8mpGzcQcjhuoL9YR35D4o4PsLjntm2dVrlyCbjdjTNM32OWRksoDgCD4qu6psZmoZI6Z5bvggO7iqnj7EFpr5vfCSJtN7DKEZKpvWx0yN2Tb1xVkg3+13TztCZOjLR2Z7VybqGwt09UMh6cSk88di7hu3bp4XuZRWScJOFJPZ09n3aieX2hxw4kJuplYNucqSbNs2X5rech2gj0NbH+CT4inWqcMlg/dt7crAbC33GzXBFOuaeoqfvjXgmpl8qH1xp+sUcsHY5pH81BUcvQzMk7iCrpUr64r1pAJ5V6NledjyeeoJ8jnab2PbP0t25QIpT6whfSKY8LuEk+cIs28g4O2Fz+b9eRwScC4SM/wBsrpzaZF1rTDpW9hY5Q8AAO/Vy2tla/toh/pBt6QW/98wqBa/toh/pBt6QW/8AfMONvKf/AEjQ/A5dB7F/ZKn4mqueO/t7/UkR0Gjn7InvmNRz+O/t7/UkR0Gjn7InvmNRcb//AJLM/dRfeFX7V/mK743/AGlTBM9x3/iq3mCm5BciZ7jv/FlvMFOiCK8l32W4fExPdtXr6Twcpe0d4/MfTEzzSJG9PrCY7kq64gkjMUlFHNWq1E00/j6g4rAmMoysij2u8fujq/0iRa8PXrQYvtVvrq7XdTUtG90Tw0D4OC0XQttFNpiGA8N9pOfiUL4IWxdVuz7ykzCvGzZ0y4KqK84U4mZRJNRMyKm7UGVaUr1q1qP7w9fgFW1jqyr1dd/O9VEI38BhuccFNafsUFioPN8Dy9vE8feqcSkepGyjyLV/Jlzp/dEr6OndGb8CiOQxgi+Lr/kq97dajn7w6/Rz7oTfgUR2TtGuPnjZXJXf9yKJ3/kxc+aSo/N+tW0v7D3j/YqaJTue88CoKai5Up3PeeBUFNRRPJd9RcfGP+qs22v1tH4O/ogAA6wWGqWNHfu/LeJE88TwpuzCB9Hfu/LeJE88TwpuzDgDbp+fZPCP6LqbZn+V2eL/AKqmSm9OMBmpvTjAd70vqG+A+i5dl9Y7xKDAZjAOF5r7M2bx8p6lbKKjqo+05zeulU/0g9cHfkPGw7ZgrGqbQkTL5MeK4MRHDlmslDKKNnHe+STFX1FHPX00kEkGWY7OZV3sMVqt7mVHWv7zu5ALUYtwF3zV7wUxF4hSMbDtohBk8jG/aO9VRTtxJmBbhONvBslzpDpiKr3i8R5+34J1btxpxqjZY/G7hw2TWUUQ+QOit+UcRDxtKJK8o2ORQZ8zopWbzWkB4HNTs9bJRXqKqneHBp7O5dNjO8cQjxi2V5JPjNYb2x7wUbJk4VMtQbbE+1GeLNkccxW8VTIp4uuUR5a+Hc3Gt0eOZ5RRTm00v6xzDqSzx2176ap4EOOPeDxBC6qo6mnutAyWJwPBanSbZqXIlHTzCOUV2Fssm7djs9C+LTksE5VhKN03Me5kHKeWoNFio3fvbPPbEEyUfSc2sRkzbpiWrbg0MAcFEoxPLVcRjLMcKc4uYXfZ22R1IDgkNOB71H359PBb9yQ47TnsAVfbos+8LWcf+qIR62/zCnZpqfXGnILFQmkXBv49ZrdsSnTk+9dmRT6hxXXM5Q46209dZrjTHp4TEW4HEEfVcY6rs9vtdSx9BVCYPyeYJHiQpFbuP+z7nKctu6/5SlvOQ7QnyxHQkVvyuD63KJq/hT8t8B+II8C7E0FkpH7TkrVjsS0/7tq+QAAmnjIwVWGPVmMHbgTmrIZpZnLxvqNUffFi03F2WodqwToq8bH2huIQwwvfqKuDNd9z33JvP6DizbN2zftyPmLlNVuoTMTUT98cEbSrDctm2shfKFuI3P6RjuzPMtXUujrnR6w08bZUn02t3XDtx2FU3UTUbODtVUlUlObUHokIeUiU0VZSNcttqJmJ5iWpmJi4J2bNRfaFEE6qU75ljisXoSJlbQcOJRdFs4ZcKjRwf3j/ABBqWn/KL89XSloX0W415DXOB3jk9wVIumyTzbRT1LaneLRloxuqvVr+2iH+kG3pBb/3zCoFr+2iH+kG3pBb/wB8wrPlOgvuFCWj9RymtjJDaSpBP6wVc8d/b3+pIjoNHP2RPfMajn8d/b3+pojoNHP2RPfMbC439p/6LMGOPRRfeFXrWR/1Ecf9b/tKl6Zp+CH/AIst5gpz3sXHma/gd/4st5gqNBx6klKMIv8AvK6Kf3jiC8mufqltuc8o4N3D/IFSm2FvT1lHEzmchWpseP4ptGHYcyzJ/AR1pDS6rVKHi2zlRLMOs4U4BMZE8unCK647yG03vstPyFqRP73ZjPNjlI/UW0DrlQ3IBkkOferXtBqG2jSvV4TgkMYFwTeYkGzhF1tznkjkU3ouC2cJuW6TlOvJqkIoKZi1eHEhxlY0G7/ypE6/V7AaV5S1lY2goq+FgG65zTgd4yqdscuDzU1FJK7m0EfJRjpDxdEpSHmedRO3+6M9HTrSE5X8wiOpx7i6PbMI+99i6Ip97sBzGjn3QnPAohlSXJ9x2JzRkelFhh+UgKcz0YpNo8Txyf6X/gQpolO57zwJxTUXKlO57zwJxTUPPJeaWwXHI7Y/6pvtqIMtHjud/RAAB1csOUsaO/d+W8SJ54nhTdHED6O/d+V8SJ54nhTdHHAW3VjjryQgdkf0XUuzRwGl2gntf9VTJTenGAzU3pxgO9aT2dngPouXpfWO8Sg+QyGIdtXg5ZppqKKESSSzVBJtp4XvEovqjfss1NIRvHvHEa8Rftd41PmJjtZDGi5HNvntyLT2FNXeCPukVbUNEFNjB5qe03UWeke+puWS5o9EALZ3RdEHCJnaq8qolvExCTOzL3ZYlPrxpejh9bD5t6nYKK+x1Oby/kDqotmo9cDcTCnEkeRq1y9oGf3W1ytrjTb28wNB4DiHK5ivjultdVSNDMkgE8fRXrsPGBxZsoslFyTZ9lezGeaJX/tkwMkkNvuNypbynfMzsExVNO1LYjZN/dkXAJxkooTLcKN1VMtxrdnuxPmHlE4CCYUdQEK5eZeYoo4YkOpmCo1Gnn3wDfax7OY3mqY0/ea+wzmmimPRjnkZU2wUnZjZmR/bEapypOTcKJamYQ3zxoJjFCz+qdKyZ5s5c8ZNT7Q42bXYJ/IOcc/clwN7tj9gmYjk/wDJOVGuYNpD6Mlgsm6Upx9c3KkI4P6vIIOs01eLYGGl3AAfRDeAC0dt+N2Bip2h3D0i5RBe+HacTMH6kpJOSi1eUT5VPMb/ACDjk1210RrmSSh41NSTSjMyPTU74vmfHFvEsOLM729kVf0o9H9ndn85LftFA8ud91vd7f5vqIowOGSCQThUqPZ5a4K/rzHY453eGAq4Wwpelx4WHaXFa52UopIcm0eKk2tNMqe8OcvJ645ydtOYhG5HT9JPLV/Oi2X9n9kf3aR/aKDwvcN8NpdPYJOKeZfOKuVBJaRu2qbO+OlqI4hTg+ljeLsI1JoqlvQM8T8TBoa3jw4KoA7W08KLjn59jDSjZzEJySG0puFE9fMTHRXHhXbDXFJayG024jWirUijdQ/LZahh3cHIVl5MmH8nNZjC3/USjhupsu2O+bGq3nUkdNE3oObh29mVn9g0a6WocyuBO67dABGHEcwe5QnP4bXVbELWbmGaTZCjwzAlFN4oenDwfU61R4bfu+6LX60DLOWyfN9umLFvbdrDTHUw4adUUc9ZuHkS1kz0UyXSXbp65/8AUVmk4x/DSbiNkmajd23PlnQp+IPOjkpNTUzobjE2QdocAQfkV4361zaYqGT0TnMPEc+II94XZqY34hqEy+MW3D4qQcjN3FN3GvRzOSrh6enrUUHgAelr0dYLJL09BRxxu7w0AqDrL9c7hH0VVUPeO4uJCzTUUSUIqkrlKJHzE1BuOrS7/wDymW/5yg0gCWrLbR3BwfVQtkxy3mgplDWVFLnq7y3wOF6JCQkJZxtUo+cuVOcUV1x9Y+YmInX4rl3LHN3mzK6g8QBT6CmfB1V8Y6P9nAwkCpnZJ1jeO/354rcKXhdiqZ0lbplsvxo41Tdw4YuCOmqqiSiW7UTGABFNaqKlY5lPE1odzAaBlLmrKmdwfK8kjlkrd9Wl3/8AlMt/zlBqXjx4+cHdP3KjlwrvFFFddQfIAmktVBRP36WFrXYxlrQETV9TVN3JZC4e8koNmzui5I1uRqwn5Fs35tNyciY1gBxU0dPWt6KqYHjnhwBSIamaldvwuIPuOFs3l0XI+bnav7gkXLdXeJqOjnTHnj5iYiddWLknLHN3mzK6g8gDyZaqBkJp2QtEZ5t3Rgpb6+pfIJXyHfHI54rcKXpeCu9umW/5Kg04AFUdtpLfnqkTY8890AImrJqrHWHl2O85QAAPE2Xrj5iUiFDqxck5YqK7xRsrqD39Wl4f+US3/KONKAjqiz2+sk6aeBjn95aCU8hr6qBu5FIQ3uBIQAASIGOCZr5AMAHs1eTkAYAHCaOUh2f1PpQ5Pwk2Scbxwmp2A5KQeKTc5mpbtU5E0xqRmm4USUIqlvEjiOjtUcUr5s5Lsqcm1BNPTxUjmgMZjl24WzcQ6iahM1LevSCWm6YiRS4JSXkGaTpVP2Uju0vliYSCrG2utwa12FeKG5QXN75IAccOa+up0ibXlwM7fg2zp1u9lRy0094ooYQqO6xAU/BcIl4kIq4t3i1rverhY53U8M0kfPgvlfmMFt2IzZq3GxUcvH27ZsuzUyxGi+mfZCbg7VtZUyrl/nCCPccEroksdJWLi4lRy3bMo9NNTKUy0+QEHvItSEuBzFulOUan5QYrXXG4uzJ0zhkngOAC23T1jo6yR8NSzOA0g9p71btnpdxbnrJWE9y/HhMsfMM7gi208xp6nk2R/MUFD4NPkxc7DRPLw8t76P8A6FAjSN6rpruKaSUuaWnIJzyStT2iioKYOgYAchc9fE5bbLGg6UzAOXymytstRulrjibcgLvpiYefjIVw5Tay73M/NqGU1x68Y7ke23jJJOmNfyZsmp9we1PEC0HsOS6J7MSmFViRyacc+UQcKIfHc6g2m4WWeaOGWJpIIHvXP9NeqbrszJJA18cjjxG7wz38cqRJ6ZacapP5aaOzYW0xUbupKtdc5HbnsPX+OUVemFMyYeK8bqSfLH9WKbxx8sd7iBiOom4lbOsl626lFUEWyaeV+0OI1FlsFtkoIi6Tm5U/WN+jutR0cXHdJyewnlw7xgIAALAqYgAAEIAABCAAAQgAAEIAABCAAAQgAAEIAABCAAAQgAAELyAAxDhqbuWQ7NPC+YfWezu2Bcpy+acibiPTS5dPWU1Ow5weOxHju3H5Lrf2erLwaeu3cKKMc5DshaDDOz4y0oc8pRkkxUl1to2dPdtyG7QhNcV++3p1vwIh/wC1etG6Tivzi6flx7wW9zlE0xgPcj2cZzLW32yUfkeqG+aQimYURPKW3KNm7+ZVbJsW6To6abdRXlBcC/E3klb7mLi5JNs8VJu83lFE/iCs84zZvm6zCUUUST3imXvOxFUtGry+fonPBxgHtICu+pdC0Qic6naQeJ7ACcKP49x+EGfDzxBOTdQQEo4h+qRHiFVyqzzyZeYJgj5RNRTKFuvT9/o394WfabZ1bpYnkcxyXWkHZ4iKfg+B+eyHFN+VTHW4oKZUXbyvy2QqtZ+JvzWhW1+5TTfw/VRTdbNm+x/uFJVNVJTZmaSiibk5O2apit2ICbKMxHmmDDdtnWXvdcWcnE3H9v8AcKuVyeyx/wD8UVLxklFG2Mlx7TRT2aOZ6d8tTdp4C4kBuQM8Oa6tsUDAI3tHEsau6ttTkxdXDf3P4H6M/oVFErHlFJapGsYko5cK7tNMX7suHeRNlxUW/T9UNowian7NQTekIXMvuccmuVf1sBFTBvaXBQhpDxDyuJj9+inmpqItqfuCLRLGO03st/3DFqquFM1FtlpqamW37BPtBEo6c0nVXCponNuEe7uuIaf2m9hXEGsoqZl6m6s7OSS73HPEL6gACwPeoVjd1AAAJSAAAQgAAEIAABCAAAQgAAEIAABCAMwCULABmGp0gS1gMxlqdIz2fp8gN5C+QD0bP0+QNTpCN5C1I+QzOPiomHrUxcpVwzb3m3gM3qxZMYCSWy+L9p111OU1FNQhN2JxvS5E0pxm1a7uM9IKj2mnbbacI/uh65SbsfVKabZI58xQonqLmE7th208k2csdp3abjeCm32izP0jvphbHou7tFF1ZpweHM5OB9AuSbvLwa34d06klMuTkCZiim7yzDePbjXuO55K2JS2KJt2LWSUeOFGJyKM8n2Kvn98zR7HjNwqmI8vTEhw+g1ouBu1ztDF0RPZ1EvZAyCo2bzV95bXUD90E+ke0fyV2ZqSlsVBM2s9LeB3QSowcTHGUwjKOmybbsyZmWl8US/FxcHcEgjKQM3tOVvG6av9AhpRm8UTWdK7zs1BF92W3fkumfiu8nqWb3turkeYNg1LcqK0signznHDCxWx1BmneXEYJGSVe1u3USTHcYj228n7bYIsE/VCTVsqn+c1R+btn42aUeHimwVfdV8el+TzKR11E0/Dk5QWntvTnuyXYEausIYmDUSRJykjOnP5iAp1XqOkiaypa4cFqNFS0joJYamUBrwACFONpw8hJR7bqyt9srIMSbO3UzdRfI+WNh/Z3Z6bxZ81w8gVXih8xRwq2IdRQQYvpZ3aolwdUNqMulnbz515y5BHF0aWGPe1kVhr6hkmedyn/ppMh8v665xRHVGnZqh0rYRvO7d0qzUuomUsDaYVbyGjCuvFxew+wIRkx8Xa6g6BunmpnSVTFFE9IzER84RS6qb0UUV3afqVrmfcQEpW3jK7rNtcO7xgLmVk5xDZ6MJHX5QekF7pqadlPTUrm7xAJDQMJzBdaeqd6wuP+pe3FqzFpfHBjR7X8Fz5UTkcJ+8RNPVP/EcPMYY3BTEKasq1WKjziw/YKK19YmXrkFrrWtaOta3IuCcno5rGky01HnZ6nzNceich3CsXKurcSZNpxyyOm3eZXfNTsBp9Jqx0T20+RwaG+7xVQuOzmmrBJVEkPc4vOOeCPwhUaGY6m78Jruw9hWUtcSrLUeHonVNNTlE1KjkxoDJIqhvSQuBHeFiFTST0E/QVDC13cVmAAFLxQAGep0gQsAGep0hqdIELABmGp0gQsAGYZagSloAyy1B9tn6fIDeXxecZanSPXs/T5Bns/T5AjeSd5eTZ+nyDPZ+nyD26nSM9TpCELw6nSM9n6fIPbs/T5B9k2YSha/Z+nyD67P0+QbDZ+nyDPZ+nyASFr9n6fIMtn6fINnsYz2MCFznEagdT5xIacemMuL0x49eUt5qUe9TanNjfvHExLSEIrKex4g6OW3T7DtR1KcemOtj8K7gc5KqqbZJmoTMzM3XUT+oG9Rco24dLhStsslbI4ikyeWcf1UXyDiUVuxa42CimXu001N3ljSKWuoqodXL3p8wTlB4fwEsodJG8VFcreKJxmQmn9848E5b9lwjxZg/m7nzEubSaET9GGkV4hY7o4GcQO5SlZpetmj6xVygMJJzvAjJULylrqJw79XL3TU4g9S7Iti82BVXlOc72LT3HL4WsYt+ktJvFXGQfk3lwkT/cS1RXu35yDu1xMWG/sRSIZ7Es9bvG6S52mYUih+zOfdnFS1VF53njEmWkAr1tFhijeW74dkdmV4VLguBtkwMWonmXDIEilPAGJy+p+0HaQ+D9JJudVhP+p01jtuUS11OxEQx6eZdlsQKqXsYmYon4RcWQwUcJvrIzUv8AEHnpxhmsq+ot9ta2LscOKvlgt9PVzNo6kZABK0KeBaffZ9T9G1Hne4IUpMQLWGfKOXD2TInlud3u1DiXlFE2zc7pVTLTSJmKKDwt3jmSrMW5DKUbXe5jswib1JQiEXGmUSzznPz3KIKHTFN03W3Wtq+nDssj9I8sK11mnbXDF0TI+J95UZYSWvOS1t3bccpNt3LfkWUGomod0om/7c5+z3Z/jpiX9HiXxTn5QszjPBtmKkIzWVYZbnX7b833s403U/HtrfbWlbjl7GR7EmW3cJ7/ADNfXOuf5ZxzmGbe5LfnLnxGnr7mrvZq/g5nHsktqUTaFU7fIS/HGo6LvkN6r6iOV+eWCeWB2ppUUjrW2Lcb447138/dd1y2KCKrp6olFqnRbt0+9pkMJCweunEaaue8Yu57bTZQcQs2ThXmUoTP1k9c5Oz9fU63Z9I/trx8Wq4JPP8Ako9trqZiiQ2F+XA4koNg6tx6okzUW5RRPsFMwosUWjAL6bhFJne9yXFdPN1BLJUHfPMDtVfruh7uczzjqrcvHL9I/Z7Qrr0Tp8gaZS23HNCWHDdw+cHdP1FFVFd4ooPlxYn8A2mGsdHGGYA8FgdVaesTuma4nJ5u4lRTxA85oehO23nNCUOLE/gH1Tj0wrzg5ebLF71GqdpvObH16k3HNiS9jJ8IbOmEddkThllj71GnUu45kYKWu45sSds6YbGT4Qddcl+ZY+9RZ1OOObGHU445sSnsZPhDYyfCFddckeZG96i/qccc2PqnbanNCS9jJ8IzTZp80EvrXI80N71G6druObH16l3HwiSNjJ8I+uxk+EePXXLy8zsUa9S7jmQ6m3Ak3YyfCGxk+EHXXJHmqNRl1PuR9U4NQSRxemHF7cL665I82NUeJwag+3Eag73i9PmhlxemEdbXk62tXB8Tq/AMuJ+kd7xemHF6YOtpHm9q4VOLGXF3QO44vTGPFifwA62k9SXI6/QPtr9A8PKD7ZagXuOU6vRr9A69ndEG1nOq1y9lXLjZSN04vvbfV+IccUnmD0EHjUW2OqAMvYpC33We3Z6LHEg8e8Ldw90bNch550y2ZPP2hNu3c6/KG+Pr6gznLki5uQO/Vs6FVU1CJ7Q9bJul8sogW79Juz7KqejmzrrfN0/yhmxTOmOEU07rQVQ2mLwyn1SKbtRRygQQzKqzD+86QHs7VKNq73WxbkIwzOeGAplx4xob4U4bvJRVKOSePibPFs02KZE1F/j/ADCChtl6RmMdyXefjS+nrlokQ6ibPKIRNRQvadgQY6Tl9YgYmTDC7pm05GDg3pDs4dNTd8n24jjDtckJLkfuvjo/uqa4gbhWMqmvfCRu8m4VpoaGeGiLqjJeR28cK1tl3JHy0hMKzOWkpavGD1u4TS11Hi+XldnzZCCadHyQZ9SbmHa8nsznM/aCotp3HWJh5WLVRqqpLky1HCanxj65xPWD7iYSbysxGJK7G2jFk3Cny8vXIMe1rAK2j6PPJe1qkfR3Bj2jI4g4ViNsZ9hKOm20t2y+WzZ9vxg/L/QRT9ooPYu2bMDuVFGzak3JcpNv0u3cH5jX74QgwgUp1ipETDGTjk4eDtlGGeM01fVackZDs0FifHzOUzBw2Kd2KWvajl02mmUa8U3ajhLX+4QUm40jqAxWqjdxeOJ8VfY34aaubxWicYlwd+3YfDqzr6St+QbnRccYKMddB5qn7NEWasO002Mg2meKWUZOJHPxgoyy8iQTMTf9gK86OfVg2tvapS6bHuqHc671Nmor6rT1u37dMT24lJSNw3W6l3MdGTEnrpx6j1LXQbqDW7Lp6GzUzdxviUxo60VLjJL4qTU3kPEJka83r/vDgb4tyjZXjeGb04syyVUOmr+OPThHa8xG2mjF3lePVfKbxxKKNiIKKfcHomGaacG/YSjlRJNsvmN1E+zzPiC6WeodFUDuJwUy1HRsq6BxIwQMj3Lgh9R501BmL0saa/C+oAAF6oAABCAAAQgDMZBKTvIMwH1TTAvF71iPqMw1OkIXlvLAfUZ6nSM00wLye9fHU6RmPrqdIz1OkCRvLz6nSM9TpH1GYQkby+Op0jMZgBJWGp0hqdIzAC+KjMfpKXolIbVKNmTlvqex00shMbv/AKpJjvVmsv8AknEKcR3Bl5vEEj/xVB8nEfMNvZUQ9S8I1UILOTE3iU5DAeRVjbTxcxQv9xssDa0KxTVIf1Y4VPljmrsse5I38KXviJtzhyvybNkqocQp6sbcruv0uoM4d4mlIEfqqcnzghbxcoYKOXopBvAHAS2UUj3b2MhTBDxcpNvCMIZko5cK97TH1t+YcWs4zYZJsly58xNNLk8wcA3xP4tuPqYaucpR81JmKJjoIxu3ZN9mS3Y5sqKaX0xOPQIGFIlj6QNe0kP5qdrvw5szSBtu2X2Isa8V2JM6jdu3fHRJrqDXxeizgJEbnDhmp4w6XWEg2uns1txSXNMkRsxjkt+uNOTTU072xAnDQ4gLdaGFr6dnSgE4GVoIjD2wIHUrBWVBMvBsSDCcgGezyrVg2TbHl0DqKZfOamoOiGvmFMpNFUMWV1VJPvySEn3lPWwRY3QFyllzCalyHfqpZSeI0eRRT6Wbdgf76iYhDSQTk9r2985b5CpNnZp5vZju5zbG0mtZ0W5ypTjQl1W3+c1fZSHYeDzB8cUNHvETGyQJflmz8DxHMIkcx7dRXlG6Zuz1Bslttjq2qiuUfIjiqpU9I+B1I7Jc0gqP9HO/MH4Rt1MReHk8+uh0Q+0SGavkN1Pjn5TLFgMdLwuiJwPjbjtJko+Ut6XJxozT3ijQ3xBRy18QL4wquR5hzFsYlKUcy+xKPHKSmYmp2guLa96QaTxG138snJykYgRzIfm/DDaKeKOop2tceIVanqqihmf0jcse3H/s4W2wfvi7MUIRtdlpRs0rHsXRE1OSO18/eCwUxOV6nMprLZTxJPLcIOWyZFHBDDn2eLCdbbWf7NHRkPGIkcPFE+9oDj5zESUkrkWi3VrOXzNic7dvKR3ZkcIfiHOIqqu9JaqqN1wcGN7FKvikbantoHukLgtsQfUfJNRupulBkL1R3GluTBNSvD2nkQchZk+mkpnbsrSD3FeggzHkTUHrD5KagAPqm3AjeXyGaaY9Gz9PkGSbcJXi+Vq+Qz1OkejZ0xlqdIQvLpWr5JpjMejU6Q1OkCb9MsE0x9dTpDU6RmEJD5lhqdI+wwAC8t5ZgMBmBG8gAAEjeQAACN5AAAJK/L+QxExEUTyn95T3g1HxxsMM8WHFr3IdVV6mq4cky/VvZ5gn27NEe35LOdQMk9h3HN9ugI6lNCOUex7lXqxb8YJex/UqhEw2vMMd2on0j+TlYqWop2ODid094HJdK4sPC/Gd5mupNzGPFfyNTLX+4oceC79FJNWHRgrNvFuxf6+Yg3eaiGZqiBnjzETByY4hveOc5aQnjDfHzaW6KTpROXZ/nN+mMPvVBqOxEGjmL4wODSAVdbfcaDgK+MYPJ7c4+YVXrogr8w8vsit4xLlsu25PM/EU1fiHEyWffEXPtyJJOeUFjH1y2VeLdo2WZwUk0VW9Vs5mmpl/M1yG7MaKX0csJZZ/x7AsnEQ7SORTMi3IiJdYwVETYrnC6KTGMjiP/Sla7T9NdWh9JK12OWCppZ8kzRS5ohExltHR5R44x2nKsEXySb1NRTeN3DbUOmMmacko7dpvorLadhkONp5RT55DjF5IcvfvK+xMbGxoXq2jo8o8sgntrM6Q9Wxp84mMU2Cab/bkpF4l2GWomn2ig8490cV6eiq53pjFI4XYxElaWU5nE2UTsTflVEFE8/fnREmYaScGphAtaOGk3I2YzknR1FHEy2dKS2eY6Zz9gin2hxIezx/ND+KKM+bTGhUuv30VCykp4OLRzyojqAE5ne/mVEmKGjng5iRcDa6JqbviTkNlbNnijJi1aqPFECamec6o8pcKrEs5m9hsO9GCdfJyaOzO3j2+Nl2z54mBSYZpflKaQw40Uc7ps9c/olA7ptoWo5Xf4aIH3BpK8qqO37p6cgZ7yuWtC07vY3Atdkw9TiNujCRykI3c67RugU+v259dRQdI4g0nLts+VknCWzbtNNU5PMHoy5xXdROV4RUhB9U4ecU3r5kl4PMOI6ps2q9R1PW54nFx7+CZsvlpt0PRRvGB3cV627Nu5UzVVVBsBr2dvqJKZqsk5V/cG9bsxrmy/Sl007LNJXnAeAA0FUTVl8pbpudAPw54leLZ+nyD0JpqDYJtx9U2Y2reVF6xuLzptx6024+qaY+wRvJu+ocvjs/T5BnqdIzAIXjvuWGp0jMAAkoAABCAAAQgAAEIAABCAAAQgAAEIAABC1KjMfLYxtdTpGOp0gXrvLh74wztO/4daGuOJTfN/R/MFOLz0NL7gJg8nhZLJuW/xHCuQoL+bP0+QfJSPbq97HjNDHO0scMhO6Wukpvwlfn4zsvSDhOSmMOHL784zcoLD1t5i6IhTKf2Tc8Yp9GLi+XEbLmxmnDt0xV6zR1DVdmE8FyafSLePu4KHLLuxN9b7DNVe5mSTk1EjjqE3Dxz7FiHqv6ISMm3TSGWWmKKdi9ukmL5Z3YJ5AAKzM1/VwxhjGDgFH6cfcjndROV4RUZp2/cCnspy2S8Gkc4kDLTDLTEzSbJNPU34muf8TlHy63uk36wHgFH/Uup+VST1XweWQehO14/vrFRXwipzjtdnTGezpixUmh7LR+rp2/yyo2XUdZN+KQn5rl2cG3bexWTZLwaQ2CcWoNxqdICbhtVLB+BqYPuMsnNazisOL0xswD0U8Y5BeHWpO9a9NmmmPQmmPrqdIzCtxJfK56wIPsABaboAABCAAAQgAAEIAABCAAAQgAAEIAABCAAAQgAAEIAABC//9k=", + "type": "Image" + } + }, + "id": "did:key:z6MkiQZT4nphaKsVhjWWi2ef3ZeeX3JGaKJKTykaFBXns3M2" + }, + "issuanceDate": "2023-05-10T06:54:58Z", + "proof": { + "type": "Ed25519Signature2020", + "created": "2023-05-10T06:54:58Z", + "verificationMethod": "did:key:z6Mkv4v7tCJurgqgGxD7biXmXH8YGdHSggNhrMLpkMEoPi7e#z6Mkv4v7tCJurgqgGxD7biXmXH8YGdHSggNhrMLpkMEoPi7e", + "proofPurpose": "assertionMethod", + "proofValue": "z5n9iiRd6FsNVkuXQrUKXj7JYww5gfoU2A2eoeX5hyBKCiMJho3FH8LQ1cB4SVKLzdFtRmYj79J8yp6yaE6iegBNK" + } + } + ], + "proof": { + "type": "Ed25519Signature2020", + "proofPurpose": "authentication", + "verificationMethod": "did:key:z6MktTmBQWV6FmHZyfvSV7ubQ1UCPgLF6VQkRgeGBx7NRzCP#z6MktTmBQWV6FmHZyfvSV7ubQ1UCPgLF6VQkRgeGBx7NRzCP", + "created": "2023-05-10T07:38:42Z", + "proofValue": "z5fLhzuxCf4Zn4t4zvsCaoJhf36T93e17d8hW6j8DUpXbtw1on9zL1KVwnjDEBwR22WbYKQ39b5U3dAykFM6E8wiT", + "challenge": "3779e883a51a8086039db1d4e773aec26faeb3ee99643706345c572cddded857", + "domain": "https://playground.chapi.io" + } +}