diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d75b3af69..4088ef0b4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,7 @@ on: run-on-runner: description: 'Specify the runner to use' required: true - default: 'ARM64' + default: 'arm64' perf-test: description: 'Run perf test times' required: true @@ -32,19 +32,19 @@ permissions: name: Build jobs: build: - runs-on: ${{ github.event_name == 'push' && 'macos-12' || (github.event.inputs.run-on-runner || 'ARM64') }} + runs-on: ${{ github.event_name == 'push' && 'arm64' || (github.event.inputs.run-on-runner || 'arm64') }} steps: - name: validate agent run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ github.event.inputs.run-on-runner }}" != "ARM64" ]]; then + if [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ github.event.inputs.run-on-runner }}" != "arm64" ]]; then echo "Invalid runner" exit 1 fi - name: Install Go uses: actions/setup-go@v1 with: - go-version: 1.22.8 - if: github.event.inputs.run-on-runner != 'ARM64' && github.event_name != 'schedule' + go-version: 1.23.2 + if: runner.name != 'mac-mini-org-heart' - name: Setup GO run: | go version @@ -61,7 +61,12 @@ jobs: HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install grpcurl HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew tap messense/macos-cross-toolchains && brew install x86_64-unknown-linux-musl npm i -g node-gyp - if: github.event.inputs.run-on-runner != 'ARM64' && github.event_name != 'schedule' + echo "Azaza" + protoc --version + which x86_64-w64-mingw32-gcc + which protoc + echo "Azaza2" + if: runner.name != 'mac-mini-org-heart' - name: Checkout uses: actions/checkout@v3 - uses: actions/cache@v3 @@ -73,7 +78,7 @@ jobs: ${{ runner.os }}-go-${{ matrix.go-version }}- - name: Install old MacOS SDK (for backward compatibility of CGO) run: source .github/install_macos_sdk.sh 10.15 - if: github.event.inputs.run-on-runner != 'ARM64' && github.event_name != 'schedule' + if: runner.name != 'mac-mini-org-heart' - name: Set env vars env: UNSPLASH_KEY: ${{ secrets.UNSPLASH_KEY }} @@ -133,14 +138,14 @@ jobs: TEST_MNEMONIC: ${{ secrets.TEST_MNEMONIC }} PROM_KEY: ${{ secrets.PROMETHEUS_USERNAME }} PROM_PASSWORD: ${{ secrets.PROMETHEUS_PASSWORD }} - if: github.event.inputs.perf-test != '0' || github.event_name == 'schedule' + if: github.event.inputs.perf-test != '0' - name: Archive perf tests results uses: actions/upload-artifact@v4 with: name: pprofs path: | *.pprof - if: github.event.inputs.perf-test != '0' || github.event_name == 'schedule' + if: github.event.inputs.perf-test != '0' - name: end run perf tests run: | rm -rf *.pprof @@ -149,7 +154,7 @@ jobs: gh run watch ${{ github.run_id }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: github.event.inputs.perf-test != '0' || github.event_name == 'schedule' + if: github.event.inputs.perf-test != '0' - name: Make JS protos run: | make protos-js @@ -252,7 +257,7 @@ jobs: cp pkg/lib/bundle/internalTypes.json ./json - name: Compile android lib run: | - gomobile bind -tags "envproduction nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata rasterizesvg" -ldflags "$FLAGS" -v -target=android -androidapi 19 -o lib.aar github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core || true + gomobile bind -tags "envproduction nogrpcserver gomobile nowatchdog nosigar nomutexdeadlockdetector timetzdata rasterizesvg" -ldflags "$FLAGS" -v -target=android -androidapi 26 -o lib.aar github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core || true gtar --exclude ".*" -czvf android_lib_${VERSION}.tar.gz lib.aar protobuf json mv android_lib_${VERSION}.tar.gz .release/ - name: Publish android lib to maven diff --git a/Makefile b/Makefile index e1b6c6906..c6a8c676a 100644 --- a/Makefile +++ b/Makefile @@ -160,7 +160,7 @@ build-android: setup-go setup-gomobile ifdef ANY_SYNC_NETWORK @$(eval TAGS := $(TAGS) envnetworkcustom) endif - gomobile bind -tags "$(TAGS)" -ldflags "$(FLAGS)" $(BUILD_FLAGS) -target=android -androidapi 19 -o lib.aar github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core + gomobile bind -tags "$(TAGS)" -ldflags "$(FLAGS)" $(BUILD_FLAGS) -target=android -androidapi 26 -o lib.aar github.com/anyproto/anytype-heart/clientlibrary/service github.com/anyproto/anytype-heart/core @mkdir -p dist/android/ && mv lib.aar dist/android/ @go mod tidy diff --git a/clientlibrary/clib/main.go b/clientlibrary/clib/main.go index e98418942..f195529fb 100644 --- a/clientlibrary/clib/main.go +++ b/clientlibrary/clib/main.go @@ -44,11 +44,6 @@ func RunDebugServer(addr *C.char) { service.RunDebugServer(C.GoString(addr)) } -//export SetLogLevels -func SetLogLevels(levels *C.char) { - service.SetLogLevels(C.GoString(levels)) -} - //export Command func Command(cmd *C.char, data unsafe.Pointer, dataLen C.int, callback C.proxyFunc, callbackContext unsafe.Pointer) { service.CommandAsync(C.GoString(cmd), C.GoBytes(data, dataLen), func(data []byte) { diff --git a/clientlibrary/service/lib.go b/clientlibrary/service/lib.go index fcbeec9ee..de659dbb2 100644 --- a/clientlibrary/service/lib.go +++ b/clientlibrary/service/lib.go @@ -64,10 +64,6 @@ func RunDebugServer(addr string) { }) } -func SetLogLevels(levels string) { - logging.SetLogLevels(levels) -} - func SetEnv(key, value string) { os.Setenv(key, value) } diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go index 431b00fc9..dedfecbd1 100644 --- a/clientlibrary/service/service.pb.go +++ b/clientlibrary/service/service.pb.go @@ -25,330 +25,332 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5164 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, - 0x56, 0xf8, 0xa7, 0x5e, 0xfe, 0xf3, 0x27, 0x97, 0x1d, 0xa0, 0x06, 0x86, 0xd9, 0x61, 0xb7, 0xbb, - 0xa7, 0x6f, 0xee, 0x6e, 0xdb, 0xe9, 0x9e, 0xee, 0xe9, 0x99, 0xd5, 0x2e, 0x12, 0x72, 0xdb, 0x6d, - 0x8f, 0x59, 0xdb, 0x6d, 0x5c, 0xe5, 0x6e, 0x69, 0x24, 0x24, 0xc2, 0x99, 0xe1, 0x72, 0xe2, 0xac, - 0x8c, 0xdc, 0xcc, 0xa8, 0x72, 0xd7, 0x22, 0x10, 0x08, 0x04, 0x02, 0x81, 0x58, 0x71, 0x7b, 0x45, - 0xe2, 0x89, 0x8f, 0xc2, 0xe3, 0x3e, 0xf2, 0x88, 0x66, 0xf8, 0x20, 0x28, 0x23, 0x22, 0xe3, 0x72, - 0x32, 0x4e, 0x64, 0x7a, 0x9f, 0xba, 0x55, 0xe7, 0x77, 0xce, 0x89, 0xeb, 0x89, 0x13, 0x91, 0x91, - 0xe9, 0xe8, 0x76, 0x79, 0xbe, 0x55, 0x56, 0x8c, 0xb3, 0x7a, 0xab, 0xa6, 0xd5, 0x32, 0x4b, 0x68, - 0xfb, 0x6f, 0x2c, 0x7e, 0x1e, 0xbf, 0x4f, 0x8a, 0x15, 0x5f, 0x95, 0xf4, 0x93, 0x8f, 0x0d, 0x99, - 0xb0, 0xf9, 0x9c, 0x14, 0x69, 0x2d, 0x91, 0x4f, 0x3e, 0x32, 0x12, 0xba, 0xa4, 0x05, 0x57, 0xbf, - 0x3f, 0xfb, 0xcf, 0xff, 0x1d, 0x45, 0x1f, 0xec, 0xe4, 0x19, 0x2d, 0xf8, 0x8e, 0xd2, 0x18, 0x7f, - 0x1d, 0x7d, 0x77, 0xbb, 0x2c, 0xf7, 0x29, 0x7f, 0x43, 0xab, 0x3a, 0x63, 0xc5, 0xf8, 0x5e, 0xac, - 0x1c, 0xc4, 0xa7, 0x65, 0x12, 0x6f, 0x97, 0x65, 0x6c, 0x84, 0xf1, 0x29, 0xfd, 0xe9, 0x82, 0xd6, - 0xfc, 0x93, 0xfb, 0x61, 0xa8, 0x2e, 0x59, 0x51, 0xd3, 0xf1, 0x45, 0xf4, 0x1b, 0xdb, 0x65, 0x39, - 0xa1, 0x7c, 0x97, 0x36, 0x15, 0x98, 0x70, 0xc2, 0xe9, 0x78, 0xad, 0xa3, 0xea, 0x02, 0xda, 0xc7, - 0xa3, 0x7e, 0x50, 0xf9, 0x99, 0x46, 0xdf, 0x69, 0xfc, 0x5c, 0x2e, 0x78, 0xca, 0xae, 0x8b, 0xf1, - 0xa7, 0x5d, 0x45, 0x25, 0xd2, 0xb6, 0xef, 0x86, 0x10, 0x65, 0xf5, 0x6d, 0xf4, 0xab, 0x6f, 0x49, - 0x9e, 0x53, 0xbe, 0x53, 0xd1, 0xa6, 0xe0, 0xae, 0x8e, 0x14, 0xc5, 0x52, 0xa6, 0xed, 0xde, 0x0b, - 0x32, 0xca, 0xf0, 0xd7, 0xd1, 0x77, 0xa5, 0xe4, 0x94, 0x26, 0x6c, 0x49, 0xab, 0xb1, 0x57, 0x4b, - 0x09, 0x91, 0x26, 0xef, 0x40, 0xd0, 0xf6, 0x0e, 0x2b, 0x96, 0xb4, 0xe2, 0x7e, 0xdb, 0x4a, 0x18, - 0xb6, 0x6d, 0x20, 0x65, 0xfb, 0x6f, 0x47, 0xd1, 0xf7, 0xb7, 0x93, 0x84, 0x2d, 0x0a, 0x7e, 0xc8, - 0x12, 0x92, 0x1f, 0x66, 0xc5, 0xd5, 0x31, 0xbd, 0xde, 0xb9, 0x6c, 0xf8, 0x62, 0x46, 0xc7, 0xcf, - 0xdd, 0x56, 0x95, 0x68, 0xac, 0xd9, 0xd8, 0x86, 0xb5, 0xef, 0xcf, 0x6f, 0xa6, 0xa4, 0xca, 0xf2, - 0x8f, 0xa3, 0xe8, 0x16, 0x2c, 0xcb, 0x84, 0xe5, 0x4b, 0x6a, 0x4a, 0xf3, 0xa2, 0xc7, 0xb0, 0x8b, - 0xeb, 0xf2, 0x7c, 0x71, 0x53, 0x35, 0x55, 0xa2, 0x3c, 0xfa, 0xd0, 0x1e, 0x2e, 0x13, 0x5a, 0x8b, - 0xe9, 0xf4, 0x18, 0x1f, 0x11, 0x0a, 0xd1, 0x9e, 0x9f, 0x0c, 0x41, 0x95, 0xb7, 0x2c, 0x1a, 0x2b, - 0x6f, 0x39, 0xab, 0xb5, 0xb3, 0x47, 0x5e, 0x0b, 0x16, 0xa1, 0x7d, 0x3d, 0x1e, 0x40, 0x2a, 0x57, - 0x7f, 0x14, 0xfd, 0xda, 0x5b, 0x56, 0x5d, 0xd5, 0x25, 0x49, 0xa8, 0x9a, 0x0a, 0x0f, 0x5c, 0xed, - 0x56, 0x0a, 0x67, 0xc3, 0xc3, 0x3e, 0xcc, 0x1a, 0xb4, 0xad, 0xf0, 0x75, 0x49, 0x61, 0x0c, 0x32, - 0x8a, 0x8d, 0x10, 0x1b, 0xb4, 0x10, 0x52, 0xb6, 0xaf, 0xa2, 0xb1, 0xb1, 0x7d, 0xfe, 0xc7, 0x34, - 0xe1, 0xdb, 0x69, 0x0a, 0x7b, 0xc5, 0xe8, 0x0a, 0x22, 0xde, 0x4e, 0x53, 0xac, 0x57, 0xfc, 0xa8, - 0x72, 0x76, 0x1d, 0x7d, 0x04, 0x9c, 0x1d, 0x66, 0xb5, 0x70, 0xb8, 0x19, 0xb6, 0xa2, 0x30, 0xed, - 0x34, 0x1e, 0x8a, 0x2b, 0xc7, 0x7f, 0x3e, 0x8a, 0xbe, 0xe7, 0xf1, 0x7c, 0x4a, 0xe7, 0x6c, 0x49, - 0xc7, 0x4f, 0xfb, 0xad, 0x49, 0x52, 0xfb, 0xff, 0xec, 0x06, 0x1a, 0x9e, 0x61, 0x32, 0xa1, 0x39, - 0x4d, 0x38, 0x3a, 0x4c, 0xa4, 0xb8, 0x77, 0x98, 0x68, 0xcc, 0x9a, 0x61, 0xad, 0x70, 0x9f, 0xf2, - 0x9d, 0x45, 0x55, 0xd1, 0x82, 0xa3, 0x7d, 0x69, 0x90, 0xde, 0xbe, 0x74, 0x50, 0x4f, 0x7d, 0xf6, - 0x29, 0xdf, 0xce, 0x73, 0xb4, 0x3e, 0x52, 0xdc, 0x5b, 0x1f, 0x8d, 0x29, 0x0f, 0x49, 0xf4, 0xeb, - 0x56, 0x8b, 0xf1, 0x83, 0xe2, 0x82, 0x8d, 0xf1, 0xb6, 0x10, 0x72, 0xed, 0x63, 0xad, 0x97, 0xf3, - 0x54, 0xe3, 0xd5, 0xbb, 0x92, 0x55, 0x78, 0xb7, 0x48, 0x71, 0x6f, 0x35, 0x34, 0xa6, 0x3c, 0xfc, - 0x61, 0xf4, 0x81, 0x8a, 0x92, 0xed, 0x7a, 0x76, 0xdf, 0x1b, 0x42, 0xe1, 0x82, 0xf6, 0xa0, 0x87, - 0x32, 0xc1, 0x41, 0xc9, 0x54, 0xf0, 0xb9, 0xe7, 0xd5, 0x03, 0xa1, 0xe7, 0x7e, 0x18, 0xea, 0xd8, - 0xde, 0xa5, 0x39, 0x45, 0x6d, 0x4b, 0x61, 0x8f, 0x6d, 0x0d, 0x29, 0xdb, 0x55, 0xf4, 0x5b, 0xba, - 0x59, 0x9a, 0x75, 0x54, 0xc8, 0x9b, 0x20, 0xbd, 0x8e, 0xd4, 0xdb, 0x86, 0xb4, 0xaf, 0x8d, 0x61, - 0x70, 0xa7, 0x3e, 0x6a, 0x06, 0xfa, 0xeb, 0x03, 0xe6, 0xdf, 0xfd, 0x30, 0xa4, 0x6c, 0xff, 0xdd, - 0x28, 0xfa, 0x81, 0x92, 0xbd, 0x2a, 0xc8, 0x79, 0x4e, 0xc5, 0x92, 0x78, 0x4c, 0xf9, 0x35, 0xab, - 0xae, 0x26, 0xab, 0x22, 0x41, 0x96, 0x7f, 0x3f, 0xdc, 0xb3, 0xfc, 0xa3, 0x4a, 0x56, 0xc6, 0xa7, - 0x2a, 0xca, 0x59, 0x09, 0x33, 0xbe, 0xb6, 0x06, 0x9c, 0x95, 0x58, 0xc6, 0xe7, 0x22, 0x1d, 0xab, - 0x47, 0x4d, 0xd8, 0xf4, 0x5b, 0x3d, 0xb2, 0xe3, 0xe4, 0xdd, 0x10, 0x62, 0xc2, 0x56, 0x3b, 0x80, - 0x59, 0x71, 0x91, 0xcd, 0xce, 0xca, 0xb4, 0x19, 0xc6, 0x8f, 0xfd, 0x23, 0xd4, 0x42, 0x90, 0xb0, - 0x85, 0xa0, 0xca, 0xdb, 0x3f, 0x98, 0xc4, 0x48, 0x4d, 0xa5, 0xbd, 0x8a, 0xcd, 0x0f, 0xe9, 0x8c, - 0x24, 0x2b, 0x35, 0xff, 0x3f, 0x0f, 0x4d, 0x3c, 0x48, 0xeb, 0x42, 0xbc, 0xb8, 0xa1, 0x96, 0x2a, - 0xcf, 0xbf, 0x8f, 0xa2, 0xfb, 0x6d, 0xf5, 0x2f, 0x49, 0x31, 0xa3, 0xaa, 0x3f, 0x65, 0xe9, 0xb7, - 0x8b, 0xf4, 0x94, 0xd6, 0x9c, 0x54, 0x7c, 0xfc, 0x23, 0x7f, 0x25, 0x43, 0x3a, 0xba, 0x6c, 0x3f, - 0xfe, 0xa5, 0x74, 0x4d, 0xaf, 0x4f, 0x9a, 0xc0, 0xa6, 0x42, 0x80, 0xdb, 0xeb, 0x42, 0x02, 0x03, - 0xc0, 0xdd, 0x10, 0x62, 0x7a, 0x5d, 0x08, 0x0e, 0x8a, 0x65, 0xc6, 0xe9, 0x3e, 0x2d, 0x68, 0xd5, - 0xed, 0x75, 0xa9, 0xea, 0x22, 0x48, 0xaf, 0x23, 0xa8, 0x09, 0x36, 0x8e, 0x37, 0xbd, 0x38, 0xae, - 0x07, 0x8c, 0x74, 0x96, 0xc7, 0x8d, 0x61, 0xb0, 0xd9, 0xdd, 0x59, 0x3e, 0x4f, 0xe9, 0x92, 0x5d, - 0xc1, 0xdd, 0x9d, 0x6d, 0x42, 0x02, 0xc8, 0xee, 0xce, 0x0b, 0x9a, 0x15, 0xcc, 0xf2, 0xf3, 0x26, - 0xa3, 0xd7, 0x60, 0x05, 0xb3, 0x95, 0x1b, 0x31, 0xb2, 0x82, 0x79, 0x30, 0xe5, 0xe1, 0x38, 0xfa, - 0x15, 0x21, 0xfc, 0x7d, 0x96, 0x15, 0xe3, 0xdb, 0x1e, 0xa5, 0x46, 0xa0, 0xad, 0xde, 0xc1, 0x01, - 0x50, 0xe2, 0xe6, 0xd7, 0x1d, 0x52, 0x24, 0x34, 0xf7, 0x96, 0xd8, 0x88, 0x83, 0x25, 0x76, 0x30, - 0x93, 0x3a, 0x08, 0x61, 0x13, 0xbf, 0x26, 0x97, 0xa4, 0xca, 0x8a, 0xd9, 0xd8, 0xa7, 0x6b, 0xc9, - 0x91, 0xd4, 0xc1, 0xc7, 0x81, 0x21, 0xac, 0x14, 0xb7, 0xcb, 0xb2, 0x6a, 0xc2, 0xa2, 0x6f, 0x08, - 0xbb, 0x48, 0x70, 0x08, 0x77, 0x50, 0xbf, 0xb7, 0x5d, 0x9a, 0xe4, 0x59, 0x11, 0xf4, 0xa6, 0x90, - 0x21, 0xde, 0x0c, 0x0a, 0x06, 0xef, 0x21, 0x25, 0x4b, 0xda, 0xd6, 0xcc, 0xd7, 0x32, 0x36, 0x10, - 0x1c, 0xbc, 0x00, 0x34, 0xfb, 0x34, 0x21, 0x3e, 0x22, 0x57, 0xb4, 0x69, 0x60, 0xda, 0xac, 0x6b, - 0x63, 0x9f, 0xbe, 0x43, 0x20, 0xfb, 0x34, 0x3f, 0xa9, 0x5c, 0x2d, 0xa2, 0x8f, 0x84, 0xfc, 0x84, - 0x54, 0x3c, 0x4b, 0xb2, 0x92, 0x14, 0x6d, 0xfe, 0xef, 0x9b, 0xd7, 0x1d, 0x4a, 0xbb, 0xdc, 0x1c, - 0x48, 0x2b, 0xb7, 0xff, 0x36, 0x8a, 0x3e, 0x85, 0x7e, 0x4f, 0x68, 0x35, 0xcf, 0xc4, 0x36, 0xb2, - 0x96, 0x41, 0x78, 0xfc, 0x65, 0xd8, 0x68, 0x47, 0x41, 0x97, 0xe6, 0x87, 0x37, 0x57, 0x54, 0x05, - 0xfb, 0x83, 0x28, 0x92, 0xdb, 0x15, 0xb1, 0xa5, 0x74, 0x67, 0xad, 0xda, 0xc7, 0x38, 0xfb, 0xc9, - 0x4f, 0x03, 0x84, 0x59, 0x2a, 0xe4, 0xef, 0x62, 0xa7, 0x3c, 0xf6, 0x6a, 0x08, 0x11, 0xb2, 0x54, - 0x00, 0x04, 0x16, 0x74, 0x72, 0xc9, 0xae, 0xfd, 0x05, 0x6d, 0x24, 0xe1, 0x82, 0x2a, 0xc2, 0x9c, - 0x5d, 0xa9, 0x82, 0xfa, 0xce, 0xae, 0xda, 0x62, 0x84, 0xce, 0xae, 0x20, 0xa3, 0x0c, 0xb3, 0xe8, - 0x37, 0x6d, 0xc3, 0x2f, 0x19, 0xbb, 0x9a, 0x93, 0xea, 0x6a, 0xfc, 0x04, 0x57, 0x6e, 0x19, 0xed, - 0x68, 0x7d, 0x10, 0x6b, 0xc2, 0x82, 0xed, 0xb0, 0x49, 0x34, 0xce, 0xaa, 0x1c, 0x84, 0x05, 0xc7, - 0x86, 0x42, 0x90, 0xb0, 0x80, 0xa0, 0x26, 0x72, 0xdb, 0xde, 0x26, 0x14, 0xee, 0x96, 0x1c, 0xf5, - 0x09, 0xc5, 0x76, 0x4b, 0x1e, 0x0c, 0x0e, 0xa1, 0xfd, 0x8a, 0x94, 0x97, 0xfe, 0x21, 0x24, 0x44, - 0xe1, 0x21, 0xd4, 0x22, 0xb0, 0xbf, 0x27, 0x94, 0x54, 0xc9, 0xa5, 0xbf, 0xbf, 0xa5, 0x2c, 0xdc, - 0xdf, 0x9a, 0x81, 0xfd, 0x2d, 0x05, 0x6f, 0x33, 0x7e, 0x79, 0x44, 0x39, 0xf1, 0xf7, 0xb7, 0xcb, - 0x84, 0xfb, 0xbb, 0xc3, 0x9a, 0x4c, 0xc6, 0x76, 0x38, 0x59, 0x9c, 0xd7, 0x49, 0x95, 0x9d, 0xd3, - 0x71, 0xc0, 0x8a, 0x86, 0x90, 0x4c, 0x06, 0x85, 0x95, 0xcf, 0x9f, 0x8f, 0xa2, 0xdb, 0x6d, 0xb7, - 0xb3, 0xba, 0x96, 0x2b, 0x2b, 0x70, 0xff, 0xc2, 0xdf, 0xbf, 0x08, 0x8e, 0x9c, 0x26, 0x0e, 0x50, - 0xb3, 0xa2, 0xaa, 0xbf, 0x48, 0x67, 0x45, 0xad, 0x0b, 0xf5, 0xe5, 0x10, 0xeb, 0x96, 0x02, 0x12, - 0x55, 0x07, 0x29, 0x9a, 0x05, 0x4d, 0xf5, 0x4f, 0x2b, 0x3b, 0x48, 0x6b, 0xb0, 0xa0, 0xb5, 0xed, - 0x6d, 0x11, 0xc8, 0x82, 0xe6, 0x27, 0xe1, 0x50, 0xd8, 0xaf, 0xd8, 0xa2, 0xac, 0x7b, 0x86, 0x02, - 0x80, 0xc2, 0x43, 0xa1, 0x0b, 0x2b, 0x9f, 0xef, 0xa2, 0xdf, 0xb6, 0x87, 0x9f, 0xdd, 0xd8, 0x9b, - 0xf8, 0x98, 0xf2, 0x35, 0x71, 0x3c, 0x14, 0x37, 0x29, 0x5d, 0xeb, 0x99, 0xef, 0x52, 0x4e, 0xb2, - 0xbc, 0x1e, 0x3f, 0xf4, 0xdb, 0x68, 0xe5, 0x48, 0x4a, 0xe7, 0xe3, 0x60, 0x7c, 0xdb, 0x5d, 0x94, - 0x79, 0x96, 0x74, 0xcf, 0x72, 0x95, 0xae, 0x16, 0x87, 0xe3, 0x9b, 0x8d, 0xc1, 0x78, 0x3d, 0xa1, - 0x5c, 0xfe, 0x67, 0xba, 0x2a, 0xa9, 0x3f, 0x5e, 0x3b, 0x48, 0x38, 0x5e, 0x43, 0x14, 0xd6, 0x67, - 0x42, 0xf9, 0x21, 0x59, 0xb1, 0x05, 0x12, 0xaf, 0xb5, 0x38, 0x5c, 0x1f, 0x1b, 0x33, 0x59, 0x95, - 0xf6, 0x70, 0x50, 0x70, 0x5a, 0x15, 0x24, 0xdf, 0xcb, 0xc9, 0xac, 0x1e, 0x23, 0x31, 0xc6, 0xa5, - 0x90, 0xac, 0x0a, 0xa7, 0x3d, 0xcd, 0x78, 0x50, 0xef, 0x91, 0x25, 0xab, 0x32, 0x8e, 0x37, 0xa3, - 0x41, 0x7a, 0x9b, 0xd1, 0x41, 0xbd, 0xde, 0xb6, 0xab, 0xe4, 0x32, 0x5b, 0xd2, 0x34, 0xe0, 0xad, - 0x45, 0x06, 0x78, 0xb3, 0x50, 0x4f, 0xa7, 0x4d, 0xd8, 0xa2, 0x4a, 0x28, 0xda, 0x69, 0x52, 0xdc, - 0xdb, 0x69, 0x1a, 0x53, 0x1e, 0xfe, 0x6a, 0x14, 0xfd, 0x8e, 0x94, 0xda, 0x07, 0xac, 0xbb, 0xa4, - 0xbe, 0x3c, 0x67, 0xa4, 0x4a, 0xc7, 0x9f, 0xf9, 0xec, 0x78, 0x51, 0xed, 0xfa, 0xd9, 0x4d, 0x54, - 0x60, 0xb3, 0x1e, 0x66, 0xb5, 0x35, 0xe3, 0xbc, 0xcd, 0xea, 0x20, 0xe1, 0x66, 0x85, 0x28, 0x0c, - 0x20, 0x42, 0x2e, 0x0f, 0x33, 0x1e, 0xa2, 0xfa, 0xee, 0x89, 0xc6, 0x5a, 0x2f, 0x07, 0xe3, 0x63, - 0x23, 0x74, 0x47, 0xcb, 0x26, 0x66, 0xc3, 0x3f, 0x62, 0xe2, 0xa1, 0x38, 0xea, 0x59, 0xcf, 0x8a, - 0xb0, 0xe7, 0xce, 0xcc, 0x88, 0x87, 0xe2, 0x88, 0x67, 0x2b, 0xac, 0x85, 0x3c, 0x7b, 0x42, 0x5b, - 0x3c, 0x14, 0x87, 0xd9, 0x97, 0x62, 0xda, 0x75, 0xe1, 0x49, 0xc0, 0x0e, 0x5c, 0x1b, 0xd6, 0x07, - 0xb1, 0xca, 0xe1, 0xdf, 0x8c, 0xa2, 0xef, 0x1b, 0x8f, 0x47, 0x2c, 0xcd, 0x2e, 0x56, 0x12, 0x7a, - 0x43, 0xf2, 0x05, 0xad, 0xc7, 0xcf, 0x30, 0x6b, 0x5d, 0x56, 0x97, 0xe0, 0xf9, 0x8d, 0x74, 0xe0, - 0xdc, 0xd9, 0x2e, 0xcb, 0x7c, 0x35, 0xa5, 0xf3, 0x32, 0x47, 0xe7, 0x8e, 0x83, 0x84, 0xe7, 0x0e, - 0x44, 0x61, 0x56, 0x3e, 0x65, 0x4d, 0xce, 0xef, 0xcd, 0xca, 0x85, 0x28, 0x9c, 0x95, 0xb7, 0x08, - 0xcc, 0x95, 0xa6, 0x6c, 0x87, 0xe5, 0x39, 0x4d, 0x78, 0xf7, 0x21, 0xad, 0xd6, 0x34, 0x44, 0x38, - 0x57, 0x02, 0xa4, 0x39, 0xcf, 0x68, 0xf7, 0x90, 0xa4, 0xa2, 0x2f, 0x57, 0x87, 0x59, 0x71, 0x35, - 0xf6, 0xa7, 0x05, 0x06, 0x40, 0xce, 0x33, 0xbc, 0x20, 0xdc, 0xab, 0x9e, 0x15, 0x29, 0xf3, 0xef, - 0x55, 0x1b, 0x49, 0x78, 0xaf, 0xaa, 0x08, 0x68, 0xf2, 0x94, 0x62, 0x26, 0x1b, 0x49, 0xd8, 0xa4, - 0x22, 0x7c, 0xa1, 0x50, 0x9d, 0x7a, 0xa3, 0xa1, 0x10, 0x9c, 0x73, 0xaf, 0xf5, 0x72, 0x70, 0x84, - 0xb6, 0x9b, 0xd6, 0x3d, 0xca, 0x93, 0x4b, 0xff, 0x08, 0x75, 0x90, 0xf0, 0x08, 0x85, 0x28, 0xac, - 0xd2, 0x94, 0xe9, 0x4d, 0xf7, 0x43, 0xff, 0xf8, 0xe8, 0x6c, 0xb8, 0xd7, 0x7a, 0x39, 0xb8, 0x8d, - 0x3c, 0x98, 0x8b, 0x36, 0xf3, 0x0e, 0x72, 0x29, 0x0b, 0x6f, 0x23, 0x35, 0x03, 0x4b, 0x2f, 0x05, - 0x4d, 0x73, 0xfa, 0x4b, 0x6f, 0xe4, 0xe1, 0xd2, 0x3b, 0x9c, 0x72, 0xf2, 0x2f, 0x7a, 0x1b, 0x27, - 0xa5, 0xc7, 0xac, 0x99, 0x23, 0x6f, 0x48, 0x9e, 0xa5, 0x84, 0xd3, 0x29, 0xbb, 0xa2, 0x85, 0x7f, - 0xc7, 0xa4, 0x4a, 0x2b, 0xf9, 0xd8, 0x51, 0x08, 0xef, 0x98, 0xc2, 0x8a, 0x70, 0x9c, 0x48, 0xfa, - 0xac, 0xa6, 0x3b, 0xa4, 0x46, 0x22, 0x99, 0x83, 0x84, 0xc7, 0x09, 0x44, 0x61, 0xbe, 0x2a, 0xe5, - 0xaf, 0xde, 0x95, 0xb4, 0xca, 0x68, 0x91, 0x50, 0x7f, 0xbe, 0x0a, 0xa9, 0x70, 0xbe, 0xea, 0xa1, - 0x3b, 0xc7, 0x34, 0x3a, 0x38, 0x75, 0xef, 0x59, 0x40, 0x22, 0x70, 0xcf, 0x02, 0x41, 0x61, 0x25, - 0x0d, 0xe0, 0x3d, 0xea, 0xec, 0x58, 0x09, 0x1e, 0x75, 0xe2, 0x74, 0xe7, 0xf0, 0x4b, 0x33, 0x93, - 0x66, 0x9a, 0xf4, 0x14, 0x7d, 0x62, 0x4f, 0x97, 0xf5, 0x41, 0xac, 0xff, 0xb4, 0xed, 0x94, 0xe6, - 0x44, 0x2c, 0x21, 0x81, 0x23, 0xad, 0x96, 0x19, 0x72, 0xda, 0x66, 0xb1, 0xca, 0xe1, 0x5f, 0x8c, - 0xa2, 0x4f, 0x7c, 0x1e, 0x5f, 0x97, 0xc2, 0xef, 0xd3, 0x7e, 0x5b, 0x92, 0x44, 0x2e, 0x92, 0x84, - 0x35, 0x54, 0x19, 0xfe, 0x24, 0xfa, 0xb8, 0x15, 0x99, 0x7b, 0x26, 0xaa, 0x00, 0x6e, 0x02, 0xa5, - 0xcb, 0x0f, 0x39, 0xed, 0x7e, 0x6b, 0x30, 0x6f, 0xf6, 0x26, 0x6e, 0xb9, 0x6a, 0xb0, 0x37, 0xd1, - 0x36, 0x94, 0x18, 0xd9, 0x9b, 0x78, 0x30, 0x73, 0xaa, 0x61, 0x57, 0xef, 0x6d, 0xc6, 0x2f, 0x45, - 0xee, 0x03, 0x4e, 0x35, 0x9c, 0xb2, 0x6a, 0x08, 0x39, 0xd5, 0x40, 0x61, 0x98, 0x1d, 0xb4, 0x60, - 0x33, 0x37, 0x7d, 0x71, 0x55, 0x1b, 0xb2, 0x67, 0xe6, 0xa3, 0x7e, 0x10, 0x8e, 0xd7, 0x56, 0xac, - 0xb6, 0x21, 0x4f, 0x42, 0x16, 0xc0, 0x56, 0x64, 0x7d, 0x10, 0xab, 0x1c, 0xfe, 0x59, 0xf4, 0xbd, - 0x4e, 0xc5, 0xf6, 0x28, 0xe1, 0x8b, 0x8a, 0xa6, 0xe3, 0xad, 0x9e, 0x72, 0xb7, 0xa0, 0x76, 0xfd, - 0x74, 0xb8, 0x42, 0x27, 0x5f, 0x6e, 0x39, 0x39, 0xac, 0x74, 0x19, 0x9e, 0x85, 0x4c, 0xba, 0x6c, - 0x30, 0x5f, 0xc6, 0x75, 0x3a, 0x5b, 0x5e, 0x7b, 0x74, 0x6d, 0x2f, 0x49, 0x96, 0x8b, 0x47, 0x4e, - 0x9f, 0x85, 0x8c, 0x3a, 0x68, 0x70, 0xcb, 0x8b, 0xaa, 0x74, 0x22, 0xb3, 0x98, 0xe3, 0xd6, 0x56, - 0x69, 0x03, 0x8f, 0x04, 0x9e, 0x9d, 0xd2, 0xe6, 0x40, 0x5a, 0xb9, 0xe5, 0xed, 0x51, 0x61, 0xf3, - 0xb3, 0x3d, 0xc8, 0x7d, 0x5e, 0x95, 0xaa, 0x67, 0xa4, 0x6f, 0x0e, 0xa4, 0x95, 0xd7, 0x3f, 0x8d, - 0x3e, 0xee, 0x7a, 0x55, 0x0b, 0xd1, 0x56, 0xaf, 0x29, 0xb0, 0x16, 0x3d, 0x1d, 0xae, 0x60, 0xb6, - 0x17, 0x5f, 0x65, 0x35, 0x67, 0xd5, 0x6a, 0x72, 0xc9, 0xae, 0xdb, 0xfb, 0xdb, 0xee, 0x6c, 0x55, - 0x40, 0x6c, 0x11, 0xc8, 0xf6, 0xc2, 0x4f, 0x76, 0x5c, 0x99, 0x7b, 0xde, 0x35, 0xe2, 0xca, 0x22, - 0x7a, 0x5c, 0xb9, 0xa4, 0x89, 0x55, 0x6d, 0xad, 0xcc, 0xa5, 0xf4, 0x35, 0x7f, 0x51, 0xbb, 0x17, - 0xd3, 0x1f, 0xf5, 0x83, 0x26, 0x63, 0x51, 0xe2, 0xdd, 0xec, 0xe2, 0x42, 0xd7, 0xc9, 0x5f, 0x52, - 0x1b, 0x41, 0x32, 0x16, 0x04, 0x35, 0x09, 0xf0, 0x5e, 0x96, 0x53, 0x71, 0xba, 0xfe, 0xfa, 0xe2, - 0x22, 0x67, 0x24, 0x05, 0x09, 0x70, 0x23, 0x8e, 0x6d, 0x39, 0x92, 0x00, 0xfb, 0x38, 0x73, 0xfd, - 0xab, 0x91, 0x9e, 0xd2, 0x84, 0x15, 0x49, 0x96, 0xc3, 0xeb, 0x6c, 0x42, 0x53, 0x0b, 0x91, 0xeb, - 0x5f, 0x1d, 0xc8, 0x2c, 0x8c, 0x8d, 0xa8, 0x99, 0xf6, 0x6d, 0xf9, 0x1f, 0x74, 0x15, 0x2d, 0x31, - 0xb2, 0x30, 0x7a, 0x30, 0xb3, 0x0f, 0x6c, 0x84, 0x67, 0xa5, 0x30, 0x7e, 0xa7, 0xab, 0x25, 0x25, - 0xc8, 0x3e, 0xd0, 0x25, 0xcc, 0x7e, 0xa6, 0xf9, 0x7d, 0x97, 0x5d, 0x17, 0xc2, 0xe8, 0xdd, 0xae, - 0x4a, 0x2b, 0x43, 0xf6, 0x33, 0x90, 0x51, 0x86, 0x7f, 0x12, 0xfd, 0x7f, 0x61, 0xb8, 0x62, 0xe5, - 0xf8, 0x96, 0x47, 0xa1, 0xb2, 0x6e, 0x9e, 0xdd, 0x46, 0xe5, 0xe6, 0x02, 0xa5, 0x1e, 0x1b, 0x67, - 0x35, 0x99, 0xd1, 0xf1, 0x7d, 0xa4, 0xc7, 0x85, 0x14, 0xb9, 0x40, 0xd9, 0xa5, 0xdc, 0x51, 0x71, - 0xcc, 0x52, 0x65, 0xdd, 0x53, 0x43, 0x2d, 0x0c, 0x8d, 0x0a, 0x1b, 0x32, 0xc9, 0xcc, 0x31, 0x59, - 0x66, 0x33, 0xbd, 0xe0, 0xc8, 0xb8, 0x55, 0x83, 0x64, 0xc6, 0x30, 0xb1, 0x05, 0x21, 0xc9, 0x0c, - 0x0a, 0x2b, 0x9f, 0xff, 0x3c, 0x8a, 0xee, 0x18, 0x66, 0xbf, 0x3d, 0x39, 0x3b, 0x28, 0x2e, 0x58, - 0x93, 0xfa, 0x1c, 0x66, 0xc5, 0x55, 0x3d, 0xfe, 0x02, 0x33, 0xe9, 0xe7, 0x75, 0x51, 0xbe, 0xbc, - 0xb1, 0x9e, 0xc9, 0x5a, 0xdb, 0x63, 0x25, 0xf3, 0x6c, 0x59, 0x6a, 0x80, 0xac, 0x55, 0x9f, 0x3e, - 0x41, 0x0e, 0xc9, 0x5a, 0x43, 0xbc, 0xe9, 0x62, 0xed, 0x3c, 0x67, 0x05, 0xec, 0x62, 0x63, 0xa1, - 0x11, 0x22, 0x5d, 0xdc, 0x81, 0x4c, 0x3c, 0x6e, 0x45, 0xf2, 0x04, 0x64, 0x3b, 0xcf, 0x41, 0x3c, - 0xd6, 0xaa, 0x1a, 0x40, 0xe2, 0xb1, 0x17, 0x54, 0x7e, 0x4e, 0xa3, 0xef, 0x34, 0x4d, 0x7a, 0x52, - 0xd1, 0x65, 0x46, 0xe1, 0x35, 0x08, 0x4b, 0x82, 0xcc, 0x7f, 0x97, 0x30, 0x33, 0xeb, 0xac, 0xa8, - 0xcb, 0x9c, 0xd4, 0x97, 0xea, 0xc1, 0xb8, 0x5b, 0xe7, 0x56, 0x08, 0x1f, 0x8d, 0x3f, 0xe8, 0xa1, - 0x4c, 0x50, 0x6f, 0x65, 0x3a, 0xc4, 0x3c, 0xf4, 0xab, 0x76, 0xc2, 0xcc, 0x5a, 0x2f, 0x67, 0x4e, - 0x9f, 0xf7, 0x49, 0x9e, 0xd3, 0x6a, 0xd5, 0xca, 0x8e, 0x48, 0x91, 0x5d, 0xd0, 0x9a, 0x83, 0xd3, - 0x67, 0x45, 0xc5, 0x10, 0x43, 0x4e, 0x9f, 0x03, 0xb8, 0xc9, 0xe6, 0x81, 0xe7, 0x83, 0x22, 0xa5, - 0xef, 0x40, 0x36, 0x0f, 0xed, 0x08, 0x06, 0xc9, 0xe6, 0x31, 0xd6, 0x9c, 0xc2, 0xbe, 0xcc, 0x59, - 0x72, 0xa5, 0x96, 0x00, 0xb7, 0x83, 0x85, 0x04, 0xae, 0x01, 0x77, 0x43, 0x88, 0x59, 0x04, 0x84, - 0xe0, 0x94, 0x96, 0x39, 0x49, 0xe0, 0x5d, 0x18, 0xa9, 0xa3, 0x64, 0xc8, 0x22, 0x00, 0x19, 0x50, - 0x5c, 0x75, 0xc7, 0xc6, 0x57, 0x5c, 0x70, 0xc5, 0xe6, 0x6e, 0x08, 0x31, 0xcb, 0xa0, 0x10, 0x4c, - 0xca, 0x3c, 0xe3, 0x60, 0x1a, 0x48, 0x0d, 0x21, 0x41, 0xa6, 0x81, 0x4b, 0x00, 0x93, 0x47, 0xb4, - 0x9a, 0x51, 0xaf, 0x49, 0x21, 0x09, 0x9a, 0x6c, 0x09, 0x73, 0x65, 0x52, 0xd6, 0x9d, 0x95, 0x2b, - 0x70, 0x65, 0x52, 0x55, 0x8b, 0x95, 0x2b, 0xe4, 0xca, 0xa4, 0x03, 0x80, 0x22, 0x9e, 0x90, 0x9a, - 0xfb, 0x8b, 0x28, 0x24, 0xc1, 0x22, 0xb6, 0x84, 0x59, 0xa3, 0x65, 0x11, 0x17, 0x1c, 0xac, 0xd1, - 0xaa, 0x00, 0xd6, 0xd3, 0xe0, 0xdb, 0xa8, 0xdc, 0x44, 0x12, 0xd9, 0x2b, 0x94, 0xef, 0x65, 0x34, - 0x4f, 0x6b, 0x10, 0x49, 0x54, 0xbb, 0xb7, 0x52, 0x24, 0x92, 0x74, 0x29, 0x30, 0x94, 0xd4, 0x59, - 0xb5, 0xaf, 0x76, 0xe0, 0x98, 0xfa, 0x6e, 0x08, 0x31, 0xf1, 0xa9, 0x2d, 0xf4, 0x0e, 0xa9, 0xaa, - 0xac, 0x59, 0xfc, 0x1f, 0xfa, 0x0b, 0xd4, 0xca, 0x91, 0xf8, 0xe4, 0xe3, 0xc0, 0xf4, 0x6a, 0x03, - 0xb7, 0xaf, 0x60, 0x30, 0x74, 0xdf, 0x0b, 0x32, 0x26, 0xe3, 0x14, 0x12, 0xeb, 0x71, 0xa6, 0xaf, - 0x35, 0x3d, 0x4f, 0x33, 0x1f, 0xf6, 0x61, 0xd6, 0x2b, 0x0d, 0xda, 0xc5, 0x11, 0x5b, 0xd2, 0x29, - 0x7b, 0xf5, 0x2e, 0xab, 0x79, 0x56, 0xcc, 0xd4, 0xca, 0xfd, 0x1c, 0xb1, 0xe4, 0x83, 0x91, 0x57, - 0x1a, 0x7a, 0x95, 0x4c, 0x02, 0x01, 0xca, 0x72, 0x4c, 0xaf, 0xbd, 0x09, 0x04, 0xb4, 0xa8, 0x39, - 0x24, 0x81, 0x08, 0xf1, 0xe6, 0x1c, 0x45, 0x3b, 0x57, 0xef, 0x7d, 0x4e, 0x59, 0x9b, 0xcb, 0x61, - 0xd6, 0x20, 0x88, 0x6c, 0x65, 0x83, 0x0a, 0x66, 0x7f, 0xa9, 0xfd, 0x9b, 0x29, 0xf6, 0x08, 0xb1, - 0xd3, 0x9d, 0x66, 0x8f, 0x07, 0x90, 0x1e, 0x57, 0xe6, 0x99, 0x3c, 0xe6, 0xaa, 0xfb, 0x48, 0xfe, - 0xf1, 0x00, 0xd2, 0x3a, 0x93, 0xb1, 0xab, 0xf5, 0x92, 0x24, 0x57, 0xb3, 0x8a, 0x2d, 0x8a, 0x74, - 0x87, 0xe5, 0xac, 0x02, 0x67, 0x32, 0x4e, 0xa9, 0x01, 0x8a, 0x9c, 0xc9, 0xf4, 0xa8, 0x98, 0x0c, - 0xce, 0x2e, 0xc5, 0x76, 0x9e, 0xcd, 0xe0, 0x8e, 0xda, 0x31, 0x24, 0x00, 0x24, 0x83, 0xf3, 0x82, - 0x9e, 0x41, 0x24, 0x77, 0xdc, 0x3c, 0x4b, 0x48, 0x2e, 0xfd, 0x6d, 0xe1, 0x66, 0x1c, 0xb0, 0x77, - 0x10, 0x79, 0x14, 0x3c, 0xf5, 0x9c, 0x2e, 0xaa, 0xe2, 0xa0, 0xe0, 0x0c, 0xad, 0x67, 0x0b, 0xf4, - 0xd6, 0xd3, 0x02, 0x41, 0x58, 0x9d, 0xd2, 0x77, 0x4d, 0x69, 0x9a, 0x7f, 0x7c, 0x61, 0xb5, 0xf9, - 0x3d, 0x56, 0xf2, 0x50, 0x58, 0x05, 0x1c, 0xa8, 0x8c, 0x72, 0x22, 0x07, 0x4c, 0x40, 0xdb, 0x1d, - 0x26, 0x8f, 0xfa, 0x41, 0xbf, 0x9f, 0x09, 0x5f, 0xe5, 0x34, 0xe4, 0x47, 0x00, 0x43, 0xfc, 0xb4, - 0xa0, 0x39, 0x6e, 0x71, 0xea, 0x73, 0x49, 0x93, 0xab, 0xce, 0x15, 0x23, 0xb7, 0xa0, 0x12, 0x41, - 0x8e, 0x5b, 0x10, 0xd4, 0xdf, 0x45, 0x07, 0x09, 0x2b, 0x42, 0x5d, 0xd4, 0xc8, 0x87, 0x74, 0x91, - 0xe2, 0xcc, 0xe6, 0x57, 0x4b, 0xd5, 0xc8, 0x94, 0xdd, 0xb4, 0x8e, 0x58, 0xb0, 0x21, 0x64, 0xf3, - 0x8b, 0xc2, 0x26, 0x27, 0x87, 0x3e, 0x8f, 0xba, 0xf7, 0xaf, 0x3b, 0x56, 0x8e, 0xf0, 0xfb, 0xd7, - 0x18, 0x8b, 0x57, 0x52, 0x8e, 0x91, 0x1e, 0x2b, 0xee, 0x38, 0xd9, 0x18, 0x06, 0x9b, 0x2d, 0x8f, - 0xe3, 0x73, 0x27, 0xa7, 0xa4, 0x92, 0x5e, 0x37, 0x03, 0x86, 0x0c, 0x86, 0x6c, 0x79, 0x02, 0x38, - 0x08, 0x61, 0x8e, 0xe7, 0x1d, 0x56, 0x70, 0x5a, 0x70, 0x5f, 0x08, 0x73, 0x8d, 0x29, 0x30, 0x14, - 0xc2, 0x30, 0x05, 0x30, 0x6e, 0xc5, 0x79, 0x10, 0xe5, 0xc7, 0x64, 0xee, 0xcd, 0xd8, 0xe4, 0x59, - 0x8f, 0x94, 0x87, 0xc6, 0x2d, 0xe0, 0xac, 0x87, 0x7c, 0xb6, 0x97, 0x29, 0xa9, 0x66, 0xfa, 0x74, - 0x23, 0x1d, 0x3f, 0xc5, 0xed, 0xb8, 0x24, 0xf2, 0x90, 0x2f, 0xac, 0x01, 0xc2, 0xce, 0xc1, 0x9c, - 0xcc, 0x74, 0x4d, 0x3d, 0x35, 0x10, 0xf2, 0x4e, 0x55, 0x1f, 0xf5, 0x83, 0xc0, 0xcf, 0x9b, 0x2c, - 0xa5, 0x2c, 0xe0, 0x47, 0xc8, 0x87, 0xf8, 0x81, 0x20, 0xc8, 0xde, 0x9a, 0x7a, 0xcb, 0x1d, 0xdd, - 0x76, 0x91, 0xaa, 0x7d, 0x6c, 0x8c, 0x34, 0x0f, 0xe0, 0x42, 0xd9, 0x1b, 0xc2, 0x83, 0x39, 0xda, - 0x1e, 0xd0, 0x86, 0xe6, 0xa8, 0x3e, 0x7f, 0x1d, 0x32, 0x47, 0x7d, 0xb0, 0xf2, 0xf9, 0x33, 0x35, - 0x47, 0x77, 0x09, 0x27, 0x4d, 0xde, 0xfe, 0x26, 0xa3, 0xd7, 0x6a, 0x23, 0xec, 0xa9, 0x6f, 0x4b, - 0xc5, 0xe2, 0xc5, 0x3b, 0xb0, 0x2b, 0xde, 0x1a, 0xcc, 0x07, 0x7c, 0xab, 0x1d, 0x42, 0xaf, 0x6f, - 0xb0, 0x55, 0xd8, 0x1a, 0xcc, 0x07, 0x7c, 0xab, 0x37, 0x7a, 0x7b, 0x7d, 0x83, 0xd7, 0x7a, 0xb7, - 0x06, 0xf3, 0xca, 0xf7, 0x5f, 0xb6, 0x13, 0xd7, 0x76, 0xde, 0xe4, 0x61, 0x09, 0xcf, 0x96, 0xd4, - 0x97, 0x4e, 0xba, 0xf6, 0x34, 0x1a, 0x4a, 0x27, 0x71, 0x15, 0xeb, 0x33, 0x30, 0xbe, 0x52, 0x9c, - 0xb0, 0x3a, 0x13, 0x0f, 0xe9, 0x9f, 0x0f, 0x30, 0xda, 0xc2, 0xa1, 0x4d, 0x53, 0x48, 0xc9, 0x3c, - 0x6e, 0x74, 0x50, 0x73, 0xa3, 0x78, 0x23, 0x60, 0xaf, 0x7b, 0xb1, 0x78, 0x73, 0x20, 0x6d, 0x1e, - 0xfc, 0x39, 0x8c, 0xfd, 0xc4, 0x31, 0xd4, 0xab, 0xde, 0x87, 0x8e, 0x4f, 0x87, 0x2b, 0x28, 0xf7, - 0x7f, 0xdd, 0xee, 0x2b, 0xa0, 0x7f, 0x35, 0x09, 0x9e, 0x0d, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x1b, - 0xe9, 0xa8, 0x82, 0xfc, 0x7d, 0xbb, 0x81, 0x6e, 0x51, 0xf1, 0x5e, 0xc5, 0xeb, 0x2a, 0xa5, 0x95, - 0x9a, 0x13, 0xa1, 0x6e, 0x35, 0x30, 0x9c, 0x19, 0x2f, 0x6e, 0xa8, 0x65, 0x7d, 0x14, 0xc8, 0x81, - 0xd5, 0xfb, 0x7f, 0x56, 0x79, 0x42, 0x96, 0x2d, 0x1a, 0x16, 0xe8, 0x8b, 0x9b, 0xaa, 0x61, 0x73, - 0xc5, 0x82, 0xc5, 0x37, 0x06, 0x9e, 0x0f, 0x34, 0xec, 0x7c, 0x75, 0xe0, 0xf3, 0x9b, 0x29, 0xa9, - 0xb2, 0xfc, 0xc7, 0x28, 0x7a, 0xe0, 0xb0, 0xe6, 0x79, 0x02, 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, - 0xa6, 0xa4, 0x0b, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xf9, 0x82, 0x8e, 0xa3, 0xb2, 0x97, 0xe5, 0x9c, - 0x56, 0xdd, 0x2f, 0xe8, 0xb8, 0x76, 0x25, 0x15, 0xe3, 0x5f, 0xd0, 0x09, 0xe0, 0xd6, 0x17, 0x74, - 0x3c, 0x9e, 0xbd, 0x5f, 0xd0, 0xf1, 0x5a, 0x0b, 0x7e, 0x41, 0x27, 0xac, 0x81, 0x85, 0xf7, 0xb6, - 0x08, 0xf2, 0xdc, 0x7a, 0x90, 0x45, 0xf7, 0x18, 0xfb, 0xd9, 0x4d, 0x54, 0x90, 0x05, 0x4e, 0x72, - 0xe2, 0x9e, 0xdb, 0x80, 0x36, 0x75, 0xee, 0xba, 0x6d, 0x0d, 0xe6, 0x95, 0xef, 0x9f, 0xaa, 0xdd, - 0x8d, 0x0e, 0xe7, 0xac, 0x12, 0x5f, 0x4f, 0x5a, 0x0f, 0x85, 0xe7, 0xc6, 0x82, 0xdd, 0xf3, 0x1b, - 0xc3, 0x60, 0xa4, 0xba, 0x0d, 0xa1, 0x3a, 0x3d, 0xee, 0x33, 0x04, 0xba, 0x7c, 0x6b, 0x30, 0x8f, - 0x2c, 0x23, 0xd2, 0xb7, 0xec, 0xed, 0x01, 0xc6, 0xdc, 0xbe, 0x7e, 0x3a, 0x5c, 0x41, 0xb9, 0x5f, - 0xaa, 0xb4, 0xd1, 0x76, 0x2f, 0xfa, 0x79, 0xb3, 0xcf, 0xd4, 0xc4, 0xe9, 0xe6, 0x78, 0x28, 0x1e, - 0x4a, 0x20, 0xec, 0x25, 0xb4, 0x2f, 0x81, 0xf0, 0x2e, 0xa3, 0x9f, 0xdf, 0x4c, 0x49, 0x95, 0xe5, - 0x9f, 0x46, 0xd1, 0x6d, 0xb4, 0x2c, 0x6a, 0x1c, 0x7c, 0x31, 0xd4, 0x32, 0x18, 0x0f, 0x5f, 0xde, - 0x58, 0x4f, 0x15, 0xea, 0x5f, 0x47, 0xd1, 0x9d, 0x40, 0xa1, 0xe4, 0x00, 0xb9, 0x81, 0x75, 0x77, - 0xa0, 0xfc, 0xf0, 0xe6, 0x8a, 0xd8, 0x72, 0x6f, 0xe3, 0x93, 0xee, 0xa7, 0x65, 0x02, 0xb6, 0x27, - 0xf8, 0xa7, 0x65, 0xfa, 0xb5, 0xe0, 0x21, 0x0f, 0x39, 0x6f, 0x37, 0x5d, 0xde, 0x43, 0x1e, 0x71, - 0x43, 0x0d, 0xec, 0x39, 0xd6, 0x7a, 0x39, 0x9f, 0x93, 0x57, 0xef, 0x4a, 0x52, 0xa4, 0xb8, 0x13, - 0x29, 0xef, 0x77, 0xa2, 0x39, 0x78, 0x38, 0xd6, 0x48, 0x4f, 0x59, 0xbb, 0x91, 0x7a, 0x8c, 0xe9, - 0x6b, 0x24, 0x78, 0x38, 0xd6, 0x41, 0x11, 0x6f, 0x2a, 0x6b, 0x0c, 0x79, 0x03, 0xc9, 0xe2, 0x93, - 0x21, 0x28, 0x48, 0xd1, 0xb5, 0x37, 0x7d, 0xe6, 0xbe, 0x11, 0xb2, 0xd2, 0x39, 0x77, 0xdf, 0x1c, - 0x48, 0x23, 0x6e, 0x27, 0x94, 0x7f, 0x45, 0x49, 0x4a, 0xab, 0xa0, 0x5b, 0x4d, 0x0d, 0x72, 0x6b, - 0xd3, 0x3e, 0xb7, 0x3b, 0x2c, 0x5f, 0xcc, 0x0b, 0xd5, 0x99, 0xa8, 0x5b, 0x9b, 0xea, 0x77, 0x0b, - 0x68, 0x78, 0x2c, 0x68, 0xdc, 0x8a, 0xf4, 0xf2, 0x49, 0xd8, 0x8c, 0x93, 0x55, 0xae, 0x0f, 0x62, - 0xf1, 0x7a, 0xaa, 0x61, 0xd4, 0x53, 0x4f, 0x30, 0x92, 0x36, 0x07, 0xd2, 0xf0, 0x7c, 0xce, 0x72, - 0xab, 0xc7, 0xd3, 0x56, 0x8f, 0xad, 0xce, 0x90, 0x7a, 0x3a, 0x5c, 0x01, 0x9e, 0x86, 0xaa, 0x51, - 0x75, 0x98, 0xd5, 0x7c, 0x2f, 0xcb, 0xf3, 0xf1, 0x7a, 0x60, 0x98, 0xb4, 0x50, 0xf0, 0x34, 0xd4, - 0x03, 0x23, 0x23, 0xb9, 0x3d, 0x3d, 0x2c, 0xc6, 0x7d, 0x76, 0x04, 0x35, 0x68, 0x24, 0xdb, 0x34, - 0x38, 0xd1, 0xb2, 0x9a, 0x5a, 0xd7, 0x36, 0x0e, 0x37, 0x5c, 0xa7, 0xc2, 0x5b, 0x83, 0x79, 0xf0, - 0xb8, 0x5d, 0x50, 0x62, 0x65, 0xb9, 0x8f, 0x99, 0x70, 0x56, 0x92, 0x07, 0x3d, 0x14, 0x38, 0x15, - 0x94, 0xd3, 0xe8, 0x6d, 0x96, 0xce, 0x28, 0xf7, 0x3e, 0x29, 0xb2, 0x81, 0xe0, 0x93, 0x22, 0x00, - 0x82, 0xae, 0x93, 0xbf, 0xeb, 0xe3, 0xd0, 0x83, 0xd4, 0xd7, 0x75, 0x4a, 0xd9, 0xa2, 0x42, 0x5d, - 0xe7, 0xa5, 0x41, 0x34, 0xd0, 0x6e, 0xd5, 0xab, 0xf1, 0x4f, 0x42, 0x66, 0xc0, 0xfb, 0xf1, 0xeb, - 0x83, 0x58, 0xb0, 0xa2, 0x18, 0x87, 0xd9, 0x3c, 0xe3, 0xbe, 0x15, 0xc5, 0xb2, 0xd1, 0x20, 0xa1, - 0x15, 0xa5, 0x8b, 0x62, 0xd5, 0x6b, 0x72, 0x84, 0x83, 0x34, 0x5c, 0x3d, 0xc9, 0x0c, 0xab, 0x9e, - 0x66, 0x3b, 0x0f, 0x36, 0x0b, 0x3d, 0x64, 0xf8, 0xa5, 0xda, 0x2c, 0x7b, 0xc6, 0xb6, 0x78, 0x65, - 0x12, 0x82, 0xa1, 0xa8, 0x83, 0x29, 0xc0, 0x03, 0xfb, 0x86, 0x6b, 0x9f, 0xbd, 0x96, 0x25, 0x25, - 0x15, 0x29, 0x12, 0xef, 0xe6, 0x54, 0x18, 0xec, 0x90, 0xa1, 0xcd, 0x29, 0xaa, 0x01, 0x1e, 0x9b, - 0xbb, 0x2f, 0x3b, 0x7a, 0xa6, 0x82, 0x7e, 0xab, 0xd0, 0x7d, 0xd7, 0xf1, 0xf1, 0x00, 0x12, 0x3e, - 0x36, 0x6f, 0x01, 0x7d, 0xf0, 0x2d, 0x9d, 0x7e, 0x16, 0x30, 0xe5, 0xa2, 0xa1, 0x8d, 0x30, 0xae, - 0x02, 0x06, 0xb5, 0x4e, 0x70, 0x29, 0xff, 0x09, 0x5d, 0xf9, 0x06, 0xb5, 0xc9, 0x4f, 0x05, 0x12, - 0x1a, 0xd4, 0x5d, 0x14, 0xe4, 0x99, 0xf6, 0x3e, 0xe8, 0x61, 0x40, 0xdf, 0xde, 0xfa, 0xac, 0xf5, - 0x72, 0x60, 0xe6, 0xec, 0x66, 0x4b, 0xe7, 0x39, 0x81, 0xa7, 0xa0, 0xbb, 0xd9, 0xd2, 0xff, 0x98, - 0x60, 0x7d, 0x10, 0x0b, 0x1f, 0xc9, 0x13, 0x4e, 0xdf, 0xb5, 0xcf, 0xca, 0x3d, 0xc5, 0x15, 0xf2, - 0xce, 0xc3, 0xf2, 0x47, 0xfd, 0xa0, 0xb9, 0x00, 0x7b, 0x52, 0xb1, 0x84, 0xd6, 0xb5, 0xfa, 0xde, - 0x9e, 0x7b, 0xc3, 0x48, 0xc9, 0x62, 0xf0, 0xb5, 0xbd, 0xfb, 0x61, 0x48, 0xd9, 0xfe, 0x2a, 0x7a, - 0xff, 0x90, 0xcd, 0x26, 0xb4, 0x48, 0xc7, 0x3f, 0x70, 0xaf, 0x9c, 0xb2, 0x59, 0xdc, 0xfc, 0xac, - 0xed, 0xdd, 0xc2, 0xc4, 0xe6, 0xd2, 0xdc, 0x2e, 0x3d, 0x5f, 0xcc, 0x26, 0x9c, 0x70, 0x70, 0x69, - 0x4e, 0xfc, 0x1e, 0x37, 0x02, 0xe4, 0xd2, 0x9c, 0x03, 0x00, 0x7b, 0xd3, 0x8a, 0x52, 0xaf, 0xbd, - 0x46, 0x10, 0xb4, 0xa7, 0x00, 0xb3, 0xea, 0x6a, 0x7b, 0x4d, 0x62, 0x0b, 0x2f, 0xb9, 0x19, 0x1d, - 0x21, 0x45, 0x56, 0xdd, 0x2e, 0x65, 0x06, 0x83, 0xac, 0xbe, 0xf8, 0x62, 0xc6, 0x62, 0x3e, 0x27, - 0xd5, 0x0a, 0x0c, 0x06, 0x55, 0x4b, 0x0b, 0x40, 0x06, 0x83, 0x17, 0x34, 0xa3, 0xbc, 0x6d, 0xe6, - 0xe4, 0x6a, 0x9f, 0x55, 0x6c, 0xc1, 0xb3, 0x82, 0xc2, 0xaf, 0x26, 0xe8, 0x06, 0xb5, 0x19, 0x64, - 0x94, 0x63, 0xac, 0xc9, 0x0a, 0x05, 0x21, 0xef, 0xdf, 0x89, 0xaf, 0xd6, 0xd6, 0x9c, 0x55, 0xf0, - 0xf9, 0x9b, 0xb4, 0x02, 0x21, 0x24, 0x2b, 0x44, 0x61, 0xd0, 0xf7, 0x27, 0x59, 0x31, 0xf3, 0xf6, - 0xfd, 0x89, 0xfd, 0xcd, 0xc7, 0x3b, 0x38, 0x60, 0xe2, 0xbb, 0x6c, 0x34, 0xf9, 0x65, 0x22, 0xf5, - 0xee, 0xa3, 0xb7, 0xd1, 0x6d, 0x02, 0x89, 0xef, 0x7e, 0x12, 0xb8, 0x7a, 0x5d, 0xd2, 0x82, 0xa6, - 0xed, 0x2d, 0x33, 0x9f, 0x2b, 0x87, 0x08, 0xba, 0x82, 0xa4, 0x89, 0xaa, 0x42, 0x7e, 0xba, 0x28, - 0x4e, 0x2a, 0x76, 0x91, 0xe5, 0xb4, 0x02, 0x51, 0x55, 0xaa, 0x5b, 0x72, 0x24, 0xaa, 0xfa, 0x38, - 0x73, 0x5d, 0x41, 0x48, 0x9d, 0x4f, 0x2f, 0x4f, 0x2b, 0x92, 0xc0, 0xeb, 0x0a, 0xd2, 0x46, 0x17, - 0x43, 0x4e, 0xd2, 0x02, 0xb8, 0x95, 0x18, 0x48, 0xd7, 0xc5, 0x4a, 0x8c, 0x0f, 0xf5, 0xee, 0x9d, - 0xf8, 0x12, 0x62, 0x0d, 0x12, 0x03, 0x65, 0xce, 0x47, 0x22, 0x89, 0x41, 0x58, 0xc3, 0xcc, 0xb6, - 0x23, 0xca, 0xab, 0x2c, 0xa9, 0x27, 0x94, 0x9f, 0x90, 0x8a, 0xcc, 0x29, 0xa7, 0x15, 0x9c, 0x6d, - 0x0a, 0x89, 0x1d, 0x06, 0x99, 0x6d, 0x18, 0xab, 0x1c, 0xfe, 0x5e, 0xf4, 0x61, 0xb3, 0xd8, 0xd0, - 0x42, 0xfd, 0xa5, 0x82, 0x57, 0xe2, 0x4f, 0x9c, 0x8c, 0x3f, 0xd2, 0x36, 0x26, 0xbc, 0xa2, 0x64, - 0xde, 0xda, 0xfe, 0x40, 0xff, 0x2e, 0xc0, 0xa7, 0xa3, 0x66, 0x50, 0x1c, 0x33, 0x9e, 0x5d, 0x34, - 0x7b, 0x3b, 0xf5, 0xda, 0x0a, 0x18, 0x14, 0xb6, 0x38, 0x0e, 0x7c, 0x8c, 0xc0, 0xc7, 0x99, 0x60, - 0x67, 0x4b, 0x4f, 0x69, 0x99, 0xc3, 0x60, 0xe7, 0x68, 0x0b, 0x00, 0x09, 0x76, 0x5e, 0xd0, 0x8c, - 0x70, 0x5b, 0x3c, 0xa5, 0xe1, 0xca, 0x4c, 0xe9, 0xb0, 0xca, 0x4c, 0x9d, 0x37, 0x01, 0xf2, 0xe8, - 0xc3, 0x23, 0x3a, 0x3f, 0xa7, 0x55, 0x7d, 0x99, 0x95, 0xfb, 0xcd, 0x2a, 0x4f, 0xf8, 0x02, 0xbe, - 0x2b, 0x67, 0x88, 0x58, 0x23, 0x48, 0x2a, 0x84, 0xa0, 0x26, 0x9c, 0x1a, 0xe0, 0xa0, 0x3e, 0x26, - 0x73, 0x2a, 0x3e, 0xad, 0x30, 0x5e, 0xc7, 0x8c, 0x58, 0x10, 0x12, 0x4e, 0x51, 0xd8, 0x7a, 0xa9, - 0xc8, 0x30, 0xa7, 0x74, 0xd6, 0x8c, 0xb0, 0xea, 0x84, 0xac, 0xe6, 0xb4, 0xe0, 0xca, 0x24, 0x38, - 0x08, 0xb6, 0x4c, 0xfa, 0x79, 0xe4, 0x20, 0x78, 0x88, 0x9e, 0x35, 0xbf, 0x9d, 0x86, 0x3f, 0x61, - 0x15, 0x97, 0x7f, 0x87, 0xe4, 0xac, 0xca, 0xc1, 0xfc, 0x76, 0x1b, 0xd5, 0x21, 0x91, 0xf9, 0x1d, - 0xd6, 0xb0, 0x3e, 0xe0, 0xed, 0x94, 0xe1, 0x0d, 0xad, 0xf4, 0x38, 0x79, 0x35, 0x27, 0x59, 0xae, - 0x46, 0xc3, 0x8f, 0x02, 0xb6, 0x11, 0x1d, 0xe4, 0x03, 0xde, 0x43, 0x75, 0xad, 0x4f, 0x9e, 0x87, - 0x4b, 0x08, 0xce, 0xa5, 0x7b, 0xec, 0x23, 0xe7, 0xd2, 0xfd, 0x5a, 0x66, 0xbb, 0x68, 0x58, 0xc1, - 0xad, 0x04, 0xb1, 0xc3, 0x52, 0x78, 0x48, 0x65, 0xd9, 0x04, 0x20, 0xb2, 0x5d, 0x0c, 0x2a, 0x98, - 0xf5, 0xd5, 0x60, 0x7b, 0x59, 0x41, 0xf2, 0xec, 0x67, 0xf0, 0x86, 0xb3, 0x65, 0xa7, 0x25, 0x90, - 0xf5, 0xd5, 0x4f, 0xfa, 0x5c, 0xed, 0x53, 0x3e, 0xcd, 0x9a, 0xd0, 0xff, 0x28, 0xd0, 0x6e, 0x82, - 0xe8, 0x77, 0x65, 0x91, 0xd6, 0x47, 0x3a, 0x61, 0xb3, 0x6e, 0x97, 0xe5, 0xa4, 0x59, 0x9a, 0x4e, - 0x69, 0x42, 0xb3, 0x92, 0x8f, 0x5f, 0x84, 0xdb, 0x0a, 0xe0, 0xc8, 0xd3, 0xfd, 0x01, 0x6a, 0xd6, - 0x33, 0xe3, 0x26, 0x96, 0x4c, 0xe4, 0x1f, 0xe8, 0x3a, 0xab, 0x69, 0xa5, 0x56, 0xeb, 0x7d, 0xca, - 0xc1, 0xec, 0xb4, 0xb8, 0xd8, 0x02, 0x9b, 0x8a, 0x22, 0xb3, 0x33, 0xac, 0x61, 0x4e, 0x98, 0x2c, - 0xee, 0x94, 0xd6, 0x2c, 0x5f, 0x52, 0x71, 0xc9, 0x6d, 0x03, 0x35, 0x66, 0x51, 0xc8, 0x09, 0x13, - 0x4e, 0x9b, 0x94, 0xa7, 0xeb, 0x76, 0xbb, 0x58, 0x1d, 0xc0, 0xe7, 0xf4, 0x1e, 0x4b, 0x02, 0x43, - 0x52, 0x9e, 0x00, 0x6e, 0x9d, 0xc0, 0x56, 0x8c, 0xa4, 0x09, 0xa9, 0xf9, 0x09, 0x59, 0xe5, 0x8c, - 0xa4, 0x62, 0x5d, 0x87, 0x27, 0xb0, 0x2d, 0x13, 0xdb, 0x10, 0x76, 0x02, 0x8b, 0xc1, 0x66, 0x77, - 0xa9, 0xfe, 0xee, 0x98, 0xba, 0x40, 0x78, 0x0f, 0xa4, 0x49, 0xa2, 0xbc, 0xf0, 0xf2, 0xe0, 0xfd, - 0x30, 0x64, 0x5e, 0x7c, 0x92, 0x22, 0x91, 0x86, 0xdc, 0xf1, 0xe9, 0x38, 0x09, 0xc8, 0xa7, 0x01, - 0xc2, 0x7c, 0x0c, 0x41, 0xfe, 0xde, 0xfe, 0xe9, 0x0c, 0xae, 0x3e, 0x65, 0xbc, 0xe1, 0xd3, 0xb5, - 0xa1, 0xd8, 0xfe, 0xc2, 0xd9, 0xe6, 0x40, 0xda, 0x6c, 0x1e, 0x77, 0x2e, 0x09, 0xdf, 0x4e, 0xd3, - 0x23, 0x5a, 0x7b, 0xde, 0x62, 0x6e, 0x84, 0xb1, 0x91, 0x22, 0x9b, 0xc7, 0x2e, 0x65, 0x06, 0x7a, - 0x23, 0x7b, 0x95, 0x66, 0x5c, 0xc9, 0xda, 0x6b, 0xb9, 0x1b, 0x5d, 0x03, 0x5d, 0x0a, 0xa9, 0x15, - 0x4e, 0x9b, 0x58, 0xde, 0x30, 0x53, 0x36, 0x9b, 0xe5, 0x54, 0x41, 0xa7, 0x94, 0xc8, 0x2f, 0xb9, - 0x6d, 0x75, 0x6d, 0x79, 0x41, 0x24, 0x96, 0x07, 0x15, 0x4c, 0x1a, 0xd9, 0x60, 0xf2, 0x39, 0x48, - 0xdb, 0xb0, 0x6b, 0x5d, 0x33, 0x0e, 0x80, 0xa4, 0x91, 0x5e, 0xd0, 0xbc, 0x6c, 0xd5, 0x88, 0xf7, - 0x69, 0xdb, 0x12, 0xf0, 0xbb, 0x37, 0x42, 0xd9, 0x12, 0x23, 0x2f, 0x5b, 0x79, 0x30, 0xb3, 0x4f, - 0x00, 0x1e, 0x5e, 0xae, 0x0e, 0x52, 0xb8, 0x4f, 0x80, 0xfa, 0x82, 0x41, 0xf6, 0x09, 0x18, 0xeb, - 0x76, 0x9d, 0xfe, 0xc8, 0xef, 0x21, 0xa9, 0x4d, 0xe5, 0x3c, 0x5d, 0xe7, 0x05, 0x43, 0x5d, 0x87, - 0x29, 0xb8, 0x4d, 0x6a, 0x7f, 0x42, 0xd8, 0xd3, 0xa4, 0xbe, 0x4f, 0x07, 0x3f, 0xec, 0xc3, 0x4c, - 0x5c, 0xd2, 0x9b, 0x32, 0x71, 0x4f, 0xc6, 0xff, 0x09, 0x77, 0x29, 0x44, 0xe2, 0x52, 0x07, 0x92, - 0xb6, 0x5f, 0x7e, 0xfa, 0x5f, 0xdf, 0xdc, 0x1a, 0xfd, 0xe2, 0x9b, 0x5b, 0xa3, 0xff, 0xf9, 0xe6, - 0xd6, 0xe8, 0xe7, 0xdf, 0xde, 0x7a, 0xef, 0x17, 0xdf, 0xde, 0x7a, 0xef, 0xbf, 0xbf, 0xbd, 0xf5, - 0xde, 0xd7, 0xef, 0xab, 0xbf, 0x47, 0x79, 0xfe, 0xff, 0xc4, 0x5f, 0x95, 0x7c, 0xfe, 0x7f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xe5, 0xb3, 0x13, 0x72, 0xb3, 0x72, 0x00, 0x00, + // 5189 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x1d, 0x49, + 0x56, 0xc0, 0xc7, 0x2f, 0x0c, 0xf4, 0xb2, 0x03, 0xdc, 0x81, 0x61, 0x76, 0xd8, 0xcd, 0xd7, 0x24, + 0x71, 0x12, 0xdb, 0xd7, 0x99, 0x64, 0x32, 0xb3, 0xda, 0x45, 0x42, 0x8e, 0x1d, 0x7b, 0xcc, 0xda, + 0x8e, 0xf1, 0xb5, 0x13, 0x69, 0x24, 0x24, 0xca, 0xdd, 0xe5, 0xeb, 0xc6, 0x7d, 0xbb, 0x7a, 0xbb, + 0xeb, 0x5e, 0xe7, 0x2e, 0x02, 0x81, 0x40, 0x20, 0x10, 0x88, 0x15, 0x5f, 0xaf, 0x48, 0xfc, 0x35, + 0x3c, 0xee, 0x23, 0x8f, 0x68, 0x46, 0xfc, 0x1f, 0xa8, 0xeb, 0xbb, 0x4e, 0xd7, 0xa9, 0x6e, 0xef, + 0x53, 0xa2, 0x7b, 0x7e, 0xe7, 0x9c, 0xfa, 0x3c, 0x75, 0xaa, 0xba, 0xba, 0x9d, 0xdc, 0xae, 0xce, + 0x37, 0xab, 0x9a, 0x71, 0xd6, 0x6c, 0x36, 0xb4, 0x5e, 0xe4, 0x29, 0xd5, 0xff, 0x8e, 0xc5, 0xcf, + 0xa3, 0xf7, 0x49, 0xb9, 0xe4, 0xcb, 0x8a, 0x7e, 0xf2, 0xb1, 0x25, 0x53, 0x36, 0x9b, 0x91, 0x32, + 0x6b, 0x24, 0xf2, 0xc9, 0x47, 0x56, 0x42, 0x17, 0xb4, 0xe4, 0xea, 0xf7, 0x67, 0xdf, 0xfe, 0xdf, + 0x4a, 0xf2, 0xc1, 0x76, 0x91, 0xd3, 0x92, 0x6f, 0x2b, 0x8d, 0xd1, 0xd7, 0xc9, 0x77, 0xb7, 0xaa, + 0x6a, 0x8f, 0xf2, 0x37, 0xb4, 0x6e, 0x72, 0x56, 0x8e, 0x3e, 0x1d, 0x2b, 0x07, 0xe3, 0x93, 0x2a, + 0x1d, 0x6f, 0x55, 0xd5, 0xd8, 0x0a, 0xc7, 0x27, 0xf4, 0xa7, 0x73, 0xda, 0xf0, 0x4f, 0xee, 0xc7, + 0xa1, 0xa6, 0x62, 0x65, 0x43, 0x47, 0x17, 0xc9, 0x6f, 0x6d, 0x55, 0xd5, 0x84, 0xf2, 0x1d, 0xda, + 0x56, 0x60, 0xc2, 0x09, 0xa7, 0xa3, 0xd5, 0x8e, 0xaa, 0x0f, 0x18, 0x1f, 0x8f, 0xfa, 0x41, 0xe5, + 0xe7, 0x34, 0xf9, 0x4e, 0xeb, 0xe7, 0x72, 0xce, 0x33, 0x76, 0x5d, 0x8e, 0xee, 0x76, 0x15, 0x95, + 0xc8, 0xd8, 0xbe, 0x17, 0x43, 0x94, 0xd5, 0xb7, 0xc9, 0xaf, 0xbf, 0x25, 0x45, 0x41, 0xf9, 0x76, + 0x4d, 0xdb, 0x82, 0xfb, 0x3a, 0x52, 0x34, 0x96, 0x32, 0x63, 0xf7, 0xd3, 0x28, 0xa3, 0x0c, 0x7f, + 0x9d, 0x7c, 0x57, 0x4a, 0x4e, 0x68, 0xca, 0x16, 0xb4, 0x1e, 0x05, 0xb5, 0x94, 0x10, 0x69, 0xf2, + 0x0e, 0x04, 0x6d, 0x6f, 0xb3, 0x72, 0x41, 0x6b, 0x1e, 0xb6, 0xad, 0x84, 0x71, 0xdb, 0x16, 0x52, + 0xb6, 0xff, 0x7e, 0x25, 0xf9, 0xfe, 0x56, 0x9a, 0xb2, 0x79, 0xc9, 0x0f, 0x58, 0x4a, 0x8a, 0x83, + 0xbc, 0xbc, 0x3a, 0xa2, 0xd7, 0xdb, 0x97, 0x2d, 0x5f, 0x4e, 0xe9, 0xe8, 0xb9, 0xdf, 0xaa, 0x12, + 0x1d, 0x1b, 0x76, 0xec, 0xc2, 0xc6, 0xf7, 0xe7, 0x37, 0x53, 0x52, 0x65, 0xf9, 0xe7, 0x95, 0xe4, + 0x16, 0x2c, 0xcb, 0x84, 0x15, 0x0b, 0x6a, 0x4b, 0xf3, 0xa2, 0xc7, 0xb0, 0x8f, 0x9b, 0xf2, 0x7c, + 0x71, 0x53, 0x35, 0x55, 0xa2, 0x22, 0xf9, 0xd0, 0x1d, 0x2e, 0x13, 0xda, 0x88, 0xe9, 0xf4, 0x18, + 0x1f, 0x11, 0x0a, 0x31, 0x9e, 0x9f, 0x0c, 0x41, 0x95, 0xb7, 0x3c, 0x19, 0x29, 0x6f, 0x05, 0x6b, + 0x8c, 0xb3, 0x47, 0x41, 0x0b, 0x0e, 0x61, 0x7c, 0x3d, 0x1e, 0x40, 0x2a, 0x57, 0x7f, 0x92, 0xfc, + 0xc6, 0x5b, 0x56, 0x5f, 0x35, 0x15, 0x49, 0xa9, 0x9a, 0x0a, 0x0f, 0x7c, 0x6d, 0x2d, 0x85, 0xb3, + 0xe1, 0x61, 0x1f, 0xe6, 0x0c, 0x5a, 0x2d, 0x7c, 0x5d, 0x51, 0x18, 0x83, 0xac, 0x62, 0x2b, 0xc4, + 0x06, 0x2d, 0x84, 0x94, 0xed, 0xab, 0x64, 0x64, 0x6d, 0x9f, 0xff, 0x29, 0x4d, 0xf9, 0x56, 0x96, + 0xc1, 0x5e, 0xb1, 0xba, 0x82, 0x18, 0x6f, 0x65, 0x19, 0xd6, 0x2b, 0x61, 0x54, 0x39, 0xbb, 0x4e, + 0x3e, 0x02, 0xce, 0x0e, 0xf2, 0x46, 0x38, 0xdc, 0x88, 0x5b, 0x51, 0x98, 0x71, 0x3a, 0x1e, 0x8a, + 0x2b, 0xc7, 0x7f, 0xb9, 0x92, 0x7c, 0x2f, 0xe0, 0xf9, 0x84, 0xce, 0xd8, 0x82, 0x8e, 0x9e, 0xf6, + 0x5b, 0x93, 0xa4, 0xf1, 0xff, 0xd9, 0x0d, 0x34, 0x02, 0xc3, 0x64, 0x42, 0x0b, 0x9a, 0x72, 0x74, + 0x98, 0x48, 0x71, 0xef, 0x30, 0x31, 0x98, 0x33, 0xc3, 0xb4, 0x70, 0x8f, 0xf2, 0xed, 0x79, 0x5d, + 0xd3, 0x92, 0xa3, 0x7d, 0x69, 0x91, 0xde, 0xbe, 0xf4, 0xd0, 0x40, 0x7d, 0xf6, 0x28, 0xdf, 0x2a, + 0x0a, 0xb4, 0x3e, 0x52, 0xdc, 0x5b, 0x1f, 0x83, 0x29, 0x0f, 0x69, 0xf2, 0x9b, 0x4e, 0x8b, 0xf1, + 0xfd, 0xf2, 0x82, 0x8d, 0xf0, 0xb6, 0x10, 0x72, 0xe3, 0x63, 0xb5, 0x97, 0x0b, 0x54, 0xe3, 0xd5, + 0xbb, 0x8a, 0xd5, 0x78, 0xb7, 0x48, 0x71, 0x6f, 0x35, 0x0c, 0xa6, 0x3c, 0xfc, 0x71, 0xf2, 0x81, + 0x8a, 0x92, 0x7a, 0x3d, 0xbb, 0x1f, 0x0c, 0xa1, 0x70, 0x41, 0x7b, 0xd0, 0x43, 0xd9, 0xe0, 0xa0, + 0x64, 0x2a, 0xf8, 0x7c, 0x1a, 0xd4, 0x03, 0xa1, 0xe7, 0x7e, 0x1c, 0xea, 0xd8, 0xde, 0xa1, 0x05, + 0x45, 0x6d, 0x4b, 0x61, 0x8f, 0x6d, 0x03, 0x29, 0xdb, 0x75, 0xf2, 0x3b, 0xa6, 0x59, 0xda, 0x75, + 0x54, 0xc8, 0xdb, 0x20, 0xbd, 0x86, 0xd4, 0xdb, 0x85, 0x8c, 0xaf, 0xf5, 0x61, 0x70, 0xa7, 0x3e, + 0x6a, 0x06, 0x86, 0xeb, 0x03, 0xe6, 0xdf, 0xfd, 0x38, 0xa4, 0x6c, 0xff, 0xc3, 0x4a, 0xf2, 0x03, + 0x25, 0x7b, 0x55, 0x92, 0xf3, 0x82, 0x8a, 0x25, 0xf1, 0x88, 0xf2, 0x6b, 0x56, 0x5f, 0x4d, 0x96, + 0x65, 0x8a, 0x2c, 0xff, 0x61, 0xb8, 0x67, 0xf9, 0x47, 0x95, 0x9c, 0x8c, 0x4f, 0x55, 0x94, 0xb3, + 0x0a, 0x66, 0x7c, 0xba, 0x06, 0x9c, 0x55, 0x58, 0xc6, 0xe7, 0x23, 0x1d, 0xab, 0x87, 0x6d, 0xd8, + 0x0c, 0x5b, 0x3d, 0x74, 0xe3, 0xe4, 0xbd, 0x18, 0x62, 0xc3, 0x96, 0x1e, 0xc0, 0xac, 0xbc, 0xc8, + 0xa7, 0x67, 0x55, 0xd6, 0x0e, 0xe3, 0xc7, 0xe1, 0x11, 0xea, 0x20, 0x48, 0xd8, 0x42, 0x50, 0xe5, + 0xed, 0x9f, 0x6c, 0x62, 0xa4, 0xa6, 0xd2, 0x6e, 0xcd, 0x66, 0x07, 0x74, 0x4a, 0xd2, 0xa5, 0x9a, + 0xff, 0x9f, 0xc7, 0x26, 0x1e, 0xa4, 0x4d, 0x21, 0x5e, 0xdc, 0x50, 0x4b, 0x95, 0xe7, 0x3f, 0x57, + 0x92, 0xfb, 0xba, 0xfa, 0x97, 0xa4, 0x9c, 0x52, 0xd5, 0x9f, 0xb2, 0xf4, 0x5b, 0x65, 0x76, 0x42, + 0x1b, 0x4e, 0x6a, 0x3e, 0xfa, 0x51, 0xb8, 0x92, 0x31, 0x1d, 0x53, 0xb6, 0x1f, 0xff, 0x52, 0xba, + 0xb6, 0xd7, 0x27, 0x6d, 0x60, 0x53, 0x21, 0xc0, 0xef, 0x75, 0x21, 0x81, 0x01, 0xe0, 0x5e, 0x0c, + 0xb1, 0xbd, 0x2e, 0x04, 0xfb, 0xe5, 0x22, 0xe7, 0x74, 0x8f, 0x96, 0xb4, 0xee, 0xf6, 0xba, 0x54, + 0xf5, 0x11, 0xa4, 0xd7, 0x11, 0xd4, 0x06, 0x1b, 0xcf, 0x9b, 0x59, 0x1c, 0xd7, 0x22, 0x46, 0x3a, + 0xcb, 0xe3, 0xfa, 0x30, 0xd8, 0xee, 0xee, 0x1c, 0x9f, 0x27, 0x74, 0xc1, 0xae, 0xe0, 0xee, 0xce, + 0x35, 0x21, 0x01, 0x64, 0x77, 0x17, 0x04, 0xed, 0x0a, 0xe6, 0xf8, 0x79, 0x93, 0xd3, 0x6b, 0xb0, + 0x82, 0xb9, 0xca, 0xad, 0x18, 0x59, 0xc1, 0x02, 0x98, 0xf2, 0x70, 0x94, 0xfc, 0x9a, 0x10, 0xfe, + 0x21, 0xcb, 0xcb, 0xd1, 0xed, 0x80, 0x52, 0x2b, 0x30, 0x56, 0xef, 0xe0, 0x00, 0x28, 0x71, 0xfb, + 0xeb, 0x36, 0x29, 0x53, 0x5a, 0x04, 0x4b, 0x6c, 0xc5, 0xd1, 0x12, 0x7b, 0x98, 0x4d, 0x1d, 0x84, + 0xb0, 0x8d, 0x5f, 0x93, 0x4b, 0x52, 0xe7, 0xe5, 0x74, 0x14, 0xd2, 0x75, 0xe4, 0x48, 0xea, 0x10, + 0xe2, 0xc0, 0x10, 0x56, 0x8a, 0x5b, 0x55, 0x55, 0xb7, 0x61, 0x31, 0x34, 0x84, 0x7d, 0x24, 0x3a, + 0x84, 0x3b, 0x68, 0xd8, 0xdb, 0x0e, 0x4d, 0x8b, 0xbc, 0x8c, 0x7a, 0x53, 0xc8, 0x10, 0x6f, 0x16, + 0x05, 0x83, 0xf7, 0x80, 0x92, 0x05, 0xd5, 0x35, 0x0b, 0xb5, 0x8c, 0x0b, 0x44, 0x07, 0x2f, 0x00, + 0xed, 0x3e, 0x4d, 0x88, 0x0f, 0xc9, 0x15, 0x6d, 0x1b, 0x98, 0xb6, 0xeb, 0xda, 0x28, 0xa4, 0xef, + 0x11, 0xc8, 0x3e, 0x2d, 0x4c, 0x2a, 0x57, 0xf3, 0xe4, 0x23, 0x21, 0x3f, 0x26, 0x35, 0xcf, 0xd3, + 0xbc, 0x22, 0xa5, 0xce, 0xff, 0x43, 0xf3, 0xba, 0x43, 0x19, 0x97, 0x1b, 0x03, 0x69, 0xe5, 0xf6, + 0x3f, 0x56, 0x92, 0xbb, 0xd0, 0xef, 0x31, 0xad, 0x67, 0xb9, 0xd8, 0x46, 0x36, 0x32, 0x08, 0x8f, + 0xbe, 0x8c, 0x1b, 0xed, 0x28, 0x98, 0xd2, 0xfc, 0xf0, 0xe6, 0x8a, 0xaa, 0x60, 0x7f, 0x94, 0x24, + 0x72, 0xbb, 0x22, 0xb6, 0x94, 0xfe, 0xac, 0x55, 0xfb, 0x18, 0x6f, 0x3f, 0x79, 0x37, 0x42, 0xd8, + 0xa5, 0x42, 0xfe, 0x2e, 0x76, 0xca, 0xa3, 0xa0, 0x86, 0x10, 0x21, 0x4b, 0x05, 0x40, 0x60, 0x41, + 0x27, 0x97, 0xec, 0x3a, 0x5c, 0xd0, 0x56, 0x12, 0x2f, 0xa8, 0x22, 0xec, 0xd9, 0x95, 0x2a, 0x68, + 0xe8, 0xec, 0x4a, 0x17, 0x23, 0x76, 0x76, 0x05, 0x19, 0x65, 0x98, 0x25, 0xbf, 0xed, 0x1a, 0x7e, + 0xc9, 0xd8, 0xd5, 0x8c, 0xd4, 0x57, 0xa3, 0x27, 0xb8, 0xb2, 0x66, 0x8c, 0xa3, 0xb5, 0x41, 0xac, + 0x0d, 0x0b, 0xae, 0xc3, 0x36, 0xd1, 0x38, 0xab, 0x0b, 0x10, 0x16, 0x3c, 0x1b, 0x0a, 0x41, 0xc2, + 0x02, 0x82, 0xda, 0xc8, 0xed, 0x7a, 0x9b, 0x50, 0xb8, 0x5b, 0xf2, 0xd4, 0x27, 0x14, 0xdb, 0x2d, + 0x05, 0x30, 0x38, 0x84, 0xf6, 0x6a, 0x52, 0x5d, 0x86, 0x87, 0x90, 0x10, 0xc5, 0x87, 0x90, 0x46, + 0x60, 0x7f, 0x4f, 0x28, 0xa9, 0xd3, 0xcb, 0x70, 0x7f, 0x4b, 0x59, 0xbc, 0xbf, 0x0d, 0x03, 0xfb, + 0x5b, 0x0a, 0xde, 0xe6, 0xfc, 0xf2, 0x90, 0x72, 0x12, 0xee, 0x6f, 0x9f, 0x89, 0xf7, 0x77, 0x87, + 0xb5, 0x99, 0x8c, 0xeb, 0x70, 0x32, 0x3f, 0x6f, 0xd2, 0x3a, 0x3f, 0xa7, 0xa3, 0x88, 0x15, 0x03, + 0x21, 0x99, 0x0c, 0x0a, 0x2b, 0x9f, 0x3f, 0x5f, 0x49, 0x6e, 0xeb, 0x6e, 0x67, 0x4d, 0x23, 0x57, + 0x56, 0xe0, 0xfe, 0x45, 0xb8, 0x7f, 0x11, 0x1c, 0x39, 0x4d, 0x1c, 0xa0, 0xe6, 0x44, 0xd5, 0x70, + 0x91, 0xce, 0xca, 0xc6, 0x14, 0xea, 0xcb, 0x21, 0xd6, 0x1d, 0x05, 0x24, 0xaa, 0x0e, 0x52, 0xb4, + 0x0b, 0x9a, 0xea, 0x1f, 0x2d, 0xdb, 0xcf, 0x1a, 0xb0, 0xa0, 0xe9, 0xf6, 0x76, 0x08, 0x64, 0x41, + 0x0b, 0x93, 0x70, 0x28, 0xec, 0xd5, 0x6c, 0x5e, 0x35, 0x3d, 0x43, 0x01, 0x40, 0xf1, 0xa1, 0xd0, + 0x85, 0x95, 0xcf, 0x77, 0xc9, 0xef, 0xba, 0xc3, 0xcf, 0x6d, 0xec, 0x0d, 0x7c, 0x4c, 0x85, 0x9a, + 0x78, 0x3c, 0x14, 0xb7, 0x29, 0x9d, 0xf6, 0xcc, 0x77, 0x28, 0x27, 0x79, 0xd1, 0x8c, 0x1e, 0x86, + 0x6d, 0x68, 0x39, 0x92, 0xd2, 0x85, 0x38, 0x18, 0xdf, 0x76, 0xe6, 0x55, 0x91, 0xa7, 0xdd, 0xb3, + 0x5c, 0xa5, 0x6b, 0xc4, 0xf1, 0xf8, 0xe6, 0x62, 0x30, 0x5e, 0x4f, 0x28, 0x97, 0xff, 0x39, 0x5d, + 0x56, 0x34, 0x1c, 0xaf, 0x3d, 0x24, 0x1e, 0xaf, 0x21, 0x0a, 0xeb, 0x33, 0xa1, 0xfc, 0x80, 0x2c, + 0xd9, 0x1c, 0x89, 0xd7, 0x46, 0x1c, 0xaf, 0x8f, 0x8b, 0xd9, 0xac, 0xca, 0x78, 0xd8, 0x2f, 0x39, + 0xad, 0x4b, 0x52, 0xec, 0x16, 0x64, 0xda, 0x8c, 0x90, 0x18, 0xe3, 0x53, 0x48, 0x56, 0x85, 0xd3, + 0x81, 0x66, 0xdc, 0x6f, 0x76, 0xc9, 0x82, 0xd5, 0x39, 0xc7, 0x9b, 0xd1, 0x22, 0xbd, 0xcd, 0xe8, + 0xa1, 0x41, 0x6f, 0x5b, 0x75, 0x7a, 0x99, 0x2f, 0x68, 0x16, 0xf1, 0xa6, 0x91, 0x01, 0xde, 0x1c, + 0x34, 0xd0, 0x69, 0x13, 0x36, 0xaf, 0x53, 0x8a, 0x76, 0x9a, 0x14, 0xf7, 0x76, 0x9a, 0xc1, 0x94, + 0x87, 0xbf, 0x59, 0x49, 0x7e, 0x4f, 0x4a, 0xdd, 0x03, 0xd6, 0x1d, 0xd2, 0x5c, 0x9e, 0x33, 0x52, + 0x67, 0xa3, 0xcf, 0x42, 0x76, 0x82, 0xa8, 0x71, 0xfd, 0xec, 0x26, 0x2a, 0xb0, 0x59, 0x0f, 0xf2, + 0xc6, 0x99, 0x71, 0xc1, 0x66, 0xf5, 0x90, 0x78, 0xb3, 0x42, 0x14, 0x06, 0x10, 0x21, 0x97, 0x87, + 0x19, 0x0f, 0x51, 0x7d, 0xff, 0x44, 0x63, 0xb5, 0x97, 0x83, 0xf1, 0xb1, 0x15, 0xfa, 0xa3, 0x65, + 0x03, 0xb3, 0x11, 0x1e, 0x31, 0xe3, 0xa1, 0x38, 0xea, 0xd9, 0xcc, 0x8a, 0xb8, 0xe7, 0xce, 0xcc, + 0x18, 0x0f, 0xc5, 0x11, 0xcf, 0x4e, 0x58, 0x8b, 0x79, 0x0e, 0x84, 0xb6, 0xf1, 0x50, 0x1c, 0x66, + 0x5f, 0x8a, 0xd1, 0xeb, 0xc2, 0x93, 0x88, 0x1d, 0xb8, 0x36, 0xac, 0x0d, 0x62, 0x95, 0xc3, 0xbf, + 0x5b, 0x49, 0xbe, 0x6f, 0x3d, 0x1e, 0xb2, 0x2c, 0xbf, 0x58, 0x4a, 0xe8, 0x0d, 0x29, 0xe6, 0xb4, + 0x19, 0x3d, 0xc3, 0xac, 0x75, 0x59, 0x53, 0x82, 0xe7, 0x37, 0xd2, 0x81, 0x73, 0x67, 0xab, 0xaa, + 0x8a, 0xe5, 0x29, 0x9d, 0x55, 0x05, 0x3a, 0x77, 0x3c, 0x24, 0x3e, 0x77, 0x20, 0x0a, 0xb3, 0xf2, + 0x53, 0xd6, 0xe6, 0xfc, 0xc1, 0xac, 0x5c, 0x88, 0xe2, 0x59, 0xb9, 0x46, 0x60, 0xae, 0x74, 0xca, + 0xb6, 0x59, 0x51, 0xd0, 0x94, 0x77, 0x1f, 0xd2, 0x1a, 0x4d, 0x4b, 0xc4, 0x73, 0x25, 0x40, 0xda, + 0xf3, 0x0c, 0xbd, 0x87, 0x24, 0x35, 0x7d, 0xb9, 0x3c, 0xc8, 0xcb, 0xab, 0x51, 0x38, 0x2d, 0xb0, + 0x00, 0x72, 0x9e, 0x11, 0x04, 0xe1, 0x5e, 0xf5, 0xac, 0xcc, 0x58, 0x78, 0xaf, 0xda, 0x4a, 0xe2, + 0x7b, 0x55, 0x45, 0x40, 0x93, 0x27, 0x14, 0x33, 0xd9, 0x4a, 0xe2, 0x26, 0x15, 0x11, 0x0a, 0x85, + 0xea, 0xd4, 0x1b, 0x0d, 0x85, 0xe0, 0x9c, 0x7b, 0xb5, 0x97, 0x83, 0x23, 0x54, 0x6f, 0x5a, 0x77, + 0x29, 0x4f, 0x2f, 0xc3, 0x23, 0xd4, 0x43, 0xe2, 0x23, 0x14, 0xa2, 0xb0, 0x4a, 0xa7, 0xcc, 0x6c, + 0xba, 0x1f, 0x86, 0xc7, 0x47, 0x67, 0xc3, 0xbd, 0xda, 0xcb, 0xc1, 0x6d, 0xe4, 0xfe, 0x4c, 0xb4, + 0x59, 0x70, 0x90, 0x4b, 0x59, 0x7c, 0x1b, 0x69, 0x18, 0x58, 0x7a, 0x29, 0x68, 0x9b, 0x33, 0x5c, + 0x7a, 0x2b, 0x8f, 0x97, 0xde, 0xe3, 0x94, 0x93, 0x7f, 0x33, 0xdb, 0x38, 0x29, 0x3d, 0x62, 0xed, + 0x1c, 0x79, 0x43, 0x8a, 0x3c, 0x23, 0x9c, 0x9e, 0xb2, 0x2b, 0x5a, 0x86, 0x77, 0x4c, 0xaa, 0xb4, + 0x92, 0x1f, 0x7b, 0x0a, 0xf1, 0x1d, 0x53, 0x5c, 0x11, 0x8e, 0x13, 0x49, 0x9f, 0x35, 0x74, 0x9b, + 0x34, 0x48, 0x24, 0xf3, 0x90, 0xf8, 0x38, 0x81, 0x28, 0xcc, 0x57, 0xa5, 0xfc, 0xd5, 0xbb, 0x8a, + 0xd6, 0x39, 0x2d, 0x53, 0x1a, 0xce, 0x57, 0x21, 0x15, 0xcf, 0x57, 0x03, 0x74, 0xe7, 0x98, 0xc6, + 0x04, 0xa7, 0xee, 0x3d, 0x0b, 0x48, 0x44, 0xee, 0x59, 0x20, 0x28, 0xac, 0xa4, 0x05, 0x82, 0x47, + 0x9d, 0x1d, 0x2b, 0xd1, 0xa3, 0x4e, 0x9c, 0xee, 0x1c, 0x7e, 0x19, 0x66, 0xd2, 0x4e, 0x93, 0x9e, + 0xa2, 0x4f, 0xdc, 0xe9, 0xb2, 0x36, 0x88, 0x0d, 0x9f, 0xb6, 0x9d, 0xd0, 0x82, 0x88, 0x25, 0x24, + 0x72, 0xa4, 0xa5, 0x99, 0x21, 0xa7, 0x6d, 0x0e, 0xab, 0x1c, 0xfe, 0xd5, 0x4a, 0xf2, 0x49, 0xc8, + 0xe3, 0xeb, 0x4a, 0xf8, 0x7d, 0xda, 0x6f, 0x4b, 0x92, 0xc8, 0x45, 0x92, 0xb8, 0x86, 0x2a, 0xc3, + 0x9f, 0x25, 0x1f, 0x6b, 0x91, 0xbd, 0x67, 0xa2, 0x0a, 0xe0, 0x27, 0x50, 0xa6, 0xfc, 0x90, 0x33, + 0xee, 0x37, 0x07, 0xf3, 0x76, 0x6f, 0xe2, 0x97, 0xab, 0x01, 0x7b, 0x13, 0x63, 0x43, 0x89, 0x91, + 0xbd, 0x49, 0x00, 0xb3, 0xa7, 0x1a, 0x6e, 0xf5, 0xde, 0xe6, 0xfc, 0x52, 0xe4, 0x3e, 0xe0, 0x54, + 0xc3, 0x2b, 0xab, 0x81, 0x90, 0x53, 0x0d, 0x14, 0x86, 0xd9, 0x81, 0x06, 0xdb, 0xb9, 0x19, 0x8a, + 0xab, 0xc6, 0x90, 0x3b, 0x33, 0x1f, 0xf5, 0x83, 0x70, 0xbc, 0x6a, 0xb1, 0xda, 0x86, 0x3c, 0x89, + 0x59, 0x00, 0x5b, 0x91, 0xb5, 0x41, 0xac, 0x72, 0xf8, 0x17, 0xc9, 0xf7, 0x3a, 0x15, 0xdb, 0xa5, + 0x84, 0xcf, 0x6b, 0x9a, 0x8d, 0x36, 0x7b, 0xca, 0xad, 0x41, 0xe3, 0xfa, 0xe9, 0x70, 0x85, 0x4e, + 0xbe, 0xac, 0x39, 0x39, 0xac, 0x4c, 0x19, 0x9e, 0xc5, 0x4c, 0xfa, 0x6c, 0x34, 0x5f, 0xc6, 0x75, + 0x3a, 0x5b, 0x5e, 0x77, 0x74, 0x6d, 0x2d, 0x48, 0x5e, 0x88, 0x47, 0x4e, 0x9f, 0xc5, 0x8c, 0x7a, + 0x68, 0x74, 0xcb, 0x8b, 0xaa, 0x74, 0x22, 0xb3, 0x98, 0xe3, 0xce, 0x56, 0x69, 0x1d, 0x8f, 0x04, + 0x81, 0x9d, 0xd2, 0xc6, 0x40, 0x5a, 0xb9, 0xe5, 0xfa, 0xa8, 0xb0, 0xfd, 0xd9, 0x1d, 0xe4, 0x21, + 0xaf, 0x4a, 0x35, 0x30, 0xd2, 0x37, 0x06, 0xd2, 0xca, 0xeb, 0x9f, 0x27, 0x1f, 0x77, 0xbd, 0xaa, + 0x85, 0x68, 0xb3, 0xd7, 0x14, 0x58, 0x8b, 0x9e, 0x0e, 0x57, 0xb0, 0xdb, 0x8b, 0xaf, 0xf2, 0x86, + 0xb3, 0x7a, 0x39, 0xb9, 0x64, 0xd7, 0xfa, 0xfe, 0xb6, 0x3f, 0x5b, 0x15, 0x30, 0x76, 0x08, 0x64, + 0x7b, 0x11, 0x26, 0x3b, 0xae, 0xec, 0x3d, 0xef, 0x06, 0x71, 0xe5, 0x10, 0x3d, 0xae, 0x7c, 0xd2, + 0xc6, 0x2a, 0x5d, 0x2b, 0x7b, 0x29, 0x7d, 0x35, 0x5c, 0xd4, 0xee, 0xc5, 0xf4, 0x47, 0xfd, 0xa0, + 0xcd, 0x58, 0x94, 0x78, 0x27, 0xbf, 0xb8, 0x30, 0x75, 0x0a, 0x97, 0xd4, 0x45, 0x90, 0x8c, 0x05, + 0x41, 0x6d, 0x02, 0xbc, 0x9b, 0x17, 0x54, 0x9c, 0xae, 0xbf, 0xbe, 0xb8, 0x28, 0x18, 0xc9, 0x40, + 0x02, 0xdc, 0x8a, 0xc7, 0xae, 0x1c, 0x49, 0x80, 0x43, 0x9c, 0xbd, 0xfe, 0xd5, 0x4a, 0x4f, 0x68, + 0xca, 0xca, 0x34, 0x2f, 0xe0, 0x75, 0x36, 0xa1, 0x69, 0x84, 0xc8, 0xf5, 0xaf, 0x0e, 0x64, 0x17, + 0xc6, 0x56, 0xd4, 0x4e, 0x7b, 0x5d, 0xfe, 0x07, 0x5d, 0x45, 0x47, 0x8c, 0x2c, 0x8c, 0x01, 0xcc, + 0xee, 0x03, 0x5b, 0xe1, 0x59, 0x25, 0x8c, 0xdf, 0xe9, 0x6a, 0x49, 0x09, 0xb2, 0x0f, 0xf4, 0x09, + 0xbb, 0x9f, 0x69, 0x7f, 0xdf, 0x61, 0xd7, 0xa5, 0x30, 0x7a, 0xaf, 0xab, 0xa2, 0x65, 0xc8, 0x7e, + 0x06, 0x32, 0xca, 0xf0, 0x4f, 0x92, 0x5f, 0x15, 0x86, 0x6b, 0x56, 0x8d, 0x6e, 0x05, 0x14, 0x6a, + 0xe7, 0xe6, 0xd9, 0x6d, 0x54, 0x6e, 0x2f, 0x50, 0x9a, 0xb1, 0x71, 0xd6, 0x90, 0x29, 0x1d, 0xdd, + 0x47, 0x7a, 0x5c, 0x48, 0x91, 0x0b, 0x94, 0x5d, 0xca, 0x1f, 0x15, 0x47, 0x2c, 0x53, 0xd6, 0x03, + 0x35, 0x34, 0xc2, 0xd8, 0xa8, 0x70, 0x21, 0x9b, 0xcc, 0x1c, 0x91, 0x45, 0x3e, 0x35, 0x0b, 0x8e, + 0x8c, 0x5b, 0x0d, 0x48, 0x66, 0x2c, 0x33, 0x76, 0x20, 0x24, 0x99, 0x41, 0x61, 0xe5, 0xf3, 0x5f, + 0x57, 0x92, 0x3b, 0x96, 0xd9, 0xd3, 0x27, 0x67, 0xfb, 0xe5, 0x05, 0x6b, 0x53, 0x9f, 0x83, 0xbc, + 0xbc, 0x6a, 0x46, 0x5f, 0x60, 0x26, 0xc3, 0xbc, 0x29, 0xca, 0x97, 0x37, 0xd6, 0xb3, 0x59, 0xab, + 0x3e, 0x56, 0xb2, 0xcf, 0x96, 0xa5, 0x06, 0xc8, 0x5a, 0xcd, 0xe9, 0x13, 0xe4, 0x90, 0xac, 0x35, + 0xc6, 0xdb, 0x2e, 0x36, 0xce, 0x0b, 0x56, 0xc2, 0x2e, 0xb6, 0x16, 0x5a, 0x21, 0xd2, 0xc5, 0x1d, + 0xc8, 0xc6, 0x63, 0x2d, 0x92, 0x27, 0x20, 0x5b, 0x45, 0x01, 0xe2, 0xb1, 0x51, 0x35, 0x00, 0x12, + 0x8f, 0x83, 0xa0, 0xf2, 0x73, 0x92, 0x7c, 0xa7, 0x6d, 0xd2, 0xe3, 0x9a, 0x2e, 0x72, 0x0a, 0xaf, + 0x41, 0x38, 0x12, 0x64, 0xfe, 0xfb, 0x84, 0x9d, 0x59, 0x67, 0x65, 0x53, 0x15, 0xa4, 0xb9, 0x54, + 0x0f, 0xc6, 0xfd, 0x3a, 0x6b, 0x21, 0x7c, 0x34, 0xfe, 0xa0, 0x87, 0xb2, 0x41, 0x5d, 0xcb, 0x4c, + 0x88, 0x79, 0x18, 0x56, 0xed, 0x84, 0x99, 0xd5, 0x5e, 0xce, 0x9e, 0x3e, 0xef, 0x91, 0xa2, 0xa0, + 0xf5, 0x52, 0xcb, 0x0e, 0x49, 0x99, 0x5f, 0xd0, 0x86, 0x83, 0xd3, 0x67, 0x45, 0x8d, 0x21, 0x86, + 0x9c, 0x3e, 0x47, 0x70, 0x9b, 0xcd, 0x03, 0xcf, 0xfb, 0x65, 0x46, 0xdf, 0x81, 0x6c, 0x1e, 0xda, + 0x11, 0x0c, 0x92, 0xcd, 0x63, 0xac, 0x3d, 0x85, 0x7d, 0x59, 0xb0, 0xf4, 0x4a, 0x2d, 0x01, 0x7e, + 0x07, 0x0b, 0x09, 0x5c, 0x03, 0xee, 0xc5, 0x10, 0xbb, 0x08, 0x08, 0xc1, 0x09, 0xad, 0x0a, 0x92, + 0xc2, 0xbb, 0x30, 0x52, 0x47, 0xc9, 0x90, 0x45, 0x00, 0x32, 0xa0, 0xb8, 0xea, 0x8e, 0x4d, 0xa8, + 0xb8, 0xe0, 0x8a, 0xcd, 0xbd, 0x18, 0x62, 0x97, 0x41, 0x21, 0x98, 0x54, 0x45, 0xce, 0xc1, 0x34, + 0x90, 0x1a, 0x42, 0x82, 0x4c, 0x03, 0x9f, 0x00, 0x26, 0x0f, 0x69, 0x3d, 0xa5, 0x41, 0x93, 0x42, + 0x12, 0x35, 0xa9, 0x09, 0x7b, 0x65, 0x52, 0xd6, 0x9d, 0x55, 0x4b, 0x70, 0x65, 0x52, 0x55, 0x8b, + 0x55, 0x4b, 0xe4, 0xca, 0xa4, 0x07, 0x80, 0x22, 0x1e, 0x93, 0x86, 0x87, 0x8b, 0x28, 0x24, 0xd1, + 0x22, 0x6a, 0xc2, 0xae, 0xd1, 0xb2, 0x88, 0x73, 0x0e, 0xd6, 0x68, 0x55, 0x00, 0xe7, 0x69, 0xf0, + 0x6d, 0x54, 0x6e, 0x23, 0x89, 0xec, 0x15, 0xca, 0x77, 0x73, 0x5a, 0x64, 0x0d, 0x88, 0x24, 0xaa, + 0xdd, 0xb5, 0x14, 0x89, 0x24, 0x5d, 0x0a, 0x0c, 0x25, 0x75, 0x56, 0x1d, 0xaa, 0x1d, 0x38, 0xa6, + 0xbe, 0x17, 0x43, 0x6c, 0x7c, 0xd2, 0x85, 0xde, 0x26, 0x75, 0x9d, 0xb7, 0x8b, 0xff, 0xc3, 0x70, + 0x81, 0xb4, 0x1c, 0x89, 0x4f, 0x21, 0x0e, 0x4c, 0x2f, 0x1d, 0xb8, 0x43, 0x05, 0x83, 0xa1, 0xfb, + 0xd3, 0x28, 0x63, 0x33, 0x4e, 0x21, 0x71, 0x1e, 0x67, 0x86, 0x5a, 0x33, 0xf0, 0x34, 0xf3, 0x61, + 0x1f, 0xe6, 0xbc, 0xd2, 0x60, 0x5c, 0x1c, 0xb2, 0x05, 0x3d, 0x65, 0xaf, 0xde, 0xe5, 0x0d, 0xcf, + 0xcb, 0xa9, 0x5a, 0xb9, 0x9f, 0x23, 0x96, 0x42, 0x30, 0xf2, 0x4a, 0x43, 0xaf, 0x92, 0x4d, 0x20, + 0x40, 0x59, 0x8e, 0xe8, 0x75, 0x30, 0x81, 0x80, 0x16, 0x0d, 0x87, 0x24, 0x10, 0x31, 0xde, 0x9e, + 0xa3, 0x18, 0xe7, 0xea, 0xbd, 0xcf, 0x53, 0xa6, 0x73, 0x39, 0xcc, 0x1a, 0x04, 0x91, 0xad, 0x6c, + 0x54, 0xc1, 0xee, 0x2f, 0x8d, 0x7f, 0x3b, 0xc5, 0x1e, 0x21, 0x76, 0xba, 0xd3, 0xec, 0xf1, 0x00, + 0x32, 0xe0, 0xca, 0x3e, 0x93, 0xc7, 0x5c, 0x75, 0x1f, 0xc9, 0x3f, 0x1e, 0x40, 0x3a, 0x67, 0x32, + 0x6e, 0xb5, 0x5e, 0x92, 0xf4, 0x6a, 0x5a, 0xb3, 0x79, 0x99, 0x6d, 0xb3, 0x82, 0xd5, 0xe0, 0x4c, + 0xc6, 0x2b, 0x35, 0x40, 0x91, 0x33, 0x99, 0x1e, 0x15, 0x9b, 0xc1, 0xb9, 0xa5, 0xd8, 0x2a, 0xf2, + 0x29, 0xdc, 0x51, 0x7b, 0x86, 0x04, 0x80, 0x64, 0x70, 0x41, 0x30, 0x30, 0x88, 0xe4, 0x8e, 0x9b, + 0xe7, 0x29, 0x29, 0xa4, 0xbf, 0x4d, 0xdc, 0x8c, 0x07, 0xf6, 0x0e, 0xa2, 0x80, 0x42, 0xa0, 0x9e, + 0xa7, 0xf3, 0xba, 0xdc, 0x2f, 0x39, 0x43, 0xeb, 0xa9, 0x81, 0xde, 0x7a, 0x3a, 0x20, 0x08, 0xab, + 0xa7, 0xf4, 0x5d, 0x5b, 0x9a, 0xf6, 0x9f, 0x50, 0x58, 0x6d, 0x7f, 0x1f, 0x2b, 0x79, 0x2c, 0xac, + 0x02, 0x0e, 0x54, 0x46, 0x39, 0x91, 0x03, 0x26, 0xa2, 0xed, 0x0f, 0x93, 0x47, 0xfd, 0x60, 0xd8, + 0xcf, 0x84, 0x2f, 0x0b, 0x1a, 0xf3, 0x23, 0x80, 0x21, 0x7e, 0x34, 0x68, 0x8f, 0x5b, 0xbc, 0xfa, + 0x5c, 0xd2, 0xf4, 0xaa, 0x73, 0xc5, 0xc8, 0x2f, 0xa8, 0x44, 0x90, 0xe3, 0x16, 0x04, 0x0d, 0x77, + 0xd1, 0x7e, 0xca, 0xca, 0x58, 0x17, 0xb5, 0xf2, 0x21, 0x5d, 0xa4, 0x38, 0xbb, 0xf9, 0x35, 0x52, + 0x35, 0x32, 0x65, 0x37, 0xad, 0x21, 0x16, 0x5c, 0x08, 0xd9, 0xfc, 0xa2, 0xb0, 0xcd, 0xc9, 0xa1, + 0xcf, 0xc3, 0xee, 0xfd, 0xeb, 0x8e, 0x95, 0x43, 0xfc, 0xfe, 0x35, 0xc6, 0xe2, 0x95, 0x94, 0x63, + 0xa4, 0xc7, 0x8a, 0x3f, 0x4e, 0xd6, 0x87, 0xc1, 0x76, 0xcb, 0xe3, 0xf9, 0xdc, 0x2e, 0x28, 0xa9, + 0xa5, 0xd7, 0x8d, 0x88, 0x21, 0x8b, 0x21, 0x5b, 0x9e, 0x08, 0x0e, 0x42, 0x98, 0xe7, 0x79, 0x9b, + 0x95, 0x9c, 0x96, 0x3c, 0x14, 0xc2, 0x7c, 0x63, 0x0a, 0x8c, 0x85, 0x30, 0x4c, 0x01, 0x8c, 0x5b, + 0x71, 0x1e, 0x44, 0xf9, 0x11, 0x99, 0x05, 0x33, 0x36, 0x79, 0xd6, 0x23, 0xe5, 0xb1, 0x71, 0x0b, + 0x38, 0xe7, 0x21, 0x9f, 0xeb, 0xe5, 0x94, 0xd4, 0x53, 0x73, 0xba, 0x91, 0x8d, 0x9e, 0xe2, 0x76, + 0x7c, 0x12, 0x79, 0xc8, 0x17, 0xd7, 0x00, 0x61, 0x67, 0x7f, 0x46, 0xa6, 0xa6, 0xa6, 0x81, 0x1a, + 0x08, 0x79, 0xa7, 0xaa, 0x8f, 0xfa, 0x41, 0xe0, 0xe7, 0x4d, 0x9e, 0x51, 0x16, 0xf1, 0x23, 0xe4, + 0x43, 0xfc, 0x40, 0x10, 0x64, 0x6f, 0x6d, 0xbd, 0xe5, 0x8e, 0x6e, 0xab, 0xcc, 0xd4, 0x3e, 0x76, + 0x8c, 0x34, 0x0f, 0xe0, 0x62, 0xd9, 0x1b, 0xc2, 0x83, 0x39, 0xaa, 0x0f, 0x68, 0x63, 0x73, 0xd4, + 0x9c, 0xbf, 0x0e, 0x99, 0xa3, 0x21, 0x58, 0xf9, 0xfc, 0x99, 0x9a, 0xa3, 0x3b, 0x84, 0x93, 0x36, + 0x6f, 0x7f, 0x93, 0xd3, 0x6b, 0xb5, 0x11, 0x0e, 0xd4, 0x57, 0x53, 0x63, 0xf1, 0xe2, 0x1d, 0xd8, + 0x15, 0x6f, 0x0e, 0xe6, 0x23, 0xbe, 0xd5, 0x0e, 0xa1, 0xd7, 0x37, 0xd8, 0x2a, 0x6c, 0x0e, 0xe6, + 0x23, 0xbe, 0xd5, 0x1b, 0xbd, 0xbd, 0xbe, 0xc1, 0x6b, 0xbd, 0x9b, 0x83, 0x79, 0xe5, 0xfb, 0xaf, + 0xf5, 0xc4, 0x75, 0x9d, 0xb7, 0x79, 0x58, 0xca, 0xf3, 0x05, 0x0d, 0xa5, 0x93, 0xbe, 0x3d, 0x83, + 0xc6, 0xd2, 0x49, 0x5c, 0xc5, 0xf9, 0x0c, 0x4c, 0xa8, 0x14, 0xc7, 0xac, 0xc9, 0xc5, 0x43, 0xfa, + 0xe7, 0x03, 0x8c, 0x6a, 0x38, 0xb6, 0x69, 0x8a, 0x29, 0xd9, 0xc7, 0x8d, 0x1e, 0x6a, 0x6f, 0x14, + 0xaf, 0x47, 0xec, 0x75, 0x2f, 0x16, 0x6f, 0x0c, 0xa4, 0xed, 0x83, 0x3f, 0x8f, 0x71, 0x9f, 0x38, + 0xc6, 0x7a, 0x35, 0xf8, 0xd0, 0xf1, 0xe9, 0x70, 0x05, 0xe5, 0xfe, 0x6f, 0xf5, 0xbe, 0x02, 0xfa, + 0x57, 0x93, 0xe0, 0xd9, 0x10, 0x8b, 0x60, 0x22, 0x3c, 0xbf, 0x91, 0x8e, 0x2a, 0xc8, 0x3f, 0xea, + 0x0d, 0xb4, 0x46, 0xc5, 0x7b, 0x15, 0xaf, 0xeb, 0x8c, 0xd6, 0x6a, 0x4e, 0xc4, 0xba, 0xd5, 0xc2, + 0x70, 0x66, 0xbc, 0xb8, 0xa1, 0x96, 0xf3, 0x51, 0x20, 0x0f, 0x56, 0xef, 0xff, 0x39, 0xe5, 0x89, + 0x59, 0x76, 0x68, 0x58, 0xa0, 0x2f, 0x6e, 0xaa, 0x86, 0xcd, 0x15, 0x07, 0x16, 0xdf, 0x18, 0x78, + 0x3e, 0xd0, 0xb0, 0xf7, 0xd5, 0x81, 0xcf, 0x6f, 0xa6, 0xa4, 0xca, 0xf2, 0x5f, 0x2b, 0xc9, 0x03, + 0x8f, 0xb5, 0xcf, 0x13, 0xc0, 0xa9, 0xc7, 0x8f, 0x23, 0xf6, 0x31, 0x25, 0x53, 0xb8, 0xdf, 0xff, + 0xe5, 0x94, 0xed, 0x17, 0x74, 0x3c, 0x95, 0xdd, 0xbc, 0xe0, 0xb4, 0xee, 0x7e, 0x41, 0xc7, 0xb7, + 0x2b, 0xa9, 0x31, 0xfe, 0x05, 0x9d, 0x08, 0xee, 0x7c, 0x41, 0x27, 0xe0, 0x39, 0xf8, 0x05, 0x9d, + 0xa0, 0xb5, 0xe8, 0x17, 0x74, 0xe2, 0x1a, 0x58, 0x78, 0xd7, 0x45, 0x90, 0xe7, 0xd6, 0x83, 0x2c, + 0xfa, 0xc7, 0xd8, 0xcf, 0x6e, 0xa2, 0x82, 0x2c, 0x70, 0x92, 0x13, 0xf7, 0xdc, 0x06, 0xb4, 0xa9, + 0x77, 0xd7, 0x6d, 0x73, 0x30, 0xaf, 0x7c, 0xff, 0x54, 0xed, 0x6e, 0x4c, 0x38, 0x67, 0xb5, 0xf8, + 0x7a, 0xd2, 0x5a, 0x2c, 0x3c, 0xb7, 0x16, 0xdc, 0x9e, 0x5f, 0x1f, 0x06, 0x23, 0xd5, 0x6d, 0x09, + 0xd5, 0xe9, 0xe3, 0x3e, 0x43, 0xa0, 0xcb, 0x37, 0x07, 0xf3, 0xc8, 0x32, 0x22, 0x7d, 0xcb, 0xde, + 0x1e, 0x60, 0xcc, 0xef, 0xeb, 0xa7, 0xc3, 0x15, 0x94, 0xfb, 0x85, 0x4a, 0x1b, 0x5d, 0xf7, 0xa2, + 0x9f, 0x37, 0xfa, 0x4c, 0x4d, 0xbc, 0x6e, 0x1e, 0x0f, 0xc5, 0x63, 0x09, 0x84, 0xbb, 0x84, 0xf6, + 0x25, 0x10, 0xc1, 0x65, 0xf4, 0xf3, 0x9b, 0x29, 0xa9, 0xb2, 0xfc, 0xcb, 0x4a, 0x72, 0x1b, 0x2d, + 0x8b, 0x1a, 0x07, 0x5f, 0x0c, 0xb5, 0x0c, 0xc6, 0xc3, 0x97, 0x37, 0xd6, 0x53, 0x85, 0xfa, 0xf7, + 0x95, 0xe4, 0x4e, 0xa4, 0x50, 0x72, 0x80, 0xdc, 0xc0, 0xba, 0x3f, 0x50, 0x7e, 0x78, 0x73, 0x45, + 0x6c, 0xb9, 0x77, 0xf1, 0x49, 0xf7, 0xd3, 0x32, 0x11, 0xdb, 0x13, 0xfc, 0xd3, 0x32, 0xfd, 0x5a, + 0xf0, 0x90, 0x87, 0x9c, 0xeb, 0x4d, 0x57, 0xf0, 0x90, 0x47, 0xdc, 0x50, 0x03, 0x7b, 0x8e, 0xd5, + 0x5e, 0x2e, 0xe4, 0xe4, 0xd5, 0xbb, 0x8a, 0x94, 0x19, 0xee, 0x44, 0xca, 0xfb, 0x9d, 0x18, 0x0e, + 0x1e, 0x8e, 0xb5, 0xd2, 0x13, 0xa6, 0x37, 0x52, 0x8f, 0x31, 0x7d, 0x83, 0x44, 0x0f, 0xc7, 0x3a, + 0x28, 0xe2, 0x4d, 0x65, 0x8d, 0x31, 0x6f, 0x20, 0x59, 0x7c, 0x32, 0x04, 0x05, 0x29, 0xba, 0xf1, + 0x66, 0xce, 0xdc, 0xd7, 0x63, 0x56, 0x3a, 0xe7, 0xee, 0x1b, 0x03, 0x69, 0xc4, 0xed, 0x84, 0xf2, + 0xaf, 0x28, 0xc9, 0x68, 0x1d, 0x75, 0x6b, 0xa8, 0x41, 0x6e, 0x5d, 0x3a, 0xe4, 0x76, 0x9b, 0x15, + 0xf3, 0x59, 0xa9, 0x3a, 0x13, 0x75, 0xeb, 0x52, 0xfd, 0x6e, 0x01, 0x0d, 0x8f, 0x05, 0xad, 0x5b, + 0x91, 0x5e, 0x3e, 0x89, 0x9b, 0xf1, 0xb2, 0xca, 0xb5, 0x41, 0x2c, 0x5e, 0x4f, 0x35, 0x8c, 0x7a, + 0xea, 0x09, 0x46, 0xd2, 0xc6, 0x40, 0x1a, 0x9e, 0xcf, 0x39, 0x6e, 0xcd, 0x78, 0xda, 0xec, 0xb1, + 0xd5, 0x19, 0x52, 0x4f, 0x87, 0x2b, 0xc0, 0xd3, 0x50, 0x35, 0xaa, 0x0e, 0xf2, 0x86, 0xef, 0xe6, + 0x45, 0x31, 0x5a, 0x8b, 0x0c, 0x13, 0x0d, 0x45, 0x4f, 0x43, 0x03, 0x30, 0x32, 0x92, 0xf5, 0xe9, + 0x61, 0x39, 0xea, 0xb3, 0x23, 0xa8, 0x41, 0x23, 0xd9, 0xa5, 0xc1, 0x89, 0x96, 0xd3, 0xd4, 0xa6, + 0xb6, 0xe3, 0x78, 0xc3, 0x75, 0x2a, 0xbc, 0x39, 0x98, 0x07, 0x8f, 0xdb, 0x05, 0x25, 0x56, 0x96, + 0xfb, 0x98, 0x09, 0x6f, 0x25, 0x79, 0xd0, 0x43, 0x81, 0x53, 0x41, 0x39, 0x8d, 0xde, 0xe6, 0xd9, + 0x94, 0xf2, 0xe0, 0x93, 0x22, 0x17, 0x88, 0x3e, 0x29, 0x02, 0x20, 0xe8, 0x3a, 0xf9, 0xbb, 0x39, + 0x0e, 0xdd, 0xcf, 0x42, 0x5d, 0xa7, 0x94, 0x1d, 0x2a, 0xd6, 0x75, 0x41, 0x1a, 0x44, 0x03, 0xe3, + 0x56, 0xbd, 0x1a, 0xff, 0x24, 0x66, 0x06, 0xbc, 0x1f, 0xbf, 0x36, 0x88, 0x05, 0x2b, 0x8a, 0x75, + 0x98, 0xcf, 0x72, 0x1e, 0x5a, 0x51, 0x1c, 0x1b, 0x2d, 0x12, 0x5b, 0x51, 0xba, 0x28, 0x56, 0xbd, + 0x36, 0x47, 0xd8, 0xcf, 0xe2, 0xd5, 0x93, 0xcc, 0xb0, 0xea, 0x19, 0xb6, 0xf3, 0x60, 0xb3, 0x34, + 0x43, 0x86, 0x5f, 0xaa, 0xcd, 0x72, 0x60, 0x6c, 0x8b, 0x57, 0x26, 0x21, 0x18, 0x8b, 0x3a, 0x98, + 0x02, 0x3c, 0xb0, 0x6f, 0x39, 0xfd, 0xec, 0xb5, 0xaa, 0x28, 0xa9, 0x49, 0x99, 0x06, 0x37, 0xa7, + 0xc2, 0x60, 0x87, 0x8c, 0x6d, 0x4e, 0x51, 0x0d, 0xf0, 0xd8, 0xdc, 0x7f, 0xd9, 0x31, 0x30, 0x15, + 0xcc, 0x5b, 0x85, 0xfe, 0xbb, 0x8e, 0x8f, 0x07, 0x90, 0xf0, 0xb1, 0xb9, 0x06, 0xcc, 0xc1, 0xb7, + 0x74, 0xfa, 0x59, 0xc4, 0x94, 0x8f, 0xc6, 0x36, 0xc2, 0xb8, 0x0a, 0x18, 0xd4, 0x26, 0xc1, 0xa5, + 0xfc, 0x27, 0x74, 0x19, 0x1a, 0xd4, 0x36, 0x3f, 0x15, 0x48, 0x6c, 0x50, 0x77, 0x51, 0x90, 0x67, + 0xba, 0xfb, 0xa0, 0x87, 0x11, 0x7d, 0x77, 0xeb, 0xb3, 0xda, 0xcb, 0x81, 0x99, 0xb3, 0x93, 0x2f, + 0xbc, 0xe7, 0x04, 0x81, 0x82, 0xee, 0xe4, 0x8b, 0xf0, 0x63, 0x82, 0xb5, 0x41, 0x2c, 0x7c, 0x24, + 0x4f, 0x38, 0x7d, 0xa7, 0x9f, 0x95, 0x07, 0x8a, 0x2b, 0xe4, 0x9d, 0x87, 0xe5, 0x8f, 0xfa, 0x41, + 0x7b, 0x01, 0xf6, 0xb8, 0x66, 0x29, 0x6d, 0x1a, 0xf5, 0xbd, 0x3d, 0xff, 0x86, 0x91, 0x92, 0x8d, + 0xc1, 0xd7, 0xf6, 0xee, 0xc7, 0x21, 0x65, 0xfb, 0xab, 0xe4, 0xfd, 0x03, 0x36, 0x9d, 0xd0, 0x32, + 0x1b, 0xfd, 0xc0, 0xbf, 0x72, 0xca, 0xa6, 0xe3, 0xf6, 0x67, 0x63, 0xef, 0x16, 0x26, 0xb6, 0x97, + 0xe6, 0x76, 0xe8, 0xf9, 0x7c, 0x3a, 0xe1, 0x84, 0x83, 0x4b, 0x73, 0xe2, 0xf7, 0x71, 0x2b, 0x40, + 0x2e, 0xcd, 0x79, 0x00, 0xb0, 0x77, 0x5a, 0x53, 0x1a, 0xb4, 0xd7, 0x0a, 0xa2, 0xf6, 0x14, 0x60, + 0x57, 0x5d, 0x63, 0xaf, 0x4d, 0x6c, 0xe1, 0x25, 0x37, 0xab, 0x23, 0xa4, 0xc8, 0xaa, 0xdb, 0xa5, + 0xec, 0x60, 0x90, 0xd5, 0x17, 0x5f, 0xcc, 0x98, 0xcf, 0x66, 0xa4, 0x5e, 0x82, 0xc1, 0xa0, 0x6a, + 0xe9, 0x00, 0xc8, 0x60, 0x08, 0x82, 0x76, 0x94, 0xeb, 0x66, 0x4e, 0xaf, 0xf6, 0x58, 0xcd, 0xe6, + 0x3c, 0x2f, 0x29, 0xfc, 0x6a, 0x82, 0x69, 0x50, 0x97, 0x41, 0x46, 0x39, 0xc6, 0xda, 0xac, 0x50, + 0x10, 0xf2, 0xfe, 0x9d, 0xf8, 0x6a, 0x6d, 0xc3, 0x59, 0x0d, 0x9f, 0xbf, 0x49, 0x2b, 0x10, 0x42, + 0xb2, 0x42, 0x14, 0x06, 0x7d, 0x7f, 0x9c, 0x97, 0xd3, 0x60, 0xdf, 0x1f, 0xbb, 0xdf, 0x7c, 0xbc, + 0x83, 0x03, 0x36, 0xbe, 0xcb, 0x46, 0x93, 0x5f, 0x26, 0x52, 0xef, 0x3e, 0x06, 0x1b, 0xdd, 0x25, + 0x90, 0xf8, 0x1e, 0x26, 0x81, 0xab, 0xd7, 0x15, 0x2d, 0x69, 0xa6, 0x6f, 0x99, 0x85, 0x5c, 0x79, + 0x44, 0xd4, 0x15, 0x24, 0x6d, 0x54, 0x15, 0xf2, 0x93, 0x79, 0x79, 0x5c, 0xb3, 0x8b, 0xbc, 0xa0, + 0x35, 0x88, 0xaa, 0x52, 0xdd, 0x91, 0x23, 0x51, 0x35, 0xc4, 0xd9, 0xeb, 0x0a, 0x42, 0xea, 0x7d, + 0x7a, 0xf9, 0xb4, 0x26, 0x29, 0xbc, 0xae, 0x20, 0x6d, 0x74, 0x31, 0xe4, 0x24, 0x2d, 0x82, 0x3b, + 0x89, 0x81, 0x74, 0x5d, 0x2e, 0xc5, 0xf8, 0x50, 0xef, 0xde, 0x89, 0x2f, 0x21, 0x36, 0x20, 0x31, + 0x50, 0xe6, 0x42, 0x24, 0x92, 0x18, 0xc4, 0x35, 0x6c, 0xe8, 0x15, 0xdc, 0x91, 0xba, 0x86, 0x03, + 0x42, 0xaf, 0xb4, 0xa1, 0x85, 0x48, 0xe8, 0xed, 0x40, 0x20, 0x20, 0xe9, 0x69, 0x30, 0x0d, 0x06, + 0x24, 0x23, 0x8d, 0x06, 0x24, 0x97, 0xb2, 0x81, 0x62, 0xbf, 0xcc, 0x79, 0x4e, 0x8a, 0x09, 0xe5, + 0xc7, 0xa4, 0x26, 0x33, 0xca, 0x69, 0x0d, 0x03, 0x85, 0x42, 0xc6, 0x1e, 0x83, 0x04, 0x0a, 0x8c, + 0x55, 0x0e, 0xff, 0x20, 0xf9, 0xb0, 0x5d, 0x27, 0x69, 0xa9, 0xfe, 0xc8, 0xc2, 0x2b, 0xf1, 0xd7, + 0x59, 0x46, 0x1f, 0x19, 0x1b, 0x13, 0x5e, 0x53, 0x32, 0xd3, 0xb6, 0x3f, 0x30, 0xbf, 0x0b, 0xf0, + 0xe9, 0x4a, 0x3b, 0x9e, 0x8f, 0x18, 0xcf, 0x2f, 0xda, 0x6d, 0xa9, 0x7a, 0xe3, 0x06, 0x8c, 0x67, + 0x57, 0x3c, 0x8e, 0x7c, 0x47, 0x21, 0xc4, 0xd9, 0x38, 0xed, 0x4a, 0x4f, 0x68, 0x55, 0xc0, 0x38, + 0xed, 0x69, 0x0b, 0x00, 0x89, 0xd3, 0x41, 0xd0, 0x4e, 0x4e, 0x57, 0x7c, 0x4a, 0xe3, 0x95, 0x39, + 0xa5, 0xc3, 0x2a, 0x73, 0xea, 0xbd, 0xc4, 0x50, 0x24, 0x1f, 0x1e, 0xd2, 0xd9, 0x39, 0xad, 0x9b, + 0xcb, 0xbc, 0xda, 0x6b, 0x13, 0x14, 0xc2, 0xe7, 0xf0, 0x35, 0x3f, 0x4b, 0x8c, 0x0d, 0x82, 0x64, + 0x71, 0x08, 0x6a, 0x57, 0x02, 0x0b, 0xec, 0x37, 0x47, 0x64, 0x46, 0xc5, 0x57, 0x21, 0xc0, 0x4a, + 0xe0, 0x18, 0x71, 0x20, 0x64, 0x25, 0x40, 0x61, 0xe7, 0x7d, 0x28, 0xcb, 0x9c, 0xd0, 0x69, 0x3b, + 0xc2, 0xea, 0x63, 0xb2, 0x9c, 0xd1, 0x92, 0x2b, 0x93, 0xe0, 0x0c, 0xdb, 0x31, 0x19, 0xe6, 0x91, + 0x33, 0xec, 0x21, 0x7a, 0x4e, 0x68, 0xf2, 0x1a, 0xfe, 0x98, 0xd5, 0x5c, 0xfe, 0x09, 0x95, 0xb3, + 0xba, 0x00, 0xa1, 0xc9, 0x6f, 0x54, 0x8f, 0x44, 0x42, 0x53, 0x5c, 0xc3, 0xf9, 0xf6, 0xb8, 0x57, + 0x86, 0x37, 0xb4, 0x36, 0xe3, 0xe4, 0xd5, 0x8c, 0xe4, 0x85, 0x1a, 0x0d, 0x3f, 0x8a, 0xd8, 0x46, + 0x74, 0x90, 0x6f, 0x8f, 0x0f, 0xd5, 0x75, 0xbe, 0xd6, 0x1e, 0x2f, 0x21, 0x38, 0x52, 0xef, 0xb1, + 0x8f, 0x1c, 0xa9, 0xf7, 0x6b, 0xd9, 0x9d, 0xae, 0x65, 0x05, 0xb7, 0x14, 0xc4, 0x36, 0xcb, 0xe0, + 0xf9, 0x9a, 0x63, 0x13, 0x80, 0xc8, 0x4e, 0x37, 0xaa, 0x60, 0x53, 0x03, 0x8b, 0xed, 0xe6, 0x25, + 0x29, 0xf2, 0x9f, 0xc1, 0xcb, 0xd9, 0x8e, 0x1d, 0x4d, 0x20, 0xa9, 0x41, 0x98, 0x0c, 0xb9, 0xda, + 0xa3, 0xfc, 0x34, 0x6f, 0x43, 0xff, 0xa3, 0x48, 0xbb, 0x09, 0xa2, 0xdf, 0x95, 0x43, 0x3a, 0xdf, + 0x17, 0x85, 0xcd, 0xba, 0x55, 0x55, 0x93, 0x76, 0x55, 0x3d, 0xa1, 0x29, 0xcd, 0x2b, 0x3e, 0x7a, + 0x11, 0x6f, 0x2b, 0x80, 0x23, 0x17, 0x13, 0x06, 0xa8, 0x39, 0x8f, 0xbb, 0xdb, 0x58, 0x32, 0x91, + 0x7f, 0x5b, 0xec, 0xac, 0xa1, 0xb5, 0x4a, 0x34, 0xf6, 0x28, 0x07, 0xb3, 0xd3, 0xe1, 0xc6, 0x0e, + 0xd8, 0x56, 0x14, 0x99, 0x9d, 0x71, 0x0d, 0x7b, 0x38, 0xe6, 0x70, 0x27, 0xb4, 0x61, 0xc5, 0x82, + 0x8a, 0xfb, 0x79, 0xeb, 0xa8, 0x31, 0x87, 0x42, 0x0e, 0xc7, 0x70, 0xda, 0x66, 0x6b, 0x5d, 0xb7, + 0x5b, 0xe5, 0x72, 0x1f, 0x5e, 0x31, 0x08, 0x58, 0x12, 0x18, 0x92, 0xad, 0x45, 0x70, 0xe7, 0xf0, + 0xb8, 0x66, 0x24, 0x4b, 0x49, 0xc3, 0x8f, 0xc9, 0xb2, 0x60, 0x24, 0x13, 0xeb, 0x3a, 0x3c, 0x3c, + 0xd6, 0xcc, 0xd8, 0x85, 0xb0, 0xc3, 0x63, 0x0c, 0x76, 0xb3, 0x33, 0xf1, 0x27, 0xd3, 0xd4, 0xdd, + 0x47, 0x98, 0x9d, 0x89, 0xf2, 0xc2, 0x7b, 0x8f, 0xf7, 0xe3, 0x90, 0x7d, 0x67, 0x4b, 0x8a, 0x44, + 0x1a, 0x72, 0x27, 0xa4, 0xe3, 0x25, 0x20, 0x77, 0x23, 0x84, 0xfd, 0x8e, 0x83, 0xfc, 0x5d, 0xff, + 0xd5, 0x0f, 0xae, 0xbe, 0xc2, 0xbc, 0x1e, 0xd2, 0x75, 0xa1, 0xb1, 0xfb, 0x71, 0xb6, 0x8d, 0x81, + 0xb4, 0x4d, 0x33, 0xb7, 0x2f, 0x09, 0xdf, 0xca, 0xb2, 0x43, 0xda, 0x04, 0x5e, 0xc0, 0x6e, 0x85, + 0x63, 0x2b, 0x45, 0xd2, 0xcc, 0x2e, 0x65, 0x07, 0x7a, 0x2b, 0x7b, 0x95, 0xe5, 0x5c, 0xc9, 0xf4, + 0x8d, 0xe2, 0xf5, 0xae, 0x81, 0x2e, 0x85, 0xd4, 0x0a, 0xa7, 0x6d, 0x2c, 0x6f, 0x99, 0x53, 0x36, + 0x9d, 0x16, 0x54, 0x41, 0x27, 0x94, 0xc8, 0x8f, 0xd0, 0x6d, 0x76, 0x6d, 0x05, 0x41, 0x24, 0x96, + 0x47, 0x15, 0x6c, 0x1a, 0xd9, 0x62, 0xf2, 0x11, 0x8e, 0x6e, 0xd8, 0xd5, 0xae, 0x19, 0x0f, 0x40, + 0xd2, 0xc8, 0x20, 0x68, 0xdf, 0x13, 0x6b, 0xc5, 0x7b, 0x54, 0xb7, 0x04, 0xfc, 0x64, 0x8f, 0x50, + 0x76, 0xc4, 0xc8, 0x7b, 0x62, 0x01, 0xcc, 0xee, 0x13, 0x80, 0x87, 0x97, 0xcb, 0xfd, 0x0c, 0xee, + 0x13, 0xa0, 0xbe, 0x60, 0x90, 0x7d, 0x02, 0xc6, 0xfa, 0x5d, 0x67, 0xbe, 0x4f, 0x7c, 0x40, 0x1a, + 0x5b, 0xb9, 0x40, 0xd7, 0x05, 0xc1, 0x58, 0xd7, 0x61, 0x0a, 0x7e, 0x93, 0xba, 0x5f, 0x3f, 0x0e, + 0x34, 0x69, 0xe8, 0xab, 0xc7, 0x0f, 0xfb, 0x30, 0x1b, 0x97, 0xcc, 0x7e, 0x52, 0x5c, 0xf1, 0x09, + 0x7f, 0x7d, 0x5e, 0x0a, 0x91, 0xb8, 0xd4, 0x81, 0xa4, 0xed, 0x97, 0x77, 0xff, 0xfb, 0x9b, 0x5b, + 0x2b, 0xbf, 0xf8, 0xe6, 0xd6, 0xca, 0xff, 0x7e, 0x73, 0x6b, 0xe5, 0xe7, 0xdf, 0xde, 0x7a, 0xef, + 0x17, 0xdf, 0xde, 0x7a, 0xef, 0x7f, 0xbe, 0xbd, 0xf5, 0xde, 0xd7, 0xef, 0xab, 0x3f, 0xa5, 0x79, + 0xfe, 0x2b, 0xe2, 0x0f, 0x62, 0x3e, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xf9, 0xe5, + 0xb2, 0x6e, 0x73, 0x00, 0x00, } // This is a compile-time assertion to ensure that this generated file @@ -630,7 +632,9 @@ type ClientCommandsHandler interface { DebugRunProfiler(context.Context, *pb.RpcDebugRunProfilerRequest) *pb.RpcDebugRunProfilerResponse DebugAccountSelectTrace(context.Context, *pb.RpcDebugAccountSelectTraceRequest) *pb.RpcDebugAccountSelectTraceResponse DebugAnystoreObjectChanges(context.Context, *pb.RpcDebugAnystoreObjectChangesRequest) *pb.RpcDebugAnystoreObjectChangesResponse - MetricsSetParameters(context.Context, *pb.RpcMetricsSetParametersRequest) *pb.RpcMetricsSetParametersResponse + DebugNetCheck(context.Context, *pb.RpcDebugNetCheckRequest) *pb.RpcDebugNetCheckResponse + DebugExportLog(context.Context, *pb.RpcDebugExportLogRequest) *pb.RpcDebugExportLogResponse + InitialSetParameters(context.Context, *pb.RpcInitialSetParametersRequest) *pb.RpcInitialSetParametersResponse // used only for lib-server via grpc // Streams not supported ### ListenSessionEvents(context.Context, *pb.StreamRequest) NotificationList(context.Context, *pb.RpcNotificationListRequest) *pb.RpcNotificationListResponse @@ -5328,23 +5332,63 @@ func DebugAnystoreObjectChanges(b []byte) (resp []byte) { return resp } -func MetricsSetParameters(b []byte) (resp []byte) { +func DebugNetCheck(b []byte) (resp []byte) { defer func() { if PanicHandler != nil { if r := recover(); r != nil { - resp, _ = (&pb.RpcMetricsSetParametersResponse{Error: &pb.RpcMetricsSetParametersResponseError{Code: pb.RpcMetricsSetParametersResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + resp, _ = (&pb.RpcDebugNetCheckResponse{Error: &pb.RpcDebugNetCheckResponseError{Code: pb.RpcDebugNetCheckResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() PanicHandler(r) } } }() - in := new(pb.RpcMetricsSetParametersRequest) + in := new(pb.RpcDebugNetCheckRequest) if err := in.Unmarshal(b); err != nil { - resp, _ = (&pb.RpcMetricsSetParametersResponse{Error: &pb.RpcMetricsSetParametersResponseError{Code: pb.RpcMetricsSetParametersResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + resp, _ = (&pb.RpcDebugNetCheckResponse{Error: &pb.RpcDebugNetCheckResponseError{Code: pb.RpcDebugNetCheckResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() return resp } - resp, _ = clientCommandsHandler.MetricsSetParameters(context.Background(), in).Marshal() + resp, _ = clientCommandsHandler.DebugNetCheck(context.Background(), in).Marshal() + return resp +} + +func DebugExportLog(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcDebugExportLogResponse{Error: &pb.RpcDebugExportLogResponseError{Code: pb.RpcDebugExportLogResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcDebugExportLogRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcDebugExportLogResponse{Error: &pb.RpcDebugExportLogResponseError{Code: pb.RpcDebugExportLogResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.DebugExportLog(context.Background(), in).Marshal() + return resp +} + +func InitialSetParameters(b []byte) (resp []byte) { + defer func() { + if PanicHandler != nil { + if r := recover(); r != nil { + resp, _ = (&pb.RpcInitialSetParametersResponse{Error: &pb.RpcInitialSetParametersResponseError{Code: pb.RpcInitialSetParametersResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal() + PanicHandler(r) + } + } + }() + + in := new(pb.RpcInitialSetParametersRequest) + if err := in.Unmarshal(b); err != nil { + resp, _ = (&pb.RpcInitialSetParametersResponse{Error: &pb.RpcInitialSetParametersResponseError{Code: pb.RpcInitialSetParametersResponseError_BAD_INPUT, Description: err.Error()}}).Marshal() + return resp + } + + resp, _ = clientCommandsHandler.InitialSetParameters(context.Background(), in).Marshal() return resp } @@ -6398,8 +6442,12 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) { cd = DebugAccountSelectTrace(data) case "DebugAnystoreObjectChanges": cd = DebugAnystoreObjectChanges(data) - case "MetricsSetParameters": - cd = MetricsSetParameters(data) + case "DebugNetCheck": + cd = DebugNetCheck(data) + case "DebugExportLog": + cd = DebugExportLog(data) + case "InitialSetParameters": + cd = InitialSetParameters(data) case "NotificationList": cd = NotificationList(data) case "NotificationReply": @@ -9728,19 +9776,47 @@ func (h *ClientCommandsHandlerProxy) DebugAnystoreObjectChanges(ctx context.Cont call, _ := actualCall(ctx, req) return call.(*pb.RpcDebugAnystoreObjectChangesResponse) } -func (h *ClientCommandsHandlerProxy) MetricsSetParameters(ctx context.Context, req *pb.RpcMetricsSetParametersRequest) *pb.RpcMetricsSetParametersResponse { +func (h *ClientCommandsHandlerProxy) DebugNetCheck(ctx context.Context, req *pb.RpcDebugNetCheckRequest) *pb.RpcDebugNetCheckResponse { actualCall := func(ctx context.Context, req any) (any, error) { - return h.client.MetricsSetParameters(ctx, req.(*pb.RpcMetricsSetParametersRequest)), nil + return h.client.DebugNetCheck(ctx, req.(*pb.RpcDebugNetCheckRequest)), nil } for _, interceptor := range h.interceptors { toCall := actualCall currentInterceptor := interceptor actualCall = func(ctx context.Context, req any) (any, error) { - return currentInterceptor(ctx, req, "MetricsSetParameters", toCall) + return currentInterceptor(ctx, req, "DebugNetCheck", toCall) } } call, _ := actualCall(ctx, req) - return call.(*pb.RpcMetricsSetParametersResponse) + return call.(*pb.RpcDebugNetCheckResponse) +} +func (h *ClientCommandsHandlerProxy) DebugExportLog(ctx context.Context, req *pb.RpcDebugExportLogRequest) *pb.RpcDebugExportLogResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.DebugExportLog(ctx, req.(*pb.RpcDebugExportLogRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "DebugExportLog", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcDebugExportLogResponse) +} +func (h *ClientCommandsHandlerProxy) InitialSetParameters(ctx context.Context, req *pb.RpcInitialSetParametersRequest) *pb.RpcInitialSetParametersResponse { + actualCall := func(ctx context.Context, req any) (any, error) { + return h.client.InitialSetParameters(ctx, req.(*pb.RpcInitialSetParametersRequest)), nil + } + for _, interceptor := range h.interceptors { + toCall := actualCall + currentInterceptor := interceptor + actualCall = func(ctx context.Context, req any) (any, error) { + return currentInterceptor(ctx, req, "InitialSetParameters", toCall) + } + } + call, _ := actualCall(ctx, req) + return call.(*pb.RpcInitialSetParametersResponse) } func (h *ClientCommandsHandlerProxy) NotificationList(ctx context.Context, req *pb.RpcNotificationListRequest) *pb.RpcNotificationListResponse { actualCall := func(ctx context.Context, req any) (any, error) { diff --git a/cmd/debugtree/debugtree.go b/cmd/debugtree/debugtree.go index 0bb82fc7e..43135ad7e 100644 --- a/cmd/debugtree/debugtree.go +++ b/cmd/debugtree/debugtree.go @@ -3,6 +3,7 @@ package main import ( + "context" "encoding/json" "flag" "fmt" @@ -142,8 +143,15 @@ func main() { if err != nil { log.Fatal("can't create temp file:", err) } - g := graphviz.New() - g.Render(gvo, graphviz.SVG, tf) + ctx := context.Background() + g, err := graphviz.New(ctx) + if err != nil { + log.Fatal("can't open graphviz:", err) + } + err = g.Render(ctx, gvo, graphviz.SVG, tf) + if err != nil { + log.Fatal("can't render graphviz:", err) + } fmt.Println("tree file:", tf.Name()) tf.Close() open(tf.Name()) diff --git a/core/anytype/account/service.go b/core/anytype/account/service.go index 7867556c3..66a4659e2 100644 --- a/core/anytype/account/service.go +++ b/core/anytype/account/service.go @@ -164,6 +164,7 @@ func (s *service) GetSpaceInfo(ctx context.Context, spaceId string) (*model.Acco getInfo.AccountSpaceId = spaceId getInfo.SpaceViewId = spaceViewId getInfo.HomeObjectId = ids.Home + getInfo.WorkspaceObjectId = ids.Workspace getInfo.WidgetsId = ids.Widgets getInfo.ArchiveObjectId = ids.Archive return getInfo, nil diff --git a/core/application/profiler.go b/core/application/profiler.go index 9007cf1fd..9531a7115 100644 --- a/core/application/profiler.go +++ b/core/application/profiler.go @@ -19,6 +19,8 @@ import ( "github.com/anyproto/anytype-heart/util/debug" ) +var ErrNoFolder = fmt.Errorf("no folder provided") + func (s *Service) RunProfiler(ctx context.Context, seconds int) (string, error) { // Start inFlightTraceBuf, err := s.traceRecorder.stopAndGetInFlightTrace() @@ -115,6 +117,32 @@ func (s *Service) SaveLoginTrace(dir string) (string, error) { return s.traceRecorder.save(dir) } +// empty dir means use system temp dir +func (s *Service) SaveLog(srcPath, destDir string) (string, error) { + if srcPath == "" { + return "", ErrNoFolder + } + targetFile, err := os.CreateTemp(destDir, "anytype-log-*.zip") + if err != nil { + return "", fmt.Errorf("create temp file: %w", err) + } + + file, err := os.Open(srcPath) + if err != nil { + return "", fmt.Errorf("failed to open source file: %w", err) + } + defer file.Close() + + err = createZipArchive(targetFile, []zipFile{ + {name: "anytype.log", data: file}, + }) + if err != nil { + return "", fmt.Errorf("failed to create zip archive: %w", err) + } + + return targetFile.Name(), targetFile.Close() +} + // traceRecorder is a helper to start and stop flight trace recorder type traceRecorder struct { lock sync.Mutex diff --git a/core/block/backlinks/watcher.go b/core/block/backlinks/watcher.go index 6fa6814a4..b0d728738 100644 --- a/core/block/backlinks/watcher.go +++ b/core/block/backlinks/watcher.go @@ -25,7 +25,11 @@ import ( "github.com/anyproto/anytype-heart/util/slice" ) -const CName = "backlinks-update-watcher" +const ( + CName = "backlinks-update-watcher" + + defaultAggregationInterval = time.Second * 5 +) var log = logging.Logger(CName) @@ -38,53 +42,69 @@ type backLinksUpdate struct { removed []string } -type UpdateWatcher struct { +type UpdateWatcher interface { app.ComponentRunnable + FlushUpdates() +} + +type watcher struct { updater backlinksUpdater store objectstore.ObjectStore resolver idresolver.Resolver spaceService space.Service - infoBatch *mb.MB + infoBatch *mb.MB + lock sync.Mutex + accumulatedBacklinks map[string]*backLinksUpdate + aggregationInterval time.Duration } -func New() app.Component { - return &UpdateWatcher{} +func New() UpdateWatcher { + return &watcher{} } -func (uw *UpdateWatcher) Name() string { +func (w *watcher) Name() string { return CName } -func (uw *UpdateWatcher) Init(a *app.App) error { - uw.updater = app.MustComponent[backlinksUpdater](a) - uw.store = app.MustComponent[objectstore.ObjectStore](a) - uw.resolver = app.MustComponent[idresolver.Resolver](a) - uw.spaceService = app.MustComponent[space.Service](a) - uw.infoBatch = mb.New(0) +func (w *watcher) Init(a *app.App) error { + w.updater = app.MustComponent[backlinksUpdater](a) + w.store = app.MustComponent[objectstore.ObjectStore](a) + w.resolver = app.MustComponent[idresolver.Resolver](a) + w.spaceService = app.MustComponent[space.Service](a) + w.infoBatch = mb.New(0) + w.accumulatedBacklinks = make(map[string]*backLinksUpdate) + w.aggregationInterval = defaultAggregationInterval return nil } -func (uw *UpdateWatcher) Close(context.Context) error { - if err := uw.infoBatch.Close(); err != nil { +func (w *watcher) Close(context.Context) error { + if err := w.infoBatch.Close(); err != nil { log.Errorf("failed to close message batch: %v", err) } return nil } -func (uw *UpdateWatcher) Run(context.Context) error { - uw.updater.SubscribeLinksUpdate(func(info spaceindex.LinksUpdateInfo) { - if err := uw.infoBatch.Add(info); err != nil { +func (w *watcher) Run(context.Context) error { + w.updater.SubscribeLinksUpdate(func(info spaceindex.LinksUpdateInfo) { + if err := w.infoBatch.Add(info); err != nil { log.With("objectId", info.LinksFromId).Errorf("failed to add backlinks update info to message batch: %v", err) } }) - go uw.backlinksUpdateHandler() + go w.backlinksUpdateHandler() return nil } +func (w *watcher) FlushUpdates() { + w.lock.Lock() + defer w.lock.Unlock() + + w.updateAccumulatedBacklinks() +} + func applyUpdates(m map[string]*backLinksUpdate, update spaceindex.LinksUpdateInfo) { if update.LinksFromId == "" { return @@ -115,71 +135,69 @@ func applyUpdates(m map[string]*backLinksUpdate, update spaceindex.LinksUpdateIn } } -func (uw *UpdateWatcher) backlinksUpdateHandler() { +func (w *watcher) backlinksUpdateHandler() { var ( - accumulatedBacklinks = make(map[string]*backLinksUpdate) - l sync.Mutex - lastReceivedUpdates time.Time - closedCh = make(chan struct{}) - aggregationInterval = time.Second * 5 + lastReceivedUpdates time.Time + closedCh = make(chan struct{}) ) defer close(closedCh) go func() { - process := func() { - log.Debugf("updating backlinks for %d objects", len(accumulatedBacklinks)) - for id, updates := range accumulatedBacklinks { - uw.updateBackLinksInObject(id, updates) - } - accumulatedBacklinks = make(map[string]*backLinksUpdate) - } for { select { case <-closedCh: - l.Lock() - process() - l.Unlock() + w.lock.Lock() + w.updateAccumulatedBacklinks() + w.lock.Unlock() return - case <-time.After(aggregationInterval): - l.Lock() - if time.Since(lastReceivedUpdates) < aggregationInterval || len(accumulatedBacklinks) == 0 { - l.Unlock() + case <-time.After(w.aggregationInterval): + w.lock.Lock() + if time.Since(lastReceivedUpdates) < w.aggregationInterval || len(w.accumulatedBacklinks) == 0 { + w.lock.Unlock() continue } - process() - l.Unlock() + w.updateAccumulatedBacklinks() + w.lock.Unlock() } } }() for { - msgs := uw.infoBatch.Wait() + msgs := w.infoBatch.Wait() if len(msgs) == 0 { return } - l.Lock() + w.lock.Lock() for _, msg := range msgs { info, ok := msg.(spaceindex.LinksUpdateInfo) if !ok || hasSelfLinks(info) { continue } - applyUpdates(accumulatedBacklinks, info) + applyUpdates(w.accumulatedBacklinks, info) } lastReceivedUpdates = time.Now() - l.Unlock() + w.lock.Unlock() } } -func (uw *UpdateWatcher) updateBackLinksInObject(id string, backlinksUpdate *backLinksUpdate) { - spaceId, err := uw.resolver.ResolveSpaceID(id) +func (w *watcher) updateAccumulatedBacklinks() { + log.Debugf("updating backlinks for %d objects", len(w.accumulatedBacklinks)) + for id, updates := range w.accumulatedBacklinks { + w.updateBackLinksInObject(id, updates) + } + w.accumulatedBacklinks = make(map[string]*backLinksUpdate) +} + +func (w *watcher) updateBackLinksInObject(id string, backlinksUpdate *backLinksUpdate) { + spaceId, err := w.resolver.ResolveSpaceID(id) if err != nil { log.With("objectId", id).Errorf("failed to resolve space id for object: %v", err) return } - spc, err := uw.spaceService.Get(context.Background(), spaceId) + spc, err := w.spaceService.Get(context.Background(), spaceId) if err != nil { log.With("objectId", id, "spaceId", spaceId).Errorf("failed to get space: %v", err) return @@ -206,7 +224,7 @@ func (uw *UpdateWatcher) updateBackLinksInObject(id string, backlinksUpdate *bac } err = spc.DoLockedIfNotExists(id, func() error { - return uw.store.SpaceIndex(spaceId).ModifyObjectDetails(id, func(details *domain.Details) (*domain.Details, bool, error) { + return w.store.SpaceIndex(spaceId).ModifyObjectDetails(id, func(details *domain.Details) (*domain.Details, bool, error) { return updateBacklinks(details, backlinksUpdate) }) }) diff --git a/core/block/backlinks/watcher_test.go b/core/block/backlinks/watcher_test.go new file mode 100644 index 000000000..cbbc96af5 --- /dev/null +++ b/core/block/backlinks/watcher_test.go @@ -0,0 +1,177 @@ +package backlinks + +import ( + "testing" + "time" + + "github.com/anyproto/any-sync/app/ocache" + "github.com/cheggaaa/mb" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/anyproto/anytype-heart/core/block/object/idresolver/mock_idresolver" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceindex" + "github.com/anyproto/anytype-heart/space/clientspace/mock_clientspace" + "github.com/anyproto/anytype-heart/space/mock_space" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +const spaceId = "spc1" + +type testUpdater struct { + callback func(info spaceindex.LinksUpdateInfo) + runFunc func(callback func(info spaceindex.LinksUpdateInfo)) +} + +func (u *testUpdater) SubscribeLinksUpdate(callback func(info spaceindex.LinksUpdateInfo)) { + u.callback = callback +} + +func (u *testUpdater) start() { + go u.runFunc(u.callback) +} + +type fixture struct { + store *objectstore.StoreFixture + resolver *mock_idresolver.MockResolver + spaceService *mock_space.MockService + updater *testUpdater + *watcher +} + +func newFixture(t *testing.T, aggregationInterval time.Duration) *fixture { + updater := &testUpdater{} + store := objectstore.NewStoreFixture(t) + resolver := mock_idresolver.NewMockResolver(t) + spaceSvc := mock_space.NewMockService(t) + + w := &watcher{ + updater: updater, + store: store, + resolver: resolver, + spaceService: spaceSvc, + + aggregationInterval: aggregationInterval, + infoBatch: mb.New(0), + accumulatedBacklinks: make(map[string]*backLinksUpdate), + } + + return &fixture{ + store: store, + resolver: resolver, + spaceService: spaceSvc, + updater: updater, + watcher: w, + } +} + +func TestWatcher_Run(t *testing.T) { + t.Run("backlinks update asynchronously", func(t *testing.T) { + // given + interval := 500 * time.Millisecond + f := newFixture(t, interval) + + f.resolver.EXPECT().ResolveSpaceID(mock.Anything).Return(spaceId, nil) + + f.updater.runFunc = func(callback func(info spaceindex.LinksUpdateInfo)) { + callback(spaceindex.LinksUpdateInfo{ + LinksFromId: "obj1", + Added: []string{"obj2", "obj3"}, + Removed: nil, + }) + time.Sleep(interval / 2) + callback(spaceindex.LinksUpdateInfo{ + LinksFromId: "obj1", + Added: []string{"obj4", "obj5"}, + Removed: []string{"obj2"}, + }) + time.Sleep(interval / 2) + callback(spaceindex.LinksUpdateInfo{ + LinksFromId: "obj1", + Added: []string{"obj6"}, + Removed: []string{"obj5"}, + }) + } + + spc := mock_clientspace.NewMockSpace(t) + f.spaceService.EXPECT().Get(mock.Anything, spaceId).Return(spc, nil) + + spc.EXPECT().DoLockedIfNotExists(mock.Anything, mock.Anything).RunAndReturn(func(id string, apply func() error) error { + if id == "obj2" { + return ocache.ErrExists + } + return nil + }) + + spc.EXPECT().Do(mock.Anything, mock.Anything).Return(nil) + + // when + err := f.watcher.Run(nil) + require.NoError(t, err) + + f.updater.start() + + time.Sleep(4 * interval) + err = f.watcher.Close(nil) + + // then + assert.NoError(t, err) + }) +} + +func TestWatcher_updateAccumulatedBacklinks(t *testing.T) { + t.Run("no errors", func(t *testing.T) { + // given + f := newFixture(t, time.Second) + f.resolver.EXPECT().ResolveSpaceID(mock.Anything).Return(spaceId, nil) + + f.store.AddObjects(t, spaceId, []spaceindex.TestObject{{ + bundle.RelationKeyId: pbtypes.String("obj1"), + bundle.RelationKeySpaceId: pbtypes.String(spaceId), + bundle.RelationKeyBacklinks: pbtypes.StringList([]string{"obj4", "obj5", "obj6"}), + }, { + bundle.RelationKeyId: pbtypes.String("obj3"), + bundle.RelationKeySpaceId: pbtypes.String(spaceId), + bundle.RelationKeyBacklinks: pbtypes.StringList([]string{"obj1", "obj2", "obj4"}), + }}) + + spc := mock_clientspace.NewMockSpace(t) + f.spaceService.EXPECT().Get(mock.Anything, spaceId).Return(spc, nil) + + spc.EXPECT().DoLockedIfNotExists(mock.Anything, mock.Anything).RunAndReturn(func(id string, apply func() error) error { + if id == "obj2" { + return ocache.ErrExists + } + return apply() + }) + + spc.EXPECT().Do(mock.Anything, mock.Anything).Return(nil).Once() + + f.watcher.accumulatedBacklinks = map[string]*backLinksUpdate{ + "obj1": { + added: []string{"obj2", "obj3"}, + removed: []string{"obj4", "obj5"}, + }, + "obj2": { + added: []string{"obj4", "obj5"}, + }, + "obj3": { + removed: []string{"obj1", "obj4"}, + }, + } + + // when + f.watcher.updateAccumulatedBacklinks() + + // then + details, err := f.store.SpaceIndex(spaceId).GetDetails("obj1") + require.NoError(t, err) + assert.Equal(t, []string{"obj6", "obj2", "obj3"}, pbtypes.GetStringList(details.Details, bundle.RelationKeyBacklinks.String())) + details, err = f.store.SpaceIndex(spaceId).GetDetails("obj3") + require.NoError(t, err) + assert.Equal(t, []string{"obj2"}, pbtypes.GetStringList(details.Details, bundle.RelationKeyBacklinks.String())) + }) +} diff --git a/core/block/collection/service.go b/core/block/collection/service.go index cf3e56736..65d19a3ad 100644 --- a/core/block/collection/service.go +++ b/core/block/collection/service.go @@ -6,6 +6,7 @@ import ( "github.com/anyproto/any-sync/app" "github.com/samber/lo" + "github.com/anyproto/anytype-heart/core/block/backlinks" "github.com/anyproto/anytype-heart/core/block/cache" "github.com/anyproto/anytype-heart/core/block/editor/basic" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" @@ -26,10 +27,11 @@ import ( var log = logging.Logger("collection-service") type Service struct { - lock *sync.RWMutex - collections map[string]map[string]chan []string - picker cache.ObjectGetter - objectStore objectstore.ObjectStore + lock *sync.RWMutex + collections map[string]map[string]chan []string + picker cache.ObjectGetter + objectStore objectstore.ObjectStore + backlinksUpdater backlinks.UpdateWatcher } func New() *Service { @@ -42,6 +44,7 @@ func New() *Service { func (s *Service) Init(a *app.App) (err error) { s.picker = app.MustComponent[cache.ObjectGetter](a) s.objectStore = app.MustComponent[objectstore.ObjectStore](a) + s.backlinksUpdater = app.MustComponent[backlinks.UpdateWatcher](a) return nil } @@ -54,8 +57,9 @@ func (s *Service) CollectionType() string { } func (s *Service) Add(ctx session.Context, req *pb.RpcObjectCollectionAddRequest) error { - return s.updateCollection(ctx, req.ContextId, func(col []string) []string { - toAdd := slice.Difference(req.ObjectIds, col) + var toAdd []string + err := s.updateCollection(ctx, req.ContextId, func(col []string) []string { + toAdd = slice.Difference(req.ObjectIds, col) pos := slice.FindPos(col, req.AfterId) if pos >= 0 { col = slice.Insert(col, pos+1, toAdd...) @@ -64,6 +68,16 @@ func (s *Service) Add(ctx session.Context, req *pb.RpcObjectCollectionAddRequest } return col }) + if err != nil { + return err + } + + // we update backlinks of objects added to collection synchronously to avoid object rerender after backlinks accumulation interval + if len(toAdd) != 0 { + s.backlinksUpdater.FlushUpdates() + } + + return nil } func (s *Service) Remove(ctx session.Context, req *pb.RpcObjectCollectionRemoveRequest) error { diff --git a/core/block/collection/service_test.go b/core/block/collection/service_test.go index ba145b47a..404dc253e 100644 --- a/core/block/collection/service_test.go +++ b/core/block/collection/service_test.go @@ -2,6 +2,7 @@ package collection import ( "context" + "fmt" "sync" "testing" @@ -15,27 +16,49 @@ import ( "github.com/anyproto/anytype-heart/core/block/editor/template" "github.com/anyproto/anytype-heart/core/block/simple/dataview" "github.com/anyproto/anytype-heart/core/domain" + "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) +const collectionID = "collectionID" + type testPicker struct { - sb smartblock.SmartBlock + sbMap map[string]smartblock.SmartBlock } -func (t *testPicker) GetObject(ctx context.Context, id string) (sb smartblock.SmartBlock, err error) { - return t.sb, nil +func (t *testPicker) GetObject(ctx context.Context, id string) (smartblock.SmartBlock, error) { + if t.sbMap == nil { + return nil, fmt.Errorf("not found") + } + sb, found := t.sbMap[id] + if !found { + return nil, fmt.Errorf("not found") + } + return sb, nil } func (t *testPicker) GetObjectByFullID(ctx context.Context, id domain.FullID) (sb smartblock.SmartBlock, err error) { - return t.sb, nil + return t.GetObject(ctx, id.ObjectID) } func (t *testPicker) Init(a *app.App) error { return nil } -func (t *testPicker) Name() string { return "" } +func (t *testPicker) Name() string { return "test.picker" } + +type testFlusher struct{} + +func (tf *testFlusher) Name() string { return "test.flusher" } + +func (tf *testFlusher) Init(*app.App) error { return nil } + +func (tf *testFlusher) Run(context.Context) error { return nil } + +func (tf *testFlusher) Close(context.Context) error { return nil } + +func (tf *testFlusher) FlushUpdates() {} type fixture struct { picker *testPicker @@ -44,12 +67,14 @@ type fixture struct { } func newFixture(t *testing.T) *fixture { - picker := &testPicker{} a := &app.App{} + picker := &testPicker{} + flusher := &testFlusher{} objectStore := objectstore.NewStoreFixture(t) a.Register(picker) a.Register(objectStore) + a.Register(flusher) s := New() err := s.Init(a) @@ -58,11 +83,12 @@ func newFixture(t *testing.T) *fixture { } func TestBroadcast(t *testing.T) { - const collectionID = "collectionID" sb := smarttest.New(collectionID) s := newFixture(t) - s.picker.sb = sb + s.picker.sbMap = map[string]smartblock.SmartBlock{ + collectionID: sb, + } _, subCh1, err := s.SubscribeForCollection(collectionID, "sub1") require.NoError(t, err) @@ -192,3 +218,29 @@ func TestSetObjectTypeToViews(t *testing.T) { }) } } + +func TestService_Add(t *testing.T) { + t.Run("add new objects to collection", func(t *testing.T) { + // given + coll := smarttest.New(collectionID) + obj1 := smarttest.New("obj1") + obj2 := smarttest.New("obj2") + + s := newFixture(t) + s.picker.sbMap = map[string]smartblock.SmartBlock{ + collectionID: coll, + "obj1": obj1, + "obj2": obj2, + } + + // when + err := s.Add(nil, &pb.RpcObjectCollectionAddRequest{ + ContextId: collectionID, + ObjectIds: []string{"obj1", "obj2"}, + }) + + // then + assert.NoError(t, err) + assert.Equal(t, []string{"obj1", "obj2"}, coll.NewState().GetStoreSlice(template.CollectionStoreKey)) + }) +} diff --git a/core/block/delete.go b/core/block/delete.go index e21933bb7..3aa6ba666 100644 --- a/core/block/delete.go +++ b/core/block/delete.go @@ -131,7 +131,7 @@ func (s *Service) OnDelete(id domain.FullID, workspaceRemove func() error) error b.ObjectCloseAllSessions() st := b.NewState() isFavorite := st.LocalDetails().GetBool(bundle.RelationKeyIsFavorite) - if err := s.detailsService.SetIsFavorite(id.ObjectID, isFavorite); err != nil { + if err := s.detailsService.SetIsFavorite(id.ObjectID, isFavorite, false); err != nil { log.With("objectId", id).Errorf("failed to favorite object: %v", err) } b.SetIsDeleted() diff --git a/core/block/detailservice/mock_detailservice/mock_Service.go b/core/block/detailservice/mock_detailservice/mock_Service.go index c49bc7a60..c668f4df4 100644 --- a/core/block/detailservice/mock_detailservice/mock_Service.go +++ b/core/block/detailservice/mock_detailservice/mock_Service.go @@ -568,17 +568,17 @@ func (_c *MockService_SetIsArchived_Call) RunAndReturn(run func(string, bool) er return _c } -// SetIsFavorite provides a mock function with given fields: objectId, isFavorite -func (_m *MockService) SetIsFavorite(objectId string, isFavorite bool) error { - ret := _m.Called(objectId, isFavorite) +// SetIsFavorite provides a mock function with given fields: objectId, isFavorite, createWidget +func (_m *MockService) SetIsFavorite(objectId string, isFavorite bool, createWidget bool) error { + ret := _m.Called(objectId, isFavorite, createWidget) if len(ret) == 0 { panic("no return value specified for SetIsFavorite") } var r0 error - if rf, ok := ret.Get(0).(func(string, bool) error); ok { - r0 = rf(objectId, isFavorite) + if rf, ok := ret.Get(0).(func(string, bool, bool) error); ok { + r0 = rf(objectId, isFavorite, createWidget) } else { r0 = ret.Error(0) } @@ -594,13 +594,14 @@ type MockService_SetIsFavorite_Call struct { // SetIsFavorite is a helper method to define mock.On call // - objectId string // - isFavorite bool -func (_e *MockService_Expecter) SetIsFavorite(objectId interface{}, isFavorite interface{}) *MockService_SetIsFavorite_Call { - return &MockService_SetIsFavorite_Call{Call: _e.mock.On("SetIsFavorite", objectId, isFavorite)} +// - createWidget bool +func (_e *MockService_Expecter) SetIsFavorite(objectId interface{}, isFavorite interface{}, createWidget interface{}) *MockService_SetIsFavorite_Call { + return &MockService_SetIsFavorite_Call{Call: _e.mock.On("SetIsFavorite", objectId, isFavorite, createWidget)} } -func (_c *MockService_SetIsFavorite_Call) Run(run func(objectId string, isFavorite bool)) *MockService_SetIsFavorite_Call { +func (_c *MockService_SetIsFavorite_Call) Run(run func(objectId string, isFavorite bool, createWidget bool)) *MockService_SetIsFavorite_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(string), args[1].(bool)) + run(args[0].(string), args[1].(bool), args[2].(bool)) }) return _c } @@ -610,7 +611,7 @@ func (_c *MockService_SetIsFavorite_Call) Return(_a0 error) *MockService_SetIsFa return _c } -func (_c *MockService_SetIsFavorite_Call) RunAndReturn(run func(string, bool) error) *MockService_SetIsFavorite_Call { +func (_c *MockService_SetIsFavorite_Call) RunAndReturn(run func(string, bool, bool) error) *MockService_SetIsFavorite_Call { _c.Call.Return(run) return _c } diff --git a/core/block/detailservice/service.go b/core/block/detailservice/service.go index 56dd1939f..c684ae39c 100644 --- a/core/block/detailservice/service.go +++ b/core/block/detailservice/service.go @@ -44,7 +44,7 @@ type Service interface { SetSpaceInfo(spaceId string, details *domain.Details) error SetWorkspaceDashboardId(ctx session.Context, workspaceId string, id string) (setId string, err error) - SetIsFavorite(objectId string, isFavorite bool) error + SetIsFavorite(objectId string, isFavorite, createWidget bool) error SetIsArchived(objectId string, isArchived bool) error SetListIsFavorite(objectIds []string, isFavorite bool) error SetListIsArchived(objectIds []string, isArchived bool) error diff --git a/core/block/detailservice/service_test.go b/core/block/detailservice/service_test.go index bd19ccd1d..041fe4ba1 100644 --- a/core/block/detailservice/service_test.go +++ b/core/block/detailservice/service_test.go @@ -324,19 +324,27 @@ func TestService_SetListIsFavorite(t *testing.T) { {bundle.RelationKeyId: domain.String("obj2"), bundle.RelationKeySpaceId: domain.String(spaceId)}, {bundle.RelationKeyId: domain.String("obj3"), bundle.RelationKeySpaceId: domain.String(spaceId)}, } - homeId = "home" + homeId = "home" + widgetId = "widget" ) t.Run("no error on favoriting", func(t *testing.T) { // given fx := newFixture(t) - sb := smarttest.New(homeId) - sb.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{}})) + home := smarttest.New(homeId) + home.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{}})) + widget := smarttest.New(widgetId) + widget.AddBlock(simple.New(&model.Block{Id: widgetId, ChildrenIds: []string{}})) fx.store.AddObjects(t, spaceId, objects) - fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId}) + fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId, Widgets: widgetId}) fx.getter.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) { - require.Equal(t, homeId, objectId) - return editor.NewDashboard(sb, fx.store.SpaceIndex(spaceId), nil), nil + switch objectId { + case homeId: + return editor.NewDashboard(home, fx.store.SpaceIndex(spaceId), nil), nil + case widgetId: + return editor.NewWidgetObject(widget, fx.store.SpaceIndex(spaceId), nil), nil + } + return nil, fmt.Errorf("failed to get object") }) // when @@ -344,22 +352,30 @@ func TestService_SetListIsFavorite(t *testing.T) { // then assert.NoError(t, err) - assert.Len(t, sb.Blocks(), 4) + assert.Len(t, home.Blocks(), 4) + assert.Len(t, widget.Blocks(), 3) }) t.Run("no error on unfavoriting", func(t *testing.T) { // given fx := newFixture(t) - sb := smarttest.New(homeId) - sb.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{"obj1", "obj2", "obj3"}})) - sb.AddBlock(simple.New(&model.Block{Id: "obj1", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj1"}}})) - sb.AddBlock(simple.New(&model.Block{Id: "obj2", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj2"}}})) - sb.AddBlock(simple.New(&model.Block{Id: "obj3", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj3"}}})) + home := smarttest.New(homeId) + home.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{"obj1", "obj2", "obj3"}})) + home.AddBlock(simple.New(&model.Block{Id: "obj1", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj1"}}})) + home.AddBlock(simple.New(&model.Block{Id: "obj2", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj2"}}})) + home.AddBlock(simple.New(&model.Block{Id: "obj3", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj3"}}})) + widget := smarttest.New(widgetId) + widget.AddBlock(simple.New(&model.Block{Id: widgetId, ChildrenIds: []string{}})) fx.store.AddObjects(t, spaceId, objects) - fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId}) + fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId, Widgets: widgetId}) fx.getter.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) { - require.Equal(t, homeId, objectId) - return editor.NewDashboard(sb, fx.store.SpaceIndex(spaceId), nil), nil + switch objectId { + case homeId: + return editor.NewDashboard(home, fx.store.SpaceIndex(spaceId), nil), nil + case widgetId: + return editor.NewWidgetObject(widget, fx.store.SpaceIndex(spaceId), nil), nil + } + return nil, fmt.Errorf("failed to get object") }) // when @@ -367,24 +383,32 @@ func TestService_SetListIsFavorite(t *testing.T) { // then assert.NoError(t, err) - assert.Len(t, sb.Blocks(), 2) + assert.Len(t, home.Blocks(), 2) + assert.Len(t, widget.Blocks(), 1) }) t.Run("some updates failed", func(t *testing.T) { // given fx := newFixture(t) - sb := smarttest.New(homeId) - sb.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{}})) + home := smarttest.New(homeId) + home.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{}})) + widget := smarttest.New(widgetId) + widget.AddBlock(simple.New(&model.Block{Id: widgetId, ChildrenIds: []string{}})) fx.store.AddObjects(t, spaceId, objects) - fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId}) + fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId, Widgets: widgetId}) flag := false fx.getter.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) { - require.Equal(t, homeId, objectId) - if flag { - return nil, fmt.Errorf("unexpected error") + switch objectId { + case homeId: + if flag { + return nil, fmt.Errorf("unexpected error") + } + flag = true + return editor.NewDashboard(home, fx.store.SpaceIndex(spaceId), nil), nil + case widgetId: + return editor.NewWidgetObject(widget, fx.store.SpaceIndex(spaceId), nil), nil } - flag = true - return editor.NewDashboard(sb, fx.store.SpaceIndex(spaceId), nil), nil + return nil, fmt.Errorf("failed to get object") }) // when @@ -392,14 +416,15 @@ func TestService_SetListIsFavorite(t *testing.T) { // then assert.NoError(t, err) - assert.Len(t, sb.Blocks(), 2) + assert.Len(t, home.Blocks(), 2) + assert.Len(t, widget.Blocks(), 3) }) t.Run("all updates failed", func(t *testing.T) { // given fx := newFixture(t) fx.store.AddObjects(t, spaceId, objects) - fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId}) + fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId, Widgets: widgetId}) fx.getter.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) { require.Equal(t, homeId, objectId) return nil, fmt.Errorf("unexpected error") diff --git a/core/block/detailservice/set_details.go b/core/block/detailservice/set_details.go index 8f1791b4b..f42cd5ba0 100644 --- a/core/block/detailservice/set_details.go +++ b/core/block/detailservice/set_details.go @@ -11,8 +11,11 @@ import ( "github.com/anyproto/anytype-heart/core/block/editor" "github.com/anyproto/anytype-heart/core/block/editor/collection" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" - "github.com/anyproto/anytype-heart/core/domain" + "github.com/anyproto/anytype-heart/core/block/editor/state" + "github.com/anyproto/anytype-heart/core/block/editor/widget" + "github.com/anyproto/anytype-heart/core/block/simple" "github.com/anyproto/anytype-heart/core/session" + "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" @@ -56,7 +59,7 @@ func (s *service) SetWorkspaceDashboardId(ctx session.Context, workspaceId strin return id, err } -func (s *service) SetIsFavorite(objectId string, isFavorite bool) error { +func (s *service) SetIsFavorite(objectId string, isFavorite, createWidget bool) error { spaceID, err := s.resolver.ResolveSpaceID(objectId) if err != nil { return fmt.Errorf("resolve spaceID: %w", err) @@ -65,7 +68,18 @@ func (s *service) SetIsFavorite(objectId string, isFavorite bool) error { if err != nil { return fmt.Errorf("get space: %w", err) } - return s.objectLinksCollectionModify(spc.DerivedIDs().Home, objectId, isFavorite) + if err = s.objectLinksCollectionModify(spc.DerivedIDs().Home, objectId, isFavorite); err != nil { + return err + } + + if createWidget && isFavorite { + err = s.createFavoriteWidget(spc.DerivedIDs().Widgets) + if err != nil { + log.Error("failed to create favorite widget", zap.Error(err)) + } + } + + return nil } func (s *service) SetIsArchived(objectId string, isArchived bool) error { @@ -99,9 +113,9 @@ func (s *service) SetListIsFavorite(objectIds []string, isFavorite bool) error { return err } - for _, id := range ids { + for i, id := range ids { // TODO Set list of ids at once - err := s.SetIsFavorite(id, isFavorite) + err := s.SetIsFavorite(id, isFavorite, i == 0) if err != nil { log.Error("failed to favorite object", zap.String("objectId", id), zap.Error(err)) resultError = errors.Join(resultError, err) @@ -228,3 +242,42 @@ func (s *service) modifyArchiveLinks( } return } + +func (s *service) createFavoriteWidget(widgetObjectId string) error { + return cache.DoState(s.objectGetter, widgetObjectId, func(st *state.State, w widget.Widget) (err error) { + var favoriteBlockFound bool + err = st.Iterate(func(b simple.Block) (isContinue bool) { + link := b.Model().GetLink() + if link == nil { + return true + } + if link.TargetBlockId == widget.DefaultWidgetFavorite { + favoriteBlockFound = true + return false + } + return true + }) + + if err != nil { + return err + } + + if favoriteBlockFound { + log.Debug("favorite widget block is already presented") + return nil + } + + _, err = w.CreateBlock(st, &pb.RpcBlockCreateWidgetRequest{ + ContextId: widgetObjectId, + ObjectLimit: 6, + WidgetLayout: model.BlockContentWidget_List, + Position: model.Block_Bottom, + Block: &model.Block{ + Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{ + TargetBlockId: widget.DefaultWidgetFavorite, + }}, + }, + }) + return err + }) +} diff --git a/core/block/editor/archive.go b/core/block/editor/archive.go index d8bfba9a9..1c1d30d0b 100644 --- a/core/block/editor/archive.go +++ b/core/block/editor/archive.go @@ -60,13 +60,17 @@ func (p *Archive) CreationStateMigration(ctx *smartblock.InitContext) migration. template.WithNoObjectTypes(), template.WithDetailName("Archive"), template.WithDetailIconEmoji("🗑"), + template.WithForcedDetail(bundle.RelationKeyIsHidden, pbtypes.Bool(true)), ) }, } } func (p *Archive) StateMigrations() migration.Migrations { - return migration.MakeMigrations(nil) + return migration.MakeMigrations([]migration.Migration{{ + Version: 2, + Proc: template.WithForcedDetail(bundle.RelationKeyIsHidden, pbtypes.Bool(true)), + }}) } func (p *Archive) Relations(_ *state.State) relationutils.Relations { diff --git a/core/block/editor/basic/details.go b/core/block/editor/basic/details.go index 2c31962ea..0dbf409c7 100644 --- a/core/block/editor/basic/details.go +++ b/core/block/editor/basic/details.go @@ -369,6 +369,10 @@ func (bs *basic) SetObjectTypesInState(s *state.State, objectTypeKeys []domain.T if err = bs.Restrictions().Object.Check(model.Restrictions_TypeChange); errors.Is(err, restriction.ErrRestricted) { return fmt.Errorf("objectType change is restricted for object '%s': %w", bs.Id(), err) } + + if objectTypeKeys[0] == bundle.TypeKeyTemplate { + return fmt.Errorf("changing object type to template is restricted") + } } s.SetObjectTypeKeys(objectTypeKeys) diff --git a/core/block/editor/basic/details_test.go b/core/block/editor/basic/details_test.go index e7cdd8c5a..3fc4025b6 100644 --- a/core/block/editor/basic/details_test.go +++ b/core/block/editor/basic/details_test.go @@ -4,9 +4,12 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/anyproto/anytype-heart/core/block/editor/converter" + "github.com/anyproto/anytype-heart/core/block/editor/lastused/mock_lastused" "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest" + "github.com/anyproto/anytype-heart/core/block/restriction" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" @@ -14,10 +17,11 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) -type duFixture struct { - sb *smarttest.SmartTest - store *spaceindex.StoreFixture - basic DetailsUpdatable +type basicFixture struct { + sb *smarttest.SmartTest + store *spaceindex.StoreFixture + lastUsed *mock_lastused.MockObjectUsageUpdater + basic CommonOperations } var ( @@ -25,26 +29,28 @@ var ( spaceId = "space1" ) -func newDUFixture(t *testing.T) *duFixture { +func newBasicFixture(t *testing.T) *basicFixture { sb := smarttest.New(objectId) sb.SetDetails(nil, nil, false) sb.SetSpaceId(spaceId) store := spaceindex.NewStoreFixture(t) + lastUsed := mock_lastused.NewMockObjectUsageUpdater(t) - b := NewBasic(sb, store, converter.NewLayoutConverter(), nil, nil) + b := NewBasic(sb, store, converter.NewLayoutConverter(), nil, lastUsed) - return &duFixture{ - sb: sb, - store: store, - basic: b, + return &basicFixture{ + sb: sb, + store: store, + lastUsed: lastUsed, + basic: b, } } func TestBasic_UpdateDetails(t *testing.T) { t.Run("add new details", func(t *testing.T) { // given - f := newDUFixture(t) + f := newBasicFixture(t) f.store.AddObjects(t, []objectstore.TestObject{{ bundle.RelationKeyId: domain.String("rel-aperture"), bundle.RelationKeySpaceId: domain.String(spaceId), @@ -84,7 +90,7 @@ func TestBasic_UpdateDetails(t *testing.T) { t.Run("modify details", func(t *testing.T) { // given - f := newDUFixture(t) + f := newBasicFixture(t) err := f.sb.SetDetails(nil, []domain.Detail{{ Key: bundle.RelationKeySpaceDashboardId, Value: domain.String("123"), @@ -115,7 +121,7 @@ func TestBasic_UpdateDetails(t *testing.T) { t.Run("delete details", func(t *testing.T) { // given - f := newDUFixture(t) + f := newBasicFixture(t) err := f.sb.SetDetails(nil, []domain.Detail{{ Key: bundle.RelationKeyTargetObjectType, Value: domain.String("ot-note"), @@ -137,3 +143,52 @@ func TestBasic_UpdateDetails(t *testing.T) { assert.False(t, f.sb.HasRelation(f.sb.NewState(), bundle.RelationKeyTargetObjectType.String())) }) } + +func TestBasic_SetObjectTypesInState(t *testing.T) { + t.Run("no error", func(t *testing.T) { + // given + f := newBasicFixture(t) + + f.lastUsed.EXPECT().UpdateLastUsedDate(mock.Anything, bundle.TypeKeyTask, mock.Anything).Return().Once() + f.store.AddObjects(t, []objectstore.TestObject{{ + bundle.RelationKeySpaceId: pbtypes.String(spaceId), + bundle.RelationKeyId: pbtypes.String("ot-task"), + bundle.RelationKeyUniqueKey: pbtypes.String("ot-task"), + bundle.RelationKeyLayout: pbtypes.Int64(int64(model.ObjectType_todo)), + }}) + + s := f.sb.NewState() + + // when + err := f.basic.SetObjectTypesInState(s, []domain.TypeKey{bundle.TypeKeyTask}, false) + + // then + assert.NoError(t, err) + assert.Equal(t, bundle.TypeKeyTask, s.ObjectTypeKey()) + }) + + t.Run("type change is restricted", func(t *testing.T) { + // given + f := newBasicFixture(t) + f.sb.TestRestrictions = restriction.Restrictions{Object: []model.RestrictionsObjectRestriction{model.Restrictions_TypeChange}} + s := f.sb.NewState() + + // when + err := f.basic.SetObjectTypesInState(s, []domain.TypeKey{bundle.TypeKeyTask}, false) + + // then + assert.ErrorIs(t, err, restriction.ErrRestricted) + }) + + t.Run("changing to template type is restricted", func(t *testing.T) { + // given + f := newBasicFixture(t) + s := f.sb.NewState() + + // when + err := f.basic.SetObjectTypesInState(s, []domain.TypeKey{bundle.TypeKeyTemplate}, false) + + // then + assert.Error(t, err) + }) +} diff --git a/core/block/editor/dashboard.go b/core/block/editor/dashboard.go index ee6294305..3c6a6abbc 100644 --- a/core/block/editor/dashboard.go +++ b/core/block/editor/dashboard.go @@ -57,13 +57,17 @@ func (p *Dashboard) CreationStateMigration(ctx *smartblock.InitContext) migratio template.WithDetailName("Home"), template.WithDetailIconEmoji("🏠"), template.WithNoDuplicateLinks(), + template.WithForcedDetail(bundle.RelationKeyIsHidden, pbtypes.Bool(true)), ) }, } } func (p *Dashboard) StateMigrations() migration.Migrations { - return migration.MakeMigrations(nil) + return migration.MakeMigrations([]migration.Migration{{ + Version: 2, + Proc: template.WithForcedDetail(bundle.RelationKeyIsHidden, pbtypes.Bool(true)), + }}) } func (p *Dashboard) updateObjects(info smartblock.ApplyInfo) (err error) { diff --git a/core/block/editor/file/file.go b/core/block/editor/file/file.go index 28e4987d1..a04eb88ee 100644 --- a/core/block/editor/file/file.go +++ b/core/block/editor/file/file.go @@ -16,6 +16,7 @@ import ( "github.com/anyproto/anytype-heart/core/block/cache" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/block/editor/state" + "github.com/anyproto/anytype-heart/core/block/editor/template" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/core/block/simple" "github.com/anyproto/anytype-heart/core/block/simple/file" @@ -221,8 +222,10 @@ func (sf *sfile) updateFile(ctx session.Context, id, groupId string, apply func( } func (sf *sfile) DropFiles(req pb.RpcFileDropRequest) (err error) { - if err = sf.Restrictions().Object.Check(model.Restrictions_Blocks); err != nil { - return err + if !isCollection(sf) { + if err = sf.Restrictions().Object.Check(model.Restrictions_Blocks); err != nil { + return err + } } proc := &dropFilesProcess{ spaceID: sf.SpaceID(), @@ -234,7 +237,7 @@ func (sf *sfile) DropFiles(req pb.RpcFileDropRequest) (err error) { return } var ch = make(chan error) - go proc.Start(sf.RootId(), req.DropTargetId, req.Position, ch) + go proc.Start(sf, req.DropTargetId, req.Position, ch) err = <-ch return } @@ -248,7 +251,6 @@ func (sf *sfile) dropFilesCreateStructure(groupId, targetId string, pos model.Bl for _, entry := range entries { var blockId, pageId string if entry.isDir { - if err = sf.Apply(s); err != nil { return } @@ -304,6 +306,13 @@ func (sf *sfile) dropFilesSetInfo(info dropFileInfo) (err error) { s.Unlink(info.blockId) return sf.Apply(s) } + if isCollection(sf) { + s := sf.NewState() + if !s.HasInStore([]string{info.file.TargetObjectId}) { + s.UpdateStoreSlice(template.CollectionStoreKey, append(s.GetStoreSlice(template.CollectionStoreKey), info.file.TargetObjectId)) + } + return sf.Apply(s) + } return sf.UpdateFile(info.blockId, info.groupId, func(f file.Block) error { if info.err != nil || info.file == nil || info.file.State == model.BlockContentFile_Error { if info.err != nil { @@ -451,7 +460,7 @@ func (dp *dropFilesProcess) readdir(entry *dropFileEntry, allowSymlinks bool) (o return true, nil } -func (dp *dropFilesProcess) Start(rootId, targetId string, pos model.BlockPosition, rootDone chan error) { +func (dp *dropFilesProcess) Start(file smartblock.SmartBlock, targetId string, pos model.BlockPosition, rootDone chan error) { dp.id = uuid.New().String() dp.doneCh = make(chan struct{}) dp.cancel = make(chan struct{}) @@ -470,6 +479,46 @@ func (dp *dropFilesProcess) Start(rootId, targetId string, pos model.BlockPositi go dp.addFilesWorker(wg, in) } + if isCollection(file) { + dp.handleDragAndDropInCollection(file.RootId(), dp.root.child, rootDone, in) + } else { + dp.handleDragAndDropInDocument(file.RootId(), targetId, pos, rootDone, in) + } + wg.Wait() +} + +func (dp *dropFilesProcess) handleDragAndDropInCollection(rootId string, droppedFiles []*dropFileEntry, rootDone chan error, in chan *dropFileInfo) { + close(rootDone) + filesToUpload := dp.getFilesToUploadFromDirs(droppedFiles) + for _, entry := range filesToUpload { + in <- &dropFileInfo{ + pageId: rootId, + path: entry.path, + name: entry.name, + } + } + close(in) +} + +func (dp *dropFilesProcess) getFilesToUploadFromDirs(droppedFiles []*dropFileEntry) []*dropFileEntry { + var ( + stack []*dropFileEntry + totalFiles []*dropFileEntry + ) + stack = append(stack, droppedFiles...) + for len(stack) > 0 { + entry := stack[len(stack)-1] + stack = stack[:len(stack)-1] + if entry.isDir { + stack = append(stack, entry.child...) + } else { + totalFiles = append(totalFiles, entry) + } + } + return totalFiles +} + +func (dp *dropFilesProcess) handleDragAndDropInDocument(rootId, targetId string, pos model.BlockPosition, rootDone chan error, in chan *dropFileInfo) { var flatEntries = [][]*dropFileEntry{dp.root.child} var smartBlockIds = []string{rootId} var handleLevel = func(idx int) (isContinue bool, err error) { @@ -534,8 +583,6 @@ func (dp *dropFilesProcess) Start(rootId, targetId string, pos model.BlockPositi idx++ } close(in) - wg.Wait() - return } func (dp *dropFilesProcess) addFilesWorker(wg *sync.WaitGroup, in chan *dropFileInfo) { @@ -591,3 +638,8 @@ func (dp *dropFilesProcess) apply(f *dropFileInfo) (err error) { return sbHandler.dropFilesSetInfo(*f) }) } + +func isCollection(smartBlock smartblock.SmartBlock) bool { + layout, ok := smartBlock.Layout() + return ok && layout == model.ObjectType_collection +} diff --git a/core/block/editor/file/file_test.go b/core/block/editor/file/file_test.go index 06d1c8ab5..0e4fa85d6 100644 --- a/core/block/editor/file/file_test.go +++ b/core/block/editor/file/file_test.go @@ -1,19 +1,42 @@ package file import ( + "context" "errors" + "os" + "path/filepath" "testing" + "github.com/anyproto/any-sync/accountservice/mock_accountservice" + "github.com/anyproto/any-sync/app" + "github.com/anyproto/any-sync/commonfile/fileservice" + "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" + "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/core/block/cache/mock_cache" "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest" + "github.com/anyproto/anytype-heart/core/block/editor/template" + "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/core/block/restriction" - "github.com/anyproto/anytype-heart/core/domain" + "github.com/anyproto/anytype-heart/core/event/mock_event" + "github.com/anyproto/anytype-heart/core/files" + "github.com/anyproto/anytype-heart/core/files/fileobject/mock_fileobject" + "github.com/anyproto/anytype-heart/core/files/fileuploader" + "github.com/anyproto/anytype-heart/core/filestorage" + "github.com/anyproto/anytype-heart/core/filestorage/filesync" + "github.com/anyproto/anytype-heart/core/filestorage/rpcstore" + wallet2 "github.com/anyproto/anytype-heart/core/wallet" + "github.com/anyproto/anytype-heart/core/wallet/mock_wallet" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/pkg/lib/core" + "github.com/anyproto/anytype-heart/pkg/lib/datastore" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/filestore" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" "github.com/anyproto/anytype-heart/tests/blockbuilder" "github.com/anyproto/anytype-heart/tests/testutil" @@ -21,21 +44,31 @@ import ( type fileFixture struct { sfile - pickerFx *mock_cache.MockObjectGetter - sb *smarttest.SmartTest + pickerFx *mock_cache.MockObjectGetter + sb *smarttest.SmartTest + mockSender *mock_event.MockSender } func newFixture(t *testing.T) *fileFixture { picker := mock_cache.NewMockObjectGetter(t) sb := smarttest.New("root") + mockSender := mock_event.NewMockSender(t) fx := &fileFixture{ - pickerFx: picker, - sb: sb, + pickerFx: picker, + sb: sb, + mockSender: mockSender, } + a := &app.App{} + a.Register(testutil.PrepareMock(context.Background(), a, mockSender)) + service := process.New() + err := service.Init(a) + assert.Nil(t, err) + fx.sfile = sfile{ - SmartBlock: sb, - picker: picker, + SmartBlock: sb, + picker: picker, + processService: service, } return fx } @@ -119,4 +152,167 @@ func TestDropFiles(t *testing.T) { assert.Error(t, err) assert.True(t, errors.Is(err, restriction.ErrRestricted)) }) + t.Run("drop files in collection - no restriction error", func(t *testing.T) { + // given + dir := t.TempDir() + file, err := os.Create(filepath.Join(dir, "test")) + assert.Nil(t, err) + + fx := newFixture(t) + st := fx.sb.Doc.NewState() + st.SetDetail(bundle.RelationKeyLayout.String(), pbtypes.Int64(int64(model.ObjectType_collection))) + fx.sb.Doc = st + fx.pickerFx.EXPECT().GetObject(context.Background(), "root").Return(fx, nil).Maybe() + fx.mockSender.EXPECT().Broadcast(mock.Anything).Return().Maybe() + mockService := mock_fileobject.NewMockService(t) + mockService.EXPECT().Create(mock.Anything, mock.Anything, mock.Anything).Return("fileObjectId", &types.Struct{Fields: map[string]*types.Value{}}, nil).Maybe() + fx.fileUploaderFactory = prepareFileService(t, fx.mockSender, mockService) + + // when + err = fx.sfile.DropFiles(pb.RpcFileDropRequest{ + ContextId: "root", + LocalFilePaths: []string{file.Name()}, + }) + + // then + assert.Nil(t, err) + }) + t.Run("drop dir in collection - no restriction error", func(t *testing.T) { + // given + dir := t.TempDir() + _, err := os.Create(filepath.Join(dir, "test")) + assert.Nil(t, err) + + fx := newFixture(t) + st := fx.sb.Doc.NewState() + st.SetDetail(bundle.RelationKeyLayout.String(), pbtypes.Int64(int64(model.ObjectType_collection))) + fx.sb.Doc = st + fx.pickerFx.EXPECT().GetObject(context.Background(), "root").Return(fx, nil).Maybe() + fx.mockSender.EXPECT().Broadcast(mock.Anything).Return().Maybe() + mockService := mock_fileobject.NewMockService(t) + mockService.EXPECT().Create(mock.Anything, mock.Anything, mock.Anything).Return("fileObjectId", &types.Struct{Fields: map[string]*types.Value{}}, nil).Maybe() + fx.fileUploaderFactory = prepareFileService(t, fx.mockSender, mockService) + + // when + err = fx.sfile.DropFiles(pb.RpcFileDropRequest{ + ContextId: "root", + LocalFilePaths: []string{dir}, + }) + + // then + assert.Nil(t, err) + }) + t.Run("drop files in collection - success", func(t *testing.T) { + // given + dir := t.TempDir() + file, err := os.Create(filepath.Join(dir, "test")) + assert.Nil(t, err) + + fx := newFixture(t) + st := fx.sb.Doc.NewState() + st.SetDetail(bundle.RelationKeyLayout.String(), pbtypes.Int64(int64(model.ObjectType_collection))) + fx.sb.Doc = st + fx.pickerFx.EXPECT().GetObject(context.Background(), "root").Return(fx, nil) + fx.mockSender.EXPECT().Broadcast(mock.Anything).Return() + mockService := mock_fileobject.NewMockService(t) + mockService.EXPECT().Create(context.Background(), "", mock.Anything).Return("fileObjectId", &types.Struct{Fields: map[string]*types.Value{}}, nil).Maybe() + fx.fileUploaderFactory = prepareFileService(t, fx.mockSender, mockService) + + // when + proc := &dropFilesProcess{ + spaceID: fx.SpaceID(), + processService: fx.processService, + picker: fx.picker, + fileUploaderFactory: fx.fileUploaderFactory, + } + err = proc.Init([]string{file.Name()}) + assert.Nil(t, err) + var ch = make(chan error) + proc.Start(fx, "", model.Block_Bottom, ch) + err = <-ch + + // then + assert.Nil(t, err) + storeSlice := fx.NewState().GetStoreSlice(template.CollectionStoreKey) + assert.Len(t, storeSlice, 1) + assert.Equal(t, "fileObjectId", storeSlice[0]) + }) + t.Run("drop dir with file in collection - success", func(t *testing.T) { + // given + dir := t.TempDir() + _, err := os.Create(filepath.Join(dir, "test")) + assert.Nil(t, err) + + fx := newFixture(t) + st := fx.sb.Doc.NewState() + st.SetDetail(bundle.RelationKeyLayout.String(), pbtypes.Int64(int64(model.ObjectType_collection))) + fx.sb.Doc = st + fx.pickerFx.EXPECT().GetObject(context.Background(), "root").Return(fx, nil) + fx.mockSender.EXPECT().Broadcast(mock.Anything).Return() + mockService := mock_fileobject.NewMockService(t) + mockService.EXPECT().Create(context.Background(), "", mock.Anything).Return("fileObjectId", &types.Struct{Fields: map[string]*types.Value{}}, nil).Maybe() + fx.fileUploaderFactory = prepareFileService(t, fx.mockSender, mockService) + + // when + proc := &dropFilesProcess{ + spaceID: fx.SpaceID(), + processService: fx.processService, + picker: fx.picker, + fileUploaderFactory: fx.fileUploaderFactory, + } + err = proc.Init([]string{dir}) + assert.Nil(t, err) + var ch = make(chan error) + proc.Start(fx, "", model.Block_Bottom, ch) + err = <-ch + + // then + assert.Nil(t, err) + storeSlice := fx.NewState().GetStoreSlice(template.CollectionStoreKey) + assert.Len(t, storeSlice, 1) + assert.Equal(t, "fileObjectId", storeSlice[0]) + }) +} + +func prepareFileService(t *testing.T, sender *mock_event.MockSender, fileObjectService *mock_fileobject.MockService) fileuploader.Service { + dataStoreProvider, err := datastore.NewInMemory() + assert.Nil(t, err) + + blockStorage := filestorage.NewInMemory() + + rpcStore := rpcstore.NewInMemoryStore(1024) + rpcStoreService := rpcstore.NewInMemoryService(rpcStore) + commonFileService := fileservice.New() + fileSyncService := filesync.New() + objectStore := objectstore.NewStoreFixture(t) + + ctx := context.Background() + ctrl := gomock.NewController(t) + wallet := mock_wallet.NewMockWallet(t) + wallet.EXPECT().Name().Return(wallet2.CName) + wallet.EXPECT().RepoPath().Return("repo/path") + + a := new(app.App) + a.Register(dataStoreProvider) + a.Register(filestore.New()) + a.Register(commonFileService) + a.Register(fileSyncService) + a.Register(testutil.PrepareMock(ctx, a, sender)) + a.Register(blockStorage) + a.Register(objectStore) + a.Register(rpcStoreService) + a.Register(testutil.PrepareMock(ctx, a, mock_accountservice.NewMockService(ctrl))) + a.Register(testutil.PrepareMock(ctx, a, wallet)) + a.Register(testutil.PrepareMock(ctx, a, fileObjectService)) + a.Register(&config.Config{DisableFileConfig: true, NetworkMode: pb.RpcAccount_DefaultConfig, PeferYamuxTransport: true}) + a.Register(core.NewTempDirService()) + a.Register(testutil.PrepareMock(ctx, a, mock_cache.NewMockObjectGetterComponent(t))) + a.Register(files.New()) + err = a.Start(ctx) + assert.Nil(t, err) + + service := fileuploader.New() + err = service.Init(a) + assert.Nil(t, err) + return service } diff --git a/core/block/editor/participant.go b/core/block/editor/participant.go index c470e5244..e9e7beeeb 100644 --- a/core/block/editor/participant.go +++ b/core/block/editor/participant.go @@ -52,6 +52,13 @@ func (p *participant) Init(ctx *smartblock.InitContext) (err error) { ctx.State.SetDetailAndBundledRelation(bundle.RelationKeyLayout, domain.Int64(model.ObjectType_participant)) ctx.State.SetDetailAndBundledRelation(bundle.RelationKeyLayoutAlign, domain.Int64(model.Block_AlignCenter)) + records, err := p.objectStore.QueryByIds([]string{p.Id()}) + if err != nil { + return err + } + if len(records) > 0 { + ctx.State.SetDetails(records[0].Details) + } template.InitTemplate(ctx.State, template.WithEmpty, template.WithTitle, @@ -60,15 +67,6 @@ func (p *participant) Init(ctx *smartblock.InitContext) (err error) { template.WithAddedFeaturedRelation(bundle.RelationKeyType), template.WithAddedFeaturedRelation(bundle.RelationKeyBacklinks), ) - - records, err := p.objectStore.QueryByIds([]string{p.Id()}) - if err != nil { - return err - } - if len(records) > 0 { - ctx.State.SetDetails(records[0].Details) - } - return nil } diff --git a/core/block/editor/participant_test.go b/core/block/editor/participant_test.go index eaa98fb8a..ad1d37f94 100644 --- a/core/block/editor/participant_test.go +++ b/core/block/editor/participant_test.go @@ -3,11 +3,13 @@ package editor import ( "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/anyproto/anytype-heart/core/block/editor/basic" "github.com/anyproto/anytype-heart/core/block/editor/smartblock" "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest" + "github.com/anyproto/anytype-heart/core/block/editor/state" "github.com/anyproto/anytype-heart/core/block/migration" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -107,6 +109,68 @@ func TestParticipant_ModifyIdentityDetails(t *testing.T) { } } +func TestParticipant_Init(t *testing.T) { + t.Run("title block not empty, because name detail is in store", func(t *testing.T) { + // given + sb := smarttest.New("root") + store := newStoreFixture(t) + store.AddObjects(t, []objectstore.TestObject{{ + bundle.RelationKeySpaceId: pbtypes.String("spaceId"), + bundle.RelationKeyId: pbtypes.String("root"), + bundle.RelationKeyName: pbtypes.String("test"), + }}) + + basicComponent := basic.NewBasic(sb, store, nil, nil, nil) + p := &participant{ + SmartBlock: sb, + DetailsUpdatable: basicComponent, + objectStore: store, + } + + initCtx := &smartblock.InitContext{ + IsNewObject: true, + } + + // when + err := p.Init(initCtx) + assert.NoError(t, err) + migration.RunMigrations(p, initCtx) + err = p.Apply(initCtx.State) + assert.NoError(t, err) + + // then + assert.NotNil(t, p.NewState().Get(state.TitleBlockID)) + assert.Equal(t, "test", p.NewState().Get(state.TitleBlockID).Model().GetText().GetText()) + }) + t.Run("title block is empty", func(t *testing.T) { + // given + sb := smarttest.New("root") + store := newStoreFixture(t) + + basicComponent := basic.NewBasic(sb, store, nil, nil, nil) + p := &participant{ + SmartBlock: sb, + DetailsUpdatable: basicComponent, + objectStore: store, + } + + initCtx := &smartblock.InitContext{ + IsNewObject: true, + } + + // when + err := p.Init(initCtx) + assert.NoError(t, err) + migration.RunMigrations(p, initCtx) + err = p.Apply(initCtx.State) + assert.NoError(t, err) + + // then + assert.NotNil(t, p.NewState().Get(state.TitleBlockID)) + assert.Equal(t, "", p.NewState().Get(state.TitleBlockID).Model().GetText().GetText()) + }) +} + func newStoreFixture(t *testing.T) *spaceindex.StoreFixture { store := spaceindex.NewStoreFixture(t) diff --git a/core/block/editor/spaceview.go b/core/block/editor/spaceview.go index 8748b00a5..f5707fa5b 100644 --- a/core/block/editor/spaceview.go +++ b/core/block/editor/spaceview.go @@ -251,6 +251,7 @@ var workspaceKeysToCopy = []domain.RelationKey{ bundle.RelationKeyIconOption, bundle.RelationKeySpaceDashboardId, bundle.RelationKeyCreatedDate, + bundle.RelationKeyChatId, } func (s *SpaceView) GetSpaceDescription() (data spaceinfo.SpaceDescription) { diff --git a/core/block/editor/state/state.go b/core/block/editor/state/state.go index acc9fd324..66cd8c6db 100644 --- a/core/block/editor/state/state.go +++ b/core/block/editor/state/state.go @@ -1307,8 +1307,9 @@ func (s *State) Copy() *State { } func (s *State) HasRelation(key string) bool { - for _, rel := range s.relationLinks { - if rel.Key == key { + links := s.GetRelationLinks() + for _, link := range links { + if link.Key == key { return true } } diff --git a/core/block/import/common/objectcreator/objectcreator.go b/core/block/import/common/objectcreator/objectcreator.go index 15989b229..2609e5cb5 100644 --- a/core/block/import/common/objectcreator/objectcreator.go +++ b/core/block/import/common/objectcreator/objectcreator.go @@ -391,7 +391,7 @@ func (oc *ObjectCreator) resetState(newID string, st *state.State) *domain.Detai func (oc *ObjectCreator) setFavorite(snapshot *common.StateSnapshot, newID string) { isFavorite := snapshot.Details.GetBool(bundle.RelationKeyIsFavorite) if isFavorite { - err := oc.detailsService.SetIsFavorite(newID, true) + err := oc.detailsService.SetIsFavorite(newID, true, false) if err != nil { log.With(zap.String("object id", newID)).Errorf("failed to set isFavorite when importing object: %s", err) } diff --git a/core/block/object/objectcache/mock_objectcache/mock_Cache.go b/core/block/object/objectcache/mock_objectcache/mock_Cache.go index b48ac532d..8b77256e0 100644 --- a/core/block/object/objectcache/mock_objectcache/mock_Cache.go +++ b/core/block/object/objectcache/mock_objectcache/mock_Cache.go @@ -168,7 +168,7 @@ func (_c *MockCache_CreateTreeObject_Call) RunAndReturn(run func(context.Context } // CreateTreeObjectWithPayload provides a mock function with given fields: ctx, payload, initFunc -func (_m *MockCache) CreateTreeObjectWithPayload(ctx context.Context, payload treestorage.TreeStorageCreatePayload, initFunc func(string) *smartblock.InitContext) (smartblock.SmartBlock, error) { +func (_m *MockCache) CreateTreeObjectWithPayload(ctx context.Context, payload treestorage.TreeStorageCreatePayload, initFunc objectcache.InitFunc) (smartblock.SmartBlock, error) { ret := _m.Called(ctx, payload, initFunc) if len(ret) == 0 { @@ -177,10 +177,10 @@ func (_m *MockCache) CreateTreeObjectWithPayload(ctx context.Context, payload tr var r0 smartblock.SmartBlock var r1 error - if rf, ok := ret.Get(0).(func(context.Context, treestorage.TreeStorageCreatePayload, func(string) *smartblock.InitContext) (smartblock.SmartBlock, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, treestorage.TreeStorageCreatePayload, objectcache.InitFunc) (smartblock.SmartBlock, error)); ok { return rf(ctx, payload, initFunc) } - if rf, ok := ret.Get(0).(func(context.Context, treestorage.TreeStorageCreatePayload, func(string) *smartblock.InitContext) smartblock.SmartBlock); ok { + if rf, ok := ret.Get(0).(func(context.Context, treestorage.TreeStorageCreatePayload, objectcache.InitFunc) smartblock.SmartBlock); ok { r0 = rf(ctx, payload, initFunc) } else { if ret.Get(0) != nil { @@ -188,7 +188,7 @@ func (_m *MockCache) CreateTreeObjectWithPayload(ctx context.Context, payload tr } } - if rf, ok := ret.Get(1).(func(context.Context, treestorage.TreeStorageCreatePayload, func(string) *smartblock.InitContext) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, treestorage.TreeStorageCreatePayload, objectcache.InitFunc) error); ok { r1 = rf(ctx, payload, initFunc) } else { r1 = ret.Error(1) @@ -205,14 +205,14 @@ type MockCache_CreateTreeObjectWithPayload_Call struct { // CreateTreeObjectWithPayload is a helper method to define mock.On call // - ctx context.Context // - payload treestorage.TreeStorageCreatePayload -// - initFunc func(string) *smartblock.InitContext +// - initFunc objectcache.InitFunc func (_e *MockCache_Expecter) CreateTreeObjectWithPayload(ctx interface{}, payload interface{}, initFunc interface{}) *MockCache_CreateTreeObjectWithPayload_Call { return &MockCache_CreateTreeObjectWithPayload_Call{Call: _e.mock.On("CreateTreeObjectWithPayload", ctx, payload, initFunc)} } -func (_c *MockCache_CreateTreeObjectWithPayload_Call) Run(run func(ctx context.Context, payload treestorage.TreeStorageCreatePayload, initFunc func(string) *smartblock.InitContext)) *MockCache_CreateTreeObjectWithPayload_Call { +func (_c *MockCache_CreateTreeObjectWithPayload_Call) Run(run func(ctx context.Context, payload treestorage.TreeStorageCreatePayload, initFunc objectcache.InitFunc)) *MockCache_CreateTreeObjectWithPayload_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(treestorage.TreeStorageCreatePayload), args[2].(func(string) *smartblock.InitContext)) + run(args[0].(context.Context), args[1].(treestorage.TreeStorageCreatePayload), args[2].(objectcache.InitFunc)) }) return _c } @@ -222,7 +222,7 @@ func (_c *MockCache_CreateTreeObjectWithPayload_Call) Return(sb smartblock.Smart return _c } -func (_c *MockCache_CreateTreeObjectWithPayload_Call) RunAndReturn(run func(context.Context, treestorage.TreeStorageCreatePayload, func(string) *smartblock.InitContext) (smartblock.SmartBlock, error)) *MockCache_CreateTreeObjectWithPayload_Call { +func (_c *MockCache_CreateTreeObjectWithPayload_Call) RunAndReturn(run func(context.Context, treestorage.TreeStorageCreatePayload, objectcache.InitFunc) (smartblock.SmartBlock, error)) *MockCache_CreateTreeObjectWithPayload_Call { _c.Call.Return(run) return _c } diff --git a/core/block/object/objectcreator/chat.go b/core/block/object/objectcreator/chat.go index a2e3f0d7a..1d480cf5e 100644 --- a/core/block/object/objectcreator/chat.go +++ b/core/block/object/objectcreator/chat.go @@ -3,10 +3,8 @@ package objectcreator import ( "context" "fmt" - "time" "github.com/anyproto/anytype-heart/core/block/editor/state" - "github.com/anyproto/anytype-heart/core/block/object/payloadcreator" "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" @@ -14,36 +12,11 @@ import ( "github.com/anyproto/anytype-heart/space/clientspace" ) -func (s *service) createChat(ctx context.Context, space clientspace.Space, details *domain.Details) (string, *domain.Details, error) { - payload, err := space.CreateTreePayload(ctx, payloadcreator.PayloadCreationParams{ - Time: time.Now(), - SmartblockType: smartblock.SmartBlockTypeChatObject, - }) - if err != nil { - return "", nil, fmt.Errorf("create tree payload: %w", err) - } - - createState := state.NewDoc(payload.RootRawChange.Id, nil).(*state.State) - details.Set(bundle.RelationKeyLayout, domain.Int64(int64(model.ObjectType_chat))) - createState.SetDetails(details) - err = s.addChatDerivedObject(ctx, space, createState, payload.RootRawChange.Id) - if err != nil { - return "", nil, fmt.Errorf("add chat derived object: %w", err) - } - - id, newDetails, err := s.CreateSmartBlockFromStateInSpaceWithOptions(ctx, space, []domain.TypeKey{bundle.TypeKeyChat}, createState, WithPayload(&payload)) - if err != nil { - return "", nil, fmt.Errorf("create smartblock from state: %w", err) - } - - return id, newDetails, nil -} - -func (s *service) addChatDerivedObject(ctx context.Context, space clientspace.Space, st *state.State, chatObjectId string) error { +func (s *service) AddChatDerivedObject(ctx context.Context, space clientspace.Space, chatObjectId string) (chatId string, err error) { chatDetails := domain.NewDetails() chatUniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeChatDerivedObject, chatObjectId) if err != nil { - return fmt.Errorf("create payload: %w", err) + return "", fmt.Errorf("create payload: %w", err) } chatDetails.SetString(bundle.RelationKeyUniqueKey, chatUniqueKey.Marshal()) @@ -52,14 +25,12 @@ func (s *service) addChatDerivedObject(ctx context.Context, space clientspace.Sp Details: chatDetails, } - chatId, _, err := s.createObjectInSpace(ctx, space, chatReq) + chatId, _, err = s.createObjectInSpace(ctx, space, chatReq) if err != nil { - return fmt.Errorf("create object: %w", err) + return "", fmt.Errorf("create object: %w", err) } - st.SetDetailAndBundledRelation(bundle.RelationKeyChatId, domain.String(chatId)) - st.SetDetailAndBundledRelation(bundle.RelationKeyHasChat, domain.Bool(true)) - return nil + return chatId, nil } func (s *service) createChatDerived(ctx context.Context, space clientspace.Space, details *domain.Details) (string, *domain.Details, error) { diff --git a/core/block/object/objectcreator/creator.go b/core/block/object/objectcreator/creator.go index ebc59e1a5..955599162 100644 --- a/core/block/object/objectcreator/creator.go +++ b/core/block/object/objectcreator/creator.go @@ -46,6 +46,7 @@ type Service interface { CreateSmartBlockFromState(ctx context.Context, spaceID string, objectTypeKeys []domain.TypeKey, createState *state.State) (id string, newDetails *domain.Details, err error) CreateSmartBlockFromStateInSpace(ctx context.Context, space clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State) (id string, newDetails *domain.Details, err error) + AddChatDerivedObject(ctx context.Context, space clientspace.Space, chatObjectId string) (chatId string, err error) InstallBundledObjects(ctx context.Context, space clientspace.Space, sourceObjectIds []string, isNewSpace bool) (ids []string, objects []*domain.Details, err error) app.Component @@ -146,12 +147,14 @@ func (s *service) createObjectInSpace( return s.createRelation(ctx, space, details) case bundle.TypeKeyRelationOption: return s.createRelationOption(ctx, space, details) - case bundle.TypeKeyChat: - return s.createChat(ctx, space, details) case bundle.TypeKeyChatDerived: return s.createChatDerived(ctx, space, details) case bundle.TypeKeyFile: return "", nil, fmt.Errorf("files must be created via fileobject service") + case bundle.TypeKeyTemplate: + if pbtypes.GetString(details, bundle.RelationKeyTargetObjectType.String()) == "" { + return "", nil, fmt.Errorf("cannot create template without target object") + } } return s.createObjectFromTemplate(ctx, space, []domain.TypeKey{req.ObjectTypeKey}, details, req.TemplateId) diff --git a/core/block/object/objectcreator/creator_test.go b/core/block/object/objectcreator/creator_test.go new file mode 100644 index 000000000..6fd7fb3b9 --- /dev/null +++ b/core/block/object/objectcreator/creator_test.go @@ -0,0 +1,106 @@ +package objectcreator + +import ( + "context" + "testing" + + "github.com/gogo/protobuf/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + + "github.com/anyproto/anytype-heart/core/block/editor/lastused/mock_lastused" + "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest" + "github.com/anyproto/anytype-heart/core/block/editor/state" + "github.com/anyproto/anytype-heart/pkg/lib/bundle" + "github.com/anyproto/anytype-heart/space/clientspace" + "github.com/anyproto/anytype-heart/space/clientspace/mock_clientspace" + "github.com/anyproto/anytype-heart/space/mock_space" + "github.com/anyproto/anytype-heart/util/pbtypes" +) + +const spaceId = "spc1" + +type fixture struct { + spaceService *mock_space.MockService + spc *mock_clientspace.MockSpace + templateService *testTemplateService + lastUsedService *mock_lastused.MockObjectUsageUpdater + service Service +} + +func newFixture(t *testing.T) *fixture { + spaceService := mock_space.NewMockService(t) + spc := mock_clientspace.NewMockSpace(t) + + templateSvc := &testTemplateService{} + lastUsedSvc := mock_lastused.NewMockObjectUsageUpdater(t) + + s := &service{ + spaceService: spaceService, + templateService: templateSvc, + lastUsedUpdater: lastUsedSvc, + } + + return &fixture{ + spaceService: spaceService, + spc: spc, + templateService: templateSvc, + lastUsedService: lastUsedSvc, + service: s, + } +} + +type testTemplateService struct { + templates map[string]*state.State +} + +func (tts *testTemplateService) CreateTemplateStateWithDetails(templateId string, details *types.Struct) (*state.State, error) { + if tts.templates != nil { + if st, found := tts.templates[templateId]; found { + return st, nil + } + } + return state.NewDoc(templateId, nil).NewState(), nil +} + +func (tts *testTemplateService) TemplateCloneInSpace(space clientspace.Space, id string) (templateId string, err error) { + return "", nil +} + +func TestService_CreateObject(t *testing.T) { + t.Run("template creation", func(t *testing.T) { + // given + sb := smarttest.New("test") + f := newFixture(t) + f.spaceService.EXPECT().Get(mock.Anything, mock.Anything).Return(f.spc, nil) + f.spc.EXPECT().CreateTreeObject(mock.Anything, mock.Anything).Return(sb, nil) + f.spc.EXPECT().Id().Return(spaceId) + f.lastUsedService.EXPECT().UpdateLastUsedDate(spaceId, bundle.TypeKeyTemplate, mock.Anything).Return() + + // when + id, _, err := f.service.CreateObject(context.Background(), spaceId, CreateObjectRequest{ + Details: &types.Struct{Fields: map[string]*types.Value{ + bundle.RelationKeyTargetObjectType.String(): pbtypes.String(bundle.TypeKeyTask.URL()), + }}, + ObjectTypeKey: bundle.TypeKeyTemplate, + }) + + // then + assert.NoError(t, err) + assert.Equal(t, "test", id) + }) + + t.Run("template creation - no target type", func(t *testing.T) { + // given + f := newFixture(t) + f.spaceService.EXPECT().Get(mock.Anything, mock.Anything).Return(f.spc, nil) + + // when + _, _, err := f.service.CreateObject(context.Background(), spaceId, CreateObjectRequest{ + ObjectTypeKey: bundle.TypeKeyTemplate, + }) + + // then + assert.Error(t, err) + }) +} diff --git a/core/block/object/treesyncer/treesyncer.go b/core/block/object/treesyncer/treesyncer.go index 5bcea6a21..5b5387595 100644 --- a/core/block/object/treesyncer/treesyncer.go +++ b/core/block/object/treesyncer/treesyncer.go @@ -11,9 +11,11 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/synctree" "github.com/anyproto/any-sync/commonspace/object/treemanager" "github.com/anyproto/any-sync/commonspace/object/treesyncer" + "github.com/anyproto/any-sync/commonspace/spacestorage" "github.com/anyproto/any-sync/net/peer" "github.com/anyproto/any-sync/net/streampool" "github.com/anyproto/any-sync/nodeconf" + "github.com/samber/lo" "go.uber.org/zap" ) @@ -72,6 +74,7 @@ type treeSyncer struct { requests int spaceId string timeout time.Duration + spaceSettingsId string requestPools map[string]*executor headPools map[string]*executor treeManager treemanager.TreeManager @@ -97,6 +100,8 @@ func NewTreeSyncer(spaceId string) treesyncer.TreeSyncer { func (t *treeSyncer) Init(a *app.App) (err error) { t.isSyncing = true + spaceStorage := app.MustComponent[spacestorage.SpaceStorage](a) + t.spaceSettingsId = spaceStorage.SpaceSettingsId() t.treeManager = app.MustComponent[treemanager.TreeManager](a) t.nodeConf = app.MustComponent[nodeconf.NodeConf](a) t.syncedTreeRemover = app.MustComponent[SyncedTreeRemover](a) @@ -157,7 +162,9 @@ func (t *treeSyncer) SyncAll(ctx context.Context, p peer.Peer, existing, missing defer t.Unlock() peerId := p.Id() isResponsible := slices.Contains(t.nodeConf.NodeIds(t.spaceId), peerId) - t.sendSyncEvents(existing, missing, isResponsible) + t.sendSyncEvents(lo.Filter(existing, func(id string, index int) bool { + return id != t.spaceSettingsId + }), missing, isResponsible) reqExec, exists := t.requestPools[peerId] if !exists { reqExec = newExecutor(t.requests, 0) diff --git a/core/block/object/treesyncer/treesyncer_test.go b/core/block/object/treesyncer/treesyncer_test.go index 079118db5..be37205a7 100644 --- a/core/block/object/treesyncer/treesyncer_test.go +++ b/core/block/object/treesyncer/treesyncer_test.go @@ -11,8 +11,11 @@ import ( "github.com/anyproto/any-sync/commonspace/object/tree/objecttree/mock_objecttree" "github.com/anyproto/any-sync/commonspace/object/tree/synctree/mock_synctree" "github.com/anyproto/any-sync/commonspace/object/treemanager/mock_treemanager" + "github.com/anyproto/any-sync/commonspace/spacestorage/mock_spacestorage" + "github.com/anyproto/any-sync/net/peer" "github.com/anyproto/any-sync/net/rpc/rpctest" "github.com/anyproto/any-sync/nodeconf/mock_nodeconf" + "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" @@ -40,9 +43,12 @@ func newFixture(t *testing.T, spaceId string) *fixture { nodeConf.EXPECT().Name().Return("nodeConf").AnyTimes() syncStatus := mock_treesyncer.NewMockSyncedTreeRemover(t) syncDetailsUpdater := mock_treesyncer.NewMockSyncDetailsUpdater(t) + spaceStorage := mock_spacestorage.NewMockSpaceStorage(ctrl) + spaceStorage.EXPECT().SpaceSettingsId().Return("spaceSettingsId").AnyTimes() a := new(app.App) a.Register(testutil.PrepareMock(context.Background(), a, treeManager)). + Register(testutil.PrepareMock(context.Background(), a, spaceStorage)). Register(testutil.PrepareMock(context.Background(), a, syncStatus)). Register(testutil.PrepareMock(context.Background(), a, nodeConf)). Register(testutil.PrepareMock(context.Background(), a, syncDetailsUpdater)) @@ -62,7 +68,6 @@ func newFixture(t *testing.T, spaceId string) *fixture { } func TestTreeSyncer(t *testing.T) { - spaceId := "spaceId" peerId := "peerId" existingId := "existing" @@ -144,6 +149,27 @@ func TestTreeSyncer(t *testing.T) { fx.Close(ctx) }) + t.Run("sync spaceSettingsId", func(t *testing.T) { + ctx := context.Background() + fx := newFixture(t, spaceId) + fx.nodeConf.EXPECT().NodeIds(spaceId).Return(nil) + fx.syncStatus.EXPECT().RemoveAllExcept(peerId, mock.Anything).RunAndReturn(func(s string, strings []string) { + require.Empty(t, strings) + }) + ch := make(chan struct{}) + fx.treeManager.EXPECT().GetTree(gomock.Any(), spaceId, "spaceSettingsId").Return(fx.existingMock, nil) + fx.existingMock.EXPECT().SyncWithPeer(gomock.Any(), pr).DoAndReturn(func(ctx context.Context, peer peer.Peer) error { + close(ch) + return nil + }) + + fx.StartSync() + err := fx.SyncAll(context.Background(), pr, []string{"spaceSettingsId"}, nil) + require.NoError(t, err) + <-ch + fx.Close(ctx) + }) + t.Run("sync concurrent ids", func(t *testing.T) { ctx := context.Background() ch := make(chan struct{}, 2) @@ -185,9 +211,11 @@ func TestTreeSyncer(t *testing.T) { mutex.Unlock() return fx.missingMock, nil }) - fx.nodeConf.EXPECT().NodeIds(spaceId).Return([]string{}) + fx.nodeConf.EXPECT().NodeIds(spaceId).Return(nil) var existing []string - fx.syncStatus.EXPECT().RemoveAllExcept(peerId, existing).Return() + fx.syncStatus.EXPECT().RemoveAllExcept(peerId, mock.Anything).RunAndReturn(func(s string, strings []string) { + require.Empty(t, strings) + }) fx.StartSync() err := fx.SyncAll(context.Background(), pr, existing, []string{missingId}) diff --git a/core/block/restriction/object.go b/core/block/restriction/object.go index d5a73df71..d23c41acc 100644 --- a/core/block/restriction/object.go +++ b/core/block/restriction/object.go @@ -24,7 +24,7 @@ var ( model.Restrictions_Template, model.Restrictions_Duplicate, } - objFileRestrictions = ObjectRestrictions{ + objRestrictEditAndDuplicate = ObjectRestrictions{ model.Restrictions_Blocks, model.Restrictions_LayoutChange, model.Restrictions_TypeChange, @@ -63,7 +63,7 @@ var ( model.ObjectType_collection: objRestrictEdit, model.ObjectType_objectType: objRestrictEdit, model.ObjectType_relation: objRestrictEdit, - model.ObjectType_file: objFileRestrictions, + model.ObjectType_file: objRestrictEditAndDuplicate, model.ObjectType_dashboard: { model.Restrictions_Details, model.Restrictions_Relations, @@ -85,8 +85,8 @@ var ( model.Restrictions_Template, }, model.ObjectType_participant: objRestrictAll, - model.ObjectType_chat: objRestrictEdit, - model.ObjectType_chatDerived: objRestrictEdit, + model.ObjectType_chat: objRestrictEditAndDuplicate, + model.ObjectType_chatDerived: objRestrictEditAndDuplicate, model.ObjectType_tag: objRestrictEdit, } @@ -117,7 +117,7 @@ var ( model.Restrictions_Template, model.Restrictions_Duplicate, }, - smartblock.SmartBlockTypeFileObject: objFileRestrictions, + smartblock.SmartBlockTypeFileObject: objRestrictEditAndDuplicate, smartblock.SmartBlockTypeArchive: objRestrictAll, smartblock.SmartBlockTypeBundledRelation: objRestrictAll, smartblock.SmartBlockTypeSubObject: objRestrictEdit, @@ -143,7 +143,9 @@ var ( smartblock.SmartBlockTypeAccountOld: { model.Restrictions_Template, }, - smartblock.SmartBlockTypeParticipant: objRestrictAll, + smartblock.SmartBlockTypeParticipant: objRestrictAll, + smartblock.SmartBlockTypeChatObject: objRestrictEditAndDuplicate, + smartblock.SmartBlockTypeChatDerivedObject: objRestrictEditAndDuplicate, } ) diff --git a/core/block/restriction/object_test.go b/core/block/restriction/object_test.go index 4a213be13..e225386dc 100644 --- a/core/block/restriction/object_test.go +++ b/core/block/restriction/object_test.go @@ -92,6 +92,12 @@ func TestService_ObjectRestrictionsById(t *testing.T) { bundledRelation := givenRestrictionHolder(coresb.SmartBlockTypeBundledRelation, bundle.TypeKeyRelation) assert.ErrorIs(t, rs.GetRestrictions(bundledRelation).Object.Check(objRestrictAll...), ErrRestricted) }) + + t.Run("chat should have edit and duplication restrictions", func(t *testing.T) { + assert.ErrorIs(t, rs.GetRestrictions(givenRestrictionHolder(coresb.SmartBlockTypeChatObject, bundle.TypeKeyChat)).Object.Check( + objRestrictEditAndDuplicate..., + ), ErrRestricted) + }) } func TestTemplateRestriction(t *testing.T) { diff --git a/core/block/service.go b/core/block/service.go index 80412603e..29423597f 100644 --- a/core/block/service.go +++ b/core/block/service.go @@ -39,6 +39,7 @@ import ( "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" "github.com/anyproto/anytype-heart/pkg/lib/core" + coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" "github.com/anyproto/anytype-heart/pkg/lib/database" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" "github.com/anyproto/anytype-heart/pkg/lib/logging" @@ -300,6 +301,54 @@ func (s *Service) SpaceInstallBundledObjects( return s.objectCreator.InstallBundledObjects(ctx, spc, sourceObjectIds, false) } +func (s *Service) SpaceInitChat(ctx context.Context, spaceId string) error { + spc, err := s.spaceService.Get(ctx, spaceId) + if err != nil { + return fmt.Errorf("get space: %w", err) + } + if spc.IsReadOnly() { + return nil + } + if spc.IsPersonal() { + return nil + } + + workspaceId := spc.DerivedIDs().Workspace + chatUk, err := domain.NewUniqueKey(coresb.SmartBlockTypeChatDerivedObject, workspaceId) + if err != nil { + return err + } + + chatId, err := spc.DeriveObjectID(context.Background(), chatUk) + if err != nil { + return err + } + + if spaceChatExists, err := spc.Storage().HasTree(chatId); err != nil { + return err + } else if !spaceChatExists { + _, err = s.objectCreator.AddChatDerivedObject(ctx, spc, workspaceId) + if err != nil { + if !errors.Is(err, treestorage.ErrTreeExists) { + return fmt.Errorf("add chat derived object: %w", err) + } + } + } + + err = spc.DoCtx(ctx, workspaceId, func(b smartblock.SmartBlock) error { + st := b.NewState() + st.SetLocalDetail(bundle.RelationKeyChatId.String(), pbtypes.String(chatId)) + st.SetDetail(bundle.RelationKeyHasChat.String(), pbtypes.Bool(true)) + + return b.Apply(st, smartblock.NoHistory, smartblock.NoEvent, smartblock.SkipIfNoChanges, smartblock.KeepInternalFlags, smartblock.IgnoreNoPermissions) + }) + if err != nil { + return fmt.Errorf("apply chatId to workspace: %w", err) + } + + return nil +} + func (s *Service) SelectWorkspace(req *pb.RpcWorkspaceSelectRequest) error { panic("should be removed") } diff --git a/core/block/source/date.go b/core/block/source/date.go index 49b1c4eb8..be1b01a73 100644 --- a/core/block/source/date.go +++ b/core/block/source/date.go @@ -17,17 +17,18 @@ import ( "github.com/anyproto/anytype-heart/util/pbtypes" ) -func NewDate(space Space, id string) (s Source) { +func NewDate(space Space, id domain.FullID) (s Source) { return &date{ - id: id, - space: space, + id: id.ObjectID, + spaceId: id.SpaceID, + space: space, } } type date struct { - space Space - id string - t time.Time + space Space + id, spaceId string + t time.Time } func (v *date) ListIds() ([]string, error) { @@ -43,10 +44,13 @@ func (v *date) Id() string { } func (v *date) SpaceID() string { - if v.space == nil { - return "" + if v.space != nil { + return v.space.Id() } - return v.space.Id() + if v.spaceId != "" { + return v.spaceId + } + return "" } func (v *date) Type() smartblock.SmartBlockType { @@ -63,7 +67,7 @@ func (v *date) getDetails(ctx context.Context) (*domain.Details, error) { return nil, fmt.Errorf("get date type id: %w", err) } det := domain.NewDetails() - det.SetString(bundle.RelationKeyName, v.t.Format("Mon Jan 2 2006")) + det.SetString(bundle.RelationKeyName, v.t.Format("02 Jan 2006")) det.SetString(bundle.RelationKeyId, v.id) det.SetBool(bundle.RelationKeyIsReadonly, true) det.SetBool(bundle.RelationKeyIsArchived, false) @@ -82,7 +86,7 @@ func (v *date) DetailsFromId() (*domain.Details, error) { return nil, err } det := domain.NewDetails() - det.SetString(bundle.RelationKeyName, v.t.Format("Mon Jan 2 2006")) + det.SetString(bundle.RelationKeyName, v.t.Format("02 Jan 2006")) det.SetString(bundle.RelationKeyId, v.id) det.SetBool(bundle.RelationKeyIsReadonly, true) det.SetBool(bundle.RelationKeyIsArchived, false) @@ -179,10 +183,10 @@ func (v *date) Heads() []string { return []string{v.id} } -func (s *date) GetFileKeysSnapshot() []*pb.ChangeFileKeys { +func (v *date) GetFileKeysSnapshot() []*pb.ChangeFileKeys { return nil } -func (s *date) GetCreationInfo() (creatorObjectId string, createdDate int64, err error) { +func (v *date) GetCreationInfo() (creatorObjectId string, createdDate int64, err error) { return addr.AnytypeProfileId, 0, nil } diff --git a/core/block/source/marshall_change_test.go b/core/block/source/marshall_change_test.go index 4dc98ab75..431833c8c 100644 --- a/core/block/source/marshall_change_test.go +++ b/core/block/source/marshall_change_test.go @@ -19,26 +19,26 @@ var text = "-- Еh bien, mon prince. Gênes et Lucques ne sont plus que des apan func TestMarshallChange(t *testing.T) { t.Run("marshall small change", func(t *testing.T) { - //given + // given c := changeWithSmallTextUpdate() - //when + // when data, dt, err := MarshalChange(c) - //then + // then assert.NoError(t, err) assert.NotZero(t, len(data)) assert.Empty(t, dt) }) t.Run("marshall bigger change", func(t *testing.T) { - //given + // given c := changeWithSetBigDetail(snappyLowerLimit) - //when + // when data, dt, err := MarshalChange(c) - //then + // then assert.NoError(t, err) assert.NotEmpty(t, data) assert.Equal(t, dataTypeSnappy, dt) @@ -49,97 +49,97 @@ func TestUnmarshallChange(t *testing.T) { invalidDataType := "invalid" t.Run("unmarshall small change", func(t *testing.T) { - //given + // given c := changeWithSmallTextUpdate() data, dt, err := MarshalChange(c) require.NoError(t, err) require.NotEmpty(t, data) require.Empty(t, dt) - //when + // when res, err := UnmarshalChange(&objecttree.Change{DataType: dt}, data) - //then + // then assert.NoError(t, err) assert.Equal(t, c, res) }) t.Run("unmarshall bigger change", func(t *testing.T) { - //given + // given c := changeWithSetBigDetail(snappyLowerLimit) data, dt, err := MarshalChange(c) require.NoError(t, err) require.NotEmpty(t, data) require.Equal(t, dataTypeSnappy, dt) - //when + // when res, err := UnmarshalChange(&objecttree.Change{DataType: dt}, data) - //then + // then assert.NoError(t, err) assert.Equal(t, c, res) }) t.Run("unmarshall plain change with invalid data type", func(t *testing.T) { - //given + // given c := changeWithSmallTextUpdate() data, dt, err := MarshalChange(c) require.NoError(t, err) require.NotEmpty(t, data) require.Empty(t, dt) - //when + // when res, err := UnmarshalChange(&objecttree.Change{DataType: invalidDataType}, data) - //then + // then assert.NoError(t, err) assert.Equal(t, c, res) }) t.Run("unmarshall plain change with encoded data type", func(t *testing.T) { - //given + // given c := changeWithSmallTextUpdate() data, dt, err := MarshalChange(c) require.NoError(t, err) require.NotEmpty(t, data) require.Empty(t, dt) - //when + // when res, err := UnmarshalChange(&objecttree.Change{DataType: dataTypeSnappy}, data) - //then + // then assert.NoError(t, err) assert.Equal(t, c, res) }) t.Run("unmarshall bigger change with empty data type", func(t *testing.T) { - //given + // given c := changeWithSetBigDetail(snappyLowerLimit) data, dt, err := MarshalChange(c) require.NoError(t, err) require.NotEmpty(t, data) require.Equal(t, dataTypeSnappy, dt) - //when + // when res, err := UnmarshalChange(&objecttree.Change{DataType: ""}, data) - //then + // then assert.Error(t, err) assert.Nil(t, res) }) t.Run("unmarshall encoded change with invalid data type", func(t *testing.T) { - //given + // given c := changeWithSetBigDetail(snappyLowerLimit) data, dt, err := MarshalChange(c) require.NoError(t, err) require.NotEmpty(t, data) require.Equal(t, dataTypeSnappy, dt) - //when + // when res, err := UnmarshalChange(&objecttree.Change{DataType: invalidDataType}, data) - //then + // then assert.Error(t, err) assert.Nil(t, res) }) diff --git a/core/block/source/mock_source/mock_Service.go b/core/block/source/mock_source/mock_Service.go index fa0a0a56a..3ce4be7b4 100644 --- a/core/block/source/mock_source/mock_Service.go +++ b/core/block/source/mock_source/mock_Service.go @@ -14,6 +14,8 @@ import ( smartblock "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock" source "github.com/anyproto/anytype-heart/core/block/source" + + types "github.com/gogo/protobuf/types" ) // MockService is an autogenerated mock type for the Service type @@ -30,27 +32,27 @@ func (_m *MockService) EXPECT() *MockService_Expecter { } // DetailsFromIdBasedSource provides a mock function with given fields: id -func (_m *MockService) DetailsFromIdBasedSource(id string) (*domain.GenericMap[domain.RelationKey], error) { +func (_m *MockService) DetailsFromIdBasedSource(id domain.FullID) (*types.Struct, error) { ret := _m.Called(id) if len(ret) == 0 { panic("no return value specified for DetailsFromIdBasedSource") } - var r0 *domain.GenericMap[domain.RelationKey] + var r0 *types.Struct var r1 error - if rf, ok := ret.Get(0).(func(string) (*domain.GenericMap[domain.RelationKey], error)); ok { + if rf, ok := ret.Get(0).(func(domain.FullID) (*types.Struct, error)); ok { return rf(id) } - if rf, ok := ret.Get(0).(func(string) *domain.GenericMap[domain.RelationKey]); ok { + if rf, ok := ret.Get(0).(func(domain.FullID) *types.Struct); ok { r0 = rf(id) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*domain.GenericMap[domain.RelationKey]) + r0 = ret.Get(0).(*types.Struct) } } - if rf, ok := ret.Get(1).(func(string) error); ok { + if rf, ok := ret.Get(1).(func(domain.FullID) error); ok { r1 = rf(id) } else { r1 = ret.Error(1) @@ -65,24 +67,24 @@ type MockService_DetailsFromIdBasedSource_Call struct { } // DetailsFromIdBasedSource is a helper method to define mock.On call -// - id string +// - id domain.FullID func (_e *MockService_Expecter) DetailsFromIdBasedSource(id interface{}) *MockService_DetailsFromIdBasedSource_Call { return &MockService_DetailsFromIdBasedSource_Call{Call: _e.mock.On("DetailsFromIdBasedSource", id)} } -func (_c *MockService_DetailsFromIdBasedSource_Call) Run(run func(id string)) *MockService_DetailsFromIdBasedSource_Call { +func (_c *MockService_DetailsFromIdBasedSource_Call) Run(run func(id domain.FullID)) *MockService_DetailsFromIdBasedSource_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(string)) + run(args[0].(domain.FullID)) }) return _c } -func (_c *MockService_DetailsFromIdBasedSource_Call) Return(_a0 *domain.GenericMap[domain.RelationKey], _a1 error) *MockService_DetailsFromIdBasedSource_Call { +func (_c *MockService_DetailsFromIdBasedSource_Call) Return(_a0 *types.Struct, _a1 error) *MockService_DetailsFromIdBasedSource_Call { _c.Call.Return(_a0, _a1) return _c } -func (_c *MockService_DetailsFromIdBasedSource_Call) RunAndReturn(run func(string) (*domain.GenericMap[domain.RelationKey], error)) *MockService_DetailsFromIdBasedSource_Call { +func (_c *MockService_DetailsFromIdBasedSource_Call) RunAndReturn(run func(domain.FullID) (*types.Struct, error)) *MockService_DetailsFromIdBasedSource_Call { _c.Call.Return(run) return _c } diff --git a/core/block/source/service.go b/core/block/source/service.go index 5f67d507e..c502cec45 100644 --- a/core/block/source/service.go +++ b/core/block/source/service.go @@ -53,7 +53,7 @@ type Service interface { RegisterStaticSource(s Source) error NewStaticSource(params StaticSourceParams) SourceWithType - DetailsFromIdBasedSource(id string) (*domain.Details, error) + DetailsFromIdBasedSource(id domain.FullID) (*domain.Details, error) IDsListerBySmartblockType(space Space, blockType smartblock.SmartBlockType) (IDsLister, error) app.Component } @@ -140,7 +140,10 @@ func (s *service) newSource(ctx context.Context, space Space, id string, buildOp if err == nil { switch st { case smartblock.SmartBlockTypeDate: - return NewDate(space, id), nil + return NewDate(space, domain.FullID{ + ObjectID: id, + SpaceID: space.Id(), + }), nil case smartblock.SmartBlockTypeBundledObjectType: return NewBundledObjectType(id), nil case smartblock.SmartBlockTypeBundledRelation: @@ -201,11 +204,10 @@ func (s *service) IDsListerBySmartblockType(space Space, blockType smartblock.Sm } } -func (s *service) DetailsFromIdBasedSource(id string) (*domain.Details, error) { - if !strings.HasPrefix(id, addr.DatePrefix) { +func (s *service) DetailsFromIdBasedSource(id domain.FullID) (*domain.Details, error) { + if !strings.HasPrefix(id.ObjectID, addr.DatePrefix) { return nil, fmt.Errorf("unsupported id") } - // TODO Fix this, but how? It's broken by design, because no one pass spaceId here ss := NewDate(nil, id) defer ss.Close() if v, ok := ss.(SourceIdEndodedDetails); ok { diff --git a/core/converter/dot/dot.go b/core/converter/dot/dot.go index 0fd61bc6a..4cf95b050 100644 --- a/core/converter/dot/dot.go +++ b/core/converter/dot/dot.go @@ -5,6 +5,7 @@ package dot import ( "bytes" + "context" "fmt" "io/ioutil" @@ -42,6 +43,7 @@ type linkInfo struct { } type dot struct { + ctx context.Context graph *cgraph.Graph graphviz *graphviz.Graphviz knownDocs map[string]*domain.Details @@ -57,13 +59,18 @@ func NewMultiConverter( format graphviz.Format, sbtProvider typeprovider.SmartBlockTypeProvider, ) converter.MultiConverter { - g := graphviz.New() + ctx := context.Background() + g, err := graphviz.New(ctx) + if err != nil { + return nil + } graph, err := g.Graph() if err != nil { return nil } return &dot{ + ctx: ctx, graph: graph, graphviz: g, exportFormat: format, @@ -87,7 +94,7 @@ func (d *dot) ImageHashes() []string { } func (d *dot) Add(space smartblock.Space, st *state.State) error { - n, e := d.graph.CreateNode(st.RootId()) + n, e := d.graph.CreateNodeByName(st.RootId()) if e != nil { return e } @@ -158,7 +165,7 @@ func (d *dot) Convert(sbType model.SmartBlockType) []byte { if !exists { continue } - e, err = d.graph.CreateEdge("", source, target) + e, err = d.graph.CreateEdgeByName("", source, target) if err != nil { return nil } @@ -172,7 +179,7 @@ func (d *dot) Convert(sbType model.SmartBlockType) []byte { } var buf bytes.Buffer - if err = d.graphviz.Render(d.graph, d.exportFormat, &buf); err != nil { + if err = d.graphviz.Render(d.ctx, d.graph, d.exportFormat, &buf); err != nil { return nil } diff --git a/core/debug.go b/core/debug.go index fe5010eec..7c387e629 100644 --- a/core/debug.go +++ b/core/debug.go @@ -3,10 +3,12 @@ package core import ( "context" + "github.com/anyproto/anytype-heart/core/application" "github.com/anyproto/anytype-heart/core/block" "github.com/anyproto/anytype-heart/core/debug" "github.com/anyproto/anytype-heart/core/subscription" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/environment" ) func (mw *Middleware) DebugTree(cctx context.Context, req *pb.RpcDebugTreeRequest) *pb.RpcDebugTreeResponse { @@ -238,6 +240,21 @@ func (mw *Middleware) DebugAccountSelectTrace(cctx context.Context, req *pb.RpcD } } +func (mw *Middleware) DebugExportLog(cctx context.Context, req *pb.RpcDebugExportLogRequest) *pb.RpcDebugExportLogResponse { + path, err := mw.applicationService.SaveLog(environment.LOG_PATH, req.Dir) + + code := mapErrorCode(err, + errToCode(application.ErrNoFolder, pb.RpcDebugExportLogResponseError_NO_FOLDER), + ) + return &pb.RpcDebugExportLogResponse{ + Path: path, + Error: &pb.RpcDebugExportLogResponseError{ + Code: code, + Description: getErrorDescription(err), + }, + } +} + func (mw *Middleware) DebugAnystoreObjectChanges(cctx context.Context, req *pb.RpcDebugAnystoreObjectChangesRequest) *pb.RpcDebugAnystoreObjectChangesResponse { debugService := getService[debug.Debug](mw) changes, wrongOrder, err := debugService.DebugAnystoreObjectChanges(cctx, req.ObjectId, req.OrderBy) @@ -255,3 +272,19 @@ func (mw *Middleware) DebugAnystoreObjectChanges(cctx context.Context, req *pb.R WrongOrder: wrongOrder, } } + +func (mw *Middleware) DebugNetCheck(cctx context.Context, req *pb.RpcDebugNetCheckRequest) *pb.RpcDebugNetCheckResponse { + res, err := getService[debug.Debug](mw).NetCheck(cctx, req.ClientYml) + if err != nil { + return &pb.RpcDebugNetCheckResponse{ + Error: &pb.RpcDebugNetCheckResponseError{ + Code: pb.RpcDebugNetCheckResponseError_UNKNOWN_ERROR, + Description: getErrorDescription(err), + }, + } + } + + return &pb.RpcDebugNetCheckResponse{ + Result: res, + } +} diff --git a/core/debug/graphviz_nix.go b/core/debug/graphviz_nix.go index 9414891d5..0a2e7292c 100644 --- a/core/debug/graphviz_nix.go +++ b/core/debug/graphviz_nix.go @@ -9,6 +9,7 @@ package debug import ( + "context" "os" "github.com/goccy/go-graphviz" @@ -28,6 +29,10 @@ func GraphvizSvg(gv, svgFilename string) (err error) { } defer f.Close() - g := graphviz.New() - return g.Render(gvo, graphviz.SVG, f) + ctx := context.Background() + g, err := graphviz.New(ctx) + if err != nil { + return err + } + return g.Render(ctx, gvo, graphviz.SVG, f) } diff --git a/core/debug/netcheck.go b/core/debug/netcheck.go new file mode 100644 index 000000000..eff9f1b60 --- /dev/null +++ b/core/debug/netcheck.go @@ -0,0 +1,317 @@ +package debug + +import ( + "context" + "fmt" + "net" + "os" + "strings" + "time" + + "github.com/anyproto/any-sync/app" + "github.com/anyproto/any-sync/coordinator/coordinatorproto" + "github.com/anyproto/any-sync/net/connutil" + "github.com/anyproto/any-sync/net/secureservice" + "github.com/anyproto/any-sync/net/secureservice/handshake" + "github.com/anyproto/any-sync/net/secureservice/handshake/handshakeproto" + "github.com/anyproto/any-sync/net/transport" + "github.com/anyproto/any-sync/net/transport/quic" + "github.com/anyproto/any-sync/net/transport/yamux" + "github.com/anyproto/any-sync/nodeconf" + "github.com/anyproto/any-sync/testutil/accounttest" + "github.com/anyproto/go-chash" + yamux2 "github.com/hashicorp/yamux" + "github.com/matishsiao/goInfo" + "gopkg.in/yaml.v3" + "storj.io/drpc/drpcconn" +) + +func (d *debug) NetCheck(ctx context.Context, clientYml string) (string, error) { + var sb strings.Builder + var checkAddrs []string + if clientYml != "" { + file, err := os.ReadFile(clientYml) + if err != nil { + return "", err + } + + var configFile nodeconf.Configuration + if err := yaml.Unmarshal(file, &configFile); err != nil { + return "", err + } + + for _, node := range configFile.Nodes { + for _, t := range node.Types { + if t == "coordinator" { + for _, address := range node.Addresses { + if !strings.HasPrefix(address, "quic://") { + address = "yamux://" + address + } + checkAddrs = append(checkAddrs, address) + } + } + } + } + } else { + checkAddrs = strings.Split(defaultAddrs, ",") + } + info, err := goInfo.GetInfo() + if err != nil { + sb.WriteString(fmt.Sprintf("error getting system info: %s\n", err)) + } else { + sb.WriteString(fmt.Sprintf("system info: %s\n", info.String())) + } + + a := new(app.App) + bootstrap(a) + if err := a.Start(ctx); err != nil { + panic(err) + } + + for _, addr := range checkAddrs { + addr = strings.TrimSpace(addr) + switch { + case strings.HasPrefix(addr, "yamux://"): + res, err := probeYamux(ctx, a, addr[8:]) + if err != nil { + sb.WriteString(fmt.Sprintf("error probing yamux %s: %s\n", addr, err)) + } else { + sb.WriteString(res) + } + case strings.HasPrefix(addr, "quic://"): + res, err := probeQuic(ctx, a, addr[7:]) + if err != nil { + sb.WriteString(fmt.Sprintf("error probing yamux %s: %s\n", addr, err)) + } else { + sb.WriteString(res) + } + default: + return "", fmt.Errorf("unexpected address scheme: %s", addr) + } + } + return sb.String(), err +} + +func probeYamux(ctx context.Context, a *app.App, addr string) (string, error) { + var sb strings.Builder + ss := a.MustComponent(secureservice.CName).(secureservice.SecureService) + sb.WriteString(fmt.Sprintf("open TCP conn, addr: %s\n", addr)) + st := time.Now() + conn, err := net.DialTimeout("tcp", addr, time.Second*60) + if err != nil { + return "", fmt.Errorf("open TCP conn error: %w, dur: %s", err, time.Since(st)) + } else { + sb.WriteString(fmt.Sprintf("TCP conn established, ip:%s, dur: %s\n", conn.RemoteAddr().String(), time.Since(st))) + } + defer conn.Close() + + sb.WriteString("start handshake\n") + hst := time.Now() + cctx, err := ss.SecureOutbound(ctx, conn) + if err != nil { + return "", fmt.Errorf("handshake error: %w, dur: %s", err, time.Since(hst)) + } else { + sb.WriteString(fmt.Sprintf("handshake success, dur: %s, total: %s\n", time.Since(hst), time.Since(st))) + } + + yst := time.Now() + sb.WriteString("open yamux session\n") + sess, err := yamux2.Client(conn, yamux2.DefaultConfig()) + if err != nil { + return "", fmt.Errorf("yamux session error: %w, dur: %s", err, time.Since(yst)) + } else { + sb.WriteString(fmt.Sprintf("yamux session success, dur: %s, total: %s\n", time.Since(yst), time.Since(st))) + } + + mc := yamux.NewMultiConn(cctx, connutil.NewLastUsageConn(conn), conn.RemoteAddr().String(), sess) + sb.WriteString("open sub connection\n") + scst := time.Now() + sc, err := mc.Open(ctx) + if err != nil { + return "", fmt.Errorf("open sub connection error: %w, dur: %s", err, time.Since(scst)) + } else { + sb.WriteString(fmt.Sprintf("open sub conn success, dur: %s, total: %s\n", time.Since(scst), time.Since(st))) + defer sc.Close() + } + + sb.WriteString("start proto handshake\n") + phst := time.Now() + if err = handshake.OutgoingProtoHandshake(ctx, sc, handshakeproto.ProtoType_DRPC); err != nil { + return "", fmt.Errorf("proto handshake error: %w, dur: %s", err, time.Since(phst)) + } else { + sb.WriteString(fmt.Sprintf("proto handshake success, dur: %s, total: %s\n", time.Since(phst), time.Since(st))) + } + + sb.WriteString("start configuration request\n") + rst := time.Now() + resp, err := coordinatorproto.NewDRPCCoordinatorClient(drpcconn.New(sc)).NetworkConfiguration(ctx, &coordinatorproto.NetworkConfigurationRequest{}) + if err != nil { + return "", fmt.Errorf("configuration request error: %w, dur: %s", err, time.Since(rst)) + } else { + sb.WriteString(fmt.Sprintf("configuration request success, dur: %s, total: %s, nid: %s\n", time.Since(rst), time.Since(st), resp.GetNetworkId())) + } + sb.WriteString(fmt.Sprintf("success, dur: %s\n", time.Since(st))) + return sb.String(), nil +} + +func probeQuic(ctx context.Context, a *app.App, addr string) (string, error) { + var sb strings.Builder + qs := a.MustComponent(quic.CName).(quic.Quic) + sb.WriteString(fmt.Sprintf("open QUIC conn, addr: %s\n", addr)) + st := time.Now() + mc, err := qs.Dial(ctx, addr) + if err != nil { + return "", fmt.Errorf("open QUIC conn error: %w", err) + } else { + sb.WriteString(fmt.Sprintf("QUIC conn established, ip:%s, dur: %s\n", mc.Addr(), time.Since(st))) + } + defer mc.Close() + + sb.WriteString("open sub connection\n") + scst := time.Now() + sc, err := mc.Open(ctx) + if err != nil { + return "", fmt.Errorf("open sub connection error: %w", err) + } else { + sb.WriteString(fmt.Sprintf("open sub conn success, dur: %s, total: %s\n", time.Since(scst), time.Since(st))) + defer sc.Close() + } + + sb.WriteString("start proto handshake\n") + phst := time.Now() + if err = handshake.OutgoingProtoHandshake(ctx, sc, handshakeproto.ProtoType_DRPC); err != nil { + return "", fmt.Errorf("proto handshake error: %w", err) + } else { + sb.WriteString(fmt.Sprintf("proto handshake success, dur: %s, total: %s\n", time.Since(phst), time.Since(st))) + } + + sb.WriteString("start configuration request\n") + rst := time.Now() + resp, err := coordinatorproto.NewDRPCCoordinatorClient(drpcconn.New(sc)).NetworkConfiguration(ctx, &coordinatorproto.NetworkConfigurationRequest{}) + if err != nil { + return "", fmt.Errorf("configuration request error: %w", err) + } else { + sb.WriteString(fmt.Sprintf("configuration request success, dur: %s, total: %s, nid: %s\n", time.Since(rst), time.Since(st), resp.GetNetworkId())) + } + sb.WriteString(fmt.Sprintf("success, dur: %s\n", time.Since(st))) + return sb.String(), nil +} + +func bootstrap(a *app.App) { + q := quic.New() + a.Register(&config{}). + Register(&nodeConf{}). + Register(q). + Register(&accounttest.AccountTestService{}). + Register(secureservice.New()) + q.SetAccepter(new(accepter)) +} + +type config struct { +} + +func (c config) Name() string { return "config" } +func (c config) Init(a *app.App) error { return nil } + +func (c config) GetYamux() yamux.Config { + return yamux.Config{ + WriteTimeoutSec: 60, + DialTimeoutSec: 60, + KeepAlivePeriodSec: 120, + } +} + +func (c config) GetQuic() quic.Config { + return quic.Config{ + WriteTimeoutSec: 60, + DialTimeoutSec: 60, + KeepAlivePeriodSec: 120, + } +} + +type nodeConf struct { +} + +func (n nodeConf) Id() string { + return "test" +} + +func (n nodeConf) Configuration() nodeconf.Configuration { + return nodeconf.Configuration{ + Id: "test", + NetworkId: "", + Nodes: nil, + CreationTime: time.Time{}, + } +} + +func (n nodeConf) NodeIds(spaceId string) []string { + return nil +} + +func (n nodeConf) IsResponsible(spaceId string) bool { + return false +} + +func (n nodeConf) FilePeers() []string { + return nil +} + +func (n nodeConf) ConsensusPeers() []string { + return nil +} + +func (n nodeConf) CoordinatorPeers() []string { + return nil +} + +func (n nodeConf) NamingNodePeers() []string { + return nil +} + +func (n nodeConf) PaymentProcessingNodePeers() []string { + return nil +} + +func (n nodeConf) PeerAddresses(peerId string) (addrs []string, ok bool) { + return nil, false +} + +func (n nodeConf) CHash() chash.CHash { + return nil +} + +func (n nodeConf) Partition(spaceId string) (part int) { + return 0 +} + +func (n nodeConf) NodeTypes(nodeId string) []nodeconf.NodeType { + return []nodeconf.NodeType{nodeconf.NodeTypeCoordinator} +} + +func (n nodeConf) NetworkCompatibilityStatus() nodeconf.NetworkCompatibilityStatus { + return 0 +} + +func (n nodeConf) Init(a *app.App) (err error) { + return nil +} + +func (n nodeConf) Name() (name string) { + return nodeconf.CName +} + +func (n nodeConf) Run(ctx context.Context) (err error) { + return nil +} + +func (n nodeConf) Close(ctx context.Context) (err error) { + return nil +} + +type accepter struct { +} + +func (a accepter) Accept(mc transport.MultiConn) (err error) { + return nil +} diff --git a/core/debug/service.go b/core/debug/service.go index cf49fb674..8c3331b38 100644 --- a/core/debug/service.go +++ b/core/debug/service.go @@ -27,6 +27,7 @@ import ( "github.com/anyproto/anytype-heart/core/domain" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore" + "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceindex" "github.com/anyproto/anytype-heart/pkg/lib/logging" "github.com/anyproto/anytype-heart/space" ) @@ -35,6 +36,16 @@ const CName = "debug" var log = logging.Logger("anytype-debug") +const defaultAddrs = ` +yamux://prod-any-sync-coordinator1.anyclub.org:443, +yamux://prod-any-sync-coordinator1.anyclub.org:1443, +yamux://prod-any-sync-coordinator1.toolpad.org:443, +yamux://prod-any-sync-coordinator1.toolpad.org:1443, +yamux://prod-any-sync-coordinator1.anytype.io:443, +yamux://prod-any-sync-coordinator1.anytype.io:1443, +quic://prod-any-sync-coordinator1.anyclub.org:5430 +` + func New() Debug { return new(debug) } @@ -48,6 +59,7 @@ type Debug interface { TreeHeads(ctx context.Context, id string) (info TreeInfo, err error) DebugAnystoreObjectChanges(ctx context.Context, chatObjectId string, orderBy pb.RpcDebugAnystoreObjectChangesRequestOrderBy) ([]*pb.RpcDebugAnystoreObjectChangesResponseChange, bool, error) + NetCheck(ctx context.Context, clientYml string) (string, error) } type debug struct { @@ -237,13 +249,6 @@ func (d *debug) DumpTree(ctx context.Context, objectID string, path string, anon } func (d *debug) DumpLocalstore(ctx context.Context, spaceID string, objIds []string, path string) (filename string, err error) { - if len(objIds) == 0 { - objIds, err = d.store.ListIdsCrossSpace() - if err != nil { - return "", err - } - } - filename = filepath.Join(path, fmt.Sprintf("at.store.dbg.%s.zip", time.Now().Format("20060102.150405.99"))) f, err := os.Create(filename) if err != nil { @@ -257,31 +262,38 @@ func (d *debug) DumpLocalstore(ctx context.Context, spaceID string, objIds []str var wr io.Writer m := jsonpb.Marshaler{Indent: " "} - store := d.store.SpaceIndex(spaceID) - - for _, objId := range objIds { - doc, err := store.GetWithLinksInfoById(objId) + err = d.store.IterateSpaceIndex(func(store spaceindex.Store) error { + objIds, err = store.ListIds() if err != nil { - var err2 error - wr, err2 = zw.Create(fmt.Sprintf("%s.txt", objId)) - if err2 != nil { - return "", err + return err + } + + for _, objId := range objIds { + doc, err := store.GetWithLinksInfoById(objId) + if err != nil { + var err2 error + wr, err2 = zw.Create(fmt.Sprintf("%s/%s.txt", store.SpaceId(), objId)) + if err2 != nil { + return err + } + + _, _ = wr.Write([]byte(err.Error())) + continue + } + wr, err = zw.Create(fmt.Sprintf("%s/%s.json", store.SpaceId(), objId)) + if err != nil { + return err } - wr.Write([]byte(err.Error())) - continue - } - wr, err = zw.Create(fmt.Sprintf("%s.json", objId)) - if err != nil { - return "", err + err = m.Marshal(wr, doc) + if err != nil { + return err + } } + return nil + }) - err = m.Marshal(wr, doc) - if err != nil { - return "", err - } - } - return filename, nil + return filename, err } func (d *debug) DebugAnystoreObjectChanges(ctx context.Context, chatObjectId string, orderBy pb.RpcDebugAnystoreObjectChangesRequestOrderBy) ([]*pb.RpcDebugAnystoreObjectChangesResponseChange, bool, error) { diff --git a/core/details.go b/core/details.go index 7fca3ff58..4d3e289a3 100644 --- a/core/details.go +++ b/core/details.go @@ -114,7 +114,7 @@ func (mw *Middleware) ObjectSetIsFavorite(_ context.Context, req *pb.RpcObjectSe } return m } - err := getService[detailservice.Service](mw).SetIsFavorite(req.ContextId, req.IsFavorite) + err := getService[detailservice.Service](mw).SetIsFavorite(req.ContextId, req.IsFavorite, true) if err != nil { return response(pb.RpcObjectSetIsFavoriteResponseError_UNKNOWN_ERROR, err) } diff --git a/core/device.go b/core/device.go index 6f041f172..dcba64a30 100644 --- a/core/device.go +++ b/core/device.go @@ -17,6 +17,10 @@ func (mw *Middleware) DeviceNetworkStateSet(cctx context.Context, req *pb.RpcDev } return m } - app.MustComponent[device.NetworkState](mw.GetApp()).SetNetworkState(req.DeviceNetworkType) + mwApp := mw.GetApp() + if mwApp == nil { + return response(pb.RpcDeviceNetworkStateSetResponseError_INTERNAL_ERROR, ErrNotLoggedIn) + } + app.MustComponent[device.NetworkState](mwApp).SetNetworkState(req.DeviceNetworkType) return response(pb.RpcDeviceNetworkStateSetResponseError_NULL, nil) } diff --git a/core/domain/genericmap_test.go b/core/domain/genericmap_test.go index dfa5a2c21..d445aaf6e 100644 --- a/core/domain/genericmap_test.go +++ b/core/domain/genericmap_test.go @@ -436,7 +436,7 @@ func TestGenericMap_ToProto(t *testing.T) { "key-4": pbtypes.Bool(true), "key-5": pbtypes.Bool(false), "key-6": pbtypes.StringList([]string{"1", "2", "3"}), - "key-7": pbtypes.FloatList([]float64{1.1, 2.2, 3.3, 4.4}), + "key-7": pbtypes.Float64List([]float64{1.1, 2.2, 3.3, 4.4}), "key-8": pbtypes.IntList(1, 2, 3), "key-9": pbtypes.Struct(&types.Struct{ Fields: map[string]*types.Value{ diff --git a/core/domain/value.go b/core/domain/value.go index 86cebb5aa..37e814417 100644 --- a/core/domain/value.go +++ b/core/domain/value.go @@ -425,7 +425,7 @@ func (v Value) ToProto() *types.Value { case []string: return pbtypes.StringList(v) case []float64: - return pbtypes.FloatList(v) + return pbtypes.Float64List(v) case ValueMap: s := &types.Struct{Fields: make(map[string]*types.Value, v.Len())} for k, val := range v.Iterate() { diff --git a/core/filestorage/fileservice.go b/core/filestorage/fileservice.go index ede04239c..07ee9e408 100644 --- a/core/filestorage/fileservice.go +++ b/core/filestorage/fileservice.go @@ -149,5 +149,8 @@ func (f *fileStorage) NewLocalStoreGarbageCollector() LocalStoreGarbageCollector } func (f *fileStorage) Close(ctx context.Context) (err error) { - return f.proxy.Close() + if f.proxy != nil { + return f.proxy.Close() + } + return nil } diff --git a/core/indexer/reindex_test.go b/core/indexer/reindex_test.go index 3d5871a71..326dedfab 100644 --- a/core/indexer/reindex_test.go +++ b/core/indexer/reindex_test.go @@ -315,6 +315,8 @@ func TestReindex_addSyncRelations(t *testing.T) { fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeObjectType).Return(idsLister{Ids: []string{}}, nil) fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeTemplate).Return(idsLister{Ids: []string{}}, nil) fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeProfilePage).Return(idsLister{Ids: []string{}}, nil) + fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeChatDerivedObject).Return(idsLister{Ids: []string{}}, nil) + fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeChatObject).Return(idsLister{Ids: []string{}}, nil) space1.EXPECT().DoLockedIfNotExists("1", mock.AnythingOfType("func() error")).Return(nil) space1.EXPECT().DoLockedIfNotExists("2", mock.AnythingOfType("func() error")).Return(nil) @@ -352,6 +354,8 @@ func TestReindex_addSyncRelations(t *testing.T) { fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeObjectType).Return(idsLister{Ids: []string{}}, nil) fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeTemplate).Return(idsLister{Ids: []string{}}, nil) fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeProfilePage).Return(idsLister{Ids: []string{}}, nil) + fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeChatDerivedObject).Return(idsLister{Ids: []string{}}, nil) + fx.sourceFx.EXPECT().IDsListerBySmartblockType(space1, coresb.SmartBlockTypeChatObject).Return(idsLister{Ids: []string{}}, nil) space1.EXPECT().DoLockedIfNotExists("1", mock.AnythingOfType("func() error")).Return(nil) space1.EXPECT().DoLockedIfNotExists("2", mock.AnythingOfType("func() error")).Return(nil) diff --git a/core/metrics.go b/core/metrics.go index 1e8bba119..75463e98e 100644 --- a/core/metrics.go +++ b/core/metrics.go @@ -6,11 +6,12 @@ import ( "github.com/anyproto/anytype-heart/metrics" "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/logging" ) -func (mw *Middleware) MetricsSetParameters(cctx context.Context, req *pb.RpcMetricsSetParametersRequest) *pb.RpcMetricsSetParametersResponse { - response := func(code pb.RpcMetricsSetParametersResponseErrorCode, err error) *pb.RpcMetricsSetParametersResponse { - m := &pb.RpcMetricsSetParametersResponse{Error: &pb.RpcMetricsSetParametersResponseError{Code: code}} +func (mw *Middleware) InitialSetParameters(cctx context.Context, req *pb.RpcInitialSetParametersRequest) *pb.RpcInitialSetParametersResponse { + response := func(code pb.RpcInitialSetParametersResponseErrorCode, err error) *pb.RpcInitialSetParametersResponse { + m := &pb.RpcInitialSetParametersResponse{Error: &pb.RpcInitialSetParametersResponseError{Code: code}} if err != nil { m.Error.Description = getErrorDescription(err) } @@ -18,13 +19,15 @@ func (mw *Middleware) MetricsSetParameters(cctx context.Context, req *pb.RpcMetr return m } if req.Version == "" { - return response(pb.RpcMetricsSetParametersResponseError_BAD_INPUT, + return response(pb.RpcInitialSetParametersResponseError_BAD_INPUT, errors.New("version is empty. Version must be in format: 1.0.0-optional-commit-hash-for-dev-builds")) } mw.applicationService.SetClientVersion(req.Platform, req.Version) metrics.Service.SetPlatform(req.Platform) metrics.Service.SetStartVersion(req.Version) + metrics.Service.SetEnabled(!req.DoNotSendTelemetry) + logging.Init(req.Workdir, req.LogLevel, !req.DoNotSendLogs, !req.DoNotSaveLogs) - return response(pb.RpcMetricsSetParametersResponseError_NULL, nil) + return response(pb.RpcInitialSetParametersResponseError_NULL, nil) } diff --git a/core/object.go b/core/object.go index e6ac75fec..b78a1ea96 100644 --- a/core/object.go +++ b/core/object.go @@ -288,7 +288,7 @@ func (mw *Middleware) makeSuggestedDateRecord(ctx context.Context, spaceID strin } d := domain.NewDetailsFromMap(map[domain.RelationKey]domain.Value{ bundle.RelationKeyId: domain.String(id), - bundle.RelationKeyName: domain.String(t.Format("Mon Jan 2 2006")), + bundle.RelationKeyName: domain.String(t.Format("02 Jan 2006")), bundle.RelationKeyLayout: domain.Int64(model.ObjectType_date), bundle.RelationKeyType: domain.String(typeId), bundle.RelationKeyIconEmoji: domain.String("📅"), diff --git a/core/payments/cache/cache_test.go b/core/payments/cache/cache_test.go index c5fa7da51..ff4b2d53a 100644 --- a/core/payments/cache/cache_test.go +++ b/core/payments/cache/cache_test.go @@ -381,17 +381,17 @@ func TestGetExpireTime(t *testing.T) { for _, tc := range []struct { name string status *model.Membership - duration time.Duration + duration time.Time }{ - {"should return 10 minutes in case of nil", nil, cacheLifetimeDurOther}, - {"should return 24 hours in case of Explorer", &model.Membership{Tier: 1}, cacheLifetimeDurExplorer}, - {"should return 10 minutes in case of other", &model.Membership{Tier: 3}, cacheLifetimeDurOther}, + {"should return 10 minutes in case of nil", nil, time.Now().UTC().Add(cacheLifetimeDurOther)}, + {"should return 24 hours in case of Explorer", &model.Membership{Tier: 1}, time.Now().UTC().Add(cacheLifetimeDurExplorer)}, + {"should return 10 minutes in case of other", &model.Membership{Tier: 3}, time.Now().UTC().Add(cacheLifetimeDurOther)}, {"should return dateEnds in case it is earlier than 10 minutes", - &model.Membership{Tier: 4, DateEnds: uint64(time.Now().UTC().Add(3 * time.Minute).Unix())}, 3 * time.Minute}, + &model.Membership{Tier: 4, DateEnds: uint64(time.Now().UTC().Add(3 * time.Minute).Unix())}, time.Now().UTC().Add(3 * time.Minute)}, {"should return 10 minutes in case dateEnds is expired", - &model.Membership{Tier: 3, DateEnds: uint64(time.Now().UTC().Add(-10 * time.Hour).Unix())}, cacheLifetimeDurOther}, + &model.Membership{Tier: 3, DateEnds: uint64(time.Now().UTC().Add(-10 * time.Hour).Unix())}, time.Now().UTC().Add(cacheLifetimeDurOther)}, {"should return 10 minutes in case dateEnds is 0", - &model.Membership{Tier: 3, DateEnds: uint64(time.Unix(0, 0).Unix())}, cacheLifetimeDurOther}, + &model.Membership{Tier: 3, DateEnds: uint64(time.Unix(0, 0).Unix())}, time.Now().UTC().Add(cacheLifetimeDurOther)}, } { t.Run(tc.name, func(t *testing.T) { // given @@ -402,7 +402,7 @@ func TestGetExpireTime(t *testing.T) { expire := getExpireTime(tc.status) // then - assert.True(t, assertTimeNear(expire, time.Now().UTC().Add(tc.duration), delta)) + assert.True(t, assertTimeNear(expire, tc.duration, delta)) }) } } diff --git a/core/payments/payments.go b/core/payments/payments.go index 7b95f74b3..ab2e62578 100644 --- a/core/payments/payments.go +++ b/core/payments/payments.go @@ -14,6 +14,7 @@ import ( ppclient "github.com/anyproto/any-sync/paymentservice/paymentserviceclient" proto "github.com/anyproto/any-sync/paymentservice/paymentserviceproto" + "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/core/event" "github.com/anyproto/anytype-heart/core/filestorage/filesync" "github.com/anyproto/anytype-heart/core/nameservice" @@ -123,6 +124,7 @@ func New() Service { } type service struct { + cfg *config.Config cache cache.CacheService ppclient ppclient.AnyPpClientService wallet wallet.Wallet @@ -142,6 +144,7 @@ func (s *service) Name() (name string) { } func (s *service) Init(a *app.App) (err error) { + s.cfg = app.MustComponent[*config.Config](a) s.cache = app.MustComponent[cache.CacheService](a) s.ppclient = app.MustComponent[ppclient.AnyPpClientService](a) s.wallet = app.MustComponent[wallet.Wallet](a) @@ -173,6 +176,12 @@ func (s *service) Close(_ context.Context) (err error) { } func (s *service) getPeriodicStatus(ctx context.Context) error { + // skip running loop if we are on a custom network or in local-only mode + if s.cfg.GetNetworkMode() != pb.RpcAccount_DefaultConfig { + // do not trace to log to prevent spamming + return nil + } + // get subscription status (from cache or from the PP node) // if status has changed -> it will send events, etc _, err := s.GetSubscriptionStatus(ctx, &pb.RpcMembershipGetStatusRequest{}) diff --git a/core/payments/payments_test.go b/core/payments/payments_test.go index 24f3ffb4f..4ad8e4de3 100644 --- a/core/payments/payments_test.go +++ b/core/payments/payments_test.go @@ -19,6 +19,7 @@ import ( mock_ppclient "github.com/anyproto/any-sync/paymentservice/paymentserviceclient/mock" psp "github.com/anyproto/any-sync/paymentservice/paymentserviceproto" + "github.com/anyproto/anytype-heart/core/anytype/config" "github.com/anyproto/anytype-heart/core/event/mock_event" "github.com/anyproto/anytype-heart/core/filestorage/filesync/mock_filesync" "github.com/anyproto/anytype-heart/core/nameservice/mock_nameservice" @@ -98,6 +99,7 @@ func newFixture(t *testing.T) *fixture { fx.wallet.EXPECT().Account().Return(&ak).Maybe() fx.wallet.EXPECT().GetAccountPrivkey().Return(decodedSignKey).Maybe() + fx.wallet.EXPECT().RepoPath().Return("repo/path") fx.eventSender.EXPECT().Broadcast(mock.AnythingOfType("*pb.Event")).Maybe() @@ -111,9 +113,11 @@ func newFixture(t *testing.T) *fixture { Register(fx.identitiesUpdater). Register(testutil.PrepareMock(ctx, fx.a, fx.multiplayerLimitsUpdater)). Register(testutil.PrepareMock(ctx, fx.a, fx.fileLimitsUpdater)). - Register(testutil.PrepareMock(ctx, fx.a, fx.ns)) + Register(testutil.PrepareMock(ctx, fx.a, fx.ns)). + Register(&config.Config{DisableFileConfig: true, NetworkMode: pb.RpcAccount_DefaultConfig, PeferYamuxTransport: true}) require.NoError(t, fx.a.Start(ctx)) + return fx } diff --git a/core/subscription/collection.go b/core/subscription/collection.go index 7dbfae3c5..407b392f0 100644 --- a/core/subscription/collection.go +++ b/core/subscription/collection.go @@ -30,6 +30,7 @@ type collectionObserver struct { objectStore spaceindex.Store collectionService CollectionService recBatch *mb.MB + recBatchMutex sync.Mutex spaceSubscription *spaceSubscriptions } @@ -97,9 +98,10 @@ func (c *collectionObserver) listEntries() []*entry { return res } +// updateIds updates the list of ids in the observer and updates the subscription +// IMPORTANT: this function is not thread-safe because of recBatch add is not under the lock and should be called only sequentially func (c *collectionObserver) updateIds(ids []string) { c.lock.Lock() - defer c.lock.Unlock() removed, added := slice.DifferenceRemovedAdded(c.ids, ids) for _, id := range removed { @@ -109,7 +111,7 @@ func (c *collectionObserver) updateIds(ids []string) { c.idsSet[id] = struct{}{} } c.ids = ids - + c.lock.Unlock() entries := c.spaceSubscription.fetchEntriesLocked(append(removed, added...)) for _, e := range entries { err := c.recBatch.Add(database.Record{ diff --git a/core/subscription/service.go b/core/subscription/service.go index 2e4bf7cf6..d4a1b55d8 100644 --- a/core/subscription/service.go +++ b/core/subscription/service.go @@ -915,8 +915,10 @@ func (s *spaceSubscriptions) Close(ctx context.Context) (err error) { s.m.Lock() defer s.m.Unlock() s.recBatch.Close() - s.iterateSubscriptions(func(sub subscription) { + for subId, sub := range s.subscriptions { sub.close() - }) + delete(s.subscriptions, subId) + } + s.subscriptionKeys = s.subscriptionKeys[:0] return } diff --git a/core/syncstatus/detailsupdater/helper/helper.go b/core/syncstatus/detailsupdater/helper/helper.go index 457c76ad5..ee7fab373 100644 --- a/core/syncstatus/detailsupdater/helper/helper.go +++ b/core/syncstatus/detailsupdater/helper/helper.go @@ -34,5 +34,7 @@ func SyncRelationsSmartblockTypes() []smartblock.SmartBlockType { smartblock.SmartBlockTypePage, smartblock.SmartBlockTypeTemplate, smartblock.SmartBlockTypeProfilePage, + smartblock.SmartBlockTypeChatDerivedObject, + smartblock.SmartBlockTypeChatObject, } } diff --git a/core/syncstatus/detailsupdater/updater.go b/core/syncstatus/detailsupdater/updater.go index 7e4cd7806..ccac1ac10 100644 --- a/core/syncstatus/detailsupdater/updater.go +++ b/core/syncstatus/detailsupdater/updater.go @@ -231,10 +231,10 @@ func (u *syncStatusUpdater) setSyncDetails(sb smartblock.SmartBlock, status doma if !slices.Contains(helper.SyncRelationsSmartblockTypes(), sb.Type()) { return nil } + st := sb.NewState() if !u.isLayoutSuitableForSyncRelations(sb.Details()) { return nil } - st := sb.NewState() if fileStatus, ok := st.Details().TryFloat64(bundle.RelationKeyFileBackupStatus); ok { status, syncError = getSyncStatusForFile(status, syncError, filesyncstatus.Status(int(fileStatus))) } @@ -261,6 +261,7 @@ var suitableLayouts = map[model.ObjectTypeLayout]struct{}{ model.ObjectType_audio: {}, model.ObjectType_video: {}, model.ObjectType_pdf: {}, + model.ObjectType_chat: {}, } func (u *syncStatusUpdater) isLayoutSuitableForSyncRelations(details *domain.Details) bool { diff --git a/core/syncstatus/detailsupdater/updater_test.go b/core/syncstatus/detailsupdater/updater_test.go index dd6a159be..ab7c6870c 100644 --- a/core/syncstatus/detailsupdater/updater_test.go +++ b/core/syncstatus/detailsupdater/updater_test.go @@ -98,6 +98,7 @@ func TestSyncStatusUpdater_UpdateDetails(t *testing.T) { sb := smarttest.New(objectId) st := sb.Doc.(*state.State) st.SetDetailAndBundledRelation(bundle.RelationKeyLayout, domain.Int64(int64(model.ObjectType_basic))) + st.SetDetailAndBundledRelation(bundle.RelationKeySpaceId, domain.String("spaceId")) err := apply(sb) require.NoError(t, err) @@ -164,6 +165,7 @@ func TestSyncStatusUpdater_UpdateDetails(t *testing.T) { space.EXPECT().DoCtx(mock.Anything, mock.Anything, mock.Anything).Run(func(ctx context.Context, objectId string, apply func(smartblock.SmartBlock) error) { sb := smarttest.New(objectId) st := sb.Doc.(*state.State) + st.SetDetailAndBundledRelation(bundle.RelationKeySpaceId, pbtypes.String("spaceId")) st.SetDetailAndBundledRelation(bundle.RelationKeyLayout, domain.Int64(int64(model.ObjectType_file))) st.SetDetailAndBundledRelation(bundle.RelationKeyFileBackupStatus, domain.Int64(int64(filesyncstatus.Limited))) err := apply(sb) @@ -193,6 +195,7 @@ func TestSyncStatusUpdater_UpdateDetails(t *testing.T) { space.EXPECT().DoCtx(mock.Anything, mock.Anything, mock.Anything).Run(func(ctx context.Context, objectId string, apply func(smartblock.SmartBlock) error) { sb := smarttest.New(objectId) st := sb.Doc.(*state.State) + st.SetDetailAndBundledRelation(bundle.RelationKeySpaceId, pbtypes.String("spaceId")) st.SetDetailAndBundledRelation(bundle.RelationKeyLayout, domain.Int64(int64(model.ObjectType_file))) st.SetDetailAndBundledRelation(bundle.RelationKeyFileBackupStatus, domain.Int64(int64(filesyncstatus.Synced))) err := apply(sb) @@ -244,6 +247,7 @@ func TestSyncStatusUpdater_UpdateSpaceDetails(t *testing.T) { space.EXPECT().DoCtx(mock.Anything, objectId, mock.Anything).Run(func(ctx context.Context, objectId string, apply func(smartblock.SmartBlock) error) { sb := smarttest.New(objectId) st := sb.Doc.(*state.State) + st.SetDetailAndBundledRelation(bundle.RelationKeySpaceId, pbtypes.String("spaceId")) st.SetDetailAndBundledRelation(bundle.RelationKeyLayout, domain.Int64(int64(model.ObjectType_basic))) err := apply(sb) require.NoError(t, err) @@ -277,7 +281,8 @@ func TestSyncStatusUpdater_setSyncDetails(t *testing.T) { // given fx := newFixture(t) sb := smarttest.New("id") - + st := sb.Doc.(*state.State) + st.SetDetailAndBundledRelation(bundle.RelationKeySpaceId, pbtypes.String("spaceId")) // when err := fx.setSyncDetails(sb, domain.ObjectSyncStatusError, domain.SyncErrorNetworkError) assert.Nil(t, err) diff --git a/core/syncstatus/syncsubscriptions/syncingobjects.go b/core/syncstatus/syncsubscriptions/syncingobjects.go index 3c9420f4d..628dc3c01 100644 --- a/core/syncstatus/syncsubscriptions/syncingobjects.go +++ b/core/syncstatus/syncsubscriptions/syncingobjects.go @@ -42,11 +42,6 @@ func (s *syncingObjects) Run() error { int64(domain.ObjectSyncStatusError), }), }, - { - RelationKey: bundle.RelationKeySpaceId, - Condition: model.BlockContentDataviewFilter_Equal, - Value: domain.String(s.spaceId), - }, }, } s.objectSubscription = objectsubscription.NewIdSubscription(s.service, objectReq) diff --git a/core/wallet/mock_wallet/mock_Wallet.go b/core/wallet/mock_wallet/mock_Wallet.go index 2dbe7e2b4..d38538747 100644 --- a/core/wallet/mock_wallet/mock_Wallet.go +++ b/core/wallet/mock_wallet/mock_Wallet.go @@ -6,12 +6,8 @@ import ( app "github.com/anyproto/any-sync/app" accountdata "github.com/anyproto/any-sync/commonspace/object/accountdata" - common "github.com/ethereum/go-ethereum/common" - crypto "github.com/anyproto/any-sync/util/crypto" - ecdsa "crypto/ecdsa" - mock "github.com/stretchr/testify/mock" wallet "github.com/anyproto/anytype-heart/core/wallet" @@ -78,19 +74,19 @@ func (_c *MockWallet_Account_Call) RunAndReturn(run func() *accountdata.AccountK } // GetAccountEthAddress provides a mock function with given fields: -func (_m *MockWallet) GetAccountEthAddress() common.Address { +func (_m *MockWallet) GetAccountEthAddress() wallet.EthAddress { ret := _m.Called() if len(ret) == 0 { panic("no return value specified for GetAccountEthAddress") } - var r0 common.Address - if rf, ok := ret.Get(0).(func() common.Address); ok { + var r0 wallet.EthAddress + if rf, ok := ret.Get(0).(func() wallet.EthAddress); ok { r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(common.Address) + r0 = ret.Get(0).(wallet.EthAddress) } } @@ -114,30 +110,30 @@ func (_c *MockWallet_GetAccountEthAddress_Call) Run(run func()) *MockWallet_GetA return _c } -func (_c *MockWallet_GetAccountEthAddress_Call) Return(_a0 common.Address) *MockWallet_GetAccountEthAddress_Call { +func (_c *MockWallet_GetAccountEthAddress_Call) Return(_a0 wallet.EthAddress) *MockWallet_GetAccountEthAddress_Call { _c.Call.Return(_a0) return _c } -func (_c *MockWallet_GetAccountEthAddress_Call) RunAndReturn(run func() common.Address) *MockWallet_GetAccountEthAddress_Call { +func (_c *MockWallet_GetAccountEthAddress_Call) RunAndReturn(run func() wallet.EthAddress) *MockWallet_GetAccountEthAddress_Call { _c.Call.Return(run) return _c } // GetAccountEthPrivkey provides a mock function with given fields: -func (_m *MockWallet) GetAccountEthPrivkey() *ecdsa.PrivateKey { +func (_m *MockWallet) GetAccountEthPrivkey() wallet.EthPrivateKey { ret := _m.Called() if len(ret) == 0 { panic("no return value specified for GetAccountEthPrivkey") } - var r0 *ecdsa.PrivateKey - if rf, ok := ret.Get(0).(func() *ecdsa.PrivateKey); ok { + var r0 wallet.EthPrivateKey + if rf, ok := ret.Get(0).(func() wallet.EthPrivateKey); ok { r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*ecdsa.PrivateKey) + r0 = ret.Get(0).(wallet.EthPrivateKey) } } @@ -161,12 +157,12 @@ func (_c *MockWallet_GetAccountEthPrivkey_Call) Run(run func()) *MockWallet_GetA return _c } -func (_c *MockWallet_GetAccountEthPrivkey_Call) Return(_a0 *ecdsa.PrivateKey) *MockWallet_GetAccountEthPrivkey_Call { +func (_c *MockWallet_GetAccountEthPrivkey_Call) Return(_a0 wallet.EthPrivateKey) *MockWallet_GetAccountEthPrivkey_Call { _c.Call.Return(_a0) return _c } -func (_c *MockWallet_GetAccountEthPrivkey_Call) RunAndReturn(run func() *ecdsa.PrivateKey) *MockWallet_GetAccountEthPrivkey_Call { +func (_c *MockWallet_GetAccountEthPrivkey_Call) RunAndReturn(run func() wallet.EthPrivateKey) *MockWallet_GetAccountEthPrivkey_Call { _c.Call.Return(run) return _c } diff --git a/core/workspace.go b/core/workspace.go index 9d51a051d..20b6c5cae 100644 --- a/core/workspace.go +++ b/core/workspace.go @@ -16,8 +16,8 @@ import ( ) func (mw *Middleware) WorkspaceCreate(cctx context.Context, req *pb.RpcWorkspaceCreateRequest) *pb.RpcWorkspaceCreateResponse { - response := func(workspaceId string, code pb.RpcWorkspaceCreateResponseErrorCode, err error) *pb.RpcWorkspaceCreateResponse { - m := &pb.RpcWorkspaceCreateResponse{SpaceId: workspaceId, Error: &pb.RpcWorkspaceCreateResponseError{Code: code}} + response := func(spaceId string, code pb.RpcWorkspaceCreateResponseErrorCode, err error) *pb.RpcWorkspaceCreateResponse { + m := &pb.RpcWorkspaceCreateResponse{SpaceId: spaceId, Error: &pb.RpcWorkspaceCreateResponseError{Code: code}} if err != nil { m.Error.Description = getErrorDescription(err) } @@ -25,16 +25,26 @@ func (mw *Middleware) WorkspaceCreate(cctx context.Context, req *pb.RpcWorkspace return m } - var workspaceId string + var spaceId string err := mw.doBlockService(func(bs *block.Service) (err error) { - workspaceId, err = bs.CreateWorkspace(cctx, req) + spaceId, err = bs.CreateWorkspace(cctx, req) + if err != nil { + return + } + if req.WithChat { + // todo: as soon as it will be released for all users, we need to make it async inside the space init + err = bs.SpaceInitChat(cctx, spaceId) + if err != nil { + log.With("error", err).Warn("failed to init space level chat") + } + } return }) if err != nil { return response("", pb.RpcWorkspaceCreateResponseError_UNKNOWN_ERROR, err) } - return response(workspaceId, pb.RpcWorkspaceCreateResponseError_NULL, nil) + return response(spaceId, pb.RpcWorkspaceCreateResponseError_NULL, nil) } func (mw *Middleware) WorkspaceOpen(cctx context.Context, req *pb.RpcWorkspaceOpenRequest) *pb.RpcWorkspaceOpenResponse { @@ -54,10 +64,18 @@ func (mw *Middleware) WorkspaceOpen(cctx context.Context, req *pb.RpcWorkspaceOp } err = mw.doBlockService(func(bs *block.Service) error { + if req.WithChat { + // todo: as soon as it will be released for all users, we need to make it async inside the space init + err = bs.SpaceInitChat(cctx, req.SpaceId) + if err != nil { + log.With("error", err).Warn("failed to init space level chat") + } + } return cache.Do[*editor.SpaceView](bs, info.SpaceViewId, func(sv *editor.SpaceView) error { return sv.UpdateLastOpenedDate() }) }) + if err != nil { return response(info, pb.RpcWorkspaceOpenResponseError_UNKNOWN_ERROR, err) } diff --git a/docs/proto.md b/docs/proto.md index 61918e56c..ac8633cc8 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -577,6 +577,14 @@ - [Rpc.Debug.ExportLocalstore.Request](#anytype-Rpc-Debug-ExportLocalstore-Request) - [Rpc.Debug.ExportLocalstore.Response](#anytype-Rpc-Debug-ExportLocalstore-Response) - [Rpc.Debug.ExportLocalstore.Response.Error](#anytype-Rpc-Debug-ExportLocalstore-Response-Error) + - [Rpc.Debug.ExportLog](#anytype-Rpc-Debug-ExportLog) + - [Rpc.Debug.ExportLog.Request](#anytype-Rpc-Debug-ExportLog-Request) + - [Rpc.Debug.ExportLog.Response](#anytype-Rpc-Debug-ExportLog-Response) + - [Rpc.Debug.ExportLog.Response.Error](#anytype-Rpc-Debug-ExportLog-Response-Error) + - [Rpc.Debug.NetCheck](#anytype-Rpc-Debug-NetCheck) + - [Rpc.Debug.NetCheck.Request](#anytype-Rpc-Debug-NetCheck-Request) + - [Rpc.Debug.NetCheck.Response](#anytype-Rpc-Debug-NetCheck-Response) + - [Rpc.Debug.NetCheck.Response.Error](#anytype-Rpc-Debug-NetCheck-Response-Error) - [Rpc.Debug.OpenedObjects](#anytype-Rpc-Debug-OpenedObjects) - [Rpc.Debug.OpenedObjects.Request](#anytype-Rpc-Debug-OpenedObjects-Request) - [Rpc.Debug.OpenedObjects.Response](#anytype-Rpc-Debug-OpenedObjects-Response) @@ -698,6 +706,11 @@ - [Rpc.History.ShowVersion.Response](#anytype-Rpc-History-ShowVersion-Response) - [Rpc.History.ShowVersion.Response.Error](#anytype-Rpc-History-ShowVersion-Response-Error) - [Rpc.History.Version](#anytype-Rpc-History-Version) + - [Rpc.Initial](#anytype-Rpc-Initial) + - [Rpc.Initial.SetParameters](#anytype-Rpc-Initial-SetParameters) + - [Rpc.Initial.SetParameters.Request](#anytype-Rpc-Initial-SetParameters-Request) + - [Rpc.Initial.SetParameters.Response](#anytype-Rpc-Initial-SetParameters-Response) + - [Rpc.Initial.SetParameters.Response.Error](#anytype-Rpc-Initial-SetParameters-Response-Error) - [Rpc.LinkPreview](#anytype-Rpc-LinkPreview) - [Rpc.LinkPreview.Request](#anytype-Rpc-LinkPreview-Request) - [Rpc.LinkPreview.Response](#anytype-Rpc-LinkPreview-Response) @@ -748,11 +761,6 @@ - [Rpc.Membership.VerifyEmailCode.Request](#anytype-Rpc-Membership-VerifyEmailCode-Request) - [Rpc.Membership.VerifyEmailCode.Response](#anytype-Rpc-Membership-VerifyEmailCode-Response) - [Rpc.Membership.VerifyEmailCode.Response.Error](#anytype-Rpc-Membership-VerifyEmailCode-Response-Error) - - [Rpc.Metrics](#anytype-Rpc-Metrics) - - [Rpc.Metrics.SetParameters](#anytype-Rpc-Metrics-SetParameters) - - [Rpc.Metrics.SetParameters.Request](#anytype-Rpc-Metrics-SetParameters-Request) - - [Rpc.Metrics.SetParameters.Response](#anytype-Rpc-Metrics-SetParameters-Response) - - [Rpc.Metrics.SetParameters.Response.Error](#anytype-Rpc-Metrics-SetParameters-Response-Error) - [Rpc.NameService](#anytype-Rpc-NameService) - [Rpc.NameService.ResolveAnyId](#anytype-Rpc-NameService-ResolveAnyId) - [Rpc.NameService.ResolveAnyId.Request](#anytype-Rpc-NameService-ResolveAnyId-Request) @@ -1350,6 +1358,8 @@ - [Rpc.Debug.AnystoreObjectChanges.Request.OrderBy](#anytype-Rpc-Debug-AnystoreObjectChanges-Request-OrderBy) - [Rpc.Debug.AnystoreObjectChanges.Response.Error.Code](#anytype-Rpc-Debug-AnystoreObjectChanges-Response-Error-Code) - [Rpc.Debug.ExportLocalstore.Response.Error.Code](#anytype-Rpc-Debug-ExportLocalstore-Response-Error-Code) + - [Rpc.Debug.ExportLog.Response.Error.Code](#anytype-Rpc-Debug-ExportLog-Response-Error-Code) + - [Rpc.Debug.NetCheck.Response.Error.Code](#anytype-Rpc-Debug-NetCheck-Response-Error-Code) - [Rpc.Debug.OpenedObjects.Response.Error.Code](#anytype-Rpc-Debug-OpenedObjects-Response-Error-Code) - [Rpc.Debug.Ping.Response.Error.Code](#anytype-Rpc-Debug-Ping-Response-Error-Code) - [Rpc.Debug.RunProfiler.Response.Error.Code](#anytype-Rpc-Debug-RunProfiler-Response-Error-Code) @@ -1378,6 +1388,7 @@ - [Rpc.History.GetVersions.Response.Error.Code](#anytype-Rpc-History-GetVersions-Response-Error-Code) - [Rpc.History.SetVersion.Response.Error.Code](#anytype-Rpc-History-SetVersion-Response-Error-Code) - [Rpc.History.ShowVersion.Response.Error.Code](#anytype-Rpc-History-ShowVersion-Response-Error-Code) + - [Rpc.Initial.SetParameters.Response.Error.Code](#anytype-Rpc-Initial-SetParameters-Response-Error-Code) - [Rpc.LinkPreview.Response.Error.Code](#anytype-Rpc-LinkPreview-Response-Error-Code) - [Rpc.Log.Send.Request.Level](#anytype-Rpc-Log-Send-Request-Level) - [Rpc.Log.Send.Response.Error.Code](#anytype-Rpc-Log-Send-Response-Error-Code) @@ -1391,7 +1402,6 @@ - [Rpc.Membership.RegisterPaymentRequest.Response.Error.Code](#anytype-Rpc-Membership-RegisterPaymentRequest-Response-Error-Code) - [Rpc.Membership.VerifyAppStoreReceipt.Response.Error.Code](#anytype-Rpc-Membership-VerifyAppStoreReceipt-Response-Error-Code) - [Rpc.Membership.VerifyEmailCode.Response.Error.Code](#anytype-Rpc-Membership-VerifyEmailCode-Response-Error-Code) - - [Rpc.Metrics.SetParameters.Response.Error.Code](#anytype-Rpc-Metrics-SetParameters-Response-Error-Code) - [Rpc.NameService.ResolveAnyId.Response.Error.Code](#anytype-Rpc-NameService-ResolveAnyId-Response-Error-Code) - [Rpc.NameService.ResolveName.Response.Error.Code](#anytype-Rpc-NameService-ResolveName-Response-Error-Code) - [Rpc.NameService.ResolveSpaceId.Response.Error.Code](#anytype-Rpc-NameService-ResolveSpaceId-Response-Error-Code) @@ -2153,7 +2163,9 @@ | DebugRunProfiler | [Rpc.Debug.RunProfiler.Request](#anytype-Rpc-Debug-RunProfiler-Request) | [Rpc.Debug.RunProfiler.Response](#anytype-Rpc-Debug-RunProfiler-Response) | | | DebugAccountSelectTrace | [Rpc.Debug.AccountSelectTrace.Request](#anytype-Rpc-Debug-AccountSelectTrace-Request) | [Rpc.Debug.AccountSelectTrace.Response](#anytype-Rpc-Debug-AccountSelectTrace-Response) | | | DebugAnystoreObjectChanges | [Rpc.Debug.AnystoreObjectChanges.Request](#anytype-Rpc-Debug-AnystoreObjectChanges-Request) | [Rpc.Debug.AnystoreObjectChanges.Response](#anytype-Rpc-Debug-AnystoreObjectChanges-Response) | | -| MetricsSetParameters | [Rpc.Metrics.SetParameters.Request](#anytype-Rpc-Metrics-SetParameters-Request) | [Rpc.Metrics.SetParameters.Response](#anytype-Rpc-Metrics-SetParameters-Response) | | +| DebugNetCheck | [Rpc.Debug.NetCheck.Request](#anytype-Rpc-Debug-NetCheck-Request) | [Rpc.Debug.NetCheck.Response](#anytype-Rpc-Debug-NetCheck-Response) | | +| DebugExportLog | [Rpc.Debug.ExportLog.Request](#anytype-Rpc-Debug-ExportLog-Request) | [Rpc.Debug.ExportLog.Response](#anytype-Rpc-Debug-ExportLog-Response) | | +| InitialSetParameters | [Rpc.Initial.SetParameters.Request](#anytype-Rpc-Initial-SetParameters-Request) | [Rpc.Initial.SetParameters.Response](#anytype-Rpc-Initial-SetParameters-Response) | | | ListenSessionEvents | [StreamRequest](#anytype-StreamRequest) | [Event](#anytype-Event) stream | used only for lib-server via grpc | | NotificationList | [Rpc.Notification.List.Request](#anytype-Rpc-Notification-List-Request) | [Rpc.Notification.List.Response](#anytype-Rpc-Notification-List-Response) | | | NotificationReply | [Rpc.Notification.Reply.Request](#anytype-Rpc-Notification-Reply-Request) | [Rpc.Notification.Reply.Response](#anytype-Rpc-Notification-Reply-Response) | | @@ -10545,6 +10557,120 @@ Get marks list in the selected range in text block. + + +### Rpc.Debug.ExportLog + + + + + + + + + +### Rpc.Debug.ExportLog.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| dir | [string](#string) | | empty means using OS-provided temp dir | + + + + + + + + +### Rpc.Debug.ExportLog.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Debug.ExportLog.Response.Error](#anytype-Rpc-Debug-ExportLog-Response-Error) | | | +| path | [string](#string) | | | + + + + + + + + +### Rpc.Debug.ExportLog.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Debug.ExportLog.Response.Error.Code](#anytype-Rpc-Debug-ExportLog-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + + + +### Rpc.Debug.NetCheck + + + + + + + + + +### Rpc.Debug.NetCheck.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| clientYml | [string](#string) | | | + + + + + + + + +### Rpc.Debug.NetCheck.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Debug.NetCheck.Response.Error](#anytype-Rpc-Debug-NetCheck-Response-Error) | | | +| result | [string](#string) | | | + + + + + + + + +### Rpc.Debug.NetCheck.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Debug.NetCheck.Response.Error.Code](#anytype-Rpc-Debug-NetCheck-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.Debug.OpenedObjects @@ -12273,6 +12399,78 @@ returns blockShow event for given version + + +### Rpc.Initial + + + + + + + + + +### Rpc.Initial.SetParameters + + + + + + + + + +### Rpc.Initial.SetParameters.Request + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| platform | [string](#string) | | | +| version | [string](#string) | | | +| workdir | [string](#string) | | | +| logLevel | [string](#string) | | | +| doNotSendLogs | [bool](#bool) | | | +| doNotSaveLogs | [bool](#bool) | | | +| doNotSendTelemetry | [bool](#bool) | | | + + + + + + + + +### Rpc.Initial.SetParameters.Response + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| error | [Rpc.Initial.SetParameters.Response.Error](#anytype-Rpc-Initial-SetParameters-Response-Error) | | | + + + + + + + + +### Rpc.Initial.SetParameters.Response.Error + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| code | [Rpc.Initial.SetParameters.Response.Error.Code](#anytype-Rpc-Initial-SetParameters-Response-Error-Code) | | | +| description | [string](#string) | | | + + + + + + ### Rpc.LinkPreview @@ -12987,73 +13185,6 @@ need a correct code that was sent to the user when calling GetVerificationEmail - - -### Rpc.Metrics - - - - - - - - - -### Rpc.Metrics.SetParameters - - - - - - - - - -### Rpc.Metrics.SetParameters.Request - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| platform | [string](#string) | | | -| version | [string](#string) | | | - - - - - - - - -### Rpc.Metrics.SetParameters.Response - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| error | [Rpc.Metrics.SetParameters.Response.Error](#anytype-Rpc-Metrics-SetParameters-Response-Error) | | | - - - - - - - - -### Rpc.Metrics.SetParameters.Response.Error - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| code | [Rpc.Metrics.SetParameters.Response.Error.Code](#anytype-Rpc-Metrics-SetParameters-Response-Error-Code) | | | -| description | [string](#string) | | | - - - - - - ### Rpc.NameService @@ -19282,6 +19413,7 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er | ----- | ---- | ----- | ----------- | | details | [google.protobuf.Struct](#google-protobuf-Struct) | | object details | | useCase | [Rpc.Object.ImportUseCase.Request.UseCase](#anytype-Rpc-Object-ImportUseCase-Request-UseCase) | | use case | +| withChat | [bool](#bool) | | create space-level chat; temporary solution, should be removed after chats released for all users | @@ -19686,6 +19818,7 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | spaceId | [string](#string) | | | +| withChat | [bool](#bool) | | create space-level chat if not exists; temporary solution, should be removed after chats released for all users | @@ -21594,6 +21727,33 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Debug.ExportLog.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | | +| NO_FOLDER | 3 | | + + + + + +### Rpc.Debug.NetCheck.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | | + + + ### Rpc.Debug.OpenedObjects.Response.Error.Code @@ -21964,6 +22124,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er + + +### Rpc.Initial.SetParameters.Response.Error.Code + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| NULL | 0 | | +| UNKNOWN_ERROR | 1 | | +| BAD_INPUT | 2 | ... | + + + ### Rpc.LinkPreview.Response.Error.Code @@ -22205,19 +22378,6 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er - - -### Rpc.Metrics.SetParameters.Response.Error.Code - - -| Name | Number | Description | -| ---- | ------ | ----------- | -| NULL | 0 | | -| UNKNOWN_ERROR | 1 | | -| BAD_INPUT | 2 | ... | - - - ### Rpc.NameService.ResolveAnyId.Response.Error.Code @@ -27475,6 +27635,7 @@ Contains basic information about a user account | archiveObjectId | [string](#string) | | archive block id | | profileObjectId | [string](#string) | | profile block id | | marketplaceWorkspaceId | [string](#string) | | marketplace workspace id | +| workspaceObjectId | [string](#string) | | workspace object id. used for space-level chat | | deviceId | [string](#string) | | | | accountSpaceId | [string](#string) | | | | widgetsId | [string](#string) | | | @@ -29877,7 +30038,7 @@ Look https://github.com/golang/protobuf/issues/1135 for more information. | spaceView | 18 | | | participant | 19 | | | pdf | 20 | | -| chat | 21 | | +| chat | 21 | deprecated | | chatDerived | 22 | | | tag | 23 | | diff --git a/go.mod b/go.mod index dc0d69c62..56c26d116 100644 --- a/go.mod +++ b/go.mod @@ -8,11 +8,12 @@ require ( github.com/VividCortex/ewma v1.2.0 github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786 github.com/anyproto/any-store v0.1.1 - github.com/anyproto/any-sync v0.5.5 + github.com/anyproto/any-sync v0.5.11 + github.com/anyproto/go-chash v0.1.0 github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438 github.com/anyproto/lexid v0.0.2 github.com/anyproto/protobuf v1.3.3-0.20240814124528-72b8c7e0e0f5 - github.com/anyproto/tantivy-go v0.1.4 + github.com/anyproto/tantivy-go v0.1.6-jieba github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de github.com/avast/retry-go/v4 v4.6.0 github.com/blevesearch/bleve/v2 v2.3.10 @@ -31,7 +32,7 @@ require ( github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 github.com/go-chi/chi/v5 v5.0.13 github.com/go-shiori/go-readability v0.0.0-20220215145315-dd6828d2f09b - github.com/goccy/go-graphviz v0.1.3 + github.com/goccy/go-graphviz v0.2.9 github.com/gogo/protobuf v1.3.2 github.com/gogo/status v1.1.1 github.com/golang-jwt/jwt v3.2.2+incompatible @@ -45,6 +46,7 @@ require ( github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 github.com/h2non/filetype v1.1.3 github.com/hashicorp/go-multierror v1.1.1 + github.com/hashicorp/yamux v0.1.1 github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119 github.com/huandu/skiplist v1.2.1 github.com/improbable-eng/grpc-web v0.15.0 @@ -64,6 +66,7 @@ require ( github.com/libp2p/zeroconf/v2 v2.2.0 github.com/logrusorgru/aurora v2.0.3+incompatible github.com/magiconair/properties v1.8.7 + github.com/matishsiao/goInfo v0.0.0-20240924010139-10388a85396f github.com/mattn/go-sqlite3 v1.14.22 github.com/mb0/diff v0.0.0-20131118162322-d8d9a906c24d github.com/microcosm-cc/bluemonday v1.0.25 @@ -78,7 +81,7 @@ require ( github.com/otiai10/copy v1.14.0 github.com/otiai10/opengraph/v2 v2.1.0 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.20.4 + github.com/prometheus/client_golang v1.20.5 github.com/pseudomuto/protoc-gen-doc v1.5.1 github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd github.com/samber/lo v1.47.0 @@ -89,7 +92,7 @@ require ( github.com/stretchr/testify v1.9.0 github.com/uber/jaeger-client-go v2.30.0+incompatible github.com/valyala/fastjson v1.6.4 - github.com/vektra/mockery/v2 v2.42.2 + github.com/vektra/mockery/v2 v2.46.3 github.com/xeipuuv/gojsonschema v1.2.0 github.com/yuin/goldmark v1.7.4 github.com/zeebo/blake3 v0.2.4 @@ -99,12 +102,13 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c golang.org/x/image v0.21.0 - golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab + golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c golang.org/x/net v0.30.0 golang.org/x/oauth2 v0.23.0 golang.org/x/text v0.19.0 google.golang.org/grpc v1.67.1 gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f + gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 storj.io/drpc v0.0.34 zombiezen.com/go/sqlite v1.4.0 @@ -121,7 +125,6 @@ require ( github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 // indirect github.com/andybalholm/cascadia v1.3.2 // indirect - github.com/anyproto/go-chash v0.1.0 // indirect github.com/anyproto/go-slip10 v1.0.0 // indirect github.com/anyproto/go-slip21 v1.0.0 // indirect github.com/aymerick/douceur v0.2.0 // indirect @@ -161,6 +164,7 @@ require ( github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect + github.com/flopp/go-findfont v0.1.0 // indirect github.com/fogleman/gg v1.3.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-errors/errors v1.4.2 // indirect @@ -186,7 +190,6 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/yamux v0.1.1 // indirect github.com/holiman/uint256 v1.2.4 // indirect github.com/huandu/xstrings v1.4.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect @@ -252,6 +255,7 @@ require ( github.com/spf13/viper v1.15.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.4.2 // indirect + github.com/tetratelabs/wazero v1.8.1 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect @@ -270,7 +274,7 @@ require ( golang.org/x/sync v0.8.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/term v0.25.0 // indirect - golang.org/x/time v0.6.0 // indirect + golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect diff --git a/go.sum b/go.sum index 5f047ac80..e9de9b548 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,8 @@ github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsVi github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anyproto/any-store v0.1.1 h1:dZJt/ELKHzP0P6G3mT/Ch6CnX0pSHTAGpZYuBPCw2hA= github.com/anyproto/any-store v0.1.1/go.mod h1:SDlN2AzysAfs8CDd28rrs6boUUtf5H/ydCvwmj+EbsE= -github.com/anyproto/any-sync v0.5.5 h1:StWApo7eE9dzWw/PtGkEayEsrO7dbFid0dDRsq3DVio= -github.com/anyproto/any-sync v0.5.5/go.mod h1:jXPhT2kjMVIPKEJZ/mW3NTP5j4Xsg4J5cp/ILGc/60A= +github.com/anyproto/any-sync v0.5.11 h1:dOGrNoC39/H+NHmz9/etkzxASTAXqJYdiKrKCzlzTTA= +github.com/anyproto/any-sync v0.5.11/go.mod h1:n9X9Hjq22aUHRPGrEbS1782SkEQXjKoFfExlZOFlqWA= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc= github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY= @@ -113,8 +113,8 @@ github.com/anyproto/protobuf v1.3.3-0.20240814124528-72b8c7e0e0f5 h1:aY7tBzQ+z8H github.com/anyproto/protobuf v1.3.3-0.20240814124528-72b8c7e0e0f5/go.mod h1:5+PHE01DgsDPkralb8MYmGg2sPQahsqEJ9ue7ciDHKg= github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c h1:GicoaTUyB2mtCIl3YMrO0OzysqRT5GA4vuvDsqEkhSM= github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= -github.com/anyproto/tantivy-go v0.1.4 h1:Md3RZzkCB5Aw0FlvjvAQ3SQsUKZyQsUP3f33J8un7gA= -github.com/anyproto/tantivy-go v0.1.4/go.mod h1:Pl0zaeEX7dkVDTDKROzlLlGCVjbZHjyPrZloFuVEASc= +github.com/anyproto/tantivy-go v0.1.6-jieba h1:Adc1OA3pBzTktnDmO7KnEbzA0VkhIC4zqZB6EiDwOgg= +github.com/anyproto/tantivy-go v0.1.6-jieba/go.mod h1:MMLYW7e5SIzsHS3Q5CYiF1J7kJJaIRT+VVHGArU24IQ= github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d h1:5bj7nX/AS8sxGpTIrapE7PC4oPlhkHMwMqXlJbUHBlg= github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= @@ -234,8 +234,8 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/corona10/goimagehash v1.0.2 h1:pUfB0LnsJASMPGEZLj7tGY251vF+qLGqOgEP4rUs6kA= -github.com/corona10/goimagehash v1.0.2/go.mod h1:/l9umBhvcHQXVtQO1V6Gp1yD20STawkhRnnX0D1bvVI= +github.com/corona10/goimagehash v1.1.0 h1:teNMX/1e+Wn/AYSbLHX8mj+mF9r60R1kBeqE9MkoYwI= +github.com/corona10/goimagehash v1.1.0/go.mod h1:VkvE0mLn84L4aF8vCb6mafVajEb6QYMHl2ZJLn0mOGI= 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= @@ -320,6 +320,8 @@ github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9 github.com/ethereum/go-ethereum v1.13.15 h1:U7sSGYGo4SPjP6iNIifNoyIAiNjrmQkz6EwQG+/EZWo= github.com/ethereum/go-ethereum v1.13.15/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/flopp/go-findfont v0.1.0 h1:lPn0BymDUtJo+ZkV01VS3661HL6F4qFlkhcJN55u6mU= +github.com/flopp/go-findfont v0.1.0/go.mod h1:wKKxRDjD024Rh7VMwoU90i6ikQRCr+JTHB5n4Ejkqvw= github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ= github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= @@ -395,8 +397,8 @@ github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-graphviz v0.1.3 h1:Pkt8y4FBnBNI9tfSobpoN5qy1qMNqRXPQYvLhaSUasY= -github.com/goccy/go-graphviz v0.1.3/go.mod h1:pMYpbAqJT10V8dzV1JN/g/wUlG/0imKPzn3ZsrchGCI= +github.com/goccy/go-graphviz v0.2.9 h1:4yD2MIMpxNt+sOEARDh5jTE2S/jeAKi92w72B83mWGg= +github.com/goccy/go-graphviz v0.2.9/go.mod h1:hssjl/qbvUXGmloY81BwXt2nqoApKo7DFgDj5dLJGb8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -971,6 +973,8 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP 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-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matishsiao/goInfo v0.0.0-20240924010139-10388a85396f h1:XDrsC/9hdgiU9ecceSmYsS2E3fBtFiYc34dAMFgegnM= +github.com/matishsiao/goInfo v0.0.0-20240924010139-10388a85396f/go.mod h1:aEt7p9Rvh67BYApmZwNDPpgircTO2kgdmDUoF/1QmwA= github.com/mattn/go-colorable v0.0.9/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= @@ -1109,8 +1113,8 @@ github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= -github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5 h1:BvoENQQU+fZ9uukda/RzCAL/191HHwJA5b13R6diVlY= -github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= +github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= +github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= 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/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= @@ -1220,8 +1224,8 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= -github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= 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= @@ -1374,6 +1378,8 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 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/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/tetratelabs/wazero v1.8.1 h1:NrcgVbWfkWvVc4UtT4LRLDf91PsOzDzefMdwhLfA550= +github.com/tetratelabs/wazero v1.8.1/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs= github.com/tj/assert v0.0.0-20190920132354-ee03d75cd160 h1:NSWpaDaurcAJY7PkL8Xt0PhZE7qpvbZl5ljd8r6U0bI= github.com/tj/assert v0.0.0-20190920132354-ee03d75cd160/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= @@ -1399,8 +1405,8 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= -github.com/vektra/mockery/v2 v2.42.2 h1:SSIvwnXBl9EynibBZhQ/hBXuV5TYPdZFIqkm4UkQHU4= -github.com/vektra/mockery/v2 v2.42.2/go.mod h1:XNTE9RIu3deGAGQRVjP1VZxGpQNm0YedZx4oDs3prr8= +github.com/vektra/mockery/v2 v2.46.3 h1:Aia4iShZeNTy6CZJcvweK4X97XOzXcqb+k9jm8IqBS0= +github.com/vektra/mockery/v2 v2.46.3/go.mod h1:dDivqi0ShM8A29mLgZn13yZ14MdXlTM4V360u8JDWCQ= github.com/warpfork/go-testmark v0.12.1 h1:rMgCpJfwy1sJ50x0M0NgyphxYYPMOODIJHhsXyEHU0s= github.com/warpfork/go-testmark v0.12.1/go.mod h1:kHwy7wfvGSPh1rQJYKayD4AbtNaeyZdcGi9tNJTaa5Y= github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= @@ -1561,8 +1567,8 @@ golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/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/mobile v0.0.0-20240806205939-81131f6468ab h1:KONOFF8Uy3b60HEzOsGnNghORNhY4ImyOx0PGm73K9k= -golang.org/x/mobile v0.0.0-20240806205939-81131f6468ab/go.mod h1:udWezQGYjqrCxz5nV321pXQTx5oGbZx+khZvFjZNOPM= +golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c h1:zuNS/LWsEpPTLfrmBkis6Xofw3nieAqB4hYLn8+uswk= +golang.org/x/mobile v0.0.0-20241016134751-7ff83004ec2c/go.mod h1:snk1Mn2ZpdKCt90JPEsDh4sL3ReK520U2t0d7RHBnSU= 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= @@ -1788,8 +1794,8 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb 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.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 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= @@ -1988,6 +1994,8 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= 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/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= 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= diff --git a/metrics/service.go b/metrics/service.go index a04d1736f..f931751a2 100644 --- a/metrics/service.go +++ b/metrics/service.go @@ -47,6 +47,7 @@ type MetricsService interface { SetUserId(id string) Send(ev anymetry.Event) SendSampled(ev SamplableEvent) + SetEnabled(isEnabled bool) Run() Close() @@ -64,15 +65,23 @@ type service struct { workingDir string clients [1]*client alreadyRunning bool + isEnabled bool } func (s *service) SendSampled(ev SamplableEvent) { + if !s.isEnabled { + return + } if ev == nil { return } s.getBackend(ev.GetBackend()).sendSampled(ev) } +func (s *service) SetEnabled(isEnabled bool) { + s.isEnabled = isEnabled +} + func NewService() MetricsService { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) @@ -173,6 +182,9 @@ func (s *service) GetStartVersion() string { func (s *service) Run() { s.lock.Lock() defer s.lock.Unlock() + if !s.isEnabled { + return + } if s.alreadyRunning { return } @@ -189,6 +201,9 @@ func (s *service) Run() { func (s *service) Close() { s.lock.Lock() defer s.lock.Unlock() + if !s.isEnabled { + return + } for _, c := range s.clients { c.Close() } @@ -196,6 +211,9 @@ func (s *service) Close() { } func (s *service) Send(ev anymetry.Event) { + if !s.isEnabled { + return + } if ev == nil { return } diff --git a/pb/commands.pb.go b/pb/commands.pb.go index c3f695faf..206ce8a1a 100644 --- a/pb/commands.pb.go +++ b/pb/commands.pb.go @@ -7559,6 +7559,37 @@ func (RpcDebugAccountSelectTraceResponseErrorCode) EnumDescriptor() ([]byte, []i return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 10, 1, 0, 0} } +type RpcDebugExportLogResponseErrorCode int32 + +const ( + RpcDebugExportLogResponseError_NULL RpcDebugExportLogResponseErrorCode = 0 + RpcDebugExportLogResponseError_UNKNOWN_ERROR RpcDebugExportLogResponseErrorCode = 1 + RpcDebugExportLogResponseError_BAD_INPUT RpcDebugExportLogResponseErrorCode = 2 + RpcDebugExportLogResponseError_NO_FOLDER RpcDebugExportLogResponseErrorCode = 3 +) + +var RpcDebugExportLogResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", + 3: "NO_FOLDER", +} + +var RpcDebugExportLogResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, + "NO_FOLDER": 3, +} + +func (x RpcDebugExportLogResponseErrorCode) String() string { + return proto.EnumName(RpcDebugExportLogResponseErrorCode_name, int32(x)) +} + +func (RpcDebugExportLogResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11, 1, 0, 0} +} + type RpcDebugPingResponseErrorCode int32 const ( @@ -7584,7 +7615,7 @@ func (x RpcDebugPingResponseErrorCode) String() string { } func (RpcDebugPingResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11, 1, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 1, 0, 0} } type RpcDebugAnystoreObjectChangesRequestOrderBy int32 @@ -7609,7 +7640,7 @@ func (x RpcDebugAnystoreObjectChangesRequestOrderBy) String() string { } func (RpcDebugAnystoreObjectChangesRequestOrderBy) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 0, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 13, 0, 0} } type RpcDebugAnystoreObjectChangesResponseErrorCode int32 @@ -7637,34 +7668,62 @@ func (x RpcDebugAnystoreObjectChangesResponseErrorCode) String() string { } func (RpcDebugAnystoreObjectChangesResponseErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 1, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 13, 1, 1, 0} } -type RpcMetricsSetParametersResponseErrorCode int32 +type RpcDebugNetCheckResponseErrorCode int32 const ( - RpcMetricsSetParametersResponseError_NULL RpcMetricsSetParametersResponseErrorCode = 0 - RpcMetricsSetParametersResponseError_UNKNOWN_ERROR RpcMetricsSetParametersResponseErrorCode = 1 - RpcMetricsSetParametersResponseError_BAD_INPUT RpcMetricsSetParametersResponseErrorCode = 2 + RpcDebugNetCheckResponseError_NULL RpcDebugNetCheckResponseErrorCode = 0 + RpcDebugNetCheckResponseError_UNKNOWN_ERROR RpcDebugNetCheckResponseErrorCode = 1 + RpcDebugNetCheckResponseError_BAD_INPUT RpcDebugNetCheckResponseErrorCode = 2 ) -var RpcMetricsSetParametersResponseErrorCode_name = map[int32]string{ +var RpcDebugNetCheckResponseErrorCode_name = map[int32]string{ 0: "NULL", 1: "UNKNOWN_ERROR", 2: "BAD_INPUT", } -var RpcMetricsSetParametersResponseErrorCode_value = map[string]int32{ +var RpcDebugNetCheckResponseErrorCode_value = map[string]int32{ "NULL": 0, "UNKNOWN_ERROR": 1, "BAD_INPUT": 2, } -func (x RpcMetricsSetParametersResponseErrorCode) String() string { - return proto.EnumName(RpcMetricsSetParametersResponseErrorCode_name, int32(x)) +func (x RpcDebugNetCheckResponseErrorCode) String() string { + return proto.EnumName(RpcDebugNetCheckResponseErrorCode_name, int32(x)) } -func (RpcMetricsSetParametersResponseErrorCode) EnumDescriptor() ([]byte, []int) { +func (RpcDebugNetCheckResponseErrorCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 14, 1, 0, 0} +} + +type RpcInitialSetParametersResponseErrorCode int32 + +const ( + RpcInitialSetParametersResponseError_NULL RpcInitialSetParametersResponseErrorCode = 0 + RpcInitialSetParametersResponseError_UNKNOWN_ERROR RpcInitialSetParametersResponseErrorCode = 1 + RpcInitialSetParametersResponseError_BAD_INPUT RpcInitialSetParametersResponseErrorCode = 2 +) + +var RpcInitialSetParametersResponseErrorCode_name = map[int32]string{ + 0: "NULL", + 1: "UNKNOWN_ERROR", + 2: "BAD_INPUT", +} + +var RpcInitialSetParametersResponseErrorCode_value = map[string]int32{ + "NULL": 0, + "UNKNOWN_ERROR": 1, + "BAD_INPUT": 2, +} + +func (x RpcInitialSetParametersResponseErrorCode) String() string { + return proto.EnumName(RpcInitialSetParametersResponseErrorCode_name, int32(x)) +} + +func (RpcInitialSetParametersResponseErrorCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0, 1, 0, 0} } @@ -16399,8 +16458,9 @@ func (m *RpcWorkspaceCreate) XXX_DiscardUnknown() { var xxx_messageInfo_RpcWorkspaceCreate proto.InternalMessageInfo type RpcWorkspaceCreateRequest struct { - Details *types.Struct `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` - UseCase RpcObjectImportUseCaseRequestUseCase `protobuf:"varint,2,opt,name=useCase,proto3,enum=anytype.RpcObjectImportUseCaseRequestUseCase" json:"useCase,omitempty"` + Details *types.Struct `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + UseCase RpcObjectImportUseCaseRequestUseCase `protobuf:"varint,2,opt,name=useCase,proto3,enum=anytype.RpcObjectImportUseCaseRequestUseCase" json:"useCase,omitempty"` + WithChat bool `protobuf:"varint,3,opt,name=withChat,proto3" json:"withChat,omitempty"` } func (m *RpcWorkspaceCreateRequest) Reset() { *m = RpcWorkspaceCreateRequest{} } @@ -16450,6 +16510,13 @@ func (m *RpcWorkspaceCreateRequest) GetUseCase() RpcObjectImportUseCaseRequestUs return RpcObjectImportUseCaseRequest_NONE } +func (m *RpcWorkspaceCreateRequest) GetWithChat() bool { + if m != nil { + return m.WithChat + } + return false +} + type RpcWorkspaceCreateResponse struct { Error *RpcWorkspaceCreateResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` SpaceId string `protobuf:"bytes,2,opt,name=spaceId,proto3" json:"spaceId,omitempty"` @@ -16591,7 +16658,8 @@ func (m *RpcWorkspaceOpen) XXX_DiscardUnknown() { var xxx_messageInfo_RpcWorkspaceOpen proto.InternalMessageInfo type RpcWorkspaceOpenRequest struct { - SpaceId string `protobuf:"bytes,1,opt,name=spaceId,proto3" json:"spaceId,omitempty"` + SpaceId string `protobuf:"bytes,1,opt,name=spaceId,proto3" json:"spaceId,omitempty"` + WithChat bool `protobuf:"varint,2,opt,name=withChat,proto3" json:"withChat,omitempty"` } func (m *RpcWorkspaceOpenRequest) Reset() { *m = RpcWorkspaceOpenRequest{} } @@ -16634,6 +16702,13 @@ func (m *RpcWorkspaceOpenRequest) GetSpaceId() string { return "" } +func (m *RpcWorkspaceOpenRequest) GetWithChat() bool { + if m != nil { + return m.WithChat + } + return false +} + type RpcWorkspaceOpenResponse struct { Error *RpcWorkspaceOpenResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` Info *model.AccountInfo `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"` @@ -60437,6 +60512,190 @@ func (m *RpcDebugAccountSelectTraceResponseError) GetDescription() string { return "" } +type RpcDebugExportLog struct { +} + +func (m *RpcDebugExportLog) Reset() { *m = RpcDebugExportLog{} } +func (m *RpcDebugExportLog) String() string { return proto.CompactTextString(m) } +func (*RpcDebugExportLog) ProtoMessage() {} +func (*RpcDebugExportLog) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11} +} +func (m *RpcDebugExportLog) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcDebugExportLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcDebugExportLog.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcDebugExportLog) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcDebugExportLog.Merge(m, src) +} +func (m *RpcDebugExportLog) XXX_Size() int { + return m.Size() +} +func (m *RpcDebugExportLog) XXX_DiscardUnknown() { + xxx_messageInfo_RpcDebugExportLog.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcDebugExportLog proto.InternalMessageInfo + +type RpcDebugExportLogRequest struct { + Dir string `protobuf:"bytes,1,opt,name=dir,proto3" json:"dir,omitempty"` +} + +func (m *RpcDebugExportLogRequest) Reset() { *m = RpcDebugExportLogRequest{} } +func (m *RpcDebugExportLogRequest) String() string { return proto.CompactTextString(m) } +func (*RpcDebugExportLogRequest) ProtoMessage() {} +func (*RpcDebugExportLogRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11, 0} +} +func (m *RpcDebugExportLogRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcDebugExportLogRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcDebugExportLogRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcDebugExportLogRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcDebugExportLogRequest.Merge(m, src) +} +func (m *RpcDebugExportLogRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcDebugExportLogRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcDebugExportLogRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcDebugExportLogRequest proto.InternalMessageInfo + +func (m *RpcDebugExportLogRequest) GetDir() string { + if m != nil { + return m.Dir + } + return "" +} + +type RpcDebugExportLogResponse struct { + Error *RpcDebugExportLogResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` +} + +func (m *RpcDebugExportLogResponse) Reset() { *m = RpcDebugExportLogResponse{} } +func (m *RpcDebugExportLogResponse) String() string { return proto.CompactTextString(m) } +func (*RpcDebugExportLogResponse) ProtoMessage() {} +func (*RpcDebugExportLogResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11, 1} +} +func (m *RpcDebugExportLogResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcDebugExportLogResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcDebugExportLogResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcDebugExportLogResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcDebugExportLogResponse.Merge(m, src) +} +func (m *RpcDebugExportLogResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcDebugExportLogResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcDebugExportLogResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcDebugExportLogResponse proto.InternalMessageInfo + +func (m *RpcDebugExportLogResponse) GetError() *RpcDebugExportLogResponseError { + if m != nil { + return m.Error + } + return nil +} + +func (m *RpcDebugExportLogResponse) GetPath() string { + if m != nil { + return m.Path + } + return "" +} + +type RpcDebugExportLogResponseError struct { + Code RpcDebugExportLogResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcDebugExportLogResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcDebugExportLogResponseError) Reset() { *m = RpcDebugExportLogResponseError{} } +func (m *RpcDebugExportLogResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcDebugExportLogResponseError) ProtoMessage() {} +func (*RpcDebugExportLogResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11, 1, 0} +} +func (m *RpcDebugExportLogResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcDebugExportLogResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcDebugExportLogResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcDebugExportLogResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcDebugExportLogResponseError.Merge(m, src) +} +func (m *RpcDebugExportLogResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcDebugExportLogResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcDebugExportLogResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcDebugExportLogResponseError proto.InternalMessageInfo + +func (m *RpcDebugExportLogResponseError) GetCode() RpcDebugExportLogResponseErrorCode { + if m != nil { + return m.Code + } + return RpcDebugExportLogResponseError_NULL +} + +func (m *RpcDebugExportLogResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + type RpcDebugPing struct { } @@ -60444,7 +60703,7 @@ func (m *RpcDebugPing) Reset() { *m = RpcDebugPing{} } func (m *RpcDebugPing) String() string { return proto.CompactTextString(m) } func (*RpcDebugPing) ProtoMessage() {} func (*RpcDebugPing) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12} } func (m *RpcDebugPing) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60482,7 +60741,7 @@ func (m *RpcDebugPingRequest) Reset() { *m = RpcDebugPingRequest{} } func (m *RpcDebugPingRequest) String() string { return proto.CompactTextString(m) } func (*RpcDebugPingRequest) ProtoMessage() {} func (*RpcDebugPingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 0} } func (m *RpcDebugPingRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60534,7 +60793,7 @@ func (m *RpcDebugPingResponse) Reset() { *m = RpcDebugPingResponse{} } func (m *RpcDebugPingResponse) String() string { return proto.CompactTextString(m) } func (*RpcDebugPingResponse) ProtoMessage() {} func (*RpcDebugPingResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 1} } func (m *RpcDebugPingResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60586,7 +60845,7 @@ func (m *RpcDebugPingResponseError) Reset() { *m = RpcDebugPingResponseE func (m *RpcDebugPingResponseError) String() string { return proto.CompactTextString(m) } func (*RpcDebugPingResponseError) ProtoMessage() {} func (*RpcDebugPingResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 11, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 1, 0} } func (m *RpcDebugPingResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60636,7 +60895,7 @@ func (m *RpcDebugAnystoreObjectChanges) Reset() { *m = RpcDebugAnystoreO func (m *RpcDebugAnystoreObjectChanges) String() string { return proto.CompactTextString(m) } func (*RpcDebugAnystoreObjectChanges) ProtoMessage() {} func (*RpcDebugAnystoreObjectChanges) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 13} } func (m *RpcDebugAnystoreObjectChanges) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60674,7 +60933,7 @@ func (m *RpcDebugAnystoreObjectChangesRequest) Reset() { *m = RpcDebugAn func (m *RpcDebugAnystoreObjectChangesRequest) String() string { return proto.CompactTextString(m) } func (*RpcDebugAnystoreObjectChangesRequest) ProtoMessage() {} func (*RpcDebugAnystoreObjectChangesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 13, 0} } func (m *RpcDebugAnystoreObjectChangesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60727,7 +60986,7 @@ func (m *RpcDebugAnystoreObjectChangesResponse) Reset() { *m = RpcDebugA func (m *RpcDebugAnystoreObjectChangesResponse) String() string { return proto.CompactTextString(m) } func (*RpcDebugAnystoreObjectChangesResponse) ProtoMessage() {} func (*RpcDebugAnystoreObjectChangesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 13, 1} } func (m *RpcDebugAnystoreObjectChangesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60792,7 +61051,7 @@ func (m *RpcDebugAnystoreObjectChangesResponseChange) String() string { } func (*RpcDebugAnystoreObjectChangesResponseChange) ProtoMessage() {} func (*RpcDebugAnystoreObjectChangesResponseChange) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 1, 0} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 13, 1, 0} } func (m *RpcDebugAnystoreObjectChangesResponseChange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60862,7 +61121,7 @@ func (m *RpcDebugAnystoreObjectChangesResponseError) String() string { } func (*RpcDebugAnystoreObjectChangesResponseError) ProtoMessage() {} func (*RpcDebugAnystoreObjectChangesResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 12, 1, 1} + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 13, 1, 1} } func (m *RpcDebugAnystoreObjectChangesResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -60905,21 +61164,21 @@ func (m *RpcDebugAnystoreObjectChangesResponseError) GetDescription() string { return "" } -type RpcMetrics struct { +type RpcDebugNetCheck struct { } -func (m *RpcMetrics) Reset() { *m = RpcMetrics{} } -func (m *RpcMetrics) String() string { return proto.CompactTextString(m) } -func (*RpcMetrics) ProtoMessage() {} -func (*RpcMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 31} +func (m *RpcDebugNetCheck) Reset() { *m = RpcDebugNetCheck{} } +func (m *RpcDebugNetCheck) String() string { return proto.CompactTextString(m) } +func (*RpcDebugNetCheck) ProtoMessage() {} +func (*RpcDebugNetCheck) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 14} } -func (m *RpcMetrics) XXX_Unmarshal(b []byte) error { +func (m *RpcDebugNetCheck) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *RpcMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *RpcDebugNetCheck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_RpcMetrics.Marshal(b, m, deterministic) + return xxx_messageInfo_RpcDebugNetCheck.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -60929,33 +61188,34 @@ func (m *RpcMetrics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } -func (m *RpcMetrics) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcMetrics.Merge(m, src) +func (m *RpcDebugNetCheck) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcDebugNetCheck.Merge(m, src) } -func (m *RpcMetrics) XXX_Size() int { +func (m *RpcDebugNetCheck) XXX_Size() int { return m.Size() } -func (m *RpcMetrics) XXX_DiscardUnknown() { - xxx_messageInfo_RpcMetrics.DiscardUnknown(m) +func (m *RpcDebugNetCheck) XXX_DiscardUnknown() { + xxx_messageInfo_RpcDebugNetCheck.DiscardUnknown(m) } -var xxx_messageInfo_RpcMetrics proto.InternalMessageInfo +var xxx_messageInfo_RpcDebugNetCheck proto.InternalMessageInfo -type RpcMetricsSetParameters struct { +type RpcDebugNetCheckRequest struct { + ClientYml string `protobuf:"bytes,1,opt,name=clientYml,proto3" json:"clientYml,omitempty"` } -func (m *RpcMetricsSetParameters) Reset() { *m = RpcMetricsSetParameters{} } -func (m *RpcMetricsSetParameters) String() string { return proto.CompactTextString(m) } -func (*RpcMetricsSetParameters) ProtoMessage() {} -func (*RpcMetricsSetParameters) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0} +func (m *RpcDebugNetCheckRequest) Reset() { *m = RpcDebugNetCheckRequest{} } +func (m *RpcDebugNetCheckRequest) String() string { return proto.CompactTextString(m) } +func (*RpcDebugNetCheckRequest) ProtoMessage() {} +func (*RpcDebugNetCheckRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 14, 0} } -func (m *RpcMetricsSetParameters) XXX_Unmarshal(b []byte) error { +func (m *RpcDebugNetCheckRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *RpcMetricsSetParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *RpcDebugNetCheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_RpcMetricsSetParameters.Marshal(b, m, deterministic) + return xxx_messageInfo_RpcDebugNetCheckRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -60965,86 +61225,42 @@ func (m *RpcMetricsSetParameters) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *RpcMetricsSetParameters) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcMetricsSetParameters.Merge(m, src) +func (m *RpcDebugNetCheckRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcDebugNetCheckRequest.Merge(m, src) } -func (m *RpcMetricsSetParameters) XXX_Size() int { +func (m *RpcDebugNetCheckRequest) XXX_Size() int { return m.Size() } -func (m *RpcMetricsSetParameters) XXX_DiscardUnknown() { - xxx_messageInfo_RpcMetricsSetParameters.DiscardUnknown(m) +func (m *RpcDebugNetCheckRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcDebugNetCheckRequest.DiscardUnknown(m) } -var xxx_messageInfo_RpcMetricsSetParameters proto.InternalMessageInfo +var xxx_messageInfo_RpcDebugNetCheckRequest proto.InternalMessageInfo -type RpcMetricsSetParametersRequest struct { - Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` -} - -func (m *RpcMetricsSetParametersRequest) Reset() { *m = RpcMetricsSetParametersRequest{} } -func (m *RpcMetricsSetParametersRequest) String() string { return proto.CompactTextString(m) } -func (*RpcMetricsSetParametersRequest) ProtoMessage() {} -func (*RpcMetricsSetParametersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0, 0} -} -func (m *RpcMetricsSetParametersRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RpcMetricsSetParametersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RpcMetricsSetParametersRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RpcMetricsSetParametersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcMetricsSetParametersRequest.Merge(m, src) -} -func (m *RpcMetricsSetParametersRequest) XXX_Size() int { - return m.Size() -} -func (m *RpcMetricsSetParametersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RpcMetricsSetParametersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_RpcMetricsSetParametersRequest proto.InternalMessageInfo - -func (m *RpcMetricsSetParametersRequest) GetPlatform() string { +func (m *RpcDebugNetCheckRequest) GetClientYml() string { if m != nil { - return m.Platform + return m.ClientYml } return "" } -func (m *RpcMetricsSetParametersRequest) GetVersion() string { - if m != nil { - return m.Version - } - return "" +type RpcDebugNetCheckResponse struct { + Error *RpcDebugNetCheckResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` } -type RpcMetricsSetParametersResponse struct { - Error *RpcMetricsSetParametersResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +func (m *RpcDebugNetCheckResponse) Reset() { *m = RpcDebugNetCheckResponse{} } +func (m *RpcDebugNetCheckResponse) String() string { return proto.CompactTextString(m) } +func (*RpcDebugNetCheckResponse) ProtoMessage() {} +func (*RpcDebugNetCheckResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 14, 1} } - -func (m *RpcMetricsSetParametersResponse) Reset() { *m = RpcMetricsSetParametersResponse{} } -func (m *RpcMetricsSetParametersResponse) String() string { return proto.CompactTextString(m) } -func (*RpcMetricsSetParametersResponse) ProtoMessage() {} -func (*RpcMetricsSetParametersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0, 1} -} -func (m *RpcMetricsSetParametersResponse) XXX_Unmarshal(b []byte) error { +func (m *RpcDebugNetCheckResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *RpcMetricsSetParametersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *RpcDebugNetCheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_RpcMetricsSetParametersResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_RpcDebugNetCheckResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -61054,42 +61270,49 @@ func (m *RpcMetricsSetParametersResponse) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } -func (m *RpcMetricsSetParametersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcMetricsSetParametersResponse.Merge(m, src) +func (m *RpcDebugNetCheckResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcDebugNetCheckResponse.Merge(m, src) } -func (m *RpcMetricsSetParametersResponse) XXX_Size() int { +func (m *RpcDebugNetCheckResponse) XXX_Size() int { return m.Size() } -func (m *RpcMetricsSetParametersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RpcMetricsSetParametersResponse.DiscardUnknown(m) +func (m *RpcDebugNetCheckResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcDebugNetCheckResponse.DiscardUnknown(m) } -var xxx_messageInfo_RpcMetricsSetParametersResponse proto.InternalMessageInfo +var xxx_messageInfo_RpcDebugNetCheckResponse proto.InternalMessageInfo -func (m *RpcMetricsSetParametersResponse) GetError() *RpcMetricsSetParametersResponseError { +func (m *RpcDebugNetCheckResponse) GetError() *RpcDebugNetCheckResponseError { if m != nil { return m.Error } return nil } -type RpcMetricsSetParametersResponseError struct { - Code RpcMetricsSetParametersResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcMetricsSetParametersResponseErrorCode" json:"code,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +func (m *RpcDebugNetCheckResponse) GetResult() string { + if m != nil { + return m.Result + } + return "" } -func (m *RpcMetricsSetParametersResponseError) Reset() { *m = RpcMetricsSetParametersResponseError{} } -func (m *RpcMetricsSetParametersResponseError) String() string { return proto.CompactTextString(m) } -func (*RpcMetricsSetParametersResponseError) ProtoMessage() {} -func (*RpcMetricsSetParametersResponseError) Descriptor() ([]byte, []int) { - return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0, 1, 0} +type RpcDebugNetCheckResponseError struct { + Code RpcDebugNetCheckResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcDebugNetCheckResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` } -func (m *RpcMetricsSetParametersResponseError) XXX_Unmarshal(b []byte) error { + +func (m *RpcDebugNetCheckResponseError) Reset() { *m = RpcDebugNetCheckResponseError{} } +func (m *RpcDebugNetCheckResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcDebugNetCheckResponseError) ProtoMessage() {} +func (*RpcDebugNetCheckResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 30, 14, 1, 0} +} +func (m *RpcDebugNetCheckResponseError) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *RpcMetricsSetParametersResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *RpcDebugNetCheckResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_RpcMetricsSetParametersResponseError.Marshal(b, m, deterministic) + return xxx_messageInfo_RpcDebugNetCheckResponseError.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -61099,26 +61322,286 @@ func (m *RpcMetricsSetParametersResponseError) XXX_Marshal(b []byte, determinist return b[:n], nil } } -func (m *RpcMetricsSetParametersResponseError) XXX_Merge(src proto.Message) { - xxx_messageInfo_RpcMetricsSetParametersResponseError.Merge(m, src) +func (m *RpcDebugNetCheckResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcDebugNetCheckResponseError.Merge(m, src) } -func (m *RpcMetricsSetParametersResponseError) XXX_Size() int { +func (m *RpcDebugNetCheckResponseError) XXX_Size() int { return m.Size() } -func (m *RpcMetricsSetParametersResponseError) XXX_DiscardUnknown() { - xxx_messageInfo_RpcMetricsSetParametersResponseError.DiscardUnknown(m) +func (m *RpcDebugNetCheckResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcDebugNetCheckResponseError.DiscardUnknown(m) } -var xxx_messageInfo_RpcMetricsSetParametersResponseError proto.InternalMessageInfo +var xxx_messageInfo_RpcDebugNetCheckResponseError proto.InternalMessageInfo -func (m *RpcMetricsSetParametersResponseError) GetCode() RpcMetricsSetParametersResponseErrorCode { +func (m *RpcDebugNetCheckResponseError) GetCode() RpcDebugNetCheckResponseErrorCode { if m != nil { return m.Code } - return RpcMetricsSetParametersResponseError_NULL + return RpcDebugNetCheckResponseError_NULL } -func (m *RpcMetricsSetParametersResponseError) GetDescription() string { +func (m *RpcDebugNetCheckResponseError) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +type RpcInitial struct { +} + +func (m *RpcInitial) Reset() { *m = RpcInitial{} } +func (m *RpcInitial) String() string { return proto.CompactTextString(m) } +func (*RpcInitial) ProtoMessage() {} +func (*RpcInitial) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 31} +} +func (m *RpcInitial) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcInitial) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcInitial.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcInitial) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcInitial.Merge(m, src) +} +func (m *RpcInitial) XXX_Size() int { + return m.Size() +} +func (m *RpcInitial) XXX_DiscardUnknown() { + xxx_messageInfo_RpcInitial.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcInitial proto.InternalMessageInfo + +type RpcInitialSetParameters struct { +} + +func (m *RpcInitialSetParameters) Reset() { *m = RpcInitialSetParameters{} } +func (m *RpcInitialSetParameters) String() string { return proto.CompactTextString(m) } +func (*RpcInitialSetParameters) ProtoMessage() {} +func (*RpcInitialSetParameters) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0} +} +func (m *RpcInitialSetParameters) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcInitialSetParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcInitialSetParameters.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcInitialSetParameters) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcInitialSetParameters.Merge(m, src) +} +func (m *RpcInitialSetParameters) XXX_Size() int { + return m.Size() +} +func (m *RpcInitialSetParameters) XXX_DiscardUnknown() { + xxx_messageInfo_RpcInitialSetParameters.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcInitialSetParameters proto.InternalMessageInfo + +type RpcInitialSetParametersRequest struct { + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Workdir string `protobuf:"bytes,3,opt,name=workdir,proto3" json:"workdir,omitempty"` + LogLevel string `protobuf:"bytes,4,opt,name=logLevel,proto3" json:"logLevel,omitempty"` + DoNotSendLogs bool `protobuf:"varint,5,opt,name=doNotSendLogs,proto3" json:"doNotSendLogs,omitempty"` + DoNotSaveLogs bool `protobuf:"varint,6,opt,name=doNotSaveLogs,proto3" json:"doNotSaveLogs,omitempty"` + DoNotSendTelemetry bool `protobuf:"varint,7,opt,name=doNotSendTelemetry,proto3" json:"doNotSendTelemetry,omitempty"` +} + +func (m *RpcInitialSetParametersRequest) Reset() { *m = RpcInitialSetParametersRequest{} } +func (m *RpcInitialSetParametersRequest) String() string { return proto.CompactTextString(m) } +func (*RpcInitialSetParametersRequest) ProtoMessage() {} +func (*RpcInitialSetParametersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0, 0} +} +func (m *RpcInitialSetParametersRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcInitialSetParametersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcInitialSetParametersRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcInitialSetParametersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcInitialSetParametersRequest.Merge(m, src) +} +func (m *RpcInitialSetParametersRequest) XXX_Size() int { + return m.Size() +} +func (m *RpcInitialSetParametersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_RpcInitialSetParametersRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcInitialSetParametersRequest proto.InternalMessageInfo + +func (m *RpcInitialSetParametersRequest) GetPlatform() string { + if m != nil { + return m.Platform + } + return "" +} + +func (m *RpcInitialSetParametersRequest) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *RpcInitialSetParametersRequest) GetWorkdir() string { + if m != nil { + return m.Workdir + } + return "" +} + +func (m *RpcInitialSetParametersRequest) GetLogLevel() string { + if m != nil { + return m.LogLevel + } + return "" +} + +func (m *RpcInitialSetParametersRequest) GetDoNotSendLogs() bool { + if m != nil { + return m.DoNotSendLogs + } + return false +} + +func (m *RpcInitialSetParametersRequest) GetDoNotSaveLogs() bool { + if m != nil { + return m.DoNotSaveLogs + } + return false +} + +func (m *RpcInitialSetParametersRequest) GetDoNotSendTelemetry() bool { + if m != nil { + return m.DoNotSendTelemetry + } + return false +} + +type RpcInitialSetParametersResponse struct { + Error *RpcInitialSetParametersResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *RpcInitialSetParametersResponse) Reset() { *m = RpcInitialSetParametersResponse{} } +func (m *RpcInitialSetParametersResponse) String() string { return proto.CompactTextString(m) } +func (*RpcInitialSetParametersResponse) ProtoMessage() {} +func (*RpcInitialSetParametersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0, 1} +} +func (m *RpcInitialSetParametersResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcInitialSetParametersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcInitialSetParametersResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcInitialSetParametersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcInitialSetParametersResponse.Merge(m, src) +} +func (m *RpcInitialSetParametersResponse) XXX_Size() int { + return m.Size() +} +func (m *RpcInitialSetParametersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_RpcInitialSetParametersResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcInitialSetParametersResponse proto.InternalMessageInfo + +func (m *RpcInitialSetParametersResponse) GetError() *RpcInitialSetParametersResponseError { + if m != nil { + return m.Error + } + return nil +} + +type RpcInitialSetParametersResponseError struct { + Code RpcInitialSetParametersResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcInitialSetParametersResponseErrorCode" json:"code,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *RpcInitialSetParametersResponseError) Reset() { *m = RpcInitialSetParametersResponseError{} } +func (m *RpcInitialSetParametersResponseError) String() string { return proto.CompactTextString(m) } +func (*RpcInitialSetParametersResponseError) ProtoMessage() {} +func (*RpcInitialSetParametersResponseError) Descriptor() ([]byte, []int) { + return fileDescriptor_8261c968b2e6f45c, []int{0, 31, 0, 1, 0} +} +func (m *RpcInitialSetParametersResponseError) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RpcInitialSetParametersResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RpcInitialSetParametersResponseError.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RpcInitialSetParametersResponseError) XXX_Merge(src proto.Message) { + xxx_messageInfo_RpcInitialSetParametersResponseError.Merge(m, src) +} +func (m *RpcInitialSetParametersResponseError) XXX_Size() int { + return m.Size() +} +func (m *RpcInitialSetParametersResponseError) XXX_DiscardUnknown() { + xxx_messageInfo_RpcInitialSetParametersResponseError.DiscardUnknown(m) +} + +var xxx_messageInfo_RpcInitialSetParametersResponseError proto.InternalMessageInfo + +func (m *RpcInitialSetParametersResponseError) GetCode() RpcInitialSetParametersResponseErrorCode { + if m != nil { + return m.Code + } + return RpcInitialSetParametersResponseError_NULL +} + +func (m *RpcInitialSetParametersResponseError) GetDescription() string { if m != nil { return m.Description } @@ -67941,10 +68424,12 @@ func init() { proto.RegisterEnum("anytype.RpcDebugOpenedObjectsResponseErrorCode", RpcDebugOpenedObjectsResponseErrorCode_name, RpcDebugOpenedObjectsResponseErrorCode_value) proto.RegisterEnum("anytype.RpcDebugRunProfilerResponseErrorCode", RpcDebugRunProfilerResponseErrorCode_name, RpcDebugRunProfilerResponseErrorCode_value) proto.RegisterEnum("anytype.RpcDebugAccountSelectTraceResponseErrorCode", RpcDebugAccountSelectTraceResponseErrorCode_name, RpcDebugAccountSelectTraceResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcDebugExportLogResponseErrorCode", RpcDebugExportLogResponseErrorCode_name, RpcDebugExportLogResponseErrorCode_value) proto.RegisterEnum("anytype.RpcDebugPingResponseErrorCode", RpcDebugPingResponseErrorCode_name, RpcDebugPingResponseErrorCode_value) proto.RegisterEnum("anytype.RpcDebugAnystoreObjectChangesRequestOrderBy", RpcDebugAnystoreObjectChangesRequestOrderBy_name, RpcDebugAnystoreObjectChangesRequestOrderBy_value) proto.RegisterEnum("anytype.RpcDebugAnystoreObjectChangesResponseErrorCode", RpcDebugAnystoreObjectChangesResponseErrorCode_name, RpcDebugAnystoreObjectChangesResponseErrorCode_value) - proto.RegisterEnum("anytype.RpcMetricsSetParametersResponseErrorCode", RpcMetricsSetParametersResponseErrorCode_name, RpcMetricsSetParametersResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcDebugNetCheckResponseErrorCode", RpcDebugNetCheckResponseErrorCode_name, RpcDebugNetCheckResponseErrorCode_value) + proto.RegisterEnum("anytype.RpcInitialSetParametersResponseErrorCode", RpcInitialSetParametersResponseErrorCode_name, RpcInitialSetParametersResponseErrorCode_value) proto.RegisterEnum("anytype.RpcLogSendRequestLevel", RpcLogSendRequestLevel_name, RpcLogSendRequestLevel_value) proto.RegisterEnum("anytype.RpcLogSendResponseErrorCode", RpcLogSendResponseErrorCode_name, RpcLogSendResponseErrorCode_value) proto.RegisterEnum("anytype.RpcProcessCancelResponseErrorCode", RpcProcessCancelResponseErrorCode_name, RpcProcessCancelResponseErrorCode_value) @@ -69001,6 +69486,10 @@ func init() { proto.RegisterType((*RpcDebugAccountSelectTraceRequest)(nil), "anytype.Rpc.Debug.AccountSelectTrace.Request") proto.RegisterType((*RpcDebugAccountSelectTraceResponse)(nil), "anytype.Rpc.Debug.AccountSelectTrace.Response") proto.RegisterType((*RpcDebugAccountSelectTraceResponseError)(nil), "anytype.Rpc.Debug.AccountSelectTrace.Response.Error") + proto.RegisterType((*RpcDebugExportLog)(nil), "anytype.Rpc.Debug.ExportLog") + proto.RegisterType((*RpcDebugExportLogRequest)(nil), "anytype.Rpc.Debug.ExportLog.Request") + proto.RegisterType((*RpcDebugExportLogResponse)(nil), "anytype.Rpc.Debug.ExportLog.Response") + proto.RegisterType((*RpcDebugExportLogResponseError)(nil), "anytype.Rpc.Debug.ExportLog.Response.Error") proto.RegisterType((*RpcDebugPing)(nil), "anytype.Rpc.Debug.Ping") proto.RegisterType((*RpcDebugPingRequest)(nil), "anytype.Rpc.Debug.Ping.Request") proto.RegisterType((*RpcDebugPingResponse)(nil), "anytype.Rpc.Debug.Ping.Response") @@ -69010,11 +69499,15 @@ func init() { proto.RegisterType((*RpcDebugAnystoreObjectChangesResponse)(nil), "anytype.Rpc.Debug.AnystoreObjectChanges.Response") proto.RegisterType((*RpcDebugAnystoreObjectChangesResponseChange)(nil), "anytype.Rpc.Debug.AnystoreObjectChanges.Response.Change") proto.RegisterType((*RpcDebugAnystoreObjectChangesResponseError)(nil), "anytype.Rpc.Debug.AnystoreObjectChanges.Response.Error") - proto.RegisterType((*RpcMetrics)(nil), "anytype.Rpc.Metrics") - proto.RegisterType((*RpcMetricsSetParameters)(nil), "anytype.Rpc.Metrics.SetParameters") - proto.RegisterType((*RpcMetricsSetParametersRequest)(nil), "anytype.Rpc.Metrics.SetParameters.Request") - proto.RegisterType((*RpcMetricsSetParametersResponse)(nil), "anytype.Rpc.Metrics.SetParameters.Response") - proto.RegisterType((*RpcMetricsSetParametersResponseError)(nil), "anytype.Rpc.Metrics.SetParameters.Response.Error") + proto.RegisterType((*RpcDebugNetCheck)(nil), "anytype.Rpc.Debug.NetCheck") + proto.RegisterType((*RpcDebugNetCheckRequest)(nil), "anytype.Rpc.Debug.NetCheck.Request") + proto.RegisterType((*RpcDebugNetCheckResponse)(nil), "anytype.Rpc.Debug.NetCheck.Response") + proto.RegisterType((*RpcDebugNetCheckResponseError)(nil), "anytype.Rpc.Debug.NetCheck.Response.Error") + proto.RegisterType((*RpcInitial)(nil), "anytype.Rpc.Initial") + proto.RegisterType((*RpcInitialSetParameters)(nil), "anytype.Rpc.Initial.SetParameters") + proto.RegisterType((*RpcInitialSetParametersRequest)(nil), "anytype.Rpc.Initial.SetParameters.Request") + proto.RegisterType((*RpcInitialSetParametersResponse)(nil), "anytype.Rpc.Initial.SetParameters.Response") + proto.RegisterType((*RpcInitialSetParametersResponseError)(nil), "anytype.Rpc.Initial.SetParameters.Response.Error") proto.RegisterType((*RpcLog)(nil), "anytype.Rpc.Log") proto.RegisterType((*RpcLogSend)(nil), "anytype.Rpc.Log.Send") proto.RegisterType((*RpcLogSendRequest)(nil), "anytype.Rpc.Log.Send.Request") @@ -69159,1185 +69652,1196 @@ func init() { func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) } var fileDescriptor_8261c968b2e6f45c = []byte{ - // 18843 bytes of a gzipped FileDescriptorProto + // 19018 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7b, 0x98, 0x24, 0x47, - 0x75, 0x27, 0x3a, 0x55, 0x59, 0x55, 0xdd, 0x1d, 0xfd, 0x98, 0x9a, 0xd4, 0xcc, 0x68, 0x14, 0x12, - 0x23, 0x31, 0x12, 0x42, 0x16, 0xa2, 0x05, 0x12, 0x06, 0x24, 0x24, 0xa4, 0xea, 0xea, 0xec, 0xee, - 0x42, 0xdd, 0x55, 0x4d, 0x56, 0xf5, 0x0c, 0xb2, 0xd7, 0xb7, 0x36, 0xa7, 0x2a, 0xba, 0x3b, 0x35, - 0xd5, 0x99, 0xe5, 0xcc, 0xec, 0x1e, 0x35, 0xf7, 0xdb, 0xbb, 0xc6, 0x18, 0x10, 0xb6, 0x59, 0x8c, - 0x31, 0x6b, 0x63, 0xcc, 0xfb, 0xb5, 0x60, 0x1e, 0xe6, 0xbd, 0x60, 0x1b, 0xdb, 0x3c, 0x0c, 0xc6, - 0x36, 0xc6, 0x60, 0x0c, 0xc6, 0xe6, 0x1a, 0xcc, 0xc3, 0x78, 0xbf, 0x65, 0xb9, 0xf6, 0x5d, 0x60, - 0xb1, 0xe1, 0xfa, 0x7e, 0xf1, 0xc8, 0xcc, 0x88, 0xea, 0xca, 0xac, 0xc8, 0xea, 0xca, 0x6a, 0x61, - 0xf6, 0xbf, 0xcc, 0xc8, 0xc8, 0x13, 0x27, 0xce, 0xef, 0x44, 0xc4, 0x89, 0x88, 0x13, 0x27, 0xc0, - 0x99, 0xee, 0xc5, 0x5b, 0xbb, 0x8e, 0xed, 0xd9, 0xee, 0xad, 0x2d, 0x7b, 0x67, 0xc7, 0xb0, 0xda, - 0xee, 0x3c, 0x79, 0x57, 0x27, 0x0c, 0x6b, 0xdf, 0xdb, 0xef, 0x22, 0x78, 0x43, 0xf7, 0xd2, 0xd6, - 0xad, 0x1d, 0xf3, 0xe2, 0xad, 0xdd, 0x8b, 0xb7, 0xee, 0xd8, 0x6d, 0xd4, 0xf1, 0x7f, 0x20, 0x2f, - 0x2c, 0x3b, 0xbc, 0x29, 0x2a, 0x57, 0xc7, 0x6e, 0x19, 0x1d, 0xd7, 0xb3, 0x1d, 0xc4, 0x72, 0x9e, - 0x0e, 0x8b, 0x44, 0x7b, 0xc8, 0xf2, 0x7c, 0x0a, 0xd7, 0x6c, 0xd9, 0xf6, 0x56, 0x07, 0xd1, 0x6f, - 0x17, 0x77, 0x37, 0x6f, 0x75, 0x3d, 0x67, 0xb7, 0xe5, 0xb1, 0xaf, 0xd7, 0xf5, 0x7e, 0x6d, 0x23, - 0xb7, 0xe5, 0x98, 0x5d, 0xcf, 0x76, 0x68, 0x8e, 0x73, 0x7f, 0xfb, 0xb5, 0x09, 0xa0, 0xe8, 0xdd, - 0x16, 0xfc, 0xce, 0x04, 0x50, 0x4a, 0xdd, 0x2e, 0xfc, 0x68, 0x16, 0x80, 0x65, 0xe4, 0x9d, 0x47, - 0x8e, 0x6b, 0xda, 0x16, 0x3c, 0x0e, 0x26, 0x74, 0xf4, 0xd3, 0xbb, 0xc8, 0xf5, 0xee, 0xcc, 0x3d, - 0xf4, 0x75, 0x25, 0x03, 0x5f, 0x9f, 0x05, 0x93, 0x3a, 0x72, 0xbb, 0xb6, 0xe5, 0x22, 0xf5, 0x5e, - 0x90, 0x47, 0x8e, 0x63, 0x3b, 0x67, 0x32, 0xd7, 0x65, 0x6e, 0x9a, 0xbe, 0xed, 0xe6, 0x79, 0x56, - 0xfd, 0x79, 0xbd, 0xdb, 0x9a, 0x2f, 0x75, 0xbb, 0xf3, 0x21, 0xa5, 0x79, 0xff, 0xa7, 0x79, 0x0d, - 0xff, 0xa1, 0xd3, 0x1f, 0xd5, 0x33, 0x60, 0x62, 0x8f, 0x66, 0x38, 0x93, 0xbd, 0x2e, 0x73, 0xd3, - 0x94, 0xee, 0xbf, 0xe2, 0x2f, 0x6d, 0xe4, 0x19, 0x66, 0xc7, 0x3d, 0xa3, 0xd0, 0x2f, 0xec, 0x15, - 0xbe, 0x26, 0x03, 0xf2, 0x84, 0x88, 0x5a, 0x06, 0xb9, 0x96, 0xdd, 0x46, 0xa4, 0xf8, 0xb9, 0xdb, - 0x6e, 0x95, 0x2f, 0x7e, 0xbe, 0x6c, 0xb7, 0x91, 0x4e, 0x7e, 0x56, 0xaf, 0x03, 0xd3, 0xbe, 0x58, - 0x42, 0x36, 0xf8, 0xa4, 0x73, 0xb7, 0x81, 0x1c, 0xce, 0xaf, 0x4e, 0x82, 0x5c, 0x75, 0x63, 0x75, - 0xb5, 0x78, 0x4c, 0x3d, 0x01, 0x66, 0x37, 0xaa, 0xf7, 0x55, 0x6b, 0x17, 0xaa, 0x4d, 0x4d, 0xd7, - 0x6b, 0x7a, 0x31, 0xa3, 0xce, 0x82, 0xa9, 0x85, 0xd2, 0x62, 0xb3, 0x52, 0x5d, 0xdf, 0x68, 0x14, - 0xb3, 0xf0, 0x15, 0x0a, 0x98, 0xab, 0x23, 0x6f, 0x11, 0xed, 0x99, 0x2d, 0x54, 0xf7, 0x0c, 0x0f, - 0xc1, 0x17, 0x66, 0x02, 0x61, 0xaa, 0x1b, 0xb8, 0xd0, 0xe0, 0x13, 0xab, 0xc0, 0xed, 0x07, 0x2a, - 0x20, 0x52, 0x98, 0x67, 0x7f, 0xcf, 0x73, 0x69, 0x3a, 0x4f, 0xe7, 0xdc, 0x63, 0xc1, 0x34, 0xf7, - 0x4d, 0x9d, 0x03, 0x60, 0xa1, 0x54, 0xbe, 0x6f, 0x59, 0xaf, 0x6d, 0x54, 0x17, 0x8b, 0xc7, 0xf0, - 0xfb, 0x52, 0x4d, 0xd7, 0xd8, 0x7b, 0x06, 0x7e, 0x2f, 0xc3, 0x81, 0xb9, 0x28, 0x82, 0x39, 0x3f, - 0x98, 0x99, 0x3e, 0x80, 0xc2, 0x37, 0x04, 0xe0, 0x2c, 0x0b, 0xe0, 0xdc, 0x9e, 0x8c, 0x5c, 0xfa, - 0x00, 0x3d, 0x27, 0x0b, 0x26, 0xeb, 0xdb, 0xbb, 0x5e, 0xdb, 0xbe, 0x6c, 0xc1, 0xa9, 0x00, 0x19, - 0xf8, 0x4d, 0x5e, 0x26, 0x4f, 0x15, 0x65, 0x72, 0xd3, 0xc1, 0x4a, 0x30, 0x0a, 0x11, 0xd2, 0x78, - 0x55, 0x20, 0x8d, 0x92, 0x20, 0x8d, 0xc7, 0xca, 0x12, 0x4a, 0x5f, 0x0e, 0xbf, 0x74, 0x3b, 0xc8, - 0xd7, 0xbb, 0x46, 0x0b, 0xc1, 0x3f, 0x51, 0xc0, 0xcc, 0x2a, 0x32, 0xf6, 0x50, 0xa9, 0xdb, 0x75, - 0xec, 0x3d, 0x04, 0xcb, 0xa1, 0xbe, 0x9e, 0x01, 0x13, 0x2e, 0xce, 0x54, 0x69, 0x93, 0x1a, 0x4c, - 0xe9, 0xfe, 0xab, 0x7a, 0x16, 0x00, 0xb3, 0x8d, 0x2c, 0xcf, 0xf4, 0x4c, 0xe4, 0x9e, 0xc9, 0x5e, - 0xa7, 0xdc, 0x34, 0xa5, 0x73, 0x29, 0xf0, 0x3b, 0x59, 0x59, 0x1d, 0x23, 0x5c, 0xcc, 0xf3, 0x1c, - 0x44, 0x48, 0xf5, 0xb5, 0x59, 0x19, 0x1d, 0x1b, 0x48, 0x2e, 0x99, 0x6c, 0xdf, 0x96, 0x49, 0x2e, - 0x5c, 0x9c, 0xa3, 0x5a, 0x6b, 0xd6, 0x37, 0xca, 0x2b, 0xcd, 0xfa, 0x7a, 0xa9, 0xac, 0x15, 0x91, - 0x7a, 0x12, 0x14, 0xc9, 0x63, 0xb3, 0x52, 0x6f, 0x2e, 0x6a, 0xab, 0x5a, 0x43, 0x5b, 0x2c, 0x6e, - 0xaa, 0x2a, 0x98, 0xd3, 0xb5, 0xa7, 0x6f, 0x68, 0xf5, 0x46, 0x73, 0xa9, 0x54, 0x59, 0xd5, 0x16, - 0x8b, 0x5b, 0xf8, 0xe7, 0xd5, 0xca, 0x5a, 0xa5, 0xd1, 0xd4, 0xb5, 0x52, 0x79, 0x45, 0x5b, 0x2c, - 0x6e, 0xab, 0x57, 0x82, 0x2b, 0xaa, 0xb5, 0x66, 0x69, 0x7d, 0x5d, 0xaf, 0x9d, 0xd7, 0x9a, 0xec, - 0x8f, 0x7a, 0xd1, 0xa4, 0x05, 0x35, 0x9a, 0xf5, 0x95, 0x92, 0xae, 0x95, 0x16, 0x56, 0xb5, 0xe2, - 0x03, 0xf0, 0xd9, 0x0a, 0x98, 0x5d, 0x33, 0x2e, 0xa1, 0xfa, 0xb6, 0xe1, 0x20, 0xe3, 0x62, 0x07, - 0xc1, 0xeb, 0x25, 0xf0, 0x84, 0x7f, 0xc2, 0xe3, 0xa5, 0x89, 0x78, 0xdd, 0xda, 0x47, 0xc0, 0x42, - 0x11, 0x11, 0x80, 0xfd, 0xaf, 0xa0, 0x19, 0xac, 0x08, 0x80, 0x3d, 0x21, 0x21, 0xbd, 0x64, 0x88, - 0xfd, 0xec, 0xc3, 0x00, 0x31, 0xf8, 0x45, 0x05, 0xcc, 0x55, 0xac, 0x3d, 0xd3, 0x43, 0xcb, 0xc8, - 0x42, 0x0e, 0x1e, 0x07, 0xa4, 0x60, 0x78, 0xbd, 0xc2, 0xc1, 0xb0, 0x24, 0xc2, 0xf0, 0xb8, 0x3e, - 0x62, 0x13, 0xcb, 0x88, 0x18, 0x6d, 0xaf, 0x01, 0x53, 0x26, 0xc9, 0x57, 0x36, 0xdb, 0x4c, 0x62, - 0x61, 0x82, 0x7a, 0x03, 0x98, 0xa5, 0x2f, 0x4b, 0x66, 0x07, 0xdd, 0x87, 0xf6, 0xd9, 0xb8, 0x2b, - 0x26, 0xc2, 0x5f, 0x0c, 0x1a, 0x5f, 0x45, 0xc0, 0xf2, 0xc7, 0x93, 0x32, 0x95, 0x0c, 0xcc, 0x97, - 0x3c, 0x1c, 0x9a, 0xdf, 0x81, 0x56, 0x66, 0xc2, 0x1f, 0x64, 0xc1, 0x74, 0xdd, 0xb3, 0xbb, 0x58, - 0x65, 0x4d, 0x6b, 0x4b, 0x0e, 0xdc, 0x8f, 0xf3, 0x6d, 0xac, 0x2c, 0x82, 0xfb, 0xd8, 0x3e, 0x72, - 0xe4, 0x0a, 0x88, 0x68, 0x61, 0xdf, 0x09, 0x5a, 0xd8, 0x92, 0x80, 0xca, 0x6d, 0x89, 0xa8, 0xfd, - 0x10, 0xb6, 0xaf, 0x97, 0x28, 0xa0, 0xe8, 0xab, 0x99, 0x57, 0xde, 0x75, 0x1c, 0x64, 0x79, 0x72, - 0x20, 0xfc, 0x35, 0x0f, 0xc2, 0x8a, 0x08, 0xc2, 0x6d, 0x31, 0xca, 0xec, 0x97, 0x92, 0x62, 0x1b, - 0xfb, 0xfd, 0x00, 0xcd, 0xfb, 0x04, 0x34, 0x9f, 0x94, 0x9c, 0xad, 0x64, 0x90, 0xae, 0x0c, 0x81, - 0xe8, 0x49, 0x50, 0xc4, 0x63, 0x52, 0xb9, 0x51, 0x39, 0xaf, 0x35, 0x2b, 0xd5, 0xf3, 0x95, 0x86, - 0x56, 0x44, 0xf0, 0xc5, 0x0a, 0x98, 0xa1, 0xac, 0xe9, 0x68, 0xcf, 0xbe, 0x24, 0xd9, 0xeb, 0x7d, - 0x31, 0xa1, 0xb1, 0xc0, 0x97, 0x10, 0xd1, 0x32, 0x7e, 0x3e, 0x81, 0xb1, 0x10, 0x43, 0xee, 0xe1, - 0xd4, 0x5b, 0x1d, 0x68, 0x06, 0x5b, 0x7d, 0x5a, 0x4b, 0xdf, 0xde, 0xea, 0x25, 0x39, 0x00, 0x68, - 0x25, 0xcf, 0x9b, 0xe8, 0x32, 0x5c, 0x0b, 0x31, 0x11, 0xd4, 0x36, 0x33, 0x50, 0x6d, 0xb3, 0xfd, - 0xd4, 0xf6, 0x7d, 0xfc, 0x98, 0xb5, 0x20, 0xa2, 0x77, 0x4b, 0xa4, 0xb8, 0x31, 0x27, 0xd1, 0xb3, - 0x43, 0x5f, 0x51, 0xb2, 0xa2, 0xd5, 0x79, 0x0d, 0x98, 0x22, 0x8f, 0x55, 0x63, 0x07, 0xb1, 0x36, - 0x14, 0x26, 0xa8, 0xe7, 0xc0, 0x0c, 0xcd, 0xd8, 0xb2, 0x2d, 0x5c, 0x9f, 0x1c, 0xc9, 0x20, 0xa4, - 0x61, 0x10, 0x5b, 0x0e, 0x32, 0x3c, 0xdb, 0x21, 0x34, 0xf2, 0x14, 0x44, 0x2e, 0x09, 0x7e, 0x23, - 0x68, 0x85, 0x9a, 0xa0, 0x39, 0x8f, 0x4f, 0x52, 0x95, 0x64, 0x7a, 0xb3, 0x37, 0x5c, 0xfb, 0xa3, - 0xad, 0xae, 0x89, 0xd1, 0x5e, 0x22, 0x53, 0x3b, 0xa4, 0x9e, 0x06, 0x2a, 0x4b, 0xc5, 0x79, 0xcb, - 0xb5, 0x6a, 0x43, 0xab, 0x36, 0x8a, 0x9b, 0x7d, 0x35, 0x6a, 0x0b, 0xbe, 0x36, 0x07, 0x72, 0x4f, - 0xb3, 0x4d, 0x0b, 0x3e, 0x27, 0x23, 0xa8, 0x84, 0x85, 0xbc, 0xcb, 0xb6, 0x73, 0x29, 0x68, 0xa8, - 0x61, 0x42, 0x3c, 0x36, 0xa1, 0x2a, 0x29, 0x03, 0x55, 0x29, 0xd7, 0x4f, 0x95, 0x7e, 0x99, 0x57, - 0xa5, 0xbb, 0x44, 0x55, 0xba, 0xb1, 0x8f, 0xfc, 0x31, 0xf3, 0x11, 0x1d, 0xc0, 0xc7, 0x82, 0x0e, - 0xe0, 0x1e, 0x01, 0xc6, 0xc7, 0xc8, 0x91, 0x49, 0x06, 0xe0, 0x17, 0x52, 0x6d, 0xf8, 0xfd, 0xa0, - 0xde, 0x8a, 0x80, 0x7a, 0xbb, 0x4f, 0x9f, 0x60, 0x1e, 0xec, 0x3a, 0x1e, 0x38, 0xd8, 0x4d, 0x5c, - 0x52, 0x4f, 0x81, 0x13, 0x8b, 0x95, 0xa5, 0x25, 0x4d, 0xd7, 0xaa, 0x8d, 0x66, 0x55, 0x6b, 0x5c, - 0xa8, 0xe9, 0xf7, 0x15, 0x3b, 0xf0, 0x35, 0x0a, 0x00, 0x58, 0x42, 0x65, 0xc3, 0x6a, 0xa1, 0x8e, - 0x5c, 0x8f, 0xfe, 0x3f, 0xb2, 0xc9, 0xfa, 0x84, 0x90, 0x7e, 0x04, 0x9c, 0x2f, 0xcf, 0xca, 0xb7, - 0xca, 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xf3, 0xc3, 0xc1, 0xf6, 0xbc, 0x02, 0x1c, 0xf7, 0xe9, 0xb1, - 0xec, 0xfd, 0xa7, 0x7d, 0x6f, 0xcf, 0x81, 0x39, 0x06, 0x8b, 0x3f, 0x8f, 0x7f, 0x28, 0x23, 0x33, - 0x91, 0x87, 0x60, 0x92, 0x4d, 0xdb, 0xfd, 0xee, 0x3d, 0x78, 0x57, 0x97, 0xc1, 0x74, 0x17, 0x39, - 0x3b, 0xa6, 0xeb, 0x9a, 0xb6, 0x45, 0x17, 0xe4, 0xe6, 0x6e, 0x7b, 0x54, 0x20, 0x71, 0xb2, 0x76, - 0x39, 0xbf, 0x6e, 0x38, 0x9e, 0xd9, 0x32, 0xbb, 0x86, 0xe5, 0xad, 0x87, 0x99, 0x75, 0xfe, 0x4f, - 0xf8, 0xa2, 0x84, 0xd3, 0x1a, 0xb1, 0x26, 0x11, 0x2a, 0xf1, 0x3b, 0x09, 0xa6, 0x24, 0xb1, 0x04, - 0x93, 0xa9, 0xc5, 0x47, 0x53, 0x55, 0x8b, 0x3e, 0x78, 0x6f, 0xa9, 0x57, 0x81, 0x53, 0x95, 0x6a, - 0xb9, 0xa6, 0xeb, 0x5a, 0xb9, 0xd1, 0x5c, 0xd7, 0xf4, 0xb5, 0x4a, 0xbd, 0x5e, 0xa9, 0x55, 0xeb, - 0x87, 0x69, 0xed, 0xf0, 0x13, 0x4a, 0xa0, 0x31, 0x8b, 0xa8, 0xd5, 0x31, 0x2d, 0x04, 0xef, 0x39, - 0xa4, 0xc2, 0x88, 0xab, 0x3e, 0xf2, 0x38, 0xb3, 0xf2, 0x23, 0x70, 0x7e, 0x75, 0x72, 0x9c, 0xfb, - 0x13, 0xfc, 0x37, 0xdc, 0xfc, 0xbf, 0xa8, 0x80, 0x13, 0x5c, 0x43, 0xd4, 0xd1, 0xce, 0xc8, 0x56, - 0xf2, 0x7e, 0x96, 0x6f, 0xbb, 0x15, 0x11, 0xd3, 0x7e, 0xd6, 0xf4, 0x01, 0x36, 0x22, 0x60, 0x7d, - 0x73, 0x00, 0xeb, 0xaa, 0x00, 0xeb, 0x93, 0x87, 0xa0, 0x99, 0x0c, 0xd9, 0xdf, 0x4a, 0x15, 0xd9, - 0xab, 0xc0, 0xa9, 0xf5, 0x92, 0xde, 0xa8, 0x94, 0x2b, 0xeb, 0x25, 0x3c, 0x8e, 0x72, 0x43, 0x76, - 0x84, 0xb9, 0x2e, 0x82, 0xde, 0x17, 0xdf, 0xdf, 0xcb, 0x81, 0x6b, 0xfa, 0x77, 0xb4, 0xe5, 0x6d, - 0xc3, 0xda, 0x42, 0xd0, 0x94, 0x81, 0x7a, 0x11, 0x4c, 0xb4, 0x48, 0x76, 0x8a, 0x33, 0xbf, 0x75, - 0x13, 0xd3, 0x97, 0xd3, 0x12, 0x74, 0xff, 0x57, 0xf8, 0x2e, 0x5e, 0x21, 0x1a, 0xa2, 0x42, 0x3c, - 0x35, 0x1e, 0xbc, 0x03, 0x7c, 0x47, 0xe8, 0xc6, 0xa7, 0x02, 0xdd, 0xb8, 0x20, 0xe8, 0x46, 0xf9, - 0x70, 0xe4, 0x93, 0xa9, 0xc9, 0x1f, 0x3f, 0x1c, 0x3a, 0x80, 0x48, 0x6d, 0x32, 0xa3, 0x47, 0x85, - 0xbe, 0xdd, 0xfd, 0x2b, 0x15, 0x50, 0x58, 0x44, 0x1d, 0x24, 0xbb, 0x12, 0xf9, 0xad, 0xac, 0xec, - 0x86, 0x08, 0x85, 0x81, 0xd2, 0x8e, 0x5e, 0x1d, 0xf1, 0xcc, 0x1d, 0xe4, 0x7a, 0xc6, 0x4e, 0x97, - 0x88, 0x5a, 0xd1, 0xc3, 0x04, 0xf8, 0x73, 0x59, 0x99, 0xed, 0x92, 0x98, 0x62, 0xfe, 0x6d, 0xac, - 0x29, 0x7e, 0x65, 0x0e, 0x14, 0x2e, 0x18, 0x9d, 0x0e, 0xf2, 0xe0, 0x57, 0xb3, 0xa0, 0x50, 0xc6, - 0x73, 0x52, 0x04, 0x1f, 0x13, 0x82, 0x05, 0xc1, 0xa4, 0x63, 0xdb, 0xde, 0xba, 0xe1, 0x6d, 0x33, - 0xb4, 0x82, 0x77, 0xb6, 0x4d, 0xfb, 0x16, 0x1e, 0xb4, 0x7b, 0x44, 0xd0, 0x7e, 0x4c, 0x90, 0x26, - 0x2d, 0x68, 0x9e, 0x16, 0x12, 0x81, 0x1a, 0x04, 0x93, 0x3b, 0x16, 0xda, 0xb1, 0x2d, 0xb3, 0xe5, - 0x8f, 0xf4, 0xfe, 0x3b, 0xfc, 0x50, 0x30, 0x4b, 0x5e, 0x10, 0x30, 0x9b, 0x97, 0x2e, 0x25, 0x19, - 0x68, 0xf5, 0x21, 0x30, 0xbb, 0x16, 0x5c, 0x4d, 0x21, 0x68, 0x36, 0x6a, 0xcd, 0xb2, 0xae, 0x95, - 0x1a, 0x5a, 0x73, 0xb5, 0x56, 0x2e, 0xad, 0x36, 0x75, 0x6d, 0xbd, 0x56, 0x44, 0xf0, 0xef, 0xb3, - 0x58, 0xb8, 0x2d, 0x7b, 0x0f, 0x39, 0x70, 0x59, 0x4a, 0xce, 0x71, 0x32, 0x61, 0x18, 0xfc, 0xb2, - 0xf4, 0x56, 0x39, 0x93, 0x0e, 0xe3, 0x20, 0xa2, 0x2b, 0xfc, 0xb0, 0xd4, 0xb6, 0x77, 0x2c, 0xa9, - 0x87, 0x81, 0xa4, 0xff, 0x67, 0x16, 0x4c, 0x94, 0x6d, 0x6b, 0x0f, 0x39, 0x1e, 0x6f, 0x65, 0xf2, - 0xd2, 0xcc, 0x88, 0xd2, 0xc4, 0x5d, 0x13, 0xb2, 0x3c, 0xc7, 0xee, 0xfa, 0x66, 0xa6, 0xff, 0x0a, - 0xdf, 0x98, 0x54, 0xc2, 0xac, 0xe4, 0xe8, 0xe5, 0xa6, 0xfe, 0x05, 0x09, 0xec, 0x29, 0x3d, 0x0d, - 0xe0, 0x35, 0x49, 0x70, 0xe9, 0xcf, 0x40, 0xfa, 0xbb, 0xbc, 0x5f, 0x52, 0xc0, 0x2c, 0x6d, 0x7c, - 0x75, 0x44, 0xc6, 0x45, 0x58, 0xe3, 0x17, 0x7a, 0x7a, 0x84, 0xbf, 0x72, 0x4c, 0x10, 0x7f, 0xc1, - 0xe8, 0x76, 0x83, 0x45, 0xbf, 0x95, 0x63, 0x3a, 0x7b, 0xa7, 0x6a, 0xbe, 0x50, 0x00, 0x39, 0x63, - 0xd7, 0xdb, 0x86, 0x3f, 0x90, 0x36, 0xf9, 0x85, 0xce, 0x80, 0xf1, 0x13, 0x01, 0xc9, 0x49, 0x90, - 0xf7, 0xec, 0x4b, 0xc8, 0x97, 0x03, 0x7d, 0xc1, 0x70, 0x18, 0xdd, 0x6e, 0x83, 0x7c, 0x60, 0x70, - 0xf8, 0xef, 0x78, 0x84, 0x31, 0x5a, 0x2d, 0x7b, 0xd7, 0xf2, 0x2a, 0xfe, 0xc2, 0x5f, 0x98, 0x00, - 0x3f, 0x9f, 0x91, 0x99, 0x42, 0x48, 0x30, 0x98, 0x0c, 0xb2, 0x8b, 0x43, 0x34, 0xa5, 0x79, 0x70, - 0x73, 0x69, 0x7d, 0xbd, 0xd9, 0xa8, 0xdd, 0xa7, 0x55, 0xc3, 0xe1, 0xbe, 0x59, 0xa9, 0x36, 0x1b, - 0x2b, 0x5a, 0xb3, 0xbc, 0xa1, 0x93, 0xd5, 0x99, 0x52, 0xb9, 0x5c, 0xdb, 0xa8, 0x36, 0x8a, 0x08, - 0xbe, 0x35, 0x0b, 0x66, 0xca, 0x1d, 0xdb, 0x0d, 0x10, 0xbe, 0x36, 0x44, 0x38, 0x10, 0x63, 0x86, - 0x13, 0x23, 0xfc, 0x97, 0x8c, 0xec, 0x56, 0xaf, 0x2f, 0x10, 0x8e, 0x7c, 0x44, 0x2f, 0xf5, 0x46, - 0xa9, 0xad, 0xde, 0xc1, 0xf4, 0xd2, 0x6f, 0x12, 0x9f, 0xb9, 0x13, 0x4c, 0x94, 0xa8, 0x62, 0xc0, - 0xbf, 0xcd, 0x80, 0x42, 0xd9, 0xb6, 0x36, 0xcd, 0x2d, 0xf5, 0x46, 0x30, 0x87, 0x2c, 0xe3, 0x62, - 0x07, 0x2d, 0x1a, 0x9e, 0xb1, 0x67, 0xa2, 0xcb, 0xa4, 0x02, 0x93, 0x7a, 0x4f, 0x2a, 0x66, 0x8a, - 0xa5, 0xa0, 0x8b, 0xbb, 0x5b, 0x84, 0xa9, 0x49, 0x9d, 0x4f, 0x52, 0x9f, 0x0c, 0xae, 0xa4, 0xaf, - 0xeb, 0x0e, 0x72, 0x50, 0x07, 0x19, 0x2e, 0xc2, 0xc6, 0xa8, 0x85, 0x3a, 0x44, 0x69, 0x27, 0xf5, - 0xa8, 0xcf, 0xea, 0x39, 0x30, 0x43, 0x3f, 0x11, 0x53, 0xc7, 0x25, 0x6a, 0x3c, 0xa9, 0x0b, 0x69, - 0xea, 0x63, 0x41, 0x1e, 0x3d, 0xe8, 0x39, 0xc6, 0x99, 0x36, 0xc1, 0xeb, 0xca, 0x79, 0xea, 0xeb, - 0x35, 0xef, 0xfb, 0x7a, 0xcd, 0xd7, 0x89, 0x27, 0x98, 0x4e, 0x73, 0xc1, 0xdf, 0x98, 0x0c, 0x0c, - 0x89, 0x7f, 0xcd, 0x86, 0x8a, 0xa1, 0x82, 0x9c, 0x65, 0xec, 0x20, 0xa6, 0x17, 0xe4, 0x59, 0xbd, - 0x19, 0x1c, 0x37, 0xf6, 0x0c, 0xcf, 0x70, 0x56, 0xed, 0x96, 0xd1, 0x21, 0x83, 0x9f, 0xdf, 0xf2, - 0x7b, 0x3f, 0x90, 0x75, 0x78, 0xcf, 0x76, 0x10, 0xc9, 0xe5, 0xaf, 0xc3, 0xfb, 0x09, 0x98, 0xba, - 0xd9, 0xb2, 0x2d, 0xc2, 0xbf, 0xa2, 0x93, 0x67, 0x2c, 0x95, 0xb6, 0xe9, 0xe2, 0x8a, 0x10, 0x2a, - 0x55, 0xba, 0xa0, 0x5c, 0xdf, 0xb7, 0x5a, 0x64, 0x0d, 0x7e, 0x52, 0x8f, 0xfa, 0xac, 0x2e, 0x80, - 0x69, 0xb6, 0xfc, 0xbc, 0x86, 0xf5, 0xaa, 0x40, 0xf4, 0xea, 0x3a, 0xd1, 0x93, 0x86, 0xe2, 0x39, - 0x5f, 0x0d, 0xf3, 0xe9, 0xfc, 0x4f, 0xea, 0xbd, 0xe0, 0x6a, 0xf6, 0x5a, 0xde, 0x75, 0x3d, 0x7b, - 0x87, 0x82, 0xbe, 0x64, 0x76, 0x68, 0x0d, 0x26, 0x48, 0x0d, 0xe2, 0xb2, 0xa8, 0xb7, 0x81, 0x93, - 0x5d, 0x07, 0x6d, 0x22, 0xe7, 0x7e, 0x63, 0x67, 0xf7, 0xc1, 0x86, 0x63, 0x58, 0x6e, 0xd7, 0x76, - 0xbc, 0x33, 0x93, 0x84, 0xf9, 0xbe, 0xdf, 0x58, 0x47, 0x39, 0x09, 0x0a, 0x54, 0x7c, 0xf0, 0x85, - 0x79, 0x69, 0x27, 0x3a, 0x56, 0xa1, 0x58, 0xf3, 0xec, 0x71, 0x60, 0x82, 0xf5, 0x70, 0x04, 0xa8, - 0xe9, 0xdb, 0x4e, 0xf7, 0xcc, 0xe6, 0x18, 0x15, 0xdd, 0xcf, 0xa6, 0xde, 0x0e, 0x0a, 0x2d, 0x52, - 0x2d, 0x82, 0xd9, 0xf4, 0x6d, 0x57, 0xf7, 0x2f, 0x94, 0x64, 0xd1, 0x59, 0x56, 0xf8, 0x57, 0x8a, - 0x94, 0xdf, 0x5d, 0x1c, 0xc7, 0xc9, 0x5a, 0xf5, 0x37, 0xb2, 0x43, 0x74, 0x9b, 0xb7, 0x80, 0x9b, - 0x58, 0x9f, 0xc8, 0xec, 0x8f, 0xc5, 0xe6, 0xc2, 0x86, 0x6f, 0x82, 0x63, 0xab, 0xa4, 0xde, 0x28, - 0xe9, 0x78, 0xfe, 0xb4, 0x88, 0x4d, 0xf7, 0x9b, 0xc1, 0x8d, 0x03, 0x72, 0x6b, 0x8d, 0x66, 0xb5, - 0xb4, 0xa6, 0x15, 0x37, 0x45, 0xdb, 0xa6, 0xde, 0xa8, 0xad, 0x37, 0xf5, 0x8d, 0x6a, 0xb5, 0x52, - 0x5d, 0xa6, 0xc4, 0xb0, 0x49, 0x78, 0x3a, 0xcc, 0x70, 0x41, 0xaf, 0x34, 0xb4, 0x66, 0xb9, 0x56, - 0x5d, 0xaa, 0x2c, 0x17, 0xcd, 0x41, 0x86, 0xd1, 0x03, 0xea, 0x75, 0xe0, 0x1a, 0x81, 0x93, 0x4a, - 0xad, 0x8a, 0xe7, 0x13, 0xe5, 0x52, 0xb5, 0xac, 0xe1, 0xc9, 0xc3, 0x25, 0x15, 0x82, 0x53, 0x94, - 0x5c, 0x73, 0xa9, 0xb2, 0xca, 0x6f, 0x01, 0x7c, 0x3c, 0xa3, 0x9e, 0x01, 0x57, 0xf0, 0xdf, 0x2a, - 0xd5, 0xf3, 0xa5, 0xd5, 0xca, 0x62, 0xf1, 0x8f, 0x32, 0xea, 0x0d, 0xe0, 0x5a, 0xe1, 0x2f, 0xba, - 0x9a, 0xdf, 0xac, 0x2c, 0x36, 0xd7, 0x2a, 0xf5, 0xb5, 0x52, 0xa3, 0xbc, 0x52, 0xfc, 0x04, 0x99, - 0x2f, 0x04, 0x06, 0x30, 0xe7, 0x0c, 0xf7, 0x12, 0x7e, 0x4c, 0x2f, 0x89, 0x8a, 0xfa, 0x98, 0xbe, - 0xb0, 0xc7, 0xdb, 0xb0, 0x1f, 0x0d, 0x46, 0x87, 0x45, 0x41, 0x85, 0x1e, 0x97, 0x80, 0x56, 0x32, - 0x1d, 0x6a, 0x0c, 0xa1, 0x42, 0xd7, 0x81, 0x6b, 0xaa, 0x1a, 0x45, 0x4a, 0xd7, 0xca, 0xb5, 0xf3, - 0x9a, 0xde, 0xbc, 0x50, 0x5a, 0x5d, 0xd5, 0x1a, 0xcd, 0xa5, 0x8a, 0x5e, 0x6f, 0x14, 0x37, 0xe1, - 0xb7, 0xb3, 0xc1, 0x1c, 0x9a, 0x93, 0xd6, 0xdf, 0x66, 0x93, 0x36, 0xeb, 0xd8, 0xb9, 0xf2, 0x8f, - 0x83, 0x82, 0xeb, 0x19, 0xde, 0xae, 0xcb, 0x5a, 0xf5, 0x23, 0xfa, 0xb7, 0xea, 0xf9, 0x3a, 0xc9, - 0xa4, 0xb3, 0xcc, 0xf0, 0xaf, 0x32, 0x49, 0x9a, 0xe9, 0x08, 0xa6, 0xd1, 0xe6, 0x10, 0x22, 0x3e, - 0x0b, 0xa0, 0xaf, 0xed, 0x95, 0x7a, 0xb3, 0xb4, 0xaa, 0x6b, 0xa5, 0xc5, 0xfb, 0x83, 0xc9, 0x33, - 0x52, 0x4f, 0x81, 0x13, 0x1b, 0x55, 0x3c, 0x1d, 0x26, 0xcd, 0xa5, 0x56, 0xad, 0x6a, 0x65, 0x2c, - 0xf7, 0x9f, 0x23, 0x4b, 0xd5, 0xd8, 0x82, 0x26, 0x7c, 0x63, 0x2b, 0x87, 0x93, 0xff, 0xd7, 0xa5, + 0x75, 0x27, 0x3a, 0x95, 0x59, 0x55, 0xdd, 0x1d, 0xfd, 0x98, 0x9a, 0xd4, 0xcc, 0x68, 0x14, 0x12, + 0x23, 0x31, 0x12, 0x42, 0x16, 0xa2, 0x05, 0x12, 0xb6, 0x91, 0x90, 0x90, 0xaa, 0xab, 0xb3, 0xbb, + 0x0b, 0x75, 0x57, 0xb5, 0xb3, 0xaa, 0x67, 0x90, 0xbd, 0xbe, 0xb5, 0x39, 0x55, 0xd1, 0xdd, 0xa9, + 0xa9, 0xce, 0x2c, 0x67, 0x65, 0xf7, 0xa8, 0xb9, 0xdf, 0xde, 0x35, 0xc6, 0x80, 0x30, 0x66, 0x31, + 0xc6, 0xd8, 0xc6, 0x98, 0xf7, 0x6b, 0xc1, 0x3c, 0xcc, 0x7b, 0xc1, 0x36, 0xd8, 0x3c, 0x0c, 0xc6, + 0x36, 0xc6, 0x60, 0x1e, 0xc6, 0xe6, 0x1a, 0x0c, 0xc6, 0x78, 0x3f, 0xb3, 0x5c, 0xfb, 0x2e, 0xb0, + 0xd8, 0x70, 0x7d, 0xbf, 0x78, 0x64, 0x66, 0x44, 0x75, 0x65, 0x56, 0x64, 0x75, 0x65, 0xb5, 0x30, + 0xfb, 0x5f, 0x66, 0x64, 0xe4, 0x89, 0x13, 0xe7, 0x77, 0x22, 0xe2, 0x44, 0xc4, 0x89, 0x13, 0xe0, + 0x4c, 0xe7, 0xe2, 0xad, 0x1d, 0xd7, 0xf1, 0x9c, 0xee, 0xad, 0x4d, 0x67, 0x67, 0xc7, 0xb4, 0x5b, + 0xdd, 0x79, 0xf2, 0xae, 0x4d, 0x98, 0xf6, 0xbe, 0xb7, 0xdf, 0x41, 0xf0, 0x86, 0xce, 0xa5, 0xad, + 0x5b, 0xdb, 0xd6, 0xc5, 0x5b, 0x3b, 0x17, 0x6f, 0xdd, 0x71, 0x5a, 0xa8, 0xed, 0xff, 0x40, 0x5e, + 0x58, 0x76, 0x78, 0x53, 0x54, 0xae, 0xb6, 0xd3, 0x34, 0xdb, 0x5d, 0xcf, 0x71, 0x11, 0xcb, 0x79, + 0x3a, 0x2c, 0x12, 0xed, 0x21, 0xdb, 0xf3, 0x29, 0x5c, 0xb3, 0xe5, 0x38, 0x5b, 0x6d, 0x44, 0xbf, + 0x5d, 0xdc, 0xdd, 0xbc, 0xb5, 0xeb, 0xb9, 0xbb, 0x4d, 0x8f, 0x7d, 0xbd, 0xae, 0xf7, 0x6b, 0x0b, + 0x75, 0x9b, 0xae, 0xd5, 0xf1, 0x1c, 0x97, 0xe6, 0x38, 0xf7, 0xd9, 0x7f, 0x9c, 0x00, 0xaa, 0xd1, + 0x69, 0xc2, 0x6f, 0x4f, 0x00, 0xb5, 0xd8, 0xe9, 0xc0, 0x8f, 0x28, 0x00, 0x2c, 0x23, 0xef, 0x3c, + 0x72, 0xbb, 0x96, 0x63, 0xc3, 0xe3, 0x60, 0xc2, 0x40, 0x3f, 0xb3, 0x8b, 0xba, 0xde, 0x9d, 0xd9, + 0x87, 0xbe, 0xa6, 0x66, 0xe0, 0x6b, 0x15, 0x30, 0x69, 0xa0, 0x6e, 0xc7, 0xb1, 0xbb, 0x48, 0xbb, + 0x17, 0xe4, 0x90, 0xeb, 0x3a, 0xee, 0x99, 0xcc, 0x75, 0x99, 0x9b, 0xa6, 0x6f, 0xbb, 0x79, 0x9e, + 0x55, 0x7f, 0xde, 0xe8, 0x34, 0xe7, 0x8b, 0x9d, 0xce, 0x7c, 0x48, 0x69, 0xde, 0xff, 0x69, 0x5e, + 0xc7, 0x7f, 0x18, 0xf4, 0x47, 0xed, 0x0c, 0x98, 0xd8, 0xa3, 0x19, 0xce, 0x28, 0xd7, 0x65, 0x6e, + 0x9a, 0x32, 0xfc, 0x57, 0xfc, 0xa5, 0x85, 0x3c, 0xd3, 0x6a, 0x77, 0xcf, 0xa8, 0xf4, 0x0b, 0x7b, + 0x85, 0xaf, 0xca, 0x80, 0x1c, 0x21, 0xa2, 0x95, 0x40, 0xb6, 0xe9, 0xb4, 0x10, 0x29, 0x7e, 0xee, + 0xb6, 0x5b, 0xe5, 0x8b, 0x9f, 0x2f, 0x39, 0x2d, 0x64, 0x90, 0x9f, 0xb5, 0xeb, 0xc0, 0xb4, 0x2f, + 0x96, 0x90, 0x0d, 0x3e, 0xe9, 0xdc, 0x6d, 0x20, 0x8b, 0xf3, 0x6b, 0x93, 0x20, 0x5b, 0xd9, 0x58, + 0x5d, 0x2d, 0x1c, 0xd3, 0x4e, 0x80, 0xd9, 0x8d, 0xca, 0x7d, 0x95, 0xea, 0x85, 0x4a, 0x43, 0x37, + 0x8c, 0xaa, 0x51, 0xc8, 0x68, 0xb3, 0x60, 0x6a, 0xa1, 0xb8, 0xd8, 0x28, 0x57, 0xd6, 0x37, 0xea, + 0x05, 0x05, 0xbe, 0x4c, 0x05, 0x73, 0x35, 0xe4, 0x2d, 0xa2, 0x3d, 0xab, 0x89, 0x6a, 0x9e, 0xe9, + 0x21, 0xf8, 0xfc, 0x4c, 0x20, 0x4c, 0x6d, 0x03, 0x17, 0x1a, 0x7c, 0x62, 0x15, 0xb8, 0xfd, 0x40, + 0x05, 0x44, 0x0a, 0xf3, 0xec, 0xef, 0x79, 0x2e, 0xcd, 0xe0, 0xe9, 0x9c, 0x7b, 0x2c, 0x98, 0xe6, + 0xbe, 0x69, 0x73, 0x00, 0x2c, 0x14, 0x4b, 0xf7, 0x2d, 0x1b, 0xd5, 0x8d, 0xca, 0x62, 0xe1, 0x18, + 0x7e, 0x5f, 0xaa, 0x1a, 0x3a, 0x7b, 0xcf, 0xc0, 0xef, 0x66, 0x38, 0x30, 0x17, 0x45, 0x30, 0xe7, + 0x07, 0x33, 0xd3, 0x07, 0x50, 0xf8, 0xba, 0x00, 0x9c, 0x65, 0x01, 0x9c, 0xdb, 0x93, 0x91, 0x4b, + 0x1f, 0xa0, 0x67, 0x2a, 0x60, 0xb2, 0xb6, 0xbd, 0xeb, 0xb5, 0x9c, 0xcb, 0x36, 0x9c, 0x0a, 0x90, + 0x81, 0xdf, 0xe0, 0x65, 0xf2, 0x64, 0x51, 0x26, 0x37, 0x1d, 0xac, 0x04, 0xa3, 0x10, 0x21, 0x8d, + 0x57, 0x04, 0xd2, 0x28, 0x0a, 0xd2, 0x78, 0xac, 0x2c, 0xa1, 0xf4, 0xe5, 0xf0, 0x4b, 0xb7, 0x83, + 0x5c, 0xad, 0x63, 0x36, 0x11, 0xfc, 0x13, 0x15, 0xcc, 0xac, 0x22, 0x73, 0x0f, 0x15, 0x3b, 0x1d, + 0xd7, 0xd9, 0x43, 0xb0, 0x14, 0xea, 0xeb, 0x19, 0x30, 0xd1, 0xc5, 0x99, 0xca, 0x2d, 0x52, 0x83, + 0x29, 0xc3, 0x7f, 0xd5, 0xce, 0x02, 0x60, 0xb5, 0x90, 0xed, 0x59, 0x9e, 0x85, 0xba, 0x67, 0x94, + 0xeb, 0xd4, 0x9b, 0xa6, 0x0c, 0x2e, 0x05, 0x7e, 0x5b, 0x91, 0xd5, 0x31, 0xc2, 0xc5, 0x3c, 0xcf, + 0x41, 0x84, 0x54, 0x5f, 0xad, 0xc8, 0xe8, 0xd8, 0x40, 0x72, 0xc9, 0x64, 0xfb, 0x96, 0x4c, 0x72, + 0xe1, 0xe2, 0x1c, 0x95, 0x6a, 0xa3, 0xb6, 0x51, 0x5a, 0x69, 0xd4, 0xd6, 0x8b, 0x25, 0xbd, 0x80, + 0xb4, 0x93, 0xa0, 0x40, 0x1e, 0x1b, 0xe5, 0x5a, 0x63, 0x51, 0x5f, 0xd5, 0xeb, 0xfa, 0x62, 0x61, + 0x53, 0xd3, 0xc0, 0x9c, 0xa1, 0xff, 0xc4, 0x86, 0x5e, 0xab, 0x37, 0x96, 0x8a, 0xe5, 0x55, 0x7d, + 0xb1, 0xb0, 0x85, 0x7f, 0x5e, 0x2d, 0xaf, 0x95, 0xeb, 0x0d, 0x43, 0x2f, 0x96, 0x56, 0xf4, 0xc5, + 0xc2, 0xb6, 0x76, 0x25, 0xb8, 0xa2, 0x52, 0x6d, 0x14, 0xd7, 0xd7, 0x8d, 0xea, 0x79, 0xbd, 0xc1, + 0xfe, 0xa8, 0x15, 0x2c, 0x5a, 0x50, 0xbd, 0x51, 0x5b, 0x29, 0x1a, 0x7a, 0x71, 0x61, 0x55, 0x2f, + 0x3c, 0x00, 0x9f, 0xa1, 0x82, 0xd9, 0x35, 0xf3, 0x12, 0xaa, 0x6d, 0x9b, 0x2e, 0x32, 0x2f, 0xb6, + 0x11, 0xbc, 0x5e, 0x02, 0x4f, 0xf8, 0x27, 0x3c, 0x5e, 0xba, 0x88, 0xd7, 0xad, 0x7d, 0x04, 0x2c, + 0x14, 0x11, 0x01, 0xd8, 0xff, 0x0a, 0x9a, 0xc1, 0x8a, 0x00, 0xd8, 0x13, 0x12, 0xd2, 0x4b, 0x86, + 0xd8, 0xcf, 0x3d, 0x0c, 0x10, 0x83, 0x5f, 0x54, 0xc1, 0x5c, 0xd9, 0xde, 0xb3, 0x3c, 0xb4, 0x8c, + 0x6c, 0xe4, 0xe2, 0x71, 0x40, 0x0a, 0x86, 0xd7, 0xaa, 0x1c, 0x0c, 0x4b, 0x22, 0x0c, 0x8f, 0xeb, + 0x23, 0x36, 0xb1, 0x8c, 0x88, 0xd1, 0xf6, 0x1a, 0x30, 0x65, 0x91, 0x7c, 0x25, 0xab, 0xc5, 0x24, + 0x16, 0x26, 0x68, 0x37, 0x80, 0x59, 0xfa, 0xb2, 0x64, 0xb5, 0xd1, 0x7d, 0x68, 0x9f, 0x8d, 0xbb, + 0x62, 0x22, 0xfc, 0xc5, 0xa0, 0xf1, 0x95, 0x05, 0x2c, 0x7f, 0x34, 0x29, 0x53, 0xc9, 0xc0, 0x7c, + 0xd1, 0xc3, 0xa1, 0xf9, 0x1d, 0x68, 0x65, 0x16, 0xfc, 0xbe, 0x02, 0xa6, 0x6b, 0x9e, 0xd3, 0xc1, + 0x2a, 0x6b, 0xd9, 0x5b, 0x72, 0xe0, 0x7e, 0x8c, 0x6f, 0x63, 0x25, 0x11, 0xdc, 0xc7, 0xf6, 0x91, + 0x23, 0x57, 0x40, 0x44, 0x0b, 0xfb, 0x76, 0xd0, 0xc2, 0x96, 0x04, 0x54, 0x6e, 0x4b, 0x44, 0xed, + 0x07, 0xb0, 0x7d, 0xbd, 0x48, 0x05, 0x05, 0x5f, 0xcd, 0xbc, 0xd2, 0xae, 0xeb, 0x22, 0xdb, 0x93, + 0x03, 0xe1, 0xaf, 0x78, 0x10, 0x56, 0x44, 0x10, 0x6e, 0x8b, 0x51, 0x66, 0xbf, 0x94, 0x14, 0xdb, + 0xd8, 0xef, 0x07, 0x68, 0xde, 0x27, 0xa0, 0xf9, 0xe3, 0xc9, 0xd9, 0x4a, 0x06, 0xe9, 0xca, 0x10, + 0x88, 0x9e, 0x04, 0x05, 0x3c, 0x26, 0x95, 0xea, 0xe5, 0xf3, 0x7a, 0xa3, 0x5c, 0x39, 0x5f, 0xae, + 0xeb, 0x05, 0x04, 0x5f, 0xa8, 0x82, 0x19, 0xca, 0x9a, 0x81, 0xf6, 0x9c, 0x4b, 0x92, 0xbd, 0xde, + 0x17, 0x13, 0x1a, 0x0b, 0x7c, 0x09, 0x11, 0x2d, 0xe3, 0x17, 0x12, 0x18, 0x0b, 0x31, 0xe4, 0x1e, + 0x4e, 0xbd, 0xd5, 0x81, 0x66, 0xb0, 0xd5, 0xa7, 0xb5, 0xf4, 0xed, 0xad, 0x5e, 0x94, 0x05, 0x80, + 0x56, 0xf2, 0xbc, 0x85, 0x2e, 0xc3, 0xb5, 0x10, 0x13, 0x41, 0x6d, 0x33, 0x03, 0xd5, 0x56, 0xe9, + 0xa7, 0xb6, 0xef, 0xe1, 0xc7, 0xac, 0x05, 0x11, 0xbd, 0x5b, 0x22, 0xc5, 0x8d, 0x39, 0x89, 0x9e, + 0x1d, 0xfa, 0x8a, 0xa2, 0x88, 0x56, 0xe7, 0x35, 0x60, 0x8a, 0x3c, 0x56, 0xcc, 0x1d, 0xc4, 0xda, + 0x50, 0x98, 0xa0, 0x9d, 0x03, 0x33, 0x34, 0x63, 0xd3, 0xb1, 0x71, 0x7d, 0xb2, 0x24, 0x83, 0x90, + 0x86, 0x41, 0x6c, 0xba, 0xc8, 0xf4, 0x1c, 0x97, 0xd0, 0xc8, 0x51, 0x10, 0xb9, 0x24, 0xf8, 0xf5, + 0xa0, 0x15, 0xea, 0x82, 0xe6, 0x3c, 0x3e, 0x49, 0x55, 0x92, 0xe9, 0xcd, 0xde, 0x70, 0xed, 0x8f, + 0xb6, 0xba, 0x06, 0x46, 0x7b, 0x89, 0x4c, 0xed, 0x90, 0x76, 0x1a, 0x68, 0x2c, 0x15, 0xe7, 0x2d, + 0x55, 0x2b, 0x75, 0xbd, 0x52, 0x2f, 0x6c, 0xf6, 0xd5, 0xa8, 0x2d, 0xf8, 0xea, 0x2c, 0xc8, 0x3e, + 0xc5, 0xb1, 0x6c, 0xf8, 0xcc, 0x8c, 0xa0, 0x12, 0x36, 0xf2, 0x2e, 0x3b, 0xee, 0xa5, 0xa0, 0xa1, + 0x86, 0x09, 0xf1, 0xd8, 0x84, 0xaa, 0xa4, 0x0e, 0x54, 0xa5, 0x6c, 0x3f, 0x55, 0xfa, 0x65, 0x5e, + 0x95, 0xee, 0x12, 0x55, 0xe9, 0xc6, 0x3e, 0xf2, 0xc7, 0xcc, 0x47, 0x74, 0x00, 0x1f, 0x0d, 0x3a, + 0x80, 0x7b, 0x04, 0x18, 0x1f, 0x23, 0x47, 0x26, 0x19, 0x80, 0x5f, 0x48, 0xb5, 0xe1, 0xf7, 0x83, + 0x7a, 0x2b, 0x02, 0xea, 0xed, 0x3e, 0x7d, 0x82, 0x75, 0xb0, 0xeb, 0x78, 0xe0, 0x60, 0x37, 0x71, + 0x49, 0x3b, 0x05, 0x4e, 0x2c, 0x96, 0x97, 0x96, 0x74, 0x43, 0xaf, 0xd4, 0x1b, 0x15, 0xbd, 0x7e, + 0xa1, 0x6a, 0xdc, 0x57, 0x68, 0xc3, 0x57, 0xa9, 0x00, 0x60, 0x09, 0x95, 0x4c, 0xbb, 0x89, 0xda, + 0x72, 0x3d, 0xfa, 0xff, 0x50, 0x92, 0xf5, 0x09, 0x21, 0xfd, 0x08, 0x38, 0x5f, 0xaa, 0xc8, 0xb7, + 0xca, 0x48, 0x62, 0xc9, 0x40, 0x7d, 0xe3, 0xc3, 0xc1, 0xf6, 0xbc, 0x02, 0x1c, 0xf7, 0xe9, 0xb1, + 0xec, 0xfd, 0xa7, 0x7d, 0x6f, 0xcd, 0x82, 0x39, 0x06, 0x8b, 0x3f, 0x8f, 0x7f, 0x28, 0x23, 0x33, + 0x91, 0x87, 0x60, 0x92, 0x4d, 0xdb, 0xfd, 0xee, 0x3d, 0x78, 0xd7, 0x96, 0xc1, 0x74, 0x07, 0xb9, + 0x3b, 0x56, 0xb7, 0x6b, 0x39, 0x36, 0x5d, 0x90, 0x9b, 0xbb, 0xed, 0x51, 0x81, 0xc4, 0xc9, 0xda, + 0xe5, 0xfc, 0xba, 0xe9, 0x7a, 0x56, 0xd3, 0xea, 0x98, 0xb6, 0xb7, 0x1e, 0x66, 0x36, 0xf8, 0x3f, + 0xe1, 0x0b, 0x12, 0x4e, 0x6b, 0xc4, 0x9a, 0x44, 0xa8, 0xc4, 0xef, 0x26, 0x98, 0x92, 0xc4, 0x12, + 0x4c, 0xa6, 0x16, 0x1f, 0x49, 0x55, 0x2d, 0xfa, 0xe0, 0xbd, 0xa5, 0x5d, 0x05, 0x4e, 0x95, 0x2b, + 0xa5, 0xaa, 0x61, 0xe8, 0xa5, 0x7a, 0x63, 0x5d, 0x37, 0xd6, 0xca, 0xb5, 0x5a, 0xb9, 0x5a, 0xa9, + 0x1d, 0xa6, 0xb5, 0xc3, 0x8f, 0xab, 0x81, 0xc6, 0x2c, 0xa2, 0x66, 0xdb, 0xb2, 0x11, 0xbc, 0xe7, + 0x90, 0x0a, 0x23, 0xae, 0xfa, 0xc8, 0xe3, 0xcc, 0xca, 0x8f, 0xc0, 0xf9, 0x95, 0xc9, 0x71, 0xee, + 0x4f, 0xf0, 0xdf, 0x71, 0xf3, 0xff, 0xa2, 0x0a, 0x4e, 0x70, 0x0d, 0xd1, 0x40, 0x3b, 0x23, 0x5b, + 0xc9, 0xfb, 0x39, 0xbe, 0xed, 0x96, 0x45, 0x4c, 0xfb, 0x59, 0xd3, 0x07, 0xd8, 0x88, 0x80, 0xf5, + 0x8d, 0x01, 0xac, 0xab, 0x02, 0xac, 0x4f, 0x1c, 0x82, 0x66, 0x32, 0x64, 0x7f, 0x3b, 0x55, 0x64, + 0xaf, 0x02, 0xa7, 0xd6, 0x8b, 0x46, 0xbd, 0x5c, 0x2a, 0xaf, 0x17, 0xf1, 0x38, 0xca, 0x0d, 0xd9, + 0x11, 0xe6, 0xba, 0x08, 0x7a, 0x5f, 0x7c, 0x3f, 0x90, 0x05, 0xd7, 0xf4, 0xef, 0x68, 0x4b, 0xdb, + 0xa6, 0xbd, 0x85, 0xa0, 0x25, 0x03, 0xf5, 0x22, 0x98, 0x68, 0x92, 0xec, 0x14, 0x67, 0x7e, 0xeb, + 0x26, 0xa6, 0x2f, 0xa7, 0x25, 0x18, 0xfe, 0xaf, 0xf0, 0x1d, 0xbc, 0x42, 0xd4, 0x45, 0x85, 0x78, + 0x72, 0x3c, 0x78, 0x07, 0xf8, 0x8e, 0xd0, 0x8d, 0x4f, 0x06, 0xba, 0x71, 0x41, 0xd0, 0x8d, 0xd2, + 0xe1, 0xc8, 0x27, 0x53, 0x93, 0x3f, 0x7e, 0x38, 0x74, 0x00, 0x91, 0xda, 0x64, 0x45, 0x8f, 0x0a, + 0x7d, 0xbb, 0xfb, 0x97, 0xab, 0x20, 0xbf, 0x88, 0xda, 0x48, 0x76, 0x25, 0xf2, 0x9b, 0x8a, 0xec, + 0x86, 0x08, 0x85, 0x81, 0xd2, 0x8e, 0x5e, 0x1d, 0xf1, 0xac, 0x1d, 0xd4, 0xf5, 0xcc, 0x9d, 0x0e, + 0x11, 0xb5, 0x6a, 0x84, 0x09, 0xf0, 0xe7, 0x15, 0x99, 0xed, 0x92, 0x98, 0x62, 0xfe, 0x7d, 0xac, + 0x29, 0x7e, 0x65, 0x0e, 0xe4, 0x2f, 0x98, 0xed, 0x36, 0xf2, 0xe0, 0x57, 0x15, 0x90, 0x2f, 0xe1, + 0x39, 0x29, 0x82, 0x8f, 0x09, 0xc1, 0x82, 0x60, 0xd2, 0x75, 0x1c, 0x6f, 0xdd, 0xf4, 0xb6, 0x19, + 0x5a, 0xc1, 0x3b, 0xdb, 0xa6, 0x7d, 0x13, 0x0f, 0xda, 0x3d, 0x22, 0x68, 0x3f, 0x22, 0x48, 0x93, + 0x16, 0x34, 0x4f, 0x0b, 0x89, 0x40, 0x0d, 0x82, 0xc9, 0x1d, 0x1b, 0xed, 0x38, 0xb6, 0xd5, 0xf4, + 0x47, 0x7a, 0xff, 0x1d, 0x7e, 0x30, 0x98, 0x25, 0x2f, 0x08, 0x98, 0xcd, 0x4b, 0x97, 0x92, 0x0c, + 0xb4, 0xda, 0x10, 0x98, 0x5d, 0x0b, 0xae, 0xa6, 0x10, 0x34, 0xea, 0xd5, 0x46, 0xc9, 0xd0, 0x8b, + 0x75, 0xbd, 0xb1, 0x5a, 0x2d, 0x15, 0x57, 0x1b, 0x86, 0xbe, 0x5e, 0x2d, 0x20, 0xf8, 0xf7, 0x0a, + 0x16, 0x6e, 0xd3, 0xd9, 0x43, 0x2e, 0x5c, 0x96, 0x92, 0x73, 0x9c, 0x4c, 0x18, 0x06, 0xbf, 0x2c, + 0xbd, 0x55, 0xce, 0xa4, 0xc3, 0x38, 0x88, 0xe8, 0x0a, 0x3f, 0x24, 0xb5, 0xed, 0x1d, 0x4b, 0xea, + 0x61, 0x20, 0xe9, 0xff, 0xa9, 0x80, 0x89, 0x92, 0x63, 0xef, 0x21, 0xd7, 0xe3, 0xad, 0x4c, 0x5e, + 0x9a, 0x19, 0x51, 0x9a, 0xb8, 0x6b, 0x42, 0xb6, 0xe7, 0x3a, 0x1d, 0xdf, 0xcc, 0xf4, 0x5f, 0xe1, + 0xeb, 0x93, 0x4a, 0x98, 0x95, 0x1c, 0xbd, 0xdc, 0xd4, 0xbf, 0x20, 0x81, 0x3d, 0xb5, 0xa7, 0x01, + 0xbc, 0x2a, 0x09, 0x2e, 0xfd, 0x19, 0x48, 0x7f, 0x97, 0xf7, 0x4b, 0x2a, 0x98, 0xa5, 0x8d, 0xaf, + 0x86, 0xc8, 0xb8, 0x08, 0xab, 0xfc, 0x42, 0x4f, 0x8f, 0xf0, 0x57, 0x8e, 0x09, 0xe2, 0xcf, 0x9b, + 0x9d, 0x4e, 0xb0, 0xe8, 0xb7, 0x72, 0xcc, 0x60, 0xef, 0x54, 0xcd, 0x17, 0xf2, 0x20, 0x6b, 0xee, + 0x7a, 0xdb, 0xf0, 0xfb, 0xd2, 0x26, 0xbf, 0xd0, 0x19, 0x30, 0x7e, 0x22, 0x20, 0x39, 0x09, 0x72, + 0x9e, 0x73, 0x09, 0xf9, 0x72, 0xa0, 0x2f, 0x18, 0x0e, 0xb3, 0xd3, 0xa9, 0x93, 0x0f, 0x0c, 0x0e, + 0xff, 0x1d, 0x8f, 0x30, 0x66, 0xb3, 0xe9, 0xec, 0xda, 0x5e, 0xd9, 0x5f, 0xf8, 0x0b, 0x13, 0xe0, + 0xe7, 0x33, 0x32, 0x53, 0x08, 0x09, 0x06, 0x93, 0x41, 0x76, 0x71, 0x88, 0xa6, 0x34, 0x0f, 0x6e, + 0x2e, 0xae, 0xaf, 0x37, 0xea, 0xd5, 0xfb, 0xf4, 0x4a, 0x38, 0xdc, 0x37, 0xca, 0x95, 0x46, 0x7d, + 0x45, 0x6f, 0x94, 0x36, 0x0c, 0xb2, 0x3a, 0x53, 0x2c, 0x95, 0xaa, 0x1b, 0x95, 0x7a, 0x01, 0xc1, + 0x37, 0x2b, 0x60, 0xa6, 0xd4, 0x76, 0xba, 0x01, 0xc2, 0xd7, 0x86, 0x08, 0x07, 0x62, 0xcc, 0x70, + 0x62, 0x84, 0xff, 0x9a, 0x91, 0xdd, 0xea, 0xf5, 0x05, 0xc2, 0x91, 0x8f, 0xe8, 0xa5, 0x5e, 0x2f, + 0xb5, 0xd5, 0x3b, 0x98, 0x5e, 0xfa, 0x4d, 0xe2, 0xd3, 0x77, 0x82, 0x89, 0x22, 0x55, 0x0c, 0xf8, + 0x37, 0x19, 0x90, 0x2f, 0x39, 0xf6, 0xa6, 0xb5, 0xa5, 0xdd, 0x08, 0xe6, 0x90, 0x6d, 0x5e, 0x6c, + 0xa3, 0x45, 0xd3, 0x33, 0xf7, 0x2c, 0x74, 0x99, 0x54, 0x60, 0xd2, 0xe8, 0x49, 0xc5, 0x4c, 0xb1, + 0x14, 0x74, 0x71, 0x77, 0x8b, 0x30, 0x35, 0x69, 0xf0, 0x49, 0xda, 0x13, 0xc1, 0x95, 0xf4, 0x75, + 0xdd, 0x45, 0x2e, 0x6a, 0x23, 0xb3, 0x8b, 0xb0, 0x31, 0x6a, 0xa3, 0x36, 0x51, 0xda, 0x49, 0x23, + 0xea, 0xb3, 0x76, 0x0e, 0xcc, 0xd0, 0x4f, 0xc4, 0xd4, 0xe9, 0x12, 0x35, 0x9e, 0x34, 0x84, 0x34, + 0xed, 0xb1, 0x20, 0x87, 0x1e, 0xf4, 0x5c, 0xf3, 0x4c, 0x8b, 0xe0, 0x75, 0xe5, 0x3c, 0xf5, 0xf5, + 0x9a, 0xf7, 0x7d, 0xbd, 0xe6, 0x6b, 0xc4, 0x13, 0xcc, 0xa0, 0xb9, 0xe0, 0x6f, 0x4e, 0x06, 0x86, + 0xc4, 0xbf, 0x29, 0xa1, 0x62, 0x68, 0x20, 0x6b, 0x9b, 0x3b, 0x88, 0xe9, 0x05, 0x79, 0xd6, 0x6e, + 0x06, 0xc7, 0xcd, 0x3d, 0xd3, 0x33, 0xdd, 0x55, 0xa7, 0x69, 0xb6, 0xc9, 0xe0, 0xe7, 0xb7, 0xfc, + 0xde, 0x0f, 0x64, 0x1d, 0xde, 0x73, 0x5c, 0x44, 0x72, 0xf9, 0xeb, 0xf0, 0x7e, 0x02, 0xa6, 0x6e, + 0x35, 0x1d, 0x9b, 0xf0, 0xaf, 0x1a, 0xe4, 0x19, 0x4b, 0xa5, 0x65, 0x75, 0x71, 0x45, 0x08, 0x95, + 0x0a, 0x5d, 0x50, 0xae, 0xed, 0xdb, 0x4d, 0xb2, 0x06, 0x3f, 0x69, 0x44, 0x7d, 0xd6, 0x16, 0xc0, + 0x34, 0x5b, 0x7e, 0x5e, 0xc3, 0x7a, 0x95, 0x27, 0x7a, 0x75, 0x9d, 0xe8, 0x49, 0x43, 0xf1, 0x9c, + 0xaf, 0x84, 0xf9, 0x0c, 0xfe, 0x27, 0xed, 0x5e, 0x70, 0x35, 0x7b, 0x2d, 0xed, 0x76, 0x3d, 0x67, + 0x87, 0x82, 0xbe, 0x64, 0xb5, 0x69, 0x0d, 0x26, 0x48, 0x0d, 0xe2, 0xb2, 0x68, 0xb7, 0x81, 0x93, + 0x1d, 0x17, 0x6d, 0x22, 0xf7, 0x7e, 0x73, 0x67, 0xf7, 0xc1, 0xba, 0x6b, 0xda, 0xdd, 0x8e, 0xe3, + 0x7a, 0x67, 0x26, 0x09, 0xf3, 0x7d, 0xbf, 0xb1, 0x8e, 0x72, 0x12, 0xe4, 0xa9, 0xf8, 0xe0, 0xf3, + 0x73, 0xd2, 0x4e, 0x74, 0xac, 0x42, 0xb1, 0xe6, 0xd9, 0xe3, 0xc0, 0x04, 0xeb, 0xe1, 0x08, 0x50, + 0xd3, 0xb7, 0x9d, 0xee, 0x99, 0xcd, 0x31, 0x2a, 0x86, 0x9f, 0x4d, 0xbb, 0x1d, 0xe4, 0x9b, 0xa4, + 0x5a, 0x04, 0xb3, 0xe9, 0xdb, 0xae, 0xee, 0x5f, 0x28, 0xc9, 0x62, 0xb0, 0xac, 0xf0, 0x2f, 0x55, + 0x29, 0xbf, 0xbb, 0x38, 0x8e, 0x93, 0xb5, 0xea, 0xaf, 0x2b, 0x43, 0x74, 0x9b, 0xb7, 0x80, 0x9b, + 0x58, 0x9f, 0xc8, 0xec, 0x8f, 0xc5, 0xc6, 0xc2, 0x86, 0x6f, 0x82, 0x63, 0xab, 0xa4, 0x56, 0x2f, + 0x1a, 0x78, 0xfe, 0xb4, 0x88, 0x4d, 0xf7, 0x9b, 0xc1, 0x8d, 0x03, 0x72, 0xeb, 0xf5, 0x46, 0xa5, + 0xb8, 0xa6, 0x17, 0x36, 0x45, 0xdb, 0xa6, 0x56, 0xaf, 0xae, 0x37, 0x8c, 0x8d, 0x4a, 0xa5, 0x5c, + 0x59, 0xa6, 0xc4, 0xb0, 0x49, 0x78, 0x3a, 0xcc, 0x70, 0xc1, 0x28, 0xd7, 0xf5, 0x46, 0xa9, 0x5a, + 0x59, 0x2a, 0x2f, 0x17, 0xac, 0x41, 0x86, 0xd1, 0x03, 0xda, 0x75, 0xe0, 0x1a, 0x81, 0x93, 0x72, + 0xb5, 0x82, 0xe7, 0x13, 0xa5, 0x62, 0xa5, 0xa4, 0xe3, 0xc9, 0xc3, 0x25, 0x0d, 0x82, 0x53, 0x94, + 0x5c, 0x63, 0xa9, 0xbc, 0xca, 0x6f, 0x01, 0x7c, 0x2c, 0xa3, 0x9d, 0x01, 0x57, 0xf0, 0xdf, 0xca, + 0x95, 0xf3, 0xc5, 0xd5, 0xf2, 0x62, 0xe1, 0x8f, 0x32, 0xda, 0x0d, 0xe0, 0x5a, 0xe1, 0x2f, 0xba, + 0x9a, 0xdf, 0x28, 0x2f, 0x36, 0xd6, 0xca, 0xb5, 0xb5, 0x62, 0xbd, 0xb4, 0x52, 0xf8, 0x38, 0x99, + 0x2f, 0x04, 0x06, 0x30, 0xe7, 0x0c, 0xf7, 0x22, 0x7e, 0x4c, 0x2f, 0x8a, 0x8a, 0xfa, 0x98, 0xbe, + 0xb0, 0xc7, 0xdb, 0xb0, 0x1f, 0x09, 0x46, 0x87, 0x45, 0x41, 0x85, 0x1e, 0x97, 0x80, 0x56, 0x32, + 0x1d, 0xaa, 0x0f, 0xa1, 0x42, 0xd7, 0x81, 0x6b, 0x2a, 0x3a, 0x45, 0xca, 0xd0, 0x4b, 0xd5, 0xf3, + 0xba, 0xd1, 0xb8, 0x50, 0x5c, 0x5d, 0xd5, 0xeb, 0x8d, 0xa5, 0xb2, 0x51, 0xab, 0x17, 0x36, 0xe1, + 0xb7, 0x94, 0x60, 0x0e, 0xcd, 0x49, 0xeb, 0x6f, 0x94, 0xa4, 0xcd, 0x3a, 0x76, 0xae, 0xfc, 0xa3, + 0x20, 0xdf, 0xf5, 0x4c, 0x6f, 0xb7, 0xcb, 0x5a, 0xf5, 0x23, 0xfa, 0xb7, 0xea, 0xf9, 0x1a, 0xc9, + 0x64, 0xb0, 0xcc, 0xf0, 0x2f, 0x33, 0x49, 0x9a, 0xe9, 0x08, 0xa6, 0xd1, 0xd6, 0x10, 0x22, 0x3e, + 0x0b, 0xa0, 0xaf, 0xed, 0xe5, 0x5a, 0xa3, 0xb8, 0x6a, 0xe8, 0xc5, 0xc5, 0xfb, 0x83, 0xc9, 0x33, + 0xd2, 0x4e, 0x81, 0x13, 0x1b, 0x15, 0x3c, 0x1d, 0x26, 0xcd, 0xa5, 0x5a, 0xa9, 0xe8, 0x25, 0x2c, + 0xf7, 0x9f, 0x27, 0x4b, 0xd5, 0xd8, 0x82, 0x26, 0x7c, 0x63, 0x2b, 0x87, 0x93, 0xff, 0xd7, 0xa4, 0x3d, 0x3a, 0x42, 0x0d, 0xe3, 0x69, 0x8d, 0x16, 0x87, 0xcf, 0x4b, 0x39, 0x71, 0x48, 0x71, 0x92, - 0x0c, 0x8f, 0x7f, 0x3f, 0x04, 0x1e, 0xa7, 0xc0, 0x09, 0x1e, 0x0f, 0xe2, 0xcc, 0x11, 0x0d, 0xc3, - 0x97, 0x27, 0x41, 0xa1, 0x8e, 0x3a, 0xa8, 0xe5, 0xc1, 0xb7, 0x73, 0xc6, 0xc4, 0x1c, 0xc8, 0x06, - 0xce, 0x03, 0x59, 0xb3, 0x2d, 0x4c, 0x9f, 0xb3, 0x3d, 0xd3, 0xe7, 0x18, 0x33, 0x40, 0x49, 0x64, - 0x06, 0xe4, 0x52, 0x30, 0x03, 0xf2, 0xc3, 0x9b, 0x01, 0x85, 0x41, 0x66, 0x00, 0x7c, 0x5d, 0x21, - 0x69, 0x2f, 0x41, 0x45, 0x7d, 0xb4, 0x83, 0xff, 0xff, 0xc8, 0x25, 0xe9, 0x55, 0xfa, 0x72, 0x9c, - 0x4c, 0x8b, 0x7f, 0xa0, 0xa4, 0xb0, 0xfc, 0xa0, 0x5e, 0x0f, 0xae, 0x0d, 0xdf, 0x9b, 0xda, 0x33, - 0x2a, 0xf5, 0x46, 0x9d, 0x8c, 0xf8, 0xe5, 0x9a, 0xae, 0x6f, 0xac, 0xd3, 0x95, 0xbb, 0xd3, 0x40, - 0x0d, 0xa9, 0xe8, 0x1b, 0x55, 0x3a, 0xbe, 0x6f, 0x89, 0xd4, 0x97, 0x2a, 0xd5, 0xc5, 0x66, 0xd0, - 0x66, 0xaa, 0x4b, 0xb5, 0xe2, 0x36, 0x9e, 0xb2, 0x71, 0xd4, 0xf1, 0x00, 0xcd, 0x4a, 0x28, 0x55, - 0x17, 0x9b, 0x6b, 0x55, 0x6d, 0xad, 0x56, 0xad, 0x94, 0x49, 0x7a, 0x5d, 0x6b, 0x14, 0x4d, 0x3c, - 0xd0, 0xf4, 0x58, 0x14, 0x75, 0xad, 0xa4, 0x97, 0x57, 0x34, 0x9d, 0x16, 0xf9, 0x80, 0x7a, 0x23, - 0x38, 0x57, 0xaa, 0xd6, 0x1a, 0x38, 0xa5, 0x54, 0xbd, 0xbf, 0x71, 0xff, 0xba, 0xd6, 0x5c, 0xd7, - 0x6b, 0x65, 0xad, 0x5e, 0xc7, 0xed, 0x94, 0xd9, 0x1f, 0xc5, 0x8e, 0xfa, 0x54, 0x70, 0x27, 0xc7, - 0x9a, 0xd6, 0x20, 0xdb, 0x44, 0x6b, 0x35, 0xe2, 0x29, 0xb0, 0xa8, 0x35, 0x57, 0x4a, 0xf5, 0x66, - 0xa5, 0x5a, 0xae, 0xad, 0xad, 0x97, 0x1a, 0x15, 0xdc, 0x9c, 0xd7, 0xf5, 0x5a, 0xa3, 0xd6, 0x3c, - 0xaf, 0xe9, 0xf5, 0x4a, 0xad, 0x5a, 0xb4, 0x70, 0x95, 0xb9, 0xf6, 0xef, 0xf7, 0xc3, 0xb6, 0x7a, - 0x0d, 0x38, 0xe3, 0xa7, 0xaf, 0xd6, 0xb0, 0xa0, 0x39, 0x8b, 0xa4, 0x9b, 0xaa, 0x45, 0xf2, 0xcf, - 0x59, 0x90, 0xab, 0x7b, 0x76, 0x17, 0xfe, 0x58, 0xd8, 0xc1, 0x9c, 0x05, 0xc0, 0x21, 0xbb, 0x3e, - 0x78, 0x16, 0xc6, 0xe6, 0x65, 0x5c, 0x0a, 0xfc, 0x43, 0xe9, 0xa5, 0xea, 0xb0, 0xcf, 0xb6, 0xbb, - 0x11, 0xb6, 0xca, 0xf7, 0xe4, 0x7c, 0xf7, 0xa3, 0x09, 0x25, 0xd3, 0xf7, 0x9f, 0x1f, 0x66, 0x31, - 0x1a, 0x82, 0xd3, 0x1c, 0x6c, 0x58, 0xfe, 0xbe, 0x4a, 0x20, 0xf5, 0x4a, 0x70, 0x45, 0x8f, 0x72, - 0x11, 0x9d, 0xda, 0x54, 0x1f, 0x09, 0x1e, 0xc1, 0xa9, 0xb7, 0xb6, 0x56, 0x3b, 0xaf, 0x05, 0x8a, - 0xbc, 0x58, 0x6a, 0x94, 0x8a, 0x5b, 0xf0, 0x33, 0x0a, 0xc8, 0xad, 0xd9, 0x7b, 0xbd, 0x3b, 0x04, - 0x16, 0xba, 0xcc, 0xad, 0x85, 0xfa, 0xaf, 0xa2, 0xaf, 0xb2, 0x94, 0xd8, 0xd7, 0xa2, 0x77, 0x03, - 0x3f, 0x9f, 0x4d, 0x22, 0xf6, 0xb5, 0xc3, 0x6e, 0x01, 0xfe, 0xc3, 0x30, 0x62, 0x8f, 0x10, 0x2d, - 0x52, 0xcf, 0x81, 0xb3, 0xe1, 0x87, 0xca, 0xa2, 0x56, 0x6d, 0x54, 0x96, 0xee, 0x0f, 0x85, 0x5b, - 0xd1, 0xa5, 0xc4, 0x3f, 0xa8, 0x1b, 0x8b, 0x9f, 0x69, 0x9c, 0x01, 0x27, 0xc3, 0x6f, 0xcb, 0x5a, - 0xc3, 0xff, 0xf2, 0x00, 0x7c, 0x4e, 0x1e, 0xcc, 0xd0, 0x6e, 0x7d, 0xa3, 0xdb, 0x36, 0x3c, 0x04, - 0x6f, 0x0f, 0xd1, 0xbd, 0x09, 0x1c, 0xaf, 0xac, 0x2f, 0xd5, 0xeb, 0x9e, 0xed, 0x18, 0x5b, 0xa8, - 0xd4, 0x6e, 0x3b, 0x4c, 0x5a, 0xbd, 0xc9, 0xf0, 0x3d, 0xd2, 0xeb, 0x7c, 0xe2, 0x50, 0x42, 0xcb, - 0x8c, 0x40, 0xfd, 0x4b, 0x52, 0xeb, 0x72, 0x12, 0x04, 0x93, 0xa1, 0xff, 0xc0, 0x88, 0xdb, 0x5c, - 0x34, 0x2e, 0x9b, 0xe7, 0x9e, 0x97, 0x05, 0x53, 0x0d, 0x73, 0x07, 0x3d, 0xd3, 0xb6, 0x90, 0xab, - 0x4e, 0x00, 0x65, 0x79, 0xad, 0x51, 0x3c, 0x86, 0x1f, 0xb0, 0x51, 0x95, 0x21, 0x0f, 0x1a, 0x2e, - 0x00, 0x3f, 0x94, 0x1a, 0x45, 0x05, 0x3f, 0xac, 0x69, 0x8d, 0x62, 0x0e, 0x3f, 0x54, 0xb5, 0x46, - 0x31, 0x8f, 0x1f, 0xd6, 0x57, 0x1b, 0xc5, 0x02, 0x7e, 0xa8, 0xd4, 0x1b, 0xc5, 0x09, 0xfc, 0xb0, - 0x50, 0x6f, 0x14, 0x27, 0xf1, 0xc3, 0xf9, 0x7a, 0xa3, 0x38, 0x85, 0x1f, 0xca, 0x8d, 0x46, 0x11, - 0xe0, 0x87, 0xa7, 0xd5, 0x1b, 0xc5, 0x69, 0xfc, 0x50, 0x2a, 0x37, 0x8a, 0x33, 0xe4, 0x41, 0x6b, - 0x14, 0x67, 0xf1, 0x43, 0xbd, 0xde, 0x28, 0xce, 0x11, 0xca, 0xf5, 0x46, 0xf1, 0x38, 0x29, 0xab, - 0xd2, 0x28, 0x16, 0xf1, 0xc3, 0x4a, 0xbd, 0x51, 0x3c, 0x41, 0x32, 0xd7, 0x1b, 0x45, 0x95, 0x14, - 0x5a, 0x6f, 0x14, 0xaf, 0x20, 0x79, 0xea, 0x8d, 0xe2, 0x49, 0x52, 0x44, 0xbd, 0x51, 0x3c, 0x45, - 0xd8, 0xd0, 0x1a, 0xc5, 0xd3, 0x24, 0x8f, 0xde, 0x28, 0x5e, 0x49, 0x3e, 0x55, 0x1b, 0xc5, 0x33, - 0x84, 0x31, 0xad, 0x51, 0xbc, 0x8a, 0x3c, 0xe8, 0x8d, 0x22, 0x24, 0x9f, 0x4a, 0x8d, 0xe2, 0xd5, - 0xf0, 0x11, 0x60, 0x6a, 0x19, 0x79, 0x14, 0x44, 0x58, 0x04, 0xca, 0x32, 0xf2, 0x78, 0x33, 0xfe, - 0x2b, 0x0a, 0xb8, 0x92, 0x4d, 0xfd, 0x96, 0x1c, 0x7b, 0x67, 0x15, 0x6d, 0x19, 0xad, 0x7d, 0xed, - 0x41, 0x6c, 0x42, 0xc1, 0xba, 0xb0, 0x74, 0xd5, 0x0d, 0x3b, 0x23, 0xf2, 0x1c, 0x6b, 0x71, 0xfa, - 0x8b, 0x51, 0x4a, 0xb8, 0x18, 0xc5, 0x2c, 0xb2, 0x7f, 0xe2, 0x35, 0x5a, 0x58, 0x3f, 0xce, 0xf4, - 0xac, 0x1f, 0xe3, 0x66, 0xd2, 0x45, 0x8e, 0x6b, 0x5b, 0x46, 0xa7, 0xce, 0xb6, 0x4b, 0xe9, 0xaa, - 0x57, 0x6f, 0xb2, 0xfa, 0x74, 0xbf, 0x65, 0x50, 0xab, 0xec, 0x29, 0x71, 0x33, 0xdc, 0xde, 0x6a, - 0x46, 0x34, 0x92, 0x4f, 0x04, 0x8d, 0xa4, 0x21, 0x34, 0x92, 0x7b, 0x0f, 0x41, 0x3b, 0x59, 0x7b, - 0xa9, 0x0c, 0x37, 0xb5, 0x08, 0x9d, 0x09, 0xfd, 0xe5, 0x6a, 0x05, 0x7e, 0x26, 0x0b, 0x4e, 0x6b, - 0x56, 0x3f, 0x0b, 0x9f, 0xd7, 0x85, 0xb7, 0xf2, 0xd0, 0xac, 0x8b, 0x22, 0xbd, 0xb3, 0x6f, 0xb5, - 0xfb, 0xd3, 0x8c, 0x90, 0xe8, 0x27, 0x03, 0x89, 0xd6, 0x05, 0x89, 0xde, 0x33, 0x3c, 0xe9, 0x64, - 0x02, 0xad, 0x8e, 0xb4, 0x03, 0xca, 0xc1, 0x6f, 0xe4, 0xc0, 0x23, 0xa8, 0xc7, 0x03, 0xe3, 0x90, - 0xb6, 0xb2, 0x92, 0xd5, 0xd6, 0x91, 0xeb, 0x19, 0x8e, 0x27, 0x9c, 0x42, 0xed, 0x99, 0x4a, 0x65, - 0x52, 0x98, 0x4a, 0x65, 0x07, 0x4e, 0xa5, 0xe0, 0xbb, 0x79, 0xf3, 0xe1, 0x82, 0x88, 0x71, 0xa9, - 0x7f, 0xff, 0x1f, 0x57, 0xc3, 0x28, 0xa8, 0x03, 0xbb, 0xe2, 0x27, 0x04, 0xa8, 0x97, 0x0e, 0x5d, - 0x42, 0x32, 0xc4, 0xff, 0x70, 0xb4, 0x76, 0x5e, 0x8e, 0xff, 0x26, 0x1a, 0x25, 0xc5, 0x76, 0xaa, - 0x06, 0xfa, 0xa7, 0x26, 0xc0, 0x14, 0x69, 0x0b, 0xab, 0xa6, 0x75, 0x09, 0xbe, 0x46, 0x01, 0x33, - 0x55, 0x74, 0xb9, 0xbc, 0x6d, 0x74, 0x3a, 0xc8, 0xda, 0x42, 0xbc, 0xd9, 0x7e, 0x06, 0x4c, 0x18, - 0xdd, 0x6e, 0x35, 0xdc, 0x67, 0xf0, 0x5f, 0x59, 0xff, 0xfb, 0xf5, 0xbe, 0x8d, 0x3c, 0x13, 0xd3, - 0xc8, 0x83, 0x72, 0xe7, 0xf9, 0x32, 0x23, 0x66, 0xc8, 0xd7, 0x81, 0xe9, 0x96, 0x9f, 0x25, 0xf0, - 0x56, 0xe7, 0x93, 0xe0, 0xd7, 0x12, 0x75, 0x03, 0x52, 0x85, 0x27, 0x53, 0x0a, 0x34, 0x62, 0x3b, - 0xe4, 0x14, 0x38, 0xd1, 0xa8, 0xd5, 0x9a, 0x6b, 0xa5, 0xea, 0xfd, 0xe1, 0x29, 0xd1, 0x4d, 0xf8, - 0xf2, 0x1c, 0x98, 0xab, 0xdb, 0x9d, 0x3d, 0x14, 0xc2, 0x54, 0x09, 0x61, 0xea, 0x91, 0x53, 0xe6, - 0x80, 0x9c, 0xd4, 0xd3, 0xa0, 0x60, 0x58, 0xee, 0x65, 0xe4, 0xdb, 0x86, 0xec, 0x8d, 0xc1, 0xf8, - 0x7b, 0x7c, 0x3b, 0xd6, 0x45, 0x18, 0xef, 0x1a, 0x20, 0x49, 0x91, 0xab, 0x08, 0x20, 0xcf, 0x81, - 0x19, 0x97, 0x6e, 0x16, 0x36, 0xb8, 0x3d, 0x61, 0x21, 0x8d, 0xb0, 0x48, 0x77, 0xab, 0x15, 0xc6, - 0x22, 0x79, 0x83, 0xaf, 0x09, 0x9a, 0xff, 0x86, 0x00, 0x71, 0xe9, 0x30, 0x8c, 0x25, 0x03, 0xf9, - 0x95, 0xa3, 0x9e, 0xe1, 0x9d, 0x01, 0x27, 0x59, 0xab, 0x6d, 0x96, 0x57, 0x4a, 0xab, 0xab, 0x5a, - 0x75, 0x59, 0x6b, 0x56, 0x16, 0xe9, 0x56, 0x45, 0x98, 0x52, 0x6a, 0x34, 0xb4, 0xb5, 0xf5, 0x46, - 0xbd, 0xa9, 0x3d, 0xa3, 0xac, 0x69, 0x8b, 0xc4, 0x11, 0x89, 0x9c, 0x24, 0xf0, 0x5d, 0xc6, 0x4a, - 0xd5, 0xfa, 0x05, 0x4d, 0x2f, 0x6e, 0x9f, 0x2b, 0x81, 0x69, 0xae, 0x9f, 0xc7, 0xdc, 0x2d, 0xa2, - 0x4d, 0x63, 0xb7, 0xc3, 0x6c, 0xb5, 0xe2, 0x31, 0xcc, 0x1d, 0x91, 0x4d, 0xcd, 0xea, 0xec, 0x17, - 0x33, 0x6a, 0x11, 0xcc, 0xf0, 0x5d, 0x7a, 0x31, 0x0b, 0xbf, 0x77, 0x35, 0x98, 0xba, 0x60, 0x3b, - 0x97, 0x88, 0xf7, 0x18, 0x7c, 0x3f, 0x8d, 0x26, 0xe1, 0x9f, 0xcb, 0xe3, 0x06, 0xf6, 0x57, 0xca, - 0x7b, 0x0b, 0xf8, 0xd4, 0xe6, 0x07, 0x9e, 0xbd, 0xbb, 0x0e, 0x4c, 0x5f, 0xf6, 0x73, 0x87, 0x2d, - 0x9d, 0x4b, 0x82, 0xff, 0x45, 0x6e, 0xff, 0x7f, 0x70, 0x91, 0xe9, 0xef, 0x4f, 0xbf, 0x3d, 0x0b, - 0x0a, 0xcb, 0xc8, 0x2b, 0x75, 0x3a, 0xbc, 0xdc, 0x5e, 0x2a, 0x7d, 0x9e, 0x42, 0xa8, 0x44, 0xa9, - 0xd3, 0x89, 0x6e, 0x54, 0x9c, 0x80, 0x7c, 0xbf, 0x5f, 0x21, 0x0d, 0xbe, 0x4e, 0xea, 0x24, 0xd4, - 0x80, 0x02, 0xd3, 0x97, 0xd8, 0x1b, 0x94, 0x60, 0x8f, 0xfb, 0xf9, 0x9c, 0x95, 0xf3, 0xf8, 0x30, - 0x92, 0x48, 0x26, 0x7e, 0xaf, 0xdc, 0xcf, 0xa7, 0xde, 0x07, 0x26, 0x76, 0x5d, 0x54, 0x36, 0x5c, - 0x44, 0x78, 0xeb, 0xad, 0x69, 0xed, 0xe2, 0x03, 0xa8, 0xe5, 0xcd, 0x57, 0x76, 0xb0, 0x41, 0xbd, - 0x41, 0x33, 0x06, 0xc1, 0x39, 0xd8, 0xbb, 0xee, 0x53, 0x80, 0x2f, 0x1c, 0x02, 0xb2, 0xd8, 0xfd, - 0xde, 0xc8, 0xa3, 0x57, 0x89, 0x81, 0x1a, 0xc1, 0x26, 0xed, 0x30, 0x40, 0x7d, 0x2a, 0x0b, 0x72, - 0xb5, 0x2e, 0xb2, 0xe4, 0x1c, 0x50, 0x5f, 0x23, 0xef, 0xe5, 0x15, 0x54, 0x0c, 0x53, 0x8f, 0x90, - 0xde, 0xad, 0x20, 0x67, 0x5a, 0x9b, 0x36, 0x33, 0x30, 0xaf, 0x8e, 0xd8, 0xcc, 0xa9, 0x58, 0x9b, - 0xb6, 0x4e, 0x32, 0xca, 0x3a, 0x78, 0xc5, 0x95, 0x9d, 0xbe, 0x48, 0xbf, 0x39, 0x09, 0x0a, 0x54, - 0x2d, 0xe1, 0x4b, 0x14, 0xa0, 0x94, 0xda, 0xed, 0x88, 0x43, 0x1c, 0xd9, 0x03, 0x87, 0x38, 0x6c, - 0xf2, 0x5b, 0x20, 0xf7, 0xe0, 0x5d, 0x0c, 0x05, 0x21, 0xd9, 0x47, 0xb3, 0xa6, 0x51, 0x6a, 0xb7, - 0xa3, 0x7d, 0x49, 0x83, 0x02, 0xb3, 0x62, 0x81, 0x7c, 0x4b, 0x55, 0xe4, 0x5a, 0x6a, 0xe2, 0x0e, - 0x3d, 0x92, 0xbf, 0xf4, 0x21, 0xfa, 0xa7, 0x2c, 0x98, 0x58, 0x35, 0x5d, 0x0f, 0x63, 0x53, 0x92, - 0xc1, 0xe6, 0x1a, 0x30, 0xe5, 0x8b, 0x06, 0x77, 0x5d, 0xb8, 0x5f, 0x0e, 0x13, 0xe0, 0x6b, 0x79, - 0x74, 0x9e, 0x26, 0xa2, 0xf3, 0x84, 0xf8, 0xda, 0x33, 0x2e, 0xa2, 0x7d, 0xb4, 0xc3, 0x62, 0xb3, - 0xbd, 0xc5, 0xbe, 0x25, 0x10, 0xf8, 0x9a, 0x20, 0xf0, 0x3b, 0x86, 0x29, 0x32, 0x7d, 0xa1, 0x7f, - 0x36, 0x0b, 0x00, 0x2e, 0x9b, 0x1d, 0x84, 0x79, 0xb4, 0x70, 0xbc, 0x35, 0x46, 0xba, 0x2f, 0xe7, - 0xa5, 0xbb, 0x26, 0x4a, 0xf7, 0x49, 0x83, 0xab, 0x1a, 0x77, 0xe0, 0x45, 0x2d, 0x02, 0xc5, 0x0c, - 0x44, 0x8b, 0x1f, 0xe1, 0xdb, 0x03, 0xa1, 0xae, 0x0b, 0x42, 0xbd, 0x6b, 0xc8, 0x92, 0xd2, 0x97, - 0xeb, 0x5f, 0x67, 0xc1, 0x44, 0x1d, 0x79, 0xb8, 0x9b, 0x84, 0xe7, 0x65, 0x8e, 0x9c, 0x70, 0x6d, - 0x3b, 0x2b, 0xd9, 0xb6, 0xbf, 0x9b, 0x91, 0x0d, 0x93, 0x11, 0x4a, 0x86, 0xf1, 0x14, 0xb1, 0x08, - 0xf0, 0x7a, 0xa9, 0x30, 0x19, 0x83, 0xa8, 0xa5, 0x2f, 0xdd, 0xb7, 0x66, 0x83, 0x0d, 0xf6, 0xc7, - 0x08, 0x13, 0x34, 0xde, 0xbc, 0xcd, 0x1c, 0x34, 0x6f, 0xbf, 0x9d, 0x49, 0x6e, 0x6a, 0xc4, 0xed, - 0x2e, 0x27, 0x36, 0x28, 0x46, 0xb0, 0xf1, 0x3b, 0x8c, 0xbc, 0x9e, 0xad, 0x80, 0x02, 0x5b, 0x21, - 0xbe, 0x27, 0x7e, 0x85, 0x78, 0xf0, 0x14, 0xe1, 0x7d, 0x43, 0x98, 0x6b, 0x71, 0xcb, 0xb6, 0x01, - 0x1b, 0x59, 0x8e, 0x8d, 0x5b, 0x40, 0x9e, 0xc4, 0xf1, 0x63, 0xe3, 0x5c, 0xb8, 0x67, 0xef, 0x93, - 0xd0, 0xf0, 0x57, 0x9d, 0x66, 0x4a, 0x8c, 0xc2, 0x08, 0x56, 0x7a, 0x87, 0x41, 0xe1, 0x9f, 0x3f, - 0x95, 0x09, 0x8c, 0x90, 0xf7, 0xe5, 0x98, 0x89, 0xf7, 0x31, 0x31, 0xa2, 0x40, 0xcb, 0xb6, 0x3c, - 0xf4, 0x20, 0xb7, 0xb6, 0x1e, 0x24, 0xc4, 0x5a, 0x06, 0x67, 0xc0, 0x84, 0xe7, 0xf0, 0xeb, 0xed, - 0xfe, 0x2b, 0xdf, 0xe3, 0xe4, 0xc5, 0x1e, 0xa7, 0x0a, 0xce, 0x99, 0x56, 0xab, 0xb3, 0xdb, 0x46, - 0x3a, 0xea, 0x18, 0xb8, 0x56, 0x6e, 0xc9, 0x5d, 0x44, 0x5d, 0x64, 0xb5, 0x91, 0xe5, 0x51, 0x3e, - 0x7d, 0xdf, 0x5a, 0x89, 0x9c, 0xf0, 0xab, 0xbc, 0x62, 0xdc, 0x2d, 0x2a, 0xc6, 0xa3, 0xfb, 0xcd, - 0x0f, 0x62, 0x8c, 0xd0, 0x3b, 0x00, 0xa0, 0x75, 0x3b, 0x6f, 0xa2, 0xcb, 0xac, 0x43, 0xbc, 0xaa, - 0xc7, 0x14, 0xad, 0x05, 0x19, 0x74, 0x2e, 0x33, 0xfc, 0x62, 0xa0, 0x0c, 0xf7, 0x0a, 0xca, 0x70, - 0x8b, 0x24, 0x0b, 0xc9, 0xf4, 0xa0, 0x3b, 0xc4, 0x9a, 0xc5, 0x2c, 0x98, 0x0a, 0x57, 0x1a, 0x15, - 0xf5, 0x2a, 0x70, 0xca, 0xf7, 0x5d, 0xa8, 0x6a, 0xda, 0x62, 0xbd, 0xb9, 0xb1, 0xbe, 0xac, 0x97, - 0x16, 0xb5, 0x22, 0x50, 0x55, 0x30, 0x57, 0x5b, 0x78, 0x9a, 0x56, 0x6e, 0x04, 0x2e, 0x07, 0x39, - 0xf8, 0x97, 0x59, 0x90, 0x27, 0x8e, 0xe1, 0xf0, 0xa7, 0x46, 0xa4, 0x39, 0xae, 0xb0, 0x53, 0x13, - 0xcc, 0x2b, 0xe4, 0x23, 0xfd, 0x31, 0x61, 0x12, 0xae, 0x0e, 0x15, 0xe9, 0x2f, 0x86, 0x50, 0xfa, - 0xcd, 0x13, 0x37, 0xc9, 0xfa, 0xb6, 0x7d, 0xf9, 0x47, 0xb9, 0x49, 0xe2, 0xfa, 0x1f, 0x71, 0x93, - 0xec, 0xc3, 0xc2, 0xd8, 0x9b, 0x64, 0x9f, 0x76, 0x17, 0xd3, 0x4c, 0xe1, 0xb3, 0xf2, 0xc1, 0xc2, - 0xca, 0xf3, 0xb2, 0x87, 0x5a, 0x58, 0x29, 0x81, 0x59, 0xd3, 0xf2, 0x90, 0x63, 0x19, 0x9d, 0xa5, - 0x8e, 0xb1, 0xe5, 0x1f, 0x3f, 0xee, 0x9d, 0x85, 0x57, 0xb8, 0x3c, 0xba, 0xf8, 0x87, 0x7a, 0x16, - 0x00, 0x0f, 0xed, 0x74, 0x3b, 0x86, 0x17, 0xaa, 0x1e, 0x97, 0xc2, 0x6b, 0x5f, 0x4e, 0xd4, 0xbe, - 0xc7, 0x81, 0x2b, 0x28, 0x68, 0x8d, 0xfd, 0x2e, 0xda, 0xb0, 0xcc, 0x9f, 0xde, 0x25, 0x01, 0x68, - 0xa8, 0x8e, 0xf6, 0xfb, 0x84, 0xf5, 0xff, 0xb2, 0xe9, 0x6d, 0x97, 0xb7, 0x0d, 0xdf, 0xb3, 0x2f, - 0x78, 0x87, 0xff, 0x5d, 0xfa, 0x88, 0xa5, 0xdf, 0xea, 0x07, 0x1c, 0xb1, 0x0c, 0x5a, 0x9a, 0xd2, - 0xd3, 0xd2, 0x02, 0x63, 0x21, 0x27, 0x61, 0x2c, 0xf0, 0xa8, 0xe4, 0x25, 0x0d, 0xed, 0x57, 0x4b, - 0x9d, 0xe1, 0x8c, 0xab, 0xc6, 0x18, 0x26, 0x72, 0x0a, 0x98, 0xa3, 0x45, 0x2f, 0xd8, 0xf6, 0xa5, - 0x1d, 0xc3, 0xb9, 0x04, 0x9d, 0x43, 0xa9, 0x62, 0xec, 0x9a, 0x48, 0x80, 0xba, 0xd2, 0x83, 0xfa, - 0x27, 0x79, 0xd4, 0x97, 0x45, 0xd4, 0x1f, 0x1f, 0x2d, 0x2e, 0x9f, 0xe7, 0xf1, 0x2c, 0x8a, 0xbc, - 0x29, 0xc0, 0xf3, 0x69, 0x02, 0x9e, 0x4f, 0x4c, 0xcc, 0x60, 0xfa, 0xb8, 0xfe, 0x71, 0x80, 0xab, - 0xdf, 0xd1, 0xf3, 0xf3, 0xc9, 0x51, 0xe2, 0x0a, 0xbf, 0x34, 0x1c, 0x76, 0x3e, 0x5f, 0x43, 0x60, - 0x57, 0x04, 0xca, 0xa5, 0x60, 0x2b, 0x0a, 0x3f, 0xf2, 0x15, 0xca, 0xa5, 0x87, 0x66, 0x04, 0xcb, - 0x63, 0x41, 0xf3, 0xa4, 0xc8, 0x42, 0xad, 0x9b, 0x2a, 0xa6, 0x5f, 0x90, 0x5e, 0xa7, 0xe9, 0x2b, - 0x20, 0xca, 0xdd, 0x78, 0x5a, 0xa5, 0xdc, 0x22, 0x8f, 0x3c, 0x9b, 0xe9, 0xa3, 0xf9, 0x82, 0x3c, - 0x98, 0xf2, 0x0f, 0xc1, 0x92, 0xc8, 0xd8, 0x01, 0x86, 0xa7, 0x41, 0xc1, 0xb5, 0x77, 0x9d, 0x16, - 0x62, 0x2b, 0x67, 0xec, 0x6d, 0x88, 0x55, 0x9e, 0x81, 0xe3, 0xf9, 0x01, 0x93, 0x21, 0x97, 0xd8, - 0x64, 0x88, 0x36, 0x48, 0xe3, 0x06, 0xf8, 0x17, 0x4a, 0x87, 0x33, 0x14, 0x30, 0xab, 0x23, 0xef, - 0xe1, 0x38, 0xc6, 0xff, 0x81, 0xd4, 0x1a, 0xc2, 0x80, 0x9a, 0x24, 0x53, 0xb9, 0xda, 0x10, 0x86, - 0xea, 0xd5, 0xe0, 0x4a, 0x3f, 0x07, 0xb3, 0x50, 0x89, 0x45, 0xba, 0xa1, 0xaf, 0x16, 0x15, 0xf8, - 0xec, 0x1c, 0x28, 0x52, 0xd6, 0x6a, 0x81, 0xb1, 0x06, 0x5f, 0x9a, 0x39, 0x6a, 0x8b, 0x34, 0x7a, - 0x8a, 0xf9, 0xe9, 0xac, 0x6c, 0xc8, 0x24, 0x41, 0xf0, 0x61, 0xed, 0x22, 0x34, 0x69, 0x88, 0x66, - 0x16, 0xa3, 0x7c, 0xf0, 0x37, 0x33, 0x32, 0x11, 0x98, 0xe4, 0x58, 0x4c, 0xbf, 0x57, 0xfa, 0x5c, - 0xce, 0x8f, 0x65, 0xb0, 0xe4, 0xd8, 0x3b, 0x1b, 0x4e, 0x07, 0xfe, 0xdf, 0x52, 0x01, 0xee, 0x22, - 0xcc, 0xff, 0x6c, 0xb4, 0xf9, 0x5f, 0x04, 0xca, 0xae, 0xd3, 0xf1, 0x87, 0xef, 0x5d, 0xa7, 0x33, - 0xc4, 0xf0, 0xad, 0xde, 0x08, 0xe6, 0x8c, 0x76, 0x7b, 0xdd, 0xd8, 0x42, 0x65, 0x3c, 0xaf, 0xb6, - 0x3c, 0x76, 0xce, 0xb9, 0x27, 0x35, 0xb6, 0x2b, 0xfa, 0xaa, 0xf4, 0x4e, 0x9c, 0x00, 0x12, 0x93, - 0xcf, 0x58, 0x86, 0x37, 0x3c, 0x24, 0xb4, 0xb6, 0x8d, 0x30, 0xea, 0x02, 0x7b, 0x93, 0xdc, 0xa1, - 0x93, 0xe0, 0x3b, 0x7d, 0xcd, 0xfa, 0x9d, 0x2c, 0x98, 0xc0, 0xf2, 0x2e, 0xb5, 0xdb, 0xf0, 0x51, - 0x42, 0x70, 0x92, 0xc8, 0x3d, 0xd2, 0xe7, 0x4b, 0x6f, 0x4e, 0xfb, 0x35, 0xa4, 0xf4, 0x23, 0x30, - 0x09, 0x85, 0x98, 0x15, 0x84, 0x28, 0xb7, 0x07, 0x1d, 0x5b, 0x44, 0xfa, 0xe2, 0xfb, 0x44, 0x16, - 0xcc, 0xfa, 0xf3, 0x88, 0x25, 0xe4, 0xb5, 0xb6, 0xe1, 0x1d, 0xb2, 0x0b, 0x4d, 0xac, 0xa5, 0x65, - 0x83, 0x96, 0x06, 0x7f, 0x90, 0x49, 0xa8, 0xf2, 0x42, 0xc9, 0x11, 0xab, 0x74, 0x89, 0x74, 0x31, - 0x8e, 0x60, 0xfa, 0xc2, 0xfc, 0x62, 0x16, 0x80, 0x86, 0x1d, 0xcc, 0x75, 0x0f, 0x21, 0xc9, 0x17, - 0x4b, 0x47, 0x9b, 0x67, 0x15, 0x0f, 0x8b, 0x4d, 0xde, 0x73, 0x48, 0x6e, 0xb1, 0x0d, 0x2a, 0x69, - 0x2c, 0x6d, 0x7d, 0x6a, 0x71, 0xb7, 0xdb, 0x31, 0x5b, 0x86, 0xd7, 0xbb, 0x2f, 0x1c, 0x2d, 0x5e, - 0x72, 0x6d, 0x4c, 0x22, 0xa3, 0x30, 0x28, 0x23, 0x42, 0x96, 0xf4, 0xd0, 0x6c, 0xd6, 0x3f, 0x34, - 0x2b, 0xb9, 0xd7, 0x33, 0x80, 0xf8, 0x18, 0xd4, 0x53, 0x01, 0xc7, 0x6b, 0x5d, 0x64, 0x2d, 0x38, - 0xc8, 0x68, 0xb7, 0x9c, 0xdd, 0x9d, 0x8b, 0x2e, 0xef, 0xd4, 0x10, 0xaf, 0xa3, 0xdc, 0xd2, 0x71, - 0x56, 0x58, 0x3a, 0x86, 0xcf, 0x55, 0x64, 0x8f, 0x70, 0x73, 0x1b, 0x1c, 0x1c, 0x0f, 0x43, 0x0c, - 0x75, 0x89, 0xb6, 0xe2, 0x7a, 0x56, 0x89, 0x73, 0x49, 0x56, 0x89, 0xdf, 0x2c, 0x75, 0x20, 0x5c, - 0xaa, 0x5e, 0x63, 0xd9, 0x51, 0x9d, 0xab, 0x23, 0x2f, 0x02, 0xde, 0x1b, 0xc0, 0xec, 0xc5, 0xf0, - 0x4b, 0x00, 0xb1, 0x98, 0xd8, 0xc7, 0xcf, 0xe1, 0xad, 0x49, 0x57, 0x60, 0x44, 0x16, 0x22, 0xd0, - 0x0d, 0x10, 0xcc, 0xca, 0x6c, 0xa6, 0x26, 0x5a, 0x4e, 0x89, 0x2d, 0x3f, 0x7d, 0x14, 0x3e, 0x92, - 0x05, 0xd3, 0xe4, 0x32, 0x9c, 0x85, 0x7d, 0xe2, 0x65, 0x2f, 0x69, 0x94, 0xbc, 0x80, 0x17, 0xb3, - 0x0a, 0x72, 0x1d, 0xd3, 0xba, 0xe4, 0xef, 0x82, 0xe3, 0xe7, 0xf0, 0x6a, 0x85, 0x6c, 0x9f, 0xab, - 0x15, 0x82, 0x7d, 0x8a, 0xa0, 0xdc, 0x43, 0xdd, 0xf5, 0x35, 0x90, 0x5c, 0xfa, 0x62, 0xfc, 0xfb, - 0x1c, 0x28, 0xd4, 0x91, 0xe1, 0xb4, 0xb6, 0xe1, 0xfb, 0xb2, 0x7d, 0xa7, 0x0a, 0x93, 0xe2, 0x54, - 0x61, 0x09, 0x4c, 0x6c, 0x9a, 0x1d, 0x0f, 0x39, 0xd4, 0x33, 0x88, 0xef, 0xda, 0x69, 0x13, 0x5f, - 0xe8, 0xd8, 0xad, 0x4b, 0xf3, 0xcc, 0x74, 0x9f, 0xf7, 0x83, 0x42, 0xcd, 0x2f, 0x91, 0x9f, 0x74, - 0xff, 0x67, 0x6c, 0x10, 0xba, 0xb6, 0xe3, 0x45, 0x45, 0x59, 0x8d, 0xa0, 0x52, 0xb7, 0x1d, 0x4f, - 0xa7, 0x3f, 0x62, 0x98, 0x37, 0x77, 0x3b, 0x9d, 0x06, 0x7a, 0xd0, 0xf3, 0xa7, 0x6d, 0xfe, 0x3b, - 0x36, 0x16, 0xed, 0xcd, 0x4d, 0x17, 0xd1, 0x45, 0x83, 0xbc, 0xce, 0xde, 0xd4, 0x93, 0x20, 0xdf, - 0x31, 0x77, 0x4c, 0x3a, 0xd1, 0xc8, 0xeb, 0xf4, 0x45, 0xbd, 0x19, 0x14, 0xc3, 0x39, 0x0e, 0x65, - 0xf4, 0x4c, 0x81, 0x34, 0xcd, 0x03, 0xe9, 0x58, 0x67, 0x2e, 0xa1, 0x7d, 0xf7, 0xcc, 0x04, 0xf9, - 0x4e, 0x9e, 0x45, 0x37, 0x4c, 0x99, 0xfd, 0x0e, 0x2a, 0xf1, 0xe8, 0x19, 0xac, 0x83, 0x5a, 0xb6, - 0xd3, 0xf6, 0x65, 0x13, 0x3d, 0xc1, 0x60, 0xf9, 0x92, 0xed, 0x52, 0xf4, 0x2d, 0x3c, 0x7d, 0x4d, - 0x7b, 0x77, 0x01, 0x77, 0x9b, 0xb8, 0xe8, 0x0b, 0xa6, 0xb7, 0xbd, 0x86, 0x3c, 0x03, 0xfe, 0xbd, - 0xd2, 0x57, 0xe3, 0xa6, 0xff, 0xb7, 0xc6, 0x0d, 0xd0, 0x38, 0x7a, 0xdc, 0xdf, 0xdb, 0x75, 0x2c, - 0x2c, 0x47, 0x16, 0x60, 0x8b, 0x4b, 0x51, 0xef, 0x02, 0x57, 0x85, 0x6f, 0xfe, 0x52, 0xe9, 0x22, - 0x9b, 0xb6, 0x4e, 0x91, 0xec, 0xd1, 0x19, 0xd4, 0x75, 0x70, 0x3d, 0xfd, 0xb8, 0xd2, 0x58, 0x5b, - 0x5d, 0x31, 0xb7, 0xb6, 0x3b, 0xe6, 0xd6, 0xb6, 0xe7, 0x56, 0x2c, 0xd7, 0x43, 0x46, 0xbb, 0xb6, - 0xa9, 0xd3, 0xf8, 0xc8, 0x80, 0xd0, 0x91, 0xc9, 0x2a, 0x7a, 0x0e, 0xc9, 0x8d, 0x6e, 0xbc, 0xa6, - 0x44, 0xb4, 0x94, 0x27, 0xe2, 0x96, 0xe2, 0xee, 0x76, 0x02, 0x4c, 0xaf, 0xe9, 0xc1, 0x34, 0x54, - 0xf5, 0xdd, 0x0e, 0x69, 0x2e, 0x24, 0x73, 0xd2, 0x71, 0x2e, 0x86, 0x93, 0xf4, 0x9b, 0xcd, 0xff, - 0x57, 0x00, 0xf9, 0x65, 0xc7, 0xe8, 0x6e, 0xc3, 0x67, 0x73, 0xfd, 0xf3, 0xa8, 0xda, 0x44, 0xa0, - 0x9d, 0xd9, 0x41, 0xda, 0xa9, 0x0c, 0xd0, 0xce, 0x1c, 0xa7, 0x9d, 0xd1, 0x8b, 0xca, 0xe7, 0xc0, - 0x4c, 0xcb, 0xee, 0x74, 0x50, 0x0b, 0xcb, 0xa3, 0xd2, 0x26, 0xab, 0x39, 0x53, 0xba, 0x90, 0x46, - 0x02, 0xe7, 0x21, 0xaf, 0x4e, 0xd7, 0xd0, 0xa9, 0xd2, 0x87, 0x09, 0xf0, 0xa5, 0x59, 0x90, 0xd3, - 0xda, 0x5b, 0x48, 0x58, 0x67, 0xcf, 0x70, 0xeb, 0xec, 0xa7, 0x41, 0xc1, 0x33, 0x9c, 0x2d, 0xe4, - 0xf9, 0xeb, 0x04, 0xf4, 0x2d, 0x88, 0xe7, 0xa7, 0x70, 0xf1, 0xfc, 0x9e, 0x04, 0x72, 0x58, 0x66, - 0x2c, 0x52, 0xce, 0xf5, 0xfd, 0xe0, 0x27, 0xb2, 0x9f, 0xc7, 0x25, 0xce, 0xe3, 0x5a, 0xeb, 0xe4, - 0x87, 0x5e, 0xac, 0xf3, 0x07, 0xb0, 0x26, 0x57, 0xbd, 0xb4, 0x6c, 0xab, 0xb2, 0x63, 0x6c, 0x21, - 0x56, 0xcd, 0x30, 0xc1, 0xff, 0xaa, 0xed, 0xd8, 0x0f, 0x98, 0x2c, 0xb4, 0x5e, 0x98, 0x80, 0xab, - 0xb0, 0x6d, 0xb6, 0xdb, 0xc8, 0x62, 0x2d, 0x9b, 0xbd, 0x9d, 0x3b, 0x0b, 0x72, 0x98, 0x07, 0xac, - 0x3f, 0xd8, 0x58, 0x28, 0x1e, 0x53, 0x67, 0x70, 0xb3, 0xa2, 0x8d, 0xb7, 0x98, 0x11, 0xd7, 0x54, - 0x65, 0xdc, 0x76, 0x68, 0xe5, 0xfa, 0x37, 0xae, 0xc7, 0x82, 0xbc, 0x65, 0xb7, 0xd1, 0xc0, 0x41, - 0x88, 0xe6, 0x52, 0x9f, 0x00, 0xf2, 0xa8, 0x8d, 0x7b, 0x05, 0x85, 0x64, 0x3f, 0x1b, 0x2f, 0x4b, - 0x9d, 0x66, 0x4e, 0xe6, 0x1b, 0xd4, 0x8f, 0xdb, 0xf4, 0x1b, 0xe0, 0x2f, 0x4e, 0x80, 0xe3, 0xb4, - 0x0f, 0xa8, 0xef, 0x5e, 0xc4, 0xa4, 0x2e, 0x22, 0xf8, 0xfa, 0xfe, 0x03, 0xd7, 0x71, 0x51, 0xd9, - 0x4f, 0x82, 0xbc, 0xbb, 0x7b, 0x31, 0x30, 0x42, 0xe9, 0x0b, 0xdf, 0x74, 0xb3, 0x23, 0x19, 0xce, - 0x94, 0x61, 0x87, 0x33, 0x61, 0x68, 0x52, 0xfc, 0xc6, 0x1f, 0x0e, 0x64, 0x05, 0x92, 0xec, 0x0f, - 0x64, 0xfd, 0x86, 0xa1, 0x33, 0x60, 0xc2, 0xd8, 0xf4, 0x90, 0x13, 0x9a, 0x89, 0xec, 0x15, 0x0f, - 0x95, 0x17, 0xd1, 0xa6, 0xed, 0x60, 0xb1, 0x4c, 0xd1, 0xa1, 0xd2, 0x7f, 0xe7, 0x5a, 0x2e, 0x10, - 0x76, 0xc8, 0x6e, 0x01, 0x27, 0x2c, 0x7b, 0x11, 0x75, 0x99, 0x9c, 0x29, 0x8a, 0xb3, 0xa4, 0x05, - 0x1c, 0xfc, 0x70, 0xa0, 0x2b, 0x99, 0x3b, 0xd8, 0x95, 0xc0, 0x4f, 0x25, 0x9d, 0x33, 0xf7, 0x00, - 0x3d, 0x32, 0x0b, 0x4d, 0x7d, 0x0a, 0x98, 0x69, 0x33, 0x17, 0xad, 0x96, 0x19, 0xb4, 0x92, 0xc8, - 0xff, 0x84, 0xcc, 0xa1, 0x22, 0xe5, 0x78, 0x45, 0x5a, 0x06, 0x93, 0xe4, 0x40, 0x0e, 0xd6, 0xa4, - 0x7c, 0x4f, 0xdc, 0x41, 0x32, 0xad, 0x0b, 0x2a, 0xc5, 0x89, 0x6d, 0xbe, 0xcc, 0x7e, 0xd1, 0x83, - 0x9f, 0x93, 0xcd, 0xbe, 0xe3, 0x25, 0x94, 0x7e, 0x73, 0x7c, 0x4b, 0x01, 0x5c, 0x55, 0x76, 0x6c, - 0xd7, 0x25, 0xd1, 0x24, 0x7a, 0x1b, 0xe6, 0x1b, 0xb3, 0x42, 0x64, 0xdf, 0x87, 0x75, 0xf3, 0xeb, - 0xd7, 0xa0, 0xc6, 0xd7, 0x34, 0xbe, 0x2a, 0x7d, 0x24, 0x39, 0xd8, 0x7f, 0x88, 0x10, 0xfa, 0x8f, - 0x46, 0x23, 0x79, 0x77, 0x46, 0xe6, 0x94, 0x74, 0x42, 0x59, 0xa5, 0xdf, 0x5c, 0xbe, 0x90, 0x05, - 0x57, 0xf7, 0x72, 0xb3, 0x61, 0xb9, 0x41, 0x83, 0xb9, 0x76, 0x40, 0x7b, 0x11, 0x4f, 0xd5, 0xc6, - 0xde, 0x64, 0x12, 0x51, 0x77, 0xae, 0xb4, 0x88, 0xc5, 0x92, 0xf7, 0x66, 0x64, 0x6e, 0x32, 0x49, - 0x4c, 0x3e, 0x7d, 0xe1, 0x7e, 0x3a, 0x07, 0x8e, 0x2f, 0x3b, 0xf6, 0x6e, 0xd7, 0x0d, 0x7b, 0xa0, - 0xbf, 0xed, 0xbf, 0xe1, 0x5a, 0x90, 0x31, 0x0d, 0xae, 0x03, 0xd3, 0x0e, 0xb3, 0xe6, 0xc2, 0xed, - 0x57, 0x3e, 0x89, 0xef, 0xbd, 0x94, 0xc3, 0xf4, 0x5e, 0x61, 0x3f, 0x93, 0x13, 0xfa, 0x99, 0xde, - 0x9e, 0x23, 0xdf, 0xa7, 0xe7, 0xf8, 0x9b, 0x6c, 0xc2, 0x41, 0xb5, 0x47, 0x44, 0x11, 0xfd, 0x45, - 0x19, 0x14, 0xb6, 0x48, 0x46, 0xd6, 0x5d, 0x3c, 0x46, 0xae, 0x66, 0x84, 0xb8, 0xce, 0x7e, 0x0d, - 0xe5, 0xaa, 0xf0, 0x3a, 0x9c, 0x68, 0x80, 0x8b, 0xe7, 0x36, 0x7d, 0xa5, 0x7a, 0x4d, 0x0e, 0xcc, - 0x04, 0xa5, 0x57, 0xda, 0x2e, 0x7c, 0x41, 0x7f, 0x8d, 0x9a, 0x95, 0xd1, 0xa8, 0x03, 0xeb, 0xcc, - 0xc1, 0xa8, 0xa3, 0x70, 0xa3, 0x4e, 0xdf, 0xd1, 0x65, 0x26, 0x62, 0x74, 0x81, 0xcf, 0x52, 0x64, - 0x63, 0xe3, 0x8b, 0x5d, 0x2b, 0xa9, 0xcd, 0xc3, 0x79, 0xb0, 0x90, 0x8c, 0xd0, 0x3f, 0xb8, 0x56, - 0xe9, 0x2b, 0xc9, 0x07, 0xb3, 0xe0, 0xc4, 0xc1, 0xce, 0xfc, 0x91, 0xa2, 0x17, 0x1a, 0xae, 0x93, - 0x1b, 0x78, 0xa1, 0x91, 0x37, 0x71, 0x93, 0x2e, 0xf6, 0x68, 0xac, 0x60, 0xef, 0x0d, 0xee, 0xc4, - 0xe5, 0x0e, 0xbf, 0x4a, 0x12, 0x4d, 0x5f, 0x80, 0xbf, 0xa2, 0x80, 0xa9, 0x3a, 0xf2, 0x56, 0x8d, - 0x7d, 0x7b, 0xd7, 0x83, 0x86, 0xec, 0xf6, 0xdc, 0x93, 0x41, 0xa1, 0x43, 0x7e, 0x61, 0x17, 0x3d, - 0x5e, 0xd7, 0x77, 0x7f, 0x8b, 0xf8, 0xfe, 0x50, 0xd2, 0x3a, 0xcb, 0x2f, 0x9e, 0x49, 0x96, 0xd9, - 0x1d, 0x0d, 0xb8, 0x1b, 0xc9, 0xd6, 0x4e, 0xa2, 0xbd, 0xd3, 0xa8, 0xa2, 0xd3, 0x87, 0xe5, 0xb9, - 0x0a, 0x98, 0xad, 0x23, 0xaf, 0xe2, 0x2e, 0x19, 0x7b, 0xb6, 0x63, 0x7a, 0x88, 0xbf, 0x73, 0x28, - 0x1e, 0x9a, 0xb3, 0x00, 0x98, 0xc1, 0x6f, 0xec, 0xd2, 0x09, 0x2e, 0x05, 0xfe, 0x66, 0x52, 0x47, - 0x21, 0x81, 0x8f, 0x91, 0x80, 0x90, 0xc8, 0xc7, 0x22, 0xae, 0xf8, 0xf4, 0x81, 0xf8, 0x7c, 0x96, - 0x01, 0x51, 0x72, 0x5a, 0xdb, 0xe6, 0x1e, 0x6a, 0x27, 0x04, 0xc2, 0xff, 0x2d, 0x04, 0x22, 0x20, - 0x94, 0xd8, 0x7d, 0x45, 0xe0, 0x63, 0x14, 0xee, 0x2b, 0x71, 0x04, 0xc7, 0x12, 0xec, 0x00, 0x77, - 0x3d, 0x6c, 0x3d, 0xf3, 0x1e, 0x59, 0xb1, 0x86, 0x26, 0x5b, 0x96, 0x37, 0xd9, 0x86, 0xea, 0x58, - 0x68, 0xd9, 0x83, 0x74, 0x3a, 0x97, 0x46, 0xc7, 0xd2, 0xb7, 0xe8, 0xf4, 0x85, 0xfe, 0x5e, 0x05, - 0x9c, 0x0a, 0x4e, 0x01, 0xd7, 0x91, 0xb7, 0x68, 0xb8, 0xdb, 0x17, 0x6d, 0xc3, 0x69, 0xf3, 0x17, - 0x80, 0x0e, 0x7d, 0xe2, 0x0f, 0x7e, 0x8e, 0x07, 0xa1, 0x2a, 0x82, 0xd0, 0xd7, 0x55, 0xb4, 0x2f, - 0x2f, 0xa3, 0xe8, 0x64, 0x62, 0xbd, 0x59, 0x7f, 0x2b, 0x00, 0xeb, 0xe9, 0x02, 0x58, 0x77, 0x0f, - 0xcb, 0x62, 0xfa, 0xc0, 0xfd, 0x1a, 0x1d, 0x11, 0x38, 0xaf, 0xe6, 0xfb, 0x65, 0x01, 0x8b, 0xf0, - 0x6a, 0x55, 0x22, 0xbd, 0x5a, 0x87, 0x1a, 0x23, 0x06, 0x7a, 0x24, 0xa7, 0x3b, 0x46, 0x1c, 0xa1, - 0xb7, 0xf1, 0x3b, 0x15, 0x50, 0x24, 0x61, 0x20, 0x38, 0x8f, 0x6f, 0xf8, 0x80, 0x2c, 0x3a, 0x07, - 0xbc, 0xcb, 0x27, 0x92, 0x7a, 0x97, 0xc3, 0x77, 0x24, 0xf5, 0x21, 0xef, 0xe5, 0x76, 0x24, 0x88, - 0x25, 0x72, 0x11, 0x1f, 0xc0, 0x41, 0xfa, 0xa0, 0xfd, 0x27, 0x05, 0x00, 0xdc, 0xa0, 0xd9, 0xd9, - 0x87, 0x67, 0xc8, 0xc2, 0x75, 0x2b, 0xef, 0x57, 0x8f, 0x81, 0x3a, 0xd5, 0x03, 0x14, 0xa5, 0x18, - 0x9e, 0xaa, 0x78, 0x7d, 0x52, 0xdf, 0xca, 0x90, 0xab, 0x91, 0xc0, 0x92, 0xc8, 0xdb, 0x32, 0xb2, - 0xec, 0xf4, 0x01, 0xf9, 0xaf, 0x59, 0x90, 0x6f, 0xd8, 0x75, 0xe4, 0x1d, 0xde, 0x14, 0x48, 0x7c, - 0x6c, 0x9f, 0x94, 0x3b, 0x8a, 0x63, 0xfb, 0xfd, 0x08, 0xa5, 0x2f, 0xba, 0xf7, 0x64, 0xc1, 0x4c, - 0xc3, 0x2e, 0x07, 0x8b, 0x53, 0xf2, 0xbe, 0xaa, 0xf2, 0xf7, 0xfb, 0x05, 0x15, 0x0c, 0x8b, 0x39, - 0xd4, 0xfd, 0x7e, 0x83, 0xe9, 0xa5, 0x2f, 0xb7, 0x3b, 0xc0, 0xf1, 0x0d, 0xab, 0x6d, 0xeb, 0xa8, - 0x6d, 0xb3, 0x95, 0x6e, 0x55, 0x05, 0xb9, 0x5d, 0xab, 0x6d, 0x13, 0x96, 0xf3, 0x3a, 0x79, 0xc6, - 0x69, 0x0e, 0x6a, 0xdb, 0xcc, 0x37, 0x80, 0x3c, 0xc3, 0xaf, 0x2a, 0x20, 0x87, 0xff, 0x95, 0x17, - 0xf5, 0x3b, 0x95, 0x84, 0x81, 0x08, 0x30, 0xf9, 0x91, 0x58, 0x42, 0xf7, 0x70, 0x6b, 0xff, 0xd4, - 0x83, 0xf5, 0xfa, 0xa8, 0xf2, 0x38, 0x51, 0x84, 0x6b, 0xfe, 0xea, 0x19, 0x30, 0x71, 0xb1, 0x63, - 0xb7, 0x2e, 0x85, 0xe7, 0xe5, 0xd9, 0xab, 0x7a, 0x33, 0xc8, 0x3b, 0x86, 0xb5, 0x85, 0xd8, 0x9e, - 0xc2, 0xc9, 0x9e, 0xbe, 0x90, 0x78, 0xbd, 0xe8, 0x34, 0x0b, 0x7c, 0x47, 0x92, 0x10, 0x08, 0x7d, - 0x2a, 0x9f, 0x4c, 0x1f, 0x16, 0x87, 0x38, 0x59, 0x56, 0x04, 0x33, 0xe5, 0x12, 0xbd, 0x49, 0x73, - 0xad, 0x76, 0x5e, 0x2b, 0x2a, 0x04, 0x66, 0x2c, 0x93, 0x14, 0x61, 0xc6, 0xe4, 0x7f, 0x64, 0x61, - 0xee, 0x53, 0xf9, 0xa3, 0x80, 0xf9, 0x13, 0x59, 0x30, 0xbb, 0x6a, 0xba, 0x5e, 0x94, 0xb7, 0x7f, - 0x4c, 0x14, 0xb8, 0x17, 0x26, 0x35, 0x95, 0x85, 0x72, 0xa4, 0xc3, 0xbf, 0x25, 0x32, 0x87, 0xe3, - 0x8a, 0x18, 0xcf, 0xb1, 0x14, 0xc2, 0x01, 0xbd, 0xfd, 0x4e, 0x5a, 0x92, 0x89, 0x0d, 0xa5, 0xb0, - 0x90, 0xf1, 0x1b, 0x4a, 0x91, 0x65, 0xa7, 0x2f, 0xdf, 0xaf, 0x66, 0xc1, 0x09, 0x5c, 0x7c, 0xdc, - 0xb2, 0x54, 0xb4, 0x98, 0x07, 0x2e, 0x4b, 0x25, 0x5e, 0x19, 0x3f, 0xc0, 0xcb, 0x28, 0x56, 0xc6, - 0x07, 0x11, 0x1d, 0xb3, 0x98, 0x23, 0x96, 0x61, 0x07, 0x89, 0x39, 0x66, 0x19, 0x76, 0x78, 0x31, - 0xc7, 0x2f, 0xc5, 0x0e, 0x29, 0xe6, 0x23, 0x5b, 0x60, 0x7d, 0x9d, 0x12, 0x88, 0x39, 0x72, 0x6d, - 0x23, 0x46, 0xcc, 0x89, 0x4f, 0xec, 0xc2, 0x77, 0x0d, 0x29, 0xf8, 0x11, 0xaf, 0x6f, 0x0c, 0x03, - 0xd3, 0x11, 0xae, 0x71, 0xfc, 0xba, 0x02, 0xe6, 0x18, 0x17, 0xfd, 0xa7, 0xcc, 0x31, 0x18, 0x25, - 0x9e, 0x32, 0x27, 0x3e, 0x03, 0x24, 0x72, 0x36, 0xfe, 0x33, 0x40, 0xb1, 0xe5, 0xa7, 0x0f, 0xce, - 0xd7, 0x73, 0xe0, 0x34, 0x66, 0x61, 0xcd, 0x6e, 0x9b, 0x9b, 0xfb, 0x94, 0x8b, 0xf3, 0x46, 0x67, - 0x17, 0xb9, 0xf0, 0xfd, 0x59, 0x59, 0x94, 0xfe, 0x1d, 0x00, 0x76, 0x17, 0x39, 0x34, 0x90, 0x1a, - 0x03, 0xea, 0xae, 0xa8, 0xca, 0x1e, 0x2c, 0x29, 0x08, 0x6e, 0x5e, 0xf3, 0x89, 0xe8, 0x1c, 0x3d, - 0x6c, 0x15, 0x4e, 0x05, 0x5f, 0x7a, 0x1d, 0x3c, 0x32, 0x07, 0x1d, 0x3c, 0x6e, 0x02, 0x8a, 0xd1, - 0x6e, 0x07, 0x50, 0xf5, 0x6e, 0x66, 0x93, 0x32, 0x75, 0x9c, 0x05, 0xe7, 0x74, 0x51, 0x78, 0x34, - 0x2f, 0x22, 0xa7, 0x8b, 0x3c, 0x75, 0x1e, 0x14, 0xe8, 0x4d, 0x80, 0xc1, 0x8a, 0x7e, 0xff, 0xcc, - 0x2c, 0x97, 0x68, 0xda, 0xd5, 0x44, 0x35, 0xbc, 0x23, 0x91, 0x64, 0xfa, 0xf5, 0xd3, 0xa1, 0x9d, - 0xac, 0x0b, 0x0a, 0xf6, 0xd4, 0xa1, 0x29, 0x8f, 0x67, 0x37, 0xac, 0xd4, 0xed, 0x76, 0xf6, 0x1b, - 0x2c, 0xf8, 0x4a, 0xa2, 0xdd, 0x30, 0x2e, 0x86, 0x4b, 0xb6, 0x37, 0x86, 0x4b, 0xf2, 0xdd, 0x30, - 0x81, 0x8f, 0x51, 0xec, 0x86, 0xc5, 0x11, 0x1c, 0xc3, 0x7a, 0x64, 0x9e, 0x5a, 0xcd, 0x2c, 0x46, - 0xed, 0x9b, 0xfa, 0x1f, 0x42, 0x03, 0xa2, 0xb3, 0x4b, 0xbf, 0xf0, 0xb5, 0xb1, 0xb1, 0xb9, 0xd5, - 0x27, 0x80, 0xc2, 0xa6, 0xed, 0xec, 0x18, 0xfe, 0xc6, 0x7d, 0xef, 0x49, 0x11, 0x16, 0x17, 0x76, - 0x89, 0xe4, 0xd1, 0x59, 0x5e, 0x3c, 0x1f, 0x79, 0xa6, 0xd9, 0x65, 0x51, 0x17, 0xf1, 0xa3, 0x7a, - 0x03, 0x98, 0x65, 0xc1, 0x17, 0xab, 0xc8, 0xf5, 0x50, 0x9b, 0x45, 0xac, 0x10, 0x13, 0xd5, 0x73, - 0x60, 0x86, 0x25, 0x2c, 0x99, 0x1d, 0xe4, 0xb2, 0xa0, 0x15, 0x42, 0x9a, 0x7a, 0x1a, 0x14, 0x4c, - 0xf7, 0x69, 0xae, 0x6d, 0x11, 0xff, 0xff, 0x49, 0x9d, 0xbd, 0xa9, 0x37, 0x81, 0xe3, 0x2c, 0x5f, - 0x60, 0xac, 0xd2, 0x03, 0x3b, 0xbd, 0xc9, 0xf0, 0x33, 0xc3, 0x4c, 0x1c, 0x12, 0xc7, 0xe3, 0xc5, - 0x28, 0xec, 0xb6, 0x5a, 0x08, 0xb5, 0xd9, 0xc9, 0x26, 0xff, 0x35, 0x61, 0xa4, 0xde, 0xc4, 0xd3, - 0x8c, 0x23, 0x0a, 0xd5, 0xfb, 0xa1, 0x53, 0xa0, 0x40, 0xaf, 0xaf, 0x80, 0x2f, 0x99, 0xeb, 0xab, - 0x8c, 0x73, 0xa2, 0x32, 0x6e, 0x80, 0x19, 0xcb, 0xc6, 0xc5, 0xad, 0x1b, 0x8e, 0xb1, 0xe3, 0xc6, - 0xad, 0x22, 0x52, 0xba, 0xc1, 0x90, 0x51, 0xe5, 0x7e, 0x5b, 0x39, 0xa6, 0x0b, 0x64, 0xd4, 0xff, - 0x03, 0x1c, 0xbf, 0xc8, 0x22, 0x00, 0xb8, 0x8c, 0x72, 0x36, 0xda, 0xc7, 0xae, 0x87, 0xf2, 0x82, - 0xf8, 0xe7, 0xca, 0x31, 0xbd, 0x97, 0x98, 0xfa, 0x93, 0x60, 0x0e, 0xbf, 0xb6, 0xed, 0xcb, 0x3e, - 0xe3, 0x4a, 0xb4, 0xa1, 0xd1, 0x43, 0x7e, 0x4d, 0xf8, 0x71, 0xe5, 0x98, 0xde, 0x43, 0x4a, 0xad, - 0x01, 0xb0, 0xed, 0xed, 0x74, 0x18, 0xe1, 0x5c, 0xb4, 0x4a, 0xf6, 0x10, 0x5e, 0x09, 0x7e, 0x5a, - 0x39, 0xa6, 0x73, 0x24, 0xd4, 0x55, 0x30, 0xe5, 0x3d, 0xe8, 0x31, 0x7a, 0xf9, 0xe8, 0xcd, 0xed, - 0x1e, 0x7a, 0x0d, 0xff, 0x9f, 0x95, 0x63, 0x7a, 0x48, 0x40, 0xad, 0x80, 0xc9, 0xee, 0x45, 0x46, - 0xac, 0xd0, 0xe7, 0xca, 0xfe, 0xfe, 0xc4, 0xd6, 0x2f, 0x06, 0xb4, 0x82, 0xdf, 0x31, 0x63, 0x2d, - 0x77, 0x8f, 0xd1, 0x9a, 0x90, 0x66, 0xac, 0xec, 0xff, 0x83, 0x19, 0x0b, 0x08, 0xa8, 0x15, 0x30, - 0xe5, 0x5a, 0x46, 0xd7, 0xdd, 0xb6, 0x3d, 0xf7, 0xcc, 0x64, 0x8f, 0x1f, 0x64, 0x34, 0xb5, 0x3a, - 0xfb, 0x47, 0x0f, 0xff, 0x56, 0x9f, 0x00, 0x4e, 0xed, 0x92, 0x6b, 0x40, 0xb5, 0x07, 0x4d, 0xd7, - 0x33, 0xad, 0x2d, 0x3f, 0x86, 0x2c, 0xed, 0x4d, 0xfa, 0x7f, 0x54, 0xe7, 0xd9, 0x89, 0x28, 0x40, - 0xda, 0x26, 0xec, 0xdd, 0x8c, 0xa3, 0xc5, 0x72, 0x07, 0xa1, 0x9e, 0x02, 0x72, 0xf8, 0x13, 0x39, - 0xb3, 0x39, 0xd7, 0x7f, 0xa1, 0xaf, 0x57, 0x77, 0x48, 0x03, 0xc6, 0x3f, 0xe1, 0xb1, 0xd1, 0xb2, - 0xd7, 0x1d, 0x7b, 0xcb, 0x41, 0xae, 0xcb, 0x1c, 0x0e, 0xb9, 0x14, 0xdc, 0xc0, 0x4d, 0x77, 0xcd, - 0xdc, 0xa2, 0xd6, 0x13, 0xf3, 0x77, 0xe7, 0x93, 0xe8, 0x6c, 0xb3, 0x8a, 0x2e, 0x13, 0x87, 0x60, - 0x72, 0xfe, 0x86, 0xcc, 0x36, 0xfd, 0x14, 0x78, 0x23, 0x98, 0xe1, 0x1b, 0x19, 0xbd, 0x03, 0xcb, - 0x0c, 0x6d, 0x2f, 0xf6, 0x06, 0x6f, 0x00, 0x73, 0xa2, 0x4e, 0x73, 0x43, 0x8c, 0xe2, 0x77, 0x85, - 0xf0, 0x7a, 0x70, 0xbc, 0xa7, 0x61, 0xf9, 0x31, 0x45, 0x32, 0x61, 0x4c, 0x91, 0xeb, 0x00, 0x08, - 0xb5, 0xb8, 0x2f, 0x99, 0x6b, 0xc1, 0x54, 0xa0, 0x97, 0x7d, 0x33, 0x7c, 0x39, 0x03, 0x26, 0x7d, - 0x65, 0xeb, 0x97, 0x01, 0x8f, 0x2f, 0x16, 0xb7, 0x81, 0xc0, 0xa6, 0xd9, 0x42, 0x1a, 0x1e, 0x47, - 0x42, 0xb7, 0xdd, 0x86, 0xe9, 0x75, 0xfc, 0xa3, 0x6f, 0xbd, 0xc9, 0xea, 0x3a, 0x00, 0x26, 0xc1, - 0xa8, 0x11, 0x9e, 0x85, 0x7b, 0x5c, 0x82, 0xf6, 0x40, 0xf5, 0x81, 0xa3, 0x71, 0xee, 0x91, 0xec, - 0xa0, 0xda, 0x14, 0xc8, 0xd7, 0xd7, 0x4b, 0x65, 0xad, 0x78, 0x4c, 0x9d, 0x03, 0x40, 0x7b, 0xc6, - 0xba, 0xa6, 0x57, 0xb4, 0x6a, 0x59, 0x2b, 0x66, 0xe0, 0xcb, 0xb2, 0x60, 0x2a, 0x68, 0x04, 0x7d, - 0x2b, 0xa9, 0x31, 0xd5, 0x1a, 0x78, 0xcd, 0xd0, 0xc1, 0x46, 0xc5, 0x2b, 0xd9, 0x93, 0xc1, 0x95, - 0xbb, 0x2e, 0x5a, 0x32, 0x1d, 0xd7, 0xd3, 0xed, 0xcb, 0x4b, 0xb6, 0x13, 0x44, 0x4d, 0xf6, 0xaf, - 0xd3, 0x8f, 0xf8, 0x8c, 0x2d, 0x8a, 0x36, 0x22, 0x87, 0xa2, 0x90, 0xc3, 0x56, 0x86, 0xc3, 0x04, - 0x4c, 0xd7, 0xa3, 0xf7, 0xd7, 0xbb, 0x48, 0xb7, 0x2f, 0xbb, 0x25, 0xab, 0x5d, 0xb6, 0x3b, 0xbb, - 0x3b, 0x96, 0xcb, 0x6c, 0x82, 0xa8, 0xcf, 0x58, 0x3a, 0xe4, 0x12, 0xb1, 0x39, 0x00, 0xca, 0xb5, - 0xd5, 0x55, 0xad, 0xdc, 0xa8, 0xd4, 0xaa, 0xc5, 0x63, 0x58, 0x5a, 0x8d, 0xd2, 0xc2, 0x2a, 0x96, - 0xce, 0x4f, 0x81, 0x49, 0xbf, 0x4d, 0xb3, 0x30, 0x28, 0x19, 0x3f, 0x0c, 0x8a, 0x5a, 0x02, 0x93, - 0x7e, 0x2b, 0x67, 0x23, 0xc2, 0xa3, 0x7a, 0x8f, 0xbd, 0xee, 0x18, 0x8e, 0x47, 0xfc, 0xa5, 0x7d, - 0x22, 0x0b, 0x86, 0x8b, 0xf4, 0xe0, 0xb7, 0x73, 0x8f, 0x65, 0x1c, 0xa8, 0x60, 0xae, 0xb4, 0xba, - 0xda, 0xac, 0xe9, 0xcd, 0x6a, 0xad, 0xb1, 0x52, 0xa9, 0x2e, 0xd3, 0x11, 0xb2, 0xb2, 0x5c, 0xad, - 0xe9, 0x1a, 0x1d, 0x20, 0xeb, 0xc5, 0x0c, 0xbd, 0xc4, 0x6e, 0x61, 0x12, 0x14, 0xba, 0x44, 0xba, - 0xf0, 0x0b, 0x4a, 0xc2, 0xf3, 0xee, 0x01, 0x4e, 0x11, 0xd7, 0x6c, 0x09, 0x3e, 0xe7, 0xd9, 0x3e, - 0x67, 0x42, 0xcf, 0x81, 0x19, 0x6a, 0xcb, 0xb9, 0x64, 0xf9, 0x9e, 0xdd, 0x54, 0x2b, 0xa4, 0xc1, - 0x8f, 0x64, 0x13, 0x1c, 0x82, 0xef, 0xcb, 0x51, 0x32, 0xe3, 0xe2, 0x2f, 0x86, 0xb9, 0xb4, 0x4e, - 0x05, 0x73, 0x95, 0x6a, 0x43, 0xd3, 0xab, 0xa5, 0x55, 0x96, 0x45, 0x51, 0xcf, 0x80, 0x93, 0xd5, - 0x1a, 0x8b, 0xe9, 0x57, 0x27, 0xd7, 0x63, 0xaf, 0xad, 0xd7, 0xf4, 0x46, 0x31, 0xaf, 0x9e, 0x06, - 0x2a, 0x7d, 0x16, 0x6e, 0x97, 0x2f, 0xa8, 0x8f, 0x06, 0xd7, 0xaf, 0x56, 0xd6, 0x2a, 0x8d, 0x66, - 0x6d, 0xa9, 0xa9, 0xd7, 0x2e, 0xd4, 0x31, 0x82, 0xba, 0xb6, 0x5a, 0xc2, 0x8a, 0xc4, 0x5d, 0x66, - 0x37, 0xa1, 0x5e, 0x01, 0x8e, 0x93, 0x8b, 0x2a, 0xc9, 0x0d, 0xf5, 0xb4, 0xbc, 0x49, 0xf5, 0x1a, - 0x70, 0xa6, 0x52, 0xad, 0x6f, 0x2c, 0x2d, 0x55, 0xca, 0x15, 0xad, 0xda, 0x68, 0xae, 0x6b, 0xfa, - 0x5a, 0xa5, 0x5e, 0xc7, 0xff, 0x16, 0xa7, 0xe0, 0x87, 0x14, 0x50, 0xa0, 0x7d, 0x26, 0x7c, 0x9f, - 0x02, 0x66, 0xcf, 0x1b, 0x1d, 0x13, 0x0f, 0x14, 0xe4, 0x0e, 0xc1, 0x9e, 0xe3, 0x22, 0x1e, 0xb9, - 0x6b, 0x90, 0x39, 0x9c, 0x93, 0x17, 0xf8, 0x73, 0x4a, 0xc2, 0xe3, 0x22, 0x0c, 0x08, 0x5a, 0xe2, - 0xbc, 0x50, 0x5a, 0xc4, 0xe4, 0xe6, 0xd5, 0xd9, 0x04, 0xc7, 0x45, 0xe4, 0xc9, 0x27, 0x03, 0xff, - 0x37, 0x46, 0x05, 0x7e, 0x11, 0xcc, 0x6c, 0x54, 0x4b, 0x1b, 0x8d, 0x95, 0x9a, 0x5e, 0xf9, 0x09, - 0x12, 0x6d, 0x7c, 0x16, 0x4c, 0x2d, 0xd5, 0xf4, 0x85, 0xca, 0xe2, 0xa2, 0x56, 0x2d, 0xe6, 0xd5, - 0x2b, 0xc1, 0x15, 0x75, 0x4d, 0x3f, 0x5f, 0x29, 0x6b, 0xcd, 0x8d, 0x6a, 0xe9, 0x7c, 0xa9, 0xb2, - 0x4a, 0xfa, 0x88, 0x42, 0xcc, 0xfd, 0x87, 0x13, 0xf0, 0x67, 0x72, 0x00, 0xd0, 0xaa, 0x63, 0x4b, - 0x9a, 0xbf, 0x25, 0xef, 0x2f, 0x93, 0x4e, 0x1a, 0x42, 0x32, 0x11, 0xed, 0xb7, 0x02, 0x26, 0x1d, - 0xf6, 0x81, 0x2d, 0x9f, 0x0c, 0xa2, 0x43, 0x1f, 0x7d, 0x6a, 0x7a, 0xf0, 0x3b, 0x7c, 0x7f, 0x92, - 0x39, 0x42, 0x24, 0x63, 0xc9, 0x90, 0x5c, 0x1a, 0x0d, 0x90, 0xf0, 0x05, 0x19, 0x30, 0x27, 0x56, - 0x0c, 0x57, 0x82, 0x18, 0x53, 0x72, 0x95, 0x10, 0x7f, 0xe6, 0x8c, 0xac, 0x73, 0xb7, 0xb3, 0xe1, - 0x14, 0xf8, 0x2d, 0x93, 0x9e, 0xfc, 0xf6, 0x2d, 0x96, 0x62, 0x06, 0x33, 0x8f, 0x8d, 0x0e, 0x7a, - 0x45, 0x7a, 0xe3, 0x41, 0xaf, 0xa8, 0xc0, 0xf7, 0xe4, 0xc0, 0xac, 0x70, 0x0d, 0x1f, 0xfc, 0x76, - 0x46, 0xe6, 0x6a, 0x2d, 0xee, 0x82, 0xbf, 0xcc, 0x61, 0x2f, 0xf8, 0x3b, 0xf7, 0xb3, 0x19, 0x30, - 0xc1, 0x12, 0x89, 0x80, 0x6b, 0x55, 0x6c, 0x0b, 0x1c, 0x07, 0xd3, 0xcb, 0x5a, 0xa3, 0x59, 0x6f, - 0x94, 0xf4, 0x86, 0xb6, 0x58, 0xcc, 0xa8, 0xa7, 0xc0, 0x89, 0x75, 0x4d, 0xaf, 0xd7, 0xb0, 0x3c, - 0xd7, 0xf5, 0x1a, 0xe9, 0x08, 0xa9, 0x98, 0x31, 0x0c, 0xab, 0xda, 0xe2, 0xb2, 0xd6, 0x5c, 0x28, - 0xd5, 0xb5, 0xa2, 0x82, 0xff, 0xad, 0xd6, 0x1a, 0x5a, 0xbd, 0xb9, 0x58, 0x29, 0xe9, 0xf7, 0x17, - 0x73, 0xf8, 0xdf, 0x7a, 0x43, 0x2f, 0x35, 0xb4, 0xe5, 0x4a, 0x99, 0x5c, 0x2c, 0x8f, 0x5b, 0x40, - 0x1e, 0x0f, 0xa6, 0xda, 0xda, 0x7a, 0xe3, 0xfe, 0x62, 0x21, 0xb9, 0x57, 0x5f, 0x6f, 0xe5, 0xc6, - 0xec, 0xd5, 0x17, 0x57, 0xfc, 0x18, 0x6e, 0x20, 0x54, 0x40, 0x91, 0x72, 0xa0, 0x3d, 0xd8, 0x45, - 0x8e, 0x89, 0xac, 0x16, 0x82, 0x97, 0x64, 0xa2, 0x88, 0x1e, 0x88, 0xaf, 0x47, 0xc6, 0x08, 0xce, - 0xf2, 0xa4, 0x2f, 0x3d, 0x46, 0x7b, 0xee, 0x80, 0xd1, 0xfe, 0xc9, 0xa4, 0x6e, 0x7d, 0xbd, 0xec, - 0x8e, 0x04, 0xb2, 0x8f, 0x27, 0x71, 0xeb, 0x1b, 0xc0, 0xc1, 0x58, 0x82, 0x03, 0x47, 0x8c, 0xe9, - 0x45, 0x05, 0xbe, 0x7d, 0x0a, 0x14, 0x29, 0xa3, 0x9c, 0xaf, 0xd4, 0xaf, 0xb0, 0xbb, 0x10, 0x9b, - 0x09, 0x42, 0xd3, 0xf9, 0x87, 0xfd, 0xb3, 0xe2, 0x61, 0x7f, 0x61, 0xe9, 0x4d, 0xe9, 0xdd, 0xdf, - 0x4e, 0xda, 0xfc, 0x38, 0xc7, 0xa8, 0xe8, 0x68, 0xa0, 0xe9, 0x35, 0xbf, 0xd8, 0xe2, 0xc7, 0x73, - 0x5f, 0x17, 0xbb, 0x91, 0x4f, 0x93, 0x45, 0x26, 0xfe, 0x5a, 0xc2, 0xa4, 0x5e, 0xb2, 0x82, 0x63, - 0x5a, 0xcc, 0x5d, 0x7d, 0xe9, 0x79, 0xc9, 0x0e, 0xe2, 0x20, 0x7d, 0x14, 0x7e, 0x90, 0x05, 0xb9, - 0xba, 0xed, 0x78, 0xa3, 0xc2, 0x20, 0xe9, 0xce, 0x1e, 0x27, 0x81, 0x7a, 0xf4, 0xcc, 0x29, 0xbd, - 0x9d, 0xbd, 0xf8, 0xf2, 0xc7, 0x10, 0xdd, 0xef, 0x38, 0x98, 0xa3, 0x9c, 0x04, 0x57, 0x5f, 0x7c, - 0x3f, 0x4b, 0xfb, 0xab, 0xfb, 0x64, 0x11, 0x39, 0x07, 0x66, 0xb8, 0x9d, 0xb5, 0xe0, 0xfa, 0x66, - 0x3e, 0x0d, 0xbe, 0x91, 0xc7, 0x65, 0x51, 0xc4, 0xa5, 0xdf, 0xbc, 0x31, 0xb8, 0x3d, 0x62, 0x54, - 0x3d, 0x53, 0x92, 0x40, 0x81, 0x31, 0x85, 0xa7, 0x8f, 0xc8, 0x73, 0x14, 0x50, 0x60, 0x9e, 0x4d, - 0x23, 0x45, 0x20, 0x69, 0xcb, 0x08, 0x84, 0x20, 0xe7, 0x01, 0xa5, 0x8c, 0xba, 0x65, 0xc4, 0x97, - 0x9f, 0x3e, 0x0e, 0xff, 0xca, 0x5c, 0xf6, 0x4a, 0x7b, 0x86, 0xd9, 0x31, 0x2e, 0x76, 0x12, 0x04, - 0xe8, 0xfd, 0x48, 0xc2, 0x43, 0x4a, 0x41, 0x55, 0x85, 0xf2, 0x22, 0x24, 0xfe, 0xe3, 0x60, 0xca, - 0x09, 0x16, 0xd6, 0xfc, 0x33, 0xdc, 0x3d, 0xee, 0x92, 0xec, 0xbb, 0x1e, 0xe6, 0x4c, 0x74, 0x22, - 0x49, 0x8a, 0x9f, 0xb1, 0x9c, 0xa0, 0x98, 0x2e, 0xb5, 0xdb, 0x4b, 0xc8, 0xf0, 0x76, 0x1d, 0xd4, - 0x4e, 0x34, 0x44, 0x88, 0x22, 0x9a, 0xe2, 0x25, 0x21, 0x84, 0xc8, 0x5b, 0x15, 0xd1, 0x79, 0xe2, - 0x80, 0xde, 0xc0, 0xe7, 0x65, 0x24, 0x5d, 0xd2, 0xdb, 0x02, 0x48, 0x6a, 0x02, 0x24, 0x4f, 0x19, - 0x8e, 0x89, 0xf4, 0x01, 0xf9, 0x55, 0x05, 0xcc, 0x51, 0x3b, 0x61, 0xd4, 0x98, 0xfc, 0x6e, 0x42, - 0x4f, 0x08, 0xee, 0x72, 0x21, 0x9e, 0x9d, 0x91, 0xc0, 0x92, 0xc4, 0x6f, 0x42, 0x8e, 0x8f, 0xf4, - 0x91, 0xf9, 0x4c, 0x01, 0x00, 0xce, 0xbb, 0xed, 0x23, 0x85, 0x30, 0x5c, 0x1d, 0x7c, 0x07, 0x9b, - 0x7f, 0xd4, 0x85, 0xd8, 0xc9, 0x9c, 0xe7, 0x5a, 0xb0, 0xad, 0x22, 0x26, 0x4a, 0x8d, 0x2a, 0x7f, - 0x91, 0xd0, 0xe6, 0x65, 0xbe, 0x65, 0x03, 0x07, 0xf7, 0x21, 0x7b, 0xb9, 0x8f, 0x26, 0x30, 0x7e, - 0x07, 0xb1, 0x92, 0x0c, 0xb5, 0xd5, 0x21, 0xe6, 0x92, 0x67, 0xc0, 0x49, 0x5d, 0x2b, 0x2d, 0xd6, - 0xaa, 0xab, 0xf7, 0xf3, 0x37, 0xcd, 0x14, 0x15, 0x7e, 0x72, 0x92, 0x0a, 0x6c, 0xaf, 0x4d, 0xd8, - 0x07, 0x8a, 0xb2, 0x8a, 0x9b, 0xad, 0x70, 0xd3, 0xf9, 0xc1, 0xbd, 0x9a, 0x04, 0xd9, 0xa3, 0x44, - 0xe1, 0xcd, 0x53, 0x5c, 0x33, 0x7a, 0xbe, 0x02, 0x8a, 0xe1, 0x65, 0xe7, 0xec, 0x4a, 0xb1, 0x9a, - 0xe8, 0xfc, 0xd6, 0xa5, 0xbb, 0x28, 0xa1, 0xf3, 0x9b, 0x9f, 0xa0, 0xde, 0x08, 0xe6, 0x5a, 0xdb, - 0xa8, 0x75, 0xa9, 0x62, 0xf9, 0xbb, 0xc3, 0x74, 0x2b, 0xb1, 0x27, 0x55, 0x04, 0xe6, 0x3e, 0x11, - 0x18, 0x71, 0x12, 0x2d, 0x0c, 0xd2, 0x3c, 0x53, 0x11, 0xb8, 0xfc, 0x51, 0x80, 0x4b, 0x55, 0xc0, - 0xe5, 0xce, 0xa1, 0xa8, 0x26, 0x83, 0xa5, 0x3a, 0x04, 0x2c, 0x10, 0x9c, 0xae, 0xad, 0x37, 0x2a, - 0xb5, 0x6a, 0x73, 0xa3, 0xae, 0x2d, 0x36, 0x17, 0x7c, 0x70, 0xea, 0x45, 0x05, 0x7e, 0x23, 0x0b, - 0x26, 0x28, 0x5b, 0x6e, 0xcf, 0xe5, 0xe4, 0xf1, 0x5e, 0x7f, 0xf0, 0xed, 0xd2, 0x67, 0xf8, 0x03, - 0x41, 0xb0, 0x72, 0x22, 0xfa, 0xa9, 0x27, 0x83, 0x09, 0x0a, 0xb2, 0xef, 0x34, 0x72, 0x36, 0xa2, - 0x97, 0x62, 0x64, 0x74, 0x3f, 0xbb, 0xe4, 0x79, 0xfe, 0x01, 0x6c, 0xa4, 0x3f, 0xb2, 0xbc, 0x41, - 0xa1, 0x66, 0xf0, 0x05, 0xd3, 0xdb, 0x26, 0x4e, 0x81, 0xf0, 0xe9, 0x32, 0x4b, 0x94, 0xb7, 0x80, - 0xfc, 0x1e, 0xce, 0x3d, 0xc0, 0xc1, 0x92, 0x66, 0x82, 0x7f, 0x20, 0x1d, 0xe9, 0x4a, 0xd0, 0xcf, - 0x80, 0xa7, 0xe8, 0x0d, 0xcf, 0x41, 0x3d, 0xa1, 0x0a, 0x85, 0x43, 0x4d, 0xca, 0x4d, 0x4a, 0xe2, - 0x78, 0x8d, 0x52, 0x2c, 0xa5, 0x0f, 0xd4, 0xff, 0x7b, 0x1c, 0x4c, 0xac, 0x98, 0xae, 0x67, 0x3b, - 0xfb, 0xf0, 0xf5, 0x19, 0x30, 0x71, 0x1e, 0x39, 0xae, 0x69, 0x5b, 0x07, 0x76, 0xb5, 0xaf, 0x03, - 0xd3, 0x5d, 0x07, 0xed, 0x99, 0xf6, 0xae, 0x1b, 0xae, 0xa0, 0xf0, 0x49, 0x58, 0x24, 0xc6, 0xae, - 0xb7, 0x6d, 0x3b, 0x61, 0x60, 0x03, 0xff, 0x5d, 0x3d, 0x0b, 0x00, 0x7d, 0xae, 0x1a, 0x3b, 0x88, - 0xed, 0xd5, 0x73, 0x29, 0xaa, 0x0a, 0x72, 0x9e, 0xb9, 0x83, 0x58, 0xa4, 0x53, 0xf2, 0x8c, 0xb5, - 0x84, 0x44, 0x0d, 0x63, 0xd1, 0xd9, 0x14, 0xdd, 0x7f, 0x85, 0x9f, 0x53, 0xc0, 0xf4, 0x32, 0xf2, - 0x18, 0xab, 0x2e, 0x7c, 0x61, 0x46, 0xea, 0x72, 0x01, 0x3c, 0x10, 0x76, 0x0c, 0xd7, 0xff, 0x2f, - 0x58, 0x27, 0x15, 0x13, 0xc3, 0xb0, 0xab, 0x0a, 0x1f, 0x73, 0x99, 0xc4, 0xe0, 0xf2, 0x2a, 0xd4, - 0xc5, 0x8f, 0x65, 0x66, 0x6b, 0xe3, 0x07, 0x3f, 0xc0, 0xf7, 0x64, 0x65, 0xcf, 0xaf, 0x32, 0xd9, - 0xcf, 0x73, 0xf5, 0x89, 0xec, 0x33, 0x26, 0xf7, 0x58, 0x8e, 0x03, 0xe1, 0xb4, 0x79, 0x4a, 0x8c, - 0x8c, 0x1e, 0xe4, 0x96, 0x3c, 0xf9, 0x3a, 0x98, 0x93, 0xf4, 0xb5, 0xf1, 0xbb, 0x0a, 0x98, 0xae, - 0x6f, 0xdb, 0x97, 0x7d, 0x39, 0xfe, 0x94, 0x1c, 0xb0, 0xd7, 0x80, 0xa9, 0xbd, 0x1e, 0x50, 0xc3, - 0x84, 0xe8, 0xeb, 0xbe, 0xe1, 0x43, 0x4a, 0x52, 0x98, 0x38, 0xe6, 0x46, 0x7e, 0x19, 0xb7, 0xfa, - 0x44, 0x30, 0xc1, 0xb8, 0x66, 0xeb, 0x22, 0xf1, 0x00, 0xfb, 0x99, 0xf9, 0x0a, 0xe6, 0xc4, 0x0a, - 0x26, 0x43, 0x3e, 0xba, 0x72, 0xe9, 0x23, 0xff, 0xa7, 0x59, 0x12, 0xf7, 0xc0, 0x07, 0xbe, 0x3c, - 0x02, 0xe0, 0xe1, 0xf7, 0x32, 0xb2, 0xab, 0x87, 0x81, 0x04, 0x02, 0x0e, 0x0e, 0x75, 0x71, 0xc8, - 0x40, 0x72, 0xe9, 0xcb, 0xf3, 0x65, 0x39, 0x30, 0xb3, 0x68, 0x6e, 0x6e, 0x06, 0x9d, 0xe4, 0x8b, - 0x24, 0x3b, 0xc9, 0xe8, 0x9d, 0x67, 0x6c, 0x8c, 0xee, 0x3a, 0x0e, 0xb2, 0xfc, 0x4a, 0xb1, 0xe6, - 0xd4, 0x93, 0xaa, 0xde, 0x04, 0x8e, 0xfb, 0xe3, 0x02, 0xdf, 0x51, 0x4e, 0xe9, 0xbd, 0xc9, 0xf0, - 0x3b, 0xd2, 0x5b, 0x4f, 0xbe, 0x44, 0xf9, 0x2a, 0x45, 0x34, 0xc0, 0xbb, 0xc0, 0xec, 0x36, 0xcd, - 0x4d, 0xe6, 0xe7, 0x7e, 0x67, 0x79, 0xba, 0x27, 0xae, 0xec, 0x1a, 0x72, 0x5d, 0x63, 0x0b, 0xe9, - 0x62, 0xe6, 0x9e, 0xe6, 0xab, 0x24, 0xb9, 0x25, 0x49, 0x6e, 0x17, 0x4b, 0xa2, 0x26, 0xe9, 0x6b, - 0xc7, 0x57, 0x1e, 0x09, 0x72, 0x4b, 0x66, 0x07, 0xc1, 0x9f, 0xcf, 0x82, 0x29, 0x1d, 0xb5, 0x6c, - 0xab, 0x85, 0xdf, 0x38, 0x3f, 0x94, 0x7f, 0xcc, 0xc8, 0xde, 0x0e, 0x88, 0xe9, 0xcc, 0x07, 0x34, - 0x22, 0xda, 0x8d, 0xdc, 0x2d, 0x80, 0xb1, 0xa4, 0xc6, 0x70, 0x97, 0x03, 0x9e, 0x1f, 0x6c, 0x6e, - 0x76, 0x6c, 0x43, 0x58, 0xa1, 0xea, 0x35, 0x85, 0x6e, 0x06, 0x45, 0xff, 0x38, 0x81, 0xed, 0xad, - 0x9b, 0x96, 0x15, 0x9c, 0x57, 0x3d, 0x90, 0x2e, 0x6e, 0xae, 0xc6, 0x86, 0xfc, 0x20, 0x75, 0x67, - 0xa5, 0x47, 0x68, 0xf6, 0x8d, 0x60, 0xee, 0xe2, 0xbe, 0x87, 0x5c, 0x96, 0x8b, 0x15, 0x9b, 0xd3, - 0x7b, 0x52, 0xb9, 0x80, 0xbd, 0x71, 0xa1, 0x41, 0x62, 0x0a, 0x4c, 0x26, 0xea, 0x95, 0x21, 0xa6, - 0x69, 0x27, 0x41, 0xb1, 0x5a, 0x5b, 0xd4, 0x88, 0x5b, 0x94, 0xef, 0x67, 0xb2, 0x05, 0x5f, 0xac, - 0x80, 0x19, 0xe2, 0x63, 0xe0, 0xa3, 0x70, 0xbd, 0xc4, 0xa4, 0x01, 0x7e, 0x51, 0xda, 0x65, 0x8a, - 0x54, 0x99, 0x2f, 0x20, 0x5a, 0xd0, 0x9b, 0x66, 0xa7, 0x57, 0xd0, 0x79, 0xbd, 0x27, 0xb5, 0x0f, - 0x20, 0x4a, 0x5f, 0x40, 0x7e, 0x5b, 0xca, 0x6f, 0x6a, 0x10, 0x77, 0x47, 0x85, 0xca, 0xef, 0x28, - 0x60, 0x1a, 0x4f, 0x52, 0x7c, 0x50, 0x6a, 0x02, 0x28, 0xb6, 0xd5, 0xd9, 0x0f, 0xd7, 0x2e, 0xfc, - 0xd7, 0x44, 0x8d, 0xe4, 0xaf, 0xa5, 0xa7, 0xd7, 0x44, 0x44, 0x1c, 0x2f, 0x63, 0xc2, 0xef, 0x03, - 0x52, 0x93, 0xee, 0x01, 0xcc, 0x1d, 0x15, 0x7c, 0x6f, 0xc9, 0x83, 0xc2, 0x46, 0x97, 0x20, 0xf7, - 0xd5, 0xac, 0x4c, 0xf0, 0xeb, 0x03, 0x3e, 0xf3, 0xd8, 0xcc, 0xea, 0xd8, 0x2d, 0xa3, 0xb3, 0x1e, - 0x1e, 0x3e, 0x0a, 0x13, 0xd4, 0x3b, 0x99, 0x1b, 0x1d, 0x3d, 0xb9, 0x75, 0x63, 0x6c, 0x5c, 0x68, - 0x22, 0x23, 0xee, 0x7c, 0xc2, 0x2d, 0xe0, 0x44, 0xdb, 0x74, 0x8d, 0x8b, 0x1d, 0xa4, 0x59, 0x2d, - 0x67, 0x9f, 0x8a, 0x83, 0x4d, 0xab, 0x0e, 0x7c, 0x50, 0xef, 0x06, 0x79, 0xd7, 0xdb, 0xef, 0xd0, - 0x79, 0x22, 0x7f, 0x9c, 0x21, 0xb2, 0xa8, 0x3a, 0xce, 0xae, 0xd3, 0xbf, 0xf8, 0xab, 0x81, 0x27, - 0x24, 0xaf, 0x06, 0xbe, 0x1d, 0x14, 0x6c, 0xc7, 0xdc, 0x32, 0xe9, 0x55, 0x2f, 0x73, 0x07, 0xc2, - 0x9f, 0x51, 0x53, 0xa0, 0x46, 0xb2, 0xe8, 0x2c, 0x2b, 0xfc, 0x40, 0x56, 0x36, 0xd6, 0x0a, 0xe1, - 0x91, 0x82, 0x33, 0x9e, 0x9b, 0xfc, 0x5f, 0x29, 0x15, 0x05, 0x25, 0x9a, 0xad, 0xf4, 0x07, 0xe1, - 0xcf, 0x66, 0xc1, 0xe4, 0xa2, 0x7d, 0xd9, 0x22, 0x0a, 0x7b, 0x87, 0x9c, 0xcd, 0xda, 0xe7, 0x5c, - 0x9c, 0x78, 0x93, 0x60, 0xac, 0x13, 0x3c, 0xa9, 0xad, 0x5f, 0x64, 0x04, 0x0c, 0xb1, 0x2d, 0x40, - 0xf2, 0x7e, 0xb7, 0xb8, 0x72, 0xd2, 0x97, 0xeb, 0x9f, 0x29, 0x20, 0xb7, 0xe8, 0xd8, 0x5d, 0xf8, - 0xb6, 0x4c, 0x02, 0xff, 0x80, 0xb6, 0x63, 0x77, 0x1b, 0xe4, 0x82, 0xa6, 0xd0, 0xf3, 0x9f, 0x4f, - 0x53, 0xef, 0x00, 0x93, 0x5d, 0xdb, 0x35, 0x3d, 0x7f, 0x3a, 0x30, 0x77, 0xdb, 0x23, 0xfa, 0xb6, - 0xca, 0x75, 0x96, 0x49, 0x0f, 0xb2, 0xe3, 0xde, 0x97, 0x88, 0x10, 0xcb, 0x05, 0x8b, 0xd1, 0xbf, - 0xa4, 0xaa, 0x27, 0x15, 0xbe, 0x84, 0x47, 0xf2, 0x29, 0x22, 0x92, 0x8f, 0xea, 0x23, 0x61, 0xc7, - 0xee, 0x8e, 0x64, 0x47, 0xef, 0xe5, 0x01, 0xaa, 0x4f, 0x15, 0x50, 0xbd, 0x59, 0xaa, 0xcc, 0xf4, - 0x11, 0xfd, 0x40, 0x0e, 0x00, 0x62, 0x2e, 0x6c, 0xe0, 0x89, 0x8c, 0x9c, 0xad, 0xf4, 0xdc, 0x1c, - 0x27, 0xcb, 0x92, 0x28, 0xcb, 0xc7, 0x44, 0x58, 0x23, 0x84, 0x7c, 0x84, 0x44, 0x4b, 0x20, 0xbf, - 0x8b, 0x3f, 0x33, 0x89, 0x4a, 0x92, 0x20, 0xaf, 0x3a, 0xfd, 0x13, 0xfe, 0x69, 0x06, 0xe4, 0x49, - 0x82, 0x7a, 0x16, 0x00, 0x32, 0x40, 0xd3, 0x33, 0x24, 0x19, 0x32, 0x14, 0x73, 0x29, 0x44, 0x5b, - 0xcd, 0x36, 0xfb, 0x4c, 0x4d, 0xdf, 0x30, 0x01, 0xff, 0x4d, 0x86, 0x6d, 0x42, 0x8b, 0x0d, 0xe4, - 0x5c, 0x0a, 0xfe, 0x9b, 0xbc, 0xad, 0xa2, 0x4d, 0x1a, 0x3b, 0x37, 0xa7, 0x87, 0x09, 0xc1, 0xdf, - 0xab, 0xc1, 0x8d, 0x4b, 0xfe, 0xdf, 0x24, 0x05, 0x4f, 0x6a, 0x89, 0x5a, 0x2e, 0x84, 0x45, 0x14, - 0x48, 0xa6, 0xde, 0x64, 0xf8, 0xda, 0x40, 0x6d, 0x16, 0x05, 0xb5, 0x79, 0x5c, 0x02, 0xf1, 0xa6, - 0xaf, 0x3c, 0x5f, 0xce, 0x83, 0xa9, 0xaa, 0xdd, 0x66, 0xba, 0xc3, 0x4d, 0xfc, 0x3e, 0x9e, 0x4f, - 0x34, 0xf1, 0x0b, 0x68, 0x44, 0x28, 0xc8, 0xbd, 0xa2, 0x82, 0xc8, 0x51, 0xe0, 0xf5, 0x43, 0x5d, - 0x00, 0x05, 0xa2, 0xbd, 0x07, 0xaf, 0xf2, 0x89, 0x23, 0x41, 0x44, 0xab, 0xb3, 0x3f, 0xff, 0xcd, - 0xe9, 0xd8, 0x7f, 0x04, 0x79, 0x52, 0xc1, 0x98, 0xad, 0x14, 0xb1, 0xa2, 0xd9, 0xf8, 0x8a, 0x2a, - 0xf1, 0x15, 0xcd, 0xf5, 0x56, 0x34, 0xc9, 0x7c, 0x3e, 0x4a, 0x43, 0xd2, 0xd7, 0xf1, 0xff, 0x3e, - 0x01, 0x40, 0xd5, 0xd8, 0x33, 0xb7, 0xe8, 0x56, 0xec, 0xe7, 0xfc, 0x79, 0x0c, 0xdb, 0x34, 0xfd, - 0x4f, 0xdc, 0x40, 0x78, 0x07, 0x98, 0x60, 0xe3, 0x1e, 0xab, 0xc8, 0xb5, 0x42, 0x45, 0x42, 0x2a, - 0xd4, 0xbc, 0x7c, 0xd0, 0xd3, 0xfd, 0xfc, 0xc2, 0xad, 0xa3, 0xd9, 0x9e, 0x5b, 0x47, 0xfb, 0xef, - 0x25, 0x44, 0xdc, 0x45, 0x0a, 0xdf, 0x2b, 0xbd, 0x9f, 0xc5, 0xf1, 0xc3, 0xd5, 0x28, 0xa2, 0x09, - 0xde, 0x0e, 0x26, 0xec, 0x60, 0xf7, 0x58, 0x89, 0x5c, 0xcf, 0xaa, 0x58, 0x9b, 0xb6, 0xee, 0xe7, - 0x94, 0xdc, 0xc4, 0x92, 0xe2, 0x63, 0x2c, 0x67, 0x22, 0x4e, 0x2f, 0xfb, 0x71, 0x88, 0x70, 0x3d, - 0x2e, 0x98, 0xde, 0xf6, 0xaa, 0x69, 0x5d, 0x72, 0xe1, 0xbf, 0x97, 0xb3, 0x20, 0x39, 0xfc, 0xb3, - 0xc9, 0xf0, 0x17, 0xc3, 0x3c, 0xd4, 0x45, 0xd4, 0xee, 0x8e, 0xa2, 0xd2, 0x9f, 0xdb, 0x08, 0x00, - 0xef, 0x04, 0x05, 0xca, 0x28, 0xeb, 0x44, 0xcf, 0x45, 0xe2, 0x17, 0x50, 0xd2, 0xd9, 0x1f, 0xf0, - 0x3d, 0x01, 0x8e, 0xe7, 0x05, 0x1c, 0x17, 0x0e, 0xc5, 0x59, 0xea, 0x90, 0x9e, 0x7b, 0x3c, 0x98, - 0x60, 0x92, 0x56, 0xe7, 0xf8, 0x56, 0x5c, 0x3c, 0xa6, 0x02, 0x50, 0x58, 0xb3, 0xf7, 0x50, 0xc3, - 0x2e, 0x66, 0xf0, 0x33, 0xe6, 0xaf, 0x61, 0x17, 0xb3, 0xf0, 0x15, 0x93, 0x60, 0x32, 0x08, 0x00, - 0xf3, 0xd9, 0x2c, 0x28, 0x96, 0x1d, 0x64, 0x78, 0x68, 0xc9, 0xb1, 0x77, 0x68, 0x8d, 0xe4, 0x5d, - 0x31, 0x7f, 0x55, 0xda, 0x9f, 0x22, 0x08, 0xcc, 0xd2, 0x5b, 0x58, 0x04, 0x96, 0x74, 0x31, 0x31, - 0xeb, 0x2f, 0x26, 0xc2, 0xb7, 0x4a, 0xf9, 0x57, 0xc8, 0x96, 0x92, 0x7e, 0x53, 0xfb, 0x64, 0x16, - 0xe4, 0xcb, 0x1d, 0xdb, 0x42, 0xfc, 0xa5, 0xfa, 0x03, 0x0f, 0xa6, 0xf4, 0xdf, 0x51, 0x80, 0xcf, - 0xca, 0xca, 0xda, 0x1a, 0xa1, 0x00, 0x70, 0xd9, 0x92, 0xb2, 0x95, 0x1b, 0xa4, 0x62, 0x49, 0xa7, - 0x2f, 0xd0, 0x6f, 0x64, 0xc1, 0x14, 0x0d, 0xa5, 0x52, 0xea, 0x74, 0xe0, 0x23, 0x42, 0xa1, 0xf6, - 0x09, 0xa2, 0x03, 0x7f, 0x5b, 0xda, 0x1f, 0x3e, 0xa8, 0x55, 0x40, 0x3b, 0x41, 0x4c, 0x99, 0x64, - 0xee, 0xd9, 0x72, 0x7b, 0x62, 0x03, 0x19, 0x4a, 0x5f, 0xd4, 0x7f, 0x99, 0xc5, 0x06, 0x80, 0x75, - 0x69, 0xdd, 0x41, 0x7b, 0x26, 0xba, 0x0c, 0xaf, 0x0e, 0x85, 0x7d, 0x30, 0x4e, 0xc4, 0x9b, 0xa4, - 0x17, 0x71, 0x38, 0x92, 0x91, 0x5b, 0x52, 0xd3, 0x9d, 0x30, 0x13, 0xeb, 0xc5, 0x7b, 0x83, 0x77, - 0x70, 0x64, 0x74, 0x3e, 0xbb, 0xe4, 0x9a, 0x4d, 0x34, 0x17, 0xe9, 0x0b, 0xf6, 0xa1, 0x09, 0x30, - 0xb9, 0x61, 0xb9, 0xdd, 0x8e, 0xe1, 0x6e, 0xc3, 0xef, 0x2b, 0xa0, 0x40, 0x2f, 0x90, 0x82, 0x3f, - 0x2e, 0x1c, 0x47, 0xff, 0xe9, 0x5d, 0xe4, 0xf8, 0xee, 0x55, 0xf4, 0xa5, 0xff, 0xfd, 0xd6, 0xf0, - 0x03, 0x8a, 0xec, 0x24, 0xd5, 0x2f, 0x34, 0xfe, 0xc6, 0xfe, 0x0a, 0x98, 0xec, 0x9a, 0x2d, 0x6f, - 0xd7, 0x09, 0x6e, 0x4b, 0x7e, 0xac, 0x1c, 0x95, 0x75, 0xfa, 0x97, 0x1e, 0xfc, 0x0e, 0x0d, 0x30, - 0xc1, 0x12, 0x0f, 0x6c, 0x0b, 0x1d, 0x3c, 0x5e, 0x79, 0x1a, 0x14, 0x0c, 0xc7, 0x33, 0x5d, 0xff, - 0x36, 0x7a, 0xf6, 0x86, 0xbb, 0x4b, 0xfa, 0xb4, 0xe1, 0x74, 0xfc, 0xc0, 0x15, 0x41, 0x02, 0xfc, - 0x1d, 0xa9, 0xf9, 0x63, 0x7c, 0xcd, 0x93, 0x41, 0x7e, 0xdf, 0x10, 0x6b, 0xcd, 0x57, 0x82, 0x2b, - 0xf4, 0x52, 0x43, 0x6b, 0xd2, 0x38, 0x07, 0x41, 0x48, 0x83, 0x36, 0xfc, 0x3e, 0xbf, 0x7e, 0x27, - 0x8e, 0x11, 0x4c, 0x8a, 0xe1, 0x18, 0x11, 0x24, 0xc4, 0x8c, 0x11, 0x6f, 0x91, 0xde, 0xdd, 0x09, - 0x44, 0x32, 0x60, 0x2d, 0x2f, 0xee, 0xa2, 0x98, 0x0f, 0x4a, 0xed, 0xd4, 0x0c, 0x2a, 0xe9, 0x08, - 0xc5, 0xff, 0xc6, 0x09, 0x30, 0xb1, 0x6c, 0x74, 0x3a, 0xc8, 0xd9, 0xc7, 0x43, 0x4b, 0xd1, 0xe7, - 0x70, 0xcd, 0xb0, 0xcc, 0x4d, 0x3c, 0xbf, 0x8f, 0xed, 0xf4, 0xde, 0x2b, 0x1d, 0x84, 0x94, 0x95, - 0x31, 0xdf, 0x4b, 0x3f, 0x42, 0xe6, 0xb7, 0x82, 0x9c, 0x69, 0x6d, 0xda, 0xac, 0xeb, 0xeb, 0x5d, - 0x45, 0xf7, 0x7f, 0x26, 0x53, 0x10, 0x92, 0x51, 0x32, 0x0e, 0xa9, 0x24, 0x17, 0xe9, 0xf7, 0x80, - 0xbf, 0x95, 0x03, 0xb3, 0x3e, 0x13, 0x15, 0xab, 0x8d, 0x1e, 0xe4, 0x97, 0x54, 0x5e, 0x9c, 0x93, - 0x3d, 0x43, 0xd5, 0x5b, 0x1f, 0x42, 0x2a, 0x42, 0xa4, 0x0d, 0x00, 0x5a, 0x86, 0x87, 0xb6, 0x6c, - 0xc7, 0x0c, 0xfa, 0xb5, 0x27, 0x24, 0xa1, 0x56, 0xa6, 0x7f, 0xef, 0xeb, 0x1c, 0x1d, 0xf5, 0x6e, - 0x30, 0x8d, 0x82, 0x63, 0xd2, 0xfe, 0x92, 0x4b, 0x2c, 0x5e, 0x7c, 0x7e, 0xf8, 0x97, 0x52, 0x47, - 0xb5, 0x64, 0xaa, 0x99, 0x0c, 0xb3, 0xe6, 0x70, 0x6d, 0x68, 0xa3, 0xba, 0x56, 0xd2, 0xeb, 0x2b, - 0xa5, 0xd5, 0xd5, 0x4a, 0x75, 0x39, 0x88, 0xf9, 0xa1, 0x82, 0xb9, 0xc5, 0xda, 0x85, 0x2a, 0x17, - 0x94, 0x25, 0x07, 0xd7, 0xc1, 0xa4, 0x2f, 0xaf, 0x7e, 0xbe, 0x91, 0xbc, 0xcc, 0x98, 0x6f, 0x24, - 0x97, 0x84, 0x8d, 0x2c, 0xb3, 0x15, 0x38, 0xcc, 0x90, 0x67, 0xf8, 0xc7, 0x06, 0xc8, 0x93, 0xb5, - 0x71, 0xf8, 0x4e, 0x72, 0x5d, 0x7d, 0xb7, 0x63, 0xb4, 0x10, 0xdc, 0x49, 0x60, 0x55, 0xfb, 0x51, - 0xf1, 0xb3, 0x07, 0xa2, 0xe2, 0x93, 0x47, 0x66, 0xbd, 0x9d, 0xec, 0xb7, 0x1e, 0xaf, 0xd3, 0x2c, - 0xe2, 0xa9, 0xa6, 0xd8, 0x5d, 0x12, 0xba, 0x8c, 0xcf, 0xd8, 0x8c, 0x50, 0xc9, 0x68, 0x9e, 0x92, - 0x59, 0x94, 0x72, 0xfb, 0x29, 0x71, 0x1c, 0x8d, 0xe1, 0xe6, 0xe6, 0x1c, 0xc8, 0xd7, 0xbb, 0x1d, - 0xd3, 0x83, 0xbf, 0x9e, 0x1d, 0x09, 0x66, 0xf4, 0x26, 0x03, 0x65, 0xe0, 0x4d, 0x06, 0xe1, 0x2e, - 0x68, 0x4e, 0x62, 0x17, 0xb4, 0x81, 0x1e, 0xf4, 0xc4, 0x5d, 0xd0, 0x3b, 0x58, 0xdc, 0x2e, 0xba, - 0x87, 0xfa, 0xa8, 0x3e, 0x22, 0x25, 0xd5, 0xea, 0x13, 0x10, 0xee, 0xdc, 0xe3, 0x59, 0x5c, 0x2a, - 0x00, 0x0a, 0x0b, 0xb5, 0x46, 0xa3, 0xb6, 0x56, 0x3c, 0x46, 0x02, 0x9a, 0xd4, 0xd6, 0x8b, 0x19, - 0x75, 0x0a, 0xe4, 0x2b, 0xd5, 0xaa, 0xa6, 0x17, 0xb3, 0x24, 0x52, 0x56, 0xa5, 0xb1, 0xaa, 0x15, - 0x15, 0x31, 0xac, 0x75, 0xac, 0x19, 0x2d, 0x96, 0x9d, 0xa6, 0x7a, 0xc9, 0x19, 0xd4, 0xd1, 0xfc, - 0xa4, 0xaf, 0x5c, 0xff, 0x59, 0x01, 0xf9, 0x35, 0xe4, 0x6c, 0x21, 0xf8, 0xd3, 0x09, 0x36, 0xeb, - 0x36, 0x4d, 0xc7, 0xa5, 0x71, 0xc5, 0xc2, 0xcd, 0x3a, 0x3e, 0x4d, 0xbd, 0x01, 0xcc, 0xba, 0xa8, - 0x65, 0x5b, 0x6d, 0x3f, 0x13, 0xed, 0x8f, 0xc4, 0x44, 0xf1, 0x4a, 0x71, 0x09, 0xc8, 0x08, 0xa3, - 0x23, 0xd9, 0x71, 0x4b, 0x02, 0x4c, 0xbf, 0x52, 0xd3, 0x07, 0xe6, 0x3b, 0x0a, 0xfe, 0xa9, 0xbb, - 0x0f, 0x5f, 0x2a, 0xbd, 0x8b, 0x7a, 0x0b, 0x28, 0x10, 0x35, 0xf5, 0xc7, 0xe8, 0xfe, 0xfd, 0x31, - 0xcb, 0xa3, 0x2e, 0x80, 0x13, 0x2e, 0xea, 0xa0, 0x96, 0x87, 0xda, 0xb8, 0xe9, 0xea, 0x03, 0x3b, - 0x85, 0x83, 0xd9, 0xe1, 0x9f, 0xf3, 0x00, 0xde, 0x25, 0x02, 0x78, 0x63, 0x1f, 0x51, 0xe2, 0x0a, - 0x45, 0xdb, 0xca, 0xb8, 0x1a, 0xf5, 0x8e, 0x1d, 0x2c, 0x6e, 0xfb, 0xef, 0xf8, 0xdb, 0xb6, 0xb7, - 0xd3, 0x21, 0xdf, 0x98, 0xc3, 0xbf, 0xff, 0xae, 0xce, 0x83, 0x09, 0xc3, 0xda, 0x27, 0x9f, 0x72, - 0x31, 0xb5, 0xf6, 0x33, 0xc1, 0x57, 0x04, 0xc8, 0xdf, 0x23, 0x20, 0xff, 0x18, 0x39, 0x76, 0xd3, - 0x07, 0xfe, 0xe7, 0x26, 0x40, 0x7e, 0xdd, 0x70, 0x3d, 0x04, 0xff, 0x1f, 0x45, 0x16, 0xf9, 0x1b, - 0xc1, 0xdc, 0xa6, 0xdd, 0xda, 0x75, 0x51, 0x5b, 0x6c, 0x94, 0x3d, 0xa9, 0xa3, 0xc0, 0x5c, 0xbd, - 0x19, 0x14, 0xfd, 0x44, 0x46, 0xd6, 0xdf, 0x4e, 0x3f, 0x90, 0x4e, 0x82, 0x24, 0xbb, 0xeb, 0x86, - 0xe3, 0xd5, 0x36, 0x49, 0x5a, 0x10, 0x24, 0x99, 0x4f, 0x14, 0xa0, 0x2f, 0xc4, 0x40, 0x3f, 0x11, - 0x0d, 0xfd, 0xa4, 0x04, 0xf4, 0x6a, 0x09, 0x4c, 0x6e, 0x9a, 0x1d, 0x44, 0x7e, 0x98, 0x22, 0x3f, - 0xf4, 0x1b, 0x93, 0x88, 0xec, 0x83, 0x31, 0x69, 0xc9, 0xec, 0x20, 0x3d, 0xf8, 0xcd, 0x9f, 0xc8, - 0x80, 0x70, 0x22, 0xb3, 0x4a, 0xfd, 0x5b, 0xb1, 0xe1, 0x65, 0x19, 0x3b, 0xc8, 0x5f, 0x44, 0xb3, - 0xd8, 0x61, 0x93, 0xb6, 0xe1, 0x19, 0x04, 0x8c, 0x19, 0x9d, 0x3c, 0x8b, 0xfe, 0x1d, 0x4a, 0xaf, - 0x7f, 0xc7, 0xf3, 0x94, 0x64, 0x3d, 0xa2, 0xcf, 0x6c, 0x44, 0x8b, 0xba, 0xe8, 0x03, 0x44, 0x2d, - 0xc5, 0xe0, 0x1d, 0x03, 0xd3, 0x32, 0x1c, 0xe4, 0xad, 0xf3, 0x1e, 0x15, 0x79, 0x5d, 0x4c, 0x24, - 0xae, 0x75, 0x6e, 0xdd, 0xd8, 0x41, 0xa4, 0xb0, 0x32, 0xfe, 0xc6, 0x5c, 0xa6, 0x0e, 0xa4, 0x87, - 0xfd, 0x6f, 0x7e, 0xd4, 0xfd, 0x6f, 0xbf, 0x3a, 0xa6, 0xdf, 0x0c, 0x5f, 0x9d, 0x03, 0x4a, 0x79, - 0xd7, 0x7b, 0x58, 0x77, 0xbf, 0x3f, 0x90, 0xf6, 0x57, 0x61, 0xfd, 0x59, 0xe4, 0x1d, 0xe2, 0x63, - 0xea, 0x7d, 0x13, 0x6a, 0x89, 0x9c, 0x5f, 0x4c, 0x54, 0xdd, 0xd2, 0xd7, 0x91, 0xb7, 0x29, 0x81, - 0xc3, 0xe3, 0x73, 0x32, 0x87, 0x37, 0xcd, 0x21, 0xed, 0x9f, 0xb8, 0x9e, 0x21, 0x78, 0xf7, 0x3b, - 0x9e, 0x9c, 0x10, 0x52, 0x8d, 0x6c, 0x93, 0x13, 0x51, 0xce, 0xe8, 0xf4, 0x05, 0xbe, 0x4c, 0xda, - 0x0d, 0x9c, 0x8a, 0x2d, 0xd6, 0x25, 0x30, 0x99, 0x4d, 0x25, 0x77, 0x4f, 0x64, 0x4c, 0xb1, 0xe9, - 0x03, 0xf6, 0xad, 0xe8, 0x25, 0xc3, 0x61, 0x10, 0x83, 0xaf, 0x94, 0xde, 0x56, 0xa2, 0xd5, 0x1e, - 0xb0, 0x5e, 0x98, 0x4c, 0xde, 0x72, 0x9b, 0x4e, 0xb1, 0x05, 0xa7, 0x2f, 0xf1, 0x6f, 0x2a, 0xa0, - 0x40, 0xb7, 0x12, 0xe1, 0x9b, 0x33, 0x09, 0x2e, 0xd8, 0xf6, 0x44, 0x57, 0xc0, 0xe0, 0x3d, 0xc9, - 0x9a, 0x83, 0xe0, 0x32, 0x98, 0x4b, 0xe4, 0x32, 0x28, 0x9e, 0xab, 0x94, 0x68, 0x47, 0xb4, 0x8e, - 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, 0xbe, 0x0c, 0xa5, 0x8f, 0xf7, 0xf3, 0xf3, 0x60, 0x86, 0x16, - 0x7d, 0xc1, 0x6c, 0x6f, 0x21, 0x0f, 0xbe, 0x3b, 0xfb, 0xc3, 0x83, 0xba, 0x5a, 0x05, 0x33, 0x97, - 0x09, 0xdb, 0xab, 0xc6, 0xbe, 0xbd, 0xeb, 0xb1, 0x95, 0x8b, 0x9b, 0x63, 0xd7, 0x3d, 0x68, 0x3d, - 0xe7, 0xe9, 0x1f, 0xba, 0xf0, 0x3f, 0x96, 0x31, 0x5d, 0xf0, 0xa7, 0x8e, 0x58, 0x05, 0x62, 0x64, - 0xf1, 0x49, 0xea, 0x69, 0x50, 0xd8, 0x33, 0xd1, 0xe5, 0x4a, 0x9b, 0x59, 0xb7, 0xec, 0x4d, 0x3c, - 0x71, 0x1e, 0xbb, 0xff, 0xca, 0xc3, 0xcd, 0x78, 0x49, 0x57, 0x0b, 0xe5, 0x76, 0x61, 0x07, 0xb2, - 0x35, 0x86, 0x33, 0xbe, 0xe2, 0x3d, 0x8c, 0x49, 0xee, 0xf7, 0x8f, 0x32, 0x9c, 0xc5, 0xf8, 0x17, - 0xb1, 0x27, 0x48, 0xa8, 0x00, 0x46, 0x7c, 0x45, 0xa3, 0x5c, 0x50, 0x86, 0x01, 0x45, 0xa7, 0x2f, - 0xf9, 0xd7, 0x2a, 0x60, 0xaa, 0x8e, 0xbc, 0x25, 0x13, 0x75, 0xda, 0x2e, 0x74, 0x0e, 0x6f, 0x1a, - 0xdd, 0x0a, 0x0a, 0x9b, 0x84, 0xd8, 0xa0, 0xf3, 0x07, 0x2c, 0x1b, 0x7c, 0x75, 0x56, 0x76, 0x67, - 0x97, 0xad, 0xbe, 0xf9, 0xdc, 0x8e, 0x04, 0x26, 0x39, 0xcf, 0xdc, 0xf8, 0x92, 0xd3, 0x47, 0xe9, - 0xed, 0x0a, 0x98, 0x61, 0x17, 0xb7, 0x95, 0x3a, 0xe6, 0x96, 0x05, 0x77, 0x47, 0xd0, 0x42, 0xd4, - 0xc7, 0x81, 0xbc, 0x81, 0xa9, 0x31, 0x27, 0x7d, 0xd8, 0xb7, 0xf3, 0x24, 0xe5, 0xe9, 0x34, 0x63, - 0x82, 0xd8, 0x8b, 0xa1, 0x62, 0xfb, 0x3c, 0x8f, 0x31, 0xf6, 0xe2, 0xc0, 0xc2, 0xd3, 0x47, 0xec, - 0x4b, 0x0a, 0x38, 0xc9, 0x18, 0x38, 0x8f, 0x1c, 0xcf, 0x6c, 0x19, 0x1d, 0x8a, 0xdc, 0x0b, 0x32, - 0xa3, 0x80, 0x6e, 0x05, 0xcc, 0xee, 0xf1, 0x64, 0x19, 0x84, 0xe7, 0xfa, 0x42, 0x28, 0x30, 0xa0, - 0x8b, 0x3f, 0x26, 0x88, 0x61, 0x27, 0x48, 0x55, 0xa0, 0x39, 0xc6, 0x18, 0x76, 0xd2, 0x4c, 0xa4, - 0x0f, 0xf1, 0x4b, 0x72, 0x34, 0x9e, 0x4d, 0xd8, 0x7d, 0x7e, 0x4e, 0x1a, 0xdb, 0x0d, 0x30, 0x4d, - 0xb0, 0xa4, 0x3f, 0xb2, 0x65, 0x88, 0x18, 0x25, 0x0e, 0xfa, 0x1d, 0x76, 0x57, 0x54, 0xf0, 0xaf, - 0xce, 0xd3, 0x81, 0x17, 0x00, 0x08, 0x3f, 0xf1, 0x9d, 0x74, 0x26, 0xaa, 0x93, 0xce, 0xca, 0x75, - 0xd2, 0x6f, 0x92, 0x0e, 0x5e, 0xd2, 0x9f, 0xed, 0xc3, 0xab, 0x87, 0x5c, 0xd8, 0x8a, 0xc1, 0xa5, - 0xa7, 0xaf, 0x17, 0xaf, 0xc8, 0xf5, 0xde, 0xd0, 0xfd, 0x91, 0x91, 0xcc, 0xa7, 0xf8, 0xfe, 0x40, - 0xe9, 0xe9, 0x0f, 0x0e, 0x61, 0x49, 0xdf, 0x04, 0x8e, 0xd3, 0x22, 0xca, 0x01, 0x5b, 0x79, 0x1a, - 0x9a, 0xa1, 0x27, 0x19, 0x7e, 0x74, 0x08, 0x25, 0x18, 0x74, 0x7d, 0x78, 0x5c, 0x27, 0x97, 0xcc, - 0xd8, 0x4d, 0xaa, 0x20, 0x47, 0x77, 0xeb, 0xf8, 0x37, 0x72, 0xd4, 0xda, 0xdd, 0x20, 0xd7, 0x79, - 0xc1, 0xbf, 0xca, 0x8d, 0x62, 0x44, 0xb8, 0x17, 0xe4, 0x88, 0xab, 0xba, 0x12, 0xb9, 0xa4, 0x11, - 0x16, 0x19, 0xde, 0xb5, 0x86, 0x1e, 0xf4, 0x56, 0x8e, 0xe9, 0xe4, 0x4f, 0xf5, 0x66, 0x70, 0xfc, - 0xa2, 0xd1, 0xba, 0xb4, 0xe5, 0xd8, 0xbb, 0xe4, 0xe2, 0x23, 0x9b, 0xdd, 0xa0, 0x44, 0x6e, 0xa2, - 0x13, 0x3f, 0xa8, 0xb7, 0xf9, 0xa6, 0x43, 0x7e, 0x90, 0xe9, 0xb0, 0x72, 0x8c, 0x19, 0x0f, 0xea, - 0xe3, 0x83, 0x4e, 0xa7, 0x10, 0xdb, 0xe9, 0xac, 0x1c, 0xf3, 0xbb, 0x1d, 0x75, 0x11, 0x4c, 0xb6, - 0xcd, 0x3d, 0xb2, 0x55, 0x4d, 0x66, 0x5d, 0x83, 0x8e, 0x12, 0x2f, 0x9a, 0x7b, 0x74, 0x63, 0x7b, - 0xe5, 0x98, 0x1e, 0xfc, 0xa9, 0x2e, 0x83, 0x29, 0xb2, 0x2d, 0x40, 0xc8, 0x4c, 0x26, 0x3a, 0x26, - 0xbc, 0x72, 0x4c, 0x0f, 0xff, 0xc5, 0xd6, 0x47, 0x8e, 0x9c, 0xe1, 0xb8, 0xc7, 0xdf, 0x6e, 0xcf, - 0x24, 0xda, 0x6e, 0xc7, 0xb2, 0xa0, 0x1b, 0xee, 0xa7, 0x41, 0xbe, 0x45, 0x24, 0x9c, 0x65, 0x12, - 0xa6, 0xaf, 0xea, 0x5d, 0x20, 0xb7, 0x63, 0x38, 0xfe, 0xe4, 0xf9, 0xc6, 0xc1, 0x74, 0xd7, 0x0c, - 0xe7, 0x12, 0x46, 0x10, 0xff, 0xb5, 0x30, 0x01, 0xf2, 0x44, 0x70, 0xc1, 0x03, 0x7c, 0x5b, 0x8e, - 0x9a, 0x21, 0x65, 0xdb, 0xc2, 0xc3, 0x7e, 0xc3, 0xf6, 0x0f, 0xba, 0xfc, 0x41, 0x66, 0x34, 0x16, - 0x64, 0xdf, 0x2b, 0xad, 0x95, 0xc8, 0x2b, 0xad, 0x7b, 0xee, 0x56, 0xcd, 0xf5, 0xde, 0xad, 0x1a, - 0x2e, 0x1f, 0xe4, 0x07, 0x3b, 0xaa, 0xfc, 0xf9, 0x10, 0xa6, 0x4b, 0xaf, 0x20, 0xa2, 0x67, 0xe0, - 0x1d, 0xd3, 0xe2, 0xea, 0xec, 0xbf, 0x26, 0xec, 0x94, 0x92, 0x1a, 0x35, 0x03, 0xd8, 0x4b, 0xbf, - 0x6f, 0xfa, 0xcd, 0x1c, 0x38, 0x43, 0x6f, 0xf0, 0xdd, 0x43, 0x0d, 0x5b, 0xbc, 0x6a, 0x10, 0xfe, - 0xc9, 0x48, 0x94, 0xa6, 0xcf, 0x80, 0xa3, 0xf4, 0x1d, 0x70, 0x0e, 0x1c, 0x36, 0xce, 0x0d, 0x38, - 0x6c, 0x9c, 0x4f, 0xb6, 0x72, 0xf8, 0x7b, 0xbc, 0xfe, 0xac, 0x8b, 0xfa, 0x73, 0x67, 0x04, 0x40, - 0xfd, 0xe4, 0x32, 0x12, 0xfb, 0xe6, 0x9d, 0x81, 0xa6, 0xd4, 0x05, 0x4d, 0xb9, 0x67, 0x78, 0x46, - 0xd2, 0xd7, 0x96, 0xdf, 0xcd, 0x81, 0x2b, 0x42, 0x66, 0xaa, 0xe8, 0x32, 0x53, 0x94, 0xcf, 0x8e, - 0x44, 0x51, 0x92, 0xc7, 0x32, 0x48, 0x5b, 0x63, 0xfe, 0x54, 0xfa, 0x0c, 0x50, 0x2f, 0x50, 0x81, - 0x6c, 0x22, 0x94, 0xe5, 0x34, 0x28, 0xd0, 0x1e, 0x86, 0x41, 0xc3, 0xde, 0x12, 0x76, 0x37, 0x72, - 0x27, 0x87, 0x64, 0x79, 0x1b, 0x83, 0xfe, 0xb0, 0x75, 0x8d, 0xc6, 0xae, 0x63, 0x55, 0x2c, 0xcf, - 0x86, 0x3f, 0x3b, 0x12, 0xc5, 0x09, 0xbc, 0xe1, 0x94, 0x61, 0xbc, 0xe1, 0x86, 0x5a, 0xe5, 0xf0, - 0x6b, 0x70, 0x24, 0xab, 0x1c, 0x11, 0x85, 0xa7, 0x8f, 0xdf, 0x3b, 0x14, 0x7a, 0x9b, 0x7f, 0x1d, - 0x79, 0x0b, 0xa2, 0x85, 0x08, 0xef, 0x1f, 0x05, 0x90, 0x27, 0x7d, 0x33, 0x89, 0x5d, 0x46, 0x45, - 0x5e, 0xc4, 0x13, 0x4f, 0xb1, 0x97, 0x22, 0x08, 0xd3, 0xc1, 0x1e, 0x0e, 0x47, 0x82, 0x94, 0xdc, - 0x5d, 0x08, 0x09, 0xd8, 0x48, 0x1f, 0xb3, 0x17, 0x29, 0xa0, 0xc0, 0x6e, 0x6e, 0xdf, 0x48, 0xc5, - 0x61, 0x42, 0x0c, 0x8d, 0x2c, 0xb1, 0x23, 0x97, 0xf8, 0x7e, 0xf3, 0xf4, 0xf6, 0xe2, 0x8e, 0xe8, - 0x02, 0xf3, 0xef, 0x64, 0xc1, 0x74, 0x1d, 0x79, 0x65, 0xc3, 0x71, 0x4c, 0x63, 0x6b, 0x54, 0x1e, - 0xdf, 0xb2, 0xde, 0xc3, 0xf0, 0xbb, 0x19, 0xd9, 0xf3, 0x34, 0xc1, 0x42, 0xb8, 0xcf, 0x6a, 0x44, - 0x6c, 0x3f, 0xb9, 0x9b, 0xe3, 0x07, 0x51, 0x1b, 0x83, 0xc7, 0x76, 0x16, 0x4c, 0xf8, 0x67, 0xea, - 0x6e, 0x15, 0xce, 0x59, 0x6e, 0x7b, 0x3b, 0xfe, 0x31, 0x18, 0xf2, 0x7c, 0xf0, 0x2c, 0x17, 0x7c, - 0x79, 0x42, 0x47, 0xf9, 0xf8, 0x03, 0x81, 0xc9, 0xda, 0x58, 0x12, 0x77, 0xf8, 0xa3, 0x3a, 0x02, - 0xf8, 0xdb, 0x13, 0x6c, 0x39, 0x72, 0xd5, 0xf0, 0xd0, 0x83, 0xf0, 0x73, 0x0a, 0x98, 0xa8, 0x23, - 0x0f, 0x8f, 0xb7, 0x98, 0xfd, 0x43, 0x6b, 0xb8, 0xca, 0xad, 0x78, 0x4c, 0xb1, 0x35, 0x8c, 0xa7, - 0x81, 0xa9, 0xae, 0x63, 0xb7, 0x90, 0xeb, 0xb2, 0xd5, 0x0b, 0xde, 0x51, 0xad, 0xdf, 0xe8, 0x4f, - 0x58, 0x9b, 0x5f, 0xf7, 0xff, 0xd1, 0xc3, 0xdf, 0x93, 0x9a, 0x01, 0x94, 0x12, 0xab, 0xe0, 0xb8, - 0xcd, 0x80, 0xb8, 0xc2, 0xd3, 0x07, 0xfa, 0xd3, 0x0a, 0x98, 0xa9, 0x23, 0x2f, 0x90, 0x62, 0x82, - 0x4d, 0x8e, 0x68, 0x78, 0x05, 0x28, 0x95, 0xc3, 0x41, 0x29, 0x7f, 0x9f, 0x9e, 0x28, 0xcd, 0x80, - 0xd8, 0x18, 0xef, 0xd3, 0x93, 0xe3, 0x60, 0x0c, 0xc7, 0xd7, 0x1e, 0x05, 0xa6, 0x08, 0x2f, 0xa4, - 0xc1, 0xfe, 0x62, 0x2e, 0x6c, 0xbc, 0x9f, 0x4f, 0xa9, 0xf1, 0xde, 0x0d, 0xf2, 0xe4, 0x9e, 0x7e, - 0xd2, 0x70, 0xa7, 0x65, 0xcc, 0xf6, 0x35, 0x9c, 0x5d, 0xa7, 0x7f, 0xf5, 0xf7, 0xd3, 0xcc, 0x27, - 0xf3, 0xd3, 0x7c, 0x7d, 0x36, 0xd1, 0x48, 0x48, 0xe7, 0x0e, 0x23, 0x6c, 0xf2, 0x09, 0xc6, 0xcd, - 0x98, 0xb2, 0xd3, 0x57, 0x8e, 0x17, 0x28, 0x60, 0x12, 0x8f, 0xdb, 0xc4, 0x1e, 0xbf, 0x70, 0x78, - 0x75, 0xe8, 0x6f, 0xe8, 0x27, 0xec, 0x81, 0x7d, 0x89, 0x8c, 0xce, 0xbc, 0x4f, 0xd0, 0x03, 0xc7, - 0x15, 0x9e, 0x3e, 0x1e, 0xef, 0xa2, 0x78, 0x90, 0xf6, 0x00, 0xdf, 0xa0, 0x00, 0x65, 0x19, 0x79, - 0xe3, 0xb6, 0x22, 0xdf, 0x2e, 0x1d, 0xaa, 0x48, 0x10, 0x18, 0xe1, 0x79, 0x7e, 0x19, 0x8d, 0xa6, - 0x01, 0xc9, 0xc5, 0x28, 0x92, 0x62, 0x20, 0x7d, 0xd4, 0xde, 0x47, 0x51, 0xa3, 0x9b, 0x0b, 0x3f, - 0x33, 0x82, 0x5e, 0x75, 0xbc, 0x0b, 0x1f, 0xbe, 0x00, 0x09, 0x8d, 0xa3, 0x6a, 0x6f, 0xfd, 0x0a, - 0x1f, 0xcb, 0xfd, 0x75, 0x00, 0x37, 0xf6, 0x6d, 0xd4, 0xba, 0x84, 0xda, 0xf0, 0x27, 0x0f, 0x0f, - 0xdd, 0x19, 0x30, 0xd1, 0xa2, 0xd4, 0x08, 0x78, 0x93, 0xba, 0xff, 0x9a, 0xe0, 0x32, 0x66, 0xb1, - 0x23, 0xa2, 0xbf, 0x8f, 0xf1, 0x32, 0x66, 0x89, 0xe2, 0xc7, 0x60, 0xb6, 0xd0, 0x59, 0x46, 0xa5, - 0x65, 0x5b, 0xf0, 0x3f, 0x1c, 0x1e, 0x96, 0x6b, 0xc0, 0x94, 0xd9, 0xb2, 0xad, 0xca, 0x8e, 0x1f, - 0xdc, 0x6f, 0x4a, 0x0f, 0x13, 0xfc, 0xaf, 0xda, 0x8e, 0xfd, 0x80, 0xc9, 0x76, 0xcd, 0xc3, 0x84, - 0x61, 0x8d, 0x09, 0xcc, 0xfa, 0x51, 0x19, 0x13, 0x7d, 0xca, 0x4e, 0x1f, 0xb2, 0x8f, 0x86, 0xde, - 0x6d, 0xb4, 0x2b, 0x7c, 0x58, 0xac, 0x02, 0x0f, 0x33, 0x9c, 0xf1, 0xb5, 0x38, 0x92, 0xe1, 0x2c, - 0x86, 0x81, 0x31, 0xdc, 0x2f, 0x12, 0xe2, 0x98, 0xfa, 0x1a, 0xf0, 0x21, 0xd0, 0x19, 0x9d, 0x79, - 0x38, 0x24, 0x3a, 0x47, 0x63, 0x22, 0x7e, 0x90, 0x85, 0xba, 0x64, 0x16, 0x0f, 0xfc, 0x8f, 0xa3, - 0x00, 0xe7, 0xce, 0x61, 0xfc, 0x15, 0xa8, 0xb7, 0x42, 0x82, 0x6b, 0xa4, 0x0f, 0x48, 0x10, 0x53, - 0x19, 0xe3, 0x05, 0xeb, 0x32, 0xe5, 0xa7, 0x0f, 0xe0, 0x2f, 0x28, 0x60, 0x8e, 0xf8, 0x08, 0x74, - 0x90, 0xe1, 0xd0, 0x8e, 0x72, 0x24, 0x8e, 0xf2, 0xef, 0x92, 0x0e, 0xf0, 0x23, 0xca, 0x21, 0xe4, - 0x63, 0x24, 0x50, 0xc8, 0x45, 0xf7, 0x91, 0x64, 0x61, 0x2c, 0xdb, 0x28, 0xc5, 0x80, 0x05, 0xa6, - 0xe2, 0xa3, 0xc1, 0x23, 0xa1, 0x47, 0xae, 0x28, 0x0c, 0xbf, 0xb1, 0x8d, 0xd9, 0x23, 0x57, 0x86, - 0x89, 0x31, 0xdc, 0x30, 0xf9, 0x38, 0xb6, 0xe0, 0xdc, 0x20, 0xb7, 0xac, 0xbf, 0x32, 0x17, 0x9c, - 0x68, 0xfb, 0xf4, 0x48, 0x3c, 0x30, 0x0f, 0x11, 0xd8, 0x5e, 0x05, 0x39, 0xc7, 0xbe, 0x4c, 0x97, - 0xb6, 0x66, 0x75, 0xf2, 0x4c, 0x4c, 0x7e, 0xbb, 0xb3, 0xbb, 0x63, 0xd1, 0x93, 0xa1, 0xb3, 0xba, - 0xff, 0xaa, 0xde, 0x00, 0x66, 0x2f, 0x9b, 0xde, 0xf6, 0x0a, 0x32, 0xda, 0xc8, 0xd1, 0xed, 0xcb, - 0xc4, 0x63, 0x6e, 0x52, 0x17, 0x13, 0x45, 0xff, 0x15, 0x09, 0xfb, 0x92, 0x5c, 0xbd, 0x3e, 0x96, - 0xe3, 0x6f, 0x49, 0x2c, 0xcf, 0x68, 0xae, 0xd2, 0x57, 0x98, 0xf7, 0x2b, 0x60, 0x4a, 0xb7, 0x2f, - 0x33, 0x25, 0xf9, 0xbf, 0x8e, 0x56, 0x47, 0x12, 0x4f, 0xf4, 0xe8, 0x55, 0xfa, 0x3e, 0xfb, 0x63, - 0x9f, 0xe8, 0xc5, 0x16, 0x3f, 0x96, 0x93, 0x4b, 0x33, 0xba, 0x7d, 0xb9, 0x8e, 0x3c, 0xda, 0x22, - 0x60, 0x73, 0x44, 0x4e, 0xd6, 0xa6, 0x4b, 0x09, 0xb2, 0x79, 0x78, 0xf0, 0x9e, 0x74, 0x17, 0x21, - 0x10, 0x50, 0xc0, 0xe2, 0xb8, 0x77, 0x11, 0x06, 0x72, 0x30, 0x86, 0x18, 0x29, 0x0a, 0x98, 0xd6, - 0xed, 0xcb, 0x78, 0x68, 0x58, 0x32, 0x3b, 0x9d, 0xd1, 0x8c, 0x90, 0x49, 0x8d, 0x7f, 0x5f, 0x0c, - 0x3e, 0x17, 0x63, 0x37, 0xfe, 0x07, 0x30, 0x90, 0x3e, 0x0c, 0xcf, 0xa3, 0x8d, 0xc5, 0x1f, 0xa1, - 0xad, 0xd1, 0xe0, 0x30, 0x6c, 0x83, 0x08, 0xd8, 0x38, 0xb2, 0x06, 0x11, 0xc5, 0xc1, 0x58, 0x76, - 0x4e, 0xe6, 0xca, 0x64, 0x98, 0x1f, 0x6d, 0x9b, 0x78, 0x4f, 0x32, 0xd7, 0x44, 0x36, 0xec, 0x0a, - 0x8c, 0x8c, 0x04, 0x8d, 0x04, 0x2e, 0x88, 0x12, 0x3c, 0xa4, 0x8f, 0xc7, 0x87, 0x14, 0x30, 0x43, - 0x59, 0x78, 0x98, 0x58, 0x01, 0x43, 0x35, 0x2a, 0xbe, 0x06, 0x47, 0xd3, 0xa8, 0x62, 0x38, 0x18, - 0xcb, 0x2d, 0x9d, 0xd8, 0x8e, 0x1b, 0xe2, 0xf8, 0x78, 0x14, 0x82, 0x43, 0x1b, 0x63, 0x23, 0x3c, - 0x42, 0x3e, 0x8c, 0x31, 0x76, 0x44, 0xc7, 0xc8, 0x9f, 0x17, 0xb4, 0xa2, 0x51, 0x62, 0x70, 0x88, - 0xa6, 0x30, 0x42, 0x18, 0x86, 0x6c, 0x0a, 0x47, 0x84, 0xc4, 0x97, 0x15, 0x00, 0x28, 0x03, 0x6b, - 0xf6, 0x1e, 0xb9, 0x94, 0x67, 0x04, 0xdd, 0x59, 0xaf, 0x5b, 0xbd, 0x32, 0xc0, 0xad, 0x3e, 0x61, - 0x08, 0x97, 0xa4, 0x2b, 0x81, 0x9c, 0x94, 0x71, 0x25, 0xc7, 0xbe, 0x12, 0x18, 0x5f, 0x7e, 0xfa, - 0x18, 0x7f, 0x91, 0x5a, 0x73, 0xe1, 0x01, 0xd3, 0x5f, 0x1b, 0x09, 0xca, 0xdc, 0xec, 0x5f, 0x11, - 0x67, 0xff, 0x87, 0xc0, 0x76, 0x58, 0x1b, 0x71, 0xd0, 0xc1, 0xd1, 0xf4, 0x6d, 0xc4, 0xa3, 0x3b, - 0x20, 0xfa, 0x33, 0x39, 0x70, 0x9c, 0x75, 0x22, 0x3f, 0x0c, 0x10, 0x27, 0x3c, 0x87, 0x27, 0x74, - 0x92, 0x03, 0x50, 0x1e, 0xd5, 0x82, 0x54, 0x92, 0xa5, 0x4c, 0x09, 0xf6, 0xc6, 0xb2, 0xba, 0x51, - 0xd0, 0x1e, 0xec, 0x1a, 0x56, 0x5b, 0x3e, 0xdc, 0xef, 0x00, 0xe0, 0xfd, 0xb5, 0x46, 0x45, 0x5c, - 0x6b, 0xec, 0xb3, 0x32, 0x99, 0x78, 0xe7, 0x9a, 0x88, 0x8c, 0xb2, 0x3b, 0xf6, 0x9d, 0xeb, 0xe8, - 0xb2, 0xd3, 0x47, 0xe9, 0x3d, 0x0a, 0xc8, 0xd5, 0x6d, 0xc7, 0x83, 0x0f, 0x25, 0x69, 0x9d, 0x54, - 0xf2, 0x21, 0x48, 0xfe, 0xbb, 0x5a, 0x16, 0x6e, 0x4d, 0xbe, 0x35, 0xfe, 0xa8, 0xb3, 0xe1, 0x19, - 0xc4, 0xab, 0x1b, 0x97, 0xcf, 0x5d, 0x9f, 0x9c, 0x34, 0x9e, 0x0e, 0x95, 0x5f, 0x3d, 0xfa, 0x00, - 0x46, 0x6a, 0xf1, 0x74, 0x22, 0x4b, 0x4e, 0x1f, 0xb7, 0xff, 0x36, 0xc7, 0x7c, 0x5b, 0x97, 0xcc, - 0x0e, 0x82, 0x0f, 0x51, 0x97, 0x91, 0xaa, 0xb1, 0x83, 0xe4, 0x8f, 0xc4, 0xc4, 0xba, 0xb6, 0x92, - 0xf8, 0xb2, 0x4a, 0x18, 0x5f, 0x36, 0x69, 0x83, 0xa2, 0x07, 0xd0, 0x29, 0x4b, 0xe3, 0x6e, 0x50, - 0x31, 0x65, 0x8f, 0x25, 0x4e, 0xe7, 0x89, 0x3a, 0xf2, 0xa8, 0x51, 0x59, 0xf3, 0x6f, 0x60, 0xf9, - 0xa9, 0x91, 0x44, 0xec, 0x0c, 0x2e, 0x78, 0x51, 0x7a, 0x2e, 0x78, 0x79, 0x3f, 0x0f, 0xce, 0x9a, - 0x08, 0xce, 0x93, 0xa2, 0x05, 0x24, 0x32, 0x39, 0x12, 0x98, 0xde, 0x1e, 0xc0, 0xb4, 0x2e, 0xc0, - 0x74, 0xd7, 0x90, 0x5c, 0xa4, 0x0f, 0xd8, 0xe7, 0xb1, 0xa9, 0x42, 0x26, 0xfd, 0x25, 0xab, 0xcd, - 0x22, 0xac, 0xfe, 0xd3, 0x51, 0x6f, 0xb6, 0x1d, 0x0c, 0xc1, 0x2a, 0xc4, 0x72, 0xce, 0xf7, 0xde, - 0x56, 0xbf, 0x40, 0xc3, 0xb9, 0xe2, 0x4e, 0x94, 0xec, 0xb4, 0xc9, 0xdf, 0x58, 0x1f, 0xfc, 0x07, - 0xff, 0x2c, 0xd9, 0xfa, 0x1b, 0x21, 0xd1, 0x23, 0xb8, 0x94, 0x6d, 0xa0, 0x04, 0x2b, 0x73, 0x12, - 0xdc, 0xfd, 0x68, 0xb8, 0x85, 0x85, 0x91, 0x40, 0x86, 0x74, 0x0b, 0x23, 0x04, 0x8e, 0xd2, 0x2d, - 0x6c, 0x10, 0x03, 0x63, 0xb8, 0x65, 0x3e, 0xcf, 0x76, 0xe5, 0x89, 0xcf, 0x24, 0xfc, 0x9b, 0x6c, - 0xea, 0xa3, 0xed, 0xf7, 0x32, 0x89, 0xfc, 0x98, 0x09, 0x5f, 0xf1, 0xc3, 0x6d, 0x12, 0xcf, 0xe4, - 0x38, 0x72, 0x63, 0x58, 0xff, 0xc9, 0x12, 0x9f, 0xf2, 0x0b, 0x66, 0xdb, 0xdb, 0x1e, 0xd1, 0xc9, - 0x8c, 0xcb, 0x98, 0x96, 0x7f, 0x5d, 0x31, 0x79, 0x81, 0xff, 0x92, 0x49, 0x14, 0x0a, 0x2a, 0x10, - 0x09, 0x61, 0x2b, 0x42, 0xc4, 0x09, 0x02, 0x38, 0xc5, 0xd2, 0x1b, 0xa3, 0x46, 0x9f, 0x37, 0xdb, - 0xc8, 0x7e, 0x18, 0x6a, 0x34, 0xe1, 0x6b, 0x74, 0x1a, 0x1d, 0x47, 0xee, 0x47, 0x54, 0xa3, 0x03, - 0x91, 0x8c, 0x48, 0xa3, 0x63, 0xe9, 0xa5, 0x2f, 0xe3, 0x97, 0xcf, 0xb0, 0x09, 0xd1, 0xaa, 0x69, - 0x5d, 0x82, 0xdf, 0x2e, 0xf8, 0x17, 0x25, 0x5f, 0x30, 0xbd, 0x6d, 0x16, 0xd3, 0xe5, 0x77, 0xa5, - 0xef, 0x38, 0x19, 0x22, 0x6e, 0x8b, 0x18, 0x16, 0x2a, 0x7f, 0x20, 0x2c, 0x54, 0x09, 0xcc, 0x9a, - 0x96, 0x87, 0x1c, 0xcb, 0xe8, 0x2c, 0x75, 0x8c, 0x2d, 0xf7, 0xcc, 0x44, 0xdf, 0x4b, 0xe8, 0x2a, - 0x5c, 0x1e, 0x5d, 0xfc, 0x83, 0xbf, 0x4e, 0x72, 0x52, 0xbc, 0x16, 0x3f, 0x22, 0x8a, 0xd5, 0x54, - 0x74, 0x14, 0xab, 0x20, 0x4a, 0x15, 0x18, 0x1c, 0xe4, 0x5a, 0xd6, 0xc6, 0x4d, 0x18, 0xb6, 0xef, - 0x56, 0xc9, 0x68, 0x6a, 0x41, 0x08, 0xc7, 0x57, 0x29, 0x89, 0x56, 0xe9, 0xb0, 0x22, 0xcc, 0xf7, - 0x2a, 0x41, 0x62, 0x0b, 0x95, 0xaf, 0xbc, 0xd2, 0x53, 0xf9, 0xc0, 0xe4, 0xc9, 0x49, 0x98, 0x3c, - 0xbc, 0x52, 0xe5, 0xe5, 0x94, 0x2a, 0xc9, 0xa2, 0x9f, 0x4c, 0x6d, 0xc7, 0x70, 0xaa, 0x28, 0x0f, - 0x4e, 0xf8, 0x51, 0x6b, 0xbb, 0x5d, 0x64, 0x38, 0x86, 0xd5, 0x42, 0xf0, 0xa3, 0xd9, 0x51, 0x98, - 0xbd, 0x4b, 0x60, 0xd2, 0x6c, 0xd9, 0x56, 0xdd, 0x7c, 0xa6, 0x7f, 0x49, 0x5c, 0x7c, 0xb0, 0x74, - 0x22, 0x91, 0x0a, 0xfb, 0x43, 0x0f, 0xfe, 0x55, 0x2b, 0x60, 0xaa, 0x65, 0x38, 0x6d, 0x1a, 0x4c, - 0x2f, 0xdf, 0x73, 0x21, 0x53, 0x24, 0xa1, 0xb2, 0xff, 0x8b, 0x1e, 0xfe, 0xad, 0xd6, 0x44, 0x21, - 0x16, 0x7a, 0xa2, 0x72, 0x44, 0x12, 0x5b, 0x0c, 0x7f, 0x12, 0x64, 0x8e, 0xa5, 0xe3, 0xa0, 0x0e, - 0xb9, 0x13, 0x9e, 0xf6, 0x10, 0x53, 0x7a, 0x98, 0x90, 0x74, 0x9a, 0x4f, 0x8a, 0x3a, 0x80, 0xc6, - 0xb8, 0xa7, 0xf9, 0x52, 0x5c, 0xa4, 0xaf, 0x99, 0xef, 0x2c, 0x80, 0x59, 0xda, 0xab, 0x31, 0x71, - 0xc2, 0x5f, 0x20, 0x57, 0x3a, 0x7b, 0xf7, 0xa1, 0x7d, 0x58, 0x3f, 0xfc, 0x98, 0x5c, 0x04, 0xca, - 0xa5, 0x20, 0x70, 0x20, 0x7e, 0x4c, 0xba, 0xff, 0xee, 0xf3, 0x35, 0x4f, 0x79, 0x1a, 0xf7, 0xfe, - 0x7b, 0x7c, 0xf1, 0xe9, 0xe3, 0xf3, 0xcb, 0x0a, 0x50, 0x4a, 0xed, 0x36, 0x6c, 0x1d, 0x1e, 0x8a, - 0xeb, 0xc0, 0xb4, 0xdf, 0x66, 0xc2, 0x58, 0x8e, 0x7c, 0x52, 0xd2, 0xc5, 0xcc, 0x40, 0x36, 0xa5, - 0xf6, 0xd8, 0x77, 0x07, 0x62, 0xca, 0x4e, 0x1f, 0x94, 0x5f, 0x9b, 0x60, 0x8d, 0x66, 0xc1, 0xb6, - 0x2f, 0x91, 0x23, 0x2f, 0x0f, 0x29, 0x20, 0xbf, 0x84, 0xbc, 0xd6, 0xf6, 0x88, 0xda, 0xcc, 0xae, - 0xd3, 0xf1, 0xdb, 0xcc, 0x81, 0xfb, 0xe9, 0x07, 0xdb, 0xb0, 0x3e, 0x5b, 0xf3, 0x84, 0xa5, 0x71, - 0x47, 0x69, 0x8e, 0x2d, 0x3d, 0x7d, 0x70, 0xfe, 0x45, 0x01, 0x73, 0xc1, 0x0a, 0x17, 0xc5, 0xe4, - 0x97, 0x1e, 0x76, 0xeb, 0x96, 0xf0, 0xb3, 0xc9, 0x42, 0x9d, 0x05, 0x32, 0x15, 0x6b, 0x96, 0xf2, - 0xc2, 0x62, 0x82, 0x20, 0x68, 0x72, 0x0c, 0x8e, 0x61, 0x06, 0xaf, 0x80, 0x49, 0xc2, 0xd0, 0xa2, - 0xb9, 0x47, 0x5c, 0x00, 0x85, 0x85, 0xc6, 0x67, 0x8d, 0x64, 0xa1, 0xf1, 0x2e, 0x71, 0xa1, 0x51, - 0x32, 0x72, 0xb1, 0xbf, 0xce, 0x98, 0xd0, 0x27, 0x06, 0xff, 0x3f, 0xf2, 0x65, 0xc6, 0x04, 0x3e, - 0x31, 0x03, 0xca, 0x4f, 0x1f, 0xd1, 0x57, 0xfd, 0x3b, 0xd6, 0xd9, 0xfa, 0x1b, 0xa3, 0xf0, 0xbf, - 0x9d, 0x00, 0xb9, 0xf3, 0xf8, 0xe1, 0x7f, 0x86, 0x37, 0x5b, 0xbd, 0x74, 0x04, 0x41, 0x16, 0x9e, - 0x0a, 0x72, 0x98, 0x3e, 0x9b, 0xb6, 0xdc, 0x2c, 0xb7, 0x4b, 0x8b, 0x19, 0xd1, 0xc9, 0x7f, 0xea, - 0x69, 0x50, 0x70, 0xed, 0x5d, 0xa7, 0x85, 0xcd, 0x67, 0xac, 0x31, 0xec, 0x2d, 0x69, 0x70, 0x51, - 0x81, 0xf4, 0xfc, 0xe8, 0x5c, 0x3f, 0xb9, 0x8b, 0x8e, 0x14, 0xe1, 0xa2, 0xa3, 0x04, 0xfb, 0x07, - 0x12, 0xbc, 0xa5, 0xaf, 0x11, 0x7f, 0x43, 0xee, 0xfc, 0x6b, 0x8f, 0x0a, 0xf6, 0x08, 0xb1, 0x1c, - 0x56, 0x1d, 0x92, 0x3a, 0x6e, 0x8b, 0xa2, 0x0d, 0xe2, 0xb9, 0x8f, 0xd5, 0x71, 0x5b, 0x82, 0x87, - 0xb1, 0x9c, 0x36, 0x2f, 0x30, 0x67, 0xd3, 0xfb, 0x47, 0x89, 0x6e, 0x4e, 0x50, 0xfa, 0x43, 0xa1, - 0x33, 0x42, 0x27, 0xd4, 0xa1, 0xd1, 0x39, 0x22, 0x37, 0xd4, 0x3f, 0x54, 0x48, 0x44, 0x4b, 0xdf, - 0xc8, 0x91, 0xbf, 0xb0, 0x28, 0x31, 0x44, 0x78, 0x0c, 0x16, 0xe2, 0x39, 0xcf, 0x0e, 0x1f, 0xe2, - 0x5b, 0x14, 0x1d, 0xc7, 0xff, 0xb8, 0x43, 0x7c, 0xcb, 0x32, 0x92, 0x3e, 0x90, 0xaf, 0xa3, 0x17, - 0x84, 0x95, 0x5a, 0x9e, 0xb9, 0x37, 0xe2, 0x96, 0x26, 0x0e, 0x2f, 0x09, 0xa3, 0xfa, 0x1e, 0x90, - 0x10, 0xe5, 0x70, 0xdc, 0x51, 0x7d, 0xe5, 0xd8, 0x48, 0x1f, 0xa6, 0xaf, 0x15, 0xb0, 0xf4, 0xd8, - 0xda, 0xcc, 0x1b, 0xd8, 0x6a, 0x00, 0x3a, 0x3c, 0x5a, 0xe7, 0xc0, 0x0c, 0x37, 0xf5, 0xf7, 0x2f, - 0x9e, 0x11, 0xd2, 0x92, 0x1e, 0x58, 0x0f, 0x44, 0x36, 0xf2, 0x85, 0x81, 0x04, 0x0b, 0xbe, 0x32, - 0x4c, 0x8c, 0xe5, 0x5e, 0x37, 0x7f, 0x0c, 0x1b, 0x13, 0x56, 0xbf, 0xcb, 0x63, 0x55, 0x13, 0xb1, - 0xba, 0x43, 0x46, 0x4c, 0x72, 0x63, 0x9a, 0xd4, 0xbc, 0xf1, 0x1d, 0x01, 0x5c, 0xba, 0x00, 0xd7, - 0x53, 0x87, 0xe6, 0x23, 0x7d, 0xc4, 0x7e, 0x9d, 0x76, 0x87, 0x75, 0x6a, 0xb2, 0x8f, 0xa6, 0x3b, - 0x64, 0xb3, 0x01, 0x45, 0x98, 0x0d, 0x24, 0xf4, 0x9b, 0x0f, 0xdd, 0x41, 0x7d, 0xe6, 0x06, 0x41, - 0x94, 0x1b, 0xb1, 0xdf, 0xfc, 0x40, 0x0e, 0xd2, 0x07, 0xe7, 0x1f, 0x15, 0x00, 0x96, 0x1d, 0x7b, - 0xb7, 0x5b, 0x73, 0xda, 0xc8, 0x81, 0x7f, 0x17, 0x4e, 0x00, 0x5e, 0x3c, 0x82, 0x09, 0xc0, 0x3a, - 0x00, 0x5b, 0x01, 0x71, 0xa6, 0xe1, 0x8f, 0x93, 0x33, 0xf7, 0x43, 0xa6, 0x74, 0x8e, 0x86, 0x78, - 0x75, 0xec, 0xd3, 0x45, 0x8c, 0xe3, 0xfa, 0xac, 0x90, 0xdc, 0x28, 0x27, 0x00, 0xef, 0x0a, 0xb0, - 0x6e, 0x08, 0x58, 0xdf, 0x7b, 0x08, 0x4e, 0xd2, 0xc7, 0xfc, 0x9f, 0x26, 0xc0, 0x34, 0xdd, 0xae, - 0xa3, 0x32, 0xfd, 0x87, 0x10, 0xf4, 0x5f, 0x1b, 0x01, 0xe8, 0x1b, 0x60, 0xc6, 0x0e, 0xa9, 0xd3, - 0x3e, 0x95, 0x5f, 0x80, 0x89, 0x85, 0x9d, 0xe3, 0x4b, 0x17, 0xc8, 0xc0, 0x0f, 0xf3, 0xc8, 0xeb, - 0x22, 0xf2, 0x77, 0xc5, 0xc8, 0x9b, 0xa3, 0x38, 0x4a, 0xe8, 0xdf, 0x1d, 0x40, 0xbf, 0x21, 0x40, - 0x5f, 0x3a, 0x0c, 0x2b, 0x63, 0x08, 0x9b, 0xaf, 0x80, 0x1c, 0x39, 0xe5, 0xf6, 0x9b, 0x29, 0xce, - 0xef, 0xcf, 0x80, 0x09, 0xd2, 0x64, 0x83, 0x79, 0x87, 0xff, 0x8a, 0xbf, 0x18, 0x9b, 0x1e, 0x72, - 0x02, 0x8f, 0x05, 0xff, 0x15, 0xf3, 0xe0, 0x7b, 0x17, 0xbb, 0x67, 0x0a, 0x74, 0x23, 0x32, 0x48, - 0x18, 0x7a, 0x52, 0xc2, 0x4b, 0x7c, 0x64, 0xe7, 0xde, 0x86, 0x99, 0x94, 0x0c, 0x60, 0x24, 0x7d, - 0xe0, 0xff, 0x2a, 0x07, 0xce, 0xd0, 0x55, 0xa5, 0x25, 0xc7, 0xde, 0xe9, 0xb9, 0xa5, 0xca, 0x3c, - 0xbc, 0x2e, 0xdc, 0x08, 0xe6, 0x3c, 0xc1, 0xaf, 0x9a, 0xe9, 0x44, 0x4f, 0x2a, 0xfc, 0x73, 0xde, - 0xa7, 0xe2, 0x19, 0x22, 0x92, 0x0b, 0x31, 0x02, 0x8c, 0xe2, 0x3d, 0xf1, 0x42, 0xbd, 0x24, 0xa3, - 0xdc, 0x22, 0x95, 0x32, 0xd4, 0x9a, 0x65, 0xa0, 0x53, 0x79, 0x19, 0x9d, 0xfa, 0x40, 0xa0, 0x53, - 0x3f, 0x29, 0xe8, 0xd4, 0xf2, 0xe1, 0x45, 0x92, 0xbe, 0x6e, 0xbd, 0x32, 0xd8, 0x18, 0x0a, 0xb6, - 0xed, 0x76, 0x52, 0xd8, 0xac, 0xe3, 0xfd, 0x91, 0x72, 0x82, 0x3f, 0x92, 0x78, 0xaf, 0x44, 0x82, - 0x99, 0xb0, 0xc8, 0x75, 0x84, 0x2e, 0xcd, 0x81, 0xac, 0xe9, 0x73, 0x97, 0x35, 0xdb, 0x43, 0xcd, - 0x75, 0x63, 0x0b, 0x1a, 0xc3, 0xda, 0xd2, 0x1c, 0x28, 0x2c, 0x99, 0x1d, 0x0f, 0x39, 0xf0, 0x8b, - 0x6c, 0xa6, 0xfb, 0xca, 0x14, 0x07, 0x80, 0x45, 0x50, 0xd8, 0x24, 0xa5, 0x31, 0x93, 0xf9, 0x16, - 0xb9, 0xd6, 0x43, 0x39, 0xd4, 0xd9, 0xbf, 0x49, 0xa3, 0xec, 0xf5, 0x90, 0x19, 0xd9, 0x14, 0x39, - 0x41, 0x94, 0xbd, 0xc1, 0x2c, 0x8c, 0xe5, 0x82, 0xa9, 0x82, 0x8e, 0x76, 0xf0, 0x18, 0x7f, 0x29, - 0x3d, 0x84, 0x8b, 0x40, 0x31, 0xdb, 0x2e, 0xe9, 0x1c, 0xa7, 0x74, 0xfc, 0x98, 0xd4, 0x57, 0xa8, - 0x57, 0x54, 0x94, 0xe5, 0x71, 0xfb, 0x0a, 0x49, 0x71, 0x91, 0x3e, 0x66, 0xdf, 0x23, 0x8e, 0xa2, - 0xdd, 0x8e, 0xd1, 0x42, 0x98, 0xfb, 0xd4, 0x50, 0xa3, 0x3d, 0x59, 0xce, 0xef, 0xc9, 0xb8, 0x76, - 0x9a, 0x3f, 0x44, 0x3b, 0x1d, 0x76, 0x19, 0x32, 0x90, 0x39, 0xa9, 0xf8, 0x91, 0x2d, 0x43, 0xc6, - 0xb2, 0x31, 0x86, 0xeb, 0x43, 0xfd, 0x03, 0xb1, 0x63, 0x6d, 0xad, 0xc3, 0x6e, 0xd2, 0x30, 0x61, - 0x8d, 0xec, 0xf0, 0xeb, 0x30, 0x9b, 0x34, 0xd1, 0x3c, 0x8c, 0x01, 0xad, 0x39, 0x86, 0xd6, 0x67, - 0xd8, 0x30, 0x9a, 0xf2, 0x3e, 0xa9, 0x6b, 0x3b, 0x5e, 0xb2, 0x7d, 0x52, 0xcc, 0x9d, 0x4e, 0xfe, - 0x4b, 0x7a, 0xf0, 0x4a, 0x3c, 0x1f, 0x3d, 0xaa, 0xe1, 0x33, 0xc1, 0xc1, 0xab, 0x41, 0x0c, 0xa4, - 0x0f, 0xef, 0x5b, 0x8f, 0x68, 0xf0, 0x1c, 0xb6, 0x39, 0xb2, 0x36, 0x30, 0xb2, 0xa1, 0x73, 0x98, - 0xe6, 0x18, 0xcd, 0x43, 0xfa, 0x78, 0x7d, 0x8b, 0x1b, 0x38, 0xdf, 0x34, 0xc6, 0x81, 0xd3, 0x6f, - 0x99, 0xf9, 0x21, 0x5b, 0xe6, 0xb0, 0xfb, 0x3f, 0x4c, 0xd6, 0xa3, 0x1b, 0x30, 0x87, 0xd9, 0xff, - 0x89, 0x61, 0x22, 0x7d, 0xc4, 0xdf, 0xac, 0x80, 0x7c, 0x7d, 0xfc, 0xe3, 0xe5, 0xb0, 0x73, 0x11, - 0x22, 0xab, 0xfa, 0xc8, 0x86, 0xcb, 0x61, 0xe6, 0x22, 0x91, 0x2c, 0x8c, 0x21, 0x80, 0xfe, 0x71, - 0x30, 0x43, 0x96, 0x44, 0xfc, 0x6d, 0xd6, 0x6f, 0xb1, 0x51, 0xf3, 0xf5, 0x29, 0xb6, 0xd5, 0xa7, - 0x81, 0x49, 0x7f, 0xff, 0x8e, 0x8d, 0x9c, 0xf3, 0x72, 0xed, 0xd3, 0xe7, 0x52, 0x0f, 0xfe, 0x3f, - 0x94, 0x33, 0xc4, 0xc8, 0xf7, 0x6a, 0x87, 0x75, 0x86, 0x38, 0xd2, 0xfd, 0xda, 0x3f, 0x0b, 0x47, - 0xd4, 0xff, 0x90, 0x1e, 0xe6, 0xbd, 0xfb, 0xb8, 0xb9, 0x3e, 0xfb, 0xb8, 0x1f, 0xe5, 0xb1, 0xac, - 0x8b, 0x58, 0xde, 0x2d, 0x2b, 0xc2, 0x11, 0x8e, 0xb5, 0xef, 0x09, 0xe0, 0x3c, 0x2f, 0xc0, 0xb9, - 0x70, 0x28, 0x5e, 0xc6, 0x70, 0xf0, 0x31, 0x17, 0x8e, 0xb9, 0x1f, 0x4b, 0xb1, 0x1d, 0xf7, 0x9c, - 0xaa, 0xc8, 0x1d, 0x38, 0x55, 0x21, 0xb4, 0xf4, 0xfc, 0x21, 0x5b, 0xfa, 0xc7, 0x78, 0xed, 0x68, - 0x88, 0xda, 0xf1, 0x54, 0x79, 0x44, 0x46, 0x37, 0x32, 0xbf, 0x37, 0x50, 0x8f, 0x0b, 0x82, 0x7a, - 0x94, 0x0f, 0xc7, 0x4c, 0xfa, 0xfa, 0xf1, 0x47, 0xfe, 0x84, 0xf6, 0x88, 0xdb, 0xfb, 0xb0, 0x5b, - 0xc5, 0x82, 0x10, 0x47, 0x36, 0x72, 0x0f, 0xb3, 0x55, 0x3c, 0x88, 0x93, 0x31, 0xc4, 0x54, 0x9b, - 0x05, 0xd3, 0x84, 0xa7, 0x0b, 0x66, 0x7b, 0x0b, 0x79, 0xf0, 0x55, 0xd4, 0x47, 0xd1, 0x8f, 0x60, - 0x39, 0xa2, 0x30, 0x43, 0x51, 0xe7, 0x5d, 0x93, 0x7a, 0x74, 0x50, 0x26, 0xe7, 0x39, 0x06, 0xc7, - 0x1d, 0x09, 0x71, 0x20, 0x07, 0xe9, 0x43, 0xf6, 0x61, 0xea, 0x6e, 0xb3, 0x6a, 0xec, 0xdb, 0xbb, - 0x1e, 0x7c, 0xce, 0x08, 0x3a, 0xe8, 0x05, 0x50, 0xe8, 0x10, 0x6a, 0xec, 0x58, 0x46, 0xfc, 0x74, - 0x87, 0x89, 0x80, 0x96, 0xaf, 0xb3, 0x3f, 0x93, 0x9e, 0xcd, 0x08, 0xe5, 0x48, 0xe9, 0x8c, 0xfb, - 0x6c, 0xc6, 0x80, 0xf2, 0xc7, 0x72, 0x57, 0xce, 0x24, 0x2e, 0xdd, 0xdc, 0x31, 0xbd, 0x11, 0x45, - 0x70, 0xe8, 0x60, 0x5a, 0x7e, 0x04, 0x07, 0xf2, 0x92, 0xf4, 0xc4, 0x28, 0x27, 0x15, 0xfc, 0xfb, - 0xb8, 0x4f, 0x8c, 0xc6, 0x17, 0x9f, 0x3e, 0x26, 0xff, 0x99, 0xb6, 0xac, 0xf3, 0xd4, 0xf9, 0x36, - 0x45, 0xbf, 0xde, 0xa1, 0x1b, 0x0b, 0x65, 0xed, 0xe8, 0x1a, 0x4b, 0xdf, 0xf2, 0xd3, 0x07, 0xe6, - 0x37, 0x6e, 0x00, 0xf9, 0x45, 0x74, 0x71, 0x77, 0x0b, 0xde, 0x05, 0x26, 0x1b, 0x0e, 0x42, 0x15, - 0x6b, 0xd3, 0xc6, 0xd2, 0xf5, 0xf0, 0xb3, 0x0f, 0x09, 0x7b, 0xc3, 0x78, 0x6c, 0x23, 0xa3, 0x1d, - 0x9e, 0x3f, 0xf3, 0x5f, 0xe1, 0x4b, 0xb3, 0x20, 0x57, 0xf7, 0x0c, 0x0f, 0x4e, 0x05, 0xd8, 0xc2, - 0xe7, 0xf0, 0x58, 0xdc, 0x25, 0x62, 0x71, 0xa3, 0x20, 0x0b, 0xc2, 0xc1, 0x3c, 0xfe, 0x3f, 0x02, - 0x00, 0x08, 0x26, 0x1f, 0x70, 0x6d, 0x0b, 0xe7, 0xf0, 0x8f, 0x40, 0xfa, 0xef, 0xf0, 0x15, 0x81, - 0xb8, 0xef, 0x11, 0xc4, 0xfd, 0x18, 0xb9, 0x22, 0xc6, 0xb0, 0xd2, 0x96, 0x05, 0x53, 0x58, 0xb4, - 0x2b, 0xc8, 0x68, 0xbb, 0xf0, 0x91, 0xa1, 0xf2, 0x47, 0x88, 0x19, 0x7e, 0x50, 0x3a, 0xa8, 0x26, - 0xad, 0x55, 0x40, 0x3c, 0xda, 0xa3, 0xc3, 0xdf, 0xfc, 0xcf, 0x8a, 0xc1, 0x48, 0x6e, 0x05, 0x39, - 0xd3, 0xda, 0xb4, 0x99, 0x7f, 0xe1, 0xd5, 0x11, 0xb4, 0xb1, 0x4e, 0xe8, 0x24, 0xa3, 0x64, 0xc4, - 0xcd, 0x78, 0xb6, 0xc6, 0x72, 0x79, 0x5d, 0x0e, 0x97, 0x0e, 0xff, 0xcf, 0x81, 0xc2, 0x56, 0x55, - 0x90, 0xeb, 0x1a, 0xde, 0x36, 0x2b, 0x9a, 0x3c, 0x63, 0x1b, 0x79, 0xd7, 0x32, 0x2c, 0xdb, 0xda, - 0xdf, 0x31, 0x9f, 0x19, 0xdc, 0x91, 0x2b, 0xa4, 0x61, 0xce, 0xb7, 0x90, 0x85, 0x1c, 0xc3, 0x43, - 0xf5, 0xbd, 0x2d, 0x32, 0xc7, 0x9a, 0xd4, 0xf9, 0xa4, 0xc4, 0xfa, 0x8f, 0x39, 0x8e, 0xd6, 0xff, - 0x4d, 0xb3, 0x83, 0x48, 0xa4, 0x26, 0xa6, 0xff, 0xfe, 0x7b, 0x22, 0xfd, 0xef, 0x53, 0x44, 0xfa, - 0x68, 0x7c, 0x3f, 0x0b, 0x66, 0xea, 0x58, 0xe1, 0xea, 0xbb, 0x3b, 0x3b, 0x86, 0xb3, 0x0f, 0xaf, - 0x0f, 0x51, 0xe1, 0x54, 0x33, 0x23, 0xfa, 0xa5, 0xfc, 0xa1, 0xf4, 0xf5, 0xd0, 0xac, 0x69, 0x73, - 0x25, 0x24, 0x6e, 0x07, 0x8f, 0x07, 0x79, 0xac, 0xde, 0xbe, 0xc7, 0x65, 0x6c, 0x43, 0xa0, 0x39, - 0x25, 0x23, 0x5a, 0x0d, 0xe4, 0x6d, 0x0c, 0xd1, 0x34, 0xb2, 0xe0, 0x78, 0xdd, 0x33, 0x5a, 0x97, - 0x96, 0x6d, 0xc7, 0xde, 0xf5, 0x4c, 0x0b, 0xb9, 0xf0, 0x11, 0x21, 0x02, 0xbe, 0xfe, 0x67, 0x42, - 0xfd, 0x87, 0xff, 0x9a, 0x91, 0x1d, 0x45, 0x83, 0x6e, 0x95, 0x27, 0x1f, 0x11, 0xa0, 0x4a, 0x6e, - 0x5c, 0x94, 0xa1, 0x98, 0xbe, 0xd0, 0xde, 0xa4, 0x80, 0xa2, 0xf6, 0x60, 0xd7, 0x76, 0xbc, 0x55, - 0xbb, 0x65, 0x74, 0x5c, 0xcf, 0x76, 0x10, 0xac, 0xc5, 0x4a, 0x0d, 0xf7, 0x30, 0x6d, 0xbb, 0x15, - 0x0e, 0x8e, 0xec, 0x8d, 0x57, 0x3b, 0x45, 0xd4, 0xf1, 0x0f, 0x4b, 0xef, 0x32, 0x52, 0xa9, 0xf4, - 0x72, 0x14, 0xa1, 0xe7, 0xfd, 0xba, 0xb4, 0x64, 0x87, 0x25, 0xe4, 0x76, 0x1e, 0xa5, 0x98, 0x1a, - 0xc3, 0x52, 0x79, 0x16, 0xcc, 0xd6, 0x77, 0x2f, 0x06, 0x44, 0x5c, 0xde, 0x08, 0x79, 0xb5, 0x74, - 0x94, 0x0a, 0xa6, 0x78, 0x3c, 0xa1, 0x08, 0xf9, 0xde, 0x00, 0x66, 0x5d, 0x3e, 0x1b, 0xc3, 0x5b, - 0x4c, 0x94, 0x8c, 0x4e, 0x31, 0xb8, 0xd4, 0xf4, 0x05, 0xf8, 0xde, 0x2c, 0x98, 0xad, 0x75, 0x91, - 0x85, 0xda, 0xd4, 0x0b, 0x52, 0x10, 0xe0, 0x4b, 0x13, 0x0a, 0x50, 0x20, 0x14, 0x21, 0xc0, 0xd0, - 0x63, 0x79, 0xd1, 0x17, 0x5e, 0x98, 0x90, 0x48, 0x70, 0x71, 0xa5, 0xa5, 0x2f, 0xb8, 0x2f, 0x64, - 0xc1, 0xb4, 0xbe, 0x6b, 0xad, 0x3b, 0x36, 0x1e, 0x8d, 0x1d, 0x78, 0x77, 0xd8, 0x41, 0xdc, 0x02, - 0x4e, 0xb4, 0x77, 0x1d, 0xb2, 0xfe, 0x54, 0xb1, 0xea, 0xa8, 0x65, 0x5b, 0x6d, 0x97, 0xd4, 0x23, - 0xaf, 0x1f, 0xfc, 0x70, 0x67, 0xee, 0xa1, 0xaf, 0x2b, 0x19, 0xf8, 0x0b, 0xd2, 0xa1, 0x6e, 0x68, - 0xe5, 0xb9, 0xa2, 0xe5, 0x7b, 0x02, 0xc9, 0x80, 0x36, 0x83, 0x4a, 0x48, 0x5f, 0xb8, 0x9f, 0xc9, - 0x02, 0xb5, 0xd4, 0x6a, 0xd9, 0xbb, 0x96, 0x57, 0x47, 0x1d, 0xd4, 0xf2, 0x1a, 0x8e, 0xd1, 0x42, - 0xbc, 0xfd, 0x5c, 0x04, 0x4a, 0xdb, 0x74, 0x58, 0x1f, 0x8c, 0x1f, 0x99, 0x1c, 0x5f, 0x2a, 0xbd, - 0xe3, 0x48, 0x6b, 0x79, 0xb0, 0x94, 0x04, 0xe2, 0x94, 0xdb, 0x57, 0x94, 0x2c, 0x68, 0x0c, 0xb7, - 0xb9, 0x64, 0x41, 0x6e, 0xdd, 0xb4, 0xb6, 0xf8, 0x98, 0x40, 0x27, 0xb1, 0xf5, 0xd3, 0x46, 0x0f, - 0x32, 0xfd, 0xa4, 0x2f, 0xea, 0x6d, 0xe0, 0xa4, 0xb5, 0xbb, 0x73, 0x11, 0x39, 0xb5, 0x4d, 0x32, - 0x36, 0xb8, 0x0d, 0xbb, 0x8e, 0x2c, 0x6a, 0x3a, 0xe5, 0xf5, 0xbe, 0xdf, 0x44, 0xc3, 0x41, 0xc2, - 0xe4, 0xc5, 0x9c, 0x44, 0xc8, 0x3a, 0x60, 0x2a, 0xcb, 0x31, 0x95, 0xc8, 0xd8, 0xed, 0x43, 0x3c, - 0x7d, 0xf9, 0xfe, 0x71, 0x1e, 0x9c, 0x2a, 0x59, 0xfb, 0x64, 0x24, 0xa4, 0xdd, 0x52, 0x79, 0xdb, - 0xb0, 0xb6, 0x10, 0xe9, 0xd6, 0x02, 0x89, 0xf3, 0x01, 0xe2, 0x33, 0x62, 0x80, 0x78, 0x55, 0x07, - 0x13, 0xb6, 0xd3, 0x46, 0xce, 0xc2, 0x3e, 0xe1, 0xa9, 0x77, 0xb1, 0x94, 0x69, 0x52, 0xbf, 0x22, - 0xe6, 0x19, 0xf9, 0xf9, 0x1a, 0xfd, 0x5f, 0xf7, 0x09, 0x9d, 0xbb, 0x05, 0x4c, 0xb0, 0x34, 0x75, - 0x06, 0x4c, 0xd6, 0xf4, 0x45, 0x4d, 0x6f, 0x56, 0x16, 0x8b, 0xc7, 0xd4, 0x2b, 0xc0, 0xf1, 0x4a, - 0x43, 0xd3, 0x4b, 0x8d, 0x4a, 0xad, 0xda, 0x24, 0xe9, 0xc5, 0x0c, 0x7c, 0x5e, 0x4e, 0xd6, 0x1f, - 0x35, 0x9e, 0x99, 0x7e, 0xb0, 0xea, 0x60, 0xa2, 0x45, 0x33, 0x90, 0x8e, 0x7f, 0x3a, 0x51, 0xed, - 0x18, 0x41, 0x9a, 0xa0, 0xfb, 0x84, 0xd4, 0xb3, 0x00, 0x5c, 0x76, 0x6c, 0x6b, 0x2b, 0x3c, 0x2b, - 0x37, 0xa9, 0x73, 0x29, 0xf0, 0x39, 0x19, 0x50, 0xa0, 0xff, 0x90, 0x0b, 0x31, 0xc8, 0x53, 0x28, - 0x78, 0xff, 0x1d, 0xdb, 0x69, 0x44, 0x5e, 0xe1, 0xf4, 0x80, 0xbd, 0x62, 0x5d, 0xa4, 0x32, 0xa0, - 0xf6, 0x1b, 0xab, 0xca, 0xad, 0xa0, 0x40, 0xff, 0x65, 0x7b, 0xe5, 0xd1, 0x41, 0x31, 0x69, 0x36, - 0x49, 0xef, 0x5a, 0x79, 0x99, 0xa6, 0xaf, 0xcd, 0x5f, 0xcd, 0x82, 0x89, 0x35, 0xe4, 0x39, 0x66, - 0xcb, 0x85, 0x9f, 0xc7, 0x66, 0x16, 0xf2, 0xd6, 0x0d, 0xc7, 0xd8, 0x41, 0x1e, 0x72, 0x5c, 0xa8, - 0x09, 0x0a, 0xdd, 0xed, 0x18, 0xde, 0xa6, 0xed, 0xec, 0xf8, 0x72, 0xf5, 0xdf, 0xb1, 0x5c, 0xf7, - 0x90, 0xe3, 0x86, 0x6c, 0xf9, 0xaf, 0xac, 0xbb, 0x96, 0x9f, 0x6d, 0x30, 0x56, 0xe6, 0x05, 0x36, - 0x0e, 0x35, 0xdb, 0x90, 0xa1, 0x38, 0x96, 0xfb, 0x77, 0x94, 0x55, 0x7b, 0x0b, 0xbe, 0x4c, 0x01, - 0x39, 0xd2, 0x8f, 0xbe, 0x39, 0x23, 0x4c, 0x91, 0x77, 0x90, 0xeb, 0x1a, 0x5b, 0xc8, 0x9f, 0x22, - 0xb3, 0x57, 0xf5, 0x0e, 0x90, 0xef, 0xa0, 0x3d, 0xd4, 0x61, 0xfd, 0xc4, 0xf5, 0x42, 0xcd, 0x56, - 0xed, 0xad, 0x79, 0x4c, 0x2b, 0xe8, 0x14, 0x56, 0x71, 0x56, 0x9d, 0xfe, 0x71, 0xee, 0x69, 0x20, - 0x4f, 0xde, 0xd5, 0x29, 0x90, 0x5f, 0xd4, 0x16, 0x36, 0x96, 0x8b, 0xc7, 0xf0, 0xa3, 0xcf, 0xdf, - 0x14, 0xc8, 0x2f, 0x95, 0x1a, 0xa5, 0xd5, 0x62, 0x16, 0xd7, 0xa3, 0x52, 0x5d, 0xaa, 0x15, 0x15, - 0x9c, 0xb8, 0x5e, 0xaa, 0x56, 0xca, 0xc5, 0x9c, 0x3a, 0x0d, 0x26, 0x2e, 0x94, 0xf4, 0x6a, 0xa5, - 0xba, 0x5c, 0xcc, 0xc3, 0xaf, 0xf1, 0xf8, 0xdd, 0x29, 0xe2, 0x77, 0x43, 0x14, 0x4f, 0xfd, 0x20, - 0xfb, 0x8d, 0x00, 0xb2, 0xbb, 0x05, 0xc8, 0x7e, 0x4c, 0x86, 0xc8, 0x18, 0x50, 0xca, 0x82, 0x89, - 0x75, 0xc7, 0x6e, 0x21, 0xd7, 0x85, 0xbf, 0x9a, 0x05, 0x85, 0xb2, 0x61, 0xb5, 0x50, 0x07, 0x5e, - 0x15, 0x42, 0x45, 0x7d, 0xdd, 0x32, 0xc1, 0x71, 0x97, 0x7f, 0xe4, 0x25, 0x73, 0xaf, 0x28, 0x99, - 0x9b, 0x85, 0x4a, 0x31, 0xba, 0xf3, 0x94, 0x66, 0x84, 0x7c, 0x5e, 0x13, 0xc8, 0xa7, 0x2c, 0xc8, - 0xe7, 0x56, 0x79, 0x52, 0xe9, 0x4b, 0xe9, 0xbb, 0x19, 0x70, 0x72, 0x19, 0x59, 0xc8, 0x31, 0x5b, - 0x94, 0x79, 0xbf, 0xfe, 0x77, 0x8b, 0xf5, 0x7f, 0xb4, 0xc0, 0x74, 0xbf, 0x3f, 0xc4, 0xca, 0xbf, - 0x32, 0xa8, 0xfc, 0xbd, 0x42, 0xe5, 0x6f, 0x91, 0xa4, 0x33, 0x86, 0xcb, 0x76, 0xa7, 0xc0, 0x4c, - 0xd5, 0xf6, 0xcc, 0x4d, 0xb3, 0x45, 0x1d, 0x23, 0x7e, 0x5d, 0x01, 0xb9, 0x55, 0xd3, 0xf5, 0x60, - 0x29, 0x54, 0x91, 0xeb, 0xc0, 0xb4, 0x69, 0xb5, 0x3a, 0xbb, 0x6d, 0xa4, 0x23, 0x83, 0xea, 0xca, - 0xa4, 0xce, 0x27, 0x85, 0xfb, 0x4d, 0x98, 0x2d, 0xc5, 0xdf, 0x6f, 0xfa, 0xa4, 0xf4, 0xdc, 0x80, - 0x67, 0x81, 0x44, 0x49, 0x8b, 0x18, 0x89, 0x4b, 0x60, 0xd6, 0xe2, 0xb2, 0xfa, 0xe3, 0x71, 0x6f, - 0x94, 0x6b, 0x9e, 0x9c, 0x2e, 0xfe, 0x01, 0xdf, 0x2f, 0x35, 0x95, 0x18, 0xc4, 0x50, 0x32, 0x64, - 0x96, 0x92, 0x23, 0xa3, 0xaa, 0x60, 0xae, 0x52, 0x6d, 0x68, 0x7a, 0xb5, 0xb4, 0xca, 0xb2, 0x28, - 0xf0, 0xfb, 0x59, 0x90, 0xd7, 0x51, 0xb7, 0xb3, 0xcf, 0x87, 0x31, 0x65, 0xde, 0x8b, 0x99, 0xc0, - 0x7b, 0x51, 0x5d, 0x02, 0xc0, 0x68, 0xe1, 0x82, 0xc9, 0x7d, 0x2d, 0xd9, 0xbe, 0xc1, 0xf5, 0x84, - 0x0a, 0x96, 0x82, 0xdc, 0x3a, 0xf7, 0x27, 0x7c, 0x81, 0xf4, 0x72, 0xa6, 0x40, 0x8d, 0x70, 0x18, - 0xd1, 0x1d, 0x7c, 0x40, 0x6a, 0x05, 0x72, 0x20, 0xb9, 0xa3, 0x11, 0xff, 0x97, 0xb2, 0x20, 0xd7, - 0x40, 0xae, 0xb0, 0x61, 0xf4, 0x27, 0xc3, 0xe9, 0x38, 0x26, 0x13, 0xa1, 0xe3, 0xf7, 0x80, 0x19, - 0x5e, 0x63, 0xd9, 0xfe, 0x5d, 0xac, 0x8a, 0x0b, 0x3f, 0x0c, 0xa3, 0xe1, 0x7d, 0xd8, 0x39, 0x1a, - 0x11, 0x7f, 0xfc, 0x31, 0x00, 0xac, 0x21, 0x3c, 0x4b, 0x73, 0xb7, 0xcd, 0x2e, 0xfc, 0x7b, 0x05, - 0x4c, 0x2d, 0x23, 0xaf, 0xee, 0x19, 0xde, 0xae, 0xdb, 0xb3, 0x06, 0x6f, 0xd9, 0x65, 0xa3, 0xb5, - 0x8d, 0x58, 0x77, 0xe4, 0xbf, 0xc2, 0x77, 0x2b, 0xb2, 0x9b, 0xdc, 0x61, 0x39, 0xf3, 0x41, 0x19, - 0x11, 0x98, 0x3c, 0x16, 0xe4, 0xda, 0x86, 0x67, 0x30, 0x2c, 0xae, 0xea, 0xc1, 0x22, 0x24, 0xa4, - 0x93, 0x6c, 0xf0, 0xb7, 0xb2, 0x32, 0xbb, 0xdc, 0x12, 0xe5, 0x27, 0x03, 0xe1, 0xfd, 0x99, 0x21, - 0x50, 0x38, 0x01, 0x66, 0xab, 0xb5, 0x46, 0x73, 0xb5, 0xb6, 0xbc, 0xac, 0xe1, 0xd4, 0xa2, 0xa2, - 0x9e, 0x06, 0xea, 0x7a, 0xe9, 0xfe, 0x35, 0xad, 0xda, 0x68, 0x56, 0x6b, 0x8b, 0x1a, 0xfb, 0x33, - 0xa7, 0x1e, 0x07, 0xd3, 0xe5, 0x52, 0x79, 0xc5, 0x4f, 0xc8, 0xab, 0x67, 0xc0, 0xc9, 0x35, 0x6d, - 0x6d, 0x41, 0xd3, 0xeb, 0x2b, 0x95, 0xf5, 0x26, 0x26, 0xb3, 0x54, 0xdb, 0xa8, 0x2e, 0x16, 0x0b, - 0x2a, 0x04, 0xa7, 0xb9, 0x2f, 0x17, 0xf4, 0x5a, 0x75, 0xb9, 0x59, 0x6f, 0x94, 0x1a, 0x5a, 0x71, - 0x02, 0xcf, 0xdf, 0xca, 0xa5, 0x2a, 0xc9, 0x5e, 0xae, 0x55, 0xab, 0x5a, 0xb9, 0x51, 0x9c, 0x84, - 0xff, 0x9a, 0x03, 0xd3, 0x15, 0xb7, 0x6a, 0xec, 0xa0, 0xf3, 0x46, 0xc7, 0x6c, 0xc3, 0x5f, 0xe0, - 0xac, 0xc9, 0x1b, 0xc0, 0xac, 0x43, 0x1f, 0x51, 0xbb, 0x61, 0x22, 0x8a, 0xe6, 0xac, 0x2e, 0x26, - 0xaa, 0xa7, 0x41, 0xc1, 0x22, 0x04, 0x98, 0x68, 0xd8, 0x9b, 0xba, 0x00, 0x00, 0x7d, 0x6a, 0x84, - 0x37, 0x07, 0x9e, 0xeb, 0x6d, 0x4d, 0xc6, 0x0e, 0x72, 0x91, 0xb3, 0x67, 0xb6, 0x90, 0x9f, 0x53, - 0xe7, 0xfe, 0x82, 0x5f, 0x56, 0x64, 0x17, 0xbd, 0x39, 0x50, 0xb9, 0xea, 0x44, 0xf4, 0x86, 0x3f, - 0xaf, 0xc8, 0x2c, 0x59, 0x4b, 0x91, 0x4c, 0xa6, 0x29, 0x2f, 0xca, 0x0e, 0xa1, 0x29, 0xb3, 0x60, - 0xaa, 0x51, 0xab, 0x35, 0xeb, 0x2b, 0x35, 0xbd, 0x51, 0x54, 0xf0, 0xa4, 0x1c, 0xbf, 0xae, 0xd6, - 0xaa, 0xcb, 0xc5, 0x9c, 0x7a, 0x0a, 0x9c, 0x58, 0x29, 0xd5, 0x9b, 0x95, 0xea, 0xf9, 0xd2, 0x6a, - 0x65, 0xb1, 0x59, 0x5e, 0x29, 0xe9, 0xf5, 0x62, 0x5e, 0xbd, 0x0a, 0x9c, 0x6a, 0x54, 0x34, 0xbd, - 0xb9, 0xa4, 0x95, 0x1a, 0x1b, 0xba, 0x56, 0x6f, 0x56, 0x6b, 0xcd, 0x6a, 0x69, 0x4d, 0x2b, 0x16, - 0x70, 0xf3, 0x27, 0x9f, 0x42, 0xb5, 0x99, 0x38, 0xa8, 0x8c, 0x93, 0x11, 0xca, 0x38, 0xd5, 0xab, - 0x8c, 0x80, 0x57, 0x2b, 0x5d, 0xab, 0x6b, 0xfa, 0x79, 0xad, 0x38, 0xdd, 0x4f, 0xd7, 0x66, 0xd4, - 0x93, 0xa0, 0x88, 0x79, 0x68, 0x56, 0xea, 0x7e, 0xce, 0xc5, 0xe2, 0x2c, 0xfc, 0x58, 0x01, 0x9c, - 0xd6, 0xd1, 0x96, 0xe9, 0x7a, 0xc8, 0x59, 0x37, 0xf6, 0x77, 0x90, 0xe5, 0xf9, 0x9d, 0xfc, 0xff, - 0x4a, 0xac, 0x8c, 0x6b, 0x60, 0xb6, 0x4b, 0x69, 0xac, 0x21, 0x6f, 0xdb, 0x6e, 0xb3, 0x51, 0xf8, - 0xd1, 0x91, 0x3d, 0xc7, 0xfc, 0x3a, 0x9f, 0x5d, 0x17, 0xff, 0xe6, 0x74, 0x5b, 0x89, 0xd1, 0xed, - 0xdc, 0x30, 0xba, 0xad, 0x5e, 0x03, 0xa6, 0x76, 0x5d, 0xe4, 0x68, 0x3b, 0x86, 0xd9, 0xf1, 0x6f, - 0x7e, 0x0b, 0x12, 0xe0, 0x3b, 0x72, 0xb2, 0x6e, 0xd4, 0x5c, 0x5d, 0xfa, 0x8b, 0x31, 0xa2, 0x6f, - 0x3d, 0x0b, 0x00, 0xab, 0xec, 0x86, 0xd3, 0x61, 0xca, 0xca, 0xa5, 0x60, 0xfe, 0x2e, 0x9a, 0x9d, - 0x8e, 0x69, 0x6d, 0x05, 0x9b, 0x51, 0x61, 0x02, 0x7c, 0x91, 0x22, 0xe3, 0x56, 0x9d, 0x94, 0xb7, - 0x64, 0xad, 0xe9, 0x05, 0xd9, 0x31, 0xf7, 0xbb, 0x07, 0x9b, 0x4e, 0x41, 0x2d, 0x82, 0x19, 0x92, - 0xc6, 0x5a, 0x60, 0x71, 0x02, 0xf7, 0xc1, 0x3e, 0xb9, 0x35, 0xad, 0xb1, 0x52, 0x5b, 0x0c, 0xbe, - 0x4d, 0x62, 0x92, 0x98, 0x99, 0x52, 0xf5, 0x7e, 0xd2, 0x1a, 0xa7, 0xd4, 0x47, 0x80, 0xab, 0xb8, - 0x0e, 0xbb, 0xb4, 0xaa, 0x6b, 0xa5, 0xc5, 0xfb, 0x9b, 0xda, 0x33, 0x2a, 0xf5, 0x46, 0x5d, 0x6c, - 0x5c, 0x7e, 0x3b, 0x9a, 0xc6, 0xfc, 0x6a, 0x6b, 0xa5, 0xca, 0x2a, 0xeb, 0xdf, 0x97, 0x6a, 0xfa, - 0x5a, 0xa9, 0x51, 0x9c, 0x81, 0x2f, 0x53, 0x40, 0x71, 0x19, 0x79, 0xeb, 0xb6, 0xe3, 0x19, 0x9d, - 0x55, 0xd3, 0xba, 0xb4, 0xe1, 0x74, 0x78, 0x9b, 0xe9, 0x5f, 0xa4, 0xcf, 0x8e, 0x8b, 0x43, 0xa4, - 0x40, 0x30, 0x7a, 0x9b, 0xa6, 0x4b, 0xb2, 0x85, 0xca, 0x14, 0x26, 0xc0, 0x67, 0x65, 0x65, 0x56, - 0xb3, 0xe4, 0x4b, 0x4d, 0xa6, 0x27, 0xcf, 0x1e, 0xf7, 0xf8, 0xdc, 0x07, 0xb5, 0x02, 0x7c, 0x28, - 0x07, 0x26, 0x97, 0x4c, 0xcb, 0xe8, 0x98, 0xcf, 0x14, 0x82, 0xea, 0x85, 0x7d, 0x4c, 0x26, 0xa6, - 0x8f, 0xc9, 0x0e, 0x35, 0x7e, 0xfe, 0x8a, 0x22, 0xbb, 0x21, 0xc7, 0xc9, 0xde, 0x67, 0x32, 0x62, - 0xf0, 0xfc, 0xfd, 0xac, 0xcc, 0x96, 0xdb, 0x60, 0x7a, 0xc9, 0x30, 0xfc, 0xc4, 0x0f, 0x87, 0x8d, - 0xd5, 0xd3, 0xbe, 0x27, 0xfb, 0xa9, 0xc2, 0x14, 0xfc, 0x0b, 0x05, 0xc0, 0x65, 0xe4, 0x9d, 0x47, - 0x4e, 0x30, 0x15, 0x20, 0xbd, 0x3e, 0xb3, 0xb7, 0xb9, 0x26, 0xfb, 0x66, 0x1e, 0xc0, 0x0b, 0x22, - 0x80, 0xa5, 0x98, 0xc6, 0x13, 0x41, 0x3a, 0xa2, 0xf1, 0x56, 0x40, 0xc1, 0x25, 0xdf, 0x99, 0x9a, - 0x3d, 0x3e, 0x7a, 0xb8, 0x24, 0xc4, 0x78, 0xea, 0x94, 0xb0, 0xce, 0x08, 0xc0, 0xef, 0x05, 0x93, - 0xa0, 0x9f, 0x10, 0xb4, 0x63, 0xe9, 0xd0, 0xcc, 0x26, 0xd3, 0x17, 0x27, 0x5d, 0x75, 0xe9, 0x67, - 0xdf, 0xc0, 0xdf, 0xcf, 0x83, 0x93, 0xfd, 0xaa, 0x03, 0x7f, 0x3b, 0x23, 0x6c, 0xa0, 0x21, 0x32, - 0xe4, 0x67, 0xd8, 0xfe, 0x00, 0x7e, 0x51, 0x9f, 0x00, 0x4e, 0x31, 0x8f, 0x80, 0x8b, 0xa8, 0x61, - 0x57, 0xd1, 0x65, 0xb7, 0x83, 0x3c, 0x0f, 0x39, 0xa4, 0x6a, 0x93, 0x7a, 0xff, 0x8f, 0xea, 0x93, - 0xc1, 0x95, 0xa6, 0xe5, 0x9a, 0x6d, 0xe4, 0x34, 0xcc, 0xae, 0x5b, 0xb2, 0xda, 0x8d, 0x5d, 0xcf, - 0x76, 0x4c, 0x83, 0xdd, 0x6f, 0x36, 0xa9, 0x47, 0x7d, 0x56, 0x6f, 0x06, 0x45, 0xd3, 0xad, 0x59, - 0x17, 0x6d, 0xc3, 0x69, 0x9b, 0xd6, 0xd6, 0xaa, 0xe9, 0x7a, 0xcc, 0x2d, 0xed, 0x40, 0x3a, 0xfc, - 0x07, 0x45, 0xf6, 0x84, 0xc7, 0x00, 0x58, 0x23, 0x3a, 0x94, 0xe7, 0x2b, 0x32, 0x67, 0x36, 0x92, - 0xd1, 0x4e, 0xa6, 0x2c, 0xcf, 0x1b, 0xb7, 0x21, 0xd1, 0x7f, 0x04, 0x27, 0x5d, 0x0b, 0x4d, 0xf7, - 0x0d, 0x81, 0xf3, 0x9a, 0x5e, 0x59, 0xaa, 0x68, 0xd8, 0xac, 0x38, 0x05, 0x4e, 0x84, 0xdf, 0x16, - 0xef, 0x6f, 0xd6, 0xb5, 0x6a, 0xa3, 0x38, 0x89, 0xfb, 0x29, 0x9a, 0xbc, 0x54, 0xaa, 0xac, 0x6a, - 0x8b, 0xcd, 0x46, 0x0d, 0x7f, 0x59, 0x1c, 0xce, 0xb4, 0x80, 0xcf, 0xc9, 0x81, 0xe3, 0x44, 0xb6, - 0xfb, 0x44, 0xaa, 0x58, 0x28, 0x3d, 0x0e, 0x60, 0x01, 0x40, 0x53, 0x54, 0xbc, 0xf0, 0xd3, 0xd2, - 0xd7, 0xb7, 0x71, 0x10, 0xf6, 0x94, 0x11, 0xa1, 0x19, 0xdf, 0xcd, 0xca, 0x1c, 0x9b, 0x96, 0x26, - 0x9b, 0x4c, 0x29, 0xfe, 0x79, 0xdc, 0x23, 0x4e, 0x34, 0xf8, 0xc4, 0xca, 0x2c, 0x93, 0x9f, 0x9f, - 0xb1, 0x5e, 0xd1, 0x89, 0x3a, 0xcc, 0x01, 0x40, 0x52, 0x88, 0x06, 0x51, 0x3d, 0xe8, 0x3b, 0x5e, - 0x45, 0xe9, 0x41, 0xa9, 0xdc, 0xa8, 0x9c, 0xd7, 0xa2, 0xf4, 0xe0, 0x53, 0x0a, 0x98, 0x5c, 0x46, - 0x1e, 0x9e, 0x53, 0xb9, 0xf0, 0x29, 0x12, 0xeb, 0x3f, 0xd8, 0x8c, 0x21, 0xf7, 0x56, 0x07, 0xcb, - 0x00, 0xf4, 0x0d, 0x3e, 0x77, 0x18, 0x13, 0xc4, 0x2f, 0x3a, 0x62, 0xbc, 0x7a, 0x12, 0xc8, 0x7b, - 0xf8, 0x33, 0x5b, 0x86, 0x7e, 0x64, 0xe4, 0x70, 0x85, 0x89, 0x2c, 0x1a, 0x9e, 0xa1, 0xd3, 0xfc, - 0xdc, 0xe8, 0x24, 0x69, 0xbb, 0x44, 0x30, 0xf2, 0xc3, 0x68, 0x7f, 0x7e, 0x4d, 0x01, 0xa7, 0x68, - 0xfb, 0x28, 0x75, 0xbb, 0x75, 0xcf, 0x76, 0x90, 0x8e, 0x5a, 0xc8, 0xec, 0x7a, 0x3d, 0xeb, 0x7b, - 0x0e, 0x4d, 0xf5, 0x37, 0x10, 0xd9, 0x2b, 0x7c, 0x83, 0x22, 0x1b, 0x18, 0xf4, 0x40, 0x7b, 0xec, - 0x29, 0x2f, 0xa2, 0xb1, 0x7f, 0x34, 0x2b, 0x13, 0xea, 0x33, 0x21, 0xf1, 0x64, 0x40, 0x7d, 0xe8, - 0x08, 0x80, 0xf2, 0x57, 0x6e, 0x74, 0xad, 0xac, 0x55, 0xd6, 0xf1, 0x20, 0x70, 0x2d, 0xb8, 0x7a, - 0x7d, 0x43, 0x2f, 0xaf, 0x94, 0xea, 0x5a, 0x53, 0xd7, 0x96, 0x2b, 0xf5, 0x06, 0xf3, 0xb9, 0xa0, - 0x7f, 0x4d, 0xa8, 0xd7, 0x80, 0x33, 0xf5, 0x8d, 0x85, 0x7a, 0x59, 0xaf, 0xac, 0x93, 0x74, 0x5d, - 0xab, 0x6a, 0x17, 0xd8, 0xd7, 0x49, 0xf8, 0xc1, 0x22, 0x98, 0xc6, 0x13, 0x80, 0x3a, 0x9d, 0x17, - 0xc0, 0x6f, 0xe6, 0xc0, 0xb4, 0x8e, 0x5c, 0xbb, 0xb3, 0x47, 0xe6, 0x08, 0xe3, 0x9a, 0x7a, 0x7c, - 0x47, 0x91, 0x3d, 0x54, 0xc8, 0x31, 0x3b, 0xcf, 0x31, 0x1a, 0x3d, 0xd1, 0x34, 0xf6, 0x0c, 0xb3, - 0x63, 0x5c, 0x64, 0x5d, 0xcd, 0xa4, 0x1e, 0x26, 0xa8, 0xf3, 0x40, 0xb5, 0x2f, 0x5b, 0xc8, 0xa9, - 0xb7, 0x2e, 0x6b, 0xde, 0x76, 0xa9, 0xdd, 0x76, 0x90, 0xeb, 0xb2, 0xd5, 0x8b, 0x3e, 0x5f, 0xd4, - 0x9b, 0xc0, 0x71, 0x92, 0xca, 0x65, 0xa6, 0x27, 0xa0, 0x7b, 0x93, 0x83, 0x9c, 0x25, 0x6b, 0xdf, - 0xcf, 0x99, 0xe7, 0x72, 0x86, 0xc9, 0xbc, 0x0f, 0x6f, 0x41, 0x74, 0x1d, 0xbf, 0x0e, 0x4c, 0x5b, - 0xc6, 0x0e, 0xd2, 0x1e, 0xec, 0x9a, 0x0e, 0x72, 0xcf, 0x4c, 0x90, 0x4d, 0x3b, 0x3e, 0x09, 0xfe, - 0xbe, 0xd4, 0x21, 0x48, 0x39, 0x89, 0x25, 0xd3, 0xfd, 0xe5, 0x21, 0x54, 0xbf, 0x4f, 0x3f, 0xa3, - 0xc0, 0x0f, 0x2a, 0x60, 0x86, 0x31, 0x55, 0xb2, 0xf6, 0x2b, 0x6d, 0x78, 0xad, 0x60, 0xfc, 0x1a, - 0x38, 0xcd, 0x37, 0x7e, 0xc9, 0x0b, 0xfc, 0x45, 0x45, 0xd6, 0x07, 0xaf, 0x4f, 0xc5, 0x49, 0x19, - 0xd1, 0x7e, 0x61, 0x9b, 0xf6, 0x2e, 0xf3, 0x43, 0x9b, 0xd4, 0xe9, 0x4b, 0x9a, 0x8b, 0x7a, 0xf0, - 0x0f, 0xa4, 0x3c, 0xfc, 0x24, 0xab, 0x71, 0x44, 0x00, 0x7e, 0x5c, 0x01, 0x73, 0x8c, 0xab, 0x3a, - 0x73, 0x3e, 0x97, 0x3a, 0x85, 0xf1, 0x4b, 0xd2, 0x86, 0x60, 0x9f, 0xfa, 0xb3, 0x92, 0x1e, 0x36, - 0x40, 0x7e, 0x58, 0x2a, 0x62, 0x8f, 0x74, 0x45, 0x8e, 0x08, 0xca, 0x77, 0xe6, 0xc0, 0xf4, 0x86, - 0x8b, 0x1c, 0xe6, 0x4c, 0x0a, 0x5f, 0x93, 0x03, 0xca, 0x32, 0x12, 0x36, 0x52, 0x5f, 0x28, 0xed, - 0xc0, 0xc7, 0x57, 0x96, 0x23, 0x8a, 0x6d, 0xa4, 0x08, 0xd8, 0x6e, 0x04, 0x73, 0x54, 0xa4, 0x25, - 0xcf, 0xc3, 0x46, 0xa2, 0xef, 0x2c, 0xd7, 0x93, 0x3a, 0x8a, 0xad, 0x22, 0x52, 0x16, 0xce, 0x52, - 0xc6, 0x3c, 0xad, 0xa2, 0x4d, 0x3a, 0x9f, 0xcd, 0xe9, 0x3d, 0xa9, 0xe4, 0x4e, 0xed, 0x2e, 0xa2, - 0x4e, 0xd5, 0x5c, 0xe6, 0x3c, 0xc9, 0xdc, 0xef, 0x13, 0xfc, 0xa6, 0x94, 0x2b, 0x9e, 0xbc, 0x74, - 0x92, 0xe9, 0x42, 0x77, 0x34, 0x26, 0xc9, 0x49, 0x50, 0xc4, 0x39, 0xc8, 0xfe, 0x8b, 0xae, 0xd5, - 0x6b, 0xab, 0xe7, 0xb5, 0xfe, 0xcb, 0x18, 0x79, 0xf8, 0x3c, 0x05, 0x4c, 0x2d, 0x38, 0xb6, 0xd1, - 0x6e, 0x19, 0xae, 0x07, 0xbf, 0x97, 0x05, 0x33, 0xeb, 0xc6, 0x7e, 0xc7, 0x36, 0xda, 0xc4, 0x7d, - 0xb7, 0xa7, 0x2f, 0xe8, 0xd2, 0x4f, 0x7e, 0x5f, 0xc0, 0x5e, 0xc5, 0xd3, 0x2a, 0xc1, 0x79, 0x92, - 0x8c, 0xcc, 0x2d, 0x6f, 0xc1, 0x36, 0x5f, 0xb6, 0x5f, 0x04, 0x3d, 0x9f, 0xaf, 0x79, 0x9e, 0xa7, - 0x08, 0x8b, 0xf2, 0x83, 0x72, 0x31, 0xf1, 0x64, 0x48, 0x1e, 0xcd, 0xae, 0xfc, 0x43, 0x93, 0xa0, - 0xb0, 0x88, 0x88, 0x15, 0xf7, 0x5f, 0xb3, 0x60, 0xa2, 0x8e, 0x3c, 0x62, 0xc1, 0xdd, 0x21, 0xf8, - 0x52, 0xb6, 0x49, 0x86, 0xd0, 0x47, 0xd5, 0x7f, 0xc7, 0x93, 0x75, 0xee, 0x10, 0x20, 0x79, 0x4e, + 0x0c, 0x8f, 0xff, 0x38, 0x04, 0x1e, 0xa7, 0xc0, 0x09, 0x1e, 0x0f, 0xe2, 0xcc, 0x11, 0x0d, 0xc3, + 0x97, 0x27, 0x41, 0xbe, 0x86, 0xda, 0xa8, 0xe9, 0xc1, 0xb7, 0x72, 0xc6, 0xc4, 0x1c, 0x50, 0x02, + 0xe7, 0x01, 0xc5, 0x6a, 0x09, 0xd3, 0x67, 0xa5, 0x67, 0xfa, 0x1c, 0x63, 0x06, 0xa8, 0x89, 0xcc, + 0x80, 0x6c, 0x0a, 0x66, 0x40, 0x6e, 0x78, 0x33, 0x20, 0x3f, 0xc8, 0x0c, 0x80, 0xaf, 0xc9, 0x27, + 0xed, 0x25, 0xa8, 0xa8, 0x8f, 0x76, 0xf0, 0xff, 0x1f, 0xd9, 0x24, 0xbd, 0x4a, 0x5f, 0x8e, 0x93, + 0x69, 0xf1, 0xf7, 0xd5, 0x14, 0x96, 0x1f, 0xb4, 0xeb, 0xc1, 0xb5, 0xe1, 0x7b, 0x43, 0x7f, 0x6a, + 0xb9, 0x56, 0xaf, 0x91, 0x11, 0xbf, 0x54, 0x35, 0x8c, 0x8d, 0x75, 0xba, 0x72, 0x77, 0x1a, 0x68, + 0x21, 0x15, 0x63, 0xa3, 0x42, 0xc7, 0xf7, 0x2d, 0x91, 0xfa, 0x52, 0xb9, 0xb2, 0xd8, 0x08, 0xda, + 0x4c, 0x65, 0xa9, 0x5a, 0xd8, 0xc6, 0x53, 0x36, 0x8e, 0x3a, 0x1e, 0xa0, 0x59, 0x09, 0xc5, 0xca, + 0x62, 0x63, 0xad, 0xa2, 0xaf, 0x55, 0x2b, 0xe5, 0x12, 0x49, 0xaf, 0xe9, 0xf5, 0x82, 0x85, 0x07, + 0x9a, 0x1e, 0x8b, 0xa2, 0xa6, 0x17, 0x8d, 0xd2, 0x8a, 0x6e, 0xd0, 0x22, 0x1f, 0xd0, 0x6e, 0x04, + 0xe7, 0x8a, 0x95, 0x6a, 0x1d, 0xa7, 0x14, 0x2b, 0xf7, 0xd7, 0xef, 0x5f, 0xd7, 0x1b, 0xeb, 0x46, + 0xb5, 0xa4, 0xd7, 0x6a, 0xb8, 0x9d, 0x32, 0xfb, 0xa3, 0xd0, 0xd6, 0x9e, 0x0c, 0xee, 0xe4, 0x58, + 0xd3, 0xeb, 0x64, 0x9b, 0x68, 0xad, 0x4a, 0x3c, 0x05, 0x16, 0xf5, 0xc6, 0x4a, 0xb1, 0xd6, 0x28, + 0x57, 0x4a, 0xd5, 0xb5, 0xf5, 0x62, 0xbd, 0x8c, 0x9b, 0xf3, 0xba, 0x51, 0xad, 0x57, 0x1b, 0xe7, + 0x75, 0xa3, 0x56, 0xae, 0x56, 0x0a, 0x36, 0xae, 0x32, 0xd7, 0xfe, 0xfd, 0x7e, 0xd8, 0xd1, 0xae, + 0x01, 0x67, 0xfc, 0xf4, 0xd5, 0x2a, 0x16, 0x34, 0x67, 0x91, 0x74, 0x52, 0xb5, 0x48, 0xfe, 0x45, + 0x01, 0xd9, 0x9a, 0xe7, 0x74, 0xe0, 0x8f, 0x84, 0x1d, 0xcc, 0x59, 0x00, 0x5c, 0xb2, 0xeb, 0x83, + 0x67, 0x61, 0x6c, 0x5e, 0xc6, 0xa5, 0xc0, 0x3f, 0x94, 0x5e, 0xaa, 0x0e, 0xfb, 0x6c, 0xa7, 0x13, + 0x61, 0xab, 0x7c, 0x57, 0xce, 0x77, 0x3f, 0x9a, 0x50, 0x32, 0x7d, 0xff, 0x85, 0x61, 0x16, 0xa3, + 0x21, 0x38, 0xcd, 0xc1, 0x86, 0xe5, 0xef, 0xab, 0x04, 0xd2, 0xae, 0x04, 0x57, 0xf4, 0x28, 0x17, + 0xd1, 0xa9, 0x4d, 0xed, 0x91, 0xe0, 0x11, 0x9c, 0x7a, 0xeb, 0x6b, 0xd5, 0xf3, 0x7a, 0xa0, 0xc8, + 0x8b, 0xc5, 0x7a, 0xb1, 0xb0, 0x05, 0x3f, 0xad, 0x82, 0xec, 0x9a, 0xb3, 0xd7, 0xbb, 0x43, 0x60, + 0xa3, 0xcb, 0xdc, 0x5a, 0xa8, 0xff, 0x2a, 0xfa, 0x2a, 0x4b, 0x89, 0x7d, 0x2d, 0x7a, 0x37, 0xf0, + 0xf3, 0x4a, 0x12, 0xb1, 0xaf, 0x1d, 0x76, 0x0b, 0xf0, 0x1f, 0x86, 0x11, 0x7b, 0x84, 0x68, 0x91, + 0x76, 0x0e, 0x9c, 0x0d, 0x3f, 0x94, 0x17, 0xf5, 0x4a, 0xbd, 0xbc, 0x74, 0x7f, 0x28, 0xdc, 0xb2, + 0x21, 0x25, 0xfe, 0x41, 0xdd, 0x58, 0xfc, 0x4c, 0xe3, 0x0c, 0x38, 0x19, 0x7e, 0x5b, 0xd6, 0xeb, + 0xfe, 0x97, 0x07, 0xe0, 0x33, 0x73, 0x60, 0x86, 0x76, 0xeb, 0x1b, 0x9d, 0x96, 0xe9, 0x21, 0x78, + 0x7b, 0x88, 0xee, 0x4d, 0xe0, 0x78, 0x79, 0x7d, 0xa9, 0x56, 0xf3, 0x1c, 0xd7, 0xdc, 0x42, 0xc5, + 0x56, 0xcb, 0x65, 0xd2, 0xea, 0x4d, 0x86, 0xef, 0x92, 0x5e, 0xe7, 0x13, 0x87, 0x12, 0x5a, 0x66, + 0x04, 0xea, 0x5f, 0x92, 0x5a, 0x97, 0x93, 0x20, 0x98, 0x0c, 0xfd, 0x07, 0x46, 0xdc, 0xe6, 0xa2, + 0x71, 0xd9, 0x3c, 0xf7, 0x6c, 0x05, 0x4c, 0xd5, 0xad, 0x1d, 0xf4, 0x34, 0xc7, 0x46, 0x5d, 0x6d, + 0x02, 0xa8, 0xcb, 0x6b, 0xf5, 0xc2, 0x31, 0xfc, 0x80, 0x8d, 0xaa, 0x0c, 0x79, 0xd0, 0x71, 0x01, + 0xf8, 0xa1, 0x58, 0x2f, 0xa8, 0xf8, 0x61, 0x4d, 0xaf, 0x17, 0xb2, 0xf8, 0xa1, 0xa2, 0xd7, 0x0b, + 0x39, 0xfc, 0xb0, 0xbe, 0x5a, 0x2f, 0xe4, 0xf1, 0x43, 0xb9, 0x56, 0x2f, 0x4c, 0xe0, 0x87, 0x85, + 0x5a, 0xbd, 0x30, 0x89, 0x1f, 0xce, 0xd7, 0xea, 0x85, 0x29, 0xfc, 0x50, 0xaa, 0xd7, 0x0b, 0x00, + 0x3f, 0x3c, 0xa5, 0x56, 0x2f, 0x4c, 0xe3, 0x87, 0x62, 0xa9, 0x5e, 0x98, 0x21, 0x0f, 0x7a, 0xbd, + 0x30, 0x8b, 0x1f, 0x6a, 0xb5, 0x7a, 0x61, 0x8e, 0x50, 0xae, 0xd5, 0x0b, 0xc7, 0x49, 0x59, 0xe5, + 0x7a, 0xa1, 0x80, 0x1f, 0x56, 0x6a, 0xf5, 0xc2, 0x09, 0x92, 0xb9, 0x56, 0x2f, 0x68, 0xa4, 0xd0, + 0x5a, 0xbd, 0x70, 0x05, 0xc9, 0x53, 0xab, 0x17, 0x4e, 0x92, 0x22, 0x6a, 0xf5, 0xc2, 0x29, 0xc2, + 0x86, 0x5e, 0x2f, 0x9c, 0x26, 0x79, 0x8c, 0x7a, 0xe1, 0x4a, 0xf2, 0xa9, 0x52, 0x2f, 0x9c, 0x21, + 0x8c, 0xe9, 0xf5, 0xc2, 0x55, 0xe4, 0xc1, 0xa8, 0x17, 0x20, 0xf9, 0x54, 0xac, 0x17, 0xae, 0x86, + 0x8f, 0x00, 0x53, 0xcb, 0xc8, 0xa3, 0x20, 0xc2, 0x02, 0x50, 0x97, 0x91, 0xc7, 0x9b, 0xf1, 0x5f, + 0x51, 0xc1, 0x95, 0x6c, 0xea, 0xb7, 0xe4, 0x3a, 0x3b, 0xab, 0x68, 0xcb, 0x6c, 0xee, 0xeb, 0x0f, + 0x62, 0x13, 0x0a, 0xd6, 0x84, 0xa5, 0xab, 0x4e, 0xd8, 0x19, 0x91, 0xe7, 0x58, 0x8b, 0xd3, 0x5f, + 0x8c, 0x52, 0xc3, 0xc5, 0x28, 0x66, 0x91, 0xfd, 0x33, 0xaf, 0xd1, 0xc2, 0xfa, 0x71, 0xa6, 0x67, + 0xfd, 0x18, 0x37, 0x93, 0x0e, 0x72, 0xbb, 0x8e, 0x6d, 0xb6, 0x6b, 0x6c, 0xbb, 0x94, 0xae, 0x7a, + 0xf5, 0x26, 0x6b, 0x3f, 0xe1, 0xb7, 0x0c, 0x6a, 0x95, 0x3d, 0x29, 0x6e, 0x86, 0xdb, 0x5b, 0xcd, + 0x88, 0x46, 0xf2, 0xf1, 0xa0, 0x91, 0xd4, 0x85, 0x46, 0x72, 0xef, 0x21, 0x68, 0x27, 0x6b, 0x2f, + 0xe5, 0xe1, 0xa6, 0x16, 0xa1, 0x33, 0xa1, 0xbf, 0x5c, 0xad, 0xc2, 0x4f, 0x2b, 0xe0, 0xb4, 0x6e, + 0xf7, 0xb3, 0xf0, 0x79, 0x5d, 0x78, 0x33, 0x0f, 0xcd, 0xba, 0x28, 0xd2, 0x3b, 0xfb, 0x56, 0xbb, + 0x3f, 0xcd, 0x08, 0x89, 0x7e, 0x22, 0x90, 0x68, 0x4d, 0x90, 0xe8, 0x3d, 0xc3, 0x93, 0x4e, 0x26, + 0xd0, 0xca, 0x48, 0x3b, 0xa0, 0x2c, 0xfc, 0x7a, 0x16, 0x3c, 0x82, 0x7a, 0x3c, 0x30, 0x0e, 0x69, + 0x2b, 0x2b, 0xda, 0x2d, 0x03, 0x75, 0x3d, 0xd3, 0xf5, 0x84, 0x53, 0xa8, 0x3d, 0x53, 0xa9, 0x4c, + 0x0a, 0x53, 0x29, 0x65, 0xe0, 0x54, 0x0a, 0xbe, 0x93, 0x37, 0x1f, 0x2e, 0x88, 0x18, 0x17, 0xfb, + 0xf7, 0xff, 0x71, 0x35, 0x8c, 0x82, 0x3a, 0xb0, 0x2b, 0x7e, 0x52, 0x80, 0x7a, 0xe9, 0xd0, 0x25, + 0x24, 0x43, 0xfc, 0x0f, 0x47, 0x6b, 0xe7, 0x65, 0xf9, 0x6f, 0xa2, 0x51, 0x52, 0x68, 0xa5, 0x6a, + 0xa0, 0x7f, 0x72, 0x02, 0x4c, 0x91, 0xb6, 0xb0, 0x6a, 0xd9, 0x97, 0xe0, 0xab, 0x54, 0x30, 0x53, + 0x41, 0x97, 0x4b, 0xdb, 0x66, 0xbb, 0x8d, 0xec, 0x2d, 0xc4, 0x9b, 0xed, 0x67, 0xc0, 0x84, 0xd9, + 0xe9, 0x54, 0xc2, 0x7d, 0x06, 0xff, 0x95, 0xf5, 0xbf, 0x5f, 0xeb, 0xdb, 0xc8, 0x33, 0x31, 0x8d, + 0x3c, 0x28, 0x77, 0x9e, 0x2f, 0x33, 0x62, 0x86, 0x7c, 0x1d, 0x98, 0x6e, 0xfa, 0x59, 0x02, 0x6f, + 0x75, 0x3e, 0x09, 0xfe, 0x5d, 0xa2, 0x6e, 0x40, 0xaa, 0xf0, 0x64, 0x4a, 0x81, 0x46, 0x6c, 0x87, + 0x9c, 0x02, 0x27, 0xea, 0xd5, 0x6a, 0x63, 0xad, 0x58, 0xb9, 0x3f, 0x3c, 0x25, 0xba, 0x09, 0x5f, + 0x9a, 0x05, 0x73, 0x35, 0xa7, 0xbd, 0x87, 0x42, 0x98, 0xca, 0x21, 0x4c, 0x3d, 0x72, 0xca, 0x1c, + 0x90, 0x93, 0x76, 0x1a, 0xe4, 0x4d, 0xbb, 0x7b, 0x19, 0xf9, 0xb6, 0x21, 0x7b, 0x63, 0x30, 0x7e, + 0x80, 0x6f, 0xc7, 0x86, 0x08, 0xe3, 0x5d, 0x03, 0x24, 0x29, 0x72, 0x15, 0x01, 0xe4, 0x39, 0x30, + 0xd3, 0xa5, 0x9b, 0x85, 0x75, 0x6e, 0x4f, 0x58, 0x48, 0x23, 0x2c, 0xd2, 0xdd, 0x6a, 0x95, 0xb1, + 0x48, 0xde, 0xe0, 0xab, 0x82, 0xe6, 0xbf, 0x21, 0x40, 0x5c, 0x3c, 0x0c, 0x63, 0xc9, 0x40, 0x7e, + 0xf9, 0xa8, 0x67, 0x78, 0x67, 0xc0, 0x49, 0xd6, 0x6a, 0x1b, 0xa5, 0x95, 0xe2, 0xea, 0xaa, 0x5e, + 0x59, 0xd6, 0x1b, 0xe5, 0x45, 0xba, 0x55, 0x11, 0xa6, 0x14, 0xeb, 0x75, 0x7d, 0x6d, 0xbd, 0x5e, + 0x6b, 0xe8, 0x4f, 0x2d, 0xe9, 0xfa, 0x22, 0x71, 0x44, 0x22, 0x27, 0x09, 0x7c, 0x97, 0xb1, 0x62, + 0xa5, 0x76, 0x41, 0x37, 0x0a, 0xdb, 0xe7, 0x8a, 0x60, 0x9a, 0xeb, 0xe7, 0x31, 0x77, 0x8b, 0x68, + 0xd3, 0xdc, 0x6d, 0x33, 0x5b, 0xad, 0x70, 0x0c, 0x73, 0x47, 0x64, 0x53, 0xb5, 0xdb, 0xfb, 0x85, + 0x8c, 0x56, 0x00, 0x33, 0x7c, 0x97, 0x5e, 0x50, 0xe0, 0xdb, 0xae, 0x01, 0x53, 0x17, 0x1c, 0xf7, + 0x12, 0xf1, 0x1e, 0x83, 0xef, 0xa5, 0xd1, 0x24, 0xfc, 0x73, 0x79, 0xdc, 0xc0, 0xfe, 0x72, 0x79, + 0x6f, 0x01, 0x9f, 0xda, 0xfc, 0xc0, 0xb3, 0x77, 0xd7, 0x81, 0xe9, 0xcb, 0x7e, 0xee, 0xb0, 0xa5, + 0x73, 0x49, 0xf0, 0xbf, 0xca, 0xed, 0xff, 0x0f, 0x2e, 0x32, 0xfd, 0xfd, 0xe9, 0xb7, 0x2a, 0x20, + 0xbf, 0x8c, 0xbc, 0x62, 0xbb, 0xcd, 0xcb, 0xed, 0xc5, 0xd2, 0xe7, 0x29, 0x84, 0x4a, 0x14, 0xdb, + 0xed, 0xe8, 0x46, 0xc5, 0x09, 0xc8, 0xf7, 0xfb, 0x15, 0xd2, 0xe0, 0x6b, 0xa4, 0x4e, 0x42, 0x0d, + 0x28, 0x30, 0x7d, 0x89, 0x7d, 0x50, 0x0d, 0xf6, 0xb8, 0x5f, 0xcb, 0x59, 0x39, 0x8f, 0x0f, 0x23, + 0x89, 0x64, 0xe2, 0xf7, 0xca, 0xfd, 0x7c, 0xda, 0x7d, 0x60, 0x62, 0xb7, 0x8b, 0x4a, 0x66, 0x17, + 0x11, 0xde, 0x7a, 0x6b, 0x5a, 0xbd, 0xf8, 0x00, 0x6a, 0x7a, 0xf3, 0xe5, 0x1d, 0x6c, 0x50, 0x6f, + 0xd0, 0x8c, 0x41, 0x70, 0x0e, 0xf6, 0x6e, 0xf8, 0x14, 0xf0, 0xa4, 0xe4, 0xb2, 0xe5, 0x6d, 0x97, + 0xb6, 0x4d, 0x8f, 0xad, 0x6d, 0x07, 0xef, 0xf0, 0xf9, 0x43, 0xc0, 0x19, 0xbb, 0x17, 0x1c, 0x79, + 0x2c, 0x2b, 0x31, 0x88, 0x23, 0xd8, 0xc0, 0x1d, 0x06, 0xc4, 0x7f, 0x54, 0x40, 0xb6, 0xda, 0x41, + 0xb6, 0xf4, 0x19, 0x84, 0x40, 0xb6, 0x4a, 0x8f, 0x6c, 0x5f, 0x25, 0xef, 0x1d, 0x16, 0x54, 0x1a, + 0x97, 0x1c, 0x21, 0xd9, 0x5b, 0x41, 0xd6, 0xb2, 0x37, 0x1d, 0x66, 0x98, 0x5e, 0x1d, 0xb1, 0x09, + 0x54, 0xb6, 0x37, 0x1d, 0x83, 0x64, 0x94, 0x75, 0x0c, 0x8b, 0x2b, 0x3b, 0x7d, 0x71, 0x7f, 0x63, + 0x12, 0xe4, 0xa9, 0x3a, 0xc3, 0x17, 0xa9, 0x40, 0x2d, 0xb6, 0x5a, 0x11, 0x82, 0x57, 0x0e, 0x08, + 0xde, 0x21, 0xbf, 0x05, 0x98, 0x04, 0xef, 0x62, 0x08, 0x09, 0xc9, 0xbe, 0x9d, 0x35, 0xa9, 0x62, + 0xab, 0x15, 0xed, 0x83, 0x1a, 0x14, 0xa8, 0x88, 0x05, 0xf2, 0x2d, 0x5c, 0x95, 0x6b, 0xe1, 0x89, + 0x07, 0x82, 0x48, 0xfe, 0xd2, 0x87, 0xe8, 0x9f, 0x15, 0x30, 0xb1, 0x6a, 0x75, 0x3d, 0x8c, 0x4d, + 0x51, 0x06, 0x9b, 0x6b, 0xc0, 0x94, 0x2f, 0x1a, 0xdc, 0xe5, 0xe1, 0xfe, 0x3c, 0x4c, 0x80, 0xaf, + 0xe6, 0xd1, 0x79, 0x8a, 0x88, 0xce, 0x13, 0xe2, 0x6b, 0xcf, 0xb8, 0x88, 0xf6, 0xed, 0x0e, 0x8b, + 0x55, 0x7a, 0x8b, 0x7d, 0x53, 0x20, 0xf0, 0x35, 0x41, 0xe0, 0x77, 0x0c, 0x53, 0x64, 0xfa, 0x42, + 0xff, 0x8c, 0x02, 0x00, 0x2e, 0x9b, 0x1d, 0xa0, 0x79, 0xb4, 0x70, 0x2c, 0x36, 0x46, 0xba, 0x2f, + 0xe5, 0xa5, 0xbb, 0x26, 0x4a, 0xf7, 0xc7, 0x07, 0x57, 0x35, 0xee, 0xa0, 0x8c, 0x56, 0x00, 0xaa, + 0x15, 0x88, 0x16, 0x3f, 0xc2, 0xb7, 0x06, 0x42, 0x5d, 0x17, 0x84, 0x7a, 0xd7, 0x90, 0x25, 0xa5, + 0x2f, 0xd7, 0xbf, 0x52, 0xc0, 0x44, 0x0d, 0x79, 0xb8, 0x9b, 0x84, 0xe7, 0x65, 0x7a, 0x78, 0xae, + 0x6d, 0x2b, 0x92, 0x6d, 0xfb, 0x3b, 0x19, 0xd9, 0xf0, 0x1a, 0xa1, 0x64, 0x18, 0x4f, 0x11, 0x8b, + 0x07, 0xaf, 0x95, 0x0a, 0xaf, 0x31, 0x88, 0x5a, 0xfa, 0xd2, 0x7d, 0xb3, 0x12, 0x6c, 0xcc, 0x3f, + 0x46, 0x98, 0xd8, 0xf1, 0x66, 0x71, 0xe6, 0xa0, 0x59, 0xfc, 0xad, 0x4c, 0x72, 0x33, 0x24, 0x6e, + 0x57, 0x3a, 0xb1, 0xb1, 0x31, 0x82, 0x0d, 0xe3, 0x61, 0xe4, 0xf5, 0x0c, 0x15, 0xe4, 0xd9, 0xca, + 0xf2, 0x3d, 0xf1, 0x2b, 0xcb, 0x83, 0xa7, 0x16, 0xef, 0x19, 0xc2, 0x94, 0x8b, 0x5b, 0xee, 0x0d, + 0xd8, 0x50, 0x38, 0x36, 0x6e, 0x01, 0x39, 0x12, 0xff, 0x8f, 0x8d, 0x73, 0xe1, 0x5e, 0xbf, 0x4f, + 0x42, 0xc7, 0x5f, 0x0d, 0x9a, 0x29, 0x31, 0x0a, 0x23, 0x58, 0x21, 0x1e, 0x06, 0x85, 0x7f, 0xf9, + 0x64, 0x26, 0x30, 0x42, 0xde, 0x93, 0x65, 0xe6, 0xdf, 0x47, 0xc5, 0x48, 0x04, 0x4d, 0xc7, 0xf6, + 0xd0, 0x83, 0xdc, 0x9a, 0x7c, 0x90, 0x10, 0x6b, 0x19, 0x9c, 0x01, 0x13, 0x9e, 0xcb, 0xaf, 0xd3, + 0xfb, 0xaf, 0x7c, 0x8f, 0x93, 0x13, 0x7b, 0x9c, 0x0a, 0x38, 0x67, 0xd9, 0xcd, 0xf6, 0x6e, 0x0b, + 0x19, 0xa8, 0x6d, 0xe2, 0x5a, 0x75, 0x8b, 0xdd, 0x45, 0xd4, 0x41, 0x76, 0x0b, 0xd9, 0x1e, 0xe5, + 0xd3, 0xf7, 0xc9, 0x95, 0xc8, 0x09, 0xbf, 0xca, 0x2b, 0xc6, 0xdd, 0xa2, 0x62, 0x3c, 0xba, 0xdf, + 0xbc, 0x22, 0xc6, 0x08, 0xbd, 0x03, 0x00, 0x5a, 0xb7, 0xf3, 0x16, 0xba, 0xcc, 0x3a, 0xc4, 0xab, + 0x7a, 0x4c, 0xd1, 0x6a, 0x90, 0xc1, 0xe0, 0x32, 0xc3, 0x2f, 0x06, 0xca, 0x70, 0xaf, 0xa0, 0x0c, + 0xb7, 0x48, 0xb2, 0x90, 0x4c, 0x0f, 0x3a, 0x43, 0xac, 0x75, 0xcc, 0x82, 0xa9, 0x70, 0x85, 0x52, + 0xd5, 0xae, 0x02, 0xa7, 0x7c, 0x9f, 0x87, 0x8a, 0xae, 0x2f, 0xd6, 0x1a, 0x1b, 0xeb, 0xcb, 0x46, + 0x71, 0x51, 0x2f, 0x00, 0x4d, 0x03, 0x73, 0xd5, 0x85, 0xa7, 0xe8, 0xa5, 0x7a, 0xe0, 0xaa, 0x90, + 0x85, 0x9f, 0x55, 0x40, 0x8e, 0x38, 0x94, 0xc3, 0x9f, 0x1e, 0x91, 0xe6, 0x74, 0x85, 0x1d, 0x9e, + 0x60, 0x22, 0x25, 0x1f, 0x21, 0x90, 0x09, 0x93, 0x70, 0x75, 0xa8, 0x08, 0x81, 0x31, 0x84, 0xd2, + 0x6f, 0x9e, 0xb8, 0x49, 0xd6, 0xb6, 0x9d, 0xcb, 0x3f, 0xcc, 0x4d, 0x12, 0xd7, 0xff, 0x88, 0x9b, + 0x64, 0x1f, 0x16, 0xc6, 0xde, 0x24, 0xfb, 0xb4, 0xbb, 0x98, 0x66, 0x0a, 0x9f, 0x9e, 0x0b, 0x16, + 0x64, 0x9e, 0xad, 0x1c, 0x6a, 0x41, 0xa6, 0x08, 0x66, 0x2d, 0xdb, 0x43, 0xae, 0x6d, 0xb6, 0x97, + 0xda, 0xe6, 0x96, 0x7f, 0x6c, 0xb9, 0x77, 0x16, 0x5e, 0xe6, 0xf2, 0x18, 0xe2, 0x1f, 0xda, 0x59, + 0x00, 0x3c, 0xb4, 0xd3, 0x69, 0x9b, 0x5e, 0xa8, 0x7a, 0x5c, 0x0a, 0xaf, 0x7d, 0x59, 0x51, 0xfb, + 0x1e, 0x07, 0xae, 0xa0, 0xa0, 0xd5, 0xf7, 0x3b, 0x68, 0xc3, 0xb6, 0x7e, 0x66, 0x97, 0x04, 0xae, + 0xa1, 0x3a, 0xda, 0xef, 0x93, 0xb0, 0x2c, 0x91, 0xef, 0x59, 0x96, 0xf8, 0x47, 0xe9, 0xa3, 0x99, + 0x7e, 0xab, 0x1f, 0x70, 0x34, 0x33, 0x68, 0x69, 0x6a, 0x4f, 0x4b, 0x0b, 0x8c, 0x85, 0xac, 0x84, + 0xb1, 0xc0, 0xa3, 0x92, 0x93, 0x34, 0xb4, 0x5f, 0x29, 0x75, 0xf6, 0x33, 0xae, 0x1a, 0x63, 0x98, + 0xc8, 0xa9, 0x60, 0x8e, 0x16, 0xbd, 0xe0, 0x38, 0x97, 0x76, 0x4c, 0xf7, 0x12, 0x74, 0x0f, 0xa5, + 0x8a, 0xb1, 0x6b, 0x22, 0x91, 0x0b, 0x7d, 0x9f, 0xe0, 0x51, 0x5f, 0x16, 0x51, 0x7f, 0x7c, 0xb4, + 0xb8, 0x7c, 0x9e, 0xc7, 0xb3, 0x28, 0xf2, 0x86, 0x00, 0xcf, 0xa7, 0x08, 0x78, 0xfe, 0x58, 0x62, + 0x06, 0xd3, 0xc7, 0xf5, 0x8f, 0x03, 0x5c, 0xfd, 0x8e, 0x9e, 0x9f, 0x4f, 0x8e, 0x12, 0x57, 0xf8, + 0xa5, 0xe1, 0xb0, 0xf3, 0xf9, 0x1a, 0x02, 0xbb, 0x02, 0x50, 0x2f, 0x05, 0x5b, 0x58, 0xf8, 0x91, + 0xaf, 0x50, 0x36, 0x3d, 0x34, 0x23, 0x58, 0x1e, 0x0b, 0x9a, 0x27, 0x45, 0x16, 0xaa, 0x9d, 0x54, + 0x31, 0xfd, 0x82, 0xf4, 0x3a, 0x4d, 0x5f, 0x01, 0x51, 0xee, 0xc6, 0xd3, 0x2a, 0xe5, 0x16, 0x79, + 0xe4, 0xd9, 0x4c, 0x1f, 0xcd, 0xe7, 0xe5, 0xc0, 0x94, 0x7f, 0x78, 0x96, 0x44, 0xd4, 0x0e, 0x30, + 0x3c, 0x0d, 0xf2, 0x5d, 0x67, 0xd7, 0x6d, 0x22, 0xb6, 0x72, 0xc6, 0xde, 0x86, 0x58, 0xe5, 0x19, + 0x38, 0x9e, 0x1f, 0x30, 0x19, 0xb2, 0x89, 0x4d, 0x86, 0x68, 0x83, 0x34, 0x6e, 0x80, 0x7f, 0xbe, + 0x74, 0x18, 0x44, 0x01, 0xb3, 0x1a, 0xf2, 0x1e, 0x8e, 0x63, 0xfc, 0x1f, 0x48, 0xad, 0x21, 0x0c, + 0xa8, 0x49, 0x32, 0x95, 0xab, 0x0e, 0x61, 0xa8, 0x5e, 0x0d, 0xae, 0xf4, 0x73, 0x30, 0x0b, 0x95, + 0x58, 0xa4, 0x1b, 0xc6, 0x6a, 0x41, 0x85, 0xcf, 0xc8, 0x82, 0x02, 0x65, 0xad, 0x1a, 0x18, 0x6b, + 0xf0, 0xc5, 0x99, 0xa3, 0xb6, 0x48, 0xa3, 0xa7, 0x98, 0x9f, 0x52, 0x64, 0x43, 0x2d, 0x09, 0x82, + 0x0f, 0x6b, 0x17, 0xa1, 0x49, 0x43, 0x34, 0xb3, 0x18, 0xe5, 0x83, 0xbf, 0x95, 0x91, 0x89, 0xdc, + 0x24, 0xc7, 0x62, 0xfa, 0xbd, 0xd2, 0xe7, 0xb2, 0x7e, 0x0c, 0x84, 0x25, 0xd7, 0xd9, 0xd9, 0x70, + 0xdb, 0xf0, 0xff, 0x96, 0x0a, 0x8c, 0x17, 0x61, 0xfe, 0x2b, 0xd1, 0xe6, 0x7f, 0x01, 0xa8, 0xbb, + 0x6e, 0xdb, 0x1f, 0xbe, 0x77, 0xdd, 0xf6, 0x10, 0xc3, 0xb7, 0x76, 0x23, 0x98, 0x33, 0x5b, 0xad, + 0x75, 0x73, 0x0b, 0x95, 0xf0, 0xbc, 0xda, 0xf6, 0xd8, 0xf9, 0xe8, 0x9e, 0xd4, 0xd8, 0xae, 0xe8, + 0xab, 0xd2, 0x3b, 0x71, 0x02, 0x48, 0x4c, 0x3e, 0x63, 0x19, 0xde, 0xf0, 0x90, 0xd0, 0xdc, 0x36, + 0xc3, 0x68, 0x0d, 0xec, 0x4d, 0x72, 0x87, 0x4e, 0x82, 0xef, 0xf4, 0x35, 0xeb, 0x77, 0x15, 0x30, + 0x81, 0xe5, 0x5d, 0x6c, 0xb5, 0xe0, 0xa3, 0x84, 0xa0, 0x26, 0x91, 0x7b, 0xa4, 0xcf, 0x91, 0xde, + 0x9c, 0xf6, 0x6b, 0x48, 0xe9, 0x47, 0x60, 0x12, 0x0a, 0x51, 0x11, 0x84, 0x28, 0xb7, 0x07, 0x1d, + 0x5b, 0x44, 0xfa, 0xe2, 0xfb, 0xb8, 0x02, 0x66, 0xfd, 0x79, 0xc4, 0x12, 0xf2, 0x9a, 0xdb, 0xf0, + 0x0e, 0xd9, 0x85, 0x26, 0xd6, 0xd2, 0x94, 0xa0, 0xa5, 0xc1, 0xef, 0x67, 0x12, 0xaa, 0xbc, 0x50, + 0x72, 0xc4, 0x2a, 0x5d, 0x22, 0x5d, 0x8c, 0x23, 0x98, 0xbe, 0x30, 0xbf, 0xa8, 0x00, 0x50, 0x77, + 0x82, 0xb9, 0xee, 0x21, 0x24, 0xf9, 0x42, 0xe9, 0x28, 0xf5, 0xac, 0xe2, 0x61, 0xb1, 0xc9, 0x7b, + 0x0e, 0xc9, 0x2d, 0xb6, 0x41, 0x25, 0x8d, 0xa5, 0xad, 0x4f, 0x2d, 0xee, 0x76, 0xda, 0x56, 0xd3, + 0xf4, 0x7a, 0xf7, 0x85, 0xa3, 0xc5, 0x4b, 0xae, 0x9b, 0x49, 0x64, 0x14, 0x06, 0x65, 0x44, 0xc8, + 0x92, 0x1e, 0xb6, 0x55, 0xfc, 0xc3, 0xb6, 0x92, 0x7b, 0x3d, 0x03, 0x88, 0x8f, 0x41, 0x3d, 0x55, + 0x70, 0xbc, 0xda, 0x41, 0xf6, 0x82, 0x8b, 0xcc, 0x56, 0xd3, 0xdd, 0xdd, 0xb9, 0xd8, 0xe5, 0x9d, + 0x1a, 0xe2, 0x75, 0x94, 0x5b, 0x3a, 0x56, 0x84, 0xa5, 0x63, 0xf8, 0x2c, 0x55, 0xf6, 0xe8, 0x37, + 0xb7, 0xc1, 0xc1, 0xf1, 0x30, 0xc4, 0x50, 0x97, 0x68, 0x2b, 0xae, 0x67, 0x95, 0x38, 0x9b, 0x64, + 0x95, 0xf8, 0x8d, 0x52, 0x07, 0xc9, 0xa5, 0xea, 0x35, 0x96, 0x1d, 0xd5, 0xb9, 0x1a, 0xf2, 0x22, + 0xe0, 0xbd, 0x01, 0xcc, 0x5e, 0x0c, 0xbf, 0x04, 0x10, 0x8b, 0x89, 0x7d, 0xfc, 0x1c, 0xde, 0x9c, + 0x74, 0x05, 0x46, 0x64, 0x21, 0x02, 0xdd, 0x00, 0x41, 0x45, 0x66, 0x33, 0x35, 0xd1, 0x72, 0x4a, + 0x6c, 0xf9, 0xe9, 0xa3, 0xf0, 0x61, 0x05, 0x4c, 0x93, 0x4b, 0x74, 0x16, 0xf6, 0x89, 0x77, 0xbe, + 0xa4, 0x51, 0xf2, 0x3c, 0x5e, 0xcc, 0x1a, 0xc8, 0xb6, 0x2d, 0xfb, 0x92, 0xbf, 0x0b, 0x8e, 0x9f, + 0xc3, 0x2b, 0x19, 0x94, 0x3e, 0x57, 0x32, 0x04, 0xfb, 0x14, 0x41, 0xb9, 0x87, 0xba, 0x23, 0x6c, + 0x20, 0xb9, 0xf4, 0xc5, 0xf8, 0xf7, 0x59, 0x90, 0xaf, 0x21, 0xd3, 0x6d, 0x6e, 0xc3, 0xf7, 0x28, + 0x7d, 0xa7, 0x0a, 0x93, 0xe2, 0x54, 0x61, 0x09, 0x4c, 0x6c, 0x5a, 0x6d, 0x0f, 0xb9, 0xd4, 0x33, + 0x88, 0xef, 0xda, 0x69, 0x13, 0x5f, 0x68, 0x3b, 0xcd, 0x4b, 0xf3, 0xcc, 0x74, 0x9f, 0xf7, 0x83, + 0x49, 0xcd, 0x2f, 0x91, 0x9f, 0x0c, 0xff, 0x67, 0x6c, 0x10, 0x76, 0x1d, 0xd7, 0x8b, 0x8a, 0xce, + 0x1a, 0x41, 0xa5, 0xe6, 0xb8, 0x9e, 0x41, 0x7f, 0xc4, 0x30, 0x6f, 0xee, 0xb6, 0xdb, 0x75, 0xf4, + 0xa0, 0xe7, 0x4f, 0xdb, 0xfc, 0x77, 0x6c, 0x2c, 0x3a, 0x9b, 0x9b, 0x5d, 0x44, 0x17, 0x0d, 0x72, + 0x06, 0x7b, 0xd3, 0x4e, 0x82, 0x5c, 0xdb, 0xda, 0xb1, 0xe8, 0x44, 0x23, 0x67, 0xd0, 0x17, 0xed, + 0x66, 0x50, 0x08, 0xe7, 0x38, 0x94, 0xd1, 0x33, 0x79, 0xd2, 0x34, 0x0f, 0xa4, 0x63, 0x9d, 0xb9, + 0x84, 0xf6, 0xbb, 0x67, 0x26, 0xc8, 0x77, 0xf2, 0x2c, 0xba, 0x61, 0xca, 0xec, 0x77, 0x50, 0x89, + 0x47, 0xcf, 0x60, 0x5d, 0xd4, 0x74, 0xdc, 0x96, 0x2f, 0x9b, 0xe8, 0x09, 0x06, 0xcb, 0x97, 0x6c, + 0x97, 0xa2, 0x6f, 0xe1, 0xe9, 0x6b, 0xda, 0x3b, 0xf3, 0xb8, 0xdb, 0xc4, 0x45, 0x5f, 0xb0, 0xbc, + 0xed, 0x35, 0xe4, 0x99, 0xf0, 0xef, 0xd5, 0xbe, 0x1a, 0x37, 0xfd, 0xbf, 0x35, 0x6e, 0x80, 0xc6, + 0xd1, 0x30, 0x01, 0xde, 0xae, 0x6b, 0x63, 0x39, 0xb2, 0xc0, 0x5c, 0x5c, 0x8a, 0x76, 0x17, 0xb8, + 0x2a, 0x7c, 0xf3, 0x97, 0x4a, 0x17, 0xd9, 0xb4, 0x75, 0x8a, 0x64, 0x8f, 0xce, 0xa0, 0xad, 0x83, + 0xeb, 0xe9, 0xc7, 0x95, 0xfa, 0xda, 0xea, 0x8a, 0xb5, 0xb5, 0xdd, 0xb6, 0xb6, 0xb6, 0xbd, 0x6e, + 0xd9, 0xee, 0x7a, 0xc8, 0x6c, 0x55, 0x37, 0x0d, 0x1a, 0x57, 0x19, 0x10, 0x3a, 0x32, 0x59, 0x45, + 0xcf, 0x21, 0xb9, 0xd1, 0x8d, 0xd7, 0x94, 0x88, 0x96, 0xf2, 0x63, 0xb8, 0xa5, 0x74, 0x77, 0xdb, + 0x01, 0xa6, 0xd7, 0xf4, 0x60, 0x1a, 0xaa, 0xfa, 0x6e, 0x9b, 0x34, 0x17, 0x92, 0x39, 0xe9, 0x38, + 0x17, 0xc3, 0x49, 0xfa, 0xcd, 0xe6, 0xff, 0xcb, 0x83, 0xdc, 0xb2, 0x6b, 0x76, 0xb6, 0xe1, 0x33, + 0xb8, 0xfe, 0x79, 0x54, 0x6d, 0x22, 0xd0, 0x4e, 0x65, 0x90, 0x76, 0xaa, 0x03, 0xb4, 0x33, 0xcb, + 0x69, 0x67, 0xf4, 0xa2, 0xf2, 0x39, 0x30, 0xd3, 0x74, 0xda, 0x6d, 0xd4, 0xc4, 0xf2, 0x28, 0xb7, + 0xc8, 0x6a, 0xce, 0x94, 0x21, 0xa4, 0x91, 0x80, 0x7b, 0xc8, 0xab, 0xd1, 0x35, 0x74, 0xaa, 0xf4, + 0x61, 0x02, 0x7c, 0xb1, 0x02, 0xb2, 0x7a, 0x6b, 0x0b, 0x09, 0xeb, 0xec, 0x19, 0x6e, 0x9d, 0xfd, + 0x34, 0xc8, 0x7b, 0xa6, 0xbb, 0x85, 0x3c, 0x7f, 0x9d, 0x80, 0xbe, 0x05, 0x71, 0x00, 0x55, 0x2e, + 0x0e, 0xe0, 0x8f, 0x83, 0x2c, 0x96, 0x19, 0x8b, 0xb0, 0x73, 0x7d, 0x3f, 0xf8, 0x89, 0xec, 0xe7, + 0x71, 0x89, 0xf3, 0xb8, 0xd6, 0x06, 0xf9, 0xa1, 0x17, 0xeb, 0xdc, 0x01, 0xac, 0xc9, 0x15, 0x31, + 0x4d, 0xc7, 0x2e, 0xef, 0x98, 0x5b, 0x88, 0x55, 0x33, 0x4c, 0xf0, 0xbf, 0xea, 0x3b, 0xce, 0x03, + 0x16, 0x0b, 0xc9, 0x17, 0x26, 0xe0, 0x2a, 0x6c, 0x5b, 0xad, 0x16, 0xb2, 0x59, 0xcb, 0x66, 0x6f, + 0xe7, 0xce, 0x82, 0x2c, 0xe6, 0x01, 0xeb, 0x0f, 0x36, 0x16, 0x0a, 0xc7, 0xb4, 0x19, 0xdc, 0xac, + 0x68, 0xe3, 0x2d, 0x64, 0xc4, 0x35, 0x55, 0x19, 0xb7, 0x1d, 0x5a, 0xb9, 0xfe, 0x8d, 0xeb, 0xb1, + 0x20, 0x67, 0x3b, 0x2d, 0x34, 0x70, 0x10, 0xa2, 0xb9, 0xb4, 0x27, 0x80, 0x1c, 0x6a, 0xe1, 0x5e, + 0x41, 0x25, 0xd9, 0xcf, 0xc6, 0xcb, 0xd2, 0xa0, 0x99, 0x93, 0xf9, 0x06, 0xf5, 0xe3, 0x36, 0xfd, + 0x06, 0xf8, 0x8b, 0x13, 0xe0, 0x38, 0xed, 0x03, 0x6a, 0xbb, 0x17, 0x31, 0xa9, 0x8b, 0x08, 0xbe, + 0xb6, 0xff, 0xc0, 0x75, 0x5c, 0x54, 0xf6, 0x93, 0x20, 0xd7, 0xdd, 0xbd, 0x18, 0x18, 0xa1, 0xf4, + 0x85, 0x6f, 0xba, 0xca, 0x48, 0x86, 0x33, 0x75, 0xd8, 0xe1, 0x4c, 0x18, 0x9a, 0x54, 0xbf, 0xf1, + 0x87, 0x03, 0x59, 0x9e, 0x24, 0xfb, 0x03, 0x59, 0xbf, 0x61, 0xe8, 0x0c, 0x98, 0x30, 0x37, 0x3d, + 0xe4, 0x86, 0x66, 0x22, 0x7b, 0xc5, 0x43, 0xe5, 0x45, 0xb4, 0xe9, 0xb8, 0x58, 0x2c, 0x53, 0x74, + 0xa8, 0xf4, 0xdf, 0xb9, 0x96, 0x0b, 0x84, 0x1d, 0xb2, 0x5b, 0xc0, 0x09, 0xdb, 0x59, 0x44, 0x1d, + 0x26, 0x67, 0x8a, 0xe2, 0x2c, 0x69, 0x01, 0x07, 0x3f, 0x1c, 0xe8, 0x4a, 0xe6, 0x0e, 0x76, 0x25, + 0xf0, 0x93, 0x49, 0xe7, 0xcc, 0x3d, 0x40, 0x8f, 0xcc, 0x42, 0xd3, 0x9e, 0x04, 0x66, 0x5a, 0xcc, + 0x45, 0xab, 0x69, 0x05, 0xad, 0x24, 0xf2, 0x3f, 0x21, 0x73, 0xa8, 0x48, 0x59, 0x5e, 0x91, 0x96, + 0xc1, 0x24, 0x39, 0x90, 0x83, 0x35, 0x29, 0xd7, 0x13, 0xaf, 0x90, 0x4c, 0xeb, 0x82, 0x4a, 0x71, + 0x62, 0x9b, 0x2f, 0xb1, 0x5f, 0x8c, 0xe0, 0xe7, 0x64, 0xb3, 0xef, 0x78, 0x09, 0xa5, 0xdf, 0x1c, + 0xdf, 0x94, 0x07, 0x57, 0x95, 0x5c, 0xa7, 0xdb, 0x25, 0x51, 0x28, 0x7a, 0x1b, 0xe6, 0xeb, 0x15, + 0x21, 0x22, 0xf0, 0xc3, 0xba, 0xf9, 0xf5, 0x6b, 0x50, 0xe3, 0x6b, 0x1a, 0x5f, 0x95, 0x3e, 0xca, + 0x1c, 0xec, 0x3f, 0x44, 0x08, 0xfd, 0x87, 0xa3, 0x91, 0xbc, 0x33, 0x23, 0x73, 0xba, 0x3a, 0xa1, + 0xac, 0xd2, 0x6f, 0x2e, 0x5f, 0x50, 0xc0, 0xd5, 0xbd, 0xdc, 0x6c, 0xd8, 0xdd, 0xa0, 0xc1, 0x5c, + 0x3b, 0xa0, 0xbd, 0x88, 0xa7, 0x71, 0x63, 0x6f, 0x40, 0x89, 0xa8, 0x3b, 0x57, 0x5a, 0xc4, 0x62, + 0xc9, 0xbb, 0x33, 0x32, 0x37, 0xa0, 0x24, 0x26, 0x9f, 0xbe, 0x70, 0x3f, 0x95, 0x05, 0xc7, 0x97, + 0x5d, 0x67, 0xb7, 0xd3, 0x0d, 0x7b, 0xa0, 0xbf, 0xe9, 0xbf, 0xe1, 0x9a, 0x97, 0x31, 0x0d, 0xae, + 0x03, 0xd3, 0x2e, 0xb3, 0xe6, 0xc2, 0xed, 0x57, 0x3e, 0x89, 0xef, 0xbd, 0xd4, 0xc3, 0xf4, 0x5e, + 0x61, 0x3f, 0x93, 0x15, 0xfa, 0x99, 0xde, 0x9e, 0x23, 0xd7, 0xa7, 0xe7, 0xf8, 0x6b, 0x25, 0xe1, + 0xa0, 0xda, 0x23, 0xa2, 0x88, 0xfe, 0xa2, 0x04, 0xf2, 0x5b, 0x24, 0x23, 0xeb, 0x2e, 0x1e, 0x23, + 0x57, 0x33, 0x42, 0xdc, 0x60, 0xbf, 0x86, 0x72, 0x55, 0x79, 0x1d, 0x4e, 0x34, 0xc0, 0xc5, 0x73, + 0x9b, 0xbe, 0x52, 0xbd, 0x2a, 0x0b, 0x66, 0x82, 0xd2, 0xcb, 0xad, 0x2e, 0x7c, 0x5e, 0x7f, 0x8d, + 0x9a, 0x95, 0xd1, 0xa8, 0x03, 0xeb, 0xcc, 0xc1, 0xa8, 0xa3, 0x72, 0xa3, 0x4e, 0xdf, 0xd1, 0x65, + 0x26, 0x62, 0x74, 0x81, 0x4f, 0x57, 0x65, 0x63, 0xea, 0x8b, 0x5d, 0x2b, 0xa9, 0xcd, 0xc3, 0x79, + 0xb0, 0x90, 0x8c, 0xec, 0x3f, 0xb8, 0x56, 0xe9, 0x2b, 0xc9, 0xfb, 0x15, 0x70, 0xe2, 0x60, 0x67, + 0xfe, 0x48, 0xd1, 0x0b, 0x0d, 0xd7, 0xa9, 0x1b, 0x78, 0xa1, 0x91, 0x37, 0x71, 0x93, 0x2e, 0xf6, + 0x68, 0xac, 0x60, 0xef, 0x0d, 0xee, 0xc4, 0xe5, 0x0e, 0xbf, 0x4a, 0x12, 0x4d, 0x5f, 0x80, 0xbf, + 0xa2, 0x82, 0xa9, 0x1a, 0xf2, 0x56, 0xcd, 0x7d, 0x67, 0xd7, 0x83, 0xa6, 0xec, 0xf6, 0xdc, 0x13, + 0x41, 0xbe, 0x4d, 0x7e, 0x61, 0x17, 0x44, 0x5e, 0xd7, 0x77, 0x7f, 0x8b, 0xf8, 0xfe, 0x50, 0xd2, + 0x06, 0xcb, 0x2f, 0x9e, 0x49, 0x96, 0xd9, 0x1d, 0x0d, 0xb8, 0x1b, 0xc9, 0xd6, 0x4e, 0xa2, 0xbd, + 0xd3, 0xa8, 0xa2, 0xd3, 0x87, 0xe5, 0x59, 0x2a, 0x98, 0xad, 0x21, 0xaf, 0xdc, 0x5d, 0x32, 0xf7, + 0x1c, 0xd7, 0xf2, 0x10, 0x7f, 0x57, 0x51, 0x3c, 0x34, 0x67, 0x01, 0xb0, 0x82, 0xdf, 0x58, 0xa4, + 0x04, 0x2e, 0x05, 0xfe, 0x56, 0x52, 0x47, 0x21, 0x81, 0x8f, 0x91, 0x80, 0x90, 0xc8, 0xc7, 0x22, + 0xae, 0xf8, 0xf4, 0x81, 0xf8, 0xbc, 0xc2, 0x80, 0x28, 0xba, 0xcd, 0x6d, 0x6b, 0x0f, 0xb5, 0x12, + 0x02, 0xe1, 0xff, 0x16, 0x02, 0x11, 0x10, 0x4a, 0xec, 0xbe, 0x22, 0xf0, 0x31, 0x0a, 0xf7, 0x95, + 0x38, 0x82, 0x63, 0x09, 0x76, 0x80, 0xbb, 0x1e, 0xb6, 0x9e, 0x79, 0x8f, 0xac, 0x58, 0x43, 0x93, + 0x4d, 0xe1, 0x4d, 0xb6, 0xa1, 0x3a, 0x16, 0x5a, 0xf6, 0x20, 0x9d, 0xce, 0xa6, 0xd1, 0xb1, 0xf4, + 0x2d, 0x3a, 0x7d, 0xa1, 0xbf, 0x5b, 0x05, 0xa7, 0x82, 0x53, 0xc0, 0x35, 0xe4, 0x2d, 0x9a, 0xdd, + 0xed, 0x8b, 0x8e, 0xe9, 0xb6, 0xf8, 0x8b, 0x43, 0x87, 0x3e, 0xf1, 0x07, 0x3f, 0xc7, 0x83, 0x50, + 0x11, 0x41, 0xe8, 0xeb, 0x2a, 0xda, 0x97, 0x97, 0x51, 0x74, 0x32, 0xb1, 0xde, 0xac, 0xbf, 0x1d, + 0x80, 0xf5, 0x13, 0x02, 0x58, 0x77, 0x0f, 0xcb, 0x62, 0xfa, 0xc0, 0xfd, 0x3a, 0x1d, 0x11, 0x38, + 0xaf, 0xe6, 0xfb, 0x65, 0x01, 0x8b, 0xf0, 0x6a, 0x55, 0x23, 0xbd, 0x5a, 0x87, 0x1a, 0x23, 0x06, + 0x7a, 0x24, 0xa7, 0x3b, 0x46, 0x1c, 0xa1, 0xb7, 0xf1, 0xdb, 0x55, 0x50, 0x20, 0x61, 0x20, 0x38, + 0x8f, 0x6f, 0xf8, 0x80, 0x2c, 0x3a, 0x07, 0xbc, 0xcb, 0x27, 0x92, 0x7a, 0x97, 0xc3, 0xb7, 0x25, + 0xf5, 0x21, 0xef, 0xe5, 0x76, 0x24, 0x88, 0x25, 0x72, 0x11, 0x1f, 0xc0, 0x41, 0xfa, 0xa0, 0xfd, + 0x17, 0x15, 0x00, 0xdc, 0xa0, 0xd9, 0xd9, 0x87, 0xa7, 0xca, 0xc2, 0x75, 0x2b, 0xef, 0x57, 0x8f, + 0x81, 0x3a, 0xd5, 0x03, 0x14, 0xa5, 0x18, 0x9e, 0xaa, 0x78, 0x6d, 0x52, 0xdf, 0xca, 0x90, 0xab, + 0x91, 0xc0, 0x92, 0xc8, 0xdb, 0x32, 0xb2, 0xec, 0xf4, 0x01, 0xf9, 0x6f, 0x0a, 0xc8, 0xd5, 0x9d, + 0x1a, 0xf2, 0x0e, 0x6f, 0x0a, 0x24, 0x3e, 0xb6, 0x4f, 0xca, 0x1d, 0xc5, 0xb1, 0xfd, 0x7e, 0x84, + 0xd2, 0x17, 0xdd, 0xbb, 0x14, 0x30, 0x53, 0x77, 0x4a, 0xc1, 0xe2, 0x94, 0xbc, 0xaf, 0xaa, 0xfc, + 0xbd, 0x80, 0x41, 0x05, 0xc3, 0x62, 0x0e, 0x75, 0x2f, 0xe0, 0x60, 0x7a, 0xe9, 0xcb, 0xed, 0x0e, + 0x70, 0x7c, 0xc3, 0x6e, 0x39, 0x06, 0x6a, 0x39, 0x6c, 0xa5, 0x5b, 0xd3, 0x40, 0x76, 0xd7, 0x6e, + 0x39, 0x84, 0xe5, 0x9c, 0x41, 0x9e, 0x71, 0x9a, 0x8b, 0x5a, 0x0e, 0xf3, 0x0d, 0x20, 0xcf, 0xf0, + 0xab, 0x2a, 0xc8, 0xe2, 0x7f, 0xe5, 0x45, 0xfd, 0x76, 0x35, 0x61, 0x20, 0x02, 0x4c, 0x7e, 0x24, + 0x96, 0xd0, 0x3d, 0xdc, 0xda, 0x3f, 0xf5, 0x60, 0xbd, 0x3e, 0xaa, 0x3c, 0x4e, 0x14, 0xe1, 0x9a, + 0xbf, 0x76, 0x06, 0x4c, 0x5c, 0x6c, 0x3b, 0xcd, 0x4b, 0xe1, 0x79, 0x79, 0xf6, 0xaa, 0xdd, 0x0c, + 0x72, 0xae, 0x69, 0x6f, 0x21, 0xb6, 0xa7, 0x70, 0xb2, 0xa7, 0x2f, 0x24, 0x5e, 0x2f, 0x06, 0xcd, + 0x02, 0xdf, 0x96, 0x24, 0x04, 0x42, 0x9f, 0xca, 0x27, 0xd3, 0x87, 0xc5, 0x21, 0x4e, 0x96, 0x15, + 0xc0, 0x4c, 0xa9, 0x48, 0x6f, 0xe0, 0x5c, 0xab, 0x9e, 0xd7, 0x0b, 0x2a, 0x81, 0x19, 0xcb, 0x24, + 0x45, 0x98, 0x31, 0xf9, 0x1f, 0x5a, 0x98, 0xfb, 0x54, 0xfe, 0x28, 0x60, 0xfe, 0xb8, 0x02, 0x66, + 0x57, 0xad, 0xae, 0x17, 0xe5, 0xed, 0x1f, 0x13, 0x05, 0xee, 0xf9, 0x49, 0x4d, 0x65, 0xa1, 0x1c, + 0xe9, 0xf0, 0x6f, 0x89, 0xcc, 0xe1, 0xb8, 0x22, 0xc6, 0x73, 0x2c, 0x85, 0x70, 0x40, 0x6f, 0xcd, + 0x93, 0x96, 0x64, 0x62, 0x43, 0x29, 0x2c, 0x64, 0xfc, 0x86, 0x52, 0x64, 0xd9, 0xe9, 0xcb, 0xf7, + 0xab, 0x0a, 0x38, 0x81, 0x8b, 0x8f, 0x5b, 0x96, 0x8a, 0x16, 0xf3, 0xc0, 0x65, 0xa9, 0xc4, 0x2b, + 0xe3, 0x07, 0x78, 0x19, 0xc5, 0xca, 0xf8, 0x20, 0xa2, 0x63, 0x16, 0x73, 0xc4, 0x32, 0xec, 0x20, + 0x31, 0xc7, 0x2c, 0xc3, 0x0e, 0x2f, 0xe6, 0xf8, 0xa5, 0xd8, 0x21, 0xc5, 0x7c, 0x64, 0x0b, 0xac, + 0xaf, 0x51, 0x03, 0x31, 0x47, 0xae, 0x6d, 0xc4, 0x88, 0x39, 0xf1, 0x89, 0x5d, 0xf8, 0x8e, 0x21, + 0x05, 0x3f, 0xe2, 0xf5, 0x8d, 0x61, 0x60, 0x3a, 0xc2, 0x35, 0x8e, 0xdf, 0x50, 0xc1, 0x1c, 0xe3, + 0xa2, 0xff, 0x94, 0x39, 0x06, 0xa3, 0xc4, 0x53, 0xe6, 0xc4, 0x67, 0x80, 0x44, 0xce, 0xc6, 0x7f, + 0x06, 0x28, 0xb6, 0xfc, 0xf4, 0xc1, 0xf9, 0x5a, 0x16, 0x9c, 0xc6, 0x2c, 0xac, 0x39, 0x2d, 0x6b, + 0x73, 0x9f, 0x72, 0x71, 0xde, 0x6c, 0xef, 0xa2, 0x2e, 0x7c, 0xaf, 0x22, 0x8b, 0xd2, 0x7f, 0x00, + 0xc0, 0xe9, 0x20, 0x97, 0x06, 0x52, 0x63, 0x40, 0xdd, 0x15, 0x55, 0xd9, 0x83, 0x25, 0x05, 0x41, + 0xd1, 0xab, 0x3e, 0x11, 0x83, 0xa3, 0x87, 0xad, 0xc2, 0xa9, 0xe0, 0x4b, 0xaf, 0x83, 0x47, 0xe6, + 0xa0, 0x83, 0xc7, 0x4d, 0x40, 0x35, 0x5b, 0xad, 0x00, 0xaa, 0xde, 0xcd, 0x6c, 0x52, 0xa6, 0x81, + 0xb3, 0xe0, 0x9c, 0x5d, 0x14, 0x1e, 0xcd, 0x8b, 0xc8, 0xd9, 0x45, 0x9e, 0x36, 0x0f, 0xf2, 0xf4, + 0x06, 0xc1, 0x60, 0x45, 0xbf, 0x7f, 0x66, 0x96, 0x4b, 0x34, 0xed, 0xaa, 0xa2, 0x1a, 0xde, 0x91, + 0x48, 0x32, 0xfd, 0xfa, 0xe9, 0xd0, 0x4e, 0x36, 0x04, 0x05, 0x7b, 0xf2, 0xd0, 0x94, 0xc7, 0xb3, + 0x1b, 0x56, 0xec, 0x74, 0xda, 0xfb, 0x75, 0x16, 0x7c, 0x25, 0xd1, 0x6e, 0x18, 0x17, 0xc3, 0x45, + 0xe9, 0x8d, 0xe1, 0x92, 0x7c, 0x37, 0x4c, 0xe0, 0x63, 0x14, 0xbb, 0x61, 0x71, 0x04, 0xc7, 0xb0, + 0x1e, 0x99, 0xa3, 0x56, 0x33, 0x8b, 0x51, 0xfb, 0x86, 0xfe, 0x87, 0xd0, 0x80, 0xe8, 0xec, 0xd2, + 0x2f, 0x7c, 0x6d, 0x6c, 0x6c, 0x6e, 0xed, 0x09, 0x20, 0xbf, 0xe9, 0xb8, 0x3b, 0xa6, 0xbf, 0x71, + 0xdf, 0x7b, 0x52, 0x84, 0xc5, 0x85, 0x5d, 0x22, 0x79, 0x0c, 0x96, 0x17, 0xcf, 0x47, 0x9e, 0x66, + 0x75, 0x58, 0xd4, 0x45, 0xfc, 0xa8, 0xdd, 0x00, 0x66, 0x59, 0xf0, 0xc5, 0x0a, 0xea, 0x7a, 0xa8, + 0xc5, 0x22, 0x56, 0x88, 0x89, 0xda, 0x39, 0x30, 0xc3, 0x12, 0x96, 0xac, 0x36, 0xea, 0xb2, 0xa0, + 0x15, 0x42, 0x9a, 0x76, 0x1a, 0xe4, 0xad, 0xee, 0x53, 0xba, 0x8e, 0x4d, 0xfc, 0xff, 0x27, 0x0d, + 0xf6, 0xa6, 0xdd, 0x04, 0x8e, 0xb3, 0x7c, 0x81, 0xb1, 0x4a, 0x0f, 0xec, 0xf4, 0x26, 0xc3, 0x4f, + 0x0f, 0x33, 0x71, 0x48, 0x1c, 0x8f, 0x17, 0xa3, 0xb0, 0xdb, 0x6c, 0x22, 0xd4, 0x62, 0x27, 0x9b, + 0xfc, 0xd7, 0x84, 0x91, 0x7a, 0x13, 0x4f, 0x33, 0x8e, 0x28, 0x54, 0xef, 0x07, 0x4f, 0x81, 0x3c, + 0xbd, 0xf6, 0x02, 0xbe, 0x68, 0xae, 0xaf, 0x32, 0xce, 0x89, 0xca, 0xb8, 0x01, 0x66, 0x6c, 0x07, + 0x17, 0xb7, 0x6e, 0xba, 0xe6, 0x4e, 0x37, 0x6e, 0x15, 0x91, 0xd2, 0x0d, 0x86, 0x8c, 0x0a, 0xf7, + 0xdb, 0xca, 0x31, 0x43, 0x20, 0xa3, 0xfd, 0x1f, 0xe0, 0xf8, 0x45, 0x16, 0x01, 0xa0, 0xcb, 0x28, + 0x2b, 0xd1, 0x3e, 0x76, 0x3d, 0x94, 0x17, 0xc4, 0x3f, 0x57, 0x8e, 0x19, 0xbd, 0xc4, 0xb4, 0x9f, + 0x02, 0x73, 0xf8, 0xb5, 0xe5, 0x5c, 0xf6, 0x19, 0x57, 0xa3, 0x0d, 0x8d, 0x1e, 0xf2, 0x6b, 0xc2, + 0x8f, 0x2b, 0xc7, 0x8c, 0x1e, 0x52, 0x5a, 0x15, 0x80, 0x6d, 0x6f, 0xa7, 0xcd, 0x08, 0x67, 0xa3, + 0x55, 0xb2, 0x87, 0xf0, 0x4a, 0xf0, 0xd3, 0xca, 0x31, 0x83, 0x23, 0xa1, 0xad, 0x82, 0x29, 0xef, + 0x41, 0x8f, 0xd1, 0xcb, 0x45, 0x6f, 0x6e, 0xf7, 0xd0, 0xab, 0xfb, 0xff, 0xac, 0x1c, 0x33, 0x42, + 0x02, 0x5a, 0x19, 0x4c, 0x76, 0x2e, 0x32, 0x62, 0xf9, 0x3e, 0x57, 0xfd, 0xf7, 0x27, 0xb6, 0x7e, + 0x31, 0xa0, 0x15, 0xfc, 0x8e, 0x19, 0x6b, 0x76, 0xf7, 0x18, 0xad, 0x09, 0x69, 0xc6, 0x4a, 0xfe, + 0x3f, 0x98, 0xb1, 0x80, 0x80, 0x56, 0x06, 0x53, 0x5d, 0xdb, 0xec, 0x74, 0xb7, 0x1d, 0xaf, 0x7b, + 0x66, 0xb2, 0xc7, 0x0f, 0x32, 0x9a, 0x5a, 0x8d, 0xfd, 0x63, 0x84, 0x7f, 0x6b, 0x4f, 0x00, 0xa7, + 0x76, 0xc9, 0xf5, 0xa1, 0xfa, 0x83, 0x56, 0xd7, 0xb3, 0xec, 0x2d, 0x3f, 0x86, 0x2c, 0xed, 0x4d, + 0xfa, 0x7f, 0xd4, 0xe6, 0xd9, 0x89, 0x28, 0x40, 0xda, 0x26, 0xec, 0xdd, 0x8c, 0xa3, 0xc5, 0x72, + 0x07, 0xa1, 0x9e, 0x04, 0xb2, 0xf8, 0x13, 0x39, 0xb3, 0x39, 0xd7, 0x7f, 0xa1, 0xaf, 0x57, 0x77, + 0x48, 0x03, 0xc6, 0x3f, 0xe1, 0xb1, 0xd1, 0x76, 0xd6, 0x5d, 0x67, 0xcb, 0x45, 0xdd, 0x2e, 0x73, + 0x38, 0xe4, 0x52, 0x70, 0x03, 0xb7, 0xba, 0x6b, 0xd6, 0x16, 0xb5, 0x9e, 0x98, 0xbf, 0x3b, 0x9f, + 0x44, 0x67, 0x9b, 0x15, 0x74, 0x99, 0x38, 0x04, 0x93, 0xf3, 0x37, 0x64, 0xb6, 0xe9, 0xa7, 0xc0, + 0x1b, 0xc1, 0x0c, 0xdf, 0xc8, 0xe8, 0xdd, 0x59, 0x56, 0x68, 0x7b, 0xb1, 0x37, 0x78, 0x03, 0x98, + 0x13, 0x75, 0x9a, 0x1b, 0x62, 0x54, 0xbf, 0x2b, 0x84, 0xd7, 0x83, 0xe3, 0x3d, 0x0d, 0xcb, 0x8f, + 0x29, 0x92, 0x09, 0x63, 0x8a, 0x5c, 0x07, 0x40, 0xa8, 0xc5, 0x7d, 0xc9, 0x5c, 0x0b, 0xa6, 0x02, + 0xbd, 0xec, 0x9b, 0xe1, 0xcb, 0x19, 0x30, 0xe9, 0x2b, 0x5b, 0xbf, 0x0c, 0x78, 0x7c, 0xb1, 0xb9, + 0x0d, 0x04, 0x36, 0xcd, 0x16, 0xd2, 0xf0, 0x38, 0x12, 0xba, 0xed, 0xd6, 0x2d, 0xaf, 0xed, 0x1f, + 0x7d, 0xeb, 0x4d, 0xd6, 0xd6, 0x01, 0xb0, 0x08, 0x46, 0xf5, 0xf0, 0x2c, 0xdc, 0xe3, 0x12, 0xb4, + 0x07, 0xaa, 0x0f, 0x1c, 0x8d, 0x73, 0x8f, 0x64, 0x07, 0xd5, 0xa6, 0x40, 0xae, 0xb6, 0x5e, 0x2c, + 0xe9, 0x85, 0x63, 0xda, 0x1c, 0x00, 0xfa, 0x53, 0xd7, 0x75, 0xa3, 0xac, 0x57, 0x4a, 0x7a, 0x21, + 0x03, 0x5f, 0xa2, 0x80, 0xa9, 0xa0, 0x11, 0xf4, 0xad, 0xa4, 0xce, 0x54, 0x6b, 0xe0, 0xf5, 0x44, + 0x07, 0x1b, 0x15, 0xaf, 0x64, 0x4f, 0x04, 0x57, 0xee, 0x76, 0xd1, 0x92, 0xe5, 0x76, 0x3d, 0xc3, + 0xb9, 0xbc, 0xe4, 0xb8, 0x41, 0xd4, 0x64, 0xff, 0x1a, 0xfe, 0x88, 0xcf, 0xd8, 0xa2, 0x68, 0x21, + 0x72, 0x28, 0x0a, 0xb9, 0x6c, 0x65, 0x38, 0x4c, 0xc0, 0x74, 0x3d, 0x7a, 0xef, 0x7d, 0x17, 0x19, + 0xce, 0xe5, 0x6e, 0xd1, 0x6e, 0x95, 0x9c, 0xf6, 0xee, 0x8e, 0xdd, 0x65, 0x36, 0x41, 0xd4, 0x67, + 0x2c, 0x1d, 0x72, 0xf9, 0xd8, 0x1c, 0x00, 0xa5, 0xea, 0xea, 0xaa, 0x5e, 0xaa, 0x97, 0xab, 0x95, + 0xc2, 0x31, 0x2c, 0xad, 0x7a, 0x71, 0x61, 0x15, 0x4b, 0xe7, 0xa7, 0xc1, 0xa4, 0xdf, 0xa6, 0x59, + 0x18, 0x94, 0x8c, 0x1f, 0x06, 0x45, 0x2b, 0x82, 0x49, 0xbf, 0x95, 0xb3, 0x11, 0xe1, 0x51, 0xbd, + 0xc7, 0x5e, 0x77, 0x4c, 0xd7, 0x23, 0xfe, 0xd2, 0x3e, 0x91, 0x05, 0xb3, 0x8b, 0x8c, 0xe0, 0xb7, + 0x73, 0x8f, 0x65, 0x1c, 0x68, 0x60, 0xae, 0xb8, 0xba, 0xda, 0xa8, 0x1a, 0x8d, 0x4a, 0xb5, 0xbe, + 0x52, 0xae, 0x2c, 0xd3, 0x11, 0xb2, 0xbc, 0x5c, 0xa9, 0x1a, 0x3a, 0x1d, 0x20, 0x6b, 0x85, 0x0c, + 0xbd, 0xfc, 0x6e, 0x61, 0x12, 0xe4, 0x3b, 0x44, 0xba, 0xf0, 0x0b, 0x6a, 0xc2, 0xf3, 0xee, 0x01, + 0x4e, 0x11, 0xd7, 0x73, 0x09, 0x3e, 0xe7, 0x4a, 0x9f, 0x33, 0xa1, 0xe7, 0xc0, 0x0c, 0xb5, 0xe5, + 0xba, 0x64, 0xf9, 0x9e, 0xdd, 0x70, 0x2b, 0xa4, 0xc1, 0x0f, 0x2b, 0x09, 0x0e, 0xc1, 0xf7, 0xe5, + 0x28, 0x99, 0x71, 0xf1, 0x17, 0xc3, 0x5c, 0x76, 0xa7, 0x81, 0xb9, 0x72, 0xa5, 0xae, 0x1b, 0x95, + 0xe2, 0x2a, 0xcb, 0xa2, 0x6a, 0x67, 0xc0, 0xc9, 0x4a, 0x95, 0xc5, 0xf4, 0xab, 0x91, 0x6b, 0xb5, + 0xd7, 0xd6, 0xab, 0x46, 0xbd, 0x90, 0xd3, 0x4e, 0x03, 0x8d, 0x3e, 0x0b, 0xb7, 0xd2, 0xe7, 0xb5, + 0x47, 0x83, 0xeb, 0x57, 0xcb, 0x6b, 0xe5, 0x7a, 0xa3, 0xba, 0xd4, 0x30, 0xaa, 0x17, 0x6a, 0x18, + 0x41, 0x43, 0x5f, 0x2d, 0x62, 0x45, 0xe2, 0x2e, 0xc1, 0x9b, 0xd0, 0xae, 0x00, 0xc7, 0xc9, 0x05, + 0x97, 0xe4, 0x66, 0x7b, 0x5a, 0xde, 0xa4, 0x76, 0x0d, 0x38, 0x53, 0xae, 0xd4, 0x36, 0x96, 0x96, + 0xca, 0xa5, 0xb2, 0x5e, 0xa9, 0x37, 0xd6, 0x75, 0x63, 0xad, 0x5c, 0xab, 0xe1, 0x7f, 0x0b, 0x53, + 0xe4, 0x8a, 0x31, 0xda, 0x67, 0xc2, 0xf7, 0xa8, 0x60, 0xf6, 0xbc, 0xd9, 0xb6, 0xf0, 0x40, 0x41, + 0xee, 0x1e, 0xec, 0x39, 0x2e, 0xe2, 0x91, 0x3b, 0x0a, 0x99, 0xc3, 0x39, 0x79, 0x81, 0x3f, 0xaf, + 0x26, 0x3c, 0x2e, 0xc2, 0x80, 0xa0, 0x25, 0xce, 0x0b, 0xa5, 0x45, 0x4c, 0x6e, 0x5e, 0xa9, 0x24, + 0x38, 0x2e, 0x22, 0x4f, 0x3e, 0x19, 0xf8, 0xbf, 0x39, 0x2a, 0xf0, 0x0b, 0x60, 0x66, 0xa3, 0x52, + 0xdc, 0xa8, 0xaf, 0x54, 0x8d, 0xf2, 0x4f, 0x92, 0x68, 0xe3, 0xb3, 0x60, 0x6a, 0xa9, 0x6a, 0x2c, + 0x94, 0x17, 0x17, 0xf5, 0x4a, 0x21, 0xa7, 0x5d, 0x09, 0xae, 0xa8, 0xe9, 0xc6, 0xf9, 0x72, 0x49, + 0x6f, 0x6c, 0x54, 0x8a, 0xe7, 0x8b, 0xe5, 0x55, 0xd2, 0x47, 0xe4, 0x63, 0xee, 0x4d, 0x9c, 0x80, + 0x3f, 0x9b, 0x05, 0x80, 0x56, 0x1d, 0x5b, 0xd2, 0xfc, 0xed, 0x7a, 0x9f, 0x4d, 0x3a, 0x69, 0x08, + 0xc9, 0x44, 0xb4, 0xdf, 0x32, 0x98, 0x74, 0xd9, 0x07, 0xb6, 0x7c, 0x32, 0x88, 0x0e, 0x7d, 0xf4, + 0xa9, 0x19, 0xc1, 0xef, 0xf0, 0xbd, 0x49, 0xe6, 0x08, 0x91, 0x8c, 0x25, 0x43, 0x72, 0x69, 0x34, + 0x40, 0xc2, 0xe7, 0x65, 0xc0, 0x9c, 0x58, 0x31, 0x5c, 0x09, 0x62, 0x4c, 0xc9, 0x55, 0x42, 0xfc, + 0x99, 0x33, 0xb2, 0xce, 0xdd, 0xce, 0x86, 0x53, 0xe0, 0xb7, 0x4c, 0x7a, 0xf2, 0xdb, 0xb7, 0x58, + 0x0a, 0x19, 0xcc, 0x3c, 0x36, 0x3a, 0xe8, 0xd5, 0xea, 0xf5, 0x07, 0xbd, 0x82, 0x0a, 0xdf, 0x95, + 0x05, 0xb3, 0xc2, 0xf5, 0x7d, 0xf0, 0x5b, 0x19, 0x99, 0xab, 0xb5, 0xb8, 0x8b, 0x01, 0x33, 0x87, + 0xbd, 0x18, 0xf0, 0xdc, 0xcf, 0x65, 0xc0, 0x04, 0x4b, 0x24, 0x02, 0xae, 0x56, 0xb0, 0x2d, 0x70, + 0x1c, 0x4c, 0x2f, 0xeb, 0xf5, 0x46, 0xad, 0x5e, 0x34, 0xea, 0xfa, 0x62, 0x21, 0xa3, 0x9d, 0x02, + 0x27, 0xd6, 0x75, 0xa3, 0x56, 0xc5, 0xf2, 0x5c, 0x37, 0xaa, 0xa4, 0x23, 0xa4, 0x62, 0xc6, 0x30, + 0xac, 0xea, 0x8b, 0xcb, 0x7a, 0x63, 0xa1, 0x58, 0xd3, 0x0b, 0x2a, 0xfe, 0xb7, 0x52, 0xad, 0xeb, + 0xb5, 0xc6, 0x62, 0xb9, 0x68, 0xdc, 0x5f, 0xc8, 0xe2, 0x7f, 0x6b, 0x75, 0xa3, 0x58, 0xd7, 0x97, + 0xcb, 0x25, 0x72, 0x21, 0x3d, 0x6e, 0x01, 0x39, 0x3c, 0x98, 0xea, 0x6b, 0xeb, 0xf5, 0xfb, 0x0b, + 0xf9, 0xe4, 0x5e, 0x7d, 0xbd, 0x95, 0x1b, 0xb3, 0x57, 0x5f, 0x5c, 0xf1, 0xe9, 0xcf, 0x7f, 0x3f, + 0xa9, 0x82, 0x02, 0xe5, 0x40, 0x7f, 0xb0, 0x83, 0x5c, 0x0b, 0xd9, 0x4d, 0x04, 0x2f, 0xc9, 0x44, + 0x11, 0x3d, 0x10, 0x5f, 0x8f, 0x8c, 0x11, 0x9c, 0xe5, 0x49, 0x5f, 0x7a, 0x8c, 0xf6, 0xec, 0x01, + 0xa3, 0xfd, 0x13, 0x49, 0xdd, 0xfa, 0x7a, 0xd9, 0x1d, 0x09, 0x64, 0x1f, 0x4b, 0xe2, 0xd6, 0x37, + 0x80, 0x83, 0xb1, 0x04, 0x07, 0x8e, 0x18, 0xd3, 0x0b, 0x2a, 0x7c, 0xeb, 0x14, 0x28, 0x50, 0x46, + 0x39, 0x5f, 0xa9, 0x5f, 0x61, 0x77, 0x21, 0x36, 0x12, 0x84, 0xa6, 0xf3, 0x0f, 0xfb, 0x2b, 0xe2, + 0x61, 0x7f, 0x61, 0xe9, 0x4d, 0xed, 0xdd, 0xdf, 0x4e, 0xda, 0xfc, 0x38, 0xc7, 0xa8, 0xe8, 0x68, + 0xa0, 0xe9, 0x35, 0xbf, 0xd8, 0xe2, 0xc7, 0x73, 0x5f, 0x17, 0xbb, 0x91, 0x4f, 0x97, 0x45, 0x26, + 0xfe, 0x5a, 0xc2, 0xa4, 0x5e, 0xb2, 0x82, 0x63, 0x5a, 0xcc, 0x5d, 0x7d, 0xe9, 0x79, 0xc9, 0x0e, + 0xe2, 0x20, 0x7d, 0x14, 0xbe, 0xaf, 0x80, 0x6c, 0xcd, 0x71, 0xbd, 0x51, 0x61, 0x90, 0x74, 0x67, + 0x8f, 0x93, 0x40, 0x2d, 0x7a, 0xe6, 0x94, 0xde, 0xce, 0x5e, 0x7c, 0xf9, 0x63, 0x88, 0xee, 0x77, + 0x1c, 0xcc, 0x51, 0x4e, 0x82, 0xab, 0x2f, 0xbe, 0xa7, 0xd0, 0xfe, 0xea, 0x3e, 0x59, 0x44, 0xce, + 0x81, 0x19, 0x6e, 0x67, 0x2d, 0xb8, 0xf6, 0x99, 0x4f, 0x83, 0xaf, 0xe7, 0x71, 0x59, 0x14, 0x71, + 0xe9, 0x37, 0x6f, 0x0c, 0x6e, 0x8f, 0x18, 0x55, 0xcf, 0x94, 0x24, 0x50, 0x60, 0x4c, 0xe1, 0xe9, + 0x23, 0xf2, 0x4c, 0x15, 0xe4, 0x99, 0x67, 0xd3, 0x48, 0x11, 0x48, 0xda, 0x32, 0x02, 0x21, 0xc8, + 0x79, 0x40, 0xa9, 0xa3, 0x6e, 0x19, 0xf1, 0xe5, 0xa7, 0x8f, 0xc3, 0xbf, 0x31, 0x97, 0xbd, 0xe2, + 0x9e, 0x69, 0xb5, 0xcd, 0x8b, 0xed, 0x04, 0x01, 0x7a, 0x3f, 0x9c, 0xf0, 0x90, 0x52, 0x50, 0x55, + 0xa1, 0xbc, 0x08, 0x89, 0xff, 0x28, 0x98, 0x72, 0x83, 0x85, 0x35, 0xff, 0x0c, 0x77, 0x8f, 0xbb, + 0x24, 0xfb, 0x6e, 0x84, 0x39, 0x13, 0x9d, 0x48, 0x92, 0xe2, 0x67, 0x2c, 0x27, 0x28, 0xa6, 0x8b, + 0xad, 0xd6, 0x12, 0x32, 0xbd, 0x5d, 0x17, 0xb5, 0x12, 0x0d, 0x11, 0xa2, 0x88, 0xa6, 0x78, 0x49, + 0x08, 0x21, 0xf2, 0x56, 0x45, 0x74, 0x7e, 0x6c, 0x40, 0x6f, 0xe0, 0xf3, 0x32, 0x92, 0x2e, 0xe9, + 0x2d, 0x01, 0x24, 0x55, 0x01, 0x92, 0x27, 0x0d, 0xc7, 0x44, 0xfa, 0x80, 0xfc, 0x9a, 0x0a, 0xe6, + 0xa8, 0x9d, 0x30, 0x6a, 0x4c, 0x7e, 0x2f, 0xa1, 0x27, 0x04, 0x77, 0xb9, 0x10, 0xcf, 0xce, 0x48, + 0x60, 0x49, 0xe2, 0x37, 0x21, 0xc7, 0x47, 0xfa, 0xc8, 0x7c, 0x3a, 0x0f, 0x00, 0xe7, 0xdd, 0xf6, + 0xe1, 0x7c, 0x18, 0xae, 0x0e, 0xbe, 0x8d, 0xcd, 0x3f, 0x6a, 0x42, 0xec, 0x64, 0xce, 0x73, 0x2d, + 0xd8, 0x56, 0x11, 0x13, 0xa5, 0x46, 0x95, 0xbf, 0x48, 0x68, 0xf3, 0x32, 0xdf, 0xb2, 0x81, 0x83, + 0xfb, 0x90, 0xbd, 0xdc, 0x47, 0x12, 0x18, 0xbf, 0x83, 0x58, 0x49, 0x86, 0xda, 0xea, 0x10, 0x73, + 0xc9, 0x33, 0xe0, 0xa4, 0xa1, 0x17, 0x17, 0xab, 0x95, 0xd5, 0xfb, 0xf9, 0x9b, 0x66, 0x0a, 0x2a, + 0x3f, 0x39, 0x49, 0x05, 0xb6, 0x57, 0x27, 0xec, 0x03, 0x45, 0x59, 0xc5, 0xcd, 0x56, 0xb8, 0xe9, + 0xfc, 0xe0, 0x5e, 0x4d, 0x82, 0xec, 0x51, 0xa2, 0xf0, 0xc6, 0x29, 0xae, 0x19, 0x3d, 0x47, 0x05, + 0x85, 0xf0, 0xb2, 0x73, 0x76, 0xa5, 0x58, 0x55, 0x74, 0x7e, 0xeb, 0xd0, 0x5d, 0x94, 0xd0, 0xf9, + 0xcd, 0x4f, 0xd0, 0x6e, 0x04, 0x73, 0xcd, 0x6d, 0xd4, 0xbc, 0x54, 0xb6, 0xfd, 0xdd, 0x61, 0xba, + 0x95, 0xd8, 0x93, 0x2a, 0x02, 0x73, 0x9f, 0x08, 0x8c, 0x38, 0x89, 0x16, 0x06, 0x69, 0x9e, 0xa9, + 0x08, 0x5c, 0xfe, 0x28, 0xc0, 0xa5, 0x22, 0xe0, 0x72, 0xe7, 0x50, 0x54, 0x93, 0xc1, 0x52, 0x19, + 0x02, 0x16, 0x08, 0x4e, 0x57, 0xd7, 0xeb, 0xe5, 0x6a, 0xa5, 0xb1, 0x51, 0xd3, 0x17, 0x1b, 0x0b, + 0x3e, 0x38, 0xb5, 0x82, 0x0a, 0xbf, 0xae, 0x80, 0x09, 0xca, 0x56, 0xb7, 0xe7, 0x72, 0xf2, 0x78, + 0xaf, 0x3f, 0xf8, 0x56, 0xe9, 0x33, 0xfc, 0x81, 0x20, 0x58, 0x39, 0x11, 0xfd, 0xd4, 0x13, 0xc1, + 0x04, 0x05, 0xd9, 0x77, 0x1a, 0x39, 0x1b, 0xd1, 0x4b, 0x31, 0x32, 0x86, 0x9f, 0x5d, 0xf2, 0x3c, + 0xff, 0x00, 0x36, 0xd2, 0x1f, 0x59, 0x5e, 0xa7, 0x52, 0x33, 0xf8, 0x82, 0xe5, 0x6d, 0x13, 0xa7, + 0x40, 0xf8, 0x13, 0x32, 0x4b, 0x94, 0xb7, 0x80, 0xdc, 0x1e, 0xce, 0x3d, 0xc0, 0xc1, 0x92, 0x66, + 0x82, 0x7f, 0x20, 0x1d, 0xe9, 0x4a, 0xd0, 0xcf, 0x80, 0xa7, 0xe8, 0x0d, 0xcf, 0x41, 0x3d, 0xa1, + 0x06, 0x85, 0x43, 0x4d, 0xea, 0x4d, 0x6a, 0xe2, 0x78, 0x8d, 0x52, 0x2c, 0xa5, 0x0f, 0xd4, 0xff, + 0x7b, 0x1c, 0x4c, 0xac, 0x58, 0x5d, 0xcf, 0x71, 0xf7, 0xe1, 0x6b, 0x33, 0x60, 0xe2, 0x3c, 0x72, + 0xbb, 0x96, 0x63, 0x1f, 0xd8, 0xd5, 0xbe, 0x0e, 0x4c, 0x77, 0x5c, 0xb4, 0x67, 0x39, 0xbb, 0xdd, + 0x70, 0x05, 0x85, 0x4f, 0xc2, 0x22, 0x31, 0x77, 0xbd, 0x6d, 0xc7, 0x0d, 0x03, 0x1b, 0xf8, 0xef, + 0xda, 0x59, 0x00, 0xe8, 0x73, 0xc5, 0xdc, 0x41, 0x6c, 0xaf, 0x9e, 0x4b, 0xd1, 0x34, 0x90, 0xf5, + 0xac, 0x1d, 0xc4, 0x22, 0x9d, 0x92, 0x67, 0xac, 0x25, 0x24, 0x6a, 0x18, 0x8b, 0xce, 0xa6, 0x1a, + 0xfe, 0x2b, 0xfc, 0x9c, 0x0a, 0xa6, 0x97, 0x91, 0xc7, 0x58, 0xed, 0xc2, 0xe7, 0x67, 0xa4, 0x2e, + 0x17, 0xc0, 0x03, 0x61, 0xdb, 0xec, 0xfa, 0xff, 0x05, 0xeb, 0xa4, 0x62, 0x62, 0x18, 0x76, 0x55, + 0xe5, 0x63, 0x2e, 0x93, 0x18, 0x5c, 0x5e, 0x99, 0xba, 0xf8, 0xb1, 0xcc, 0x6c, 0x6d, 0xfc, 0xe0, + 0x07, 0xf8, 0x2e, 0x45, 0xf6, 0xfc, 0x2a, 0x93, 0xfd, 0x3c, 0x57, 0x9f, 0xc8, 0x3e, 0x63, 0x72, + 0x8f, 0xe5, 0x38, 0x10, 0x4e, 0x9b, 0xa7, 0xc4, 0xc8, 0x18, 0x41, 0x6e, 0xc9, 0x93, 0xaf, 0x83, + 0x39, 0x49, 0x5f, 0x1b, 0xbf, 0xa3, 0x82, 0xe9, 0xda, 0xb6, 0x73, 0xd9, 0x97, 0xe3, 0x4f, 0xcb, + 0x01, 0x7b, 0x0d, 0x98, 0xda, 0xeb, 0x01, 0x35, 0x4c, 0x88, 0xbe, 0xee, 0x1b, 0x3e, 0xa4, 0x26, + 0x85, 0x89, 0x63, 0x6e, 0xe4, 0x97, 0x71, 0x6b, 0x3f, 0x06, 0x26, 0x18, 0xd7, 0x6c, 0x5d, 0x24, + 0x1e, 0x60, 0x3f, 0x33, 0x5f, 0xc1, 0xac, 0x58, 0xc1, 0x64, 0xc8, 0x47, 0x57, 0x2e, 0x7d, 0xe4, + 0xff, 0x54, 0x21, 0x71, 0x0f, 0x7c, 0xe0, 0x4b, 0x23, 0x00, 0x1e, 0x7e, 0x37, 0x23, 0xbb, 0x7a, + 0x18, 0x48, 0x20, 0xe0, 0xe0, 0x50, 0x17, 0x87, 0x0c, 0x24, 0x97, 0xbe, 0x3c, 0x5f, 0x92, 0x05, + 0x33, 0x8b, 0xd6, 0xe6, 0x66, 0xd0, 0x49, 0xbe, 0x40, 0xb2, 0x93, 0x8c, 0xde, 0x79, 0xc6, 0xc6, + 0xe8, 0xae, 0xeb, 0x22, 0xdb, 0xaf, 0x14, 0x6b, 0x4e, 0x3d, 0xa9, 0xda, 0x4d, 0xe0, 0xb8, 0x3f, + 0x2e, 0xf0, 0x1d, 0xe5, 0x94, 0xd1, 0x9b, 0x0c, 0xbf, 0x2d, 0xbd, 0xf5, 0xe4, 0x4b, 0x94, 0xaf, + 0x52, 0x44, 0x03, 0xbc, 0x0b, 0xcc, 0x6e, 0xd3, 0xdc, 0x64, 0x7e, 0xee, 0x77, 0x96, 0xa7, 0x7b, + 0xe2, 0xca, 0xae, 0xa1, 0x6e, 0xd7, 0xdc, 0x42, 0x86, 0x98, 0xb9, 0xa7, 0xf9, 0xaa, 0x49, 0x6e, + 0x49, 0x92, 0xdb, 0xc5, 0x92, 0xa8, 0x49, 0xfa, 0xda, 0xf1, 0x95, 0x47, 0x82, 0xec, 0x92, 0xd5, + 0x46, 0xf0, 0x17, 0x14, 0x30, 0x65, 0xa0, 0xa6, 0x63, 0x37, 0xf1, 0x1b, 0xe7, 0x87, 0xf2, 0x4f, + 0x19, 0xd9, 0xdb, 0x01, 0x31, 0x9d, 0xf9, 0x80, 0x46, 0x44, 0xbb, 0x91, 0xbb, 0x05, 0x30, 0x96, + 0xd4, 0x18, 0xee, 0x72, 0xc0, 0xf3, 0x83, 0xcd, 0xcd, 0xb6, 0x63, 0x0a, 0x2b, 0x54, 0xbd, 0xa6, + 0xd0, 0xcd, 0xa0, 0xe0, 0x1f, 0x27, 0x70, 0xbc, 0x75, 0xcb, 0xb6, 0x83, 0xf3, 0xaa, 0x07, 0xd2, + 0xc5, 0xcd, 0xd5, 0xd8, 0x90, 0x1f, 0xa4, 0xee, 0xac, 0xf4, 0x08, 0xcd, 0xbe, 0x11, 0xcc, 0x5d, + 0xdc, 0xf7, 0x50, 0x97, 0xe5, 0x62, 0xc5, 0x66, 0x8d, 0x9e, 0x54, 0x2e, 0x60, 0x6f, 0x5c, 0x68, + 0x90, 0x98, 0x02, 0x93, 0x89, 0x7a, 0x65, 0x88, 0x69, 0xda, 0x49, 0x50, 0xa8, 0x54, 0x17, 0x75, + 0xe2, 0x16, 0xe5, 0xfb, 0x99, 0x6c, 0xc1, 0x17, 0xaa, 0x60, 0x86, 0xf8, 0x18, 0xf8, 0x28, 0x5c, + 0x2f, 0x31, 0x69, 0x80, 0x5f, 0x94, 0x76, 0x99, 0x22, 0x55, 0xe6, 0x0b, 0x88, 0x16, 0xf4, 0xa6, + 0xd5, 0xee, 0x15, 0x74, 0xce, 0xe8, 0x49, 0xed, 0x03, 0x88, 0xda, 0x17, 0x90, 0xdf, 0x91, 0xf2, + 0x9b, 0x1a, 0xc4, 0xdd, 0x51, 0xa1, 0xf2, 0xbb, 0x2a, 0x98, 0xc6, 0x93, 0x14, 0x1f, 0x94, 0xaa, + 0x00, 0x8a, 0x63, 0xb7, 0xf7, 0xc3, 0xb5, 0x0b, 0xff, 0x35, 0x51, 0x23, 0xf9, 0x2b, 0xe9, 0xe9, + 0x35, 0x11, 0x11, 0xc7, 0xcb, 0x98, 0xf0, 0x7b, 0x9f, 0xd4, 0xa4, 0x7b, 0x00, 0x73, 0x47, 0x05, + 0xdf, 0x9b, 0x72, 0x20, 0xbf, 0xd1, 0x21, 0xc8, 0x7d, 0x55, 0x91, 0x09, 0x7e, 0x7d, 0xc0, 0x67, + 0x1e, 0x9b, 0x59, 0x6d, 0xa7, 0x69, 0xb6, 0xd7, 0xc3, 0xc3, 0x47, 0x61, 0x82, 0x76, 0x27, 0x73, + 0xa3, 0xa3, 0x27, 0xb7, 0x6e, 0x8c, 0x8d, 0x0b, 0x4d, 0x64, 0xc4, 0x9d, 0x4f, 0xb8, 0x05, 0x9c, + 0x68, 0x59, 0x5d, 0xf3, 0x62, 0x1b, 0xe9, 0x76, 0xd3, 0xdd, 0xa7, 0xe2, 0x60, 0xd3, 0xaa, 0x03, + 0x1f, 0xb4, 0xbb, 0x41, 0xae, 0xeb, 0xed, 0xb7, 0xe9, 0x3c, 0x91, 0x3f, 0xce, 0x10, 0x59, 0x54, + 0x0d, 0x67, 0x37, 0xe8, 0x5f, 0xfc, 0xd5, 0xc0, 0x13, 0x92, 0x57, 0x03, 0xdf, 0x0e, 0xf2, 0x8e, + 0x6b, 0x6d, 0x59, 0xf4, 0xaa, 0x97, 0xb9, 0x03, 0xe1, 0xcf, 0xa8, 0x29, 0x50, 0x25, 0x59, 0x0c, + 0x96, 0x15, 0xbe, 0x4f, 0x91, 0x8d, 0xb5, 0x42, 0x78, 0xa4, 0xe0, 0x8c, 0xe7, 0x26, 0xff, 0x97, + 0x4b, 0x45, 0x41, 0x89, 0x66, 0x2b, 0xfd, 0x41, 0xf8, 0x33, 0x0a, 0x98, 0x5c, 0x74, 0x2e, 0xdb, + 0x44, 0x61, 0xef, 0x90, 0xb3, 0x59, 0xfb, 0x9c, 0x8b, 0x13, 0x6f, 0x12, 0x8c, 0x75, 0x82, 0x27, + 0xb5, 0xf5, 0x8b, 0x8c, 0x80, 0x21, 0xb6, 0x05, 0x48, 0xde, 0xef, 0x16, 0x57, 0x4e, 0xfa, 0x72, + 0xfd, 0x33, 0x15, 0x64, 0x17, 0x5d, 0xa7, 0x03, 0xdf, 0x92, 0x49, 0xe0, 0x1f, 0xd0, 0x72, 0x9d, + 0x4e, 0x9d, 0x5c, 0xd0, 0x14, 0x7a, 0xfe, 0xf3, 0x69, 0xda, 0x1d, 0x60, 0xb2, 0xe3, 0x74, 0x2d, + 0xcf, 0x9f, 0x0e, 0xcc, 0xdd, 0xf6, 0x88, 0xbe, 0xad, 0x72, 0x9d, 0x65, 0x32, 0x82, 0xec, 0xb8, + 0xf7, 0x25, 0x22, 0xc4, 0x72, 0xc1, 0x62, 0xf4, 0x2f, 0xa9, 0xea, 0x49, 0x85, 0x2f, 0xe2, 0x91, + 0x7c, 0x92, 0x88, 0xe4, 0xa3, 0xfa, 0x48, 0xd8, 0x75, 0x3a, 0x23, 0xd9, 0xd1, 0x7b, 0x69, 0x80, + 0xea, 0x93, 0x05, 0x54, 0x6f, 0x96, 0x2a, 0x33, 0x7d, 0x44, 0xdf, 0x97, 0x05, 0x80, 0x98, 0x0b, + 0x1b, 0x78, 0x22, 0x23, 0x67, 0x2b, 0x3d, 0x2b, 0xcb, 0xc9, 0xb2, 0x28, 0xca, 0xf2, 0x31, 0x11, + 0xd6, 0x08, 0x21, 0x1f, 0x21, 0xd1, 0x22, 0xc8, 0xed, 0xe2, 0xcf, 0x4c, 0xa2, 0x92, 0x24, 0xc8, + 0xab, 0x41, 0xff, 0x84, 0x7f, 0x9a, 0x01, 0x39, 0x92, 0xa0, 0x9d, 0x05, 0x80, 0x0c, 0xd0, 0xf4, + 0x0c, 0x49, 0x86, 0x0c, 0xc5, 0x5c, 0x0a, 0xd1, 0x56, 0xab, 0xc5, 0x3e, 0x53, 0xd3, 0x37, 0x4c, + 0xc0, 0x7f, 0x93, 0x61, 0x9b, 0xd0, 0x62, 0x03, 0x39, 0x97, 0x82, 0xff, 0x26, 0x6f, 0xab, 0x68, + 0x93, 0xc6, 0xce, 0xcd, 0x1a, 0x61, 0x42, 0xf0, 0xf7, 0x6a, 0x70, 0xe3, 0x92, 0xff, 0x37, 0x49, + 0xc1, 0x93, 0x5a, 0xa2, 0x96, 0x0b, 0x61, 0x11, 0x79, 0x92, 0xa9, 0x37, 0x19, 0xbe, 0x3a, 0x50, + 0x9b, 0x45, 0x41, 0x6d, 0x1e, 0x97, 0x40, 0xbc, 0xe9, 0x2b, 0xcf, 0x97, 0x73, 0x60, 0xaa, 0xe2, + 0xb4, 0x98, 0xee, 0x70, 0x13, 0xbf, 0x8f, 0xe5, 0x12, 0x4d, 0xfc, 0x02, 0x1a, 0x11, 0x0a, 0x72, + 0xaf, 0xa8, 0x20, 0x72, 0x14, 0x78, 0xfd, 0xd0, 0x16, 0x40, 0x9e, 0x68, 0xef, 0xc1, 0xab, 0x7c, + 0xe2, 0x48, 0x10, 0xd1, 0x1a, 0xec, 0xcf, 0x7f, 0x77, 0x3a, 0xf6, 0x9f, 0x41, 0x8e, 0x54, 0x30, + 0x66, 0x2b, 0x45, 0xac, 0xa8, 0x12, 0x5f, 0x51, 0x35, 0xbe, 0xa2, 0xd9, 0xde, 0x8a, 0x26, 0x99, + 0xcf, 0x47, 0x69, 0x48, 0xfa, 0x3a, 0xfe, 0x8f, 0x13, 0x00, 0x54, 0xcc, 0x3d, 0x6b, 0x8b, 0x6e, + 0xc5, 0x7e, 0xce, 0x9f, 0xc7, 0xb0, 0x4d, 0xd3, 0xff, 0xc2, 0x0d, 0x84, 0x77, 0x80, 0x09, 0x36, + 0xee, 0xb1, 0x8a, 0x5c, 0x2b, 0x54, 0x24, 0xa4, 0x42, 0xcd, 0xcb, 0x07, 0x3d, 0xc3, 0xcf, 0x2f, + 0xdc, 0x3a, 0xaa, 0xf4, 0xdc, 0x3a, 0xda, 0x7f, 0x2f, 0x21, 0xe2, 0x2e, 0x52, 0xf8, 0x6e, 0xe9, + 0xfd, 0x2c, 0x8e, 0x1f, 0xae, 0x46, 0x11, 0x4d, 0xf0, 0x76, 0x30, 0xe1, 0x04, 0xbb, 0xc7, 0x6a, + 0xe4, 0x7a, 0x56, 0xd9, 0xde, 0x74, 0x0c, 0x3f, 0xa7, 0xe4, 0x26, 0x96, 0x14, 0x1f, 0x63, 0x39, + 0x13, 0x71, 0x7a, 0xd9, 0x8f, 0x43, 0x84, 0xeb, 0x71, 0xc1, 0xf2, 0xb6, 0x57, 0x2d, 0xfb, 0x52, + 0x17, 0xfe, 0x47, 0x39, 0x0b, 0x92, 0xc3, 0x5f, 0x49, 0x86, 0xbf, 0x18, 0xe6, 0xa1, 0x26, 0xa2, + 0x76, 0x77, 0x14, 0x95, 0xfe, 0xdc, 0x46, 0x00, 0x78, 0x27, 0xc8, 0x53, 0x46, 0x59, 0x27, 0x7a, + 0x2e, 0x12, 0xbf, 0x80, 0x92, 0xc1, 0xfe, 0x80, 0xef, 0x0a, 0x70, 0x3c, 0x2f, 0xe0, 0xb8, 0x70, + 0x28, 0xce, 0x52, 0x87, 0xf4, 0xdc, 0xe3, 0xc1, 0x04, 0x93, 0xb4, 0x36, 0xc7, 0xb7, 0xe2, 0xc2, + 0x31, 0x0d, 0x80, 0xfc, 0x9a, 0xb3, 0x87, 0xea, 0x4e, 0x21, 0x83, 0x9f, 0x31, 0x7f, 0x75, 0xa7, + 0xa0, 0xc0, 0x97, 0x4d, 0x82, 0xc9, 0x20, 0x00, 0xcc, 0x67, 0x14, 0x50, 0x28, 0xb9, 0xc8, 0xf4, + 0xd0, 0x92, 0xeb, 0xec, 0xd0, 0x1a, 0xc9, 0xbb, 0x62, 0xfe, 0x9a, 0xb4, 0x3f, 0x45, 0x10, 0x98, + 0xa5, 0xb7, 0xb0, 0x08, 0x2c, 0xe9, 0x62, 0xa2, 0xe2, 0x2f, 0x26, 0xc2, 0x37, 0x4b, 0xf9, 0x57, + 0xc8, 0x96, 0x92, 0x7e, 0x53, 0xfb, 0x84, 0x02, 0x72, 0xa5, 0xb6, 0x63, 0x23, 0xfe, 0x52, 0xfd, + 0x81, 0x07, 0x53, 0xfa, 0xef, 0x28, 0xc0, 0xa7, 0x2b, 0xb2, 0xb6, 0x46, 0x28, 0x00, 0x5c, 0xb6, + 0xa4, 0x6c, 0xe5, 0x06, 0xa9, 0x58, 0xd2, 0xe9, 0x0b, 0xf4, 0xeb, 0x0a, 0x98, 0xa2, 0xa1, 0x54, + 0x8a, 0xed, 0x36, 0x7c, 0x44, 0x28, 0xd4, 0x3e, 0x41, 0x74, 0xe0, 0xef, 0x48, 0xfb, 0xc3, 0x07, + 0xb5, 0x0a, 0x68, 0x27, 0x88, 0x29, 0x93, 0xcc, 0x3d, 0x5b, 0x6e, 0x4f, 0x6c, 0x20, 0x43, 0xe9, + 0x8b, 0xfa, 0xb3, 0x0a, 0x36, 0x00, 0xec, 0x4b, 0xeb, 0x2e, 0xda, 0xb3, 0xd0, 0x65, 0x78, 0x75, + 0x28, 0xec, 0x83, 0x71, 0x22, 0xde, 0x20, 0xbd, 0x88, 0xc3, 0x91, 0x8c, 0xdc, 0x92, 0x9a, 0x6e, + 0x87, 0x99, 0x58, 0x2f, 0xde, 0x1b, 0xbc, 0x83, 0x23, 0x63, 0xf0, 0xd9, 0x25, 0xd7, 0x6c, 0xa2, + 0xb9, 0x48, 0x5f, 0xb0, 0x0f, 0x4d, 0x80, 0xc9, 0x0d, 0xbb, 0xdb, 0x69, 0x9b, 0xdd, 0x6d, 0xf8, + 0x3d, 0x15, 0xe4, 0xe9, 0x05, 0x52, 0xf0, 0x47, 0x85, 0xe3, 0xe8, 0x3f, 0xb3, 0x8b, 0x5c, 0xdf, + 0xbd, 0x8a, 0xbe, 0xf4, 0xbf, 0xdf, 0x1a, 0xbe, 0x4f, 0x95, 0x9d, 0xa4, 0xfa, 0x85, 0xc6, 0xdf, + 0xd8, 0x5f, 0x06, 0x93, 0x1d, 0xab, 0xe9, 0xed, 0xba, 0xc1, 0x6d, 0xc9, 0x8f, 0x95, 0xa3, 0xb2, + 0x4e, 0xff, 0x32, 0x82, 0xdf, 0xa1, 0x09, 0x26, 0x58, 0xe2, 0x81, 0x6d, 0xa1, 0x83, 0xc7, 0x2b, + 0x4f, 0x83, 0xbc, 0xe9, 0x7a, 0x56, 0xd7, 0xbf, 0x8d, 0x9e, 0xbd, 0xe1, 0xee, 0x92, 0x3e, 0x6d, + 0xb8, 0x6d, 0x3f, 0x70, 0x45, 0x90, 0x00, 0x7f, 0x57, 0x6a, 0xfe, 0x18, 0x5f, 0xf3, 0x64, 0x90, + 0xdf, 0x37, 0xc4, 0x5a, 0xf3, 0x95, 0xe0, 0x0a, 0xa3, 0x58, 0xd7, 0x1b, 0x34, 0xce, 0x41, 0x10, + 0xd2, 0xa0, 0x05, 0xbf, 0xc7, 0xaf, 0xdf, 0x89, 0x63, 0x04, 0x93, 0x62, 0x38, 0x46, 0x04, 0x09, + 0x31, 0x63, 0xc4, 0x9b, 0xa4, 0x77, 0x77, 0x02, 0x91, 0x0c, 0x58, 0xcb, 0x8b, 0xbb, 0x28, 0xe6, + 0xfd, 0x52, 0x3b, 0x35, 0x83, 0x4a, 0x3a, 0x42, 0xf1, 0xbf, 0x7e, 0x02, 0x4c, 0x2c, 0x9b, 0xed, + 0x36, 0x72, 0xf7, 0xf1, 0xd0, 0x52, 0xf0, 0x39, 0x5c, 0x33, 0x6d, 0x6b, 0x13, 0xcf, 0xef, 0x63, + 0x3b, 0xbd, 0x77, 0x4b, 0x07, 0x21, 0x65, 0x65, 0xcc, 0xf7, 0xd2, 0x8f, 0x90, 0xf9, 0xad, 0x20, + 0x6b, 0xd9, 0x9b, 0x0e, 0xeb, 0xfa, 0x7a, 0x57, 0xd1, 0xfd, 0x9f, 0xc9, 0x14, 0x84, 0x64, 0x94, + 0x8c, 0x43, 0x2a, 0xc9, 0x45, 0xfa, 0x3d, 0xe0, 0x6f, 0x67, 0xc1, 0xac, 0xcf, 0x44, 0xd9, 0x6e, + 0xa1, 0x07, 0xf9, 0x25, 0x95, 0x17, 0x66, 0x65, 0xcf, 0x50, 0xf5, 0xd6, 0x87, 0x90, 0x8a, 0x10, + 0x69, 0x1d, 0x80, 0xa6, 0xe9, 0xa1, 0x2d, 0xc7, 0xb5, 0x82, 0x7e, 0xed, 0x09, 0x49, 0xa8, 0x95, + 0xe8, 0xdf, 0xfb, 0x06, 0x47, 0x47, 0xbb, 0x1b, 0x4c, 0xa3, 0xe0, 0x98, 0xb4, 0xbf, 0xe4, 0x12, + 0x8b, 0x17, 0x9f, 0x1f, 0x7e, 0x56, 0xea, 0xa8, 0x96, 0x4c, 0x35, 0x93, 0x61, 0xd6, 0x18, 0xae, + 0x0d, 0x6d, 0x54, 0xd6, 0x8a, 0x46, 0x6d, 0xa5, 0xb8, 0xba, 0x5a, 0xae, 0x2c, 0x07, 0x31, 0x3f, + 0x34, 0x30, 0xb7, 0x58, 0xbd, 0x50, 0xe1, 0x82, 0xb2, 0x64, 0xe1, 0x3a, 0x98, 0xf4, 0xe5, 0xd5, + 0xcf, 0x37, 0x92, 0x97, 0x19, 0xf3, 0x8d, 0xe4, 0x92, 0xb0, 0x91, 0x65, 0x35, 0x03, 0x87, 0x19, + 0xf2, 0x0c, 0xff, 0xd8, 0x04, 0x39, 0xb2, 0x36, 0x0e, 0xdf, 0x4e, 0xae, 0xab, 0xef, 0xb4, 0xcd, + 0x26, 0x82, 0x3b, 0x09, 0xac, 0x6a, 0x3f, 0x2a, 0xbe, 0x72, 0x20, 0x2a, 0x3e, 0x79, 0x64, 0xd6, + 0xdb, 0xc9, 0x7e, 0xeb, 0xf1, 0x06, 0xcd, 0x22, 0x9e, 0x6a, 0x8a, 0xdd, 0x25, 0xa1, 0xcb, 0xf8, + 0x8c, 0xcd, 0x08, 0x95, 0x8c, 0xe6, 0x29, 0x99, 0x45, 0x29, 0xb7, 0x9f, 0x12, 0xc7, 0xd1, 0x18, + 0x6e, 0x6e, 0xce, 0x82, 0x5c, 0xad, 0xd3, 0xb6, 0x3c, 0xf8, 0x1b, 0xca, 0x48, 0x30, 0xa3, 0x37, + 0x19, 0xa8, 0x03, 0x6f, 0x32, 0x08, 0x77, 0x41, 0xb3, 0x12, 0xbb, 0xa0, 0x75, 0xf4, 0xa0, 0x27, + 0xee, 0x82, 0xde, 0xc1, 0xe2, 0x76, 0xd1, 0x3d, 0xd4, 0x47, 0xf5, 0x11, 0x29, 0xa9, 0x56, 0x9f, + 0x80, 0x70, 0xe7, 0x1e, 0xcf, 0xe2, 0x52, 0x01, 0x90, 0x5f, 0xa8, 0xd6, 0xeb, 0xd5, 0xb5, 0xc2, + 0x31, 0x12, 0xd0, 0xa4, 0xba, 0x5e, 0xc8, 0x68, 0x53, 0x20, 0x57, 0xae, 0x54, 0x74, 0xa3, 0xa0, + 0x90, 0x48, 0x59, 0xe5, 0xfa, 0xaa, 0x5e, 0x50, 0xc5, 0xb0, 0xd6, 0xb1, 0x66, 0xb4, 0x58, 0x76, + 0x9a, 0xea, 0x25, 0x67, 0x50, 0x47, 0xf3, 0x93, 0xbe, 0x72, 0xfd, 0xaa, 0x0a, 0x72, 0x6b, 0xc8, + 0xdd, 0x42, 0xf0, 0x67, 0x12, 0x6c, 0xd6, 0x6d, 0x5a, 0x6e, 0x97, 0xc6, 0x15, 0x0b, 0x37, 0xeb, + 0xf8, 0x34, 0xed, 0x06, 0x30, 0xdb, 0x45, 0x4d, 0xc7, 0x6e, 0xf9, 0x99, 0x68, 0x7f, 0x24, 0x26, + 0x8a, 0x57, 0x8a, 0x4b, 0x40, 0x46, 0x18, 0x1d, 0xc9, 0x8e, 0x5b, 0x12, 0x60, 0xfa, 0x95, 0x9a, + 0x3e, 0x30, 0xdf, 0x56, 0xf1, 0x4f, 0x9d, 0x7d, 0xf8, 0x62, 0xe9, 0x5d, 0xd4, 0x5b, 0x40, 0x9e, + 0xa8, 0xa9, 0x3f, 0x46, 0xf7, 0xef, 0x8f, 0x59, 0x1e, 0x6d, 0x01, 0x9c, 0xe8, 0xa2, 0x36, 0x6a, + 0x7a, 0xa8, 0x85, 0x9b, 0xae, 0x31, 0xb0, 0x53, 0x38, 0x98, 0x1d, 0xfe, 0x39, 0x0f, 0xe0, 0x5d, + 0x22, 0x80, 0x37, 0xf6, 0x11, 0x25, 0xae, 0x50, 0xb4, 0xad, 0x8c, 0xab, 0x51, 0x6b, 0x3b, 0xc1, + 0xe2, 0xb6, 0xff, 0x8e, 0xbf, 0x6d, 0x7b, 0x3b, 0x6d, 0xf2, 0x8d, 0x39, 0xfc, 0xfb, 0xef, 0xda, + 0x3c, 0x98, 0x30, 0xed, 0x7d, 0xf2, 0x29, 0x1b, 0x53, 0x6b, 0x3f, 0x13, 0x7c, 0x59, 0x80, 0xfc, + 0x3d, 0x02, 0xf2, 0x8f, 0x91, 0x63, 0x37, 0x7d, 0xe0, 0x7f, 0x7e, 0x02, 0xe4, 0xd6, 0xcd, 0xae, + 0x87, 0xe0, 0xff, 0xa3, 0xca, 0x22, 0x7f, 0x23, 0x98, 0xdb, 0x74, 0x9a, 0xbb, 0x5d, 0xd4, 0x12, + 0x1b, 0x65, 0x4f, 0xea, 0x28, 0x30, 0xd7, 0x6e, 0x06, 0x05, 0x3f, 0x91, 0x91, 0xf5, 0xb7, 0xd3, + 0x0f, 0xa4, 0x93, 0x20, 0xc9, 0xdd, 0x75, 0xd3, 0xf5, 0xaa, 0x9b, 0x24, 0x2d, 0x08, 0x92, 0xcc, + 0x27, 0x0a, 0xd0, 0xe7, 0x63, 0xa0, 0x9f, 0x88, 0x86, 0x7e, 0x52, 0x02, 0x7a, 0xad, 0x08, 0x26, + 0x37, 0xad, 0x36, 0x22, 0x3f, 0x4c, 0x91, 0x1f, 0xfa, 0x8d, 0x49, 0x44, 0xf6, 0xc1, 0x98, 0xb4, + 0x64, 0xb5, 0x91, 0x11, 0xfc, 0xe6, 0x4f, 0x64, 0x40, 0x38, 0x91, 0x59, 0xa5, 0xfe, 0xad, 0xd8, + 0xf0, 0xb2, 0xcd, 0x1d, 0xe4, 0x2f, 0xa2, 0xd9, 0xec, 0xb0, 0x49, 0xcb, 0xf4, 0x4c, 0x02, 0xc6, + 0x8c, 0x41, 0x9e, 0x45, 0xff, 0x0e, 0xb5, 0xd7, 0xbf, 0xe3, 0xd9, 0x6a, 0xb2, 0x1e, 0xd1, 0x67, + 0x36, 0xa2, 0x45, 0x5d, 0xf4, 0x01, 0xa2, 0x96, 0x62, 0xf0, 0x8e, 0x81, 0x69, 0x9a, 0x2e, 0xf2, + 0xd6, 0x79, 0x8f, 0x8a, 0x9c, 0x21, 0x26, 0x12, 0xd7, 0xba, 0x6e, 0xcd, 0xdc, 0x41, 0xa4, 0xb0, + 0x12, 0xfe, 0xc6, 0x5c, 0xa6, 0x0e, 0xa4, 0x87, 0xfd, 0x6f, 0x6e, 0xd4, 0xfd, 0x6f, 0xbf, 0x3a, + 0xa6, 0xdf, 0x0c, 0x5f, 0x99, 0x05, 0x6a, 0x69, 0xd7, 0x7b, 0x58, 0x77, 0xbf, 0xdf, 0x97, 0xf6, + 0x57, 0x61, 0xfd, 0x59, 0xe4, 0x1d, 0xe2, 0x63, 0xea, 0x7d, 0x13, 0x6a, 0x89, 0x9c, 0x5f, 0x4c, + 0x54, 0xdd, 0xd2, 0xd7, 0x91, 0xb7, 0xa8, 0x81, 0xc3, 0xe3, 0x33, 0x33, 0x87, 0x37, 0xcd, 0x21, + 0xed, 0x9f, 0xb8, 0x9e, 0x21, 0x78, 0xf7, 0x3b, 0x9e, 0xac, 0x10, 0x52, 0x8d, 0x6c, 0x93, 0x13, + 0x51, 0xce, 0x18, 0xf4, 0x05, 0xbe, 0x44, 0xda, 0x0d, 0x9c, 0x8a, 0x2d, 0xd6, 0x25, 0x30, 0x99, + 0x4d, 0x25, 0x77, 0x4f, 0x64, 0x4c, 0xb1, 0xe9, 0x03, 0xf6, 0xcd, 0xe8, 0x25, 0xc3, 0x61, 0x10, + 0x83, 0x2f, 0x97, 0xde, 0x56, 0xa2, 0xd5, 0x1e, 0xb0, 0x5e, 0x98, 0x4c, 0xde, 0x72, 0x9b, 0x4e, + 0xb1, 0x05, 0xa7, 0x2f, 0xf1, 0x6f, 0xa8, 0x20, 0x4f, 0xb7, 0x12, 0xe1, 0x1b, 0x33, 0x09, 0x2e, + 0xd8, 0xf6, 0x44, 0x57, 0xc0, 0xe0, 0x3d, 0xc9, 0x9a, 0x83, 0xe0, 0x32, 0x98, 0x4d, 0xe4, 0x32, + 0x28, 0x9e, 0xab, 0x94, 0x68, 0x47, 0xb4, 0x8e, 0x29, 0x4f, 0x27, 0x93, 0xb4, 0xb0, 0xbe, 0x0c, + 0xa5, 0x8f, 0xf7, 0x73, 0x72, 0x60, 0x86, 0x16, 0x7d, 0xc1, 0x6a, 0x6d, 0x21, 0x0f, 0xbe, 0x53, + 0xf9, 0xc1, 0x41, 0x5d, 0xab, 0x80, 0x99, 0xcb, 0x84, 0xed, 0x55, 0x73, 0xdf, 0xd9, 0xf5, 0xd8, + 0xca, 0xc5, 0xcd, 0xb1, 0xeb, 0x1e, 0xb4, 0x9e, 0xf3, 0xf4, 0x0f, 0x43, 0xf8, 0x1f, 0xcb, 0x98, + 0x2e, 0xf8, 0x53, 0x47, 0xac, 0x3c, 0x31, 0xb2, 0xf8, 0x24, 0xed, 0x34, 0xc8, 0xef, 0x59, 0xe8, + 0x72, 0xb9, 0xc5, 0xac, 0x5b, 0xf6, 0x26, 0x9e, 0x38, 0x8f, 0xdd, 0x7f, 0xe5, 0xe1, 0x66, 0xbc, + 0xa4, 0xab, 0x85, 0x72, 0xbb, 0xb0, 0x03, 0xd9, 0x1a, 0xc3, 0x19, 0x5f, 0xf1, 0x1e, 0xc6, 0x24, + 0xf7, 0xfb, 0x47, 0x19, 0xce, 0x62, 0xfc, 0x8b, 0xd8, 0x13, 0x24, 0x54, 0x00, 0x23, 0xbe, 0xa2, + 0x51, 0x2e, 0x28, 0xc3, 0x80, 0xa2, 0xd3, 0x97, 0xfc, 0xab, 0x55, 0x30, 0x55, 0x43, 0xde, 0x92, + 0x85, 0xda, 0xad, 0x2e, 0x74, 0x0f, 0x6f, 0x1a, 0xdd, 0x0a, 0xf2, 0x9b, 0x84, 0xd8, 0xa0, 0xf3, + 0x07, 0x2c, 0x1b, 0x7c, 0xa5, 0x22, 0xbb, 0xb3, 0xcb, 0x56, 0xdf, 0x7c, 0x6e, 0x47, 0x02, 0x93, + 0x9c, 0x67, 0x6e, 0x7c, 0xc9, 0xe9, 0xa3, 0xf4, 0x56, 0x15, 0xcc, 0xb0, 0x8b, 0xdb, 0x8a, 0x6d, + 0x6b, 0xcb, 0x86, 0xbb, 0x23, 0x68, 0x21, 0xda, 0xe3, 0x40, 0xce, 0xc4, 0xd4, 0x98, 0x93, 0x3e, + 0xec, 0xdb, 0x79, 0x92, 0xf2, 0x0c, 0x9a, 0x31, 0x41, 0xec, 0xc5, 0x50, 0xb1, 0x7d, 0x9e, 0xc7, + 0x18, 0x7b, 0x71, 0x60, 0xe1, 0xe9, 0x23, 0xf6, 0x25, 0x15, 0x9c, 0x64, 0x0c, 0x9c, 0x47, 0xae, + 0x67, 0x35, 0xcd, 0x36, 0x45, 0xee, 0x79, 0x99, 0x51, 0x40, 0xb7, 0x02, 0x66, 0xf7, 0x78, 0xb2, + 0x0c, 0xc2, 0x73, 0x7d, 0x21, 0x14, 0x18, 0x30, 0xc4, 0x1f, 0x13, 0xc4, 0xb0, 0x13, 0xa4, 0x2a, + 0xd0, 0x1c, 0x63, 0x0c, 0x3b, 0x69, 0x26, 0xd2, 0x87, 0xf8, 0x45, 0x59, 0x1a, 0xcf, 0x26, 0xec, + 0x3e, 0x3f, 0x27, 0x8d, 0xed, 0x06, 0x98, 0x26, 0x58, 0xd2, 0x1f, 0xd9, 0x32, 0x44, 0x8c, 0x12, + 0x07, 0xfd, 0x0e, 0xbb, 0x2b, 0x2a, 0xf8, 0xd7, 0xe0, 0xe9, 0xc0, 0x0b, 0x00, 0x84, 0x9f, 0xf8, + 0x4e, 0x3a, 0x13, 0xd5, 0x49, 0x2b, 0x72, 0x9d, 0xf4, 0x1b, 0xa4, 0x83, 0x97, 0xf4, 0x67, 0xfb, + 0xf0, 0xea, 0x21, 0x17, 0xb6, 0x62, 0x70, 0xe9, 0xe9, 0xeb, 0xc5, 0xcb, 0xb2, 0xbd, 0x37, 0x74, + 0x7f, 0x78, 0x24, 0xf3, 0x29, 0xbe, 0x3f, 0x50, 0x7b, 0xfa, 0x83, 0x43, 0x58, 0xd2, 0x37, 0x81, + 0xe3, 0xb4, 0x88, 0x52, 0xc0, 0x56, 0x8e, 0x86, 0x66, 0xe8, 0x49, 0x86, 0x1f, 0x19, 0x42, 0x09, + 0x06, 0x5d, 0x1f, 0x1e, 0xd7, 0xc9, 0x25, 0x33, 0x76, 0x93, 0x2a, 0xc8, 0xd1, 0xdd, 0x3a, 0xfe, + 0xf5, 0x2c, 0xb5, 0x76, 0x37, 0xc8, 0x75, 0x5e, 0xf0, 0x2f, 0xb3, 0xa3, 0x18, 0x11, 0xee, 0x05, + 0x59, 0xe2, 0xaa, 0xae, 0x46, 0x2e, 0x69, 0x84, 0x45, 0x86, 0x77, 0xad, 0xa1, 0x07, 0xbd, 0x95, + 0x63, 0x06, 0xf9, 0x53, 0xbb, 0x19, 0x1c, 0xbf, 0x68, 0x36, 0x2f, 0x6d, 0xb9, 0xce, 0x2e, 0xb9, + 0xf8, 0xc8, 0x61, 0x37, 0x28, 0x91, 0x9b, 0xe8, 0xc4, 0x0f, 0xda, 0x6d, 0xbe, 0xe9, 0x90, 0x1b, + 0x64, 0x3a, 0xac, 0x1c, 0x63, 0xc6, 0x83, 0xf6, 0xf8, 0xa0, 0xd3, 0xc9, 0xc7, 0x76, 0x3a, 0x2b, + 0xc7, 0xfc, 0x6e, 0x47, 0x5b, 0x04, 0x93, 0x2d, 0x6b, 0x8f, 0x6c, 0x55, 0x93, 0x59, 0xd7, 0xa0, + 0xa3, 0xc4, 0x8b, 0xd6, 0x1e, 0xdd, 0xd8, 0x5e, 0x39, 0x66, 0x04, 0x7f, 0x6a, 0xcb, 0x60, 0x8a, + 0x6c, 0x0b, 0x10, 0x32, 0x93, 0x89, 0x8e, 0x09, 0xaf, 0x1c, 0x33, 0xc2, 0x7f, 0xb1, 0xf5, 0x91, + 0x25, 0x67, 0x38, 0xee, 0xf1, 0xb7, 0xdb, 0x33, 0x89, 0xb6, 0xdb, 0xb1, 0x2c, 0xe8, 0x86, 0xfb, + 0x69, 0x90, 0x6b, 0x12, 0x09, 0x2b, 0x4c, 0xc2, 0xf4, 0x55, 0xbb, 0x0b, 0x64, 0x77, 0x4c, 0xd7, + 0x9f, 0x3c, 0xdf, 0x38, 0x98, 0xee, 0x9a, 0xe9, 0x5e, 0xc2, 0x08, 0xe2, 0xbf, 0x16, 0x26, 0x40, + 0x8e, 0x08, 0x2e, 0x78, 0x80, 0x6f, 0xc9, 0x52, 0x33, 0xa4, 0xe4, 0xd8, 0x78, 0xd8, 0xaf, 0x3b, + 0xfe, 0x41, 0x97, 0x3f, 0xc8, 0x8c, 0xc6, 0x82, 0xec, 0x7b, 0xa5, 0xb5, 0x1a, 0x79, 0xa5, 0x75, + 0xcf, 0xdd, 0xaa, 0xd9, 0xde, 0xbb, 0x55, 0xc3, 0xe5, 0x83, 0xdc, 0x60, 0x47, 0x95, 0x3f, 0x1f, + 0xc2, 0x74, 0xe9, 0x15, 0x44, 0xf4, 0x0c, 0xbc, 0x6d, 0xd9, 0x5c, 0x9d, 0xfd, 0xd7, 0x84, 0x9d, + 0x52, 0x52, 0xa3, 0x66, 0x00, 0x7b, 0xe9, 0xf7, 0x4d, 0xbf, 0x95, 0x05, 0x67, 0xe8, 0x0d, 0xbe, + 0x7b, 0xa8, 0xee, 0x88, 0x57, 0x0d, 0xc2, 0x3f, 0x19, 0x89, 0xd2, 0xf4, 0x19, 0x70, 0xd4, 0xbe, + 0x03, 0xce, 0x81, 0xc3, 0xc6, 0xd9, 0x01, 0x87, 0x8d, 0x73, 0xc9, 0x56, 0x0e, 0x3f, 0xc0, 0xeb, + 0xcf, 0xba, 0xa8, 0x3f, 0x77, 0x46, 0x00, 0xd4, 0x4f, 0x2e, 0x23, 0xb1, 0x6f, 0xde, 0x1e, 0x68, + 0x4a, 0x4d, 0xd0, 0x94, 0x7b, 0x86, 0x67, 0x24, 0x7d, 0x6d, 0xf9, 0xbd, 0x2c, 0xb8, 0x22, 0x64, + 0xa6, 0x82, 0x2e, 0x33, 0x45, 0xf9, 0xcc, 0x48, 0x14, 0x25, 0x79, 0x2c, 0x83, 0xb4, 0x35, 0xe6, + 0x4f, 0xa5, 0xcf, 0x00, 0xf5, 0x02, 0x15, 0xc8, 0x26, 0x42, 0x59, 0x4e, 0x83, 0x3c, 0xed, 0x61, + 0x18, 0x34, 0xec, 0x2d, 0x61, 0x77, 0x23, 0x77, 0x72, 0x48, 0x96, 0xb7, 0x31, 0xe8, 0x0f, 0x5b, + 0xd7, 0xa8, 0xef, 0xba, 0x76, 0xd9, 0xf6, 0x1c, 0xf8, 0x73, 0x23, 0x51, 0x9c, 0xc0, 0x1b, 0x4e, + 0x1d, 0xc6, 0x1b, 0x6e, 0xa8, 0x55, 0x0e, 0xbf, 0x06, 0x47, 0xb2, 0xca, 0x11, 0x51, 0x78, 0xfa, + 0xf8, 0xbd, 0x4d, 0xa5, 0xb7, 0xf9, 0xd7, 0x90, 0xb7, 0x20, 0x5a, 0x88, 0xf0, 0xfe, 0x51, 0x00, + 0x79, 0xd2, 0x37, 0x93, 0xd8, 0x65, 0x54, 0xe4, 0x45, 0x3c, 0xf1, 0x14, 0x7b, 0x29, 0x82, 0x30, + 0x1d, 0xec, 0xe1, 0x70, 0x24, 0x48, 0xc9, 0xdd, 0x85, 0x90, 0x80, 0x8d, 0xf4, 0x31, 0x7b, 0x81, + 0x0a, 0xf2, 0xec, 0xe6, 0xf6, 0x8d, 0x54, 0x1c, 0x26, 0xc4, 0xd0, 0xc8, 0x12, 0x3b, 0x72, 0x89, + 0xef, 0x37, 0x4f, 0x6f, 0x2f, 0xee, 0x88, 0x2e, 0x30, 0xff, 0xb6, 0x02, 0xa6, 0x6b, 0xc8, 0x2b, + 0x99, 0xae, 0x6b, 0x99, 0x5b, 0xa3, 0xf2, 0xf8, 0x96, 0xf5, 0x1e, 0x86, 0xdf, 0xc9, 0xc8, 0x9e, + 0xa7, 0x09, 0x16, 0xc2, 0x7d, 0x56, 0x23, 0x62, 0xfb, 0xc9, 0xdd, 0x1c, 0x3f, 0x88, 0xda, 0x18, + 0x3c, 0xb6, 0x15, 0x30, 0xe1, 0x9f, 0xa9, 0xbb, 0x55, 0x38, 0x67, 0xb9, 0xed, 0xed, 0xf8, 0xc7, + 0x60, 0xc8, 0xf3, 0xc1, 0xb3, 0x5c, 0xf0, 0xa5, 0x09, 0x1d, 0xe5, 0xe3, 0x0f, 0x04, 0x26, 0x6b, + 0x63, 0x49, 0xdc, 0xe1, 0x8f, 0xea, 0x08, 0xe0, 0xef, 0x4c, 0xb0, 0xe5, 0xc8, 0x55, 0xd3, 0x43, + 0x0f, 0xc2, 0xcf, 0xa9, 0x60, 0xa2, 0x86, 0x3c, 0x3c, 0xde, 0x62, 0xf6, 0x0f, 0xad, 0xe1, 0x1a, + 0xb7, 0xe2, 0x31, 0xc5, 0xd6, 0x30, 0x9e, 0x02, 0xa6, 0x3a, 0xae, 0xd3, 0x44, 0xdd, 0x2e, 0x5b, + 0xbd, 0xe0, 0x1d, 0xd5, 0xfa, 0x8d, 0xfe, 0x84, 0xb5, 0xf9, 0x75, 0xff, 0x1f, 0x23, 0xfc, 0x3d, + 0xa9, 0x19, 0x40, 0x29, 0xb1, 0x0a, 0x8e, 0xdb, 0x0c, 0x88, 0x2b, 0x3c, 0x7d, 0xa0, 0x3f, 0xa5, + 0x82, 0x99, 0x1a, 0xf2, 0x02, 0x29, 0x26, 0xd8, 0xe4, 0x88, 0x86, 0x57, 0x80, 0x52, 0x3d, 0x1c, + 0x94, 0xf2, 0xf7, 0xe9, 0x89, 0xd2, 0x0c, 0x88, 0x8d, 0xf1, 0x3e, 0x3d, 0x39, 0x0e, 0xc6, 0x70, + 0x7c, 0xed, 0x51, 0x60, 0x8a, 0xf0, 0x42, 0x1a, 0xec, 0x2f, 0x66, 0xc3, 0xc6, 0xfb, 0xf9, 0x94, + 0x1a, 0xef, 0xdd, 0x20, 0x47, 0xee, 0xe9, 0x27, 0x0d, 0x77, 0x5a, 0xc6, 0x6c, 0x5f, 0xc3, 0xd9, + 0x0d, 0xfa, 0x57, 0x7f, 0x3f, 0xcd, 0x5c, 0x32, 0x3f, 0xcd, 0xd7, 0x2a, 0x89, 0x46, 0x42, 0x3a, + 0x77, 0x18, 0x61, 0x93, 0x4f, 0x30, 0x6e, 0xc6, 0x94, 0x9d, 0xbe, 0x72, 0x3c, 0x4f, 0x05, 0x93, + 0x78, 0xdc, 0x26, 0xf6, 0xf8, 0x85, 0xc3, 0xab, 0x43, 0x7f, 0x43, 0x3f, 0x61, 0x0f, 0xec, 0x4b, + 0x64, 0x74, 0xe6, 0x7d, 0x82, 0x1e, 0x38, 0xae, 0xf0, 0xf4, 0xf1, 0x78, 0x07, 0xc5, 0x83, 0xb4, + 0x07, 0xf8, 0x3a, 0x15, 0xa8, 0xcb, 0xc8, 0x1b, 0xb7, 0x15, 0xf9, 0x56, 0xe9, 0x50, 0x45, 0x82, + 0xc0, 0x08, 0xcf, 0xf3, 0xcb, 0x68, 0x34, 0x0d, 0x48, 0x2e, 0x46, 0x91, 0x14, 0x03, 0xe9, 0xa3, + 0xf6, 0x1e, 0x8a, 0x1a, 0xdd, 0x5c, 0xf8, 0xd9, 0x11, 0xf4, 0xaa, 0xe3, 0x5d, 0xf8, 0xf0, 0x05, + 0x48, 0x68, 0x1c, 0x55, 0x7b, 0xeb, 0x57, 0xf8, 0x58, 0xee, 0xaf, 0x03, 0xb8, 0xb1, 0x6f, 0xa3, + 0xe6, 0x25, 0xd4, 0x82, 0x3f, 0x75, 0x78, 0xe8, 0xce, 0x80, 0x89, 0x26, 0xa5, 0x46, 0xc0, 0x9b, + 0x34, 0xfc, 0xd7, 0x04, 0x97, 0x31, 0x8b, 0x1d, 0x11, 0xfd, 0x7d, 0x8c, 0x97, 0x31, 0x4b, 0x14, + 0x3f, 0x06, 0xb3, 0x85, 0xce, 0x32, 0xca, 0x4d, 0xc7, 0x86, 0xff, 0xe9, 0xf0, 0xb0, 0x5c, 0x03, + 0xa6, 0xac, 0xa6, 0x63, 0x97, 0x77, 0xfc, 0xe0, 0x7e, 0x53, 0x46, 0x98, 0xe0, 0x7f, 0xd5, 0x77, + 0x9c, 0x07, 0x2c, 0xb6, 0x6b, 0x1e, 0x26, 0x0c, 0x6b, 0x4c, 0x60, 0xd6, 0x8f, 0xca, 0x98, 0xe8, + 0x53, 0x76, 0xfa, 0x90, 0x7d, 0x24, 0xf4, 0x6e, 0xa3, 0x5d, 0xe1, 0xc3, 0x62, 0x15, 0x78, 0x98, + 0xe1, 0x8c, 0xaf, 0xc5, 0x91, 0x0c, 0x67, 0x31, 0x0c, 0x8c, 0xe1, 0x7e, 0x91, 0x10, 0xc7, 0xd4, + 0xd7, 0x80, 0x0f, 0x81, 0xce, 0xe8, 0xcc, 0xc3, 0x21, 0xd1, 0x39, 0x1a, 0x13, 0xf1, 0xfd, 0x2c, + 0xd4, 0x25, 0xb3, 0x78, 0xe0, 0x7f, 0x1e, 0x05, 0x38, 0x77, 0x0e, 0xe3, 0xaf, 0x40, 0xbd, 0x15, + 0x12, 0x5c, 0x23, 0x7d, 0x40, 0x82, 0x98, 0xca, 0x18, 0x2f, 0x58, 0x97, 0x29, 0x3f, 0x7d, 0x00, + 0x9f, 0xab, 0x82, 0x39, 0xe2, 0x23, 0xd0, 0x46, 0xa6, 0x4b, 0x3b, 0xca, 0x91, 0x38, 0xca, 0xbf, + 0x43, 0x3a, 0xc0, 0x8f, 0x28, 0x87, 0x90, 0x8f, 0x91, 0x40, 0x21, 0x17, 0xdd, 0x47, 0x92, 0x85, + 0xb1, 0x6c, 0xa3, 0x14, 0x02, 0x16, 0x98, 0x8a, 0x8f, 0x06, 0x8f, 0x84, 0x1e, 0xb9, 0xa2, 0x30, + 0xfc, 0xc6, 0x36, 0x66, 0x8f, 0x5c, 0x19, 0x26, 0xc6, 0x70, 0xc3, 0xe4, 0xe3, 0xd8, 0x82, 0x73, + 0x9d, 0xdc, 0xb2, 0xfe, 0xf2, 0x6c, 0x70, 0xa2, 0xed, 0x53, 0x23, 0xf1, 0xc0, 0x3c, 0x44, 0x60, + 0x7b, 0x0d, 0x64, 0x5d, 0xe7, 0x32, 0x5d, 0xda, 0x9a, 0x35, 0xc8, 0x33, 0x31, 0xf9, 0x9d, 0xf6, + 0xee, 0x8e, 0x4d, 0x4f, 0x86, 0xce, 0x1a, 0xfe, 0xab, 0x76, 0x03, 0x98, 0xbd, 0x6c, 0x79, 0xdb, + 0x2b, 0xc8, 0x6c, 0x21, 0xd7, 0x70, 0x2e, 0x13, 0x8f, 0xb9, 0x49, 0x43, 0x4c, 0x14, 0xfd, 0x57, + 0x24, 0xec, 0x4b, 0x72, 0xf5, 0xfa, 0x58, 0x8e, 0xbf, 0x25, 0xb1, 0x3c, 0xa3, 0xb9, 0x4a, 0x5f, + 0x61, 0xde, 0xab, 0x82, 0x29, 0xc3, 0xb9, 0xcc, 0x94, 0xe4, 0xff, 0x3a, 0x5a, 0x1d, 0x49, 0x3c, + 0xd1, 0xa3, 0x57, 0xe9, 0xfb, 0xec, 0x8f, 0x7d, 0xa2, 0x17, 0x5b, 0xfc, 0x58, 0x4e, 0x2e, 0xcd, + 0x18, 0xce, 0xe5, 0x1a, 0xf2, 0x68, 0x8b, 0x80, 0x8d, 0x11, 0x39, 0x59, 0x5b, 0x5d, 0x4a, 0x90, + 0xcd, 0xc3, 0x83, 0xf7, 0xa4, 0xbb, 0x08, 0x81, 0x80, 0x02, 0x16, 0xc7, 0xbd, 0x8b, 0x30, 0x90, + 0x83, 0x31, 0xc4, 0x48, 0x51, 0xc1, 0xb4, 0xe1, 0x5c, 0xc6, 0x43, 0xc3, 0x92, 0xd5, 0x6e, 0x8f, + 0x66, 0x84, 0x4c, 0x6a, 0xfc, 0xfb, 0x62, 0xf0, 0xb9, 0x18, 0xbb, 0xf1, 0x3f, 0x80, 0x81, 0xf4, + 0x61, 0x78, 0x36, 0x6d, 0x2c, 0xfe, 0x08, 0x6d, 0x8f, 0x06, 0x87, 0x61, 0x1b, 0x44, 0xc0, 0xc6, + 0x91, 0x35, 0x88, 0x28, 0x0e, 0xc6, 0xb2, 0x73, 0x32, 0x57, 0x22, 0xc3, 0xfc, 0x68, 0xdb, 0xc4, + 0xbb, 0x92, 0xb9, 0x26, 0xb2, 0x61, 0x57, 0x60, 0x64, 0x24, 0x68, 0x24, 0x70, 0x41, 0x94, 0xe0, + 0x21, 0x7d, 0x3c, 0x3e, 0xa8, 0x82, 0x19, 0xca, 0xc2, 0xc3, 0xc4, 0x0a, 0x18, 0xaa, 0x51, 0xf1, + 0x35, 0x38, 0x9a, 0x46, 0x15, 0xc3, 0xc1, 0x58, 0x6e, 0xe9, 0xc4, 0x76, 0xdc, 0x10, 0xc7, 0xc7, + 0xa3, 0x10, 0x1c, 0xda, 0x18, 0x1b, 0xe1, 0x11, 0xf2, 0x61, 0x8c, 0xb1, 0x23, 0x3a, 0x46, 0xfe, + 0xec, 0xa0, 0x15, 0x8d, 0x12, 0x83, 0x43, 0x34, 0x85, 0x11, 0xc2, 0x30, 0x64, 0x53, 0x38, 0x22, + 0x24, 0xbe, 0xac, 0x02, 0x40, 0x19, 0x58, 0x73, 0xf6, 0xc8, 0xa5, 0x3c, 0x23, 0xe8, 0xce, 0x7a, + 0xdd, 0xea, 0xd5, 0x01, 0x6e, 0xf5, 0x09, 0x43, 0xb8, 0x24, 0x5d, 0x09, 0xe4, 0xa4, 0x8c, 0x2b, + 0x39, 0xf6, 0x95, 0xc0, 0xf8, 0xf2, 0xd3, 0xc7, 0xf8, 0x8b, 0xd4, 0x9a, 0x0b, 0x0f, 0x98, 0xfe, + 0xfa, 0x48, 0x50, 0xe6, 0x66, 0xff, 0xaa, 0x38, 0xfb, 0x3f, 0x04, 0xb6, 0xc3, 0xda, 0x88, 0x83, + 0x0e, 0x8e, 0xa6, 0x6f, 0x23, 0x1e, 0xdd, 0x01, 0xd1, 0x9f, 0xcd, 0x82, 0xe3, 0xac, 0x13, 0xf9, + 0x41, 0x80, 0x38, 0xe1, 0x39, 0x3c, 0xa1, 0x93, 0x1c, 0x80, 0xf2, 0xa8, 0x16, 0xa4, 0x92, 0x2c, + 0x65, 0x4a, 0xb0, 0x37, 0x96, 0xd5, 0x8d, 0xbc, 0xfe, 0x60, 0xc7, 0xb4, 0x5b, 0xf2, 0xe1, 0x7e, + 0x07, 0x00, 0xef, 0xaf, 0x35, 0xaa, 0xe2, 0x5a, 0x63, 0x9f, 0x95, 0xc9, 0xc4, 0x3b, 0xd7, 0x44, + 0x64, 0x94, 0xdd, 0xb1, 0xef, 0x5c, 0x47, 0x97, 0x9d, 0x3e, 0x4a, 0xef, 0x52, 0x41, 0xb6, 0xe6, + 0xb8, 0x1e, 0x7c, 0x28, 0x49, 0xeb, 0xa4, 0x92, 0x0f, 0x41, 0xf2, 0xdf, 0xb5, 0x92, 0x70, 0x6b, + 0xf2, 0xad, 0xf1, 0x47, 0x9d, 0x4d, 0xcf, 0x24, 0x5e, 0xdd, 0xb8, 0x7c, 0xee, 0xfa, 0xe4, 0xa4, + 0xf1, 0x74, 0xa8, 0xfc, 0x6a, 0xd1, 0x07, 0x30, 0x52, 0x8b, 0xa7, 0x13, 0x59, 0x72, 0xfa, 0xb8, + 0xfd, 0xf7, 0x39, 0xe6, 0xdb, 0xba, 0x64, 0xb5, 0x11, 0x7c, 0x88, 0xba, 0x8c, 0x54, 0xcc, 0x1d, + 0x24, 0x7f, 0x24, 0x26, 0xd6, 0xb5, 0x95, 0xc4, 0x97, 0x55, 0xc3, 0xf8, 0xb2, 0x49, 0x1b, 0x14, + 0x3d, 0x80, 0x4e, 0x59, 0x1a, 0x77, 0x83, 0x8a, 0x29, 0x7b, 0x2c, 0x71, 0x3a, 0x4f, 0xd4, 0x90, + 0x47, 0x8d, 0xca, 0xaa, 0x7f, 0x03, 0xcb, 0x4f, 0x8f, 0x24, 0x62, 0x67, 0x70, 0xc1, 0x8b, 0xda, + 0x73, 0xc1, 0xcb, 0x7b, 0x79, 0x70, 0xd6, 0x44, 0x70, 0x7e, 0x3c, 0x5a, 0x40, 0x22, 0x93, 0x23, + 0x81, 0xe9, 0xad, 0x01, 0x4c, 0xeb, 0x02, 0x4c, 0x77, 0x0d, 0xc9, 0x45, 0xfa, 0x80, 0x7d, 0x1e, + 0x9b, 0x2a, 0x64, 0xd2, 0x5f, 0xb4, 0x5b, 0x2c, 0xc2, 0xea, 0x3f, 0x1f, 0xf5, 0x66, 0xdb, 0xc1, + 0x10, 0xac, 0x42, 0x2c, 0xe7, 0x5c, 0xef, 0x6d, 0xf5, 0x0b, 0x34, 0x9c, 0x2b, 0xee, 0x44, 0xc9, + 0x4e, 0x9b, 0xfc, 0x8d, 0xf5, 0xc1, 0x7f, 0xf0, 0xcf, 0x92, 0xad, 0xbf, 0x11, 0x12, 0x3d, 0x82, + 0x4b, 0xd9, 0x06, 0x4a, 0xb0, 0x32, 0x27, 0xc1, 0xdd, 0x0f, 0x87, 0x5b, 0x58, 0x18, 0x09, 0x64, + 0x48, 0xb7, 0x30, 0x42, 0xe0, 0x28, 0xdd, 0xc2, 0x06, 0x31, 0x30, 0x86, 0x5b, 0xe6, 0x73, 0x6c, + 0x57, 0x9e, 0xf8, 0x4c, 0xc2, 0xbf, 0x56, 0x52, 0x1f, 0x6d, 0xbf, 0x9b, 0x49, 0xe4, 0xc7, 0x4c, + 0xf8, 0x8a, 0x1f, 0x6e, 0x93, 0x78, 0x26, 0xc7, 0x91, 0x1b, 0xc3, 0xfa, 0x8f, 0x42, 0x7c, 0xca, + 0x2f, 0x58, 0x2d, 0x6f, 0x7b, 0x44, 0x27, 0x33, 0x2e, 0x63, 0x5a, 0xfe, 0x75, 0xc5, 0xe4, 0x05, + 0xfe, 0x6b, 0x26, 0x51, 0x28, 0xa8, 0x40, 0x24, 0x84, 0xad, 0x08, 0x11, 0x27, 0x08, 0xe0, 0x14, + 0x4b, 0x6f, 0x8c, 0x1a, 0x7d, 0xde, 0x6a, 0x21, 0xe7, 0x61, 0xa8, 0xd1, 0x84, 0xaf, 0xd1, 0x69, + 0x74, 0x1c, 0xb9, 0x1f, 0x52, 0x8d, 0x0e, 0x44, 0x32, 0x22, 0x8d, 0x8e, 0xa5, 0x97, 0xbe, 0x8c, + 0x5f, 0x3a, 0xc3, 0x26, 0x44, 0xab, 0x96, 0x7d, 0x09, 0x7e, 0x2b, 0xef, 0x5f, 0x94, 0x7c, 0xc1, + 0xf2, 0xb6, 0x59, 0x4c, 0x97, 0xdf, 0x93, 0xbe, 0xe3, 0x64, 0x88, 0xb8, 0x2d, 0x62, 0x58, 0xa8, + 0xdc, 0x81, 0xb0, 0x50, 0x45, 0x30, 0x6b, 0xd9, 0x1e, 0x72, 0x6d, 0xb3, 0xbd, 0xd4, 0x36, 0xb7, + 0xba, 0x67, 0x26, 0xfa, 0x5e, 0x42, 0x57, 0xe6, 0xf2, 0x18, 0xe2, 0x1f, 0xfc, 0x75, 0x92, 0x93, + 0xe2, 0xb5, 0xf8, 0x11, 0x51, 0xac, 0xa6, 0xa2, 0xa3, 0x58, 0x05, 0x51, 0xaa, 0xc0, 0xe0, 0x20, + 0xd7, 0xb2, 0x36, 0x6e, 0xc2, 0xb0, 0x7d, 0xb7, 0x4a, 0x46, 0x53, 0x0b, 0x42, 0x38, 0xbe, 0x42, + 0x4d, 0xb4, 0x4a, 0x87, 0x15, 0x61, 0xbe, 0x57, 0x09, 0x12, 0x5b, 0xa8, 0x7c, 0xe5, 0xd5, 0x9e, + 0xca, 0x07, 0x26, 0x4f, 0x56, 0xc2, 0xe4, 0xe1, 0x95, 0x2a, 0x27, 0xa7, 0x54, 0x49, 0x16, 0xfd, + 0x64, 0x6a, 0x3b, 0x86, 0x53, 0x45, 0x39, 0x70, 0xc2, 0x8f, 0x5a, 0xdb, 0xe9, 0x20, 0xd3, 0x35, + 0xed, 0x26, 0x82, 0x1f, 0x51, 0x46, 0x61, 0xf6, 0x2e, 0x81, 0x49, 0xab, 0xe9, 0xd8, 0x35, 0xeb, + 0x69, 0xfe, 0x25, 0x71, 0xf1, 0xc1, 0xd2, 0x89, 0x44, 0xca, 0xec, 0x0f, 0x23, 0xf8, 0x57, 0x2b, + 0x83, 0xa9, 0xa6, 0xe9, 0xb6, 0x68, 0x30, 0xbd, 0x5c, 0xcf, 0x85, 0x4c, 0x91, 0x84, 0x4a, 0xfe, + 0x2f, 0x46, 0xf8, 0xb7, 0x56, 0x15, 0x85, 0x98, 0xef, 0x89, 0xca, 0x11, 0x49, 0x6c, 0x31, 0xfc, + 0x49, 0x90, 0x39, 0x96, 0x8e, 0x8b, 0xda, 0xe4, 0x4e, 0x78, 0xda, 0x43, 0x4c, 0x19, 0x61, 0x42, + 0xd2, 0x69, 0x3e, 0x29, 0xea, 0x00, 0x1a, 0xe3, 0x9e, 0xe6, 0x4b, 0x71, 0x91, 0xbe, 0x66, 0xbe, + 0x3d, 0x0f, 0x66, 0x69, 0xaf, 0xc6, 0xc4, 0x09, 0x9f, 0x4b, 0xae, 0x74, 0xf6, 0xee, 0x43, 0xfb, + 0xb0, 0x76, 0xf8, 0x31, 0xb9, 0x00, 0xd4, 0x4b, 0x41, 0xe0, 0x40, 0xfc, 0x98, 0x74, 0xff, 0xdd, + 0xe7, 0x6b, 0x9e, 0xf2, 0x34, 0xee, 0xfd, 0xf7, 0xf8, 0xe2, 0xd3, 0xc7, 0xe7, 0x97, 0x55, 0xa0, + 0x16, 0x5b, 0x2d, 0xd8, 0x3c, 0x3c, 0x14, 0xd7, 0x81, 0x69, 0xbf, 0xcd, 0x84, 0xb1, 0x1c, 0xf9, + 0xa4, 0xa4, 0x8b, 0x99, 0x81, 0x6c, 0x8a, 0xad, 0xb1, 0xef, 0x0e, 0xc4, 0x94, 0x9d, 0x3e, 0x28, + 0xbf, 0x3e, 0xc1, 0x1a, 0xcd, 0x82, 0xe3, 0x5c, 0x22, 0x47, 0x5e, 0x1e, 0x52, 0x41, 0x6e, 0x09, + 0x79, 0xcd, 0xed, 0x11, 0xb5, 0x99, 0x5d, 0xb7, 0xed, 0xb7, 0x99, 0x03, 0xf7, 0xd3, 0x0f, 0xb6, + 0x61, 0x7d, 0xb6, 0xe6, 0x09, 0x4b, 0xe3, 0x8e, 0xd2, 0x1c, 0x5b, 0x7a, 0xfa, 0xe0, 0xfc, 0xab, + 0x0a, 0xe6, 0x82, 0x15, 0x2e, 0x8a, 0xc9, 0x2f, 0x3d, 0xec, 0xd6, 0x2d, 0xe1, 0x67, 0x92, 0x85, + 0x3a, 0x0b, 0x64, 0x2a, 0xd6, 0x2c, 0xe5, 0x85, 0xc5, 0x04, 0x41, 0xd0, 0xe4, 0x18, 0x1c, 0xc3, + 0x0c, 0x5e, 0x05, 0x93, 0x84, 0xa1, 0x45, 0x6b, 0x8f, 0xb8, 0x00, 0x0a, 0x0b, 0x8d, 0x4f, 0x1f, + 0xc9, 0x42, 0xe3, 0x5d, 0xe2, 0x42, 0xa3, 0x64, 0xe4, 0x62, 0x7f, 0x9d, 0x31, 0xa1, 0x4f, 0x0c, + 0xfe, 0x7f, 0xe4, 0xcb, 0x8c, 0x09, 0x7c, 0x62, 0x06, 0x94, 0x9f, 0x3e, 0xa2, 0xaf, 0xf8, 0x0f, + 0xac, 0xb3, 0xf5, 0x37, 0x46, 0xe1, 0x7f, 0x3f, 0x01, 0xb2, 0xe7, 0xf1, 0xc3, 0xff, 0x0c, 0x6f, + 0xb6, 0x7a, 0xf1, 0x08, 0x82, 0x2c, 0x3c, 0x19, 0x64, 0x31, 0x7d, 0x36, 0x6d, 0xb9, 0x59, 0x6e, + 0x97, 0x16, 0x33, 0x62, 0x90, 0xff, 0xb4, 0xd3, 0x20, 0xdf, 0x75, 0x76, 0xdd, 0x26, 0x36, 0x9f, + 0xb1, 0xc6, 0xb0, 0xb7, 0xa4, 0xc1, 0x45, 0x05, 0xd2, 0xf3, 0xa3, 0x73, 0xfd, 0xe4, 0x2e, 0x3a, + 0x52, 0x85, 0x8b, 0x8e, 0x12, 0xec, 0x1f, 0x48, 0xf0, 0x96, 0xbe, 0x46, 0xfc, 0x35, 0xb9, 0xf3, + 0xaf, 0x35, 0x2a, 0xd8, 0x23, 0xc4, 0x72, 0x58, 0x75, 0x48, 0xea, 0xb8, 0x2d, 0x8a, 0x36, 0x88, + 0xe7, 0x3e, 0x56, 0xc7, 0x6d, 0x09, 0x1e, 0xc6, 0x72, 0xda, 0x3c, 0xcf, 0x9c, 0x4d, 0xef, 0x1f, + 0x25, 0xba, 0x59, 0x41, 0xe9, 0x0f, 0x85, 0xce, 0x08, 0x9d, 0x50, 0x87, 0x46, 0xe7, 0x88, 0xdc, + 0x50, 0xff, 0x50, 0x25, 0x11, 0x2d, 0x7d, 0x23, 0x47, 0xfe, 0xc2, 0xa2, 0xc4, 0x10, 0xe1, 0x31, + 0x58, 0x88, 0xe7, 0x3c, 0x3b, 0x7c, 0x88, 0x6f, 0x51, 0x74, 0x1c, 0xff, 0xe3, 0x0e, 0xf1, 0x2d, + 0xcb, 0x48, 0xfa, 0x40, 0xbe, 0x86, 0x5e, 0x10, 0x56, 0x6c, 0x7a, 0xd6, 0xde, 0x88, 0x5b, 0x9a, + 0x38, 0xbc, 0x24, 0x8c, 0xea, 0x7b, 0x40, 0x42, 0x94, 0xc3, 0x71, 0x47, 0xf5, 0x95, 0x63, 0x23, + 0x7d, 0x98, 0xfe, 0x2e, 0x8f, 0xa5, 0xc7, 0xd6, 0x66, 0x5e, 0xc7, 0x56, 0x03, 0xd0, 0xe1, 0xd1, + 0x3a, 0x07, 0x66, 0xb8, 0xa9, 0xbf, 0x7f, 0xf1, 0x8c, 0x90, 0x96, 0xf4, 0xc0, 0x7a, 0x20, 0xb2, + 0x91, 0x2f, 0x0c, 0x24, 0x58, 0xf0, 0x95, 0x61, 0x62, 0x2c, 0xf7, 0xba, 0xf9, 0x63, 0xd8, 0x98, + 0xb0, 0xfa, 0x3d, 0x1e, 0xab, 0xaa, 0x88, 0xd5, 0x1d, 0x32, 0x62, 0x92, 0x1b, 0xd3, 0xa4, 0xe6, + 0x8d, 0x6f, 0x0b, 0xe0, 0x32, 0x04, 0xb8, 0x9e, 0x3c, 0x34, 0x1f, 0xe9, 0x23, 0xf6, 0x1b, 0xb4, + 0x3b, 0xac, 0x51, 0x93, 0x7d, 0x34, 0xdd, 0x21, 0x9b, 0x0d, 0xa8, 0xc2, 0x6c, 0x20, 0xa1, 0xdf, + 0x7c, 0xe8, 0x0e, 0xea, 0x33, 0x37, 0x08, 0xa2, 0xec, 0x88, 0xfd, 0xe6, 0x07, 0x72, 0x90, 0x3e, + 0x38, 0xff, 0xa4, 0x02, 0xb0, 0xec, 0x3a, 0xbb, 0x9d, 0xaa, 0xdb, 0x42, 0x2e, 0xfc, 0xdb, 0x70, + 0x02, 0xf0, 0xc2, 0x11, 0x4c, 0x00, 0xd6, 0x01, 0xd8, 0x0a, 0x88, 0x33, 0x0d, 0x7f, 0x9c, 0x9c, + 0xb9, 0x1f, 0x32, 0x65, 0x70, 0x34, 0xc4, 0xab, 0x63, 0x7f, 0x42, 0xc4, 0x38, 0xae, 0xcf, 0x0a, + 0xc9, 0x8d, 0x72, 0x02, 0xf0, 0x8e, 0x00, 0xeb, 0xba, 0x80, 0xf5, 0xbd, 0x87, 0xe0, 0x24, 0x7d, + 0xcc, 0xff, 0x79, 0x02, 0x4c, 0xd3, 0xed, 0x3a, 0x2a, 0xd3, 0x7f, 0x08, 0x41, 0xff, 0xf5, 0x11, + 0x80, 0xbe, 0x01, 0x66, 0x9c, 0x90, 0x3a, 0xed, 0x53, 0xf9, 0x05, 0x98, 0x58, 0xd8, 0x39, 0xbe, + 0x0c, 0x81, 0x0c, 0xfc, 0x10, 0x8f, 0xbc, 0x21, 0x22, 0x7f, 0x57, 0x8c, 0xbc, 0x39, 0x8a, 0xa3, + 0x84, 0xfe, 0x9d, 0x01, 0xf4, 0x1b, 0x02, 0xf4, 0xc5, 0xc3, 0xb0, 0x32, 0x86, 0xb0, 0xf9, 0x2a, + 0xc8, 0x92, 0x53, 0x6e, 0xbf, 0x95, 0xe2, 0xfc, 0xfe, 0x0c, 0x98, 0x20, 0x4d, 0x36, 0x98, 0x77, + 0xf8, 0xaf, 0xf8, 0x8b, 0xb9, 0xe9, 0x21, 0x37, 0xf0, 0x58, 0xf0, 0x5f, 0x31, 0x0f, 0xbe, 0x77, + 0x71, 0xf7, 0x4c, 0x9e, 0x6e, 0x44, 0x06, 0x09, 0x43, 0x4f, 0x4a, 0x78, 0x89, 0x8f, 0xec, 0xdc, + 0xdb, 0x30, 0x93, 0x92, 0x01, 0x8c, 0xa4, 0x0f, 0xfc, 0x5f, 0x66, 0xc1, 0x19, 0xba, 0xaa, 0xb4, + 0xe4, 0x3a, 0x3b, 0x3d, 0xb7, 0x54, 0x59, 0x87, 0xd7, 0x85, 0x1b, 0xc1, 0x9c, 0x27, 0xf8, 0x55, + 0x33, 0x9d, 0xe8, 0x49, 0x85, 0x7f, 0xce, 0xfb, 0x54, 0x3c, 0x55, 0x44, 0x72, 0x21, 0x46, 0x80, + 0x51, 0xbc, 0x27, 0x5e, 0xa8, 0x97, 0x64, 0x94, 0x5b, 0xa4, 0x52, 0x87, 0x5a, 0xb3, 0x0c, 0x74, + 0x2a, 0x27, 0xa3, 0x53, 0xef, 0x0b, 0x74, 0xea, 0xa7, 0x04, 0x9d, 0x5a, 0x3e, 0xbc, 0x48, 0xd2, + 0xd7, 0xad, 0x97, 0x07, 0x1b, 0x43, 0xc1, 0xb6, 0xdd, 0x4e, 0x0a, 0x9b, 0x75, 0xbc, 0x3f, 0x52, + 0x56, 0xf0, 0x47, 0x12, 0xef, 0x95, 0x48, 0x30, 0x13, 0x16, 0xb9, 0x8e, 0xd0, 0xa5, 0x39, 0xa0, + 0x58, 0x3e, 0x77, 0x8a, 0xd5, 0x1a, 0x6a, 0xae, 0x1b, 0x5b, 0xd0, 0x18, 0xd6, 0x96, 0xe6, 0x40, + 0x7e, 0xc9, 0x6a, 0x7b, 0xc8, 0x85, 0x5f, 0x64, 0x33, 0xdd, 0x97, 0xa7, 0x38, 0x00, 0x2c, 0x82, + 0xfc, 0x26, 0x29, 0x8d, 0x99, 0xcc, 0xb7, 0xc8, 0xb5, 0x1e, 0xca, 0xa1, 0xc1, 0xfe, 0x4d, 0x1a, + 0x65, 0xaf, 0x87, 0xcc, 0xc8, 0xa6, 0xc8, 0x09, 0xa2, 0xec, 0x0d, 0x66, 0x61, 0x2c, 0x17, 0x4c, + 0xe5, 0x0d, 0xb4, 0x83, 0xc7, 0xf8, 0x4b, 0xe9, 0x21, 0x5c, 0x00, 0xaa, 0xd5, 0xea, 0x92, 0xce, + 0x71, 0xca, 0xc0, 0x8f, 0x49, 0x7d, 0x85, 0x7a, 0x45, 0x45, 0x59, 0x1e, 0xb7, 0xaf, 0x90, 0x14, + 0x17, 0xe9, 0x63, 0xf6, 0x5d, 0xe2, 0x28, 0xda, 0x69, 0x9b, 0x4d, 0x84, 0xb9, 0x4f, 0x0d, 0x35, + 0xda, 0x93, 0x65, 0xfd, 0x9e, 0x8c, 0x6b, 0xa7, 0xb9, 0x43, 0xb4, 0xd3, 0x61, 0x97, 0x21, 0x03, + 0x99, 0x93, 0x8a, 0x1f, 0xd9, 0x32, 0x64, 0x2c, 0x1b, 0x63, 0xb8, 0x3e, 0xd4, 0x3f, 0x10, 0x3b, + 0xd6, 0xd6, 0x3a, 0xec, 0x26, 0x0d, 0x13, 0xd6, 0xc8, 0x0e, 0xbf, 0x0e, 0xb3, 0x49, 0x13, 0xcd, + 0xc3, 0x18, 0xd0, 0x9a, 0x63, 0x68, 0x7d, 0x9a, 0x0d, 0xa3, 0x29, 0xef, 0x93, 0x76, 0x1d, 0xd7, + 0x4b, 0xb6, 0x4f, 0x8a, 0xb9, 0x33, 0xc8, 0x7f, 0x49, 0x0f, 0x5e, 0x89, 0xe7, 0xa3, 0x47, 0x35, + 0x7c, 0x26, 0x38, 0x78, 0x35, 0x88, 0x81, 0xf4, 0xe1, 0x7d, 0xf3, 0x11, 0x0d, 0x9e, 0xc3, 0x36, + 0x47, 0xd6, 0x06, 0x46, 0x36, 0x74, 0x0e, 0xd3, 0x1c, 0xa3, 0x79, 0x48, 0x1f, 0xaf, 0x6f, 0x72, + 0x03, 0xe7, 0x1b, 0xc6, 0x38, 0x70, 0xfa, 0x2d, 0x33, 0x37, 0x64, 0xcb, 0x1c, 0x76, 0xff, 0x87, + 0xc9, 0x7a, 0x74, 0x03, 0xe6, 0x30, 0xfb, 0x3f, 0x31, 0x4c, 0xa4, 0x8f, 0xf8, 0x1b, 0x55, 0x90, + 0xab, 0x8d, 0x7f, 0xbc, 0x1c, 0x76, 0x2e, 0x42, 0x64, 0x55, 0x1b, 0xd9, 0x70, 0x39, 0xcc, 0x5c, + 0x24, 0x92, 0x85, 0x31, 0x04, 0xd0, 0x3f, 0x0e, 0x66, 0xc8, 0x92, 0x88, 0xbf, 0xcd, 0xfa, 0x4d, + 0x36, 0x6a, 0xbe, 0x36, 0xc5, 0xb6, 0xfa, 0x14, 0x30, 0xe9, 0xef, 0xdf, 0xb1, 0x91, 0x73, 0x5e, + 0xae, 0x7d, 0xfa, 0x5c, 0x1a, 0xc1, 0xff, 0x87, 0x72, 0x86, 0x18, 0xf9, 0x5e, 0xed, 0xb0, 0xce, + 0x10, 0x47, 0xba, 0x5f, 0xfb, 0x67, 0xe1, 0x88, 0xfa, 0x9f, 0xd2, 0xc3, 0xbc, 0x77, 0x1f, 0x37, + 0xdb, 0x67, 0x1f, 0xf7, 0x23, 0x3c, 0x96, 0x35, 0x11, 0xcb, 0xbb, 0x65, 0x45, 0x38, 0xc2, 0xb1, + 0xf6, 0x5d, 0x01, 0x9c, 0xe7, 0x05, 0x38, 0x17, 0x0e, 0xc5, 0xcb, 0x18, 0x0e, 0x3e, 0x66, 0xc3, + 0x31, 0xf7, 0xa3, 0x29, 0xb6, 0xe3, 0x9e, 0x53, 0x15, 0xd9, 0x03, 0xa7, 0x2a, 0x84, 0x96, 0x9e, + 0x3b, 0x64, 0x4b, 0xff, 0x28, 0xaf, 0x1d, 0x75, 0x51, 0x3b, 0x9e, 0x2c, 0x8f, 0xc8, 0xe8, 0x46, + 0xe6, 0x77, 0x07, 0xea, 0x71, 0x41, 0x50, 0x8f, 0xd2, 0xe1, 0x98, 0x49, 0x5f, 0x3f, 0xfe, 0xc8, + 0x9f, 0xd0, 0x1e, 0x71, 0x7b, 0x1f, 0x76, 0xab, 0x58, 0x10, 0xe2, 0xc8, 0x46, 0xee, 0x61, 0xb6, + 0x8a, 0x07, 0x71, 0x32, 0x86, 0x98, 0x6a, 0xb3, 0x60, 0x9a, 0xf0, 0x74, 0xc1, 0x6a, 0x6d, 0x21, + 0x0f, 0xbe, 0x82, 0xfa, 0x28, 0xfa, 0x11, 0x2c, 0x47, 0x14, 0x66, 0x28, 0xea, 0xbc, 0x6b, 0x52, + 0x8f, 0x0e, 0xca, 0xe4, 0x3c, 0xc7, 0xe0, 0xb8, 0x23, 0x21, 0x0e, 0xe4, 0x20, 0x7d, 0xc8, 0x3e, + 0x44, 0xdd, 0x6d, 0x56, 0xcd, 0x7d, 0x67, 0xd7, 0x83, 0xcf, 0x1c, 0x41, 0x07, 0xbd, 0x00, 0xf2, + 0x6d, 0x42, 0x8d, 0x1d, 0xcb, 0x88, 0x9f, 0xee, 0x30, 0x11, 0xd0, 0xf2, 0x0d, 0xf6, 0x67, 0xd2, + 0xb3, 0x19, 0xa1, 0x1c, 0x29, 0x9d, 0x71, 0x9f, 0xcd, 0x18, 0x50, 0xfe, 0x58, 0xee, 0xca, 0x99, + 0xc4, 0xa5, 0x5b, 0x3b, 0x96, 0x37, 0xa2, 0x08, 0x0e, 0x6d, 0x4c, 0xcb, 0x8f, 0xe0, 0x40, 0x5e, + 0x92, 0x9e, 0x18, 0xe5, 0xa4, 0x82, 0x7f, 0x1f, 0xf7, 0x89, 0xd1, 0xf8, 0xe2, 0xd3, 0xc7, 0xe4, + 0x57, 0x69, 0xcb, 0x3a, 0x4f, 0x9d, 0x6f, 0x53, 0xf4, 0xeb, 0x1d, 0xba, 0xb1, 0x50, 0xd6, 0x8e, + 0xae, 0xb1, 0xf4, 0x2d, 0x3f, 0x7d, 0x60, 0xfe, 0xeb, 0x8f, 0x80, 0xdc, 0x22, 0xba, 0xb8, 0xbb, + 0x05, 0xef, 0x02, 0x93, 0x75, 0x17, 0xa1, 0xb2, 0xbd, 0xe9, 0x60, 0xe9, 0x7a, 0xf8, 0xd9, 0x87, + 0x84, 0xbd, 0x61, 0x3c, 0xb6, 0x91, 0xd9, 0x0a, 0xcf, 0x9f, 0xf9, 0xaf, 0xf0, 0xc5, 0x0a, 0xc8, + 0xd6, 0x3c, 0xd3, 0x83, 0x53, 0x01, 0xb6, 0xf0, 0x99, 0x3c, 0x16, 0x77, 0x89, 0x58, 0xdc, 0x28, + 0xc8, 0x82, 0x70, 0x30, 0x8f, 0xff, 0x8f, 0x00, 0x00, 0x82, 0xc9, 0x07, 0xba, 0x8e, 0x8d, 0x73, + 0xf8, 0x47, 0x20, 0xfd, 0x77, 0xf8, 0xb2, 0x40, 0xdc, 0xf7, 0x08, 0xe2, 0x7e, 0x8c, 0x5c, 0x11, + 0x63, 0x58, 0x69, 0x53, 0xc0, 0x14, 0x16, 0xed, 0x0a, 0x32, 0x5b, 0x5d, 0xf8, 0xc8, 0x50, 0xf9, + 0x23, 0xc4, 0x0c, 0xdf, 0x2f, 0x1d, 0x54, 0x93, 0xd6, 0x2a, 0x20, 0x1e, 0xed, 0xd1, 0xe1, 0x6f, + 0xfe, 0x2b, 0x62, 0x30, 0x92, 0x5b, 0x41, 0xd6, 0xb2, 0x37, 0x1d, 0xe6, 0x5f, 0x78, 0x75, 0x04, + 0x6d, 0xac, 0x13, 0x06, 0xc9, 0x28, 0x19, 0x71, 0x33, 0x9e, 0xad, 0xb1, 0x5c, 0x5e, 0x97, 0xc5, + 0xa5, 0xc3, 0xff, 0x73, 0xa0, 0xb0, 0x35, 0x0d, 0x64, 0x3b, 0xa6, 0xb7, 0xcd, 0x8a, 0x26, 0xcf, + 0xd8, 0x46, 0xde, 0xb5, 0x4d, 0xdb, 0xb1, 0xf7, 0x77, 0xac, 0xa7, 0x05, 0x77, 0xe4, 0x0a, 0x69, + 0x98, 0xf3, 0x2d, 0x64, 0x23, 0xd7, 0xf4, 0x50, 0x6d, 0x6f, 0x8b, 0xcc, 0xb1, 0x26, 0x0d, 0x3e, + 0x29, 0xb1, 0xfe, 0x63, 0x8e, 0xa3, 0xf5, 0x7f, 0xd3, 0x6a, 0x23, 0x12, 0xa9, 0x89, 0xe9, 0xbf, + 0xff, 0x9e, 0x48, 0xff, 0xfb, 0x14, 0x91, 0x3e, 0x1a, 0xdf, 0x53, 0xc0, 0x4c, 0x0d, 0x2b, 0x5c, + 0x6d, 0x77, 0x67, 0xc7, 0x74, 0xf7, 0xe1, 0xf5, 0x21, 0x2a, 0x9c, 0x6a, 0x66, 0x44, 0xbf, 0x94, + 0x3f, 0x94, 0xbe, 0x1e, 0x9a, 0x35, 0x6d, 0xae, 0x84, 0xc4, 0xed, 0xe0, 0xf1, 0x20, 0x87, 0xd5, + 0xdb, 0xf7, 0xb8, 0x8c, 0x6d, 0x08, 0x34, 0xa7, 0x64, 0x44, 0xab, 0x81, 0xbc, 0x8d, 0x21, 0x9a, + 0x86, 0x02, 0x8e, 0xd7, 0x3c, 0xb3, 0x79, 0x69, 0xd9, 0x71, 0x9d, 0x5d, 0xcf, 0xb2, 0x51, 0x17, + 0x3e, 0x22, 0x44, 0xc0, 0xd7, 0xff, 0x4c, 0xa8, 0xff, 0xf0, 0xdf, 0x32, 0xb2, 0xa3, 0x68, 0xd0, + 0xad, 0xf2, 0xe4, 0x23, 0x02, 0x54, 0xc9, 0x8d, 0x8b, 0x32, 0x14, 0xd3, 0x17, 0xda, 0x1b, 0x54, + 0x50, 0xd0, 0x1f, 0xec, 0x38, 0xae, 0xb7, 0xea, 0x34, 0xcd, 0x76, 0xd7, 0x73, 0x5c, 0x04, 0xab, + 0xb1, 0x52, 0xc3, 0x3d, 0x4c, 0xcb, 0x69, 0x86, 0x83, 0x23, 0x7b, 0xe3, 0xd5, 0x4e, 0x15, 0x75, + 0xfc, 0x43, 0xd2, 0xbb, 0x8c, 0x54, 0x2a, 0xbd, 0x1c, 0x45, 0xe8, 0x79, 0xbf, 0x2e, 0x2d, 0xd9, + 0x61, 0x09, 0xb9, 0x9d, 0x47, 0x29, 0xa6, 0xc6, 0xb0, 0x54, 0xae, 0x80, 0xd9, 0xda, 0xee, 0xc5, + 0x80, 0x48, 0x97, 0x37, 0x42, 0x5e, 0x29, 0x1d, 0xa5, 0x82, 0x29, 0x1e, 0x4f, 0x28, 0x42, 0xbe, + 0x37, 0x80, 0xd9, 0x2e, 0x9f, 0x8d, 0xe1, 0x2d, 0x26, 0x4a, 0x46, 0xa7, 0x18, 0x5c, 0x6a, 0xfa, + 0x02, 0x7c, 0xb7, 0x02, 0x66, 0xab, 0x1d, 0x64, 0xa3, 0x16, 0xf5, 0x82, 0x14, 0x04, 0xf8, 0xe2, + 0x84, 0x02, 0x14, 0x08, 0x45, 0x08, 0x30, 0xf4, 0x58, 0x5e, 0xf4, 0x85, 0x17, 0x26, 0x24, 0x12, + 0x5c, 0x5c, 0x69, 0xe9, 0x0b, 0xee, 0x0b, 0x0a, 0x98, 0x36, 0x76, 0xed, 0x75, 0xd7, 0xc1, 0xa3, + 0xb1, 0x0b, 0xef, 0x0e, 0x3b, 0x88, 0x5b, 0xc0, 0x89, 0xd6, 0xae, 0x4b, 0xd6, 0x9f, 0xca, 0x76, + 0x0d, 0x35, 0x1d, 0xbb, 0xd5, 0x25, 0xf5, 0xc8, 0x19, 0x07, 0x3f, 0xdc, 0x99, 0x7d, 0xe8, 0x6b, + 0x6a, 0x06, 0x3e, 0x57, 0x3a, 0xd4, 0x0d, 0xad, 0x3c, 0x57, 0xb4, 0x7c, 0x4f, 0x20, 0x19, 0xd0, + 0x66, 0x50, 0x09, 0xe9, 0x0b, 0xf7, 0xd3, 0x0a, 0xd0, 0x8a, 0xcd, 0xa6, 0xb3, 0x6b, 0x7b, 0x35, + 0xd4, 0x46, 0x4d, 0xaf, 0xee, 0x9a, 0x4d, 0xc4, 0xdb, 0xcf, 0x05, 0xa0, 0xb6, 0x2c, 0x97, 0xf5, + 0xc1, 0xf8, 0x91, 0xc9, 0xf1, 0xc5, 0xd2, 0x3b, 0x8e, 0xb4, 0x96, 0x07, 0x4b, 0x49, 0x20, 0x4e, + 0xb9, 0x7d, 0x45, 0xc9, 0x82, 0xd2, 0x97, 0xea, 0x47, 0x15, 0x30, 0xe5, 0xf7, 0xd8, 0x5b, 0x32, + 0xc2, 0xfc, 0xd5, 0x84, 0x93, 0x91, 0x80, 0x78, 0x02, 0x19, 0xbe, 0x3d, 0xc1, 0xac, 0x22, 0x8a, + 0x7e, 0x32, 0xd1, 0x15, 0x93, 0x8b, 0x0e, 0xbf, 0x56, 0xaa, 0x8d, 0xa5, 0xea, 0xea, 0xa2, 0x6e, + 0x14, 0x54, 0xf8, 0x45, 0x05, 0x64, 0xd7, 0x2d, 0x7b, 0x8b, 0x8f, 0xae, 0x74, 0x12, 0xdb, 0x91, + 0x2d, 0xf4, 0x20, 0x6b, 0xe9, 0xf4, 0x45, 0xbb, 0x0d, 0x9c, 0xb4, 0x77, 0x77, 0x2e, 0x22, 0xb7, + 0xba, 0x49, 0x46, 0xd9, 0x6e, 0xdd, 0xa9, 0x21, 0x9b, 0x1a, 0xa1, 0x39, 0xa3, 0xef, 0x37, 0xd1, + 0x04, 0x93, 0x98, 0x3c, 0x60, 0x4e, 0x22, 0x24, 0x1e, 0x30, 0xa5, 0x70, 0x4c, 0x25, 0x9a, 0x36, + 0xf4, 0x21, 0x9e, 0xbe, 0xa6, 0xfe, 0x71, 0x0e, 0x9c, 0x2a, 0xda, 0xfb, 0xc4, 0xa6, 0xa0, 0x1d, + 0x7c, 0x69, 0xdb, 0xb4, 0xb7, 0x10, 0x19, 0x20, 0x02, 0x89, 0xf3, 0xa1, 0xf6, 0x33, 0x62, 0xa8, + 0x7d, 0xcd, 0x00, 0x13, 0x8e, 0xdb, 0x42, 0xee, 0xc2, 0x3e, 0xe1, 0xa9, 0x77, 0xd9, 0x99, 0xb5, + 0xc9, 0x7e, 0x45, 0xcc, 0x33, 0xf2, 0xf3, 0x55, 0xfa, 0xbf, 0xe1, 0x13, 0x3a, 0x77, 0x0b, 0x98, + 0x60, 0x69, 0xda, 0x0c, 0x98, 0xac, 0x1a, 0x8b, 0xba, 0xd1, 0x28, 0x2f, 0x16, 0x8e, 0x69, 0x57, + 0x80, 0xe3, 0xe5, 0xba, 0x6e, 0x14, 0xeb, 0xe5, 0x6a, 0xa5, 0x41, 0xd2, 0x0b, 0x19, 0xf8, 0xec, + 0xac, 0xac, 0x67, 0x6f, 0x3c, 0x33, 0xfd, 0x60, 0x35, 0xc0, 0x44, 0x93, 0x66, 0x20, 0x43, 0xe8, + 0x74, 0xa2, 0xda, 0x31, 0x82, 0x34, 0xc1, 0xf0, 0x09, 0x69, 0x67, 0x01, 0xb8, 0xec, 0x3a, 0xf6, + 0x56, 0x78, 0xea, 0x70, 0xd2, 0xe0, 0x52, 0xe0, 0x33, 0x33, 0x20, 0x4f, 0xff, 0x21, 0x57, 0x8b, + 0x90, 0xa7, 0x50, 0xf0, 0xfe, 0x3b, 0xb6, 0x78, 0x89, 0xbc, 0xc2, 0x89, 0x16, 0x7b, 0xc5, 0xba, + 0x48, 0x65, 0x40, 0x2d, 0x61, 0x56, 0x95, 0x5b, 0x41, 0x9e, 0xfe, 0xcb, 0xbc, 0x0e, 0xa2, 0xc3, + 0x8b, 0xd2, 0x6c, 0x92, 0x7e, 0xca, 0xf2, 0x32, 0x4d, 0x5f, 0x9b, 0x3f, 0xa0, 0x80, 0xc9, 0x0a, + 0xf2, 0x4a, 0xdb, 0xa8, 0x79, 0x09, 0x3e, 0x5a, 0x5c, 0x00, 0x6d, 0x5b, 0xc8, 0xf6, 0xee, 0xdf, + 0x69, 0x07, 0x0b, 0xa0, 0x7e, 0x02, 0x7c, 0x0e, 0xdf, 0xf9, 0xde, 0x2b, 0xea, 0xcf, 0xcd, 0x7d, + 0xea, 0xea, 0x97, 0x10, 0xa1, 0x32, 0xa7, 0x41, 0xde, 0x45, 0xdd, 0xdd, 0xb6, 0xbf, 0x88, 0xc6, + 0xde, 0xe0, 0xab, 0x02, 0x71, 0x96, 0x04, 0x71, 0xde, 0x2a, 0x5f, 0xc4, 0x18, 0xe2, 0x95, 0x66, + 0xc1, 0x44, 0xd9, 0xb6, 0x3c, 0xcb, 0x6c, 0xc3, 0xe7, 0x66, 0xc1, 0x6c, 0x0d, 0x79, 0xeb, 0xa6, + 0x6b, 0xee, 0x20, 0x0f, 0xb9, 0x5d, 0xf8, 0x1d, 0xb1, 0x4f, 0xe8, 0xb4, 0x4d, 0x6f, 0xd3, 0x71, + 0x77, 0x7c, 0xd5, 0xf4, 0xdf, 0xb1, 0x6a, 0xee, 0x21, 0xb7, 0x1b, 0xf2, 0xe5, 0xbf, 0xe2, 0x2f, + 0x97, 0x1d, 0xf7, 0x12, 0x1e, 0x04, 0xd9, 0x34, 0x8d, 0xbd, 0x62, 0x7a, 0x6d, 0x67, 0x6b, 0x15, + 0xed, 0x21, 0x3f, 0x5c, 0x5a, 0xf0, 0x8e, 0xe7, 0x02, 0x2d, 0xa7, 0xe2, 0x78, 0xb8, 0xd3, 0x5e, + 0x75, 0xb6, 0x68, 0xbc, 0xd8, 0x49, 0x43, 0x4c, 0x0c, 0x73, 0x99, 0x7b, 0x88, 0xe4, 0xca, 0xf3, + 0xb9, 0x58, 0xa2, 0x36, 0x0f, 0xb4, 0xe0, 0xb7, 0x3a, 0x6a, 0xa3, 0x1d, 0xe4, 0xb9, 0xfb, 0x67, + 0x26, 0x48, 0xd6, 0x3e, 0x5f, 0xd8, 0x00, 0x2d, 0x3f, 0x59, 0x67, 0xd2, 0x9b, 0x17, 0x24, 0x77, + 0xa8, 0xc9, 0xba, 0x0c, 0xc5, 0xb1, 0x5c, 0x5f, 0xa5, 0x62, 0x6b, 0xe6, 0x25, 0x2a, 0xc8, 0x92, + 0xc1, 0xf3, 0x8d, 0x19, 0x61, 0x85, 0x69, 0x07, 0x75, 0xbb, 0xe6, 0x16, 0xf2, 0x57, 0x98, 0xd8, + 0xab, 0x76, 0x07, 0xc8, 0xb5, 0x09, 0xa6, 0x74, 0x70, 0xb8, 0x5e, 0xa8, 0x19, 0x36, 0x30, 0x30, + 0xad, 0x60, 0x24, 0x20, 0x70, 0x1b, 0xf4, 0x8f, 0x73, 0x4f, 0x01, 0x39, 0x0a, 0xff, 0x14, 0xc8, + 0x2d, 0xea, 0x0b, 0x1b, 0xcb, 0x85, 0x63, 0xf8, 0xd1, 0xe7, 0x6f, 0x0a, 0xe4, 0x96, 0x8a, 0xf5, + 0xe2, 0x6a, 0x41, 0xc1, 0xf5, 0x28, 0x57, 0x96, 0xaa, 0x05, 0x15, 0x27, 0xae, 0x17, 0x2b, 0xe5, + 0x52, 0x21, 0xab, 0x4d, 0x83, 0x89, 0x0b, 0x45, 0xa3, 0x52, 0xae, 0x2c, 0x17, 0x72, 0xf0, 0xef, + 0x78, 0xfc, 0xee, 0x14, 0xf1, 0xbb, 0x21, 0x8a, 0xa7, 0x7e, 0x90, 0xfd, 0x66, 0x00, 0xd9, 0xdd, + 0x02, 0x64, 0x3f, 0x22, 0x43, 0x64, 0x0c, 0x28, 0x29, 0x60, 0x62, 0xdd, 0x75, 0x9a, 0xa8, 0xdb, + 0x85, 0xbf, 0xa6, 0x80, 0x7c, 0xc9, 0xb4, 0x9b, 0xa8, 0x0d, 0xaf, 0x0a, 0xa1, 0xa2, 0xae, 0xa2, + 0x99, 0xe0, 0xb4, 0xd8, 0x3f, 0x65, 0x64, 0x7b, 0x3f, 0x46, 0x77, 0x9e, 0xd2, 0x8c, 0x90, 0x8f, + 0x5c, 0x2f, 0x17, 0x4b, 0x2a, 0x7d, 0x29, 0x7d, 0x27, 0x03, 0x4e, 0x2e, 0x23, 0x1b, 0xb9, 0x56, + 0x93, 0x32, 0xef, 0xd7, 0xff, 0x6e, 0xb1, 0xfe, 0x8f, 0x16, 0x98, 0xee, 0xf7, 0x87, 0x58, 0xf9, + 0x97, 0x07, 0x95, 0xbf, 0x57, 0xa8, 0xfc, 0x2d, 0x92, 0x74, 0xc6, 0x70, 0x57, 0xf5, 0x14, 0x98, + 0xa9, 0x38, 0x9e, 0xb5, 0x69, 0x35, 0xa9, 0x5f, 0xd1, 0x6f, 0xa8, 0x20, 0xbb, 0x6a, 0x75, 0x3d, + 0x58, 0x0c, 0x55, 0xe4, 0x3a, 0x30, 0x6d, 0xd9, 0xcd, 0xf6, 0x6e, 0x0b, 0x19, 0xc8, 0xa4, 0xba, + 0x32, 0x69, 0xf0, 0x49, 0xe1, 0x76, 0x2d, 0x66, 0x4b, 0xf5, 0xb7, 0x6b, 0x3f, 0x21, 0x3d, 0xb5, + 0xe6, 0x59, 0x20, 0x41, 0x06, 0x23, 0xc6, 0xd2, 0x22, 0x98, 0xb5, 0xb9, 0xac, 0xbe, 0x11, 0xd6, + 0x1b, 0x24, 0x9e, 0x27, 0x67, 0x88, 0x7f, 0xc0, 0xf7, 0x4a, 0xcd, 0xc4, 0x07, 0x31, 0x94, 0x0c, + 0x99, 0xa5, 0x21, 0x26, 0x3e, 0x1a, 0x98, 0x2b, 0x57, 0xea, 0xba, 0x51, 0x29, 0xae, 0xb2, 0x2c, + 0x2a, 0xfc, 0x9e, 0x02, 0x72, 0x06, 0xea, 0xb4, 0xf7, 0xf9, 0x28, 0xc0, 0xcc, 0xf9, 0x37, 0x13, + 0x38, 0xff, 0x6a, 0x4b, 0x00, 0x98, 0x4d, 0x5c, 0x30, 0xb9, 0xee, 0x48, 0xe9, 0x1b, 0x9b, 0x52, + 0xa8, 0x60, 0x31, 0xc8, 0x6d, 0x70, 0x7f, 0xc2, 0xe7, 0x49, 0xef, 0x06, 0x08, 0xd4, 0x08, 0x87, + 0x11, 0xdd, 0xc1, 0xfb, 0xa4, 0x16, 0xf0, 0x07, 0x92, 0x3b, 0x1a, 0xf1, 0x7f, 0x49, 0x01, 0xd9, + 0x3a, 0xea, 0x0a, 0xfb, 0xad, 0x7f, 0x32, 0x9c, 0x8e, 0x63, 0x32, 0x11, 0x3a, 0x7e, 0x0f, 0x98, + 0xe1, 0x35, 0x96, 0x6d, 0x7f, 0xc7, 0xaa, 0xb8, 0xf0, 0xc3, 0x30, 0x1a, 0xde, 0x87, 0x9d, 0xa3, + 0x11, 0xf1, 0xc7, 0x1e, 0x03, 0xc0, 0x1a, 0xc2, 0x53, 0xf3, 0xee, 0xb6, 0xd5, 0x81, 0x7f, 0xaf, + 0x82, 0xa9, 0x65, 0xe4, 0xd5, 0x3c, 0xd3, 0xdb, 0xed, 0xf6, 0x6c, 0x61, 0xd9, 0x4e, 0xc9, 0x6c, + 0x6e, 0x23, 0xd6, 0x1d, 0xf9, 0xaf, 0xf0, 0x9d, 0xaa, 0xac, 0x8f, 0x48, 0x58, 0xce, 0x7c, 0x50, + 0x46, 0x04, 0x26, 0x8f, 0x05, 0xd9, 0x96, 0xe9, 0x99, 0x0c, 0x8b, 0xab, 0x7a, 0xb0, 0x08, 0x09, + 0x19, 0x24, 0x1b, 0xfc, 0x6d, 0x45, 0xc6, 0x49, 0x44, 0xa2, 0xfc, 0x64, 0x20, 0xbc, 0x37, 0x33, + 0x04, 0x0a, 0x27, 0xc0, 0x6c, 0xa5, 0x5a, 0x6f, 0xac, 0x56, 0x97, 0x97, 0x75, 0x9c, 0x5a, 0x50, + 0xb5, 0xd3, 0x40, 0x5b, 0x2f, 0xde, 0xbf, 0xa6, 0x57, 0xea, 0x8d, 0x4a, 0x75, 0x51, 0x67, 0x7f, + 0x66, 0xb5, 0xe3, 0x60, 0xba, 0x54, 0x2c, 0xad, 0xf8, 0x09, 0x39, 0xed, 0x0c, 0x38, 0xb9, 0xa6, + 0xaf, 0x2d, 0xe8, 0x46, 0x6d, 0xa5, 0xbc, 0xde, 0xc0, 0x64, 0x96, 0xaa, 0x1b, 0x95, 0xc5, 0x42, + 0x5e, 0x83, 0xe0, 0x34, 0xf7, 0xe5, 0x82, 0x51, 0xad, 0x2c, 0x37, 0x6a, 0xf5, 0x62, 0x5d, 0x2f, + 0x4c, 0xe0, 0x49, 0x7b, 0xa9, 0x58, 0x21, 0xd9, 0x4b, 0xd5, 0x4a, 0x45, 0x2f, 0xd5, 0x0b, 0x93, + 0xf0, 0xdf, 0xb2, 0x60, 0xba, 0xdc, 0xad, 0x98, 0x3b, 0xe8, 0xbc, 0xd9, 0xb6, 0x5a, 0xf0, 0xb9, + 0x9c, 0x35, 0x79, 0x03, 0x98, 0x75, 0xe9, 0x23, 0x6a, 0xd5, 0x2d, 0x44, 0xd1, 0x9c, 0x35, 0xc4, + 0x44, 0x3c, 0xcf, 0xb2, 0x09, 0x01, 0x7f, 0x9e, 0x45, 0xdf, 0xb4, 0x05, 0x00, 0xe8, 0x53, 0x3d, + 0xbc, 0x78, 0xf3, 0x5c, 0x6f, 0x6b, 0x32, 0x77, 0x50, 0x17, 0xb9, 0x7b, 0x56, 0x13, 0xf9, 0x39, + 0x0d, 0xee, 0x2f, 0xf8, 0x65, 0x55, 0x76, 0xcf, 0x88, 0x03, 0x95, 0xab, 0x4e, 0x44, 0x6f, 0xf8, + 0x0b, 0xaa, 0xcc, 0x8e, 0x8f, 0x14, 0xc9, 0x64, 0x9a, 0xf2, 0x02, 0x65, 0xb8, 0xa5, 0xb8, 0x7a, + 0xb5, 0xda, 0xa8, 0xad, 0x54, 0x8d, 0x7a, 0x41, 0xd5, 0x66, 0xc0, 0x24, 0x7e, 0x5d, 0xad, 0x56, + 0x96, 0x0b, 0x59, 0xed, 0x14, 0x38, 0xb1, 0x52, 0xac, 0x35, 0xca, 0x95, 0xf3, 0xc5, 0xd5, 0xf2, + 0x62, 0xa3, 0xb4, 0x52, 0x34, 0x6a, 0x85, 0x9c, 0x76, 0x15, 0x38, 0x55, 0x2f, 0xeb, 0x46, 0x63, + 0x49, 0x2f, 0xd6, 0x37, 0x0c, 0xbd, 0xd6, 0xa8, 0x54, 0x1b, 0x95, 0xe2, 0x9a, 0x5e, 0xc8, 0xe3, + 0xe6, 0x4f, 0x3e, 0x85, 0x6a, 0x33, 0x71, 0x50, 0x19, 0x27, 0x23, 0x94, 0x71, 0xaa, 0x57, 0x19, + 0x01, 0xaf, 0x56, 0x86, 0x5e, 0xd3, 0x8d, 0xf3, 0x7a, 0x61, 0xba, 0x9f, 0xae, 0xcd, 0x68, 0x27, + 0x41, 0x01, 0xf3, 0xd0, 0x28, 0xd7, 0xfc, 0x9c, 0x8b, 0x85, 0x59, 0xf8, 0xd1, 0x3c, 0x38, 0x6d, + 0xa0, 0x2d, 0xab, 0xeb, 0x21, 0x77, 0xdd, 0xdc, 0xdf, 0x41, 0xb6, 0xe7, 0x77, 0xf2, 0xff, 0x2b, + 0xb1, 0x32, 0xae, 0x81, 0xd9, 0x0e, 0xa5, 0xb1, 0x86, 0xbc, 0x6d, 0xa7, 0xc5, 0x46, 0xe1, 0x47, + 0x47, 0xf6, 0x1c, 0xf3, 0xeb, 0x7c, 0x76, 0x43, 0xfc, 0x9b, 0xd3, 0x6d, 0x35, 0x46, 0xb7, 0xb3, + 0xc3, 0xe8, 0xb6, 0x76, 0x0d, 0x98, 0xda, 0xed, 0x22, 0x57, 0xdf, 0x31, 0xad, 0xb6, 0x7f, 0x71, + 0x62, 0x90, 0x00, 0xdf, 0x96, 0x95, 0x3d, 0x85, 0xc0, 0xd5, 0xa5, 0xbf, 0x18, 0x23, 0xfa, 0xd6, + 0xb3, 0x00, 0xb0, 0xca, 0x6e, 0xb8, 0x6d, 0xa6, 0xac, 0x5c, 0x0a, 0xe6, 0xef, 0xa2, 0xd5, 0x6e, + 0x5b, 0xf6, 0x56, 0xb0, 0x97, 0x1b, 0x26, 0xc0, 0x17, 0xa8, 0x32, 0xa7, 0x12, 0x92, 0xf2, 0x96, + 0xac, 0x35, 0x3d, 0x4f, 0x19, 0x73, 0xbf, 0x7b, 0xb0, 0xe9, 0xe4, 0xb5, 0x02, 0x98, 0x21, 0x69, + 0xac, 0x05, 0x16, 0x26, 0x70, 0x1f, 0xec, 0x93, 0x5b, 0xd3, 0xeb, 0x2b, 0xd5, 0xc5, 0xe0, 0xdb, + 0x24, 0x26, 0x89, 0x99, 0x29, 0x56, 0xee, 0x27, 0xad, 0x71, 0x4a, 0x7b, 0x04, 0xb8, 0x8a, 0xeb, + 0xb0, 0x8b, 0xab, 0x86, 0x5e, 0x5c, 0xbc, 0xbf, 0xa1, 0x3f, 0xb5, 0x5c, 0xab, 0xd7, 0xc4, 0xc6, + 0xe5, 0xb7, 0xa3, 0x69, 0xcc, 0xaf, 0xbe, 0x56, 0x2c, 0xaf, 0xb2, 0xfe, 0x7d, 0xa9, 0x6a, 0xac, + 0x15, 0xeb, 0x85, 0x19, 0xf8, 0x12, 0x15, 0x14, 0x96, 0x91, 0xb7, 0xee, 0xb8, 0x9e, 0xd9, 0x5e, + 0xb5, 0xec, 0x4b, 0x1b, 0x6e, 0x9b, 0xb7, 0x99, 0xfe, 0x55, 0x3a, 0xf4, 0x82, 0x38, 0x44, 0x0a, + 0x04, 0xa3, 0x77, 0x39, 0x3b, 0x24, 0x5b, 0xa8, 0x4c, 0x61, 0x02, 0x7c, 0xba, 0x22, 0xb3, 0x84, + 0x29, 0x5f, 0x6a, 0x32, 0x3d, 0x79, 0xc6, 0xb8, 0xc7, 0xe7, 0x3e, 0xa8, 0xe5, 0xe1, 0x43, 0x59, + 0x30, 0xb9, 0x64, 0xd9, 0x66, 0xdb, 0x7a, 0x9a, 0x10, 0x93, 0x32, 0xec, 0x63, 0x32, 0x31, 0x7d, + 0x8c, 0x32, 0xd4, 0xf8, 0xf9, 0x2b, 0xaa, 0xec, 0x7e, 0x36, 0x27, 0x7b, 0x9f, 0xc9, 0x88, 0xc1, + 0xf3, 0xf7, 0x15, 0x99, 0x1d, 0xeb, 0xc1, 0xf4, 0x92, 0x61, 0xf8, 0xf1, 0x1f, 0x0c, 0x1b, 0xab, + 0xa7, 0x7d, 0x4f, 0xf6, 0x53, 0x85, 0x29, 0xf8, 0x17, 0x2a, 0x80, 0xcb, 0xc8, 0x3b, 0x8f, 0xdc, + 0x60, 0x2a, 0x40, 0x7a, 0x7d, 0x66, 0x6f, 0x73, 0x4d, 0xf6, 0x8d, 0x3c, 0x80, 0x17, 0x44, 0x00, + 0x8b, 0x31, 0x8d, 0x27, 0x82, 0x74, 0x44, 0xe3, 0x2d, 0x83, 0x7c, 0x97, 0x7c, 0x67, 0x6a, 0xf6, + 0xf8, 0xe8, 0xe1, 0x92, 0x10, 0xe3, 0xa9, 0x53, 0xc2, 0x06, 0x23, 0x00, 0xbf, 0x1b, 0x4c, 0x82, + 0x7e, 0x52, 0xd0, 0x8e, 0xa5, 0x43, 0x33, 0x9b, 0x4c, 0x5f, 0xdc, 0x74, 0xd5, 0xa5, 0x9f, 0x7d, + 0x03, 0x7f, 0x3f, 0x07, 0x4e, 0xf6, 0xab, 0x0e, 0xfc, 0x9d, 0x8c, 0xb0, 0x6b, 0x8a, 0xc8, 0x90, + 0x9f, 0x61, 0x9b, 0x42, 0xf8, 0x45, 0x7b, 0x02, 0x38, 0xc5, 0x1c, 0x6a, 0x2e, 0xa2, 0xba, 0x53, + 0x41, 0x97, 0xbb, 0x6d, 0xe4, 0x79, 0xc8, 0x25, 0x55, 0x9b, 0x34, 0xfa, 0x7f, 0xd4, 0x9e, 0x08, + 0xae, 0xb4, 0xec, 0xae, 0xd5, 0x42, 0x6e, 0xdd, 0xea, 0x74, 0x8b, 0x76, 0xab, 0xbe, 0xeb, 0x39, + 0xae, 0x65, 0xb2, 0xeb, 0x01, 0x27, 0x8d, 0xa8, 0xcf, 0xda, 0xcd, 0xa0, 0x60, 0x75, 0xab, 0xf6, + 0x45, 0xc7, 0x74, 0x5b, 0x96, 0xbd, 0xb5, 0x6a, 0x75, 0x3d, 0xe6, 0xd5, 0x79, 0x20, 0x1d, 0xfe, + 0x83, 0x2a, 0x7b, 0x40, 0x6a, 0x00, 0xac, 0x11, 0x1d, 0xca, 0x73, 0x54, 0x99, 0x23, 0x4f, 0xc9, + 0x68, 0x27, 0x53, 0x96, 0x67, 0x8f, 0xdb, 0x90, 0xe8, 0x3f, 0x82, 0x93, 0xae, 0x85, 0xa6, 0xfb, + 0x86, 0xc0, 0x79, 0xdd, 0x28, 0x2f, 0x95, 0x75, 0x6c, 0x56, 0x9c, 0x02, 0x27, 0xc2, 0x6f, 0x8b, + 0xf7, 0x37, 0x6a, 0x7a, 0xa5, 0x5e, 0x98, 0xc4, 0xfd, 0x14, 0x4d, 0x5e, 0x2a, 0x96, 0x57, 0xf5, + 0xc5, 0x46, 0xbd, 0x8a, 0xbf, 0x2c, 0x0e, 0x67, 0x5a, 0xc0, 0x67, 0x66, 0xc1, 0x71, 0x22, 0xdb, + 0x7d, 0x22, 0x55, 0x2c, 0x94, 0x1e, 0xff, 0xc9, 0x00, 0xa0, 0x29, 0x2a, 0x5e, 0xf8, 0x29, 0xe9, + 0xdb, 0x0f, 0x39, 0x08, 0x7b, 0xca, 0x88, 0xd0, 0x8c, 0xef, 0x28, 0x32, 0x51, 0x07, 0xa4, 0xc9, + 0x26, 0x53, 0x8a, 0x7f, 0x19, 0xf7, 0x88, 0x13, 0x0d, 0x3e, 0xb1, 0x32, 0x4b, 0xe4, 0xe7, 0xa7, + 0xae, 0x97, 0x0d, 0xa2, 0x0e, 0x73, 0x00, 0x90, 0x14, 0xa2, 0x41, 0x54, 0x0f, 0xfa, 0x8e, 0x57, + 0x51, 0x7a, 0x50, 0x2c, 0xd5, 0xcb, 0xe7, 0xf5, 0x28, 0x3d, 0xf8, 0xa4, 0x0a, 0x26, 0x97, 0x91, + 0x87, 0xe7, 0x54, 0x5d, 0xf8, 0x24, 0x89, 0xf5, 0x1f, 0x6c, 0xc6, 0x90, 0x6b, 0xdf, 0x83, 0x65, + 0x00, 0xfa, 0x06, 0x9f, 0x35, 0x8c, 0x09, 0xe2, 0x17, 0x1d, 0x31, 0x5e, 0xfd, 0x38, 0xc8, 0x79, + 0xf8, 0x33, 0x5b, 0x86, 0x7e, 0x64, 0xe4, 0x70, 0x85, 0x89, 0x2c, 0x9a, 0x9e, 0x69, 0xd0, 0xfc, + 0xdc, 0xe8, 0x24, 0x69, 0xbb, 0x44, 0x30, 0xf2, 0x83, 0x68, 0x7f, 0xfe, 0x9d, 0x0a, 0x4e, 0xd1, + 0xf6, 0x51, 0xec, 0x74, 0x6a, 0x9e, 0xe3, 0x22, 0x03, 0x35, 0x91, 0xd5, 0xf1, 0x7a, 0xd6, 0xf7, + 0x5c, 0x9a, 0xea, 0x6f, 0x20, 0xb2, 0x57, 0xf8, 0x3a, 0x55, 0x36, 0xae, 0xee, 0x81, 0xf6, 0xd8, + 0x53, 0x5e, 0x44, 0x63, 0xff, 0x88, 0x22, 0x13, 0x29, 0x37, 0x21, 0xf1, 0x64, 0x40, 0x7d, 0xf0, + 0x08, 0x80, 0xf2, 0x57, 0x6e, 0x0c, 0xbd, 0xa4, 0x97, 0xd7, 0xf1, 0x20, 0x70, 0x2d, 0xb8, 0x7a, + 0x7d, 0xc3, 0x28, 0xad, 0x14, 0x6b, 0x7a, 0xc3, 0xd0, 0x97, 0xcb, 0xb5, 0x3a, 0x73, 0xb4, 0xa1, + 0x7f, 0x4d, 0x68, 0xd7, 0x80, 0x33, 0xb5, 0x8d, 0x85, 0x5a, 0xc9, 0x28, 0xaf, 0x93, 0x74, 0x43, + 0xaf, 0xe8, 0x17, 0xd8, 0xd7, 0x49, 0xf8, 0xfe, 0x02, 0x98, 0xc6, 0x13, 0x80, 0x1a, 0x9d, 0x17, + 0xc0, 0x6f, 0x64, 0xc1, 0xb4, 0x81, 0xba, 0x4e, 0x7b, 0x8f, 0xcc, 0x11, 0xc6, 0x35, 0xf5, 0xf8, + 0xb6, 0x2a, 0x7b, 0x26, 0x97, 0x63, 0x76, 0x9e, 0x63, 0x34, 0x7a, 0xa2, 0x69, 0xee, 0x99, 0x56, + 0xdb, 0xbc, 0xc8, 0xba, 0x9a, 0x49, 0x23, 0x4c, 0xd0, 0xe6, 0x81, 0xe6, 0x5c, 0xb6, 0x91, 0x5b, + 0x6b, 0x5e, 0xd6, 0xbd, 0xed, 0x62, 0xab, 0xe5, 0xa2, 0x6e, 0x97, 0xad, 0x5e, 0xf4, 0xf9, 0xa2, + 0xdd, 0x04, 0x8e, 0x93, 0x54, 0x2e, 0x33, 0x75, 0x7a, 0xe8, 0x4d, 0x0e, 0x72, 0x16, 0xed, 0x7d, + 0x3f, 0x67, 0x8e, 0xcb, 0x19, 0x26, 0xf3, 0x2e, 0xf0, 0x79, 0xf1, 0xe4, 0xc5, 0x75, 0x60, 0xda, + 0x36, 0x77, 0x90, 0xfe, 0x60, 0xc7, 0x72, 0x51, 0x97, 0x38, 0x3b, 0xa8, 0x06, 0x9f, 0x04, 0x7f, + 0x5f, 0xea, 0x0c, 0xb1, 0x9c, 0xc4, 0x92, 0xe9, 0xfe, 0xf2, 0x10, 0xaa, 0xdf, 0xa7, 0x9f, 0x51, + 0xe1, 0xfb, 0x55, 0x30, 0xc3, 0x98, 0x2a, 0xda, 0xfb, 0xe5, 0x16, 0xbc, 0x56, 0x30, 0x7e, 0x4d, + 0x9c, 0xe6, 0x1b, 0xbf, 0xe4, 0x05, 0xfe, 0xa2, 0x2a, 0xeb, 0xc2, 0xda, 0xa7, 0xe2, 0xa4, 0x8c, + 0x68, 0x67, 0xc0, 0x4d, 0x67, 0x97, 0x39, 0x1f, 0x4e, 0x1a, 0xf4, 0x25, 0xcd, 0x45, 0x3d, 0xf8, + 0x07, 0x52, 0x0e, 0xb2, 0x92, 0xd5, 0x38, 0x22, 0x00, 0x3f, 0xa6, 0x82, 0x39, 0xc6, 0x55, 0x8d, + 0x9d, 0xdd, 0x90, 0x3a, 0xc4, 0xf4, 0x4b, 0xd2, 0x86, 0x60, 0x9f, 0xfa, 0xb3, 0x92, 0x1e, 0x36, + 0x40, 0x7e, 0x48, 0x2a, 0xe0, 0x95, 0x74, 0x45, 0x8e, 0x08, 0xca, 0xb7, 0x67, 0xc1, 0xf4, 0x46, + 0x17, 0xb9, 0xcc, 0x17, 0x1b, 0xbe, 0x2a, 0x0b, 0xd4, 0x65, 0x24, 0x6c, 0xa4, 0x3e, 0x5f, 0xda, + 0x6b, 0x93, 0xaf, 0x2c, 0x47, 0x14, 0xdb, 0x48, 0x11, 0xb0, 0xdd, 0x08, 0xe6, 0xa8, 0x48, 0x8b, + 0x9e, 0x87, 0x8d, 0x44, 0xdf, 0x43, 0xb2, 0x27, 0x75, 0x14, 0x5b, 0x45, 0xa4, 0x2c, 0x9c, 0xa5, + 0x84, 0x79, 0x5a, 0x45, 0x9b, 0x74, 0x3e, 0x9b, 0x35, 0x7a, 0x52, 0xc9, 0x95, 0xf4, 0x1d, 0x44, + 0xcf, 0x24, 0x70, 0x99, 0x73, 0x24, 0x73, 0xbf, 0x4f, 0xf0, 0x1b, 0x52, 0xfe, 0x97, 0xf2, 0xd2, + 0x49, 0xa6, 0x0b, 0x9d, 0xd1, 0x98, 0x24, 0x27, 0x41, 0x01, 0xe7, 0x20, 0xfb, 0x2f, 0x86, 0x5e, + 0xab, 0xae, 0x9e, 0xd7, 0xfb, 0x2f, 0x63, 0xe4, 0xe0, 0xb3, 0x55, 0x30, 0xb5, 0xe0, 0x3a, 0x66, + 0xab, 0x69, 0x76, 0x3d, 0xf8, 0x5d, 0x05, 0xcc, 0xac, 0x9b, 0xfb, 0x6d, 0xc7, 0x6c, 0x11, 0x9f, + 0xed, 0x9e, 0xbe, 0xa0, 0x43, 0x3f, 0xf9, 0x7d, 0x01, 0x7b, 0x15, 0x0f, 0x7b, 0x05, 0xc7, 0xb1, + 0x32, 0x32, 0x97, 0x24, 0x06, 0xdb, 0x7c, 0x4a, 0xbf, 0x00, 0x94, 0x3e, 0x5f, 0xf3, 0x3c, 0x4f, + 0x11, 0x16, 0xe5, 0xfb, 0xe5, 0x42, 0x4a, 0xca, 0x90, 0x3c, 0x9a, 0x5d, 0xf9, 0x87, 0x26, 0x41, + 0x7e, 0x11, 0x11, 0x2b, 0xee, 0xbf, 0x29, 0x60, 0xa2, 0x86, 0x3c, 0x62, 0xc1, 0xdd, 0x21, 0x78, + 0x7f, 0xb6, 0x48, 0x86, 0xd0, 0x31, 0xd9, 0x7f, 0xc7, 0x93, 0x75, 0xee, 0x0c, 0x2d, 0x79, 0x4e, 0xe0, 0x65, 0x46, 0xcb, 0x9d, 0x67, 0x65, 0x1e, 0xca, 0xcb, 0x2c, 0x96, 0x54, 0xfa, 0xbe, 0x56, - 0xef, 0xce, 0x32, 0xd7, 0x2a, 0xae, 0xd7, 0x7b, 0x15, 0xaf, 0x9f, 0xb1, 0xde, 0x66, 0x8c, 0xf9, - 0x18, 0xe7, 0xa8, 0xdb, 0xc1, 0x04, 0x95, 0xb9, 0x3f, 0x1f, 0xed, 0xf5, 0x53, 0xa0, 0x24, 0xc8, - 0x81, 0x40, 0x3f, 0xa7, 0xa4, 0x8b, 0x5a, 0x74, 0xe1, 0x63, 0x39, 0x18, 0x3b, 0x53, 0x45, 0xde, - 0x65, 0xdb, 0xb9, 0x54, 0xf7, 0x0c, 0x0f, 0xc1, 0x7f, 0xce, 0x02, 0xa5, 0x8e, 0x3c, 0xfe, 0x48, - 0x7e, 0x15, 0x9c, 0xa0, 0x15, 0x62, 0x19, 0x49, 0xff, 0x4d, 0x2b, 0x72, 0x5d, 0x5f, 0x21, 0x70, - 0xf9, 0xf4, 0x83, 0xbf, 0xc2, 0x5f, 0xed, 0x1b, 0x89, 0x24, 0xdb, 0x67, 0xd2, 0xc0, 0x24, 0xc3, - 0x33, 0x88, 0x15, 0x2c, 0x42, 0x4f, 0x7f, 0x4f, 0xca, 0xac, 0x96, 0xa3, 0x79, 0x34, 0x5d, 0xc1, - 0x2b, 0xae, 0x02, 0xb9, 0xf2, 0xb6, 0xe1, 0xc1, 0x77, 0x29, 0x00, 0x94, 0xda, 0xed, 0x35, 0xea, - 0xd7, 0xcb, 0x3b, 0xa4, 0x9d, 0x03, 0x33, 0xad, 0x6d, 0x23, 0x0c, 0xb8, 0x4f, 0xfb, 0x03, 0x21, - 0x4d, 0x7d, 0x42, 0xe8, 0x20, 0x4c, 0xa5, 0x0a, 0x7b, 0x60, 0xc2, 0x65, 0x30, 0xda, 0x81, 0xf3, - 0xb0, 0x18, 0x9f, 0x2d, 0xf6, 0x90, 0x39, 0xfe, 0x7d, 0x3e, 0x64, 0x2f, 0x7a, 0x0e, 0xc7, 0x48, - 0x07, 0xfe, 0xf3, 0x61, 0x42, 0xc2, 0xe3, 0x87, 0x72, 0xa7, 0xcc, 0xe3, 0xf9, 0x1a, 0x4b, 0x3c, - 0x45, 0x55, 0x6b, 0x9b, 0xbe, 0x68, 0x59, 0x14, 0x17, 0xf8, 0x82, 0x4c, 0x32, 0xf8, 0xe2, 0x05, - 0x77, 0x2f, 0x98, 0x45, 0x6d, 0xd3, 0x43, 0x7e, 0x2d, 0x99, 0x00, 0xe3, 0x20, 0x16, 0x7f, 0x80, - 0xcf, 0x96, 0x8e, 0x04, 0x44, 0x04, 0x7a, 0xb0, 0x46, 0x11, 0xed, 0x4f, 0x2e, 0xb6, 0x8f, 0x1c, - 0xcd, 0xf4, 0xc1, 0x7a, 0xae, 0x02, 0x4e, 0x35, 0xec, 0xad, 0xad, 0x0e, 0xf2, 0xc5, 0x84, 0xa8, - 0x77, 0x26, 0x34, 0x46, 0x09, 0x17, 0xd9, 0x09, 0xb2, 0x1f, 0x30, 0x83, 0x93, 0x22, 0xf8, 0x05, - 0x3e, 0x5f, 0x3a, 0x66, 0x29, 0x11, 0x57, 0x5f, 0x3e, 0x23, 0x50, 0x90, 0x8b, 0x42, 0x2a, 0x4d, - 0x36, 0x7d, 0x20, 0x3e, 0x9f, 0x05, 0xb3, 0xf4, 0x3a, 0x35, 0x5f, 0x41, 0xef, 0x1b, 0x21, 0x00, - 0xf0, 0x7b, 0x19, 0x59, 0x3f, 0x5b, 0x22, 0x13, 0x81, 0x93, 0x08, 0x11, 0xcb, 0x9d, 0xf4, 0x1f, - 0x48, 0x2e, 0x7d, 0xd1, 0xfe, 0x17, 0x05, 0x4c, 0x2f, 0x23, 0xbf, 0xa5, 0xb9, 0xfc, 0xdd, 0x34, - 0x32, 0x82, 0xbd, 0x01, 0xcc, 0x5e, 0x44, 0x9b, 0xb6, 0x83, 0x6a, 0xc2, 0x29, 0x28, 0x31, 0x31, - 0x22, 0x1c, 0x92, 0x10, 0x77, 0x67, 0x41, 0x14, 0xfb, 0x2d, 0x07, 0xe5, 0xc4, 0x71, 0x19, 0x31, - 0x9c, 0x3c, 0x11, 0x4c, 0x32, 0x50, 0x7d, 0x0b, 0x2c, 0xae, 0xcb, 0x0b, 0xf2, 0xc2, 0xd7, 0x05, - 0x60, 0x69, 0x02, 0x58, 0x8f, 0x4f, 0xc2, 0xc4, 0x58, 0xee, 0x13, 0x2e, 0x72, 0xe5, 0x2f, 0xec, - 0x57, 0xda, 0x2e, 0x5c, 0x4b, 0x86, 0xd7, 0x59, 0x00, 0x02, 0xbd, 0xf7, 0x8f, 0x51, 0x73, 0x29, - 0x62, 0xa4, 0xe4, 0xd8, 0x73, 0x55, 0xbd, 0xe2, 0x20, 0xec, 0x8c, 0x18, 0x18, 0xb9, 0xf3, 0x58, - 0x32, 0x9c, 0xa4, 0x8f, 0xce, 0x27, 0x15, 0x70, 0xaa, 0xee, 0xef, 0xce, 0xaf, 0x1a, 0x6e, 0xd8, - 0xa4, 0xca, 0xc9, 0x20, 0x12, 0xce, 0x72, 0x04, 0x8d, 0xe5, 0x5b, 0xc9, 0x86, 0x83, 0xbe, 0x9c, - 0x8c, 0x16, 0x1d, 0xf5, 0x16, 0x70, 0xc2, 0xda, 0xdd, 0x09, 0xa4, 0x4e, 0x5a, 0x3c, 0x6b, 0xe1, - 0x07, 0x3f, 0x24, 0x19, 0x74, 0x64, 0x98, 0x1f, 0xcb, 0x74, 0x71, 0x7a, 0xc3, 0x0a, 0x1c, 0x2e, - 0xe0, 0x63, 0x13, 0xc1, 0x08, 0xbf, 0x9d, 0x49, 0xd4, 0xbb, 0x71, 0x25, 0x45, 0x0c, 0x29, 0x09, - 0x7a, 0xa9, 0x68, 0x62, 0xa9, 0x8b, 0xed, 0xdc, 0x04, 0xc8, 0x6b, 0x3b, 0x5d, 0x6f, 0xff, 0xdc, - 0xa3, 0xc0, 0x6c, 0xdd, 0x73, 0x90, 0xb1, 0xc3, 0x2d, 0xfa, 0x7b, 0xf6, 0x25, 0x64, 0xf9, 0x8b, - 0xfe, 0xe4, 0xe5, 0xce, 0x3b, 0xc0, 0x84, 0x65, 0x37, 0x8d, 0x5d, 0x6f, 0x5b, 0xbd, 0xf6, 0xc0, - 0x61, 0x58, 0x06, 0x7e, 0x8d, 0xc5, 0xcc, 0xf8, 0xf2, 0x5d, 0x64, 0xd9, 0xb7, 0x60, 0xd9, 0xa5, - 0x5d, 0x6f, 0x7b, 0xe1, 0x9a, 0x8f, 0xff, 0xdd, 0xd9, 0xcc, 0xa7, 0xfe, 0xee, 0x6c, 0xe6, 0x4b, - 0x7f, 0x77, 0x36, 0xf3, 0x4b, 0x5f, 0x39, 0x7b, 0xec, 0x53, 0x5f, 0x39, 0x7b, 0xec, 0xf3, 0x5f, - 0x39, 0x7b, 0xec, 0x27, 0xb2, 0xdd, 0x8b, 0x17, 0x0b, 0x84, 0xca, 0xed, 0xff, 0x7f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x3a, 0x08, 0xa6, 0xb0, 0x3f, 0xf4, 0x01, 0x00, + 0xef, 0x54, 0x98, 0x6b, 0x15, 0xd7, 0xeb, 0xbd, 0x82, 0xd7, 0xcf, 0x58, 0x6f, 0x33, 0xc6, 0x7c, + 0x8c, 0x73, 0xd4, 0xed, 0x60, 0x82, 0xca, 0xdc, 0x9f, 0x8f, 0xf6, 0xfa, 0x29, 0x50, 0x12, 0xe4, + 0x3c, 0xad, 0x9f, 0x53, 0xd2, 0x45, 0x2d, 0xba, 0xf0, 0xb1, 0x9c, 0x2b, 0x9f, 0xa9, 0x20, 0xef, + 0xb2, 0xe3, 0x5e, 0xaa, 0x79, 0xa6, 0x87, 0xe0, 0xbf, 0x28, 0x40, 0xad, 0x21, 0x8f, 0x8f, 0x68, + 0x51, 0x01, 0x27, 0x68, 0x85, 0x58, 0x46, 0xd2, 0x7f, 0xd3, 0x8a, 0x5c, 0xd7, 0x57, 0x08, 0x5c, + 0x3e, 0xe3, 0xe0, 0xaf, 0xf0, 0xd7, 0xfa, 0x06, 0xf2, 0x51, 0xfa, 0x4c, 0x1a, 0x98, 0x64, 0x78, + 0x06, 0xb1, 0x82, 0x45, 0xe8, 0xe9, 0x07, 0xa4, 0xcc, 0x6a, 0x39, 0x9a, 0x47, 0xd3, 0x15, 0xbc, + 0xec, 0x2a, 0x90, 0x2d, 0x6d, 0x9b, 0x1e, 0x7c, 0x87, 0x0a, 0x40, 0xb1, 0xd5, 0x5a, 0xa3, 0x7e, + 0xbd, 0xbc, 0x43, 0xda, 0x39, 0x30, 0xd3, 0xdc, 0x36, 0xc3, 0xfb, 0x2a, 0x68, 0x7f, 0x20, 0xa4, + 0x69, 0x4f, 0x08, 0x1d, 0x84, 0xa9, 0x54, 0x61, 0x0f, 0x4c, 0xb8, 0x0c, 0x46, 0x3b, 0x70, 0x1e, + 0x16, 0xc3, 0x1b, 0xc6, 0x1e, 0x8b, 0xc2, 0xbf, 0xcf, 0x87, 0xec, 0x45, 0xcf, 0xe1, 0x18, 0xe9, + 0xe0, 0xd0, 0x44, 0x98, 0x90, 0xf0, 0xf4, 0xae, 0x5c, 0x90, 0x86, 0x78, 0xbe, 0xc6, 0x12, 0x8e, + 0x54, 0xd3, 0x5b, 0x96, 0x2f, 0x5a, 0x16, 0x04, 0x09, 0x3e, 0x2f, 0x93, 0x0c, 0xbe, 0x78, 0xc1, + 0xdd, 0x0b, 0x66, 0x51, 0xcb, 0xf2, 0x90, 0x5f, 0x4b, 0x26, 0xc0, 0x38, 0x88, 0xc5, 0x1f, 0xe0, + 0x33, 0xa4, 0x03, 0x69, 0x11, 0x81, 0x1e, 0xac, 0x51, 0x44, 0xfb, 0x93, 0x0b, 0x8d, 0x25, 0x47, + 0x33, 0x7d, 0xb0, 0x9e, 0xa5, 0x82, 0x53, 0x75, 0x67, 0x6b, 0xab, 0x8d, 0x7c, 0x31, 0x21, 0xea, + 0x9d, 0x09, 0xcd, 0x51, 0xc2, 0x45, 0x76, 0x82, 0x9c, 0x07, 0xac, 0xe0, 0x78, 0x10, 0x7e, 0x11, + 0x4f, 0xc1, 0xc4, 0xce, 0xa2, 0x88, 0xb8, 0xfa, 0xf2, 0x19, 0x81, 0x82, 0x5c, 0x10, 0x5f, 0x69, + 0xb2, 0xe9, 0x03, 0xf1, 0x79, 0x05, 0xcc, 0xd2, 0xdb, 0x08, 0x7d, 0x05, 0xbd, 0x6f, 0x84, 0x00, + 0xc0, 0xef, 0x66, 0x64, 0xfd, 0x6c, 0x89, 0x4c, 0x04, 0x4e, 0x22, 0x44, 0x2c, 0x17, 0x28, 0x63, + 0x20, 0xb9, 0x31, 0xc4, 0x42, 0x52, 0xc1, 0xf4, 0x32, 0xf2, 0x5b, 0x5a, 0x97, 0xbf, 0xda, 0x49, + 0x46, 0xb0, 0x37, 0x80, 0xd9, 0x8b, 0x68, 0xd3, 0x71, 0x51, 0x55, 0x38, 0xfa, 0x26, 0x26, 0x46, + 0x44, 0x13, 0x13, 0xc2, 0x56, 0x2d, 0x88, 0x62, 0xbf, 0xe5, 0xa0, 0x9c, 0x38, 0x2e, 0x23, 0x86, + 0x93, 0x1f, 0x03, 0x93, 0x0c, 0x54, 0xdf, 0x02, 0x8b, 0xeb, 0xf2, 0x82, 0xbc, 0xf0, 0x35, 0x01, + 0x58, 0xba, 0x00, 0xd6, 0xe3, 0x93, 0x30, 0x31, 0x96, 0xeb, 0xb8, 0x0b, 0x5c, 0xf9, 0x0b, 0xfb, + 0xe5, 0x56, 0x17, 0xae, 0x25, 0xc3, 0xeb, 0x2c, 0x00, 0x81, 0xde, 0xfb, 0x51, 0x08, 0xb8, 0x14, + 0x31, 0xd0, 0x78, 0xec, 0xb9, 0xaa, 0x5e, 0x71, 0x10, 0x76, 0x46, 0x0c, 0x8c, 0xdc, 0x79, 0x2c, + 0x19, 0x4e, 0xd2, 0x47, 0xe7, 0x13, 0x2a, 0x38, 0x55, 0xf3, 0x77, 0xe7, 0x57, 0xcd, 0x6e, 0xd8, + 0xa4, 0x4a, 0xc9, 0x20, 0x12, 0xce, 0x72, 0x04, 0x8d, 0xe5, 0x9b, 0xc9, 0x86, 0x83, 0xbe, 0x9c, + 0x8c, 0x16, 0x1d, 0xed, 0x16, 0x70, 0xc2, 0xde, 0xdd, 0x09, 0xa4, 0x4e, 0x5a, 0x3c, 0x6b, 0xe1, + 0x07, 0x3f, 0x24, 0x19, 0x74, 0x64, 0x98, 0x1f, 0xcb, 0x74, 0x71, 0x7a, 0xc3, 0x0e, 0x1c, 0x2e, + 0xe0, 0x63, 0x13, 0xc1, 0x08, 0xbf, 0x95, 0x49, 0xd4, 0xbb, 0x71, 0x25, 0x45, 0x0c, 0x29, 0x09, + 0x7a, 0xa9, 0x68, 0x62, 0xa9, 0x8b, 0xed, 0xdc, 0x04, 0xc8, 0xe9, 0x3b, 0x1d, 0x6f, 0xff, 0xdc, + 0xa3, 0xc0, 0x6c, 0xcd, 0x73, 0x91, 0xb9, 0xc3, 0x2d, 0xfa, 0x7b, 0xce, 0x25, 0x64, 0xfb, 0x8b, + 0xfe, 0xe4, 0xe5, 0xce, 0x3b, 0xc0, 0x84, 0xed, 0x34, 0xcc, 0x5d, 0x6f, 0x5b, 0xbb, 0xf6, 0xc0, + 0x09, 0x68, 0x06, 0x7e, 0x95, 0x85, 0x9c, 0xf9, 0xf2, 0x5d, 0x64, 0xd9, 0x37, 0x6f, 0x3b, 0xc5, + 0x5d, 0x6f, 0x7b, 0xe1, 0x9a, 0x8f, 0xfd, 0xed, 0xd9, 0xcc, 0x27, 0xff, 0xf6, 0x6c, 0xe6, 0x4b, + 0x7f, 0x7b, 0x36, 0xf3, 0x4b, 0x5f, 0x39, 0x7b, 0xec, 0x93, 0x5f, 0x39, 0x7b, 0xec, 0xf3, 0x5f, + 0x39, 0x7b, 0xec, 0x27, 0x95, 0xce, 0xc5, 0x8b, 0x79, 0x42, 0xe5, 0xf6, 0xff, 0x3f, 0x00, 0x00, + 0xff, 0xff, 0xd6, 0xdf, 0xeb, 0x78, 0xb6, 0xf7, 0x01, 0x00, } func (m *Rpc) Marshal() (dAtA []byte, err error) { @@ -75679,6 +76183,16 @@ func (m *RpcWorkspaceCreateRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro _ = i var l int _ = l + if m.WithChat { + i-- + if m.WithChat { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } if m.UseCase != 0 { i = encodeVarintCommands(dAtA, i, uint64(m.UseCase)) i-- @@ -75819,6 +76333,16 @@ func (m *RpcWorkspaceOpenRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + if m.WithChat { + i-- + if m.WithChat { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } if len(m.SpaceId) > 0 { i -= len(m.SpaceId) copy(dAtA[i:], m.SpaceId) @@ -108625,6 +109149,136 @@ func (m *RpcDebugAccountSelectTraceResponseError) MarshalToSizedBuffer(dAtA []by return len(dAtA) - i, nil } +func (m *RpcDebugExportLog) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcDebugExportLog) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcDebugExportLog) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *RpcDebugExportLogRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcDebugExportLogRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcDebugExportLogRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Dir) > 0 { + i -= len(m.Dir) + copy(dAtA[i:], m.Dir) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Dir))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcDebugExportLogResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcDebugExportLogResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcDebugExportLogResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Path) > 0 { + i -= len(m.Path) + copy(dAtA[i:], m.Path) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Path))) + i-- + dAtA[i] = 0x12 + } + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcDebugExportLogResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcDebugExportLogResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcDebugExportLogResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *RpcDebugPing) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -108964,7 +109618,7 @@ func (m *RpcDebugAnystoreObjectChangesResponseError) MarshalToSizedBuffer(dAtA [ return len(dAtA) - i, nil } -func (m *RpcMetrics) Marshal() (dAtA []byte, err error) { +func (m *RpcDebugNetCheck) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -108974,12 +109628,12 @@ func (m *RpcMetrics) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *RpcMetrics) MarshalTo(dAtA []byte) (int, error) { +func (m *RpcDebugNetCheck) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *RpcMetrics) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RpcDebugNetCheck) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -108987,7 +109641,7 @@ func (m *RpcMetrics) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *RpcMetricsSetParameters) Marshal() (dAtA []byte, err error) { +func (m *RpcDebugNetCheckRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -108997,12 +109651,119 @@ func (m *RpcMetricsSetParameters) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *RpcMetricsSetParameters) MarshalTo(dAtA []byte) (int, error) { +func (m *RpcDebugNetCheckRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *RpcMetricsSetParameters) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RpcDebugNetCheckRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ClientYml) > 0 { + i -= len(m.ClientYml) + copy(dAtA[i:], m.ClientYml) + i = encodeVarintCommands(dAtA, i, uint64(len(m.ClientYml))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcDebugNetCheckResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcDebugNetCheckResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcDebugNetCheckResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Result) > 0 { + i -= len(m.Result) + copy(dAtA[i:], m.Result) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Result))) + i-- + dAtA[i] = 0x12 + } + if m.Error != nil { + { + size, err := m.Error.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCommands(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RpcDebugNetCheckResponseError) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcDebugNetCheckResponseError) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcDebugNetCheckResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if m.Code != 0 { + i = encodeVarintCommands(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *RpcInitial) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcInitial) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcInitial) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -109010,7 +109771,7 @@ func (m *RpcMetricsSetParameters) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *RpcMetricsSetParametersRequest) Marshal() (dAtA []byte, err error) { +func (m *RpcInitialSetParameters) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -109020,16 +109781,83 @@ func (m *RpcMetricsSetParametersRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *RpcMetricsSetParametersRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *RpcInitialSetParameters) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *RpcMetricsSetParametersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RpcInitialSetParameters) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + return len(dAtA) - i, nil +} + +func (m *RpcInitialSetParametersRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RpcInitialSetParametersRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RpcInitialSetParametersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.DoNotSendTelemetry { + i-- + if m.DoNotSendTelemetry { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if m.DoNotSaveLogs { + i-- + if m.DoNotSaveLogs { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if m.DoNotSendLogs { + i-- + if m.DoNotSendLogs { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.LogLevel) > 0 { + i -= len(m.LogLevel) + copy(dAtA[i:], m.LogLevel) + i = encodeVarintCommands(dAtA, i, uint64(len(m.LogLevel))) + i-- + dAtA[i] = 0x22 + } + if len(m.Workdir) > 0 { + i -= len(m.Workdir) + copy(dAtA[i:], m.Workdir) + i = encodeVarintCommands(dAtA, i, uint64(len(m.Workdir))) + i-- + dAtA[i] = 0x1a + } if len(m.Version) > 0 { i -= len(m.Version) copy(dAtA[i:], m.Version) @@ -109047,7 +109875,7 @@ func (m *RpcMetricsSetParametersRequest) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } -func (m *RpcMetricsSetParametersResponse) Marshal() (dAtA []byte, err error) { +func (m *RpcInitialSetParametersResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -109057,12 +109885,12 @@ func (m *RpcMetricsSetParametersResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *RpcMetricsSetParametersResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *RpcInitialSetParametersResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *RpcMetricsSetParametersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RpcInitialSetParametersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -109082,7 +109910,7 @@ func (m *RpcMetricsSetParametersResponse) MarshalToSizedBuffer(dAtA []byte) (int return len(dAtA) - i, nil } -func (m *RpcMetricsSetParametersResponseError) Marshal() (dAtA []byte, err error) { +func (m *RpcInitialSetParametersResponseError) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -109092,12 +109920,12 @@ func (m *RpcMetricsSetParametersResponseError) Marshal() (dAtA []byte, err error return dAtA[:n], nil } -func (m *RpcMetricsSetParametersResponseError) MarshalTo(dAtA []byte) (int, error) { +func (m *RpcInitialSetParametersResponseError) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *RpcMetricsSetParametersResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *RpcInitialSetParametersResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -115973,6 +116801,9 @@ func (m *RpcWorkspaceCreateRequest) Size() (n int) { if m.UseCase != 0 { n += 1 + sovCommands(uint64(m.UseCase)) } + if m.WithChat { + n += 2 + } return n } @@ -116028,6 +116859,9 @@ func (m *RpcWorkspaceOpenRequest) Size() (n int) { if l > 0 { n += 1 + l + sovCommands(uint64(l)) } + if m.WithChat { + n += 2 + } return n } @@ -130009,6 +130843,61 @@ func (m *RpcDebugAccountSelectTraceResponseError) Size() (n int) { return n } +func (m *RpcDebugExportLog) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcDebugExportLogRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Dir) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcDebugExportLogResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.Path) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcDebugExportLogResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + func (m *RpcDebugPing) Size() (n int) { if m == nil { return 0 @@ -130153,7 +131042,7 @@ func (m *RpcDebugAnystoreObjectChangesResponseError) Size() (n int) { return n } -func (m *RpcMetrics) Size() (n int) { +func (m *RpcDebugNetCheck) Size() (n int) { if m == nil { return 0 } @@ -130162,7 +131051,53 @@ func (m *RpcMetrics) Size() (n int) { return n } -func (m *RpcMetricsSetParameters) Size() (n int) { +func (m *RpcDebugNetCheckRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClientYml) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcDebugNetCheckResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + l = m.Error.Size() + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.Result) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcDebugNetCheckResponseError) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Code != 0 { + n += 1 + sovCommands(uint64(m.Code)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + return n +} + +func (m *RpcInitial) Size() (n int) { if m == nil { return 0 } @@ -130171,7 +131106,16 @@ func (m *RpcMetricsSetParameters) Size() (n int) { return n } -func (m *RpcMetricsSetParametersRequest) Size() (n int) { +func (m *RpcInitialSetParameters) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *RpcInitialSetParametersRequest) Size() (n int) { if m == nil { return 0 } @@ -130185,10 +131129,27 @@ func (m *RpcMetricsSetParametersRequest) Size() (n int) { if l > 0 { n += 1 + l + sovCommands(uint64(l)) } + l = len(m.Workdir) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + l = len(m.LogLevel) + if l > 0 { + n += 1 + l + sovCommands(uint64(l)) + } + if m.DoNotSendLogs { + n += 2 + } + if m.DoNotSaveLogs { + n += 2 + } + if m.DoNotSendTelemetry { + n += 2 + } return n } -func (m *RpcMetricsSetParametersResponse) Size() (n int) { +func (m *RpcInitialSetParametersResponse) Size() (n int) { if m == nil { return 0 } @@ -130201,7 +131162,7 @@ func (m *RpcMetricsSetParametersResponse) Size() (n int) { return n } -func (m *RpcMetricsSetParametersResponseError) Size() (n int) { +func (m *RpcInitialSetParametersResponseError) Size() (n int) { if m == nil { return 0 } @@ -146240,6 +147201,26 @@ func (m *RpcWorkspaceCreateRequest) Unmarshal(dAtA []byte) error { break } } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field WithChat", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.WithChat = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -146591,6 +147572,26 @@ func (m *RpcWorkspaceOpenRequest) Unmarshal(dAtA []byte) error { } m.SpaceId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field WithChat", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.WithChat = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -236291,6 +237292,357 @@ func (m *RpcDebugAccountSelectTraceResponseError) Unmarshal(dAtA []byte) error { } return nil } +func (m *RpcDebugExportLog) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExportLog: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExportLog: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcDebugExportLogRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Dir", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Dir = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcDebugExportLogResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcDebugExportLogResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcDebugExportLogResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcDebugExportLogResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RpcDebugPing) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -237209,7 +238561,7 @@ func (m *RpcDebugAnystoreObjectChangesResponseError) Unmarshal(dAtA []byte) erro } return nil } -func (m *RpcMetrics) Unmarshal(dAtA []byte) error { +func (m *RpcDebugNetCheck) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -237232,10 +238584,10 @@ func (m *RpcMetrics) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Metrics: wiretype end group for non-group") + return fmt.Errorf("proto: NetCheck: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Metrics: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: NetCheck: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -237259,7 +238611,358 @@ func (m *RpcMetrics) Unmarshal(dAtA []byte) error { } return nil } -func (m *RpcMetricsSetParameters) Unmarshal(dAtA []byte) error { +func (m *RpcDebugNetCheckRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Request: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientYml", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientYml = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcDebugNetCheckResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &RpcDebugNetCheckResponseError{} + } + if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Result = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcDebugNetCheckResponseError) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= RpcDebugNetCheckResponseErrorCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcInitial) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Initial: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Initial: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipCommands(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCommands + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RpcInitialSetParameters) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -237309,7 +239012,7 @@ func (m *RpcMetricsSetParameters) Unmarshal(dAtA []byte) error { } return nil } -func (m *RpcMetricsSetParametersRequest) Unmarshal(dAtA []byte) error { +func (m *RpcInitialSetParametersRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -237402,6 +239105,130 @@ func (m *RpcMetricsSetParametersRequest) Unmarshal(dAtA []byte) error { } m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Workdir", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Workdir = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LogLevel", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthCommands + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCommands + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LogLevel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DoNotSendLogs", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DoNotSendLogs = bool(v != 0) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DoNotSaveLogs", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DoNotSaveLogs = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DoNotSendTelemetry", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCommands + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DoNotSendTelemetry = bool(v != 0) default: iNdEx = preIndex skippy, err := skipCommands(dAtA[iNdEx:]) @@ -237423,7 +239250,7 @@ func (m *RpcMetricsSetParametersRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *RpcMetricsSetParametersResponse) Unmarshal(dAtA []byte) error { +func (m *RpcInitialSetParametersResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -237482,7 +239309,7 @@ func (m *RpcMetricsSetParametersResponse) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Error == nil { - m.Error = &RpcMetricsSetParametersResponseError{} + m.Error = &RpcInitialSetParametersResponseError{} } if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -237509,7 +239336,7 @@ func (m *RpcMetricsSetParametersResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *RpcMetricsSetParametersResponseError) Unmarshal(dAtA []byte) error { +func (m *RpcInitialSetParametersResponseError) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -237552,7 +239379,7 @@ func (m *RpcMetricsSetParametersResponseError) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Code |= RpcMetricsSetParametersResponseErrorCode(b&0x7F) << shift + m.Code |= RpcInitialSetParametersResponseErrorCode(b&0x7F) << shift if b < 0x80 { break } diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto index 015cdfe07..c09a0ce5b 100644 --- a/pb/protos/commands.proto +++ b/pb/protos/commands.proto @@ -1131,6 +1131,7 @@ message Rpc { message Request { google.protobuf.Struct details = 1; // object details anytype.Rpc.Object.ImportUseCase.Request.UseCase useCase = 2; // use case + bool withChat = 3; // create space-level chat; temporary solution, should be removed after chats released for all users } message Response { @@ -1154,6 +1155,7 @@ message Rpc { message Open { message Request { string spaceId = 1; + bool withChat = 2; // create space-level chat if not exists; temporary solution, should be removed after chats released for all users } message Response { @@ -6523,6 +6525,30 @@ message Rpc { } } + message ExportLog { + message Request { + option (no_auth) = true; + string dir = 1; // empty means using OS-provided temp dir + } + + message Response { + Error error = 1; + string path = 2; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + NO_FOLDER = 3; + } + } + } + } + message Ping { message Request { int32 index = 1; @@ -6581,14 +6607,41 @@ message Rpc { } } } + + message NetCheck { + message Request { + string clientYml = 1; + } + + message Response { + Error error = 1; + string result = 2; + + message Error { + Code code = 1; + string description = 2; + + enum Code { + NULL = 0; + UNKNOWN_ERROR = 1; + BAD_INPUT = 2; + } + } + } + } } - message Metrics { + message Initial { message SetParameters { message Request { option (no_auth) = true; string platform = 1; string version = 2; + string workdir = 3; + string logLevel = 4; + bool doNotSendLogs = 5; + bool doNotSaveLogs = 6; + bool doNotSendTelemetry = 7; } message Response { diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto index 1f74aedca..73fdf9505 100644 --- a/pb/protos/service/service.proto +++ b/pb/protos/service/service.proto @@ -311,8 +311,10 @@ service ClientCommands { rpc DebugRunProfiler (anytype.Rpc.Debug.RunProfiler.Request) returns (anytype.Rpc.Debug.RunProfiler.Response); rpc DebugAccountSelectTrace (anytype.Rpc.Debug.AccountSelectTrace.Request) returns (anytype.Rpc.Debug.AccountSelectTrace.Response); rpc DebugAnystoreObjectChanges (anytype.Rpc.Debug.AnystoreObjectChanges.Request) returns (anytype.Rpc.Debug.AnystoreObjectChanges.Response); + rpc DebugNetCheck (anytype.Rpc.Debug.NetCheck.Request) returns (anytype.Rpc.Debug.NetCheck.Response); + rpc DebugExportLog (anytype.Rpc.Debug.ExportLog.Request) returns (anytype.Rpc.Debug.ExportLog.Response); - rpc MetricsSetParameters (anytype.Rpc.Metrics.SetParameters.Request) returns (anytype.Rpc.Metrics.SetParameters.Response); + rpc InitialSetParameters (anytype.Rpc.Initial.SetParameters.Request) returns (anytype.Rpc.Initial.SetParameters.Response); // used only for lib-server via grpc rpc ListenSessionEvents (anytype.StreamRequest) returns (stream anytype.Event); diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go index ebaede39a..92418b469 100644 --- a/pb/service/service.pb.go +++ b/pb/service/service.pb.go @@ -26,330 +26,332 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) } var fileDescriptor_93a29dc403579097 = []byte{ - // 5164 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0x5b, 0x6f, 0x24, 0x49, - 0x56, 0xf8, 0xa7, 0x5e, 0xfe, 0xf3, 0x27, 0x97, 0x1d, 0xa0, 0x06, 0x86, 0xd9, 0x61, 0xb7, 0xbb, - 0xa7, 0x6f, 0xee, 0x6e, 0xdb, 0xe9, 0x9e, 0xee, 0xe9, 0x99, 0xd5, 0x2e, 0x12, 0x72, 0xdb, 0x6d, - 0x8f, 0x59, 0xdb, 0x6d, 0x5c, 0xe5, 0x6e, 0x69, 0x24, 0x24, 0xc2, 0x99, 0xe1, 0x72, 0xe2, 0xac, - 0x8c, 0xdc, 0xcc, 0xa8, 0x72, 0xd7, 0x22, 0x10, 0x08, 0x04, 0x02, 0x81, 0x58, 0x71, 0x7b, 0x45, - 0xe2, 0x89, 0x8f, 0xc2, 0xe3, 0x3e, 0xf2, 0x88, 0x66, 0xf8, 0x20, 0x28, 0x23, 0x22, 0xe3, 0x72, - 0x32, 0x4e, 0x64, 0x7a, 0x9f, 0xba, 0x55, 0xe7, 0x77, 0xce, 0x89, 0xeb, 0x89, 0x13, 0x91, 0x91, - 0xe9, 0xe8, 0x76, 0x79, 0xbe, 0x55, 0x56, 0x8c, 0xb3, 0x7a, 0xab, 0xa6, 0xd5, 0x32, 0x4b, 0x68, - 0xfb, 0x6f, 0x2c, 0x7e, 0x1e, 0xbf, 0x4f, 0x8a, 0x15, 0x5f, 0x95, 0xf4, 0x93, 0x8f, 0x0d, 0x99, - 0xb0, 0xf9, 0x9c, 0x14, 0x69, 0x2d, 0x91, 0x4f, 0x3e, 0x32, 0x12, 0xba, 0xa4, 0x05, 0x57, 0xbf, - 0x3f, 0xfb, 0xcf, 0xff, 0x1d, 0x45, 0x1f, 0xec, 0xe4, 0x19, 0x2d, 0xf8, 0x8e, 0xd2, 0x18, 0x7f, - 0x1d, 0x7d, 0x77, 0xbb, 0x2c, 0xf7, 0x29, 0x7f, 0x43, 0xab, 0x3a, 0x63, 0xc5, 0xf8, 0x5e, 0xac, - 0x1c, 0xc4, 0xa7, 0x65, 0x12, 0x6f, 0x97, 0x65, 0x6c, 0x84, 0xf1, 0x29, 0xfd, 0xe9, 0x82, 0xd6, - 0xfc, 0x93, 0xfb, 0x61, 0xa8, 0x2e, 0x59, 0x51, 0xd3, 0xf1, 0x45, 0xf4, 0x1b, 0xdb, 0x65, 0x39, - 0xa1, 0x7c, 0x97, 0x36, 0x15, 0x98, 0x70, 0xc2, 0xe9, 0x78, 0xad, 0xa3, 0xea, 0x02, 0xda, 0xc7, - 0xa3, 0x7e, 0x50, 0xf9, 0x99, 0x46, 0xdf, 0x69, 0xfc, 0x5c, 0x2e, 0x78, 0xca, 0xae, 0x8b, 0xf1, - 0xa7, 0x5d, 0x45, 0x25, 0xd2, 0xb6, 0xef, 0x86, 0x10, 0x65, 0xf5, 0x6d, 0xf4, 0xab, 0x6f, 0x49, - 0x9e, 0x53, 0xbe, 0x53, 0xd1, 0xa6, 0xe0, 0xae, 0x8e, 0x14, 0xc5, 0x52, 0xa6, 0xed, 0xde, 0x0b, - 0x32, 0xca, 0xf0, 0xd7, 0xd1, 0x77, 0xa5, 0xe4, 0x94, 0x26, 0x6c, 0x49, 0xab, 0xb1, 0x57, 0x4b, - 0x09, 0x91, 0x26, 0xef, 0x40, 0xd0, 0xf6, 0x0e, 0x2b, 0x96, 0xb4, 0xe2, 0x7e, 0xdb, 0x4a, 0x18, - 0xb6, 0x6d, 0x20, 0x65, 0xfb, 0x6f, 0x47, 0xd1, 0xf7, 0xb7, 0x93, 0x84, 0x2d, 0x0a, 0x7e, 0xc8, - 0x12, 0x92, 0x1f, 0x66, 0xc5, 0xd5, 0x31, 0xbd, 0xde, 0xb9, 0x6c, 0xf8, 0x62, 0x46, 0xc7, 0xcf, - 0xdd, 0x56, 0x95, 0x68, 0xac, 0xd9, 0xd8, 0x86, 0xb5, 0xef, 0xcf, 0x6f, 0xa6, 0xa4, 0xca, 0xf2, - 0x8f, 0xa3, 0xe8, 0x16, 0x2c, 0xcb, 0x84, 0xe5, 0x4b, 0x6a, 0x4a, 0xf3, 0xa2, 0xc7, 0xb0, 0x8b, - 0xeb, 0xf2, 0x7c, 0x71, 0x53, 0x35, 0x55, 0xa2, 0x3c, 0xfa, 0xd0, 0x1e, 0x2e, 0x13, 0x5a, 0x8b, - 0xe9, 0xf4, 0x18, 0x1f, 0x11, 0x0a, 0xd1, 0x9e, 0x9f, 0x0c, 0x41, 0x95, 0xb7, 0x2c, 0x1a, 0x2b, - 0x6f, 0x39, 0xab, 0xb5, 0xb3, 0x47, 0x5e, 0x0b, 0x16, 0xa1, 0x7d, 0x3d, 0x1e, 0x40, 0x2a, 0x57, - 0x7f, 0x14, 0xfd, 0xda, 0x5b, 0x56, 0x5d, 0xd5, 0x25, 0x49, 0xa8, 0x9a, 0x0a, 0x0f, 0x5c, 0xed, - 0x56, 0x0a, 0x67, 0xc3, 0xc3, 0x3e, 0xcc, 0x1a, 0xb4, 0xad, 0xf0, 0x75, 0x49, 0x61, 0x0c, 0x32, - 0x8a, 0x8d, 0x10, 0x1b, 0xb4, 0x10, 0x52, 0xb6, 0xaf, 0xa2, 0xb1, 0xb1, 0x7d, 0xfe, 0xc7, 0x34, - 0xe1, 0xdb, 0x69, 0x0a, 0x7b, 0xc5, 0xe8, 0x0a, 0x22, 0xde, 0x4e, 0x53, 0xac, 0x57, 0xfc, 0xa8, - 0x72, 0x76, 0x1d, 0x7d, 0x04, 0x9c, 0x1d, 0x66, 0xb5, 0x70, 0xb8, 0x19, 0xb6, 0xa2, 0x30, 0xed, - 0x34, 0x1e, 0x8a, 0x2b, 0xc7, 0x7f, 0x3e, 0x8a, 0xbe, 0xe7, 0xf1, 0x7c, 0x4a, 0xe7, 0x6c, 0x49, - 0xc7, 0x4f, 0xfb, 0xad, 0x49, 0x52, 0xfb, 0xff, 0xec, 0x06, 0x1a, 0x9e, 0x61, 0x32, 0xa1, 0x39, - 0x4d, 0x38, 0x3a, 0x4c, 0xa4, 0xb8, 0x77, 0x98, 0x68, 0xcc, 0x9a, 0x61, 0xad, 0x70, 0x9f, 0xf2, - 0x9d, 0x45, 0x55, 0xd1, 0x82, 0xa3, 0x7d, 0x69, 0x90, 0xde, 0xbe, 0x74, 0x50, 0x4f, 0x7d, 0xf6, - 0x29, 0xdf, 0xce, 0x73, 0xb4, 0x3e, 0x52, 0xdc, 0x5b, 0x1f, 0x8d, 0x29, 0x0f, 0x49, 0xf4, 0xeb, - 0x56, 0x8b, 0xf1, 0x83, 0xe2, 0x82, 0x8d, 0xf1, 0xb6, 0x10, 0x72, 0xed, 0x63, 0xad, 0x97, 0xf3, - 0x54, 0xe3, 0xd5, 0xbb, 0x92, 0x55, 0x78, 0xb7, 0x48, 0x71, 0x6f, 0x35, 0x34, 0xa6, 0x3c, 0xfc, - 0x61, 0xf4, 0x81, 0x8a, 0x92, 0xed, 0x7a, 0x76, 0xdf, 0x1b, 0x42, 0xe1, 0x82, 0xf6, 0xa0, 0x87, - 0x32, 0xc1, 0x41, 0xc9, 0x54, 0xf0, 0xb9, 0xe7, 0xd5, 0x03, 0xa1, 0xe7, 0x7e, 0x18, 0xea, 0xd8, - 0xde, 0xa5, 0x39, 0x45, 0x6d, 0x4b, 0x61, 0x8f, 0x6d, 0x0d, 0x29, 0xdb, 0x55, 0xf4, 0x5b, 0xba, - 0x59, 0x9a, 0x75, 0x54, 0xc8, 0x9b, 0x20, 0xbd, 0x8e, 0xd4, 0xdb, 0x86, 0xb4, 0xaf, 0x8d, 0x61, - 0x70, 0xa7, 0x3e, 0x6a, 0x06, 0xfa, 0xeb, 0x03, 0xe6, 0xdf, 0xfd, 0x30, 0xa4, 0x6c, 0xff, 0xdd, - 0x28, 0xfa, 0x81, 0x92, 0xbd, 0x2a, 0xc8, 0x79, 0x4e, 0xc5, 0x92, 0x78, 0x4c, 0xf9, 0x35, 0xab, - 0xae, 0x26, 0xab, 0x22, 0x41, 0x96, 0x7f, 0x3f, 0xdc, 0xb3, 0xfc, 0xa3, 0x4a, 0x56, 0xc6, 0xa7, - 0x2a, 0xca, 0x59, 0x09, 0x33, 0xbe, 0xb6, 0x06, 0x9c, 0x95, 0x58, 0xc6, 0xe7, 0x22, 0x1d, 0xab, - 0x47, 0x4d, 0xd8, 0xf4, 0x5b, 0x3d, 0xb2, 0xe3, 0xe4, 0xdd, 0x10, 0x62, 0xc2, 0x56, 0x3b, 0x80, - 0x59, 0x71, 0x91, 0xcd, 0xce, 0xca, 0xb4, 0x19, 0xc6, 0x8f, 0xfd, 0x23, 0xd4, 0x42, 0x90, 0xb0, - 0x85, 0xa0, 0xca, 0xdb, 0x3f, 0x98, 0xc4, 0x48, 0x4d, 0xa5, 0xbd, 0x8a, 0xcd, 0x0f, 0xe9, 0x8c, - 0x24, 0x2b, 0x35, 0xff, 0x3f, 0x0f, 0x4d, 0x3c, 0x48, 0xeb, 0x42, 0xbc, 0xb8, 0xa1, 0x96, 0x2a, - 0xcf, 0xbf, 0x8f, 0xa2, 0xfb, 0x6d, 0xf5, 0x2f, 0x49, 0x31, 0xa3, 0xaa, 0x3f, 0x65, 0xe9, 0xb7, - 0x8b, 0xf4, 0x94, 0xd6, 0x9c, 0x54, 0x7c, 0xfc, 0x23, 0x7f, 0x25, 0x43, 0x3a, 0xba, 0x6c, 0x3f, - 0xfe, 0xa5, 0x74, 0x4d, 0xaf, 0x4f, 0x9a, 0xc0, 0xa6, 0x42, 0x80, 0xdb, 0xeb, 0x42, 0x02, 0x03, - 0xc0, 0xdd, 0x10, 0x62, 0x7a, 0x5d, 0x08, 0x0e, 0x8a, 0x65, 0xc6, 0xe9, 0x3e, 0x2d, 0x68, 0xd5, - 0xed, 0x75, 0xa9, 0xea, 0x22, 0x48, 0xaf, 0x23, 0xa8, 0x09, 0x36, 0x8e, 0x37, 0xbd, 0x38, 0xae, - 0x07, 0x8c, 0x74, 0x96, 0xc7, 0x8d, 0x61, 0xb0, 0xd9, 0xdd, 0x59, 0x3e, 0x4f, 0xe9, 0x92, 0x5d, - 0xc1, 0xdd, 0x9d, 0x6d, 0x42, 0x02, 0xc8, 0xee, 0xce, 0x0b, 0x9a, 0x15, 0xcc, 0xf2, 0xf3, 0x26, - 0xa3, 0xd7, 0x60, 0x05, 0xb3, 0x95, 0x1b, 0x31, 0xb2, 0x82, 0x79, 0x30, 0xe5, 0xe1, 0x38, 0xfa, - 0x15, 0x21, 0xfc, 0x7d, 0x96, 0x15, 0xe3, 0xdb, 0x1e, 0xa5, 0x46, 0xa0, 0xad, 0xde, 0xc1, 0x01, - 0x50, 0xe2, 0xe6, 0xd7, 0x1d, 0x52, 0x24, 0x34, 0xf7, 0x96, 0xd8, 0x88, 0x83, 0x25, 0x76, 0x30, - 0x93, 0x3a, 0x08, 0x61, 0x13, 0xbf, 0x26, 0x97, 0xa4, 0xca, 0x8a, 0xd9, 0xd8, 0xa7, 0x6b, 0xc9, - 0x91, 0xd4, 0xc1, 0xc7, 0x81, 0x21, 0xac, 0x14, 0xb7, 0xcb, 0xb2, 0x6a, 0xc2, 0xa2, 0x6f, 0x08, - 0xbb, 0x48, 0x70, 0x08, 0x77, 0x50, 0xbf, 0xb7, 0x5d, 0x9a, 0xe4, 0x59, 0x11, 0xf4, 0xa6, 0x90, - 0x21, 0xde, 0x0c, 0x0a, 0x06, 0xef, 0x21, 0x25, 0x4b, 0xda, 0xd6, 0xcc, 0xd7, 0x32, 0x36, 0x10, - 0x1c, 0xbc, 0x00, 0x34, 0xfb, 0x34, 0x21, 0x3e, 0x22, 0x57, 0xb4, 0x69, 0x60, 0xda, 0xac, 0x6b, - 0x63, 0x9f, 0xbe, 0x43, 0x20, 0xfb, 0x34, 0x3f, 0xa9, 0x5c, 0x2d, 0xa2, 0x8f, 0x84, 0xfc, 0x84, - 0x54, 0x3c, 0x4b, 0xb2, 0x92, 0x14, 0x6d, 0xfe, 0xef, 0x9b, 0xd7, 0x1d, 0x4a, 0xbb, 0xdc, 0x1c, - 0x48, 0x2b, 0xb7, 0xff, 0x36, 0x8a, 0x3e, 0x85, 0x7e, 0x4f, 0x68, 0x35, 0xcf, 0xc4, 0x36, 0xb2, - 0x96, 0x41, 0x78, 0xfc, 0x65, 0xd8, 0x68, 0x47, 0x41, 0x97, 0xe6, 0x87, 0x37, 0x57, 0x54, 0x05, - 0xfb, 0x83, 0x28, 0x92, 0xdb, 0x15, 0xb1, 0xa5, 0x74, 0x67, 0xad, 0xda, 0xc7, 0x38, 0xfb, 0xc9, - 0x4f, 0x03, 0x84, 0x59, 0x2a, 0xe4, 0xef, 0x62, 0xa7, 0x3c, 0xf6, 0x6a, 0x08, 0x11, 0xb2, 0x54, - 0x00, 0x04, 0x16, 0x74, 0x72, 0xc9, 0xae, 0xfd, 0x05, 0x6d, 0x24, 0xe1, 0x82, 0x2a, 0xc2, 0x9c, - 0x5d, 0xa9, 0x82, 0xfa, 0xce, 0xae, 0xda, 0x62, 0x84, 0xce, 0xae, 0x20, 0xa3, 0x0c, 0xb3, 0xe8, - 0x37, 0x6d, 0xc3, 0x2f, 0x19, 0xbb, 0x9a, 0x93, 0xea, 0x6a, 0xfc, 0x04, 0x57, 0x6e, 0x19, 0xed, - 0x68, 0x7d, 0x10, 0x6b, 0xc2, 0x82, 0xed, 0xb0, 0x49, 0x34, 0xce, 0xaa, 0x1c, 0x84, 0x05, 0xc7, - 0x86, 0x42, 0x90, 0xb0, 0x80, 0xa0, 0x26, 0x72, 0xdb, 0xde, 0x26, 0x14, 0xee, 0x96, 0x1c, 0xf5, - 0x09, 0xc5, 0x76, 0x4b, 0x1e, 0x0c, 0x0e, 0xa1, 0xfd, 0x8a, 0x94, 0x97, 0xfe, 0x21, 0x24, 0x44, - 0xe1, 0x21, 0xd4, 0x22, 0xb0, 0xbf, 0x27, 0x94, 0x54, 0xc9, 0xa5, 0xbf, 0xbf, 0xa5, 0x2c, 0xdc, - 0xdf, 0x9a, 0x81, 0xfd, 0x2d, 0x05, 0x6f, 0x33, 0x7e, 0x79, 0x44, 0x39, 0xf1, 0xf7, 0xb7, 0xcb, - 0x84, 0xfb, 0xbb, 0xc3, 0x9a, 0x4c, 0xc6, 0x76, 0x38, 0x59, 0x9c, 0xd7, 0x49, 0x95, 0x9d, 0xd3, - 0x71, 0xc0, 0x8a, 0x86, 0x90, 0x4c, 0x06, 0x85, 0x95, 0xcf, 0x9f, 0x8f, 0xa2, 0xdb, 0x6d, 0xb7, - 0xb3, 0xba, 0x96, 0x2b, 0x2b, 0x70, 0xff, 0xc2, 0xdf, 0xbf, 0x08, 0x8e, 0x9c, 0x26, 0x0e, 0x50, - 0xb3, 0xa2, 0xaa, 0xbf, 0x48, 0x67, 0x45, 0xad, 0x0b, 0xf5, 0xe5, 0x10, 0xeb, 0x96, 0x02, 0x12, - 0x55, 0x07, 0x29, 0x9a, 0x05, 0x4d, 0xf5, 0x4f, 0x2b, 0x3b, 0x48, 0x6b, 0xb0, 0xa0, 0xb5, 0xed, - 0x6d, 0x11, 0xc8, 0x82, 0xe6, 0x27, 0xe1, 0x50, 0xd8, 0xaf, 0xd8, 0xa2, 0xac, 0x7b, 0x86, 0x02, - 0x80, 0xc2, 0x43, 0xa1, 0x0b, 0x2b, 0x9f, 0xef, 0xa2, 0xdf, 0xb6, 0x87, 0x9f, 0xdd, 0xd8, 0x9b, - 0xf8, 0x98, 0xf2, 0x35, 0x71, 0x3c, 0x14, 0x37, 0x29, 0x5d, 0xeb, 0x99, 0xef, 0x52, 0x4e, 0xb2, - 0xbc, 0x1e, 0x3f, 0xf4, 0xdb, 0x68, 0xe5, 0x48, 0x4a, 0xe7, 0xe3, 0x60, 0x7c, 0xdb, 0x5d, 0x94, - 0x79, 0x96, 0x74, 0xcf, 0x72, 0x95, 0xae, 0x16, 0x87, 0xe3, 0x9b, 0x8d, 0xc1, 0x78, 0x3d, 0xa1, - 0x5c, 0xfe, 0x67, 0xba, 0x2a, 0xa9, 0x3f, 0x5e, 0x3b, 0x48, 0x38, 0x5e, 0x43, 0x14, 0xd6, 0x67, - 0x42, 0xf9, 0x21, 0x59, 0xb1, 0x05, 0x12, 0xaf, 0xb5, 0x38, 0x5c, 0x1f, 0x1b, 0x33, 0x59, 0x95, - 0xf6, 0x70, 0x50, 0x70, 0x5a, 0x15, 0x24, 0xdf, 0xcb, 0xc9, 0xac, 0x1e, 0x23, 0x31, 0xc6, 0xa5, - 0x90, 0xac, 0x0a, 0xa7, 0x3d, 0xcd, 0x78, 0x50, 0xef, 0x91, 0x25, 0xab, 0x32, 0x8e, 0x37, 0xa3, - 0x41, 0x7a, 0x9b, 0xd1, 0x41, 0xbd, 0xde, 0xb6, 0xab, 0xe4, 0x32, 0x5b, 0xd2, 0x34, 0xe0, 0xad, - 0x45, 0x06, 0x78, 0xb3, 0x50, 0x4f, 0xa7, 0x4d, 0xd8, 0xa2, 0x4a, 0x28, 0xda, 0x69, 0x52, 0xdc, - 0xdb, 0x69, 0x1a, 0x53, 0x1e, 0xfe, 0x6a, 0x14, 0xfd, 0x8e, 0x94, 0xda, 0x07, 0xac, 0xbb, 0xa4, - 0xbe, 0x3c, 0x67, 0xa4, 0x4a, 0xc7, 0x9f, 0xf9, 0xec, 0x78, 0x51, 0xed, 0xfa, 0xd9, 0x4d, 0x54, - 0x60, 0xb3, 0x1e, 0x66, 0xb5, 0x35, 0xe3, 0xbc, 0xcd, 0xea, 0x20, 0xe1, 0x66, 0x85, 0x28, 0x0c, - 0x20, 0x42, 0x2e, 0x0f, 0x33, 0x1e, 0xa2, 0xfa, 0xee, 0x89, 0xc6, 0x5a, 0x2f, 0x07, 0xe3, 0x63, - 0x23, 0x74, 0x47, 0xcb, 0x26, 0x66, 0xc3, 0x3f, 0x62, 0xe2, 0xa1, 0x38, 0xea, 0x59, 0xcf, 0x8a, - 0xb0, 0xe7, 0xce, 0xcc, 0x88, 0x87, 0xe2, 0x88, 0x67, 0x2b, 0xac, 0x85, 0x3c, 0x7b, 0x42, 0x5b, - 0x3c, 0x14, 0x87, 0xd9, 0x97, 0x62, 0xda, 0x75, 0xe1, 0x49, 0xc0, 0x0e, 0x5c, 0x1b, 0xd6, 0x07, - 0xb1, 0xca, 0xe1, 0xdf, 0x8c, 0xa2, 0xef, 0x1b, 0x8f, 0x47, 0x2c, 0xcd, 0x2e, 0x56, 0x12, 0x7a, - 0x43, 0xf2, 0x05, 0xad, 0xc7, 0xcf, 0x30, 0x6b, 0x5d, 0x56, 0x97, 0xe0, 0xf9, 0x8d, 0x74, 0xe0, - 0xdc, 0xd9, 0x2e, 0xcb, 0x7c, 0x35, 0xa5, 0xf3, 0x32, 0x47, 0xe7, 0x8e, 0x83, 0x84, 0xe7, 0x0e, - 0x44, 0x61, 0x56, 0x3e, 0x65, 0x4d, 0xce, 0xef, 0xcd, 0xca, 0x85, 0x28, 0x9c, 0x95, 0xb7, 0x08, - 0xcc, 0x95, 0xa6, 0x6c, 0x87, 0xe5, 0x39, 0x4d, 0x78, 0xf7, 0x21, 0xad, 0xd6, 0x34, 0x44, 0x38, - 0x57, 0x02, 0xa4, 0x39, 0xcf, 0x68, 0xf7, 0x90, 0xa4, 0xa2, 0x2f, 0x57, 0x87, 0x59, 0x71, 0x35, - 0xf6, 0xa7, 0x05, 0x06, 0x40, 0xce, 0x33, 0xbc, 0x20, 0xdc, 0xab, 0x9e, 0x15, 0x29, 0xf3, 0xef, - 0x55, 0x1b, 0x49, 0x78, 0xaf, 0xaa, 0x08, 0x68, 0xf2, 0x94, 0x62, 0x26, 0x1b, 0x49, 0xd8, 0xa4, - 0x22, 0x7c, 0xa1, 0x50, 0x9d, 0x7a, 0xa3, 0xa1, 0x10, 0x9c, 0x73, 0xaf, 0xf5, 0x72, 0x70, 0x84, - 0xb6, 0x9b, 0xd6, 0x3d, 0xca, 0x93, 0x4b, 0xff, 0x08, 0x75, 0x90, 0xf0, 0x08, 0x85, 0x28, 0xac, - 0xd2, 0x94, 0xe9, 0x4d, 0xf7, 0x43, 0xff, 0xf8, 0xe8, 0x6c, 0xb8, 0xd7, 0x7a, 0x39, 0xb8, 0x8d, - 0x3c, 0x98, 0x8b, 0x36, 0xf3, 0x0e, 0x72, 0x29, 0x0b, 0x6f, 0x23, 0x35, 0x03, 0x4b, 0x2f, 0x05, - 0x4d, 0x73, 0xfa, 0x4b, 0x6f, 0xe4, 0xe1, 0xd2, 0x3b, 0x9c, 0x72, 0xf2, 0x2f, 0x7a, 0x1b, 0x27, - 0xa5, 0xc7, 0xac, 0x99, 0x23, 0x6f, 0x48, 0x9e, 0xa5, 0x84, 0xd3, 0x29, 0xbb, 0xa2, 0x85, 0x7f, - 0xc7, 0xa4, 0x4a, 0x2b, 0xf9, 0xd8, 0x51, 0x08, 0xef, 0x98, 0xc2, 0x8a, 0x70, 0x9c, 0x48, 0xfa, - 0xac, 0xa6, 0x3b, 0xa4, 0x46, 0x22, 0x99, 0x83, 0x84, 0xc7, 0x09, 0x44, 0x61, 0xbe, 0x2a, 0xe5, - 0xaf, 0xde, 0x95, 0xb4, 0xca, 0x68, 0x91, 0x50, 0x7f, 0xbe, 0x0a, 0xa9, 0x70, 0xbe, 0xea, 0xa1, - 0x3b, 0xc7, 0x34, 0x3a, 0x38, 0x75, 0xef, 0x59, 0x40, 0x22, 0x70, 0xcf, 0x02, 0x41, 0x61, 0x25, - 0x0d, 0xe0, 0x3d, 0xea, 0xec, 0x58, 0x09, 0x1e, 0x75, 0xe2, 0x74, 0xe7, 0xf0, 0x4b, 0x33, 0x93, - 0x66, 0x9a, 0xf4, 0x14, 0x7d, 0x62, 0x4f, 0x97, 0xf5, 0x41, 0xac, 0xff, 0xb4, 0xed, 0x94, 0xe6, - 0x44, 0x2c, 0x21, 0x81, 0x23, 0xad, 0x96, 0x19, 0x72, 0xda, 0x66, 0xb1, 0xca, 0xe1, 0x5f, 0x8c, - 0xa2, 0x4f, 0x7c, 0x1e, 0x5f, 0x97, 0xc2, 0xef, 0xd3, 0x7e, 0x5b, 0x92, 0x44, 0x2e, 0x92, 0x84, - 0x35, 0x54, 0x19, 0xfe, 0x24, 0xfa, 0xb8, 0x15, 0x99, 0x7b, 0x26, 0xaa, 0x00, 0x6e, 0x02, 0xa5, - 0xcb, 0x0f, 0x39, 0xed, 0x7e, 0x6b, 0x30, 0x6f, 0xf6, 0x26, 0x6e, 0xb9, 0x6a, 0xb0, 0x37, 0xd1, - 0x36, 0x94, 0x18, 0xd9, 0x9b, 0x78, 0x30, 0x73, 0xaa, 0x61, 0x57, 0xef, 0x6d, 0xc6, 0x2f, 0x45, - 0xee, 0x03, 0x4e, 0x35, 0x9c, 0xb2, 0x6a, 0x08, 0x39, 0xd5, 0x40, 0x61, 0x98, 0x1d, 0xb4, 0x60, - 0x33, 0x37, 0x7d, 0x71, 0x55, 0x1b, 0xb2, 0x67, 0xe6, 0xa3, 0x7e, 0x10, 0x8e, 0xd7, 0x56, 0xac, - 0xb6, 0x21, 0x4f, 0x42, 0x16, 0xc0, 0x56, 0x64, 0x7d, 0x10, 0xab, 0x1c, 0xfe, 0x59, 0xf4, 0xbd, - 0x4e, 0xc5, 0xf6, 0x28, 0xe1, 0x8b, 0x8a, 0xa6, 0xe3, 0xad, 0x9e, 0x72, 0xb7, 0xa0, 0x76, 0xfd, - 0x74, 0xb8, 0x42, 0x27, 0x5f, 0x6e, 0x39, 0x39, 0xac, 0x74, 0x19, 0x9e, 0x85, 0x4c, 0xba, 0x6c, - 0x30, 0x5f, 0xc6, 0x75, 0x3a, 0x5b, 0x5e, 0x7b, 0x74, 0x6d, 0x2f, 0x49, 0x96, 0x8b, 0x47, 0x4e, - 0x9f, 0x85, 0x8c, 0x3a, 0x68, 0x70, 0xcb, 0x8b, 0xaa, 0x74, 0x22, 0xb3, 0x98, 0xe3, 0xd6, 0x56, - 0x69, 0x03, 0x8f, 0x04, 0x9e, 0x9d, 0xd2, 0xe6, 0x40, 0x5a, 0xb9, 0xe5, 0xed, 0x51, 0x61, 0xf3, - 0xb3, 0x3d, 0xc8, 0x7d, 0x5e, 0x95, 0xaa, 0x67, 0xa4, 0x6f, 0x0e, 0xa4, 0x95, 0xd7, 0x3f, 0x8d, - 0x3e, 0xee, 0x7a, 0x55, 0x0b, 0xd1, 0x56, 0xaf, 0x29, 0xb0, 0x16, 0x3d, 0x1d, 0xae, 0x60, 0xb6, - 0x17, 0x5f, 0x65, 0x35, 0x67, 0xd5, 0x6a, 0x72, 0xc9, 0xae, 0xdb, 0xfb, 0xdb, 0xee, 0x6c, 0x55, - 0x40, 0x6c, 0x11, 0xc8, 0xf6, 0xc2, 0x4f, 0x76, 0x5c, 0x99, 0x7b, 0xde, 0x35, 0xe2, 0xca, 0x22, - 0x7a, 0x5c, 0xb9, 0xa4, 0x89, 0x55, 0x6d, 0xad, 0xcc, 0xa5, 0xf4, 0x35, 0x7f, 0x51, 0xbb, 0x17, - 0xd3, 0x1f, 0xf5, 0x83, 0x26, 0x63, 0x51, 0xe2, 0xdd, 0xec, 0xe2, 0x42, 0xd7, 0xc9, 0x5f, 0x52, - 0x1b, 0x41, 0x32, 0x16, 0x04, 0x35, 0x09, 0xf0, 0x5e, 0x96, 0x53, 0x71, 0xba, 0xfe, 0xfa, 0xe2, - 0x22, 0x67, 0x24, 0x05, 0x09, 0x70, 0x23, 0x8e, 0x6d, 0x39, 0x92, 0x00, 0xfb, 0x38, 0x73, 0xfd, - 0xab, 0x91, 0x9e, 0xd2, 0x84, 0x15, 0x49, 0x96, 0xc3, 0xeb, 0x6c, 0x42, 0x53, 0x0b, 0x91, 0xeb, - 0x5f, 0x1d, 0xc8, 0x2c, 0x8c, 0x8d, 0xa8, 0x99, 0xf6, 0x6d, 0xf9, 0x1f, 0x74, 0x15, 0x2d, 0x31, - 0xb2, 0x30, 0x7a, 0x30, 0xb3, 0x0f, 0x6c, 0x84, 0x67, 0xa5, 0x30, 0x7e, 0xa7, 0xab, 0x25, 0x25, - 0xc8, 0x3e, 0xd0, 0x25, 0xcc, 0x7e, 0xa6, 0xf9, 0x7d, 0x97, 0x5d, 0x17, 0xc2, 0xe8, 0xdd, 0xae, - 0x4a, 0x2b, 0x43, 0xf6, 0x33, 0x90, 0x51, 0x86, 0x7f, 0x12, 0xfd, 0x7f, 0x61, 0xb8, 0x62, 0xe5, - 0xf8, 0x96, 0x47, 0xa1, 0xb2, 0x6e, 0x9e, 0xdd, 0x46, 0xe5, 0xe6, 0x02, 0xa5, 0x1e, 0x1b, 0x67, - 0x35, 0x99, 0xd1, 0xf1, 0x7d, 0xa4, 0xc7, 0x85, 0x14, 0xb9, 0x40, 0xd9, 0xa5, 0xdc, 0x51, 0x71, - 0xcc, 0x52, 0x65, 0xdd, 0x53, 0x43, 0x2d, 0x0c, 0x8d, 0x0a, 0x1b, 0x32, 0xc9, 0xcc, 0x31, 0x59, - 0x66, 0x33, 0xbd, 0xe0, 0xc8, 0xb8, 0x55, 0x83, 0x64, 0xc6, 0x30, 0xb1, 0x05, 0x21, 0xc9, 0x0c, - 0x0a, 0x2b, 0x9f, 0xff, 0x3c, 0x8a, 0xee, 0x18, 0x66, 0xbf, 0x3d, 0x39, 0x3b, 0x28, 0x2e, 0x58, - 0x93, 0xfa, 0x1c, 0x66, 0xc5, 0x55, 0x3d, 0xfe, 0x02, 0x33, 0xe9, 0xe7, 0x75, 0x51, 0xbe, 0xbc, - 0xb1, 0x9e, 0xc9, 0x5a, 0xdb, 0x63, 0x25, 0xf3, 0x6c, 0x59, 0x6a, 0x80, 0xac, 0x55, 0x9f, 0x3e, - 0x41, 0x0e, 0xc9, 0x5a, 0x43, 0xbc, 0xe9, 0x62, 0xed, 0x3c, 0x67, 0x05, 0xec, 0x62, 0x63, 0xa1, - 0x11, 0x22, 0x5d, 0xdc, 0x81, 0x4c, 0x3c, 0x6e, 0x45, 0xf2, 0x04, 0x64, 0x3b, 0xcf, 0x41, 0x3c, - 0xd6, 0xaa, 0x1a, 0x40, 0xe2, 0xb1, 0x17, 0x54, 0x7e, 0x4e, 0xa3, 0xef, 0x34, 0x4d, 0x7a, 0x52, - 0xd1, 0x65, 0x46, 0xe1, 0x35, 0x08, 0x4b, 0x82, 0xcc, 0x7f, 0x97, 0x30, 0x33, 0xeb, 0xac, 0xa8, - 0xcb, 0x9c, 0xd4, 0x97, 0xea, 0xc1, 0xb8, 0x5b, 0xe7, 0x56, 0x08, 0x1f, 0x8d, 0x3f, 0xe8, 0xa1, - 0x4c, 0x50, 0x6f, 0x65, 0x3a, 0xc4, 0x3c, 0xf4, 0xab, 0x76, 0xc2, 0xcc, 0x5a, 0x2f, 0x67, 0x4e, - 0x9f, 0xf7, 0x49, 0x9e, 0xd3, 0x6a, 0xd5, 0xca, 0x8e, 0x48, 0x91, 0x5d, 0xd0, 0x9a, 0x83, 0xd3, - 0x67, 0x45, 0xc5, 0x10, 0x43, 0x4e, 0x9f, 0x03, 0xb8, 0xc9, 0xe6, 0x81, 0xe7, 0x83, 0x22, 0xa5, - 0xef, 0x40, 0x36, 0x0f, 0xed, 0x08, 0x06, 0xc9, 0xe6, 0x31, 0xd6, 0x9c, 0xc2, 0xbe, 0xcc, 0x59, - 0x72, 0xa5, 0x96, 0x00, 0xb7, 0x83, 0x85, 0x04, 0xae, 0x01, 0x77, 0x43, 0x88, 0x59, 0x04, 0x84, - 0xe0, 0x94, 0x96, 0x39, 0x49, 0xe0, 0x5d, 0x18, 0xa9, 0xa3, 0x64, 0xc8, 0x22, 0x00, 0x19, 0x50, - 0x5c, 0x75, 0xc7, 0xc6, 0x57, 0x5c, 0x70, 0xc5, 0xe6, 0x6e, 0x08, 0x31, 0xcb, 0xa0, 0x10, 0x4c, - 0xca, 0x3c, 0xe3, 0x60, 0x1a, 0x48, 0x0d, 0x21, 0x41, 0xa6, 0x81, 0x4b, 0x00, 0x93, 0x47, 0xb4, - 0x9a, 0x51, 0xaf, 0x49, 0x21, 0x09, 0x9a, 0x6c, 0x09, 0x73, 0x65, 0x52, 0xd6, 0x9d, 0x95, 0x2b, - 0x70, 0x65, 0x52, 0x55, 0x8b, 0x95, 0x2b, 0xe4, 0xca, 0xa4, 0x03, 0x80, 0x22, 0x9e, 0x90, 0x9a, - 0xfb, 0x8b, 0x28, 0x24, 0xc1, 0x22, 0xb6, 0x84, 0x59, 0xa3, 0x65, 0x11, 0x17, 0x1c, 0xac, 0xd1, - 0xaa, 0x00, 0xd6, 0xd3, 0xe0, 0xdb, 0xa8, 0xdc, 0x44, 0x12, 0xd9, 0x2b, 0x94, 0xef, 0x65, 0x34, - 0x4f, 0x6b, 0x10, 0x49, 0x54, 0xbb, 0xb7, 0x52, 0x24, 0x92, 0x74, 0x29, 0x30, 0x94, 0xd4, 0x59, - 0xb5, 0xaf, 0x76, 0xe0, 0x98, 0xfa, 0x6e, 0x08, 0x31, 0xf1, 0xa9, 0x2d, 0xf4, 0x0e, 0xa9, 0xaa, - 0xac, 0x59, 0xfc, 0x1f, 0xfa, 0x0b, 0xd4, 0xca, 0x91, 0xf8, 0xe4, 0xe3, 0xc0, 0xf4, 0x6a, 0x03, - 0xb7, 0xaf, 0x60, 0x30, 0x74, 0xdf, 0x0b, 0x32, 0x26, 0xe3, 0x14, 0x12, 0xeb, 0x71, 0xa6, 0xaf, - 0x35, 0x3d, 0x4f, 0x33, 0x1f, 0xf6, 0x61, 0xd6, 0x2b, 0x0d, 0xda, 0xc5, 0x11, 0x5b, 0xd2, 0x29, - 0x7b, 0xf5, 0x2e, 0xab, 0x79, 0x56, 0xcc, 0xd4, 0xca, 0xfd, 0x1c, 0xb1, 0xe4, 0x83, 0x91, 0x57, - 0x1a, 0x7a, 0x95, 0x4c, 0x02, 0x01, 0xca, 0x72, 0x4c, 0xaf, 0xbd, 0x09, 0x04, 0xb4, 0xa8, 0x39, - 0x24, 0x81, 0x08, 0xf1, 0xe6, 0x1c, 0x45, 0x3b, 0x57, 0xef, 0x7d, 0x4e, 0x59, 0x9b, 0xcb, 0x61, - 0xd6, 0x20, 0x88, 0x6c, 0x65, 0x83, 0x0a, 0x66, 0x7f, 0xa9, 0xfd, 0x9b, 0x29, 0xf6, 0x08, 0xb1, - 0xd3, 0x9d, 0x66, 0x8f, 0x07, 0x90, 0x1e, 0x57, 0xe6, 0x99, 0x3c, 0xe6, 0xaa, 0xfb, 0x48, 0xfe, - 0xf1, 0x00, 0xd2, 0x3a, 0x93, 0xb1, 0xab, 0xf5, 0x92, 0x24, 0x57, 0xb3, 0x8a, 0x2d, 0x8a, 0x74, - 0x87, 0xe5, 0xac, 0x02, 0x67, 0x32, 0x4e, 0xa9, 0x01, 0x8a, 0x9c, 0xc9, 0xf4, 0xa8, 0x98, 0x0c, - 0xce, 0x2e, 0xc5, 0x76, 0x9e, 0xcd, 0xe0, 0x8e, 0xda, 0x31, 0x24, 0x00, 0x24, 0x83, 0xf3, 0x82, - 0x9e, 0x41, 0x24, 0x77, 0xdc, 0x3c, 0x4b, 0x48, 0x2e, 0xfd, 0x6d, 0xe1, 0x66, 0x1c, 0xb0, 0x77, - 0x10, 0x79, 0x14, 0x3c, 0xf5, 0x9c, 0x2e, 0xaa, 0xe2, 0xa0, 0xe0, 0x0c, 0xad, 0x67, 0x0b, 0xf4, - 0xd6, 0xd3, 0x02, 0x41, 0x58, 0x9d, 0xd2, 0x77, 0x4d, 0x69, 0x9a, 0x7f, 0x7c, 0x61, 0xb5, 0xf9, - 0x3d, 0x56, 0xf2, 0x50, 0x58, 0x05, 0x1c, 0xa8, 0x8c, 0x72, 0x22, 0x07, 0x4c, 0x40, 0xdb, 0x1d, - 0x26, 0x8f, 0xfa, 0x41, 0xbf, 0x9f, 0x09, 0x5f, 0xe5, 0x34, 0xe4, 0x47, 0x00, 0x43, 0xfc, 0xb4, - 0xa0, 0x39, 0x6e, 0x71, 0xea, 0x73, 0x49, 0x93, 0xab, 0xce, 0x15, 0x23, 0xb7, 0xa0, 0x12, 0x41, - 0x8e, 0x5b, 0x10, 0xd4, 0xdf, 0x45, 0x07, 0x09, 0x2b, 0x42, 0x5d, 0xd4, 0xc8, 0x87, 0x74, 0x91, - 0xe2, 0xcc, 0xe6, 0x57, 0x4b, 0xd5, 0xc8, 0x94, 0xdd, 0xb4, 0x8e, 0x58, 0xb0, 0x21, 0x64, 0xf3, - 0x8b, 0xc2, 0x26, 0x27, 0x87, 0x3e, 0x8f, 0xba, 0xf7, 0xaf, 0x3b, 0x56, 0x8e, 0xf0, 0xfb, 0xd7, - 0x18, 0x8b, 0x57, 0x52, 0x8e, 0x91, 0x1e, 0x2b, 0xee, 0x38, 0xd9, 0x18, 0x06, 0x9b, 0x2d, 0x8f, - 0xe3, 0x73, 0x27, 0xa7, 0xa4, 0x92, 0x5e, 0x37, 0x03, 0x86, 0x0c, 0x86, 0x6c, 0x79, 0x02, 0x38, - 0x08, 0x61, 0x8e, 0xe7, 0x1d, 0x56, 0x70, 0x5a, 0x70, 0x5f, 0x08, 0x73, 0x8d, 0x29, 0x30, 0x14, - 0xc2, 0x30, 0x05, 0x30, 0x6e, 0xc5, 0x79, 0x10, 0xe5, 0xc7, 0x64, 0xee, 0xcd, 0xd8, 0xe4, 0x59, - 0x8f, 0x94, 0x87, 0xc6, 0x2d, 0xe0, 0xac, 0x87, 0x7c, 0xb6, 0x97, 0x29, 0xa9, 0x66, 0xfa, 0x74, - 0x23, 0x1d, 0x3f, 0xc5, 0xed, 0xb8, 0x24, 0xf2, 0x90, 0x2f, 0xac, 0x01, 0xc2, 0xce, 0xc1, 0x9c, - 0xcc, 0x74, 0x4d, 0x3d, 0x35, 0x10, 0xf2, 0x4e, 0x55, 0x1f, 0xf5, 0x83, 0xc0, 0xcf, 0x9b, 0x2c, - 0xa5, 0x2c, 0xe0, 0x47, 0xc8, 0x87, 0xf8, 0x81, 0x20, 0xc8, 0xde, 0x9a, 0x7a, 0xcb, 0x1d, 0xdd, - 0x76, 0x91, 0xaa, 0x7d, 0x6c, 0x8c, 0x34, 0x0f, 0xe0, 0x42, 0xd9, 0x1b, 0xc2, 0x83, 0x39, 0xda, - 0x1e, 0xd0, 0x86, 0xe6, 0xa8, 0x3e, 0x7f, 0x1d, 0x32, 0x47, 0x7d, 0xb0, 0xf2, 0xf9, 0x33, 0x35, - 0x47, 0x77, 0x09, 0x27, 0x4d, 0xde, 0xfe, 0x26, 0xa3, 0xd7, 0x6a, 0x23, 0xec, 0xa9, 0x6f, 0x4b, - 0xc5, 0xe2, 0xc5, 0x3b, 0xb0, 0x2b, 0xde, 0x1a, 0xcc, 0x07, 0x7c, 0xab, 0x1d, 0x42, 0xaf, 0x6f, - 0xb0, 0x55, 0xd8, 0x1a, 0xcc, 0x07, 0x7c, 0xab, 0x37, 0x7a, 0x7b, 0x7d, 0x83, 0xd7, 0x7a, 0xb7, - 0x06, 0xf3, 0xca, 0xf7, 0x5f, 0xb6, 0x13, 0xd7, 0x76, 0xde, 0xe4, 0x61, 0x09, 0xcf, 0x96, 0xd4, - 0x97, 0x4e, 0xba, 0xf6, 0x34, 0x1a, 0x4a, 0x27, 0x71, 0x15, 0xeb, 0x33, 0x30, 0xbe, 0x52, 0x9c, - 0xb0, 0x3a, 0x13, 0x0f, 0xe9, 0x9f, 0x0f, 0x30, 0xda, 0xc2, 0xa1, 0x4d, 0x53, 0x48, 0xc9, 0x3c, - 0x6e, 0x74, 0x50, 0x73, 0xa3, 0x78, 0x23, 0x60, 0xaf, 0x7b, 0xb1, 0x78, 0x73, 0x20, 0x6d, 0x1e, - 0xfc, 0x39, 0x8c, 0xfd, 0xc4, 0x31, 0xd4, 0xab, 0xde, 0x87, 0x8e, 0x4f, 0x87, 0x2b, 0x28, 0xf7, - 0x7f, 0xdd, 0xee, 0x2b, 0xa0, 0x7f, 0x35, 0x09, 0x9e, 0x0d, 0xb1, 0x08, 0x26, 0xc2, 0xf3, 0x1b, - 0xe9, 0xa8, 0x82, 0xfc, 0x7d, 0xbb, 0x81, 0x6e, 0x51, 0xf1, 0x5e, 0xc5, 0xeb, 0x2a, 0xa5, 0x95, - 0x9a, 0x13, 0xa1, 0x6e, 0x35, 0x30, 0x9c, 0x19, 0x2f, 0x6e, 0xa8, 0x65, 0x7d, 0x14, 0xc8, 0x81, - 0xd5, 0xfb, 0x7f, 0x56, 0x79, 0x42, 0x96, 0x2d, 0x1a, 0x16, 0xe8, 0x8b, 0x9b, 0xaa, 0x61, 0x73, - 0xc5, 0x82, 0xc5, 0x37, 0x06, 0x9e, 0x0f, 0x34, 0xec, 0x7c, 0x75, 0xe0, 0xf3, 0x9b, 0x29, 0xa9, - 0xb2, 0xfc, 0xc7, 0x28, 0x7a, 0xe0, 0xb0, 0xe6, 0x79, 0x02, 0x38, 0xf5, 0xf8, 0x71, 0xc0, 0x3e, - 0xa6, 0xa4, 0x0b, 0xf7, 0xbb, 0xbf, 0x9c, 0xb2, 0xf9, 0x82, 0x8e, 0xa3, 0xb2, 0x97, 0xe5, 0x9c, - 0x56, 0xdd, 0x2f, 0xe8, 0xb8, 0x76, 0x25, 0x15, 0xe3, 0x5f, 0xd0, 0x09, 0xe0, 0xd6, 0x17, 0x74, - 0x3c, 0x9e, 0xbd, 0x5f, 0xd0, 0xf1, 0x5a, 0x0b, 0x7e, 0x41, 0x27, 0xac, 0x81, 0x85, 0xf7, 0xb6, - 0x08, 0xf2, 0xdc, 0x7a, 0x90, 0x45, 0xf7, 0x18, 0xfb, 0xd9, 0x4d, 0x54, 0x90, 0x05, 0x4e, 0x72, - 0xe2, 0x9e, 0xdb, 0x80, 0x36, 0x75, 0xee, 0xba, 0x6d, 0x0d, 0xe6, 0x95, 0xef, 0x9f, 0xaa, 0xdd, - 0x8d, 0x0e, 0xe7, 0xac, 0x12, 0x5f, 0x4f, 0x5a, 0x0f, 0x85, 0xe7, 0xc6, 0x82, 0xdd, 0xf3, 0x1b, - 0xc3, 0x60, 0xa4, 0xba, 0x0d, 0xa1, 0x3a, 0x3d, 0xee, 0x33, 0x04, 0xba, 0x7c, 0x6b, 0x30, 0x8f, - 0x2c, 0x23, 0xd2, 0xb7, 0xec, 0xed, 0x01, 0xc6, 0xdc, 0xbe, 0x7e, 0x3a, 0x5c, 0x41, 0xb9, 0x5f, - 0xaa, 0xb4, 0xd1, 0x76, 0x2f, 0xfa, 0x79, 0xb3, 0xcf, 0xd4, 0xc4, 0xe9, 0xe6, 0x78, 0x28, 0x1e, - 0x4a, 0x20, 0xec, 0x25, 0xb4, 0x2f, 0x81, 0xf0, 0x2e, 0xa3, 0x9f, 0xdf, 0x4c, 0x49, 0x95, 0xe5, - 0x9f, 0x46, 0xd1, 0x6d, 0xb4, 0x2c, 0x6a, 0x1c, 0x7c, 0x31, 0xd4, 0x32, 0x18, 0x0f, 0x5f, 0xde, - 0x58, 0x4f, 0x15, 0xea, 0x5f, 0x47, 0xd1, 0x9d, 0x40, 0xa1, 0xe4, 0x00, 0xb9, 0x81, 0x75, 0x77, - 0xa0, 0xfc, 0xf0, 0xe6, 0x8a, 0xd8, 0x72, 0x6f, 0xe3, 0x93, 0xee, 0xa7, 0x65, 0x02, 0xb6, 0x27, - 0xf8, 0xa7, 0x65, 0xfa, 0xb5, 0xe0, 0x21, 0x0f, 0x39, 0x6f, 0x37, 0x5d, 0xde, 0x43, 0x1e, 0x71, - 0x43, 0x0d, 0xec, 0x39, 0xd6, 0x7a, 0x39, 0x9f, 0x93, 0x57, 0xef, 0x4a, 0x52, 0xa4, 0xb8, 0x13, - 0x29, 0xef, 0x77, 0xa2, 0x39, 0x78, 0x38, 0xd6, 0x48, 0x4f, 0x59, 0xbb, 0x91, 0x7a, 0x8c, 0xe9, - 0x6b, 0x24, 0x78, 0x38, 0xd6, 0x41, 0x11, 0x6f, 0x2a, 0x6b, 0x0c, 0x79, 0x03, 0xc9, 0xe2, 0x93, - 0x21, 0x28, 0x48, 0xd1, 0xb5, 0x37, 0x7d, 0xe6, 0xbe, 0x11, 0xb2, 0xd2, 0x39, 0x77, 0xdf, 0x1c, - 0x48, 0x23, 0x6e, 0x27, 0x94, 0x7f, 0x45, 0x49, 0x4a, 0xab, 0xa0, 0x5b, 0x4d, 0x0d, 0x72, 0x6b, - 0xd3, 0x3e, 0xb7, 0x3b, 0x2c, 0x5f, 0xcc, 0x0b, 0xd5, 0x99, 0xa8, 0x5b, 0x9b, 0xea, 0x77, 0x0b, - 0x68, 0x78, 0x2c, 0x68, 0xdc, 0x8a, 0xf4, 0xf2, 0x49, 0xd8, 0x8c, 0x93, 0x55, 0xae, 0x0f, 0x62, - 0xf1, 0x7a, 0xaa, 0x61, 0xd4, 0x53, 0x4f, 0x30, 0x92, 0x36, 0x07, 0xd2, 0xf0, 0x7c, 0xce, 0x72, - 0xab, 0xc7, 0xd3, 0x56, 0x8f, 0xad, 0xce, 0x90, 0x7a, 0x3a, 0x5c, 0x01, 0x9e, 0x86, 0xaa, 0x51, - 0x75, 0x98, 0xd5, 0x7c, 0x2f, 0xcb, 0xf3, 0xf1, 0x7a, 0x60, 0x98, 0xb4, 0x50, 0xf0, 0x34, 0xd4, - 0x03, 0x23, 0x23, 0xb9, 0x3d, 0x3d, 0x2c, 0xc6, 0x7d, 0x76, 0x04, 0x35, 0x68, 0x24, 0xdb, 0x34, - 0x38, 0xd1, 0xb2, 0x9a, 0x5a, 0xd7, 0x36, 0x0e, 0x37, 0x5c, 0xa7, 0xc2, 0x5b, 0x83, 0x79, 0xf0, - 0xb8, 0x5d, 0x50, 0x62, 0x65, 0xb9, 0x8f, 0x99, 0x70, 0x56, 0x92, 0x07, 0x3d, 0x14, 0x38, 0x15, - 0x94, 0xd3, 0xe8, 0x6d, 0x96, 0xce, 0x28, 0xf7, 0x3e, 0x29, 0xb2, 0x81, 0xe0, 0x93, 0x22, 0x00, - 0x82, 0xae, 0x93, 0xbf, 0xeb, 0xe3, 0xd0, 0x83, 0xd4, 0xd7, 0x75, 0x4a, 0xd9, 0xa2, 0x42, 0x5d, - 0xe7, 0xa5, 0x41, 0x34, 0xd0, 0x6e, 0xd5, 0xab, 0xf1, 0x4f, 0x42, 0x66, 0xc0, 0xfb, 0xf1, 0xeb, - 0x83, 0x58, 0xb0, 0xa2, 0x18, 0x87, 0xd9, 0x3c, 0xe3, 0xbe, 0x15, 0xc5, 0xb2, 0xd1, 0x20, 0xa1, - 0x15, 0xa5, 0x8b, 0x62, 0xd5, 0x6b, 0x72, 0x84, 0x83, 0x34, 0x5c, 0x3d, 0xc9, 0x0c, 0xab, 0x9e, - 0x66, 0x3b, 0x0f, 0x36, 0x0b, 0x3d, 0x64, 0xf8, 0xa5, 0xda, 0x2c, 0x7b, 0xc6, 0xb6, 0x78, 0x65, - 0x12, 0x82, 0xa1, 0xa8, 0x83, 0x29, 0xc0, 0x03, 0xfb, 0x86, 0x6b, 0x9f, 0xbd, 0x96, 0x25, 0x25, - 0x15, 0x29, 0x12, 0xef, 0xe6, 0x54, 0x18, 0xec, 0x90, 0xa1, 0xcd, 0x29, 0xaa, 0x01, 0x1e, 0x9b, - 0xbb, 0x2f, 0x3b, 0x7a, 0xa6, 0x82, 0x7e, 0xab, 0xd0, 0x7d, 0xd7, 0xf1, 0xf1, 0x00, 0x12, 0x3e, - 0x36, 0x6f, 0x01, 0x7d, 0xf0, 0x2d, 0x9d, 0x7e, 0x16, 0x30, 0xe5, 0xa2, 0xa1, 0x8d, 0x30, 0xae, - 0x02, 0x06, 0xb5, 0x4e, 0x70, 0x29, 0xff, 0x09, 0x5d, 0xf9, 0x06, 0xb5, 0xc9, 0x4f, 0x05, 0x12, - 0x1a, 0xd4, 0x5d, 0x14, 0xe4, 0x99, 0xf6, 0x3e, 0xe8, 0x61, 0x40, 0xdf, 0xde, 0xfa, 0xac, 0xf5, - 0x72, 0x60, 0xe6, 0xec, 0x66, 0x4b, 0xe7, 0x39, 0x81, 0xa7, 0xa0, 0xbb, 0xd9, 0xd2, 0xff, 0x98, - 0x60, 0x7d, 0x10, 0x0b, 0x1f, 0xc9, 0x13, 0x4e, 0xdf, 0xb5, 0xcf, 0xca, 0x3d, 0xc5, 0x15, 0xf2, - 0xce, 0xc3, 0xf2, 0x47, 0xfd, 0xa0, 0xb9, 0x00, 0x7b, 0x52, 0xb1, 0x84, 0xd6, 0xb5, 0xfa, 0xde, - 0x9e, 0x7b, 0xc3, 0x48, 0xc9, 0x62, 0xf0, 0xb5, 0xbd, 0xfb, 0x61, 0x48, 0xd9, 0xfe, 0x2a, 0x7a, - 0xff, 0x90, 0xcd, 0x26, 0xb4, 0x48, 0xc7, 0x3f, 0x70, 0xaf, 0x9c, 0xb2, 0x59, 0xdc, 0xfc, 0xac, - 0xed, 0xdd, 0xc2, 0xc4, 0xe6, 0xd2, 0xdc, 0x2e, 0x3d, 0x5f, 0xcc, 0x26, 0x9c, 0x70, 0x70, 0x69, - 0x4e, 0xfc, 0x1e, 0x37, 0x02, 0xe4, 0xd2, 0x9c, 0x03, 0x00, 0x7b, 0xd3, 0x8a, 0x52, 0xaf, 0xbd, - 0x46, 0x10, 0xb4, 0xa7, 0x00, 0xb3, 0xea, 0x6a, 0x7b, 0x4d, 0x62, 0x0b, 0x2f, 0xb9, 0x19, 0x1d, - 0x21, 0x45, 0x56, 0xdd, 0x2e, 0x65, 0x06, 0x83, 0xac, 0xbe, 0xf8, 0x62, 0xc6, 0x62, 0x3e, 0x27, - 0xd5, 0x0a, 0x0c, 0x06, 0x55, 0x4b, 0x0b, 0x40, 0x06, 0x83, 0x17, 0x34, 0xa3, 0xbc, 0x6d, 0xe6, - 0xe4, 0x6a, 0x9f, 0x55, 0x6c, 0xc1, 0xb3, 0x82, 0xc2, 0xaf, 0x26, 0xe8, 0x06, 0xb5, 0x19, 0x64, - 0x94, 0x63, 0xac, 0xc9, 0x0a, 0x05, 0x21, 0xef, 0xdf, 0x89, 0xaf, 0xd6, 0xd6, 0x9c, 0x55, 0xf0, - 0xf9, 0x9b, 0xb4, 0x02, 0x21, 0x24, 0x2b, 0x44, 0x61, 0xd0, 0xf7, 0x27, 0x59, 0x31, 0xf3, 0xf6, - 0xfd, 0x89, 0xfd, 0xcd, 0xc7, 0x3b, 0x38, 0x60, 0xe2, 0xbb, 0x6c, 0x34, 0xf9, 0x65, 0x22, 0xf5, - 0xee, 0xa3, 0xb7, 0xd1, 0x6d, 0x02, 0x89, 0xef, 0x7e, 0x12, 0xb8, 0x7a, 0x5d, 0xd2, 0x82, 0xa6, - 0xed, 0x2d, 0x33, 0x9f, 0x2b, 0x87, 0x08, 0xba, 0x82, 0xa4, 0x89, 0xaa, 0x42, 0x7e, 0xba, 0x28, - 0x4e, 0x2a, 0x76, 0x91, 0xe5, 0xb4, 0x02, 0x51, 0x55, 0xaa, 0x5b, 0x72, 0x24, 0xaa, 0xfa, 0x38, - 0x73, 0x5d, 0x41, 0x48, 0x9d, 0x4f, 0x2f, 0x4f, 0x2b, 0x92, 0xc0, 0xeb, 0x0a, 0xd2, 0x46, 0x17, - 0x43, 0x4e, 0xd2, 0x02, 0xb8, 0x95, 0x18, 0x48, 0xd7, 0xc5, 0x4a, 0x8c, 0x0f, 0xf5, 0xee, 0x9d, - 0xf8, 0x12, 0x62, 0x0d, 0x12, 0x03, 0x65, 0xce, 0x47, 0x22, 0x89, 0x41, 0x58, 0xc3, 0xcc, 0xb6, - 0x23, 0xca, 0xab, 0x2c, 0xa9, 0x27, 0x94, 0x9f, 0x90, 0x8a, 0xcc, 0x29, 0xa7, 0x15, 0x9c, 0x6d, - 0x0a, 0x89, 0x1d, 0x06, 0x99, 0x6d, 0x18, 0xab, 0x1c, 0xfe, 0x5e, 0xf4, 0x61, 0xb3, 0xd8, 0xd0, - 0x42, 0xfd, 0xa5, 0x82, 0x57, 0xe2, 0x4f, 0x9c, 0x8c, 0x3f, 0xd2, 0x36, 0x26, 0xbc, 0xa2, 0x64, - 0xde, 0xda, 0xfe, 0x40, 0xff, 0x2e, 0xc0, 0xa7, 0xa3, 0x66, 0x50, 0x1c, 0x33, 0x9e, 0x5d, 0x34, - 0x7b, 0x3b, 0xf5, 0xda, 0x0a, 0x18, 0x14, 0xb6, 0x38, 0x0e, 0x7c, 0x8c, 0xc0, 0xc7, 0x99, 0x60, - 0x67, 0x4b, 0x4f, 0x69, 0x99, 0xc3, 0x60, 0xe7, 0x68, 0x0b, 0x00, 0x09, 0x76, 0x5e, 0xd0, 0x8c, - 0x70, 0x5b, 0x3c, 0xa5, 0xe1, 0xca, 0x4c, 0xe9, 0xb0, 0xca, 0x4c, 0x9d, 0x37, 0x01, 0xf2, 0xe8, - 0xc3, 0x23, 0x3a, 0x3f, 0xa7, 0x55, 0x7d, 0x99, 0x95, 0xfb, 0xcd, 0x2a, 0x4f, 0xf8, 0x02, 0xbe, - 0x2b, 0x67, 0x88, 0x58, 0x23, 0x48, 0x2a, 0x84, 0xa0, 0x26, 0x9c, 0x1a, 0xe0, 0xa0, 0x3e, 0x26, - 0x73, 0x2a, 0x3e, 0xad, 0x30, 0x5e, 0xc7, 0x8c, 0x58, 0x10, 0x12, 0x4e, 0x51, 0xd8, 0x7a, 0xa9, - 0xc8, 0x30, 0xa7, 0x74, 0xd6, 0x8c, 0xb0, 0xea, 0x84, 0xac, 0xe6, 0xb4, 0xe0, 0xca, 0x24, 0x38, - 0x08, 0xb6, 0x4c, 0xfa, 0x79, 0xe4, 0x20, 0x78, 0x88, 0x9e, 0x35, 0xbf, 0x9d, 0x86, 0x3f, 0x61, - 0x15, 0x97, 0x7f, 0x87, 0xe4, 0xac, 0xca, 0xc1, 0xfc, 0x76, 0x1b, 0xd5, 0x21, 0x91, 0xf9, 0x1d, - 0xd6, 0xb0, 0x3e, 0xe0, 0xed, 0x94, 0xe1, 0x0d, 0xad, 0xf4, 0x38, 0x79, 0x35, 0x27, 0x59, 0xae, - 0x46, 0xc3, 0x8f, 0x02, 0xb6, 0x11, 0x1d, 0xe4, 0x03, 0xde, 0x43, 0x75, 0xad, 0x4f, 0x9e, 0x87, - 0x4b, 0x08, 0xce, 0xa5, 0x7b, 0xec, 0x23, 0xe7, 0xd2, 0xfd, 0x5a, 0x66, 0xbb, 0x68, 0x58, 0xc1, - 0xad, 0x04, 0xb1, 0xc3, 0x52, 0x78, 0x48, 0x65, 0xd9, 0x04, 0x20, 0xb2, 0x5d, 0x0c, 0x2a, 0x98, - 0xf5, 0xd5, 0x60, 0x7b, 0x59, 0x41, 0xf2, 0xec, 0x67, 0xf0, 0x86, 0xb3, 0x65, 0xa7, 0x25, 0x90, - 0xf5, 0xd5, 0x4f, 0xfa, 0x5c, 0xed, 0x53, 0x3e, 0xcd, 0x9a, 0xd0, 0xff, 0x28, 0xd0, 0x6e, 0x82, - 0xe8, 0x77, 0x65, 0x91, 0xd6, 0x47, 0x3a, 0x61, 0xb3, 0x6e, 0x97, 0xe5, 0xa4, 0x59, 0x9a, 0x4e, - 0x69, 0x42, 0xb3, 0x92, 0x8f, 0x5f, 0x84, 0xdb, 0x0a, 0xe0, 0xc8, 0xd3, 0xfd, 0x01, 0x6a, 0xd6, - 0x33, 0xe3, 0x26, 0x96, 0x4c, 0xe4, 0x1f, 0xe8, 0x3a, 0xab, 0x69, 0xa5, 0x56, 0xeb, 0x7d, 0xca, - 0xc1, 0xec, 0xb4, 0xb8, 0xd8, 0x02, 0x9b, 0x8a, 0x22, 0xb3, 0x33, 0xac, 0x61, 0x4e, 0x98, 0x2c, - 0xee, 0x94, 0xd6, 0x2c, 0x5f, 0x52, 0x71, 0xc9, 0x6d, 0x03, 0x35, 0x66, 0x51, 0xc8, 0x09, 0x13, - 0x4e, 0x9b, 0x94, 0xa7, 0xeb, 0x76, 0xbb, 0x58, 0x1d, 0xc0, 0xe7, 0xf4, 0x1e, 0x4b, 0x02, 0x43, - 0x52, 0x9e, 0x00, 0x6e, 0x9d, 0xc0, 0x56, 0x8c, 0xa4, 0x09, 0xa9, 0xf9, 0x09, 0x59, 0xe5, 0x8c, - 0xa4, 0x62, 0x5d, 0x87, 0x27, 0xb0, 0x2d, 0x13, 0xdb, 0x10, 0x76, 0x02, 0x8b, 0xc1, 0x66, 0x77, - 0xa9, 0xfe, 0xee, 0x98, 0xba, 0x40, 0x78, 0x0f, 0xa4, 0x49, 0xa2, 0xbc, 0xf0, 0xf2, 0xe0, 0xfd, - 0x30, 0x64, 0x5e, 0x7c, 0x92, 0x22, 0x91, 0x86, 0xdc, 0xf1, 0xe9, 0x38, 0x09, 0xc8, 0xa7, 0x01, - 0xc2, 0x7c, 0x0c, 0x41, 0xfe, 0xde, 0xfe, 0xe9, 0x0c, 0xae, 0x3e, 0x65, 0xbc, 0xe1, 0xd3, 0xb5, - 0xa1, 0xd8, 0xfe, 0xc2, 0xd9, 0xe6, 0x40, 0xda, 0x6c, 0x1e, 0x77, 0x2e, 0x09, 0xdf, 0x4e, 0xd3, - 0x23, 0x5a, 0x7b, 0xde, 0x62, 0x6e, 0x84, 0xb1, 0x91, 0x22, 0x9b, 0xc7, 0x2e, 0x65, 0x06, 0x7a, - 0x23, 0x7b, 0x95, 0x66, 0x5c, 0xc9, 0xda, 0x6b, 0xb9, 0x1b, 0x5d, 0x03, 0x5d, 0x0a, 0xa9, 0x15, - 0x4e, 0x9b, 0x58, 0xde, 0x30, 0x53, 0x36, 0x9b, 0xe5, 0x54, 0x41, 0xa7, 0x94, 0xc8, 0x2f, 0xb9, - 0x6d, 0x75, 0x6d, 0x79, 0x41, 0x24, 0x96, 0x07, 0x15, 0x4c, 0x1a, 0xd9, 0x60, 0xf2, 0x39, 0x48, - 0xdb, 0xb0, 0x6b, 0x5d, 0x33, 0x0e, 0x80, 0xa4, 0x91, 0x5e, 0xd0, 0xbc, 0x6c, 0xd5, 0x88, 0xf7, - 0x69, 0xdb, 0x12, 0xf0, 0xbb, 0x37, 0x42, 0xd9, 0x12, 0x23, 0x2f, 0x5b, 0x79, 0x30, 0xb3, 0x4f, - 0x00, 0x1e, 0x5e, 0xae, 0x0e, 0x52, 0xb8, 0x4f, 0x80, 0xfa, 0x82, 0x41, 0xf6, 0x09, 0x18, 0xeb, - 0x76, 0x9d, 0xfe, 0xc8, 0xef, 0x21, 0xa9, 0x4d, 0xe5, 0x3c, 0x5d, 0xe7, 0x05, 0x43, 0x5d, 0x87, - 0x29, 0xb8, 0x4d, 0x6a, 0x7f, 0x42, 0xd8, 0xd3, 0xa4, 0xbe, 0x4f, 0x07, 0x3f, 0xec, 0xc3, 0x4c, - 0x5c, 0xd2, 0x9b, 0x32, 0x71, 0x4f, 0xc6, 0xff, 0x09, 0x77, 0x29, 0x44, 0xe2, 0x52, 0x07, 0x92, - 0xb6, 0x5f, 0x7e, 0xfa, 0x5f, 0xdf, 0xdc, 0x1a, 0xfd, 0xe2, 0x9b, 0x5b, 0xa3, 0xff, 0xf9, 0xe6, - 0xd6, 0xe8, 0xe7, 0xdf, 0xde, 0x7a, 0xef, 0x17, 0xdf, 0xde, 0x7a, 0xef, 0xbf, 0xbf, 0xbd, 0xf5, - 0xde, 0xd7, 0xef, 0xab, 0xbf, 0x47, 0x79, 0xfe, 0xff, 0xc4, 0x5f, 0x95, 0x7c, 0xfe, 0x7f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xe5, 0xb3, 0x13, 0x72, 0xb3, 0x72, 0x00, 0x00, + // 5189 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x1d, 0x49, + 0x56, 0xc0, 0xc7, 0x2f, 0x0c, 0xf4, 0xb2, 0x03, 0xdc, 0x81, 0x61, 0x76, 0xd8, 0xcd, 0xd7, 0x24, + 0x71, 0x12, 0xdb, 0xd7, 0x99, 0x64, 0x32, 0xb3, 0xda, 0x45, 0x42, 0x8e, 0x1d, 0x7b, 0xcc, 0xda, + 0x8e, 0xf1, 0xb5, 0x13, 0x69, 0x24, 0x24, 0xca, 0xdd, 0xe5, 0xeb, 0xc6, 0x7d, 0xbb, 0x7a, 0xbb, + 0xeb, 0x5e, 0xe7, 0x2e, 0x02, 0x81, 0x40, 0x20, 0x10, 0x88, 0x15, 0x5f, 0xaf, 0x48, 0xfc, 0x35, + 0x3c, 0xee, 0x23, 0x8f, 0x68, 0x46, 0xfc, 0x1f, 0xa8, 0xeb, 0xbb, 0x4e, 0xd7, 0xa9, 0x6e, 0xef, + 0x53, 0xa2, 0x7b, 0x7e, 0xe7, 0x9c, 0xfa, 0x3c, 0x75, 0xaa, 0xba, 0xba, 0x9d, 0xdc, 0xae, 0xce, + 0x37, 0xab, 0x9a, 0x71, 0xd6, 0x6c, 0x36, 0xb4, 0x5e, 0xe4, 0x29, 0xd5, 0xff, 0x8e, 0xc5, 0xcf, + 0xa3, 0xf7, 0x49, 0xb9, 0xe4, 0xcb, 0x8a, 0x7e, 0xf2, 0xb1, 0x25, 0x53, 0x36, 0x9b, 0x91, 0x32, + 0x6b, 0x24, 0xf2, 0xc9, 0x47, 0x56, 0x42, 0x17, 0xb4, 0xe4, 0xea, 0xf7, 0x67, 0xdf, 0xfe, 0xdf, + 0x4a, 0xf2, 0xc1, 0x76, 0x91, 0xd3, 0x92, 0x6f, 0x2b, 0x8d, 0xd1, 0xd7, 0xc9, 0x77, 0xb7, 0xaa, + 0x6a, 0x8f, 0xf2, 0x37, 0xb4, 0x6e, 0x72, 0x56, 0x8e, 0x3e, 0x1d, 0x2b, 0x07, 0xe3, 0x93, 0x2a, + 0x1d, 0x6f, 0x55, 0xd5, 0xd8, 0x0a, 0xc7, 0x27, 0xf4, 0xa7, 0x73, 0xda, 0xf0, 0x4f, 0xee, 0xc7, + 0xa1, 0xa6, 0x62, 0x65, 0x43, 0x47, 0x17, 0xc9, 0x6f, 0x6d, 0x55, 0xd5, 0x84, 0xf2, 0x1d, 0xda, + 0x56, 0x60, 0xc2, 0x09, 0xa7, 0xa3, 0xd5, 0x8e, 0xaa, 0x0f, 0x18, 0x1f, 0x8f, 0xfa, 0x41, 0xe5, + 0xe7, 0x34, 0xf9, 0x4e, 0xeb, 0xe7, 0x72, 0xce, 0x33, 0x76, 0x5d, 0x8e, 0xee, 0x76, 0x15, 0x95, + 0xc8, 0xd8, 0xbe, 0x17, 0x43, 0x94, 0xd5, 0xb7, 0xc9, 0xaf, 0xbf, 0x25, 0x45, 0x41, 0xf9, 0x76, + 0x4d, 0xdb, 0x82, 0xfb, 0x3a, 0x52, 0x34, 0x96, 0x32, 0x63, 0xf7, 0xd3, 0x28, 0xa3, 0x0c, 0x7f, + 0x9d, 0x7c, 0x57, 0x4a, 0x4e, 0x68, 0xca, 0x16, 0xb4, 0x1e, 0x05, 0xb5, 0x94, 0x10, 0x69, 0xf2, + 0x0e, 0x04, 0x6d, 0x6f, 0xb3, 0x72, 0x41, 0x6b, 0x1e, 0xb6, 0xad, 0x84, 0x71, 0xdb, 0x16, 0x52, + 0xb6, 0xff, 0x7e, 0x25, 0xf9, 0xfe, 0x56, 0x9a, 0xb2, 0x79, 0xc9, 0x0f, 0x58, 0x4a, 0x8a, 0x83, + 0xbc, 0xbc, 0x3a, 0xa2, 0xd7, 0xdb, 0x97, 0x2d, 0x5f, 0x4e, 0xe9, 0xe8, 0xb9, 0xdf, 0xaa, 0x12, + 0x1d, 0x1b, 0x76, 0xec, 0xc2, 0xc6, 0xf7, 0xe7, 0x37, 0x53, 0x52, 0x65, 0xf9, 0xe7, 0x95, 0xe4, + 0x16, 0x2c, 0xcb, 0x84, 0x15, 0x0b, 0x6a, 0x4b, 0xf3, 0xa2, 0xc7, 0xb0, 0x8f, 0x9b, 0xf2, 0x7c, + 0x71, 0x53, 0x35, 0x55, 0xa2, 0x22, 0xf9, 0xd0, 0x1d, 0x2e, 0x13, 0xda, 0x88, 0xe9, 0xf4, 0x18, + 0x1f, 0x11, 0x0a, 0x31, 0x9e, 0x9f, 0x0c, 0x41, 0x95, 0xb7, 0x3c, 0x19, 0x29, 0x6f, 0x05, 0x6b, + 0x8c, 0xb3, 0x47, 0x41, 0x0b, 0x0e, 0x61, 0x7c, 0x3d, 0x1e, 0x40, 0x2a, 0x57, 0x7f, 0x92, 0xfc, + 0xc6, 0x5b, 0x56, 0x5f, 0x35, 0x15, 0x49, 0xa9, 0x9a, 0x0a, 0x0f, 0x7c, 0x6d, 0x2d, 0x85, 0xb3, + 0xe1, 0x61, 0x1f, 0xe6, 0x0c, 0x5a, 0x2d, 0x7c, 0x5d, 0x51, 0x18, 0x83, 0xac, 0x62, 0x2b, 0xc4, + 0x06, 0x2d, 0x84, 0x94, 0xed, 0xab, 0x64, 0x64, 0x6d, 0x9f, 0xff, 0x29, 0x4d, 0xf9, 0x56, 0x96, + 0xc1, 0x5e, 0xb1, 0xba, 0x82, 0x18, 0x6f, 0x65, 0x19, 0xd6, 0x2b, 0x61, 0x54, 0x39, 0xbb, 0x4e, + 0x3e, 0x02, 0xce, 0x0e, 0xf2, 0x46, 0x38, 0xdc, 0x88, 0x5b, 0x51, 0x98, 0x71, 0x3a, 0x1e, 0x8a, + 0x2b, 0xc7, 0x7f, 0xb9, 0x92, 0x7c, 0x2f, 0xe0, 0xf9, 0x84, 0xce, 0xd8, 0x82, 0x8e, 0x9e, 0xf6, + 0x5b, 0x93, 0xa4, 0xf1, 0xff, 0xd9, 0x0d, 0x34, 0x02, 0xc3, 0x64, 0x42, 0x0b, 0x9a, 0x72, 0x74, + 0x98, 0x48, 0x71, 0xef, 0x30, 0x31, 0x98, 0x33, 0xc3, 0xb4, 0x70, 0x8f, 0xf2, 0xed, 0x79, 0x5d, + 0xd3, 0x92, 0xa3, 0x7d, 0x69, 0x91, 0xde, 0xbe, 0xf4, 0xd0, 0x40, 0x7d, 0xf6, 0x28, 0xdf, 0x2a, + 0x0a, 0xb4, 0x3e, 0x52, 0xdc, 0x5b, 0x1f, 0x83, 0x29, 0x0f, 0x69, 0xf2, 0x9b, 0x4e, 0x8b, 0xf1, + 0xfd, 0xf2, 0x82, 0x8d, 0xf0, 0xb6, 0x10, 0x72, 0xe3, 0x63, 0xb5, 0x97, 0x0b, 0x54, 0xe3, 0xd5, + 0xbb, 0x8a, 0xd5, 0x78, 0xb7, 0x48, 0x71, 0x6f, 0x35, 0x0c, 0xa6, 0x3c, 0xfc, 0x71, 0xf2, 0x81, + 0x8a, 0x92, 0x7a, 0x3d, 0xbb, 0x1f, 0x0c, 0xa1, 0x70, 0x41, 0x7b, 0xd0, 0x43, 0xd9, 0xe0, 0xa0, + 0x64, 0x2a, 0xf8, 0x7c, 0x1a, 0xd4, 0x03, 0xa1, 0xe7, 0x7e, 0x1c, 0xea, 0xd8, 0xde, 0xa1, 0x05, + 0x45, 0x6d, 0x4b, 0x61, 0x8f, 0x6d, 0x03, 0x29, 0xdb, 0x75, 0xf2, 0x3b, 0xa6, 0x59, 0xda, 0x75, + 0x54, 0xc8, 0xdb, 0x20, 0xbd, 0x86, 0xd4, 0xdb, 0x85, 0x8c, 0xaf, 0xf5, 0x61, 0x70, 0xa7, 0x3e, + 0x6a, 0x06, 0x86, 0xeb, 0x03, 0xe6, 0xdf, 0xfd, 0x38, 0xa4, 0x6c, 0xff, 0xc3, 0x4a, 0xf2, 0x03, + 0x25, 0x7b, 0x55, 0x92, 0xf3, 0x82, 0x8a, 0x25, 0xf1, 0x88, 0xf2, 0x6b, 0x56, 0x5f, 0x4d, 0x96, + 0x65, 0x8a, 0x2c, 0xff, 0x61, 0xb8, 0x67, 0xf9, 0x47, 0x95, 0x9c, 0x8c, 0x4f, 0x55, 0x94, 0xb3, + 0x0a, 0x66, 0x7c, 0xba, 0x06, 0x9c, 0x55, 0x58, 0xc6, 0xe7, 0x23, 0x1d, 0xab, 0x87, 0x6d, 0xd8, + 0x0c, 0x5b, 0x3d, 0x74, 0xe3, 0xe4, 0xbd, 0x18, 0x62, 0xc3, 0x96, 0x1e, 0xc0, 0xac, 0xbc, 0xc8, + 0xa7, 0x67, 0x55, 0xd6, 0x0e, 0xe3, 0xc7, 0xe1, 0x11, 0xea, 0x20, 0x48, 0xd8, 0x42, 0x50, 0xe5, + 0xed, 0x9f, 0x6c, 0x62, 0xa4, 0xa6, 0xd2, 0x6e, 0xcd, 0x66, 0x07, 0x74, 0x4a, 0xd2, 0xa5, 0x9a, + 0xff, 0x9f, 0xc7, 0x26, 0x1e, 0xa4, 0x4d, 0x21, 0x5e, 0xdc, 0x50, 0x4b, 0x95, 0xe7, 0x3f, 0x57, + 0x92, 0xfb, 0xba, 0xfa, 0x97, 0xa4, 0x9c, 0x52, 0xd5, 0x9f, 0xb2, 0xf4, 0x5b, 0x65, 0x76, 0x42, + 0x1b, 0x4e, 0x6a, 0x3e, 0xfa, 0x51, 0xb8, 0x92, 0x31, 0x1d, 0x53, 0xb6, 0x1f, 0xff, 0x52, 0xba, + 0xb6, 0xd7, 0x27, 0x6d, 0x60, 0x53, 0x21, 0xc0, 0xef, 0x75, 0x21, 0x81, 0x01, 0xe0, 0x5e, 0x0c, + 0xb1, 0xbd, 0x2e, 0x04, 0xfb, 0xe5, 0x22, 0xe7, 0x74, 0x8f, 0x96, 0xb4, 0xee, 0xf6, 0xba, 0x54, + 0xf5, 0x11, 0xa4, 0xd7, 0x11, 0xd4, 0x06, 0x1b, 0xcf, 0x9b, 0x59, 0x1c, 0xd7, 0x22, 0x46, 0x3a, + 0xcb, 0xe3, 0xfa, 0x30, 0xd8, 0xee, 0xee, 0x1c, 0x9f, 0x27, 0x74, 0xc1, 0xae, 0xe0, 0xee, 0xce, + 0x35, 0x21, 0x01, 0x64, 0x77, 0x17, 0x04, 0xed, 0x0a, 0xe6, 0xf8, 0x79, 0x93, 0xd3, 0x6b, 0xb0, + 0x82, 0xb9, 0xca, 0xad, 0x18, 0x59, 0xc1, 0x02, 0x98, 0xf2, 0x70, 0x94, 0xfc, 0x9a, 0x10, 0xfe, + 0x21, 0xcb, 0xcb, 0xd1, 0xed, 0x80, 0x52, 0x2b, 0x30, 0x56, 0xef, 0xe0, 0x00, 0x28, 0x71, 0xfb, + 0xeb, 0x36, 0x29, 0x53, 0x5a, 0x04, 0x4b, 0x6c, 0xc5, 0xd1, 0x12, 0x7b, 0x98, 0x4d, 0x1d, 0x84, + 0xb0, 0x8d, 0x5f, 0x93, 0x4b, 0x52, 0xe7, 0xe5, 0x74, 0x14, 0xd2, 0x75, 0xe4, 0x48, 0xea, 0x10, + 0xe2, 0xc0, 0x10, 0x56, 0x8a, 0x5b, 0x55, 0x55, 0xb7, 0x61, 0x31, 0x34, 0x84, 0x7d, 0x24, 0x3a, + 0x84, 0x3b, 0x68, 0xd8, 0xdb, 0x0e, 0x4d, 0x8b, 0xbc, 0x8c, 0x7a, 0x53, 0xc8, 0x10, 0x6f, 0x16, + 0x05, 0x83, 0xf7, 0x80, 0x92, 0x05, 0xd5, 0x35, 0x0b, 0xb5, 0x8c, 0x0b, 0x44, 0x07, 0x2f, 0x00, + 0xed, 0x3e, 0x4d, 0x88, 0x0f, 0xc9, 0x15, 0x6d, 0x1b, 0x98, 0xb6, 0xeb, 0xda, 0x28, 0xa4, 0xef, + 0x11, 0xc8, 0x3e, 0x2d, 0x4c, 0x2a, 0x57, 0xf3, 0xe4, 0x23, 0x21, 0x3f, 0x26, 0x35, 0xcf, 0xd3, + 0xbc, 0x22, 0xa5, 0xce, 0xff, 0x43, 0xf3, 0xba, 0x43, 0x19, 0x97, 0x1b, 0x03, 0x69, 0xe5, 0xf6, + 0x3f, 0x56, 0x92, 0xbb, 0xd0, 0xef, 0x31, 0xad, 0x67, 0xb9, 0xd8, 0x46, 0x36, 0x32, 0x08, 0x8f, + 0xbe, 0x8c, 0x1b, 0xed, 0x28, 0x98, 0xd2, 0xfc, 0xf0, 0xe6, 0x8a, 0xaa, 0x60, 0x7f, 0x94, 0x24, + 0x72, 0xbb, 0x22, 0xb6, 0x94, 0xfe, 0xac, 0x55, 0xfb, 0x18, 0x6f, 0x3f, 0x79, 0x37, 0x42, 0xd8, + 0xa5, 0x42, 0xfe, 0x2e, 0x76, 0xca, 0xa3, 0xa0, 0x86, 0x10, 0x21, 0x4b, 0x05, 0x40, 0x60, 0x41, + 0x27, 0x97, 0xec, 0x3a, 0x5c, 0xd0, 0x56, 0x12, 0x2f, 0xa8, 0x22, 0xec, 0xd9, 0x95, 0x2a, 0x68, + 0xe8, 0xec, 0x4a, 0x17, 0x23, 0x76, 0x76, 0x05, 0x19, 0x65, 0x98, 0x25, 0xbf, 0xed, 0x1a, 0x7e, + 0xc9, 0xd8, 0xd5, 0x8c, 0xd4, 0x57, 0xa3, 0x27, 0xb8, 0xb2, 0x66, 0x8c, 0xa3, 0xb5, 0x41, 0xac, + 0x0d, 0x0b, 0xae, 0xc3, 0x36, 0xd1, 0x38, 0xab, 0x0b, 0x10, 0x16, 0x3c, 0x1b, 0x0a, 0x41, 0xc2, + 0x02, 0x82, 0xda, 0xc8, 0xed, 0x7a, 0x9b, 0x50, 0xb8, 0x5b, 0xf2, 0xd4, 0x27, 0x14, 0xdb, 0x2d, + 0x05, 0x30, 0x38, 0x84, 0xf6, 0x6a, 0x52, 0x5d, 0x86, 0x87, 0x90, 0x10, 0xc5, 0x87, 0x90, 0x46, + 0x60, 0x7f, 0x4f, 0x28, 0xa9, 0xd3, 0xcb, 0x70, 0x7f, 0x4b, 0x59, 0xbc, 0xbf, 0x0d, 0x03, 0xfb, + 0x5b, 0x0a, 0xde, 0xe6, 0xfc, 0xf2, 0x90, 0x72, 0x12, 0xee, 0x6f, 0x9f, 0x89, 0xf7, 0x77, 0x87, + 0xb5, 0x99, 0x8c, 0xeb, 0x70, 0x32, 0x3f, 0x6f, 0xd2, 0x3a, 0x3f, 0xa7, 0xa3, 0x88, 0x15, 0x03, + 0x21, 0x99, 0x0c, 0x0a, 0x2b, 0x9f, 0x3f, 0x5f, 0x49, 0x6e, 0xeb, 0x6e, 0x67, 0x4d, 0x23, 0x57, + 0x56, 0xe0, 0xfe, 0x45, 0xb8, 0x7f, 0x11, 0x1c, 0x39, 0x4d, 0x1c, 0xa0, 0xe6, 0x44, 0xd5, 0x70, + 0x91, 0xce, 0xca, 0xc6, 0x14, 0xea, 0xcb, 0x21, 0xd6, 0x1d, 0x05, 0x24, 0xaa, 0x0e, 0x52, 0xb4, + 0x0b, 0x9a, 0xea, 0x1f, 0x2d, 0xdb, 0xcf, 0x1a, 0xb0, 0xa0, 0xe9, 0xf6, 0x76, 0x08, 0x64, 0x41, + 0x0b, 0x93, 0x70, 0x28, 0xec, 0xd5, 0x6c, 0x5e, 0x35, 0x3d, 0x43, 0x01, 0x40, 0xf1, 0xa1, 0xd0, + 0x85, 0x95, 0xcf, 0x77, 0xc9, 0xef, 0xba, 0xc3, 0xcf, 0x6d, 0xec, 0x0d, 0x7c, 0x4c, 0x85, 0x9a, + 0x78, 0x3c, 0x14, 0xb7, 0x29, 0x9d, 0xf6, 0xcc, 0x77, 0x28, 0x27, 0x79, 0xd1, 0x8c, 0x1e, 0x86, + 0x6d, 0x68, 0x39, 0x92, 0xd2, 0x85, 0x38, 0x18, 0xdf, 0x76, 0xe6, 0x55, 0x91, 0xa7, 0xdd, 0xb3, + 0x5c, 0xa5, 0x6b, 0xc4, 0xf1, 0xf8, 0xe6, 0x62, 0x30, 0x5e, 0x4f, 0x28, 0x97, 0xff, 0x39, 0x5d, + 0x56, 0x34, 0x1c, 0xaf, 0x3d, 0x24, 0x1e, 0xaf, 0x21, 0x0a, 0xeb, 0x33, 0xa1, 0xfc, 0x80, 0x2c, + 0xd9, 0x1c, 0x89, 0xd7, 0x46, 0x1c, 0xaf, 0x8f, 0x8b, 0xd9, 0xac, 0xca, 0x78, 0xd8, 0x2f, 0x39, + 0xad, 0x4b, 0x52, 0xec, 0x16, 0x64, 0xda, 0x8c, 0x90, 0x18, 0xe3, 0x53, 0x48, 0x56, 0x85, 0xd3, + 0x81, 0x66, 0xdc, 0x6f, 0x76, 0xc9, 0x82, 0xd5, 0x39, 0xc7, 0x9b, 0xd1, 0x22, 0xbd, 0xcd, 0xe8, + 0xa1, 0x41, 0x6f, 0x5b, 0x75, 0x7a, 0x99, 0x2f, 0x68, 0x16, 0xf1, 0xa6, 0x91, 0x01, 0xde, 0x1c, + 0x34, 0xd0, 0x69, 0x13, 0x36, 0xaf, 0x53, 0x8a, 0x76, 0x9a, 0x14, 0xf7, 0x76, 0x9a, 0xc1, 0x94, + 0x87, 0xbf, 0x59, 0x49, 0x7e, 0x4f, 0x4a, 0xdd, 0x03, 0xd6, 0x1d, 0xd2, 0x5c, 0x9e, 0x33, 0x52, + 0x67, 0xa3, 0xcf, 0x42, 0x76, 0x82, 0xa8, 0x71, 0xfd, 0xec, 0x26, 0x2a, 0xb0, 0x59, 0x0f, 0xf2, + 0xc6, 0x99, 0x71, 0xc1, 0x66, 0xf5, 0x90, 0x78, 0xb3, 0x42, 0x14, 0x06, 0x10, 0x21, 0x97, 0x87, + 0x19, 0x0f, 0x51, 0x7d, 0xff, 0x44, 0x63, 0xb5, 0x97, 0x83, 0xf1, 0xb1, 0x15, 0xfa, 0xa3, 0x65, + 0x03, 0xb3, 0x11, 0x1e, 0x31, 0xe3, 0xa1, 0x38, 0xea, 0xd9, 0xcc, 0x8a, 0xb8, 0xe7, 0xce, 0xcc, + 0x18, 0x0f, 0xc5, 0x11, 0xcf, 0x4e, 0x58, 0x8b, 0x79, 0x0e, 0x84, 0xb6, 0xf1, 0x50, 0x1c, 0x66, + 0x5f, 0x8a, 0xd1, 0xeb, 0xc2, 0x93, 0x88, 0x1d, 0xb8, 0x36, 0xac, 0x0d, 0x62, 0x95, 0xc3, 0xbf, + 0x5b, 0x49, 0xbe, 0x6f, 0x3d, 0x1e, 0xb2, 0x2c, 0xbf, 0x58, 0x4a, 0xe8, 0x0d, 0x29, 0xe6, 0xb4, + 0x19, 0x3d, 0xc3, 0xac, 0x75, 0x59, 0x53, 0x82, 0xe7, 0x37, 0xd2, 0x81, 0x73, 0x67, 0xab, 0xaa, + 0x8a, 0xe5, 0x29, 0x9d, 0x55, 0x05, 0x3a, 0x77, 0x3c, 0x24, 0x3e, 0x77, 0x20, 0x0a, 0xb3, 0xf2, + 0x53, 0xd6, 0xe6, 0xfc, 0xc1, 0xac, 0x5c, 0x88, 0xe2, 0x59, 0xb9, 0x46, 0x60, 0xae, 0x74, 0xca, + 0xb6, 0x59, 0x51, 0xd0, 0x94, 0x77, 0x1f, 0xd2, 0x1a, 0x4d, 0x4b, 0xc4, 0x73, 0x25, 0x40, 0xda, + 0xf3, 0x0c, 0xbd, 0x87, 0x24, 0x35, 0x7d, 0xb9, 0x3c, 0xc8, 0xcb, 0xab, 0x51, 0x38, 0x2d, 0xb0, + 0x00, 0x72, 0x9e, 0x11, 0x04, 0xe1, 0x5e, 0xf5, 0xac, 0xcc, 0x58, 0x78, 0xaf, 0xda, 0x4a, 0xe2, + 0x7b, 0x55, 0x45, 0x40, 0x93, 0x27, 0x14, 0x33, 0xd9, 0x4a, 0xe2, 0x26, 0x15, 0x11, 0x0a, 0x85, + 0xea, 0xd4, 0x1b, 0x0d, 0x85, 0xe0, 0x9c, 0x7b, 0xb5, 0x97, 0x83, 0x23, 0x54, 0x6f, 0x5a, 0x77, + 0x29, 0x4f, 0x2f, 0xc3, 0x23, 0xd4, 0x43, 0xe2, 0x23, 0x14, 0xa2, 0xb0, 0x4a, 0xa7, 0xcc, 0x6c, + 0xba, 0x1f, 0x86, 0xc7, 0x47, 0x67, 0xc3, 0xbd, 0xda, 0xcb, 0xc1, 0x6d, 0xe4, 0xfe, 0x4c, 0xb4, + 0x59, 0x70, 0x90, 0x4b, 0x59, 0x7c, 0x1b, 0x69, 0x18, 0x58, 0x7a, 0x29, 0x68, 0x9b, 0x33, 0x5c, + 0x7a, 0x2b, 0x8f, 0x97, 0xde, 0xe3, 0x94, 0x93, 0x7f, 0x33, 0xdb, 0x38, 0x29, 0x3d, 0x62, 0xed, + 0x1c, 0x79, 0x43, 0x8a, 0x3c, 0x23, 0x9c, 0x9e, 0xb2, 0x2b, 0x5a, 0x86, 0x77, 0x4c, 0xaa, 0xb4, + 0x92, 0x1f, 0x7b, 0x0a, 0xf1, 0x1d, 0x53, 0x5c, 0x11, 0x8e, 0x13, 0x49, 0x9f, 0x35, 0x74, 0x9b, + 0x34, 0x48, 0x24, 0xf3, 0x90, 0xf8, 0x38, 0x81, 0x28, 0xcc, 0x57, 0xa5, 0xfc, 0xd5, 0xbb, 0x8a, + 0xd6, 0x39, 0x2d, 0x53, 0x1a, 0xce, 0x57, 0x21, 0x15, 0xcf, 0x57, 0x03, 0x74, 0xe7, 0x98, 0xc6, + 0x04, 0xa7, 0xee, 0x3d, 0x0b, 0x48, 0x44, 0xee, 0x59, 0x20, 0x28, 0xac, 0xa4, 0x05, 0x82, 0x47, + 0x9d, 0x1d, 0x2b, 0xd1, 0xa3, 0x4e, 0x9c, 0xee, 0x1c, 0x7e, 0x19, 0x66, 0xd2, 0x4e, 0x93, 0x9e, + 0xa2, 0x4f, 0xdc, 0xe9, 0xb2, 0x36, 0x88, 0x0d, 0x9f, 0xb6, 0x9d, 0xd0, 0x82, 0x88, 0x25, 0x24, + 0x72, 0xa4, 0xa5, 0x99, 0x21, 0xa7, 0x6d, 0x0e, 0xab, 0x1c, 0xfe, 0xd5, 0x4a, 0xf2, 0x49, 0xc8, + 0xe3, 0xeb, 0x4a, 0xf8, 0x7d, 0xda, 0x6f, 0x4b, 0x92, 0xc8, 0x45, 0x92, 0xb8, 0x86, 0x2a, 0xc3, + 0x9f, 0x25, 0x1f, 0x6b, 0x91, 0xbd, 0x67, 0xa2, 0x0a, 0xe0, 0x27, 0x50, 0xa6, 0xfc, 0x90, 0x33, + 0xee, 0x37, 0x07, 0xf3, 0x76, 0x6f, 0xe2, 0x97, 0xab, 0x01, 0x7b, 0x13, 0x63, 0x43, 0x89, 0x91, + 0xbd, 0x49, 0x00, 0xb3, 0xa7, 0x1a, 0x6e, 0xf5, 0xde, 0xe6, 0xfc, 0x52, 0xe4, 0x3e, 0xe0, 0x54, + 0xc3, 0x2b, 0xab, 0x81, 0x90, 0x53, 0x0d, 0x14, 0x86, 0xd9, 0x81, 0x06, 0xdb, 0xb9, 0x19, 0x8a, + 0xab, 0xc6, 0x90, 0x3b, 0x33, 0x1f, 0xf5, 0x83, 0x70, 0xbc, 0x6a, 0xb1, 0xda, 0x86, 0x3c, 0x89, + 0x59, 0x00, 0x5b, 0x91, 0xb5, 0x41, 0xac, 0x72, 0xf8, 0x17, 0xc9, 0xf7, 0x3a, 0x15, 0xdb, 0xa5, + 0x84, 0xcf, 0x6b, 0x9a, 0x8d, 0x36, 0x7b, 0xca, 0xad, 0x41, 0xe3, 0xfa, 0xe9, 0x70, 0x85, 0x4e, + 0xbe, 0xac, 0x39, 0x39, 0xac, 0x4c, 0x19, 0x9e, 0xc5, 0x4c, 0xfa, 0x6c, 0x34, 0x5f, 0xc6, 0x75, + 0x3a, 0x5b, 0x5e, 0x77, 0x74, 0x6d, 0x2d, 0x48, 0x5e, 0x88, 0x47, 0x4e, 0x9f, 0xc5, 0x8c, 0x7a, + 0x68, 0x74, 0xcb, 0x8b, 0xaa, 0x74, 0x22, 0xb3, 0x98, 0xe3, 0xce, 0x56, 0x69, 0x1d, 0x8f, 0x04, + 0x81, 0x9d, 0xd2, 0xc6, 0x40, 0x5a, 0xb9, 0xe5, 0xfa, 0xa8, 0xb0, 0xfd, 0xd9, 0x1d, 0xe4, 0x21, + 0xaf, 0x4a, 0x35, 0x30, 0xd2, 0x37, 0x06, 0xd2, 0xca, 0xeb, 0x9f, 0x27, 0x1f, 0x77, 0xbd, 0xaa, + 0x85, 0x68, 0xb3, 0xd7, 0x14, 0x58, 0x8b, 0x9e, 0x0e, 0x57, 0xb0, 0xdb, 0x8b, 0xaf, 0xf2, 0x86, + 0xb3, 0x7a, 0x39, 0xb9, 0x64, 0xd7, 0xfa, 0xfe, 0xb6, 0x3f, 0x5b, 0x15, 0x30, 0x76, 0x08, 0x64, + 0x7b, 0x11, 0x26, 0x3b, 0xae, 0xec, 0x3d, 0xef, 0x06, 0x71, 0xe5, 0x10, 0x3d, 0xae, 0x7c, 0xd2, + 0xc6, 0x2a, 0x5d, 0x2b, 0x7b, 0x29, 0x7d, 0x35, 0x5c, 0xd4, 0xee, 0xc5, 0xf4, 0x47, 0xfd, 0xa0, + 0xcd, 0x58, 0x94, 0x78, 0x27, 0xbf, 0xb8, 0x30, 0x75, 0x0a, 0x97, 0xd4, 0x45, 0x90, 0x8c, 0x05, + 0x41, 0x6d, 0x02, 0xbc, 0x9b, 0x17, 0x54, 0x9c, 0xae, 0xbf, 0xbe, 0xb8, 0x28, 0x18, 0xc9, 0x40, + 0x02, 0xdc, 0x8a, 0xc7, 0xae, 0x1c, 0x49, 0x80, 0x43, 0x9c, 0xbd, 0xfe, 0xd5, 0x4a, 0x4f, 0x68, + 0xca, 0xca, 0x34, 0x2f, 0xe0, 0x75, 0x36, 0xa1, 0x69, 0x84, 0xc8, 0xf5, 0xaf, 0x0e, 0x64, 0x17, + 0xc6, 0x56, 0xd4, 0x4e, 0x7b, 0x5d, 0xfe, 0x07, 0x5d, 0x45, 0x47, 0x8c, 0x2c, 0x8c, 0x01, 0xcc, + 0xee, 0x03, 0x5b, 0xe1, 0x59, 0x25, 0x8c, 0xdf, 0xe9, 0x6a, 0x49, 0x09, 0xb2, 0x0f, 0xf4, 0x09, + 0xbb, 0x9f, 0x69, 0x7f, 0xdf, 0x61, 0xd7, 0xa5, 0x30, 0x7a, 0xaf, 0xab, 0xa2, 0x65, 0xc8, 0x7e, + 0x06, 0x32, 0xca, 0xf0, 0x4f, 0x92, 0x5f, 0x15, 0x86, 0x6b, 0x56, 0x8d, 0x6e, 0x05, 0x14, 0x6a, + 0xe7, 0xe6, 0xd9, 0x6d, 0x54, 0x6e, 0x2f, 0x50, 0x9a, 0xb1, 0x71, 0xd6, 0x90, 0x29, 0x1d, 0xdd, + 0x47, 0x7a, 0x5c, 0x48, 0x91, 0x0b, 0x94, 0x5d, 0xca, 0x1f, 0x15, 0x47, 0x2c, 0x53, 0xd6, 0x03, + 0x35, 0x34, 0xc2, 0xd8, 0xa8, 0x70, 0x21, 0x9b, 0xcc, 0x1c, 0x91, 0x45, 0x3e, 0x35, 0x0b, 0x8e, + 0x8c, 0x5b, 0x0d, 0x48, 0x66, 0x2c, 0x33, 0x76, 0x20, 0x24, 0x99, 0x41, 0x61, 0xe5, 0xf3, 0x5f, + 0x57, 0x92, 0x3b, 0x96, 0xd9, 0xd3, 0x27, 0x67, 0xfb, 0xe5, 0x05, 0x6b, 0x53, 0x9f, 0x83, 0xbc, + 0xbc, 0x6a, 0x46, 0x5f, 0x60, 0x26, 0xc3, 0xbc, 0x29, 0xca, 0x97, 0x37, 0xd6, 0xb3, 0x59, 0xab, + 0x3e, 0x56, 0xb2, 0xcf, 0x96, 0xa5, 0x06, 0xc8, 0x5a, 0xcd, 0xe9, 0x13, 0xe4, 0x90, 0xac, 0x35, + 0xc6, 0xdb, 0x2e, 0x36, 0xce, 0x0b, 0x56, 0xc2, 0x2e, 0xb6, 0x16, 0x5a, 0x21, 0xd2, 0xc5, 0x1d, + 0xc8, 0xc6, 0x63, 0x2d, 0x92, 0x27, 0x20, 0x5b, 0x45, 0x01, 0xe2, 0xb1, 0x51, 0x35, 0x00, 0x12, + 0x8f, 0x83, 0xa0, 0xf2, 0x73, 0x92, 0x7c, 0xa7, 0x6d, 0xd2, 0xe3, 0x9a, 0x2e, 0x72, 0x0a, 0xaf, + 0x41, 0x38, 0x12, 0x64, 0xfe, 0xfb, 0x84, 0x9d, 0x59, 0x67, 0x65, 0x53, 0x15, 0xa4, 0xb9, 0x54, + 0x0f, 0xc6, 0xfd, 0x3a, 0x6b, 0x21, 0x7c, 0x34, 0xfe, 0xa0, 0x87, 0xb2, 0x41, 0x5d, 0xcb, 0x4c, + 0x88, 0x79, 0x18, 0x56, 0xed, 0x84, 0x99, 0xd5, 0x5e, 0xce, 0x9e, 0x3e, 0xef, 0x91, 0xa2, 0xa0, + 0xf5, 0x52, 0xcb, 0x0e, 0x49, 0x99, 0x5f, 0xd0, 0x86, 0x83, 0xd3, 0x67, 0x45, 0x8d, 0x21, 0x86, + 0x9c, 0x3e, 0x47, 0x70, 0x9b, 0xcd, 0x03, 0xcf, 0xfb, 0x65, 0x46, 0xdf, 0x81, 0x6c, 0x1e, 0xda, + 0x11, 0x0c, 0x92, 0xcd, 0x63, 0xac, 0x3d, 0x85, 0x7d, 0x59, 0xb0, 0xf4, 0x4a, 0x2d, 0x01, 0x7e, + 0x07, 0x0b, 0x09, 0x5c, 0x03, 0xee, 0xc5, 0x10, 0xbb, 0x08, 0x08, 0xc1, 0x09, 0xad, 0x0a, 0x92, + 0xc2, 0xbb, 0x30, 0x52, 0x47, 0xc9, 0x90, 0x45, 0x00, 0x32, 0xa0, 0xb8, 0xea, 0x8e, 0x4d, 0xa8, + 0xb8, 0xe0, 0x8a, 0xcd, 0xbd, 0x18, 0x62, 0x97, 0x41, 0x21, 0x98, 0x54, 0x45, 0xce, 0xc1, 0x34, + 0x90, 0x1a, 0x42, 0x82, 0x4c, 0x03, 0x9f, 0x00, 0x26, 0x0f, 0x69, 0x3d, 0xa5, 0x41, 0x93, 0x42, + 0x12, 0x35, 0xa9, 0x09, 0x7b, 0x65, 0x52, 0xd6, 0x9d, 0x55, 0x4b, 0x70, 0x65, 0x52, 0x55, 0x8b, + 0x55, 0x4b, 0xe4, 0xca, 0xa4, 0x07, 0x80, 0x22, 0x1e, 0x93, 0x86, 0x87, 0x8b, 0x28, 0x24, 0xd1, + 0x22, 0x6a, 0xc2, 0xae, 0xd1, 0xb2, 0x88, 0x73, 0x0e, 0xd6, 0x68, 0x55, 0x00, 0xe7, 0x69, 0xf0, + 0x6d, 0x54, 0x6e, 0x23, 0x89, 0xec, 0x15, 0xca, 0x77, 0x73, 0x5a, 0x64, 0x0d, 0x88, 0x24, 0xaa, + 0xdd, 0xb5, 0x14, 0x89, 0x24, 0x5d, 0x0a, 0x0c, 0x25, 0x75, 0x56, 0x1d, 0xaa, 0x1d, 0x38, 0xa6, + 0xbe, 0x17, 0x43, 0x6c, 0x7c, 0xd2, 0x85, 0xde, 0x26, 0x75, 0x9d, 0xb7, 0x8b, 0xff, 0xc3, 0x70, + 0x81, 0xb4, 0x1c, 0x89, 0x4f, 0x21, 0x0e, 0x4c, 0x2f, 0x1d, 0xb8, 0x43, 0x05, 0x83, 0xa1, 0xfb, + 0xd3, 0x28, 0x63, 0x33, 0x4e, 0x21, 0x71, 0x1e, 0x67, 0x86, 0x5a, 0x33, 0xf0, 0x34, 0xf3, 0x61, + 0x1f, 0xe6, 0xbc, 0xd2, 0x60, 0x5c, 0x1c, 0xb2, 0x05, 0x3d, 0x65, 0xaf, 0xde, 0xe5, 0x0d, 0xcf, + 0xcb, 0xa9, 0x5a, 0xb9, 0x9f, 0x23, 0x96, 0x42, 0x30, 0xf2, 0x4a, 0x43, 0xaf, 0x92, 0x4d, 0x20, + 0x40, 0x59, 0x8e, 0xe8, 0x75, 0x30, 0x81, 0x80, 0x16, 0x0d, 0x87, 0x24, 0x10, 0x31, 0xde, 0x9e, + 0xa3, 0x18, 0xe7, 0xea, 0xbd, 0xcf, 0x53, 0xa6, 0x73, 0x39, 0xcc, 0x1a, 0x04, 0x91, 0xad, 0x6c, + 0x54, 0xc1, 0xee, 0x2f, 0x8d, 0x7f, 0x3b, 0xc5, 0x1e, 0x21, 0x76, 0xba, 0xd3, 0xec, 0xf1, 0x00, + 0x32, 0xe0, 0xca, 0x3e, 0x93, 0xc7, 0x5c, 0x75, 0x1f, 0xc9, 0x3f, 0x1e, 0x40, 0x3a, 0x67, 0x32, + 0x6e, 0xb5, 0x5e, 0x92, 0xf4, 0x6a, 0x5a, 0xb3, 0x79, 0x99, 0x6d, 0xb3, 0x82, 0xd5, 0xe0, 0x4c, + 0xc6, 0x2b, 0x35, 0x40, 0x91, 0x33, 0x99, 0x1e, 0x15, 0x9b, 0xc1, 0xb9, 0xa5, 0xd8, 0x2a, 0xf2, + 0x29, 0xdc, 0x51, 0x7b, 0x86, 0x04, 0x80, 0x64, 0x70, 0x41, 0x30, 0x30, 0x88, 0xe4, 0x8e, 0x9b, + 0xe7, 0x29, 0x29, 0xa4, 0xbf, 0x4d, 0xdc, 0x8c, 0x07, 0xf6, 0x0e, 0xa2, 0x80, 0x42, 0xa0, 0x9e, + 0xa7, 0xf3, 0xba, 0xdc, 0x2f, 0x39, 0x43, 0xeb, 0xa9, 0x81, 0xde, 0x7a, 0x3a, 0x20, 0x08, 0xab, + 0xa7, 0xf4, 0x5d, 0x5b, 0x9a, 0xf6, 0x9f, 0x50, 0x58, 0x6d, 0x7f, 0x1f, 0x2b, 0x79, 0x2c, 0xac, + 0x02, 0x0e, 0x54, 0x46, 0x39, 0x91, 0x03, 0x26, 0xa2, 0xed, 0x0f, 0x93, 0x47, 0xfd, 0x60, 0xd8, + 0xcf, 0x84, 0x2f, 0x0b, 0x1a, 0xf3, 0x23, 0x80, 0x21, 0x7e, 0x34, 0x68, 0x8f, 0x5b, 0xbc, 0xfa, + 0x5c, 0xd2, 0xf4, 0xaa, 0x73, 0xc5, 0xc8, 0x2f, 0xa8, 0x44, 0x90, 0xe3, 0x16, 0x04, 0x0d, 0x77, + 0xd1, 0x7e, 0xca, 0xca, 0x58, 0x17, 0xb5, 0xf2, 0x21, 0x5d, 0xa4, 0x38, 0xbb, 0xf9, 0x35, 0x52, + 0x35, 0x32, 0x65, 0x37, 0xad, 0x21, 0x16, 0x5c, 0x08, 0xd9, 0xfc, 0xa2, 0xb0, 0xcd, 0xc9, 0xa1, + 0xcf, 0xc3, 0xee, 0xfd, 0xeb, 0x8e, 0x95, 0x43, 0xfc, 0xfe, 0x35, 0xc6, 0xe2, 0x95, 0x94, 0x63, + 0xa4, 0xc7, 0x8a, 0x3f, 0x4e, 0xd6, 0x87, 0xc1, 0x76, 0xcb, 0xe3, 0xf9, 0xdc, 0x2e, 0x28, 0xa9, + 0xa5, 0xd7, 0x8d, 0x88, 0x21, 0x8b, 0x21, 0x5b, 0x9e, 0x08, 0x0e, 0x42, 0x98, 0xe7, 0x79, 0x9b, + 0x95, 0x9c, 0x96, 0x3c, 0x14, 0xc2, 0x7c, 0x63, 0x0a, 0x8c, 0x85, 0x30, 0x4c, 0x01, 0x8c, 0x5b, + 0x71, 0x1e, 0x44, 0xf9, 0x11, 0x99, 0x05, 0x33, 0x36, 0x79, 0xd6, 0x23, 0xe5, 0xb1, 0x71, 0x0b, + 0x38, 0xe7, 0x21, 0x9f, 0xeb, 0xe5, 0x94, 0xd4, 0x53, 0x73, 0xba, 0x91, 0x8d, 0x9e, 0xe2, 0x76, + 0x7c, 0x12, 0x79, 0xc8, 0x17, 0xd7, 0x00, 0x61, 0x67, 0x7f, 0x46, 0xa6, 0xa6, 0xa6, 0x81, 0x1a, + 0x08, 0x79, 0xa7, 0xaa, 0x8f, 0xfa, 0x41, 0xe0, 0xe7, 0x4d, 0x9e, 0x51, 0x16, 0xf1, 0x23, 0xe4, + 0x43, 0xfc, 0x40, 0x10, 0x64, 0x6f, 0x6d, 0xbd, 0xe5, 0x8e, 0x6e, 0xab, 0xcc, 0xd4, 0x3e, 0x76, + 0x8c, 0x34, 0x0f, 0xe0, 0x62, 0xd9, 0x1b, 0xc2, 0x83, 0x39, 0xaa, 0x0f, 0x68, 0x63, 0x73, 0xd4, + 0x9c, 0xbf, 0x0e, 0x99, 0xa3, 0x21, 0x58, 0xf9, 0xfc, 0x99, 0x9a, 0xa3, 0x3b, 0x84, 0x93, 0x36, + 0x6f, 0x7f, 0x93, 0xd3, 0x6b, 0xb5, 0x11, 0x0e, 0xd4, 0x57, 0x53, 0x63, 0xf1, 0xe2, 0x1d, 0xd8, + 0x15, 0x6f, 0x0e, 0xe6, 0x23, 0xbe, 0xd5, 0x0e, 0xa1, 0xd7, 0x37, 0xd8, 0x2a, 0x6c, 0x0e, 0xe6, + 0x23, 0xbe, 0xd5, 0x1b, 0xbd, 0xbd, 0xbe, 0xc1, 0x6b, 0xbd, 0x9b, 0x83, 0x79, 0xe5, 0xfb, 0xaf, + 0xf5, 0xc4, 0x75, 0x9d, 0xb7, 0x79, 0x58, 0xca, 0xf3, 0x05, 0x0d, 0xa5, 0x93, 0xbe, 0x3d, 0x83, + 0xc6, 0xd2, 0x49, 0x5c, 0xc5, 0xf9, 0x0c, 0x4c, 0xa8, 0x14, 0xc7, 0xac, 0xc9, 0xc5, 0x43, 0xfa, + 0xe7, 0x03, 0x8c, 0x6a, 0x38, 0xb6, 0x69, 0x8a, 0x29, 0xd9, 0xc7, 0x8d, 0x1e, 0x6a, 0x6f, 0x14, + 0xaf, 0x47, 0xec, 0x75, 0x2f, 0x16, 0x6f, 0x0c, 0xa4, 0xed, 0x83, 0x3f, 0x8f, 0x71, 0x9f, 0x38, + 0xc6, 0x7a, 0x35, 0xf8, 0xd0, 0xf1, 0xe9, 0x70, 0x05, 0xe5, 0xfe, 0x6f, 0xf5, 0xbe, 0x02, 0xfa, + 0x57, 0x93, 0xe0, 0xd9, 0x10, 0x8b, 0x60, 0x22, 0x3c, 0xbf, 0x91, 0x8e, 0x2a, 0xc8, 0x3f, 0xea, + 0x0d, 0xb4, 0x46, 0xc5, 0x7b, 0x15, 0xaf, 0xeb, 0x8c, 0xd6, 0x6a, 0x4e, 0xc4, 0xba, 0xd5, 0xc2, + 0x70, 0x66, 0xbc, 0xb8, 0xa1, 0x96, 0xf3, 0x51, 0x20, 0x0f, 0x56, 0xef, 0xff, 0x39, 0xe5, 0x89, + 0x59, 0x76, 0x68, 0x58, 0xa0, 0x2f, 0x6e, 0xaa, 0x86, 0xcd, 0x15, 0x07, 0x16, 0xdf, 0x18, 0x78, + 0x3e, 0xd0, 0xb0, 0xf7, 0xd5, 0x81, 0xcf, 0x6f, 0xa6, 0xa4, 0xca, 0xf2, 0x5f, 0x2b, 0xc9, 0x03, + 0x8f, 0xb5, 0xcf, 0x13, 0xc0, 0xa9, 0xc7, 0x8f, 0x23, 0xf6, 0x31, 0x25, 0x53, 0xb8, 0xdf, 0xff, + 0xe5, 0x94, 0xed, 0x17, 0x74, 0x3c, 0x95, 0xdd, 0xbc, 0xe0, 0xb4, 0xee, 0x7e, 0x41, 0xc7, 0xb7, + 0x2b, 0xa9, 0x31, 0xfe, 0x05, 0x9d, 0x08, 0xee, 0x7c, 0x41, 0x27, 0xe0, 0x39, 0xf8, 0x05, 0x9d, + 0xa0, 0xb5, 0xe8, 0x17, 0x74, 0xe2, 0x1a, 0x58, 0x78, 0xd7, 0x45, 0x90, 0xe7, 0xd6, 0x83, 0x2c, + 0xfa, 0xc7, 0xd8, 0xcf, 0x6e, 0xa2, 0x82, 0x2c, 0x70, 0x92, 0x13, 0xf7, 0xdc, 0x06, 0xb4, 0xa9, + 0x77, 0xd7, 0x6d, 0x73, 0x30, 0xaf, 0x7c, 0xff, 0x54, 0xed, 0x6e, 0x4c, 0x38, 0x67, 0xb5, 0xf8, + 0x7a, 0xd2, 0x5a, 0x2c, 0x3c, 0xb7, 0x16, 0xdc, 0x9e, 0x5f, 0x1f, 0x06, 0x23, 0xd5, 0x6d, 0x09, + 0xd5, 0xe9, 0xe3, 0x3e, 0x43, 0xa0, 0xcb, 0x37, 0x07, 0xf3, 0xc8, 0x32, 0x22, 0x7d, 0xcb, 0xde, + 0x1e, 0x60, 0xcc, 0xef, 0xeb, 0xa7, 0xc3, 0x15, 0x94, 0xfb, 0x85, 0x4a, 0x1b, 0x5d, 0xf7, 0xa2, + 0x9f, 0x37, 0xfa, 0x4c, 0x4d, 0xbc, 0x6e, 0x1e, 0x0f, 0xc5, 0x63, 0x09, 0x84, 0xbb, 0x84, 0xf6, + 0x25, 0x10, 0xc1, 0x65, 0xf4, 0xf3, 0x9b, 0x29, 0xa9, 0xb2, 0xfc, 0xcb, 0x4a, 0x72, 0x1b, 0x2d, + 0x8b, 0x1a, 0x07, 0x5f, 0x0c, 0xb5, 0x0c, 0xc6, 0xc3, 0x97, 0x37, 0xd6, 0x53, 0x85, 0xfa, 0xf7, + 0x95, 0xe4, 0x4e, 0xa4, 0x50, 0x72, 0x80, 0xdc, 0xc0, 0xba, 0x3f, 0x50, 0x7e, 0x78, 0x73, 0x45, + 0x6c, 0xb9, 0x77, 0xf1, 0x49, 0xf7, 0xd3, 0x32, 0x11, 0xdb, 0x13, 0xfc, 0xd3, 0x32, 0xfd, 0x5a, + 0xf0, 0x90, 0x87, 0x9c, 0xeb, 0x4d, 0x57, 0xf0, 0x90, 0x47, 0xdc, 0x50, 0x03, 0x7b, 0x8e, 0xd5, + 0x5e, 0x2e, 0xe4, 0xe4, 0xd5, 0xbb, 0x8a, 0x94, 0x19, 0xee, 0x44, 0xca, 0xfb, 0x9d, 0x18, 0x0e, + 0x1e, 0x8e, 0xb5, 0xd2, 0x13, 0xa6, 0x37, 0x52, 0x8f, 0x31, 0x7d, 0x83, 0x44, 0x0f, 0xc7, 0x3a, + 0x28, 0xe2, 0x4d, 0x65, 0x8d, 0x31, 0x6f, 0x20, 0x59, 0x7c, 0x32, 0x04, 0x05, 0x29, 0xba, 0xf1, + 0x66, 0xce, 0xdc, 0xd7, 0x63, 0x56, 0x3a, 0xe7, 0xee, 0x1b, 0x03, 0x69, 0xc4, 0xed, 0x84, 0xf2, + 0xaf, 0x28, 0xc9, 0x68, 0x1d, 0x75, 0x6b, 0xa8, 0x41, 0x6e, 0x5d, 0x3a, 0xe4, 0x76, 0x9b, 0x15, + 0xf3, 0x59, 0xa9, 0x3a, 0x13, 0x75, 0xeb, 0x52, 0xfd, 0x6e, 0x01, 0x0d, 0x8f, 0x05, 0xad, 0x5b, + 0x91, 0x5e, 0x3e, 0x89, 0x9b, 0xf1, 0xb2, 0xca, 0xb5, 0x41, 0x2c, 0x5e, 0x4f, 0x35, 0x8c, 0x7a, + 0xea, 0x09, 0x46, 0xd2, 0xc6, 0x40, 0x1a, 0x9e, 0xcf, 0x39, 0x6e, 0xcd, 0x78, 0xda, 0xec, 0xb1, + 0xd5, 0x19, 0x52, 0x4f, 0x87, 0x2b, 0xc0, 0xd3, 0x50, 0x35, 0xaa, 0x0e, 0xf2, 0x86, 0xef, 0xe6, + 0x45, 0x31, 0x5a, 0x8b, 0x0c, 0x13, 0x0d, 0x45, 0x4f, 0x43, 0x03, 0x30, 0x32, 0x92, 0xf5, 0xe9, + 0x61, 0x39, 0xea, 0xb3, 0x23, 0xa8, 0x41, 0x23, 0xd9, 0xa5, 0xc1, 0x89, 0x96, 0xd3, 0xd4, 0xa6, + 0xb6, 0xe3, 0x78, 0xc3, 0x75, 0x2a, 0xbc, 0x39, 0x98, 0x07, 0x8f, 0xdb, 0x05, 0x25, 0x56, 0x96, + 0xfb, 0x98, 0x09, 0x6f, 0x25, 0x79, 0xd0, 0x43, 0x81, 0x53, 0x41, 0x39, 0x8d, 0xde, 0xe6, 0xd9, + 0x94, 0xf2, 0xe0, 0x93, 0x22, 0x17, 0x88, 0x3e, 0x29, 0x02, 0x20, 0xe8, 0x3a, 0xf9, 0xbb, 0x39, + 0x0e, 0xdd, 0xcf, 0x42, 0x5d, 0xa7, 0x94, 0x1d, 0x2a, 0xd6, 0x75, 0x41, 0x1a, 0x44, 0x03, 0xe3, + 0x56, 0xbd, 0x1a, 0xff, 0x24, 0x66, 0x06, 0xbc, 0x1f, 0xbf, 0x36, 0x88, 0x05, 0x2b, 0x8a, 0x75, + 0x98, 0xcf, 0x72, 0x1e, 0x5a, 0x51, 0x1c, 0x1b, 0x2d, 0x12, 0x5b, 0x51, 0xba, 0x28, 0x56, 0xbd, + 0x36, 0x47, 0xd8, 0xcf, 0xe2, 0xd5, 0x93, 0xcc, 0xb0, 0xea, 0x19, 0xb6, 0xf3, 0x60, 0xb3, 0x34, + 0x43, 0x86, 0x5f, 0xaa, 0xcd, 0x72, 0x60, 0x6c, 0x8b, 0x57, 0x26, 0x21, 0x18, 0x8b, 0x3a, 0x98, + 0x02, 0x3c, 0xb0, 0x6f, 0x39, 0xfd, 0xec, 0xb5, 0xaa, 0x28, 0xa9, 0x49, 0x99, 0x06, 0x37, 0xa7, + 0xc2, 0x60, 0x87, 0x8c, 0x6d, 0x4e, 0x51, 0x0d, 0xf0, 0xd8, 0xdc, 0x7f, 0xd9, 0x31, 0x30, 0x15, + 0xcc, 0x5b, 0x85, 0xfe, 0xbb, 0x8e, 0x8f, 0x07, 0x90, 0xf0, 0xb1, 0xb9, 0x06, 0xcc, 0xc1, 0xb7, + 0x74, 0xfa, 0x59, 0xc4, 0x94, 0x8f, 0xc6, 0x36, 0xc2, 0xb8, 0x0a, 0x18, 0xd4, 0x26, 0xc1, 0xa5, + 0xfc, 0x27, 0x74, 0x19, 0x1a, 0xd4, 0x36, 0x3f, 0x15, 0x48, 0x6c, 0x50, 0x77, 0x51, 0x90, 0x67, + 0xba, 0xfb, 0xa0, 0x87, 0x11, 0x7d, 0x77, 0xeb, 0xb3, 0xda, 0xcb, 0x81, 0x99, 0xb3, 0x93, 0x2f, + 0xbc, 0xe7, 0x04, 0x81, 0x82, 0xee, 0xe4, 0x8b, 0xf0, 0x63, 0x82, 0xb5, 0x41, 0x2c, 0x7c, 0x24, + 0x4f, 0x38, 0x7d, 0xa7, 0x9f, 0x95, 0x07, 0x8a, 0x2b, 0xe4, 0x9d, 0x87, 0xe5, 0x8f, 0xfa, 0x41, + 0x7b, 0x01, 0xf6, 0xb8, 0x66, 0x29, 0x6d, 0x1a, 0xf5, 0xbd, 0x3d, 0xff, 0x86, 0x91, 0x92, 0x8d, + 0xc1, 0xd7, 0xf6, 0xee, 0xc7, 0x21, 0x65, 0xfb, 0xab, 0xe4, 0xfd, 0x03, 0x36, 0x9d, 0xd0, 0x32, + 0x1b, 0xfd, 0xc0, 0xbf, 0x72, 0xca, 0xa6, 0xe3, 0xf6, 0x67, 0x63, 0xef, 0x16, 0x26, 0xb6, 0x97, + 0xe6, 0x76, 0xe8, 0xf9, 0x7c, 0x3a, 0xe1, 0x84, 0x83, 0x4b, 0x73, 0xe2, 0xf7, 0x71, 0x2b, 0x40, + 0x2e, 0xcd, 0x79, 0x00, 0xb0, 0x77, 0x5a, 0x53, 0x1a, 0xb4, 0xd7, 0x0a, 0xa2, 0xf6, 0x14, 0x60, + 0x57, 0x5d, 0x63, 0xaf, 0x4d, 0x6c, 0xe1, 0x25, 0x37, 0xab, 0x23, 0xa4, 0xc8, 0xaa, 0xdb, 0xa5, + 0xec, 0x60, 0x90, 0xd5, 0x17, 0x5f, 0xcc, 0x98, 0xcf, 0x66, 0xa4, 0x5e, 0x82, 0xc1, 0xa0, 0x6a, + 0xe9, 0x00, 0xc8, 0x60, 0x08, 0x82, 0x76, 0x94, 0xeb, 0x66, 0x4e, 0xaf, 0xf6, 0x58, 0xcd, 0xe6, + 0x3c, 0x2f, 0x29, 0xfc, 0x6a, 0x82, 0x69, 0x50, 0x97, 0x41, 0x46, 0x39, 0xc6, 0xda, 0xac, 0x50, + 0x10, 0xf2, 0xfe, 0x9d, 0xf8, 0x6a, 0x6d, 0xc3, 0x59, 0x0d, 0x9f, 0xbf, 0x49, 0x2b, 0x10, 0x42, + 0xb2, 0x42, 0x14, 0x06, 0x7d, 0x7f, 0x9c, 0x97, 0xd3, 0x60, 0xdf, 0x1f, 0xbb, 0xdf, 0x7c, 0xbc, + 0x83, 0x03, 0x36, 0xbe, 0xcb, 0x46, 0x93, 0x5f, 0x26, 0x52, 0xef, 0x3e, 0x06, 0x1b, 0xdd, 0x25, + 0x90, 0xf8, 0x1e, 0x26, 0x81, 0xab, 0xd7, 0x15, 0x2d, 0x69, 0xa6, 0x6f, 0x99, 0x85, 0x5c, 0x79, + 0x44, 0xd4, 0x15, 0x24, 0x6d, 0x54, 0x15, 0xf2, 0x93, 0x79, 0x79, 0x5c, 0xb3, 0x8b, 0xbc, 0xa0, + 0x35, 0x88, 0xaa, 0x52, 0xdd, 0x91, 0x23, 0x51, 0x35, 0xc4, 0xd9, 0xeb, 0x0a, 0x42, 0xea, 0x7d, + 0x7a, 0xf9, 0xb4, 0x26, 0x29, 0xbc, 0xae, 0x20, 0x6d, 0x74, 0x31, 0xe4, 0x24, 0x2d, 0x82, 0x3b, + 0x89, 0x81, 0x74, 0x5d, 0x2e, 0xc5, 0xf8, 0x50, 0xef, 0xde, 0x89, 0x2f, 0x21, 0x36, 0x20, 0x31, + 0x50, 0xe6, 0x42, 0x24, 0x92, 0x18, 0xc4, 0x35, 0x6c, 0xe8, 0x15, 0xdc, 0x91, 0xba, 0x86, 0x03, + 0x42, 0xaf, 0xb4, 0xa1, 0x85, 0x48, 0xe8, 0xed, 0x40, 0x20, 0x20, 0xe9, 0x69, 0x30, 0x0d, 0x06, + 0x24, 0x23, 0x8d, 0x06, 0x24, 0x97, 0xb2, 0x81, 0x62, 0xbf, 0xcc, 0x79, 0x4e, 0x8a, 0x09, 0xe5, + 0xc7, 0xa4, 0x26, 0x33, 0xca, 0x69, 0x0d, 0x03, 0x85, 0x42, 0xc6, 0x1e, 0x83, 0x04, 0x0a, 0x8c, + 0x55, 0x0e, 0xff, 0x20, 0xf9, 0xb0, 0x5d, 0x27, 0x69, 0xa9, 0xfe, 0xc8, 0xc2, 0x2b, 0xf1, 0xd7, + 0x59, 0x46, 0x1f, 0x19, 0x1b, 0x13, 0x5e, 0x53, 0x32, 0xd3, 0xb6, 0x3f, 0x30, 0xbf, 0x0b, 0xf0, + 0xe9, 0x4a, 0x3b, 0x9e, 0x8f, 0x18, 0xcf, 0x2f, 0xda, 0x6d, 0xa9, 0x7a, 0xe3, 0x06, 0x8c, 0x67, + 0x57, 0x3c, 0x8e, 0x7c, 0x47, 0x21, 0xc4, 0xd9, 0x38, 0xed, 0x4a, 0x4f, 0x68, 0x55, 0xc0, 0x38, + 0xed, 0x69, 0x0b, 0x00, 0x89, 0xd3, 0x41, 0xd0, 0x4e, 0x4e, 0x57, 0x7c, 0x4a, 0xe3, 0x95, 0x39, + 0xa5, 0xc3, 0x2a, 0x73, 0xea, 0xbd, 0xc4, 0x50, 0x24, 0x1f, 0x1e, 0xd2, 0xd9, 0x39, 0xad, 0x9b, + 0xcb, 0xbc, 0xda, 0x6b, 0x13, 0x14, 0xc2, 0xe7, 0xf0, 0x35, 0x3f, 0x4b, 0x8c, 0x0d, 0x82, 0x64, + 0x71, 0x08, 0x6a, 0x57, 0x02, 0x0b, 0xec, 0x37, 0x47, 0x64, 0x46, 0xc5, 0x57, 0x21, 0xc0, 0x4a, + 0xe0, 0x18, 0x71, 0x20, 0x64, 0x25, 0x40, 0x61, 0xe7, 0x7d, 0x28, 0xcb, 0x9c, 0xd0, 0x69, 0x3b, + 0xc2, 0xea, 0x63, 0xb2, 0x9c, 0xd1, 0x92, 0x2b, 0x93, 0xe0, 0x0c, 0xdb, 0x31, 0x19, 0xe6, 0x91, + 0x33, 0xec, 0x21, 0x7a, 0x4e, 0x68, 0xf2, 0x1a, 0xfe, 0x98, 0xd5, 0x5c, 0xfe, 0x09, 0x95, 0xb3, + 0xba, 0x00, 0xa1, 0xc9, 0x6f, 0x54, 0x8f, 0x44, 0x42, 0x53, 0x5c, 0xc3, 0xf9, 0xf6, 0xb8, 0x57, + 0x86, 0x37, 0xb4, 0x36, 0xe3, 0xe4, 0xd5, 0x8c, 0xe4, 0x85, 0x1a, 0x0d, 0x3f, 0x8a, 0xd8, 0x46, + 0x74, 0x90, 0x6f, 0x8f, 0x0f, 0xd5, 0x75, 0xbe, 0xd6, 0x1e, 0x2f, 0x21, 0x38, 0x52, 0xef, 0xb1, + 0x8f, 0x1c, 0xa9, 0xf7, 0x6b, 0xd9, 0x9d, 0xae, 0x65, 0x05, 0xb7, 0x14, 0xc4, 0x36, 0xcb, 0xe0, + 0xf9, 0x9a, 0x63, 0x13, 0x80, 0xc8, 0x4e, 0x37, 0xaa, 0x60, 0x53, 0x03, 0x8b, 0xed, 0xe6, 0x25, + 0x29, 0xf2, 0x9f, 0xc1, 0xcb, 0xd9, 0x8e, 0x1d, 0x4d, 0x20, 0xa9, 0x41, 0x98, 0x0c, 0xb9, 0xda, + 0xa3, 0xfc, 0x34, 0x6f, 0x43, 0xff, 0xa3, 0x48, 0xbb, 0x09, 0xa2, 0xdf, 0x95, 0x43, 0x3a, 0xdf, + 0x17, 0x85, 0xcd, 0xba, 0x55, 0x55, 0x93, 0x76, 0x55, 0x3d, 0xa1, 0x29, 0xcd, 0x2b, 0x3e, 0x7a, + 0x11, 0x6f, 0x2b, 0x80, 0x23, 0x17, 0x13, 0x06, 0xa8, 0x39, 0x8f, 0xbb, 0xdb, 0x58, 0x32, 0x91, + 0x7f, 0x5b, 0xec, 0xac, 0xa1, 0xb5, 0x4a, 0x34, 0xf6, 0x28, 0x07, 0xb3, 0xd3, 0xe1, 0xc6, 0x0e, + 0xd8, 0x56, 0x14, 0x99, 0x9d, 0x71, 0x0d, 0x7b, 0x38, 0xe6, 0x70, 0x27, 0xb4, 0x61, 0xc5, 0x82, + 0x8a, 0xfb, 0x79, 0xeb, 0xa8, 0x31, 0x87, 0x42, 0x0e, 0xc7, 0x70, 0xda, 0x66, 0x6b, 0x5d, 0xb7, + 0x5b, 0xe5, 0x72, 0x1f, 0x5e, 0x31, 0x08, 0x58, 0x12, 0x18, 0x92, 0xad, 0x45, 0x70, 0xe7, 0xf0, + 0xb8, 0x66, 0x24, 0x4b, 0x49, 0xc3, 0x8f, 0xc9, 0xb2, 0x60, 0x24, 0x13, 0xeb, 0x3a, 0x3c, 0x3c, + 0xd6, 0xcc, 0xd8, 0x85, 0xb0, 0xc3, 0x63, 0x0c, 0x76, 0xb3, 0x33, 0xf1, 0x27, 0xd3, 0xd4, 0xdd, + 0x47, 0x98, 0x9d, 0x89, 0xf2, 0xc2, 0x7b, 0x8f, 0xf7, 0xe3, 0x90, 0x7d, 0x67, 0x4b, 0x8a, 0x44, + 0x1a, 0x72, 0x27, 0xa4, 0xe3, 0x25, 0x20, 0x77, 0x23, 0x84, 0xfd, 0x8e, 0x83, 0xfc, 0x5d, 0xff, + 0xd5, 0x0f, 0xae, 0xbe, 0xc2, 0xbc, 0x1e, 0xd2, 0x75, 0xa1, 0xb1, 0xfb, 0x71, 0xb6, 0x8d, 0x81, + 0xb4, 0x4d, 0x33, 0xb7, 0x2f, 0x09, 0xdf, 0xca, 0xb2, 0x43, 0xda, 0x04, 0x5e, 0xc0, 0x6e, 0x85, + 0x63, 0x2b, 0x45, 0xd2, 0xcc, 0x2e, 0x65, 0x07, 0x7a, 0x2b, 0x7b, 0x95, 0xe5, 0x5c, 0xc9, 0xf4, + 0x8d, 0xe2, 0xf5, 0xae, 0x81, 0x2e, 0x85, 0xd4, 0x0a, 0xa7, 0x6d, 0x2c, 0x6f, 0x99, 0x53, 0x36, + 0x9d, 0x16, 0x54, 0x41, 0x27, 0x94, 0xc8, 0x8f, 0xd0, 0x6d, 0x76, 0x6d, 0x05, 0x41, 0x24, 0x96, + 0x47, 0x15, 0x6c, 0x1a, 0xd9, 0x62, 0xf2, 0x11, 0x8e, 0x6e, 0xd8, 0xd5, 0xae, 0x19, 0x0f, 0x40, + 0xd2, 0xc8, 0x20, 0x68, 0xdf, 0x13, 0x6b, 0xc5, 0x7b, 0x54, 0xb7, 0x04, 0xfc, 0x64, 0x8f, 0x50, + 0x76, 0xc4, 0xc8, 0x7b, 0x62, 0x01, 0xcc, 0xee, 0x13, 0x80, 0x87, 0x97, 0xcb, 0xfd, 0x0c, 0xee, + 0x13, 0xa0, 0xbe, 0x60, 0x90, 0x7d, 0x02, 0xc6, 0xfa, 0x5d, 0x67, 0xbe, 0x4f, 0x7c, 0x40, 0x1a, + 0x5b, 0xb9, 0x40, 0xd7, 0x05, 0xc1, 0x58, 0xd7, 0x61, 0x0a, 0x7e, 0x93, 0xba, 0x5f, 0x3f, 0x0e, + 0x34, 0x69, 0xe8, 0xab, 0xc7, 0x0f, 0xfb, 0x30, 0x1b, 0x97, 0xcc, 0x7e, 0x52, 0x5c, 0xf1, 0x09, + 0x7f, 0x7d, 0x5e, 0x0a, 0x91, 0xb8, 0xd4, 0x81, 0xa4, 0xed, 0x97, 0x77, 0xff, 0xfb, 0x9b, 0x5b, + 0x2b, 0xbf, 0xf8, 0xe6, 0xd6, 0xca, 0xff, 0x7e, 0x73, 0x6b, 0xe5, 0xe7, 0xdf, 0xde, 0x7a, 0xef, + 0x17, 0xdf, 0xde, 0x7a, 0xef, 0x7f, 0xbe, 0xbd, 0xf5, 0xde, 0xd7, 0xef, 0xab, 0x3f, 0xa5, 0x79, + 0xfe, 0x2b, 0xe2, 0x0f, 0x62, 0x3e, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xf9, 0xe5, + 0xb2, 0x6e, 0x73, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -636,7 +638,9 @@ type ClientCommandsClient interface { DebugRunProfiler(ctx context.Context, in *pb.RpcDebugRunProfilerRequest, opts ...grpc.CallOption) (*pb.RpcDebugRunProfilerResponse, error) DebugAccountSelectTrace(ctx context.Context, in *pb.RpcDebugAccountSelectTraceRequest, opts ...grpc.CallOption) (*pb.RpcDebugAccountSelectTraceResponse, error) DebugAnystoreObjectChanges(ctx context.Context, in *pb.RpcDebugAnystoreObjectChangesRequest, opts ...grpc.CallOption) (*pb.RpcDebugAnystoreObjectChangesResponse, error) - MetricsSetParameters(ctx context.Context, in *pb.RpcMetricsSetParametersRequest, opts ...grpc.CallOption) (*pb.RpcMetricsSetParametersResponse, error) + DebugNetCheck(ctx context.Context, in *pb.RpcDebugNetCheckRequest, opts ...grpc.CallOption) (*pb.RpcDebugNetCheckResponse, error) + DebugExportLog(ctx context.Context, in *pb.RpcDebugExportLogRequest, opts ...grpc.CallOption) (*pb.RpcDebugExportLogResponse, error) + InitialSetParameters(ctx context.Context, in *pb.RpcInitialSetParametersRequest, opts ...grpc.CallOption) (*pb.RpcInitialSetParametersResponse, error) // used only for lib-server via grpc ListenSessionEvents(ctx context.Context, in *pb.StreamRequest, opts ...grpc.CallOption) (ClientCommands_ListenSessionEventsClient, error) NotificationList(ctx context.Context, in *pb.RpcNotificationListRequest, opts ...grpc.CallOption) (*pb.RpcNotificationListResponse, error) @@ -2786,9 +2790,27 @@ func (c *clientCommandsClient) DebugAnystoreObjectChanges(ctx context.Context, i return out, nil } -func (c *clientCommandsClient) MetricsSetParameters(ctx context.Context, in *pb.RpcMetricsSetParametersRequest, opts ...grpc.CallOption) (*pb.RpcMetricsSetParametersResponse, error) { - out := new(pb.RpcMetricsSetParametersResponse) - err := c.cc.Invoke(ctx, "/anytype.ClientCommands/MetricsSetParameters", in, out, opts...) +func (c *clientCommandsClient) DebugNetCheck(ctx context.Context, in *pb.RpcDebugNetCheckRequest, opts ...grpc.CallOption) (*pb.RpcDebugNetCheckResponse, error) { + out := new(pb.RpcDebugNetCheckResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/DebugNetCheck", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) DebugExportLog(ctx context.Context, in *pb.RpcDebugExportLogRequest, opts ...grpc.CallOption) (*pb.RpcDebugExportLogResponse, error) { + out := new(pb.RpcDebugExportLogResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/DebugExportLog", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *clientCommandsClient) InitialSetParameters(ctx context.Context, in *pb.RpcInitialSetParametersRequest, opts ...grpc.CallOption) (*pb.RpcInitialSetParametersResponse, error) { + out := new(pb.RpcInitialSetParametersResponse) + err := c.cc.Invoke(ctx, "/anytype.ClientCommands/InitialSetParameters", in, out, opts...) if err != nil { return nil, err } @@ -3362,7 +3384,9 @@ type ClientCommandsServer interface { DebugRunProfiler(context.Context, *pb.RpcDebugRunProfilerRequest) *pb.RpcDebugRunProfilerResponse DebugAccountSelectTrace(context.Context, *pb.RpcDebugAccountSelectTraceRequest) *pb.RpcDebugAccountSelectTraceResponse DebugAnystoreObjectChanges(context.Context, *pb.RpcDebugAnystoreObjectChangesRequest) *pb.RpcDebugAnystoreObjectChangesResponse - MetricsSetParameters(context.Context, *pb.RpcMetricsSetParametersRequest) *pb.RpcMetricsSetParametersResponse + DebugNetCheck(context.Context, *pb.RpcDebugNetCheckRequest) *pb.RpcDebugNetCheckResponse + DebugExportLog(context.Context, *pb.RpcDebugExportLogRequest) *pb.RpcDebugExportLogResponse + InitialSetParameters(context.Context, *pb.RpcInitialSetParametersRequest) *pb.RpcInitialSetParametersResponse // used only for lib-server via grpc ListenSessionEvents(*pb.StreamRequest, ClientCommands_ListenSessionEventsServer) NotificationList(context.Context, *pb.RpcNotificationListRequest) *pb.RpcNotificationListResponse @@ -4116,7 +4140,13 @@ func (*UnimplementedClientCommandsServer) DebugAccountSelectTrace(ctx context.Co func (*UnimplementedClientCommandsServer) DebugAnystoreObjectChanges(ctx context.Context, req *pb.RpcDebugAnystoreObjectChangesRequest) *pb.RpcDebugAnystoreObjectChangesResponse { return nil } -func (*UnimplementedClientCommandsServer) MetricsSetParameters(ctx context.Context, req *pb.RpcMetricsSetParametersRequest) *pb.RpcMetricsSetParametersResponse { +func (*UnimplementedClientCommandsServer) DebugNetCheck(ctx context.Context, req *pb.RpcDebugNetCheckRequest) *pb.RpcDebugNetCheckResponse { + return nil +} +func (*UnimplementedClientCommandsServer) DebugExportLog(ctx context.Context, req *pb.RpcDebugExportLogRequest) *pb.RpcDebugExportLogResponse { + return nil +} +func (*UnimplementedClientCommandsServer) InitialSetParameters(ctx context.Context, req *pb.RpcInitialSetParametersRequest) *pb.RpcInitialSetParametersResponse { return nil } func (*UnimplementedClientCommandsServer) ListenSessionEvents(req *pb.StreamRequest, srv ClientCommands_ListenSessionEventsServer) { @@ -8390,20 +8420,56 @@ func _ClientCommands_DebugAnystoreObjectChanges_Handler(srv interface{}, ctx con return interceptor(ctx, in, info, handler) } -func _ClientCommands_MetricsSetParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(pb.RpcMetricsSetParametersRequest) +func _ClientCommands_DebugNetCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcDebugNetCheckRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ClientCommandsServer).MetricsSetParameters(ctx, in), nil + return srv.(ClientCommandsServer).DebugNetCheck(ctx, in), nil } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/anytype.ClientCommands/MetricsSetParameters", + FullMethod: "/anytype.ClientCommands/DebugNetCheck", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClientCommandsServer).MetricsSetParameters(ctx, req.(*pb.RpcMetricsSetParametersRequest)), nil + return srv.(ClientCommandsServer).DebugNetCheck(ctx, req.(*pb.RpcDebugNetCheckRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_DebugExportLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcDebugExportLogRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).DebugExportLog(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/DebugExportLog", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).DebugExportLog(ctx, req.(*pb.RpcDebugExportLogRequest)), nil + } + return interceptor(ctx, in, info, handler) +} + +func _ClientCommands_InitialSetParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(pb.RpcInitialSetParametersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClientCommandsServer).InitialSetParameters(ctx, in), nil + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/anytype.ClientCommands/InitialSetParameters", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClientCommandsServer).InitialSetParameters(ctx, req.(*pb.RpcInitialSetParametersRequest)), nil } return interceptor(ctx, in, info, handler) } @@ -9885,8 +9951,16 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{ Handler: _ClientCommands_DebugAnystoreObjectChanges_Handler, }, { - MethodName: "MetricsSetParameters", - Handler: _ClientCommands_MetricsSetParameters_Handler, + MethodName: "DebugNetCheck", + Handler: _ClientCommands_DebugNetCheck_Handler, + }, + { + MethodName: "DebugExportLog", + Handler: _ClientCommands_DebugExportLog_Handler, + }, + { + MethodName: "InitialSetParameters", + Handler: _ClientCommands_InitialSetParameters_Handler, }, { MethodName: "NotificationList", diff --git a/pkg/lib/bundle/systemTypes.gen.go b/pkg/lib/bundle/systemTypes.gen.go index 1cfec0d5e..2e233fbc9 100644 --- a/pkg/lib/bundle/systemTypes.gen.go +++ b/pkg/lib/bundle/systemTypes.gen.go @@ -6,7 +6,7 @@ package bundle import domain "github.com/anyproto/anytype-heart/core/domain" -const SystemTypesChecksum = "e68b37f73baf858d7101257403a3a0605e09090dbe11432919e1e7a6d4668b67" +const SystemTypesChecksum = "bf5fb329802ba479e21c98306b1bda3226c17c6cae83b280ede6954d9c012185" // SystemTypes contains types that have some special biz logic depends on them in some objects // they shouldn't be removed or edited in any way @@ -17,6 +17,5 @@ var SystemTypes = append(InternalTypes, []domain.TypeKey{ TypeKeyCollection, TypeKeySet, TypeKeyBookmark, - TypeKeyChat, TypeKeyChatDerived, }...) diff --git a/pkg/lib/bundle/systemTypes.json b/pkg/lib/bundle/systemTypes.json index 5cd14e033..bd0534f6f 100644 --- a/pkg/lib/bundle/systemTypes.json +++ b/pkg/lib/bundle/systemTypes.json @@ -18,6 +18,5 @@ "collection", "set", "bookmark", - "chat", "chatDerived" ] diff --git a/pkg/lib/bundle/types.gen.go b/pkg/lib/bundle/types.gen.go index 72341c576..06d220a79 100644 --- a/pkg/lib/bundle/types.gen.go +++ b/pkg/lib/bundle/types.gen.go @@ -9,7 +9,7 @@ import ( "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) -const TypeChecksum = "f3ae9931142aa23ec9696ccb60fe1a68b4fdafcc345e307e0a26d4fb98a0686c" +const TypeChecksum = "5458717a4167a70b8a8e3148147e192263a645484359ec155b6856a8996e8ec8" const ( TypePrefix = "_ot" ) @@ -84,10 +84,11 @@ var ( }, TypeKeyChat: { - Description: "A chat", + Description: "A chat [deprecated]", + Hidden: true, IconEmoji: "💬", Layout: model.ObjectType_chat, - Name: "Chat", + Name: "Chat [deprecated]", Readonly: true, RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTag), MustGetRelationLink(RelationKeyDescription)}, Types: []model.SmartBlockType{model.SmartBlockType_ChatObject}, @@ -143,7 +144,7 @@ var ( Description: "Gregorian calendar date", Hidden: true, IconEmoji: "📅", - Layout: model.ObjectType_basic, + Layout: model.ObjectType_date, Name: "Date", Readonly: true, RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTag)}, diff --git a/pkg/lib/bundle/types.json b/pkg/lib/bundle/types.json index d88c80bff..3a2e3e32e 100644 --- a/pkg/lib/bundle/types.json +++ b/pkg/lib/bundle/types.json @@ -70,7 +70,7 @@ ], "emoji": "📅", "hidden": true, - "layout": "basic", + "layout": "date", "relations": [ "tag" ], @@ -459,18 +459,18 @@ }, { "id": "chat", - "name": "Chat", + "name": "Chat [deprecated]", "types": [ "ChatObject" ], "emoji": "💬", - "hidden": false, + "hidden": true, "layout": "chat", "relations": [ "tag", "description" ], - "description": "A chat" + "description": "A chat [deprecated]" }, { "id": "chatDerived", diff --git a/pkg/lib/core/smartblock/smartblock.go b/pkg/lib/core/smartblock/smartblock.go index aec43f972..ce55b923f 100644 --- a/pkg/lib/core/smartblock/smartblock.go +++ b/pkg/lib/core/smartblock/smartblock.go @@ -27,7 +27,7 @@ const ( SmartBlockTypeAnytypeProfile = SmartBlockType(model.SmartBlockType_AnytypeProfile) SmartBlockTypeDate = SmartBlockType(model.SmartBlockType_Date) SmartBlockTypeIdentity = SmartBlockType(model.SmartBlockType_Identity) - SmartBlockTypeChatObject = SmartBlockType(model.SmartBlockType_ChatObject) // Container for any-store based chats + SmartBlockTypeChatObject = SmartBlockType(model.SmartBlockType_ChatObject) // deprecated. Container for any-store based chats SmartBlockTypeChatDerivedObject = SmartBlockType(model.SmartBlockType_ChatDerivedObject) // Any-store based object for chat SmartBlockTypeAccountObject = SmartBlockType(model.SmartBlockType_AccountObject) @@ -72,10 +72,9 @@ func (sbt SmartBlockType) IsOneOf(sbts ...SmartBlockType) bool { // Indexable determines if the object of specific type need to be proceeded by the indexer in order to appear in sets func (sbt SmartBlockType) Indexable() (details, outgoingLinks bool) { switch sbt { - case SmartBlockTypeDate, SmartBlockTypeAccountOld, SmartBlockTypeArchive, - SmartBlockTypeHome, SmartBlockTypeNotificationObject, SmartBlockTypeDevicesObject: + case SmartBlockTypeDate, SmartBlockTypeAccountOld, SmartBlockTypeNotificationObject, SmartBlockTypeDevicesObject: return false, false - case SmartBlockTypeWidget: + case SmartBlockTypeWidget, SmartBlockTypeArchive, SmartBlockTypeHome: return true, false default: return true, true diff --git a/pkg/lib/environment/environment.go b/pkg/lib/environment/environment.go new file mode 100644 index 000000000..bd67c66e4 --- /dev/null +++ b/pkg/lib/environment/environment.go @@ -0,0 +1,4 @@ +package environment + +var ROOT_PATH = "" +var LOG_PATH = "" diff --git a/pkg/lib/localstore/ftsearch/autobatchertantivy.go b/pkg/lib/localstore/ftsearch/autobatchertantivy.go index 968739103..dfc747fa0 100644 --- a/pkg/lib/localstore/ftsearch/autobatchertantivy.go +++ b/pkg/lib/localstore/ftsearch/autobatchertantivy.go @@ -2,6 +2,7 @@ package ftsearch import ( "fmt" + "sync" tantivy "github.com/anyproto/tantivy-go" "github.com/blevesearch/bleve/v2/search" @@ -12,6 +13,7 @@ const docLimit = 10000 func (f *ftSearchTantivy) NewAutoBatcher(maxDocs int, maxSizeBytes uint64) AutoBatcher { return &ftIndexBatcherTantivy{ index: f.index, + mu: &f.mu, } } @@ -37,10 +39,12 @@ func (f *ftSearchTantivy) Iterate(objectId string, fields []string, shouldContin dm.Fields = make(map[string]any) dm.Fields[fieldSpace] = string(value.GetStringBytes(fieldSpace)) dm.Fields[fieldText] = string(value.GetStringBytes(fieldText)) + dm.Fields[fieldTextZh] = string(value.GetStringBytes(fieldTextZh)) dm.Fields[fieldTitle] = string(value.GetStringBytes(fieldTitle)) + dm.Fields[fieldTitleZh] = string(value.GetStringBytes(fieldTitleZh)) return dm, nil }, - fieldId, fieldSpace, fieldTitle, fieldText, + fieldId, fieldSpace, fieldTitle, fieldTitleZh, fieldText, fieldTextZh, ) if err != nil { return err @@ -49,9 +53,15 @@ func (f *ftSearchTantivy) Iterate(objectId string, fields []string, shouldContin var text, title, spaceId string for _, hit := range searchResult { if hit.Fields != nil { + if hit.Fields[fieldTextZh] != nil { + text, _ = hit.Fields[fieldTextZh].(string) + } if hit.Fields[fieldText] != nil { text, _ = hit.Fields[fieldText].(string) } + if hit.Fields[fieldTitleZh] != nil { + title, _ = hit.Fields[fieldTitleZh].(string) + } if hit.Fields[fieldTitle] != nil { title, _ = hit.Fields[fieldTitle].(string) } @@ -76,6 +86,7 @@ type ftIndexBatcherTantivy struct { index *tantivy.TantivyContext deleteIds []string updateDocs []*tantivy.Document + mu *sync.Mutex // original mutex, temporary solution } // Add adds a update operation to the batcher. If the batch is reaching the size limit, it will be indexed and reset. @@ -109,11 +120,21 @@ func (f *ftIndexBatcherTantivy) UpdateDoc(searchDoc SearchDoc) error { return err } + err = doc.AddField(fieldTitleZh, searchDoc.Title, f.index) + if err != nil { + return err + } + err = doc.AddField(fieldText, searchDoc.Text, f.index) if err != nil { return err } + err = doc.AddField(fieldTextZh, searchDoc.Text, f.index) + if err != nil { + return err + } + f.updateDocs = append(f.updateDocs, doc) if len(f.updateDocs) >= docLimit { @@ -124,6 +145,8 @@ func (f *ftIndexBatcherTantivy) UpdateDoc(searchDoc SearchDoc) error { // Finish indexes the remaining documents in the batch. func (f *ftIndexBatcherTantivy) Finish() error { + f.mu.Lock() + defer f.mu.Unlock() err := f.index.DeleteDocuments(fieldIdRaw, f.deleteIds...) if err != nil { return err diff --git a/pkg/lib/localstore/ftsearch/ftsearchbleve.go b/pkg/lib/localstore/ftsearch/ftsearchbleve.go index 04518cccf..7f66375e7 100644 --- a/pkg/lib/localstore/ftsearch/ftsearchbleve.go +++ b/pkg/lib/localstore/ftsearch/ftsearchbleve.go @@ -28,10 +28,12 @@ import ( const ( CName = "fts" ftsDir = "fts" - ftsVer = "6" + ftsVer = "7" fieldTitle = "Title" + fieldTitleZh = "TitleZh" fieldText = "Text" + fieldTextZh = "TextZh" fieldSpace = "SpaceID" fieldTitleNoTerms = "TitleNoTerms" fieldTextNoTerms = "TextNoTerms" diff --git a/pkg/lib/localstore/ftsearch/ftsearchtantivy.go b/pkg/lib/localstore/ftsearch/ftsearchtantivy.go index ffaacac49..984b51f33 100644 --- a/pkg/lib/localstore/ftsearch/ftsearchtantivy.go +++ b/pkg/lib/localstore/ftsearch/ftsearchtantivy.go @@ -19,6 +19,7 @@ import ( "os" "path/filepath" "strings" + "sync" "time" "github.com/anyproto/any-sync/app" @@ -49,12 +50,15 @@ type ftSearchTantivy struct { index *tantivy.TantivyContext schema *tantivy.Schema parserPool *fastjson.ParserPool + mu sync.Mutex } func (f *ftSearchTantivy) BatchDeleteObjects(ids []string) error { if len(ids) == 0 { return nil } + f.mu.Lock() + defer f.mu.Unlock() start := time.Now() defer func() { spentMs := time.Since(start).Milliseconds() @@ -74,6 +78,8 @@ func (f *ftSearchTantivy) BatchDeleteObjects(ids []string) error { } func (f *ftSearchTantivy) DeleteObject(objectId string) error { + f.mu.Lock() + defer f.mu.Unlock() return f.index.DeleteDocuments(fieldIdRaw, objectId) } @@ -146,6 +152,15 @@ func (f *ftSearchTantivy) Run(context.Context) error { tantivy.TokenizerNgram, ) + err = builder.AddTextField( + fieldTitleZh, + true, + true, + false, + tantivy.IndexRecordOptionWithFreqsAndPositions, + tantivy.TokenizerJieba, + ) + err = builder.AddTextField( fieldText, true, @@ -155,6 +170,15 @@ func (f *ftSearchTantivy) Run(context.Context) error { tantivy.TokenizerSimple, ) + err = builder.AddTextField( + fieldTextZh, + true, + true, + false, + tantivy.IndexRecordOptionWithFreqsAndPositions, + tantivy.TokenizerJieba, + ) + schema, err := builder.BuildSchema() if err != nil { return err @@ -175,6 +199,11 @@ func (f *ftSearchTantivy) Run(context.Context) error { return err } + err = index.RegisterTextAnalyzerJieba(tantivy.TokenizerJieba, 40) + if err != nil { + return err + } + err = index.RegisterTextAnalyzerSimple(tokenizerId, 1000, tantivy.English) if err != nil { return err @@ -206,6 +235,8 @@ func (f *ftSearchTantivy) tryToBuildSchema(schema *tantivy.Schema) (*tantivy.Tan } func (f *ftSearchTantivy) Index(doc SearchDoc) error { + f.mu.Lock() + defer f.mu.Unlock() metrics.ObjectFTUpdatedCounter.Inc() tantivyDoc, err := f.convertDoc(doc) if err != nil { @@ -234,10 +265,18 @@ func (f *ftSearchTantivy) convertDoc(doc SearchDoc) (*tantivy.Document, error) { if err != nil { return nil, err } + err = document.AddField(fieldTitleZh, doc.Title, f.index) + if err != nil { + return nil, err + } err = document.AddField(fieldText, doc.Text, f.index) if err != nil { return nil, err } + err = document.AddField(fieldTextZh, doc.Text, f.index) + if err != nil { + return nil, err + } return document, nil } @@ -256,7 +295,9 @@ func (f *ftSearchTantivy) BatchIndex(ctx context.Context, docs []SearchDoc, dele l.Debugf("ft index done") } }() + f.mu.Lock() err = f.index.DeleteDocuments(fieldIdRaw, deletedDocs...) + f.mu.Unlock() if err != nil { return err } @@ -268,6 +309,8 @@ func (f *ftSearchTantivy) BatchIndex(ctx context.Context, docs []SearchDoc, dele } tantivyDocs = append(tantivyDocs, tantivyDoc) } + f.mu.Lock() + defer f.mu.Unlock() return f.index.AddAndConsumeDocuments(tantivyDocs...) } @@ -280,7 +323,9 @@ func (f *ftSearchTantivy) Search(spaceIds []string, highlightFormatter Highlight if spaceIdsQuery != "" { query = fmt.Sprintf("%s AND %s", spaceIdsQuery, query) } - result, err := f.index.Search(query, 100, true, fieldId, fieldSpace, fieldTitle, fieldText) + result, err := f.index.Search(query, 100, true, + fieldId, fieldSpace, fieldTitle, fieldTitleZh, fieldText, fieldTextZh, + ) if err != nil { return nil, wrapError(err) } @@ -301,9 +346,9 @@ func (f *ftSearchTantivy) Search(spaceIds []string, highlightFormatter Highlight for _, val := range highlights { object := val.GetObject() fieldName := string(object.Get("field_name").GetStringBytes()) - if fieldName == fieldTitle { + if fieldName == fieldTitle || fieldName == fieldTitleZh { // fragments[fieldTitle] = append(fragments[fieldTitle], string(object.Get("fragment").MarshalTo(nil))) - } else if fieldName == fieldText { + } else if fieldName == fieldText || fieldName == fieldTextZh { fragments[fieldText] = append(fragments[fieldText], string(object.Get("fragment").MarshalTo(nil))) } } diff --git a/pkg/lib/localstore/ftsearch/ftsearchtantivy_test.go b/pkg/lib/localstore/ftsearch/ftsearchtantivy_test.go index 5aa81b764..bf80290c2 100644 --- a/pkg/lib/localstore/ftsearch/ftsearchtantivy_test.go +++ b/pkg/lib/localstore/ftsearch/ftsearchtantivy_test.go @@ -117,6 +117,9 @@ func TestNewFTSearch(t *testing.T) { { name: "assertFoundCaseSensitivePartsOfTheWords", tester: assertFoundCaseSensitivePartsOfTheWords, + }, { + name: "assertChineseFound", + tester: assertChineseFound, }, { name: "assertMultiSpace", @@ -176,27 +179,21 @@ func assertChineseFound(t *testing.T, tmpDir string) { require.NoError(t, ft.Index(SearchDoc{ Id: "1", Title: "", - Text: "你好", + Text: "张华考上了北京大学;李萍进了中等技术学校;我在百货公司当售货员:我们都有光明的前途", })) + require.NoError(t, ft.Index(SearchDoc{ Id: "2", - Title: "", - Text: "交代", - })) - require.NoError(t, ft.Index(SearchDoc{ - Id: "3", - Title: "", - Text: "长江大桥", + Title: "张华考上了北京大学;李萍进了中等技术学校;我在百货公司当售货员:我们都有光明的前途", + Text: "", })) queries := []string{ - "你好世界", - "亲口交代", - "长江", + "售货员", } for _, qry := range queries { - validateSearch(t, ft, "", qry, 1) + validateSearch(t, ft, "", qry, 2) } _ = ft.Close(nil) @@ -388,7 +385,7 @@ func assertMultiSpace(t *testing.T, tmpDir string) { validateSearch(t, ft, "", "Advanced", 1) validateSearch(t, ft, "", "dash", 2) validateSearch(t, ft, "", "space", 4) - validateSearch(t, ft, "", "of", 0) + validateSearch(t, ft, "", "of", 4) _ = ft.Close(nil) } diff --git a/pkg/lib/localstore/objectstore/fixture.go b/pkg/lib/localstore/objectstore/fixture.go index 069a2ef43..cc98324c2 100644 --- a/pkg/lib/localstore/objectstore/fixture.go +++ b/pkg/lib/localstore/objectstore/fixture.go @@ -30,7 +30,7 @@ func (fx *StoreFixture) TechSpaceId() string { type detailsFromId struct { } -func (d *detailsFromId) DetailsFromIdBasedSource(id string) (*domain.Details, error) { +func (d *detailsFromId) DetailsFromIdBasedSource(id domain.FullID) (*domain.Details, error) { return nil, fmt.Errorf("not found") } diff --git a/pkg/lib/localstore/objectstore/service.go b/pkg/lib/localstore/objectstore/service.go index 74d21b799..6e943045f 100644 --- a/pkg/lib/localstore/objectstore/service.go +++ b/pkg/lib/localstore/objectstore/service.go @@ -47,6 +47,7 @@ type CrossSpace interface { type ObjectStore interface { app.ComponentRunnable + IterateSpaceIndex(func(store spaceindex.Store) error) error SpaceIndex(spaceId string) spaceindex.Store GetCrdtDb(spaceId string) anystore.DB @@ -116,6 +117,21 @@ type dsObjectStore struct { componentCtxCancel context.CancelFunc } +func (s *dsObjectStore) IterateSpaceIndex(f func(store spaceindex.Store) error) error { + s.Lock() + spaceIndexes := make([]spaceindex.Store, 0, len(s.spaceIndexes)) + for _, store := range s.spaceIndexes { + spaceIndexes = append(spaceIndexes, store) + } + s.Unlock() + for _, store := range s.spaceIndexes { + if err := f(store); err != nil { + return err + } + } + return nil +} + func New() ObjectStore { ctx, cancel := context.WithCancel(context.Background()) return &dsObjectStore{ diff --git a/pkg/lib/localstore/objectstore/spaceindex/fixture.go b/pkg/lib/localstore/objectstore/spaceindex/fixture.go index 0ba240f1d..da5cf3e57 100644 --- a/pkg/lib/localstore/objectstore/spaceindex/fixture.go +++ b/pkg/lib/localstore/objectstore/spaceindex/fixture.go @@ -32,7 +32,7 @@ const spaceName = "space1" type detailsFromId struct { } -func (d *detailsFromId) DetailsFromIdBasedSource(id string) (*domain.Details, error) { +func (d *detailsFromId) DetailsFromIdBasedSource(id domain.FullID) (*domain.Details, error) { return nil, fmt.Errorf("not found") } diff --git a/pkg/lib/localstore/objectstore/spaceindex/objects.go b/pkg/lib/localstore/objectstore/spaceindex/objects.go index a2ada8bfe..398a20fb1 100644 --- a/pkg/lib/localstore/objectstore/spaceindex/objects.go +++ b/pkg/lib/localstore/objectstore/spaceindex/objects.go @@ -78,7 +78,10 @@ func (s *dsObjectStore) GetInfosByIds(ids []string) ([]*database.ObjectInfo, err } func (s *dsObjectStore) getObjectInfo(ctx context.Context, id string) (*database.ObjectInfo, error) { - details, err := s.sourceService.DetailsFromIdBasedSource(id) + details, err := s.sourceService.DetailsFromIdBasedSource(domain.FullID{ + ObjectID: id, + SpaceID: s.SpaceId(), + }) if err == nil { details.SetString(bundle.RelationKeyId, id) return &database.ObjectInfo{ diff --git a/pkg/lib/localstore/objectstore/spaceindex/queries.go b/pkg/lib/localstore/objectstore/spaceindex/queries.go index 2480c3f21..39ecf0a05 100644 --- a/pkg/lib/localstore/objectstore/spaceindex/queries.go +++ b/pkg/lib/localstore/objectstore/spaceindex/queries.go @@ -178,7 +178,10 @@ func (s *dsObjectStore) QueryFromFulltext(results []database.FulltextResult, par // Don't use spaceID because expected objects are virtual if sbt, err := typeprovider.SmartblockTypeFromID(res.Path.ObjectId); err == nil { if indexDetails, _ := sbt.Indexable(); !indexDetails && s.sourceService != nil { - details, err := s.sourceService.DetailsFromIdBasedSource(res.Path.ObjectId) + details, err := s.sourceService.DetailsFromIdBasedSource(domain.FullID{ + ObjectID: res.Path.ObjectId, + SpaceID: s.SpaceId(), + }) if err != nil { log.Errorf("QueryByIds failed to GetDetailsFromIdBasedSource id: %s", res.Path.ObjectId) continue @@ -443,7 +446,10 @@ func (s *dsObjectStore) QueryByIds(ids []string) (records []database.Record, err // Don't use spaceID because expected objects are virtual if sbt, err := typeprovider.SmartblockTypeFromID(id); err == nil { if indexDetails, _ := sbt.Indexable(); !indexDetails && s.sourceService != nil { - details, err := s.sourceService.DetailsFromIdBasedSource(id) + details, err := s.sourceService.DetailsFromIdBasedSource(domain.FullID{ + ObjectID: id, + SpaceID: s.SpaceId(), + }) if err != nil { log.Errorf("QueryByIds failed to GetDetailsFromIdBasedSource id: %s", id) continue diff --git a/pkg/lib/localstore/objectstore/spaceindex/queries_test.go b/pkg/lib/localstore/objectstore/spaceindex/queries_test.go index 6b8fb3f2f..5297c7d11 100644 --- a/pkg/lib/localstore/objectstore/spaceindex/queries_test.go +++ b/pkg/lib/localstore/objectstore/spaceindex/queries_test.go @@ -1036,7 +1036,7 @@ type dummySourceService struct { objectToReturn TestObject } -func (s dummySourceService) DetailsFromIdBasedSource(id string) (*domain.Details, error) { +func (s dummySourceService) DetailsFromIdBasedSource(id domain.FullID) (*domain.Details, error) { return makeDetails(s.objectToReturn), nil } diff --git a/pkg/lib/localstore/objectstore/spaceindex/store.go b/pkg/lib/localstore/objectstore/spaceindex/store.go index c11fbde21..6040b8276 100644 --- a/pkg/lib/localstore/objectstore/spaceindex/store.go +++ b/pkg/lib/localstore/objectstore/spaceindex/store.go @@ -90,7 +90,7 @@ type Store interface { } type SourceDetailsFromID interface { - DetailsFromIdBasedSource(id string) (*domain.Details, error) + DetailsFromIdBasedSource(id domain.FullID) (*domain.Details, error) } type FulltextQueue interface { @@ -100,8 +100,6 @@ type FulltextQueue interface { } type dsObjectStore struct { - initErr error - spaceId string db anystore.DB objects anystore.Collection @@ -157,8 +155,7 @@ func New(componentCtx context.Context, spaceId string, deps Deps) Store { var err error err = s.openDatabase(componentCtx, deps.DbPath) if err != nil { - s.initErr = err - return s + return NewInvalidStore(err) } return s diff --git a/pkg/lib/localstore/objectstore/spaceindex/store_test.go b/pkg/lib/localstore/objectstore/spaceindex/store_test.go new file mode 100644 index 000000000..408ddca4a --- /dev/null +++ b/pkg/lib/localstore/objectstore/spaceindex/store_test.go @@ -0,0 +1,18 @@ +package spaceindex + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestNewWithError(t *testing.T) { + spaceIndex := New(context.Background(), "space1", Deps{ + // Crazy path to force an error + DbPath: "....\\\\\\....///////****", + }) + + _, err := spaceIndex.ListIds() + require.Error(t, err) +} diff --git a/pkg/lib/logging/logging.go b/pkg/lib/logging/logging.go index 430a802d4..fef03d278 100644 --- a/pkg/lib/logging/logging.go +++ b/pkg/lib/logging/logging.go @@ -2,16 +2,21 @@ package logging import ( "fmt" + "net/url" "os" + "path/filepath" "strings" "github.com/anyproto/any-sync/app/logger" "go.uber.org/zap" + "gopkg.in/natefinch/lumberjack.v2" + "github.com/anyproto/anytype-heart/pkg/lib/environment" "github.com/anyproto/anytype-heart/util/vcs" ) const DefaultLogLevels = "common.commonspace.headsync=INFO;core.block.editor.spaceview=INFO;*=WARN" +const lumberjackScheme = "lumberjack" var DefaultCfg = logger.Config{ Production: false, @@ -69,18 +74,70 @@ func SetLogLevels(levels string) { cfg.ApplyGlobal() } -func init() { - if os.Getenv("ANYTYPE_LOG_NOGELF") == "1" { - DefaultCfg.Format = logger.ColorizedOutput +type lumberjackSink struct { + *lumberjack.Logger +} + +func (s *lumberjackSink) Sync() error { + return nil +} + +func newLumberjackSink(u *url.URL) (zap.Sink, error) { + return &lumberjackSink{ + Logger: &lumberjack.Logger{ + Filename: u.Path, + MaxSize: 1, + MaxAge: 28, + }, + }, nil +} + +func Init(root string, logLevels string, sendLogs bool, saveLogs bool) { + if root != "" { + environment.ROOT_PATH = filepath.Join(root, "common") + err := os.Mkdir(environment.ROOT_PATH, 0755) + if err != nil { + fmt.Println("failed to create global dir", err) + } + } + + if os.Getenv("ANYTYPE_LOG_NOGELF") == "1" || !sendLogs { + if !saveLogs { + DefaultCfg.Format = logger.ColorizedOutput + } } else { registerGelfSink(&DefaultCfg) info := vcs.GetVCSInfo() SetVersion(info.Version()) } - logLevels := os.Getenv("ANYTYPE_LOG_LEVEL") + if saveLogs { + registerLumberjackSink(environment.ROOT_PATH, &DefaultCfg) + } + envLogLevels := os.Getenv("ANYTYPE_LOG_LEVEL") + if logLevels == "" { + logLevels = envLogLevels + } if logLevels == "" { logLevels = DefaultLogLevels } SetLogLevels(logLevels) } + +func registerLumberjackSink(globalRoot string, config *logger.Config) { + if globalRoot == "" { + fmt.Println("globalRoot dir is not set") + return + } + err := zap.RegisterSink(lumberjackScheme, newLumberjackSink) + if err != nil { + fmt.Println("failed to register lumberjack sink", err) + } + logsDir := filepath.Join(globalRoot, "logs") + err = os.Mkdir(logsDir, 0755) + if err != nil { + fmt.Println("failed to create globalRoot dir", err) + } + environment.LOG_PATH = filepath.Join(logsDir, "anytype.log") + config.AddOutputPaths = append(config.AddOutputPaths, lumberjackScheme+":"+environment.LOG_PATH) +} diff --git a/pkg/lib/pb/model/models.pb.go b/pkg/lib/pb/model/models.pb.go index 71d3fd496..95297191f 100644 --- a/pkg/lib/pb/model/models.pb.go +++ b/pkg/lib/pb/model/models.pb.go @@ -5376,6 +5376,7 @@ type AccountInfo struct { ArchiveObjectId string `protobuf:"bytes,3,opt,name=archiveObjectId,proto3" json:"archiveObjectId,omitempty"` ProfileObjectId string `protobuf:"bytes,4,opt,name=profileObjectId,proto3" json:"profileObjectId,omitempty"` MarketplaceWorkspaceId string `protobuf:"bytes,11,opt,name=marketplaceWorkspaceId,proto3" json:"marketplaceWorkspaceId,omitempty"` + WorkspaceObjectId string `protobuf:"bytes,15,opt,name=workspaceObjectId,proto3" json:"workspaceObjectId,omitempty"` DeviceId string `protobuf:"bytes,8,opt,name=deviceId,proto3" json:"deviceId,omitempty"` AccountSpaceId string `protobuf:"bytes,9,opt,name=accountSpaceId,proto3" json:"accountSpaceId,omitempty"` WidgetsId string `protobuf:"bytes,10,opt,name=widgetsId,proto3" json:"widgetsId,omitempty"` @@ -5449,6 +5450,13 @@ func (m *AccountInfo) GetMarketplaceWorkspaceId() string { return "" } +func (m *AccountInfo) GetWorkspaceObjectId() string { + if m != nil { + return m.WorkspaceObjectId + } + return "" +} + func (m *AccountInfo) GetDeviceId() string { if m != nil { return m.DeviceId @@ -9400,547 +9408,548 @@ func init() { } var fileDescriptor_98a910b73321e591 = []byte{ - // 8632 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7d, 0x4b, 0x90, 0x24, 0x49, - 0x76, 0x50, 0xe5, 0x3f, 0xf3, 0x65, 0x7d, 0xbc, 0xbc, 0x7f, 0xb9, 0x39, 0xad, 0x56, 0x2b, 0x77, - 0x76, 0xa6, 0xb7, 0x77, 0xb6, 0x7a, 0xa6, 0xe7, 0xbb, 0xa3, 0x9d, 0x99, 0xad, 0x4f, 0x56, 0x57, - 0x4e, 0xd7, 0x6f, 0x22, 0xb3, 0xbb, 0x77, 0xc7, 0x24, 0x1a, 0xaf, 0x0c, 0xaf, 0xcc, 0x98, 0x8a, - 0x8c, 0xc8, 0x8d, 0xf0, 0xac, 0xae, 0x1a, 0x03, 0x4c, 0x80, 0x90, 0xd0, 0x6d, 0x91, 0x21, 0x3e, - 0x07, 0x4c, 0xbb, 0x37, 0x0c, 0xad, 0x81, 0x71, 0x58, 0x63, 0xc1, 0x90, 0x19, 0xe8, 0x82, 0xcc, - 0xb8, 0x2c, 0x70, 0x00, 0x4e, 0x60, 0x3b, 0x47, 0x4c, 0xc8, 0xc4, 0x49, 0x86, 0x71, 0xc0, 0xde, - 0x73, 0x8f, 0x4f, 0x7e, 0xaa, 0x3a, 0x7b, 0x24, 0x61, 0x9c, 0x2a, 0xfc, 0xc5, 0x7b, 0x2f, 0xfc, - 0xf3, 0xfc, 0xf9, 0xfb, 0x79, 0x16, 0xbc, 0x3c, 0x3c, 0xe9, 0xdd, 0x73, 0x9d, 0xa3, 0x7b, 0xc3, - 0xa3, 0x7b, 0x03, 0xdf, 0x96, 0xee, 0xbd, 0x61, 0xe0, 0x2b, 0x3f, 0xd4, 0x8d, 0x70, 0x8d, 0x5a, - 0x7c, 0x49, 0x78, 0xe7, 0xea, 0x7c, 0x28, 0xd7, 0x08, 0x5a, 0xbf, 0xd9, 0xf3, 0xfd, 0x9e, 0x2b, - 0x35, 0xea, 0xd1, 0xe8, 0xf8, 0x5e, 0xa8, 0x82, 0x51, 0x57, 0x69, 0xe4, 0xc6, 0xcf, 0xf2, 0x70, - 0xbd, 0x3d, 0x10, 0x81, 0xda, 0x70, 0xfd, 0xee, 0x49, 0xdb, 0x13, 0xc3, 0xb0, 0xef, 0xab, 0x0d, - 0x11, 0x4a, 0xfe, 0x1a, 0x14, 0x8f, 0x10, 0x18, 0xd6, 0x32, 0xb7, 0x73, 0x77, 0xaa, 0xf7, 0xaf, - 0xae, 0x8d, 0x31, 0x5e, 0x23, 0x0a, 0xcb, 0xe0, 0xf0, 0x37, 0xa0, 0x64, 0x4b, 0x25, 0x1c, 0x37, - 0xac, 0x65, 0x6f, 0x67, 0xee, 0x54, 0xef, 0xdf, 0x58, 0xd3, 0x1f, 0x5e, 0x8b, 0x3e, 0xbc, 0xd6, - 0xa6, 0x0f, 0x5b, 0x11, 0x1e, 0x7f, 0x17, 0xca, 0xc7, 0x8e, 0x2b, 0x1f, 0xca, 0xf3, 0xb0, 0x96, - 0xbb, 0x94, 0x66, 0x23, 0x5b, 0xcb, 0x58, 0x31, 0x32, 0xdf, 0x84, 0x65, 0x79, 0xa6, 0x02, 0x61, - 0x49, 0x57, 0x28, 0xc7, 0xf7, 0xc2, 0x5a, 0x9e, 0x7a, 0x78, 0x63, 0xa2, 0x87, 0xd1, 0x7b, 0x22, - 0x9f, 0x20, 0xe1, 0xb7, 0xa1, 0xea, 0x1f, 0x7d, 0x26, 0xbb, 0xaa, 0x73, 0x3e, 0x94, 0x61, 0xad, - 0x70, 0x3b, 0x77, 0xa7, 0x62, 0xa5, 0x41, 0xfc, 0x5b, 0x50, 0xed, 0xfa, 0xae, 0x2b, 0xbb, 0xfa, - 0x1b, 0xc5, 0xcb, 0x87, 0x95, 0xc6, 0xe5, 0x6f, 0xc1, 0xb5, 0x40, 0x0e, 0xfc, 0x53, 0x69, 0x6f, - 0xc6, 0x50, 0x1a, 0x67, 0x99, 0x3e, 0x33, 0xfb, 0x25, 0x5f, 0x87, 0xa5, 0xc0, 0xf4, 0x6f, 0xd7, - 0xf1, 0x4e, 0xc2, 0x5a, 0x89, 0x86, 0xf5, 0xd2, 0x05, 0xc3, 0x42, 0x1c, 0x6b, 0x9c, 0x82, 0x33, - 0xc8, 0x9d, 0xc8, 0xf3, 0x5a, 0xe5, 0x76, 0xe6, 0x4e, 0xc5, 0xc2, 0x47, 0xfe, 0x3e, 0xd4, 0xfc, - 0xc0, 0xe9, 0x39, 0x9e, 0x70, 0x37, 0x03, 0x29, 0x94, 0xb4, 0x3b, 0xce, 0x40, 0x86, 0x4a, 0x0c, - 0x86, 0x35, 0xb8, 0x9d, 0xb9, 0x93, 0xb3, 0x2e, 0x7c, 0xcf, 0xdf, 0xd4, 0x2b, 0xd4, 0xf2, 0x8e, - 0xfd, 0x5a, 0xd5, 0x0c, 0x7f, 0xbc, 0x2f, 0xdb, 0xe6, 0xb5, 0x15, 0x23, 0x36, 0xfe, 0x34, 0x0b, - 0xc5, 0xb6, 0x14, 0x41, 0xb7, 0x5f, 0xff, 0xcd, 0x0c, 0x14, 0x2d, 0x19, 0x8e, 0x5c, 0xc5, 0xeb, - 0x50, 0xd6, 0x73, 0xdb, 0xb2, 0x6b, 0x19, 0xea, 0x5d, 0xdc, 0xfe, 0x32, 0xb2, 0xb3, 0x06, 0xf9, - 0x81, 0x54, 0xa2, 0x96, 0xa3, 0x19, 0xaa, 0x4f, 0xf4, 0x4a, 0x7f, 0x7e, 0x6d, 0x4f, 0x2a, 0x61, - 0x11, 0x5e, 0xfd, 0x8b, 0x0c, 0xe4, 0xb1, 0xc9, 0x6f, 0x42, 0xa5, 0xef, 0xf4, 0xfa, 0xae, 0xd3, - 0xeb, 0x2b, 0xd3, 0x91, 0x04, 0xc0, 0x3f, 0x84, 0x95, 0xb8, 0x61, 0x09, 0xaf, 0x27, 0xb1, 0x47, - 0xb3, 0x84, 0x9f, 0x5e, 0x5a, 0x93, 0xc8, 0xbc, 0x06, 0x25, 0xda, 0x0f, 0x2d, 0x9b, 0x24, 0xba, - 0x62, 0x45, 0x4d, 0x14, 0xb7, 0x68, 0xa5, 0x1e, 0xca, 0xf3, 0x5a, 0x9e, 0xde, 0xa6, 0x41, 0x7c, - 0x1d, 0x56, 0xa2, 0xe6, 0x96, 0x99, 0x8d, 0xc2, 0xe5, 0xb3, 0x31, 0x89, 0xdf, 0xf8, 0xcf, 0x2d, - 0x28, 0xd0, 0xb6, 0xe4, 0xcb, 0x90, 0x75, 0xa2, 0x89, 0xce, 0x3a, 0x36, 0xbf, 0x07, 0xc5, 0x63, - 0x47, 0xba, 0xf6, 0x73, 0x67, 0xd8, 0xa0, 0xf1, 0x26, 0x2c, 0x06, 0x32, 0x54, 0x81, 0x63, 0xa4, - 0x5f, 0x6f, 0xd0, 0x5f, 0x9a, 0xa5, 0x03, 0xd6, 0xac, 0x14, 0xa2, 0x35, 0x46, 0x86, 0xc3, 0xee, - 0xf6, 0x1d, 0xd7, 0x0e, 0xa4, 0xd7, 0xb2, 0xf5, 0x3e, 0xad, 0x58, 0x69, 0x10, 0xbf, 0x03, 0x2b, - 0x47, 0xa2, 0x7b, 0xd2, 0x0b, 0xfc, 0x91, 0x87, 0x1b, 0xc2, 0x0f, 0x68, 0xd8, 0x15, 0x6b, 0x12, - 0xcc, 0x5f, 0x87, 0x82, 0x70, 0x9d, 0x9e, 0x47, 0x3b, 0x71, 0x79, 0x6a, 0xd1, 0x75, 0x5f, 0xd6, - 0x11, 0xc3, 0xd2, 0x88, 0x7c, 0x07, 0x96, 0x4e, 0x65, 0xa0, 0x9c, 0xae, 0x70, 0x09, 0x5e, 0x2b, - 0x11, 0x65, 0x63, 0x26, 0xe5, 0xe3, 0x34, 0xa6, 0x35, 0x4e, 0xc8, 0x5b, 0x00, 0x21, 0xaa, 0x49, - 0x5a, 0x4e, 0xb3, 0x17, 0x5e, 0x9d, 0xc9, 0x66, 0xd3, 0xf7, 0x94, 0xf4, 0xd4, 0x5a, 0x3b, 0x46, - 0xdf, 0x59, 0xb0, 0x52, 0xc4, 0xfc, 0x5d, 0xc8, 0x2b, 0x79, 0xa6, 0x6a, 0xcb, 0x97, 0xcc, 0x68, - 0xc4, 0xa4, 0x23, 0xcf, 0xd4, 0xce, 0x82, 0x45, 0x04, 0x48, 0x88, 0x9b, 0xac, 0xb6, 0x32, 0x07, - 0x21, 0xee, 0x4b, 0x24, 0x44, 0x02, 0xfe, 0x01, 0x14, 0x5d, 0x71, 0xee, 0x8f, 0x54, 0x8d, 0x11, - 0xe9, 0x57, 0x2f, 0x25, 0xdd, 0x25, 0xd4, 0x9d, 0x05, 0xcb, 0x10, 0xf1, 0xb7, 0x20, 0x67, 0x3b, - 0xa7, 0xb5, 0x55, 0xa2, 0xbd, 0x7d, 0x29, 0xed, 0x96, 0x73, 0xba, 0xb3, 0x60, 0x21, 0x3a, 0xdf, - 0x84, 0xf2, 0x91, 0xef, 0x9f, 0x0c, 0x44, 0x70, 0x52, 0xe3, 0x44, 0xfa, 0xb5, 0x4b, 0x49, 0x37, - 0x0c, 0xf2, 0xce, 0x82, 0x15, 0x13, 0xe2, 0x90, 0x9d, 0xae, 0xef, 0xd5, 0xae, 0xcc, 0x31, 0xe4, - 0x56, 0xd7, 0xf7, 0x70, 0xc8, 0x48, 0x80, 0x84, 0xae, 0xe3, 0x9d, 0xd4, 0xae, 0xce, 0x41, 0x88, - 0x9a, 0x13, 0x09, 0x91, 0x00, 0xbb, 0x6d, 0x0b, 0x25, 0x4e, 0x1d, 0xf9, 0xac, 0x76, 0x6d, 0x8e, - 0x6e, 0x6f, 0x19, 0x64, 0xec, 0x76, 0x44, 0x88, 0x4c, 0xa2, 0xad, 0x59, 0xbb, 0x3e, 0x07, 0x93, - 0x48, 0xa3, 0x23, 0x93, 0x88, 0x90, 0xff, 0x25, 0x58, 0x3d, 0x96, 0x42, 0x8d, 0x02, 0x69, 0x27, - 0x07, 0xdd, 0x0d, 0xe2, 0xb6, 0x76, 0xf9, 0xda, 0x4f, 0x52, 0xed, 0x2c, 0x58, 0xd3, 0xac, 0xf8, - 0xfb, 0x50, 0x70, 0x85, 0x92, 0x67, 0xb5, 0x1a, 0xf1, 0x6c, 0x3c, 0x47, 0x28, 0x94, 0x3c, 0xdb, - 0x59, 0xb0, 0x34, 0x09, 0xff, 0x2e, 0xac, 0x28, 0x71, 0xe4, 0xca, 0x83, 0x63, 0x83, 0x10, 0xd6, - 0xbe, 0x42, 0x5c, 0x5e, 0xbb, 0x5c, 0x9c, 0xc7, 0x69, 0x76, 0x16, 0xac, 0x49, 0x36, 0xd8, 0x2b, - 0x02, 0xd5, 0xea, 0x73, 0xf4, 0x8a, 0xf8, 0x61, 0xaf, 0x88, 0x84, 0xef, 0x42, 0x95, 0x1e, 0x36, - 0x7d, 0x77, 0x34, 0xf0, 0x6a, 0x2f, 0x11, 0x87, 0x3b, 0xcf, 0xe7, 0xa0, 0xf1, 0x77, 0x16, 0xac, - 0x34, 0x39, 0x2e, 0x22, 0x35, 0x2d, 0xff, 0x59, 0xed, 0xe6, 0x1c, 0x8b, 0xd8, 0x31, 0xc8, 0xb8, - 0x88, 0x11, 0x21, 0x6e, 0xbd, 0x67, 0x8e, 0xdd, 0x93, 0xaa, 0xf6, 0x0b, 0x73, 0x6c, 0xbd, 0x27, - 0x84, 0x8a, 0x5b, 0x4f, 0x13, 0xa1, 0x18, 0x77, 0xfb, 0x42, 0xd5, 0x6e, 0xcd, 0x21, 0xc6, 0x9b, - 0x7d, 0x41, 0xba, 0x02, 0x09, 0xea, 0x9f, 0xc3, 0x62, 0x5a, 0x2b, 0x73, 0x0e, 0xf9, 0x40, 0x0a, - 0x7d, 0x22, 0x94, 0x2d, 0x7a, 0x46, 0x98, 0xb4, 0x1d, 0x45, 0x27, 0x42, 0xd9, 0xa2, 0x67, 0x7e, - 0x1d, 0x8a, 0xda, 0x36, 0x21, 0x85, 0x5f, 0xb6, 0x4c, 0x0b, 0x71, 0xed, 0x40, 0xf4, 0xe8, 0xdc, - 0x2a, 0x5b, 0xf4, 0x8c, 0xb8, 0x76, 0xe0, 0x0f, 0x0f, 0x3c, 0x52, 0xd8, 0x65, 0xcb, 0xb4, 0xea, - 0xff, 0xea, 0x7d, 0x28, 0x99, 0x4e, 0xd5, 0xff, 0x51, 0x06, 0x8a, 0x5a, 0xa1, 0xf0, 0x8f, 0xa0, - 0x10, 0xaa, 0x73, 0x57, 0x52, 0x1f, 0x96, 0xef, 0x7f, 0x7d, 0x0e, 0x25, 0xb4, 0xd6, 0x46, 0x02, - 0x4b, 0xd3, 0x35, 0x2c, 0x28, 0x50, 0x9b, 0x97, 0x20, 0x67, 0xf9, 0xcf, 0xd8, 0x02, 0x07, 0x28, - 0xea, 0xc5, 0x62, 0x19, 0x04, 0x6e, 0x39, 0xa7, 0x2c, 0x8b, 0xc0, 0x1d, 0x29, 0x6c, 0x19, 0xb0, - 0x1c, 0x5f, 0x82, 0x4a, 0xb4, 0x2c, 0x21, 0xcb, 0x73, 0x06, 0x8b, 0xa9, 0x05, 0x0f, 0x59, 0xa1, - 0xfe, 0xbf, 0xf2, 0x90, 0xc7, 0xfd, 0xcf, 0x5f, 0x86, 0x25, 0x25, 0x82, 0x9e, 0xd4, 0x86, 0x70, - 0x6c, 0xa4, 0x8c, 0x03, 0xf9, 0x07, 0xd1, 0x18, 0xb2, 0x34, 0x86, 0x57, 0x9f, 0xab, 0x57, 0xc6, - 0x46, 0x90, 0x3a, 0x85, 0x73, 0xf3, 0x9d, 0xc2, 0xdb, 0x50, 0x46, 0x75, 0xd6, 0x76, 0x3e, 0x97, - 0x34, 0xf5, 0xcb, 0xf7, 0xef, 0x3e, 0xff, 0x93, 0x2d, 0x43, 0x61, 0xc5, 0xb4, 0xbc, 0x05, 0x95, - 0xae, 0x08, 0x6c, 0xea, 0x0c, 0xad, 0xd6, 0xf2, 0xfd, 0x6f, 0x3c, 0x9f, 0xd1, 0x66, 0x44, 0x62, - 0x25, 0xd4, 0xfc, 0x00, 0xaa, 0xb6, 0x0c, 0xbb, 0x81, 0x33, 0x24, 0xf5, 0xa6, 0xcf, 0xe2, 0x6f, - 0x3e, 0x9f, 0xd9, 0x56, 0x42, 0x64, 0xa5, 0x39, 0xa0, 0x45, 0x16, 0xc4, 0xfa, 0xad, 0x44, 0x06, - 0x42, 0x02, 0x68, 0xbc, 0x0b, 0xe5, 0x68, 0x3c, 0x7c, 0x11, 0xca, 0xf8, 0x77, 0xdf, 0xf7, 0x24, - 0x5b, 0xc0, 0xb5, 0xc5, 0x56, 0x7b, 0x20, 0x5c, 0x97, 0x65, 0xf8, 0x32, 0x00, 0x36, 0xf7, 0xa4, - 0xed, 0x8c, 0x06, 0x2c, 0xdb, 0xf8, 0xe5, 0x48, 0x5a, 0xca, 0x90, 0x3f, 0x14, 0x3d, 0xa4, 0x58, - 0x84, 0x72, 0xa4, 0xae, 0x59, 0x06, 0xe9, 0xb7, 0x44, 0xd8, 0x3f, 0xf2, 0x45, 0x60, 0xb3, 0x2c, - 0xaf, 0x42, 0x69, 0x3d, 0xe8, 0xf6, 0x9d, 0x53, 0xc9, 0x72, 0x8d, 0x7b, 0x50, 0x4d, 0xf5, 0x17, - 0x59, 0x98, 0x8f, 0x56, 0xa0, 0xb0, 0x6e, 0xdb, 0xd2, 0x66, 0x19, 0x24, 0x30, 0x03, 0x64, 0xd9, - 0xc6, 0x37, 0xa0, 0x12, 0xcf, 0x16, 0xa2, 0xe3, 0xc1, 0xcd, 0x16, 0xf0, 0x09, 0xc1, 0x2c, 0x83, - 0x52, 0xd9, 0xf2, 0x5c, 0xc7, 0x93, 0x2c, 0x5b, 0xff, 0xcb, 0x24, 0xaa, 0xfc, 0xdb, 0xe3, 0x1b, - 0xe2, 0x95, 0xe7, 0x9d, 0xac, 0xe3, 0xbb, 0xe1, 0xa5, 0xd4, 0xf8, 0x76, 0x1d, 0xea, 0x5c, 0x19, - 0xf2, 0x5b, 0xbe, 0x0a, 0x59, 0xa6, 0xfe, 0x3f, 0xb2, 0x50, 0x8e, 0x0e, 0x54, 0xf4, 0x09, 0x46, - 0x81, 0x6b, 0x04, 0x1a, 0x1f, 0xf9, 0x55, 0x28, 0x28, 0x47, 0x19, 0x31, 0xae, 0x58, 0xba, 0x81, - 0xb6, 0x5a, 0x7a, 0x65, 0xb5, 0x01, 0x3b, 0xb9, 0x54, 0xce, 0x40, 0xf4, 0xe4, 0x8e, 0x08, 0xfb, - 0xc6, 0x84, 0x4d, 0x00, 0x48, 0x7f, 0x2c, 0x4e, 0x51, 0xe6, 0xe8, 0xbd, 0xb6, 0xe2, 0xd2, 0x20, - 0xfe, 0x26, 0xe4, 0x71, 0x80, 0x46, 0x68, 0x7e, 0x71, 0x62, 0xc0, 0x28, 0x26, 0x87, 0x81, 0xc4, - 0xe5, 0x59, 0x43, 0x0f, 0xcc, 0x22, 0x64, 0xfe, 0x0a, 0x2c, 0xeb, 0x4d, 0x78, 0x10, 0xf9, 0x0f, - 0x25, 0xe2, 0x3c, 0x01, 0xe5, 0xeb, 0x38, 0x9d, 0x42, 0xc9, 0x5a, 0x79, 0x0e, 0xf9, 0x8e, 0x26, - 0x67, 0xad, 0x8d, 0x24, 0x96, 0xa6, 0x6c, 0xbc, 0x8d, 0x73, 0x2a, 0x94, 0xc4, 0x65, 0x6e, 0x0e, - 0x86, 0xea, 0x5c, 0x0b, 0xcd, 0xb6, 0x54, 0xdd, 0xbe, 0xe3, 0xf5, 0x58, 0x46, 0x4f, 0x31, 0x2e, - 0x22, 0xa1, 0x04, 0x81, 0x1f, 0xb0, 0x5c, 0xbd, 0x0e, 0x79, 0x94, 0x51, 0x54, 0x92, 0x9e, 0x18, - 0x48, 0x33, 0xd3, 0xf4, 0x5c, 0xbf, 0x02, 0xab, 0x53, 0xe7, 0x71, 0xfd, 0x5f, 0x16, 0xb5, 0x84, - 0x20, 0x05, 0xd9, 0x82, 0x86, 0x82, 0xcc, 0xbc, 0x17, 0xd2, 0x31, 0xc8, 0x65, 0x5c, 0xc7, 0x7c, - 0x00, 0x05, 0x1c, 0x58, 0xa4, 0x62, 0xe6, 0x20, 0xdf, 0x43, 0x74, 0x4b, 0x53, 0xa1, 0x07, 0xd3, - 0xed, 0xcb, 0xee, 0x89, 0xb4, 0x8d, 0xae, 0x8f, 0x9a, 0x28, 0x34, 0xdd, 0x94, 0x79, 0xae, 0x1b, - 0x24, 0x12, 0x5d, 0xdf, 0x6b, 0x0e, 0xfc, 0xcf, 0x1c, 0x5a, 0x57, 0x14, 0x89, 0x08, 0x10, 0xbd, - 0x6d, 0xa1, 0x8c, 0x98, 0x65, 0x4b, 0x00, 0xf5, 0x26, 0x14, 0xe8, 0xdb, 0xb8, 0x13, 0x74, 0x9f, - 0x75, 0xa4, 0xe1, 0x95, 0xf9, 0xfa, 0x6c, 0xba, 0x5c, 0xff, 0x71, 0x16, 0xf2, 0xd8, 0xe6, 0x77, - 0xa1, 0x10, 0xa0, 0x1f, 0x46, 0xd3, 0x79, 0x91, 0xcf, 0xa6, 0x51, 0xf8, 0x47, 0x46, 0x14, 0xb3, - 0x73, 0x08, 0x4b, 0xfc, 0xc5, 0xb4, 0x58, 0x5e, 0x85, 0xc2, 0x50, 0x04, 0x62, 0x60, 0xf6, 0x89, - 0x6e, 0x34, 0x7e, 0x98, 0x81, 0x3c, 0x22, 0xf1, 0x55, 0x58, 0x6a, 0xab, 0xc0, 0x39, 0x91, 0xaa, - 0x1f, 0xf8, 0xa3, 0x5e, 0x5f, 0x4b, 0xd2, 0x43, 0x79, 0xae, 0xf5, 0x8d, 0x56, 0x08, 0x4a, 0xb8, - 0x4e, 0x97, 0x65, 0x51, 0xaa, 0x36, 0x7c, 0xd7, 0x66, 0x39, 0xbe, 0x02, 0xd5, 0x47, 0x9e, 0x2d, - 0x83, 0xb0, 0xeb, 0x07, 0xd2, 0x66, 0x79, 0xb3, 0xbb, 0x4f, 0x58, 0x81, 0xce, 0x32, 0x79, 0xa6, - 0xc8, 0x17, 0x62, 0x45, 0x7e, 0x05, 0x56, 0x36, 0xc6, 0x1d, 0x24, 0x56, 0x42, 0x9d, 0xb4, 0x27, - 0x3d, 0x14, 0x32, 0x56, 0xd6, 0x42, 0xec, 0x7f, 0xe6, 0xb0, 0x0a, 0x7e, 0x4c, 0xef, 0x13, 0x06, - 0x8d, 0x7f, 0x9d, 0x89, 0x34, 0xc7, 0x12, 0x54, 0x0e, 0x45, 0x20, 0x7a, 0x81, 0x18, 0x62, 0xff, - 0xaa, 0x50, 0xd2, 0x07, 0xe7, 0x1b, 0x5a, 0xbb, 0xe9, 0xc6, 0x7d, 0xad, 0x1b, 0x75, 0xe3, 0x4d, - 0x96, 0x4b, 0x1a, 0x6f, 0xb1, 0x3c, 0x7e, 0xe3, 0x93, 0x91, 0xaf, 0x24, 0x2b, 0x90, 0xae, 0xf3, - 0x6d, 0xc9, 0x8a, 0x08, 0xec, 0xa0, 0x46, 0x61, 0x25, 0x1c, 0xf3, 0x26, 0xca, 0xcf, 0x91, 0x7f, - 0xc6, 0xca, 0xd8, 0x0d, 0x9c, 0x46, 0x69, 0xb3, 0x0a, 0xbe, 0xd9, 0x1f, 0x0d, 0x8e, 0x24, 0x0e, - 0x13, 0xf0, 0x4d, 0xc7, 0xef, 0xf5, 0x5c, 0xc9, 0xaa, 0x38, 0x07, 0x29, 0xe5, 0xcb, 0x16, 0x49, - 0xd3, 0x0a, 0xd7, 0xf5, 0x47, 0x8a, 0x2d, 0xd5, 0xff, 0x34, 0x07, 0x79, 0xf4, 0x6e, 0x70, 0xef, - 0xf4, 0x51, 0xcf, 0x98, 0xbd, 0x83, 0xcf, 0xf1, 0x0e, 0xcc, 0x26, 0x3b, 0x90, 0xbf, 0x6f, 0x56, - 0x3a, 0x37, 0x87, 0x96, 0x45, 0xc6, 0xe9, 0x45, 0xe6, 0x90, 0x1f, 0x38, 0x03, 0x69, 0x74, 0x1d, - 0x3d, 0x23, 0x2c, 0xc4, 0xf3, 0xb8, 0x40, 0xc1, 0x13, 0x7a, 0xc6, 0x5d, 0x23, 0xf0, 0x58, 0x58, - 0x57, 0xb4, 0x07, 0x72, 0x56, 0xd4, 0x9c, 0xa1, 0xbd, 0x2a, 0x33, 0xb5, 0xd7, 0x07, 0x91, 0xf6, - 0x2a, 0xcd, 0xb1, 0xeb, 0xa9, 0x9b, 0x69, 0xcd, 0x95, 0x28, 0x8d, 0xf2, 0xfc, 0xe4, 0xa9, 0xc3, - 0x64, 0xcb, 0x48, 0x6d, 0x72, 0xd0, 0x95, 0xf5, 0x2c, 0xb3, 0x0c, 0xae, 0x26, 0x6d, 0x57, 0xad, - 0xf3, 0x1e, 0x3b, 0xb6, 0xf4, 0x59, 0x8e, 0x0e, 0xc2, 0x91, 0xed, 0xf8, 0x2c, 0x8f, 0x96, 0xd7, - 0xe1, 0xd6, 0x36, 0x2b, 0x34, 0x5e, 0x49, 0x1d, 0x49, 0xeb, 0x23, 0xe5, 0x6b, 0x36, 0x24, 0xbe, - 0x19, 0x2d, 0x8d, 0x47, 0xd2, 0x66, 0xd9, 0xc6, 0x3b, 0x33, 0xd4, 0xec, 0x12, 0x54, 0x1e, 0x0d, - 0x5d, 0x5f, 0xd8, 0x97, 0xe8, 0xd9, 0x45, 0x80, 0xc4, 0xab, 0xae, 0xff, 0xd1, 0x2f, 0x26, 0xc7, - 0x39, 0xda, 0xa2, 0xa1, 0x3f, 0x0a, 0xba, 0x92, 0x54, 0x48, 0xc5, 0x32, 0x2d, 0xfe, 0x1d, 0x28, - 0xe0, 0xfb, 0x28, 0x8c, 0x73, 0x77, 0x2e, 0x5f, 0x6e, 0xed, 0xb1, 0x23, 0x9f, 0x59, 0x9a, 0x90, - 0xdf, 0x02, 0x10, 0x5d, 0xe5, 0x9c, 0x4a, 0x04, 0x9a, 0xcd, 0x9e, 0x82, 0xf0, 0xb7, 0xd3, 0xe6, - 0xcb, 0xe5, 0x71, 0xc8, 0x94, 0x5d, 0xc3, 0x2d, 0xa8, 0xe2, 0xd6, 0x1d, 0x1e, 0x04, 0xb8, 0xdb, - 0x6b, 0x8b, 0x44, 0xf8, 0xfa, 0x7c, 0xdd, 0x7b, 0x10, 0x13, 0x5a, 0x69, 0x26, 0xfc, 0x11, 0x2c, - 0xea, 0x98, 0x9a, 0x61, 0xba, 0x44, 0x4c, 0xdf, 0x98, 0x8f, 0xe9, 0x41, 0x42, 0x69, 0x8d, 0xb1, - 0x99, 0x0e, 0x4b, 0x16, 0x5e, 0x38, 0x2c, 0xf9, 0x0a, 0x2c, 0x77, 0xc6, 0x77, 0x81, 0x3e, 0x2a, - 0x26, 0xa0, 0xbc, 0x01, 0x8b, 0x4e, 0x98, 0x44, 0x45, 0x29, 0x46, 0x52, 0xb6, 0xc6, 0x60, 0xf5, - 0xff, 0x50, 0x84, 0x3c, 0xcd, 0xfc, 0x64, 0x8c, 0x6b, 0x73, 0x4c, 0xa5, 0xdf, 0x9b, 0x7f, 0xa9, - 0x27, 0x76, 0x3c, 0x69, 0x90, 0x5c, 0x4a, 0x83, 0x7c, 0x07, 0x0a, 0xa1, 0x1f, 0xa8, 0x68, 0x79, - 0xe7, 0x14, 0xa2, 0xb6, 0x1f, 0x28, 0x4b, 0x13, 0xf2, 0x6d, 0x28, 0x1d, 0x3b, 0xae, 0xc2, 0x45, - 0xd1, 0x93, 0xf7, 0xda, 0x7c, 0x3c, 0xb6, 0x89, 0xc8, 0x8a, 0x88, 0xf9, 0x6e, 0x5a, 0xd8, 0x8a, - 0xc4, 0x69, 0x6d, 0x3e, 0x4e, 0xb3, 0x64, 0xf0, 0x2e, 0xb0, 0xae, 0x7f, 0x2a, 0x03, 0x2b, 0x15, - 0x98, 0xd4, 0x87, 0xf4, 0x14, 0x9c, 0xd7, 0xa1, 0xdc, 0x77, 0x6c, 0x89, 0x76, 0x0e, 0xe9, 0x98, - 0xb2, 0x15, 0xb7, 0xf9, 0x43, 0x28, 0x93, 0x7f, 0x80, 0x5a, 0xb1, 0xf2, 0xc2, 0x93, 0xaf, 0x5d, - 0x95, 0x88, 0x01, 0x7e, 0x88, 0x3e, 0xbe, 0xed, 0x28, 0x8a, 0x4f, 0x97, 0xad, 0xb8, 0x8d, 0x1d, - 0x26, 0x79, 0x4f, 0x77, 0xb8, 0xaa, 0x3b, 0x3c, 0x09, 0xe7, 0x6f, 0xc1, 0x35, 0x82, 0x4d, 0x1c, - 0x92, 0xb8, 0xd5, 0x90, 0xe9, 0xec, 0x97, 0x68, 0xb0, 0x0c, 0x45, 0x4f, 0xee, 0x3a, 0x03, 0x47, - 0xd5, 0x96, 0x6e, 0x67, 0xee, 0x14, 0xac, 0x04, 0xc0, 0x5f, 0x83, 0x55, 0x5b, 0x1e, 0x8b, 0x91, - 0xab, 0x3a, 0x72, 0x30, 0x74, 0x85, 0x92, 0x2d, 0x9b, 0x64, 0xb4, 0x62, 0x4d, 0xbf, 0xe0, 0xaf, - 0xc3, 0x15, 0x03, 0x3c, 0x88, 0xb3, 0x0a, 0x2d, 0x9b, 0xc2, 0x77, 0x15, 0x6b, 0xd6, 0xab, 0xc6, - 0x9e, 0x51, 0xc3, 0x78, 0x80, 0xa2, 0x9f, 0x1a, 0x29, 0xd0, 0x50, 0xe9, 0x13, 0xf9, 0x81, 0x70, - 0x5d, 0x19, 0x9c, 0x6b, 0x27, 0xf7, 0xa1, 0xf0, 0x8e, 0x84, 0xc7, 0x72, 0x74, 0xc6, 0x0a, 0x57, - 0x7a, 0xb6, 0x08, 0xf4, 0x89, 0xfc, 0x80, 0x0e, 0xf4, 0x42, 0xe3, 0x0e, 0xe4, 0x69, 0x4a, 0x2b, - 0x50, 0xd0, 0x5e, 0x12, 0x79, 0xcc, 0xc6, 0x43, 0x22, 0x8d, 0xbc, 0x8b, 0xdb, 0x8f, 0x65, 0xeb, - 0x3f, 0xcd, 0x41, 0x39, 0x9a, 0xbc, 0x28, 0x87, 0x90, 0x49, 0x72, 0x08, 0x68, 0xc6, 0x85, 0x8f, - 0x9d, 0xd0, 0x39, 0x32, 0x66, 0x69, 0xd9, 0x4a, 0x00, 0x68, 0x09, 0x3d, 0x73, 0x6c, 0xd5, 0xa7, - 0x3d, 0x53, 0xb0, 0x74, 0x83, 0xdf, 0x81, 0x15, 0x1b, 0xe7, 0xc1, 0xeb, 0xba, 0x23, 0x5b, 0x76, - 0xf0, 0x14, 0xd5, 0x61, 0x82, 0x49, 0x30, 0xff, 0x1e, 0x80, 0x72, 0x06, 0x72, 0xdb, 0x0f, 0x06, - 0x42, 0x19, 0xdf, 0xe0, 0x5b, 0x2f, 0x26, 0xd5, 0x6b, 0x9d, 0x98, 0x81, 0x95, 0x62, 0x86, 0xac, - 0xf1, 0x6b, 0x86, 0x75, 0xe9, 0x4b, 0xb1, 0xde, 0x8a, 0x19, 0x58, 0x29, 0x66, 0x8d, 0x5f, 0x01, - 0x48, 0xde, 0xf0, 0xeb, 0xc0, 0xf7, 0x7c, 0x4f, 0xf5, 0xd7, 0x8f, 0x8e, 0x82, 0x0d, 0x79, 0xec, - 0x07, 0x72, 0x4b, 0xe0, 0xb1, 0x76, 0x0d, 0x56, 0x63, 0xf8, 0xfa, 0xb1, 0x92, 0x01, 0x82, 0x69, - 0xea, 0xdb, 0x7d, 0x3f, 0x50, 0xda, 0xb6, 0xa2, 0xc7, 0x47, 0x6d, 0x96, 0xc3, 0xa3, 0xb4, 0xd5, - 0x3e, 0x60, 0xf9, 0xc6, 0x1d, 0x80, 0x64, 0x48, 0xe4, 0x83, 0xd0, 0xd3, 0x1b, 0xf7, 0x8d, 0x47, - 0x42, 0xad, 0xfb, 0x6f, 0xb1, 0x4c, 0xfd, 0x0f, 0x73, 0x90, 0x47, 0x55, 0x83, 0xee, 0x57, 0x7a, - 0x5f, 0xe8, 0xe5, 0x4b, 0x83, 0xbe, 0x9c, 0x82, 0x44, 0xde, 0x69, 0x05, 0xf9, 0x1e, 0x54, 0xbb, - 0xa3, 0x50, 0xf9, 0x03, 0x3a, 0x1d, 0x4c, 0x02, 0xe6, 0xfa, 0x54, 0x20, 0xe3, 0xb1, 0x70, 0x47, - 0xd2, 0x4a, 0xa3, 0xf2, 0xb7, 0xa1, 0x78, 0xac, 0x17, 0x42, 0x87, 0x32, 0x7e, 0xe1, 0x82, 0x03, - 0xc4, 0x4c, 0xb6, 0x41, 0xc6, 0x71, 0x39, 0x53, 0x42, 0x94, 0x06, 0x99, 0x83, 0xa0, 0x18, 0x1f, - 0x04, 0xbf, 0x02, 0xcb, 0x12, 0xcd, 0x8a, 0x43, 0x57, 0x74, 0xe5, 0x40, 0x7a, 0xd1, 0xca, 0xbf, - 0xf5, 0x02, 0x23, 0x26, 0xbb, 0x84, 0x86, 0x3d, 0xc1, 0xab, 0xf1, 0x35, 0xb3, 0x49, 0x4b, 0x90, - 0x5b, 0x0f, 0xbb, 0xc6, 0xed, 0x96, 0x61, 0x57, 0xdb, 0xf4, 0x9b, 0x34, 0x60, 0x96, 0x6d, 0xbc, - 0x01, 0x95, 0x98, 0x07, 0x67, 0xb0, 0xb8, 0xef, 0xab, 0xf6, 0x50, 0x76, 0x9d, 0x63, 0x47, 0xda, - 0x3a, 0x90, 0xd0, 0x56, 0x22, 0x50, 0x3a, 0x72, 0xd5, 0xf4, 0x6c, 0x96, 0xad, 0xff, 0x5e, 0x19, - 0x8a, 0x5a, 0xe3, 0x9b, 0x21, 0x55, 0xe2, 0x21, 0x7d, 0x02, 0x65, 0x7f, 0x28, 0x03, 0xa1, 0xfc, - 0xc0, 0x84, 0x0b, 0xde, 0x7e, 0x91, 0x13, 0x64, 0xed, 0xc0, 0x10, 0x5b, 0x31, 0x9b, 0x49, 0x79, - 0xc9, 0x4e, 0xcb, 0xcb, 0x5d, 0x60, 0xd1, 0x61, 0x71, 0x18, 0x20, 0x9d, 0x3a, 0x37, 0xce, 0xdf, - 0x14, 0x9c, 0x77, 0xa0, 0xd2, 0xf5, 0x3d, 0xdb, 0x89, 0x43, 0x07, 0xcb, 0xf7, 0xdf, 0x79, 0xa1, - 0x1e, 0x6e, 0x46, 0xd4, 0x56, 0xc2, 0x88, 0xbf, 0x06, 0x85, 0x53, 0x14, 0x24, 0x92, 0x98, 0x8b, - 0xc5, 0x4c, 0x23, 0xf1, 0x4f, 0xa1, 0xfa, 0xfd, 0x91, 0xd3, 0x3d, 0x39, 0x48, 0x87, 0xa6, 0xde, - 0x7b, 0xa1, 0x5e, 0x7c, 0x92, 0xd0, 0x5b, 0x69, 0x66, 0x29, 0xe1, 0x2d, 0xfd, 0x19, 0x84, 0xb7, - 0x3c, 0x2d, 0xbc, 0x16, 0x2c, 0x79, 0x32, 0x54, 0xd2, 0xde, 0x36, 0x06, 0x02, 0x7c, 0x09, 0x03, - 0x61, 0x9c, 0x45, 0xe3, 0xab, 0x50, 0x8e, 0x16, 0x9c, 0x17, 0x21, 0xbb, 0x8f, 0x96, 0x78, 0x11, - 0xb2, 0x07, 0x81, 0x96, 0xb6, 0x75, 0x94, 0xb6, 0xc6, 0x1f, 0x67, 0xa0, 0x12, 0x4f, 0xfa, 0x78, - 0x88, 0xab, 0xf9, 0xfd, 0x91, 0x70, 0x59, 0x86, 0x7c, 0x34, 0x5f, 0xe9, 0x16, 0x69, 0xaa, 0x07, - 0x94, 0x21, 0x0e, 0x58, 0x8e, 0xce, 0x25, 0x19, 0x86, 0x2c, 0xcf, 0x39, 0x2c, 0x1b, 0xf0, 0x41, - 0xa0, 0x51, 0x0b, 0xe8, 0xc2, 0xe1, 0xdb, 0x08, 0x50, 0xd4, 0xc7, 0xd8, 0x89, 0xd4, 0x2e, 0xea, - 0xbe, 0xaf, 0xa8, 0x51, 0xc6, 0x4e, 0xb5, 0x3c, 0x56, 0xc1, 0x6f, 0xee, 0xfb, 0xaa, 0xe5, 0x31, - 0x48, 0x7c, 0x82, 0x6a, 0xf4, 0x79, 0x6a, 0x2d, 0x92, 0xc7, 0xe1, 0xba, 0x2d, 0x8f, 0x2d, 0x99, - 0x17, 0xba, 0xb5, 0x8c, 0x1c, 0x9b, 0x67, 0xa2, 0x8b, 0xe4, 0x2b, 0x7c, 0x19, 0x00, 0x69, 0x4c, - 0x9b, 0xe1, 0x96, 0x6c, 0x9e, 0x39, 0xa1, 0x0a, 0xd9, 0x6a, 0xe3, 0xdf, 0x67, 0xa0, 0x9a, 0x5a, - 0x60, 0xf4, 0x39, 0x08, 0x11, 0xf5, 0xb8, 0x76, 0x41, 0xbe, 0x87, 0xd3, 0x18, 0xd8, 0x91, 0x8e, - 0xee, 0xf8, 0xf8, 0x98, 0xc5, 0xef, 0x75, 0xfc, 0x81, 0x1f, 0x04, 0xfe, 0x33, 0x7d, 0xde, 0xee, - 0x8a, 0x50, 0x3d, 0x91, 0xf2, 0x84, 0xe5, 0x71, 0xa8, 0x9b, 0xa3, 0x20, 0x90, 0x9e, 0x06, 0x14, - 0xa8, 0x73, 0xf2, 0x4c, 0xb7, 0x8a, 0xc8, 0x14, 0x91, 0xe9, 0x10, 0x60, 0x25, 0x54, 0x04, 0x06, - 0x5b, 0x43, 0xca, 0x88, 0x80, 0xe8, 0xba, 0x59, 0x41, 0xb7, 0x5e, 0xbb, 0xc5, 0x07, 0xc7, 0x5b, - 0xe2, 0x3c, 0x5c, 0xef, 0xf9, 0x0c, 0x26, 0x81, 0xfb, 0xfe, 0x33, 0x56, 0xad, 0x8f, 0x00, 0x12, - 0x47, 0x00, 0x1d, 0x20, 0x14, 0x88, 0x38, 0x70, 0x6d, 0x5a, 0xfc, 0x00, 0x00, 0x9f, 0x08, 0x33, - 0xf2, 0x82, 0x5e, 0xc0, 0x3a, 0x23, 0x3a, 0x2b, 0xc5, 0xa2, 0xfe, 0x57, 0xa1, 0x12, 0xbf, 0x40, - 0xbf, 0x97, 0xec, 0xa8, 0xf8, 0xb3, 0x51, 0x13, 0x8d, 0x02, 0xc7, 0xb3, 0xe5, 0x19, 0xe9, 0x95, - 0x82, 0xa5, 0x1b, 0xd8, 0xcb, 0xbe, 0x63, 0xdb, 0xd2, 0x8b, 0xd2, 0x0b, 0xba, 0x35, 0x2b, 0x09, - 0x9c, 0x9f, 0x99, 0x04, 0xae, 0xff, 0x2a, 0x54, 0x53, 0x9e, 0xca, 0x85, 0xc3, 0x4e, 0x75, 0x2c, - 0x3b, 0xde, 0xb1, 0x9b, 0x50, 0x89, 0x0a, 0x0f, 0x42, 0x3a, 0xbd, 0x2a, 0x56, 0x02, 0xa8, 0xff, - 0x8b, 0x2c, 0x9a, 0x4f, 0x38, 0xb4, 0x49, 0xef, 0x62, 0x1b, 0x8a, 0xe8, 0x6a, 0x8f, 0xa2, 0x0c, - 0xfa, 0x9c, 0x1b, 0xb4, 0x4d, 0x34, 0x3b, 0x0b, 0x96, 0xa1, 0xe6, 0x1f, 0x40, 0x4e, 0x89, 0x9e, - 0x89, 0xce, 0x7d, 0x7d, 0x3e, 0x26, 0x1d, 0xd1, 0xdb, 0x59, 0xb0, 0x90, 0x8e, 0xef, 0x42, 0xb9, - 0x6b, 0x02, 0x2a, 0x46, 0x29, 0xce, 0xe9, 0x00, 0x44, 0x61, 0x98, 0x9d, 0x05, 0x2b, 0xe6, 0xc0, - 0xbf, 0x03, 0x79, 0x34, 0x69, 0x4c, 0xa1, 0xc1, 0x9c, 0x8e, 0x0d, 0x6e, 0x97, 0x9d, 0x05, 0x8b, - 0x28, 0x37, 0x4a, 0x50, 0x20, 0x1d, 0x5c, 0xaf, 0x41, 0x51, 0x8f, 0x75, 0x72, 0xe6, 0xea, 0x37, - 0x20, 0xd7, 0x11, 0x3d, 0x34, 0x2b, 0x1d, 0x3b, 0x34, 0xfe, 0x39, 0x3e, 0xd6, 0x5f, 0x4e, 0x82, - 0x43, 0xe9, 0xb8, 0x63, 0x66, 0x2c, 0xee, 0x58, 0x2f, 0x42, 0x1e, 0xbf, 0x58, 0xbf, 0x79, 0x99, - 0x89, 0x5a, 0xff, 0x27, 0x39, 0xb4, 0x66, 0x95, 0x3c, 0x9b, 0x19, 0x53, 0xfd, 0x18, 0x2a, 0xc3, - 0xc0, 0xef, 0xca, 0x30, 0xf4, 0x03, 0x63, 0xfe, 0xbc, 0xf6, 0xfc, 0x7c, 0xe7, 0xda, 0x61, 0x44, - 0x63, 0x25, 0xe4, 0x8d, 0x7f, 0x93, 0x85, 0x4a, 0xfc, 0x42, 0x1b, 0xd1, 0x4a, 0x9e, 0xe9, 0xf8, - 0xd9, 0x9e, 0x0c, 0x06, 0xc2, 0xb1, 0xb5, 0xf6, 0xd8, 0xec, 0x8b, 0xc8, 0xc2, 0xfb, 0x9e, 0x3f, - 0x52, 0xa3, 0x23, 0xa9, 0xe3, 0x26, 0x8f, 0x9d, 0x81, 0xf4, 0x59, 0x9e, 0x32, 0x16, 0x28, 0xd8, - 0x5d, 0xd7, 0x1f, 0xd9, 0xac, 0x80, 0xed, 0x07, 0x74, 0xbc, 0xed, 0x89, 0x61, 0xa8, 0x75, 0xe6, - 0x9e, 0x13, 0xf8, 0xac, 0x84, 0x44, 0xdb, 0x4e, 0x6f, 0x20, 0x58, 0x19, 0x99, 0x75, 0x9e, 0x39, - 0x0a, 0x95, 0x70, 0x85, 0xaf, 0xc2, 0xd2, 0xc1, 0x50, 0x7a, 0x6d, 0x15, 0x48, 0xa9, 0xf6, 0xc4, - 0x50, 0x07, 0xd2, 0x2c, 0x69, 0xdb, 0x8e, 0xd2, 0xfa, 0x73, 0x5b, 0x74, 0xe5, 0x91, 0xef, 0x9f, - 0xb0, 0x45, 0x54, 0x34, 0x2d, 0x2f, 0x54, 0xa2, 0x17, 0x88, 0x81, 0xd6, 0xa1, 0x1d, 0xe9, 0x4a, - 0x6a, 0x2d, 0xd3, 0xb7, 0x1d, 0xd5, 0x1f, 0x1d, 0x3d, 0x40, 0x67, 0x63, 0x45, 0x27, 0x37, 0x6c, - 0x39, 0x94, 0xa8, 0x43, 0x17, 0xa1, 0xbc, 0xe1, 0xb8, 0xce, 0x91, 0xe3, 0x3a, 0x6c, 0x15, 0x51, - 0x9b, 0x67, 0x5d, 0xe1, 0x3a, 0x76, 0x20, 0x9e, 0x31, 0x8e, 0x9d, 0x7b, 0x18, 0xf8, 0x27, 0x0e, - 0xbb, 0x82, 0x88, 0xe4, 0x7b, 0x9c, 0x3a, 0x9f, 0xb3, 0xab, 0x94, 0xa0, 0x39, 0x91, 0xaa, 0xdb, - 0x3f, 0x16, 0x47, 0xec, 0x5a, 0x12, 0x47, 0xba, 0x5e, 0x5f, 0x85, 0x95, 0x89, 0x54, 0x70, 0xbd, - 0x64, 0x5c, 0x9e, 0xfa, 0x12, 0x54, 0x53, 0x39, 0xba, 0xfa, 0x2b, 0x50, 0x8e, 0x32, 0x78, 0xe8, - 0x1a, 0x3a, 0xa1, 0x8e, 0x3d, 0x1a, 0x21, 0x89, 0xdb, 0xf5, 0xdf, 0xcf, 0x40, 0x51, 0xa7, 0x4f, - 0xf9, 0x46, 0x5c, 0xee, 0x90, 0x99, 0x23, 0x65, 0xa6, 0x89, 0x4c, 0xc2, 0x31, 0xae, 0x79, 0xb8, - 0x0a, 0x05, 0x97, 0x7c, 0x40, 0xa3, 0xbe, 0xa8, 0x91, 0xd2, 0x36, 0xb9, 0xb4, 0xb6, 0x69, 0xac, - 0xc7, 0x49, 0xce, 0x28, 0xde, 0x45, 0x56, 0x61, 0x27, 0x90, 0x52, 0xc7, 0xb2, 0xc8, 0x85, 0xcb, - 0xd2, 0x59, 0xe1, 0x0f, 0x86, 0xa2, 0xab, 0x08, 0x40, 0xa7, 0x28, 0x2a, 0x53, 0x96, 0x47, 0x29, - 0xdf, 0xec, 0x0b, 0xd5, 0x38, 0x86, 0xf2, 0xa1, 0x1f, 0x4e, 0x9e, 0xc9, 0x25, 0xc8, 0x75, 0xfc, - 0xa1, 0xb6, 0x30, 0x37, 0x7c, 0x45, 0x16, 0xa6, 0x3e, 0x82, 0x8f, 0x95, 0x16, 0x2a, 0xcb, 0xe9, - 0xf5, 0x95, 0x76, 0xff, 0x5a, 0x9e, 0x27, 0x03, 0x56, 0xc0, 0x35, 0xb4, 0xe4, 0x10, 0xed, 0x56, - 0x56, 0xc4, 0x55, 0x23, 0xf8, 0xb6, 0x13, 0x84, 0x8a, 0x95, 0x1a, 0x2d, 0x3c, 0x4d, 0x9d, 0x1e, - 0x1d, 0x82, 0xf4, 0x40, 0xac, 0x16, 0xb0, 0x8b, 0xd4, 0xdc, 0x94, 0x1e, 0xca, 0x18, 0xe5, 0xd5, - 0x74, 0x45, 0x0c, 0x7d, 0x20, 0x8b, 0x27, 0x18, 0xb5, 0x3f, 0x1e, 0x85, 0xca, 0x39, 0x3e, 0x67, - 0xb9, 0xc6, 0x13, 0x58, 0x1a, 0xab, 0x9d, 0xe1, 0x57, 0x81, 0x8d, 0x01, 0xb0, 0xeb, 0x0b, 0xfc, - 0x06, 0x5c, 0x19, 0x83, 0xee, 0x39, 0xb6, 0x4d, 0x01, 0xc6, 0xc9, 0x17, 0xd1, 0x00, 0x37, 0x2a, - 0x50, 0xea, 0xea, 0x55, 0x6a, 0x1c, 0xc2, 0x12, 0x2d, 0xdb, 0x9e, 0x54, 0xe2, 0xc0, 0x73, 0xcf, - 0xff, 0xcc, 0x05, 0x4e, 0x8d, 0x6f, 0x40, 0x81, 0x12, 0x02, 0xa8, 0x2f, 0x8e, 0x03, 0x7f, 0x40, - 0xbc, 0x0a, 0x16, 0x3d, 0x23, 0x77, 0xe5, 0x9b, 0xb5, 0xcf, 0x2a, 0xbf, 0xf1, 0x45, 0x19, 0x4a, - 0xeb, 0xdd, 0xae, 0x3f, 0xf2, 0xd4, 0xd4, 0x97, 0xdf, 0x86, 0x62, 0xd7, 0xf7, 0x8e, 0x9d, 0x9e, - 0xd1, 0xc7, 0x93, 0x96, 0xa1, 0xa1, 0x43, 0x81, 0x3b, 0x76, 0x7a, 0x96, 0x41, 0x46, 0x32, 0x73, - 0x9e, 0x14, 0x2e, 0x25, 0xd3, 0x4a, 0x35, 0x3e, 0x3e, 0xee, 0x41, 0xde, 0xf1, 0x8e, 0x7d, 0x53, - 0x8d, 0xf8, 0xd2, 0x05, 0x44, 0x54, 0x92, 0x47, 0x88, 0xf5, 0xff, 0x96, 0x81, 0xa2, 0xfe, 0x34, - 0x7f, 0x05, 0x96, 0xa5, 0x87, 0x9b, 0x29, 0x52, 0xe5, 0x66, 0x17, 0x4d, 0x40, 0xd1, 0x68, 0x35, - 0x10, 0x79, 0x34, 0xea, 0x19, 0x87, 0x3f, 0x0d, 0xe2, 0xef, 0xc1, 0x0d, 0xdd, 0x3c, 0x0c, 0x64, - 0x20, 0x5d, 0x29, 0x42, 0xb9, 0xd9, 0x17, 0x9e, 0x27, 0x5d, 0x73, 0xb0, 0x5f, 0xf4, 0x9a, 0x37, - 0x60, 0x51, 0xbf, 0x6a, 0x0f, 0x45, 0x57, 0x86, 0x26, 0xc9, 0x34, 0x06, 0xe3, 0xdf, 0x84, 0x02, - 0x15, 0x6b, 0xd6, 0xec, 0xcb, 0x97, 0x52, 0x63, 0xd5, 0xfd, 0xf8, 0xe4, 0x59, 0x07, 0xd0, 0xd3, - 0x84, 0x4e, 0x97, 0xd9, 0xfd, 0xbf, 0x74, 0xe9, 0xbc, 0x92, 0x87, 0x97, 0x22, 0xc2, 0xfe, 0xd9, - 0xd2, 0x95, 0x54, 0x55, 0x87, 0x27, 0x63, 0x96, 0xc2, 0xf9, 0x63, 0xb0, 0xfa, 0xaf, 0xe7, 0x21, - 0x8f, 0x33, 0x8c, 0xc8, 0x7d, 0x7f, 0x20, 0xe3, 0xa0, 0xa6, 0x36, 0x35, 0xc6, 0x60, 0x68, 0xda, - 0x08, 0x9d, 0x57, 0x8e, 0xd1, 0xb4, 0xf2, 0x98, 0x04, 0x23, 0xe6, 0x30, 0xf0, 0x8f, 0x1d, 0x37, - 0xc1, 0x34, 0x46, 0xd0, 0x04, 0x98, 0xbf, 0x03, 0xd7, 0x07, 0x22, 0x38, 0x91, 0x8a, 0x76, 0xf7, - 0x13, 0x3f, 0x38, 0x09, 0x71, 0xe6, 0x5a, 0xb6, 0x89, 0x86, 0x5d, 0xf0, 0x16, 0x15, 0xa8, 0x2d, - 0x4f, 0x1d, 0xc2, 0x2c, 0xeb, 0x22, 0xcc, 0xa8, 0x8d, 0xc2, 0x21, 0xf4, 0xd4, 0xb4, 0x0d, 0x2f, - 0x93, 0xa8, 0x18, 0x87, 0xa2, 0xfd, 0xa4, 0x8b, 0x53, 0xc2, 0x96, 0x4d, 0x01, 0xba, 0x8a, 0x95, - 0x00, 0x50, 0x74, 0xe8, 0x63, 0x8f, 0xb5, 0x9a, 0x5c, 0xd2, 0x4e, 0x65, 0x0a, 0x84, 0x18, 0x4a, - 0x76, 0xfb, 0xd1, 0x47, 0x74, 0xf4, 0x2c, 0x0d, 0xe2, 0xb7, 0x00, 0x7a, 0x42, 0xc9, 0x67, 0xe2, - 0xfc, 0x51, 0xe0, 0xd6, 0xa4, 0x8e, 0xb8, 0x27, 0x10, 0x74, 0x4b, 0x5d, 0xbf, 0x2b, 0xdc, 0xb6, - 0xf2, 0x03, 0xd1, 0x93, 0x87, 0x42, 0xf5, 0x6b, 0x3d, 0xed, 0x96, 0x4e, 0xc2, 0x71, 0xc4, 0xca, - 0x19, 0xc8, 0x4f, 0x7d, 0x4f, 0xd6, 0xfa, 0x7a, 0xc4, 0x51, 0x1b, 0x7b, 0x22, 0x3c, 0xe1, 0x9e, - 0x2b, 0xa7, 0x8b, 0x63, 0x71, 0x74, 0x4f, 0x52, 0x20, 0x1c, 0xab, 0x27, 0xd5, 0x33, 0x3f, 0x38, - 0x69, 0xd9, 0xb5, 0xcf, 0xf4, 0x58, 0x63, 0x40, 0xe3, 0x00, 0x20, 0x11, 0x22, 0xd4, 0xcc, 0xeb, - 0x94, 0x15, 0x60, 0x0b, 0x68, 0xaf, 0x1f, 0x4a, 0xcf, 0x76, 0xbc, 0xde, 0x96, 0x91, 0x1b, 0x96, - 0x41, 0x20, 0x79, 0xfc, 0xd2, 0x8e, 0x81, 0x64, 0x1b, 0x50, 0x4b, 0xda, 0x2c, 0xd7, 0xf8, 0x3f, - 0x19, 0xa8, 0xa6, 0x92, 0xe0, 0x7f, 0x8e, 0x89, 0x7b, 0x3c, 0x39, 0xf1, 0xec, 0xc5, 0x09, 0xd5, - 0x32, 0x15, 0xb7, 0x71, 0xba, 0x4d, 0x8e, 0x1e, 0xdf, 0x6a, 0xff, 0x3e, 0x05, 0xf9, 0x52, 0x49, - 0xfb, 0xc6, 0x7d, 0x13, 0x24, 0xa9, 0x42, 0xe9, 0x91, 0x77, 0xe2, 0xf9, 0xcf, 0x3c, 0x7d, 0x24, - 0x52, 0x25, 0xc6, 0x58, 0x4e, 0x29, 0x2a, 0x96, 0xc8, 0x35, 0xfe, 0x69, 0x7e, 0xa2, 0x68, 0xa9, - 0x09, 0x45, 0x6d, 0x99, 0x93, 0xd1, 0x38, 0x5d, 0x65, 0x92, 0x46, 0x36, 0xf9, 0x8b, 0x14, 0xc8, - 0x32, 0xc4, 0x68, 0x32, 0xc7, 0x25, 0x7d, 0xd9, 0x99, 0x79, 0x96, 0x31, 0x46, 0x91, 0x1a, 0x1c, - 0xab, 0x6a, 0x8d, 0x39, 0xd4, 0xff, 0x56, 0x06, 0xae, 0xce, 0x42, 0x49, 0xd7, 0xfe, 0x66, 0xc6, - 0x6b, 0x7f, 0xdb, 0x13, 0xb5, 0xb4, 0x59, 0x1a, 0xcd, 0xbd, 0x17, 0xec, 0xc4, 0x78, 0x65, 0x6d, - 0xe3, 0xc7, 0x19, 0x58, 0x9d, 0x1a, 0x73, 0xca, 0x64, 0x00, 0x28, 0x6a, 0xc9, 0xd2, 0xa5, 0x2e, - 0x71, 0xf1, 0x81, 0x0e, 0x1e, 0xd3, 0x61, 0x1a, 0xea, 0x6c, 0xae, 0xa9, 0x1e, 0xd6, 0x16, 0x29, - 0xae, 0x1a, 0xea, 0xea, 0x9e, 0x64, 0x05, 0x3c, 0xeb, 0xb5, 0x5d, 0x63, 0x20, 0x45, 0x6d, 0x35, - 0xea, 0x08, 0x37, 0x2b, 0x51, 0x09, 0xcd, 0x68, 0xe8, 0x3a, 0x5d, 0x6c, 0x96, 0x79, 0x1d, 0xae, - 0xeb, 0x12, 0x72, 0xe3, 0xa1, 0x1d, 0x77, 0xfa, 0x0e, 0x6d, 0x0e, 0x56, 0x69, 0x58, 0x70, 0x65, - 0xc6, 0x98, 0xa8, 0x97, 0x8f, 0x4d, 0x8f, 0x97, 0x01, 0xb6, 0x1e, 0x47, 0xfd, 0x64, 0x19, 0xce, - 0x61, 0x79, 0xeb, 0x71, 0x9a, 0xa1, 0xd9, 0x2f, 0x8f, 0x51, 0x93, 0x84, 0x2c, 0xd7, 0xf8, 0x8d, - 0x4c, 0x94, 0xd6, 0xae, 0xff, 0x15, 0x58, 0xd2, 0x7d, 0x3c, 0x14, 0xe7, 0xae, 0x2f, 0x6c, 0xde, - 0x84, 0xe5, 0x30, 0xbe, 0xd7, 0x90, 0x3a, 0x0e, 0x26, 0x8f, 0xd9, 0xf6, 0x18, 0x92, 0x35, 0x41, - 0x14, 0x39, 0x1a, 0xd9, 0x24, 0x16, 0xce, 0xc9, 0x65, 0x12, 0xb4, 0xcb, 0x16, 0xc9, 0x09, 0x12, - 0x8d, 0x6f, 0xc2, 0x2a, 0x29, 0x2f, 0xdd, 0x19, 0x6d, 0x91, 0xa2, 0x3c, 0x68, 0xbd, 0xbb, 0x15, - 0xc9, 0x83, 0x69, 0x36, 0xfe, 0x53, 0x11, 0x20, 0x89, 0xfb, 0xcf, 0xd8, 0xe6, 0xb3, 0xd2, 0xd8, - 0x53, 0x59, 0xb8, 0xdc, 0x0b, 0x67, 0xe1, 0xde, 0x8b, 0x0d, 0x63, 0x1d, 0x80, 0x9d, 0xac, 0xe5, - 0x4d, 0xfa, 0x34, 0x69, 0x0e, 0x8f, 0x55, 0x79, 0x14, 0x26, 0xab, 0x3c, 0x6e, 0x4f, 0x97, 0x84, - 0x4d, 0xe8, 0x9f, 0xc4, 0xef, 0x2f, 0x8d, 0xf9, 0xfd, 0x75, 0x28, 0x07, 0x52, 0xd8, 0xbe, 0xe7, - 0x9e, 0x47, 0xc9, 0x9e, 0xa8, 0xcd, 0xdf, 0x84, 0x82, 0xa2, 0xab, 0x19, 0x65, 0xda, 0x2e, 0xcf, - 0x59, 0x38, 0x8d, 0x8b, 0xca, 0xcc, 0x09, 0x4d, 0x1d, 0x97, 0x3e, 0xc1, 0xca, 0x56, 0x0a, 0xc2, - 0xd7, 0x80, 0x3b, 0xe8, 0x04, 0xb9, 0xae, 0xb4, 0x37, 0xce, 0xb7, 0x74, 0x0e, 0x86, 0x4e, 0xcd, - 0xb2, 0x35, 0xe3, 0x4d, 0xb4, 0xfe, 0x8b, 0xc9, 0xfa, 0x53, 0x97, 0x4f, 0x9d, 0x10, 0x47, 0xba, - 0x44, 0xc6, 0x41, 0xdc, 0xc6, 0x73, 0x39, 0xda, 0xa3, 0x7a, 0x2e, 0x49, 0x7a, 0x93, 0x44, 0xe6, - 0x05, 0x6f, 0x1b, 0x7f, 0x90, 0x8d, 0x1d, 0x88, 0x0a, 0x14, 0x8e, 0x44, 0xe8, 0x74, 0xb5, 0x3f, - 0x69, 0x0e, 0x7e, 0xed, 0x44, 0x28, 0xdf, 0xf6, 0x59, 0x16, 0x7d, 0x81, 0x50, 0xa2, 0xd5, 0xbf, - 0x0c, 0x90, 0x5c, 0x57, 0x61, 0x79, 0xdc, 0x9b, 0xd1, 0x7a, 0xeb, 0x72, 0x0c, 0x22, 0xa5, 0x10, - 0x94, 0x1d, 0x17, 0xba, 0x91, 0x33, 0x49, 0xba, 0x9f, 0x95, 0x11, 0xc7, 0xf3, 0x95, 0xd4, 0x01, - 0x38, 0x92, 0x4e, 0x06, 0xc8, 0x26, 0xaa, 0xbf, 0x66, 0x55, 0x34, 0xce, 0x23, 0xa6, 0x3a, 0x6a, - 0x16, 0x92, 0xeb, 0xb2, 0x88, 0xbb, 0x73, 0xfc, 0x05, 0x5b, 0xc2, 0x1e, 0x25, 0xb7, 0x60, 0xd8, - 0x32, 0x72, 0x15, 0x54, 0x24, 0xb0, 0x82, 0x8f, 0xa7, 0x54, 0x3a, 0xc0, 0xf0, 0xab, 0x36, 0x2a, - 0x8c, 0x55, 0xec, 0x59, 0x6c, 0x1a, 0x30, 0x8e, 0xbe, 0xc7, 0x50, 0xa0, 0x23, 0xe0, 0x0c, 0x85, - 0xa7, 0xd8, 0x15, 0x1c, 0xea, 0xd0, 0x3e, 0x66, 0x57, 0x91, 0xa4, 0xdb, 0x17, 0x8a, 0x5d, 0x43, - 0x1c, 0x7c, 0xda, 0x92, 0x01, 0xae, 0x27, 0xbb, 0x8e, 0x38, 0x4a, 0xf4, 0xd8, 0x8d, 0xc6, 0xef, - 0x24, 0xa5, 0xa6, 0xaf, 0xc7, 0x26, 0xfa, 0x3c, 0x42, 0x8e, 0x46, 0xfc, 0xac, 0x1d, 0xd7, 0x84, - 0xd5, 0x40, 0x7e, 0x7f, 0xe4, 0x8c, 0x15, 0x60, 0xe7, 0x2e, 0xcf, 0xf0, 0x4f, 0x53, 0x34, 0x4e, - 0x61, 0x35, 0x6a, 0x3c, 0x71, 0x54, 0x9f, 0xa2, 0x25, 0xfc, 0xcd, 0x54, 0x85, 0x78, 0x66, 0xe6, - 0xcd, 0x9a, 0x98, 0x65, 0x52, 0x11, 0x1e, 0x47, 0xc3, 0xb3, 0x73, 0x44, 0xc3, 0x1b, 0xff, 0xbb, - 0x98, 0x0a, 0x98, 0x68, 0xa7, 0xc5, 0x8e, 0x9d, 0x96, 0xe9, 0x1c, 0x5f, 0x12, 0xe0, 0xce, 0xbe, - 0x48, 0x80, 0x7b, 0x56, 0xbe, 0xfc, 0x7d, 0xb4, 0xa1, 0x69, 0xff, 0x3c, 0x9e, 0x23, 0x78, 0x3f, - 0x86, 0xcb, 0x37, 0x28, 0x63, 0x27, 0xda, 0xba, 0x98, 0xa3, 0x30, 0xf3, 0xbe, 0x46, 0x3a, 0x35, - 0x67, 0x30, 0xad, 0x14, 0x55, 0x4a, 0xdb, 0x14, 0x67, 0x69, 0x1b, 0xf4, 0x1f, 0x8d, 0x1e, 0x8a, - 0xdb, 0x3a, 0xd7, 0xa1, 0x9f, 0x23, 0xf6, 0x94, 0xa9, 0x2d, 0x5b, 0x53, 0x70, 0xb4, 0xc2, 0x06, - 0x23, 0x57, 0x39, 0x26, 0x9c, 0xaf, 0x1b, 0x93, 0x17, 0xca, 0x2a, 0xd3, 0x17, 0xca, 0x3e, 0x04, - 0x08, 0x25, 0xee, 0x8e, 0x2d, 0xa7, 0xab, 0x4c, 0xc9, 0xc7, 0xad, 0x8b, 0xc6, 0x66, 0x92, 0x10, - 0x29, 0x0a, 0xec, 0xff, 0x40, 0x9c, 0x6d, 0xa2, 0x35, 0x6e, 0x72, 0xd3, 0x71, 0x7b, 0x52, 0x07, - 0x2f, 0x4f, 0xeb, 0xe0, 0x37, 0xa1, 0x10, 0x76, 0xfd, 0xa1, 0xa4, 0x3b, 0x11, 0x17, 0xaf, 0xef, - 0x5a, 0x1b, 0x91, 0x2c, 0x8d, 0x4b, 0x61, 0x39, 0xd4, 0x52, 0x7e, 0x40, 0xb7, 0x21, 0x2a, 0x56, - 0xd4, 0x1c, 0xd3, 0x83, 0xd7, 0xc7, 0xf5, 0x60, 0xdd, 0x86, 0xa2, 0x09, 0xb1, 0x4f, 0x3a, 0xcb, - 0x51, 0x70, 0x2e, 0x9b, 0x0a, 0xce, 0xc5, 0x85, 0x85, 0xb9, 0x74, 0x61, 0xe1, 0xc4, 0x85, 0xa9, - 0xc2, 0xd4, 0x85, 0xa9, 0xc6, 0xa7, 0x50, 0xa0, 0xbe, 0xa2, 0x11, 0xa1, 0xa7, 0x59, 0xdb, 0x98, - 0x38, 0x28, 0x96, 0xe1, 0x57, 0x81, 0x85, 0x92, 0x8c, 0x10, 0xd9, 0x16, 0x03, 0x49, 0x4a, 0x32, - 0xcb, 0x6b, 0x70, 0x55, 0xe3, 0x86, 0xe3, 0x6f, 0xc8, 0x12, 0x72, 0x9d, 0xa3, 0x40, 0x04, 0xe7, - 0x2c, 0xdf, 0xf8, 0x90, 0xb2, 0xbb, 0x91, 0x40, 0x55, 0xe3, 0x0b, 0x6a, 0x5a, 0x2d, 0xdb, 0x46, - 0xfb, 0x50, 0x52, 0xde, 0xf8, 0x47, 0xba, 0x54, 0x89, 0x1c, 0x10, 0x8a, 0x89, 0x2c, 0xa6, 0x4f, - 0xe2, 0x3f, 0xb7, 0xfd, 0xd6, 0xd8, 0x48, 0x99, 0x72, 0xe3, 0xb5, 0x47, 0x99, 0x79, 0x6b, 0x8f, - 0x1a, 0x0f, 0x61, 0xc5, 0x1a, 0xd7, 0xe9, 0xfc, 0x3d, 0x28, 0xf9, 0xc3, 0x34, 0x9f, 0xe7, 0xc9, - 0x65, 0x84, 0xde, 0xf8, 0x49, 0x06, 0x16, 0x5b, 0x9e, 0x92, 0x81, 0x27, 0xdc, 0x6d, 0x57, 0xf4, - 0xf8, 0xbb, 0x91, 0x96, 0x9a, 0xed, 0x7f, 0xa7, 0x71, 0xc7, 0x15, 0x96, 0x6b, 0x42, 0xc9, 0xfc, - 0x1a, 0xac, 0x4a, 0xdb, 0x51, 0x7e, 0xa0, 0x0d, 0xd8, 0xa8, 0x44, 0xec, 0x2a, 0x30, 0x0d, 0x6e, - 0xd3, 0x96, 0xe8, 0xe8, 0x65, 0xae, 0xc1, 0xd5, 0x31, 0x68, 0x64, 0x9d, 0x66, 0xf9, 0x4d, 0xa8, - 0x25, 0xa7, 0xd1, 0x96, 0xef, 0xa9, 0x96, 0x67, 0xcb, 0x33, 0x32, 0x85, 0x58, 0xae, 0xf1, 0x5b, - 0xa5, 0xc8, 0x08, 0x7b, 0x6c, 0x0a, 0xc8, 0x02, 0xdf, 0x4f, 0x6e, 0x27, 0x9a, 0x56, 0xea, 0x16, - 0x6c, 0x76, 0x8e, 0x5b, 0xb0, 0x1f, 0x26, 0x37, 0x19, 0xf5, 0x41, 0xf1, 0xf2, 0xcc, 0xd3, 0x87, - 0xea, 0x5e, 0x8c, 0xd9, 0xdd, 0x96, 0xa9, 0x6b, 0x8d, 0x6f, 0x18, 0x5f, 0x2b, 0x3f, 0x8f, 0xad, - 0xaa, 0xf3, 0xf1, 0x6f, 0x4f, 0x96, 0xcf, 0xcf, 0x57, 0x7f, 0x36, 0x65, 0x4e, 0xc2, 0x0b, 0x9b, - 0x93, 0x1f, 0x4d, 0xb8, 0x35, 0xe5, 0x99, 0x21, 0xa9, 0x4b, 0x2e, 0x07, 0x7e, 0x04, 0xa5, 0xbe, - 0x13, 0x2a, 0x3f, 0xd0, 0x17, 0x56, 0xa7, 0x2f, 0xd8, 0xa4, 0x66, 0x6b, 0x47, 0x23, 0x52, 0xb1, - 0x50, 0x44, 0xc5, 0xbf, 0x0b, 0xab, 0x34, 0xf1, 0x87, 0x89, 0xd5, 0x10, 0xd6, 0xaa, 0x33, 0x8b, - 0xb4, 0x52, 0xac, 0x36, 0x26, 0x48, 0xac, 0x69, 0x26, 0xf5, 0x1e, 0x40, 0xb2, 0x3e, 0x53, 0x5a, - 0xec, 0x4b, 0x5c, 0x58, 0xbd, 0x0e, 0xc5, 0x70, 0x74, 0x94, 0xe4, 0x9c, 0x4c, 0xab, 0x7e, 0x06, - 0xf5, 0x29, 0xeb, 0xe0, 0x50, 0x06, 0xba, 0xbb, 0x97, 0xde, 0x9a, 0xfd, 0x30, 0xbd, 0xf0, 0x5a, - 0x38, 0x6f, 0x5f, 0xb0, 0x7a, 0x31, 0xe7, 0x94, 0x04, 0xd4, 0xdf, 0x86, 0x6a, 0x6a, 0x52, 0x51, - 0x33, 0x8f, 0x3c, 0xdb, 0x8f, 0xc2, 0xa0, 0xf8, 0xac, 0x6f, 0x0d, 0xd9, 0x51, 0x20, 0x94, 0x9e, - 0xeb, 0x16, 0xb0, 0xc9, 0x09, 0xbc, 0xc4, 0xf5, 0x7d, 0x19, 0x96, 0x52, 0x26, 0x5d, 0x1c, 0x22, - 0x1b, 0x07, 0x36, 0x4e, 0xe1, 0xa5, 0x14, 0xbb, 0x43, 0x19, 0x0c, 0x9c, 0x10, 0x0f, 0x12, 0xed, - 0xd2, 0x51, 0xf4, 0xc2, 0x96, 0x9e, 0x72, 0x54, 0xa4, 0x41, 0xe3, 0x36, 0xff, 0x65, 0x28, 0x0c, - 0x65, 0x30, 0x08, 0x8d, 0x16, 0x9d, 0x94, 0xa0, 0x99, 0x6c, 0x43, 0x4b, 0xd3, 0x34, 0xfe, 0x71, - 0x06, 0xca, 0x7b, 0x52, 0x09, 0xb4, 0x1d, 0xf8, 0xde, 0xc4, 0x57, 0xa6, 0xf3, 0xa4, 0x11, 0xea, - 0x9a, 0x71, 0x32, 0xd7, 0x5a, 0x06, 0xdf, 0xb4, 0x77, 0x16, 0x92, 0x8e, 0xd5, 0x37, 0xa0, 0x64, - 0xc0, 0xf5, 0x77, 0x61, 0x65, 0x02, 0x93, 0xe6, 0x45, 0xdb, 0xf6, 0xed, 0xf3, 0x41, 0x54, 0xae, - 0xb3, 0x68, 0x8d, 0x03, 0x37, 0x2a, 0x50, 0x1a, 0x6a, 0x82, 0xc6, 0x1f, 0x5c, 0xa3, 0x12, 0x12, - 0xe7, 0x18, 0x9d, 0xed, 0x59, 0x27, 0xeb, 0x2d, 0x00, 0x3a, 0x9a, 0x75, 0xa1, 0x81, 0x0e, 0x5b, - 0xa6, 0x20, 0xfc, 0xfd, 0x38, 0xde, 0x9c, 0x9f, 0x69, 0x54, 0xa5, 0x99, 0x4f, 0x06, 0x9d, 0x6b, - 0x50, 0x72, 0xc2, 0x5d, 0x3c, 0xda, 0x4c, 0xf9, 0x4d, 0xd4, 0xe4, 0xdf, 0x86, 0xa2, 0x33, 0x18, - 0xfa, 0x81, 0x32, 0x01, 0xe9, 0x4b, 0xb9, 0xb6, 0x08, 0x73, 0x67, 0xc1, 0x32, 0x34, 0x48, 0x2d, - 0xcf, 0x88, 0xba, 0xfc, 0x7c, 0xea, 0xe6, 0x59, 0x44, 0xad, 0x69, 0xf8, 0x27, 0xb0, 0xd4, 0xd3, - 0x05, 0x71, 0x9a, 0xb1, 0x51, 0x22, 0x5f, 0xbf, 0x8c, 0xc9, 0x83, 0x34, 0xc1, 0xce, 0x82, 0x35, - 0xce, 0x01, 0x59, 0xa2, 0x01, 0x2f, 0x43, 0xd5, 0xf1, 0x3f, 0xf6, 0x1d, 0x8f, 0x9c, 0xd2, 0xe7, - 0xb0, 0xb4, 0xd2, 0x04, 0xc8, 0x72, 0x8c, 0x03, 0x7f, 0x07, 0x2d, 0x9e, 0x50, 0x99, 0x3b, 0xc3, - 0xb7, 0x2f, 0xe3, 0xd4, 0x91, 0xa1, 0xb9, 0xed, 0x1b, 0x2a, 0x7e, 0x06, 0xf5, 0xd4, 0x26, 0x31, - 0x1f, 0x59, 0x1f, 0x0e, 0x03, 0x1f, 0x3d, 0xdb, 0x25, 0xe2, 0xf6, 0xce, 0x65, 0xdc, 0x0e, 0x2f, - 0xa4, 0xde, 0x59, 0xb0, 0x2e, 0xe1, 0xcd, 0x3b, 0xe8, 0xd9, 0x99, 0x21, 0xec, 0x4a, 0x71, 0x1a, - 0xdd, 0x38, 0xbe, 0x3b, 0xd7, 0x2c, 0x10, 0xc5, 0xce, 0x82, 0x35, 0xc1, 0x83, 0xff, 0x2a, 0xac, - 0x8e, 0x7d, 0x93, 0x2e, 0x19, 0xea, 0xfb, 0xc8, 0xdf, 0x9c, 0x7b, 0x18, 0x48, 0xb4, 0xb3, 0x60, - 0x4d, 0x73, 0xe2, 0x23, 0xf8, 0xca, 0xf4, 0x90, 0xb6, 0x64, 0xd7, 0x75, 0x3c, 0x69, 0xae, 0x2e, - 0xbf, 0xfd, 0x62, 0xb3, 0x65, 0x88, 0x77, 0x16, 0xac, 0x8b, 0x39, 0xf3, 0xbf, 0x06, 0x37, 0x87, - 0x33, 0x55, 0x8c, 0x56, 0x5d, 0xe6, 0xe6, 0xf3, 0x7b, 0x73, 0x7e, 0x79, 0x8a, 0x7e, 0x67, 0xc1, - 0xba, 0x94, 0x3f, 0xda, 0xce, 0xe4, 0x41, 0x9b, 0xba, 0x5d, 0xdd, 0xe0, 0x37, 0xa1, 0x22, 0xba, - 0xee, 0x8e, 0x14, 0x76, 0x1c, 0x61, 0x4f, 0x00, 0xf5, 0x3f, 0xca, 0x40, 0xd1, 0xc8, 0xfb, 0xcd, - 0x38, 0x2f, 0x1e, 0xab, 0xee, 0x04, 0xc0, 0x3f, 0x80, 0x8a, 0x0c, 0x02, 0x3f, 0xd8, 0xf4, 0xed, - 0xa8, 0x68, 0x70, 0x32, 0xfc, 0xab, 0xf9, 0xac, 0x35, 0x23, 0x34, 0x2b, 0xa1, 0xe0, 0xef, 0x03, - 0xe8, 0x7d, 0xde, 0x49, 0xae, 0x5f, 0xd4, 0x67, 0xd3, 0xeb, 0x34, 0x4c, 0x82, 0x9d, 0x04, 0xcf, - 0xa2, 0x1c, 0x48, 0xd4, 0x8c, 0x1d, 0xce, 0x42, 0xca, 0xe1, 0xbc, 0x69, 0xe2, 0x08, 0xfb, 0xf8, - 0xc2, 0x5c, 0x42, 0x8a, 0x01, 0xf5, 0x7f, 0x9b, 0x81, 0xa2, 0x56, 0x1e, 0xbc, 0x39, 0x3d, 0xa2, - 0x57, 0x9f, 0xaf, 0x73, 0xd6, 0x26, 0x47, 0xf6, 0x6d, 0x00, 0xad, 0x83, 0x52, 0x23, 0xbb, 0x39, - 0xc1, 0xc7, 0x90, 0x46, 0x95, 0xa3, 0x09, 0x7e, 0xe3, 0xbe, 0xbe, 0x28, 0x43, 0xb1, 0xda, 0x47, - 0xbb, 0xbb, 0x6c, 0x81, 0xaf, 0xc2, 0xd2, 0xa3, 0xfd, 0x87, 0xfb, 0x07, 0x4f, 0xf6, 0x9f, 0x36, - 0x2d, 0xeb, 0xc0, 0xd2, 0x21, 0xdb, 0x8d, 0xf5, 0xad, 0xa7, 0xad, 0xfd, 0xc3, 0x47, 0x1d, 0x96, - 0xad, 0xff, 0x34, 0x03, 0x4b, 0x63, 0xba, 0xeb, 0x2f, 0x76, 0xe9, 0x52, 0xd3, 0x9f, 0x9b, 0x3d, - 0xfd, 0xf9, 0x8b, 0xa6, 0xbf, 0x30, 0x39, 0xfd, 0xbf, 0x97, 0x81, 0xa5, 0x31, 0x1d, 0x99, 0xe6, - 0x9e, 0x19, 0xe7, 0x9e, 0x3e, 0xe9, 0xb3, 0x13, 0x27, 0x7d, 0x03, 0x16, 0xa3, 0xe7, 0xfd, 0x24, - 0xe2, 0x30, 0x06, 0x4b, 0xe3, 0x50, 0xa5, 0x7a, 0x7e, 0x1c, 0x87, 0xaa, 0xd5, 0x2f, 0xef, 0x2d, - 0xdd, 0xcc, 0x0b, 0xe9, 0xe2, 0x72, 0xfd, 0x62, 0x0d, 0x7a, 0xc9, 0x10, 0x1e, 0x40, 0x75, 0x98, - 0x6c, 0xd3, 0x17, 0x33, 0x4b, 0xd2, 0x94, 0xcf, 0xe9, 0xe7, 0x8f, 0x33, 0xb0, 0x3c, 0xae, 0x73, - 0xff, 0xbf, 0x9e, 0xd6, 0x7f, 0x96, 0x81, 0xd5, 0x29, 0x4d, 0x7e, 0xa9, 0x61, 0x37, 0xd9, 0xaf, - 0xec, 0x1c, 0xfd, 0xca, 0xcd, 0xe8, 0xd7, 0xc5, 0x9a, 0xe4, 0xf2, 0x1e, 0xb7, 0xe1, 0x2b, 0x17, - 0x9e, 0x09, 0x97, 0x4c, 0xf5, 0x18, 0xd3, 0xdc, 0x24, 0xd3, 0xdf, 0xcd, 0xc0, 0xcd, 0xcb, 0xf4, - 0xfd, 0xff, 0x73, 0xb9, 0x9a, 0xec, 0x61, 0xe3, 0xdd, 0x38, 0x99, 0x5e, 0x85, 0x92, 0xf9, 0x41, - 0x20, 0x53, 0xae, 0xdc, 0xf7, 0x9f, 0x79, 0x3a, 0x12, 0x6d, 0x49, 0x61, 0xae, 0x4c, 0x5b, 0x72, - 0xe8, 0x3a, 0x94, 0xbc, 0xbc, 0x01, 0xb0, 0x4e, 0x7e, 0x5d, 0x74, 0x83, 0x61, 0x73, 0xf7, 0xa0, - 0xdd, 0x64, 0x0b, 0x69, 0x23, 0xf6, 0xd3, 0x48, 0x11, 0x37, 0x0e, 0xa1, 0x98, 0xd4, 0xb6, 0xef, - 0x89, 0xe0, 0xc4, 0xd6, 0x29, 0xc2, 0x45, 0x28, 0x1f, 0x1a, 0x17, 0x4a, 0x7f, 0xea, 0xe3, 0xf6, - 0xc1, 0xbe, 0x0e, 0x7a, 0x6f, 0x1d, 0x74, 0x74, 0x85, 0x7c, 0xfb, 0xf1, 0x03, 0x9d, 0xab, 0x7a, - 0x60, 0xad, 0x1f, 0xee, 0x3c, 0x25, 0x8c, 0x42, 0xe3, 0xa7, 0xd9, 0xe8, 0x54, 0x6b, 0x58, 0x26, - 0xf9, 0x08, 0x50, 0x44, 0x6d, 0xee, 0x1b, 0xc6, 0xf1, 0x67, 0xa8, 0xb0, 0xb5, 0x79, 0xa6, 0xe3, - 0x10, 0x2c, 0xcb, 0x8b, 0x90, 0x3d, 0x3c, 0xd2, 0xd5, 0x38, 0x3b, 0x6a, 0xe0, 0xea, 0x2b, 0x6d, - 0x9d, 0x33, 0xc5, 0x0a, 0xf8, 0xb0, 0x19, 0x9e, 0xb2, 0x62, 0xe3, 0xbf, 0x66, 0xa0, 0x12, 0xab, - 0xca, 0x17, 0x51, 0xdd, 0x9c, 0xc3, 0x72, 0x6b, 0xbf, 0xd3, 0xb4, 0xf6, 0xd7, 0x77, 0x0d, 0x4a, - 0x8e, 0xd7, 0xe0, 0xea, 0xfe, 0xc1, 0xd3, 0x83, 0x8d, 0x8f, 0x9b, 0x9b, 0x9d, 0xf6, 0xd3, 0xce, - 0xc1, 0xd3, 0xd6, 0xde, 0xe1, 0x81, 0xd5, 0x61, 0x05, 0x7e, 0x1d, 0xb8, 0x7e, 0x7e, 0xda, 0x6a, - 0x3f, 0xdd, 0x5c, 0xdf, 0xdf, 0x6c, 0xee, 0x36, 0xb7, 0x58, 0x91, 0xbf, 0x0a, 0x5f, 0xdd, 0x6d, - 0xed, 0xb5, 0x3a, 0x4f, 0x0f, 0xb6, 0x9f, 0x5a, 0x07, 0x4f, 0xda, 0x4f, 0x0f, 0xac, 0xa7, 0x56, - 0x73, 0x77, 0xbd, 0xd3, 0x3a, 0xd8, 0x6f, 0x3f, 0x6d, 0x7e, 0x77, 0xb3, 0xd9, 0xdc, 0x6a, 0x6e, - 0xb1, 0x12, 0xbf, 0x02, 0x2b, 0xdb, 0xad, 0xdd, 0xe6, 0xd3, 0xdd, 0x83, 0xf5, 0x2d, 0xf3, 0xbd, - 0x32, 0xbf, 0x09, 0xb5, 0xd6, 0x7e, 0xfb, 0xd1, 0xf6, 0x76, 0x6b, 0xb3, 0xd5, 0xdc, 0xef, 0x3c, - 0x3d, 0x6c, 0x5a, 0x7b, 0xad, 0x76, 0x1b, 0x69, 0x59, 0xa5, 0xf1, 0x1d, 0x28, 0xb6, 0xbc, 0x53, - 0x47, 0x91, 0xf8, 0x99, 0xb5, 0x32, 0x0e, 0x49, 0xd4, 0x24, 0xa9, 0x71, 0x7a, 0x1e, 0xdd, 0x64, - 0x26, 0xe1, 0x5b, 0xb4, 0x12, 0x40, 0xe3, 0x9f, 0x67, 0x61, 0x49, 0xb3, 0x88, 0x1c, 0x9c, 0x3b, - 0xb0, 0x62, 0x22, 0x85, 0xad, 0xf1, 0x1d, 0x3e, 0x09, 0xa6, 0x9f, 0x08, 0xd2, 0xa0, 0xd4, 0x3e, - 0x4f, 0x83, 0x28, 0xfb, 0x44, 0xcc, 0xd1, 0x51, 0xd2, 0x79, 0xb7, 0x04, 0xf0, 0x65, 0x37, 0x38, - 0x2a, 0x0f, 0x8d, 0xd8, 0xf5, 0xbd, 0xcd, 0xf8, 0xfe, 0xc0, 0x18, 0x8c, 0x7f, 0x0a, 0x37, 0xe2, - 0x76, 0xd3, 0xeb, 0x06, 0xe7, 0xc3, 0xf8, 0x97, 0xbc, 0x4a, 0x33, 0x3d, 0xee, 0x6d, 0xc7, 0x95, - 0x63, 0x88, 0xd6, 0x45, 0x0c, 0x1a, 0x7f, 0x9c, 0x49, 0xb9, 0x85, 0xda, 0xed, 0xbb, 0x54, 0x21, - 0xce, 0x4a, 0x51, 0xa0, 0x63, 0x66, 0xba, 0x6f, 0xce, 0x69, 0xd3, 0xe4, 0x87, 0xc0, 0x9d, 0xe9, - 0x4e, 0xe7, 0xe7, 0xec, 0xf4, 0x0c, 0xda, 0xc9, 0x08, 0x73, 0x61, 0x3a, 0xc2, 0x7c, 0x0b, 0xa0, - 0xe7, 0xfa, 0x47, 0xc2, 0x4d, 0xd9, 0x61, 0x29, 0x48, 0xc3, 0x85, 0x72, 0xf4, 0x7b, 0x61, 0xfc, - 0x3a, 0x14, 0xe9, 0x17, 0xc3, 0xe2, 0x78, 0x9b, 0x6e, 0xf1, 0x1d, 0x58, 0x96, 0xe3, 0x7d, 0xce, - 0xce, 0xd9, 0xe7, 0x09, 0xba, 0xc6, 0xb7, 0x60, 0x75, 0x0a, 0x09, 0x27, 0x71, 0x28, 0x54, 0x7c, - 0x69, 0x18, 0x9f, 0xa7, 0x73, 0xbc, 0x8d, 0xff, 0x98, 0x85, 0xc5, 0x3d, 0xe1, 0x39, 0xc7, 0x32, - 0x54, 0x51, 0x6f, 0xc3, 0x6e, 0x5f, 0x0e, 0x44, 0xd4, 0x5b, 0xdd, 0x32, 0x4e, 0x78, 0x36, 0x1d, - 0xde, 0x9e, 0xca, 0x86, 0x5c, 0x87, 0xa2, 0x18, 0xa9, 0x7e, 0x5c, 0xd2, 0x6c, 0x5a, 0xb8, 0x76, - 0xae, 0xd3, 0x95, 0x5e, 0x18, 0xc9, 0x66, 0xd4, 0x4c, 0xaa, 0x3c, 0x8a, 0x97, 0x54, 0x79, 0x94, - 0xa6, 0xe7, 0xff, 0x36, 0x54, 0xc3, 0x6e, 0x20, 0xa5, 0x17, 0xf6, 0x7d, 0x15, 0xfd, 0xd6, 0x5c, - 0x1a, 0x44, 0xd5, 0x4d, 0xfe, 0x33, 0x0f, 0x77, 0xe8, 0xae, 0xe3, 0x9d, 0x98, 0x12, 0x9f, 0x31, - 0x18, 0xca, 0x20, 0x85, 0x20, 0x9c, 0xcf, 0x25, 0xb9, 0xbf, 0x05, 0x2b, 0x6e, 0x53, 0x90, 0x41, - 0x28, 0xd9, 0xf3, 0x03, 0x47, 0xea, 0x48, 0x5b, 0xc5, 0x4a, 0x41, 0x90, 0xd6, 0x15, 0x5e, 0x6f, - 0x24, 0x7a, 0xd2, 0xe4, 0x4c, 0xe3, 0x76, 0xe3, 0x7f, 0x16, 0x00, 0xf6, 0xe4, 0xe0, 0x48, 0x06, - 0x61, 0xdf, 0x19, 0x52, 0x26, 0xc0, 0x31, 0x85, 0x9c, 0x4b, 0x16, 0x3d, 0xf3, 0xf7, 0xc6, 0x6a, - 0xac, 0xa7, 0x73, 0x77, 0x09, 0xf9, 0x64, 0x84, 0x02, 0x27, 0x47, 0x28, 0x69, 0x0a, 0x6c, 0x68, - 0xfe, 0xf3, 0x56, 0x1a, 0x44, 0xb5, 0x4f, 0x42, 0xc9, 0xa6, 0x67, 0xeb, 0x08, 0x48, 0xde, 0x8a, - 0xdb, 0x74, 0x4b, 0x23, 0x5c, 0x1f, 0x29, 0xdf, 0x92, 0x9e, 0x7c, 0x16, 0x5f, 0x31, 0x4a, 0x40, - 0x7c, 0x0f, 0x96, 0x86, 0xe2, 0x7c, 0x20, 0x3d, 0xb5, 0x27, 0x55, 0xdf, 0xb7, 0x4d, 0x35, 0xcc, - 0xab, 0x17, 0x77, 0xf0, 0x30, 0x8d, 0x6e, 0x8d, 0x53, 0xa3, 0x4c, 0x78, 0x21, 0xed, 0x12, 0xbd, - 0x8c, 0xa6, 0xc5, 0x37, 0x00, 0xf4, 0x13, 0x39, 0x16, 0xe5, 0xd9, 0x81, 0x1a, 0x31, 0x90, 0xa1, - 0x0c, 0x4e, 0x1d, 0xad, 0xc7, 0xb4, 0xeb, 0x94, 0x50, 0xa1, 0xd6, 0x1b, 0x85, 0x32, 0x68, 0x0e, - 0x84, 0xe3, 0x9a, 0x05, 0x4e, 0x00, 0xfc, 0x2d, 0xb8, 0x16, 0x8e, 0x8e, 0x50, 0x66, 0x8e, 0x64, - 0xc7, 0xdf, 0x97, 0xcf, 0x42, 0x57, 0x2a, 0x25, 0x03, 0x93, 0x7e, 0x9f, 0xfd, 0xb2, 0xd1, 0x8b, - 0xad, 0x02, 0xfa, 0x5d, 0x03, 0x7c, 0x4a, 0xca, 0x7a, 0x62, 0x90, 0xa9, 0x79, 0x62, 0x19, 0xce, - 0x60, 0x51, 0x83, 0x4c, 0x49, 0x54, 0x96, 0x7f, 0x0d, 0x7e, 0x69, 0x0c, 0xc9, 0xd2, 0x79, 0xd2, - 0x70, 0xdb, 0xf1, 0x84, 0xeb, 0x7c, 0xae, 0xb3, 0xd6, 0xb9, 0xc6, 0x10, 0x96, 0xc6, 0x26, 0x0e, - 0x8f, 0x79, 0xfd, 0x64, 0x8a, 0x44, 0x18, 0x2c, 0xea, 0x76, 0x5b, 0x05, 0x0e, 0x25, 0x00, 0x62, - 0xc8, 0x26, 0xee, 0x73, 0x9f, 0x65, 0xf9, 0x55, 0x60, 0x1a, 0xd2, 0xf2, 0xc4, 0x70, 0xb8, 0x3e, - 0x1c, 0xba, 0x92, 0xe5, 0xe8, 0x2a, 0x5e, 0x02, 0xd5, 0x95, 0xd6, 0x2c, 0xdf, 0xf8, 0x2e, 0xdc, - 0xa0, 0x99, 0x79, 0x2c, 0x83, 0xd8, 0xef, 0x33, 0x63, 0xbd, 0x06, 0xab, 0xfa, 0x69, 0xdf, 0x57, - 0xfa, 0x35, 0xd9, 0x42, 0x1c, 0x96, 0x35, 0x18, 0x4d, 0x81, 0xb6, 0xf4, 0x94, 0xae, 0x55, 0xd1, - 0xb0, 0x18, 0x2f, 0xdb, 0xf8, 0x49, 0x11, 0x78, 0x22, 0x10, 0x1d, 0x47, 0x06, 0x5b, 0x42, 0x89, - 0x54, 0xe0, 0x6e, 0xe9, 0xc2, 0xd4, 0xf3, 0xf3, 0x2b, 0xba, 0xae, 0x43, 0xd1, 0x09, 0xd1, 0x53, - 0x31, 0x15, 0x94, 0xa6, 0xc5, 0x77, 0x01, 0x86, 0x32, 0x70, 0x7c, 0x9b, 0x24, 0xa8, 0x30, 0xb3, - 0xd4, 0x7d, 0xba, 0x53, 0x6b, 0x87, 0x31, 0x8d, 0x95, 0xa2, 0xc7, 0x7e, 0xe8, 0x96, 0x4e, 0xe4, - 0x16, 0xa9, 0xd3, 0x69, 0x10, 0x7f, 0x1d, 0xae, 0x0c, 0x03, 0xa7, 0x2b, 0xf5, 0x72, 0x3c, 0x0a, - 0xed, 0x4d, 0xfa, 0x35, 0xb0, 0x12, 0x61, 0xce, 0x7a, 0x85, 0x12, 0x28, 0x3c, 0xb2, 0xdf, 0x43, - 0x4a, 0x5d, 0x9a, 0xab, 0xa0, 0xba, 0x22, 0x71, 0xc9, 0x9a, 0xfd, 0x92, 0xdf, 0x05, 0x66, 0x5e, - 0xec, 0x39, 0xde, 0xae, 0xf4, 0x7a, 0xaa, 0x4f, 0xc2, 0xbd, 0x64, 0x4d, 0xc1, 0x49, 0x83, 0xe9, - 0xdf, 0x5c, 0xd1, 0x69, 0x8d, 0x8a, 0x15, 0xb7, 0xf5, 0xf5, 0x62, 0xd7, 0x0f, 0xda, 0x2a, 0x30, - 0xc5, 0x92, 0x71, 0x1b, 0x6d, 0x96, 0x90, 0xfa, 0x7a, 0x18, 0xf8, 0xf6, 0x88, 0x82, 0xee, 0x5a, - 0x89, 0x4d, 0x82, 0x13, 0xcc, 0x3d, 0xe1, 0x99, 0xb2, 0xba, 0xa5, 0x34, 0x66, 0x0c, 0x26, 0x17, - 0xc5, 0x0f, 0x13, 0x86, 0x2b, 0xc6, 0x45, 0x49, 0xc1, 0x0c, 0x4e, 0xc2, 0x8a, 0xc5, 0x38, 0x09, - 0x1f, 0x1a, 0xbf, 0x1d, 0xf8, 0x8e, 0x9d, 0xf0, 0x5a, 0xd5, 0x45, 0x8f, 0x93, 0xf0, 0x14, 0x6e, - 0xc2, 0x93, 0x8f, 0xe1, 0xc6, 0xf0, 0xc6, 0x0f, 0x32, 0x00, 0xc9, 0xe2, 0xa3, 0xc8, 0x27, 0xad, - 0x64, 0x8b, 0xdf, 0x80, 0x2b, 0x69, 0x30, 0x55, 0xc3, 0x53, 0xfe, 0x93, 0xc3, 0x72, 0xf2, 0x62, - 0x4b, 0x9c, 0x87, 0x2c, 0xab, 0xab, 0x1f, 0x23, 0xd8, 0x13, 0x29, 0xa9, 0xce, 0xec, 0x2a, 0xb0, - 0x04, 0x48, 0x97, 0x9d, 0x42, 0x96, 0x1f, 0x47, 0xfd, 0x9e, 0x14, 0x41, 0xc8, 0x0a, 0x8d, 0x1d, - 0x28, 0xea, 0xdc, 0xcb, 0x8c, 0xac, 0xe9, 0x8b, 0x95, 0x40, 0xfc, 0xed, 0x0c, 0xc0, 0x96, 0x2e, - 0x70, 0xc5, 0x53, 0x7c, 0x46, 0x32, 0x7a, 0x96, 0x45, 0x25, 0x6c, 0x9b, 0x4a, 0x7f, 0x73, 0xf1, - 0x2f, 0x79, 0x60, 0x13, 0x25, 0x47, 0x44, 0x85, 0x45, 0x7a, 0xcf, 0xc5, 0x6d, 0x7d, 0x80, 0x6c, - 0xfa, 0x9e, 0x27, 0xbb, 0x78, 0xfc, 0xc4, 0x07, 0x48, 0x0c, 0x6a, 0xfc, 0xbb, 0x12, 0x54, 0x37, - 0xfb, 0x42, 0xed, 0xc9, 0x30, 0x14, 0x3d, 0x39, 0xd5, 0x97, 0x1a, 0x94, 0xfc, 0xc0, 0x96, 0x41, - 0x72, 0x61, 0xc9, 0x34, 0xd3, 0x29, 0xf8, 0xdc, 0x78, 0x0a, 0xfe, 0x26, 0x54, 0x74, 0x80, 0xdf, - 0x5e, 0xd7, 0x6a, 0x20, 0x67, 0x25, 0x00, 0x3c, 0xab, 0x07, 0xbe, 0x4d, 0xca, 0x68, 0x5d, 0xc7, - 0xc6, 0x73, 0x56, 0x0a, 0xa2, 0x2b, 0x1e, 0x86, 0xee, 0x79, 0xc7, 0x37, 0x7d, 0x6a, 0xd9, 0xc9, - 0xed, 0xce, 0x71, 0x38, 0xdf, 0x84, 0xd2, 0x40, 0x37, 0x4c, 0x9c, 0x7f, 0x32, 0x22, 0x9e, 0x1a, - 0xda, 0x9a, 0xf9, 0x6b, 0x2e, 0x58, 0x58, 0x11, 0x25, 0x7a, 0xb0, 0x42, 0x29, 0xd1, 0xed, 0x0f, - 0x8c, 0x8a, 0xc8, 0xcd, 0x48, 0xf9, 0xa5, 0x19, 0xad, 0xc7, 0xd8, 0x56, 0x9a, 0x92, 0x6f, 0x40, - 0x25, 0x90, 0x62, 0x2c, 0xeb, 0xf8, 0xf2, 0x25, 0x6c, 0xac, 0x08, 0xd7, 0x4a, 0xc8, 0xea, 0x3f, - 0xca, 0xc0, 0xf2, 0x78, 0x47, 0xff, 0x22, 0x7e, 0x8c, 0xe9, 0xdb, 0xc9, 0x8f, 0x31, 0x7d, 0x89, - 0x1f, 0x36, 0xfa, 0xdd, 0x0c, 0x40, 0x32, 0x07, 0xa8, 0xf2, 0xf5, 0x8f, 0xc6, 0x44, 0x46, 0xa8, - 0x6e, 0xf1, 0x9d, 0xb1, 0x6b, 0xdd, 0x6f, 0xcd, 0x35, 0xa1, 0xa9, 0xc7, 0x54, 0xd5, 0xee, 0x3d, - 0x58, 0x1e, 0x87, 0xd3, 0xcf, 0xc0, 0xb4, 0x76, 0x9b, 0x3a, 0x02, 0xd0, 0xda, 0x5b, 0x7f, 0xd0, - 0x34, 0x17, 0x5a, 0x5a, 0xfb, 0x0f, 0x59, 0xb6, 0xfe, 0x27, 0x19, 0xa8, 0xc4, 0xd3, 0xcb, 0x3f, - 0x49, 0xaf, 0x8b, 0x2e, 0x23, 0x78, 0x73, 0x9e, 0x75, 0x49, 0x9e, 0x9a, 0x9e, 0x0a, 0xce, 0xd3, - 0xcb, 0xe4, 0xc3, 0xf2, 0xf8, 0xcb, 0x19, 0x3a, 0xe1, 0xc1, 0xb8, 0x4e, 0x78, 0x63, 0xae, 0x4f, - 0x46, 0x9e, 0xd7, 0xae, 0x13, 0x2a, 0xa3, 0x2e, 0xde, 0xcf, 0xbe, 0x97, 0xa9, 0xdf, 0x86, 0xc5, - 0xf4, 0xab, 0xe9, 0x5b, 0x6b, 0x77, 0xff, 0x24, 0x07, 0xcb, 0xe3, 0x99, 0x78, 0xba, 0x23, 0xa3, - 0xab, 0x40, 0x0e, 0x5c, 0x3b, 0x55, 0xe8, 0xcc, 0xf8, 0x0a, 0x54, 0x8d, 0x6f, 0x47, 0x80, 0x55, - 0x8a, 0x31, 0xf8, 0x03, 0xc9, 0x6e, 0xa7, 0x7f, 0x70, 0xee, 0x75, 0x0e, 0xd1, 0xed, 0x25, 0x36, - 0xe4, 0x15, 0xf3, 0xd3, 0x3b, 0xbf, 0x96, 0xe5, 0x4b, 0xa9, 0x72, 0xdb, 0x1f, 0xa2, 0x61, 0xb3, - 0xb2, 0x31, 0xf2, 0x6c, 0x57, 0xda, 0x31, 0xf4, 0x47, 0x69, 0x68, 0x5c, 0x3c, 0xfb, 0x6b, 0x79, - 0xbe, 0x0c, 0x95, 0xf6, 0xe8, 0xc8, 0x14, 0xce, 0xfe, 0xf5, 0x3c, 0xbf, 0x0e, 0xab, 0x06, 0x2b, - 0xa9, 0x80, 0x63, 0x7f, 0x03, 0x55, 0xf0, 0xf2, 0xba, 0x9e, 0x2f, 0xd3, 0x51, 0xf6, 0x37, 0xf3, - 0xd8, 0x05, 0xba, 0x14, 0xfb, 0xeb, 0xc4, 0x27, 0xbe, 0x42, 0xc0, 0x7e, 0x23, 0xcf, 0x57, 0x00, - 0xda, 0x9d, 0xf8, 0x43, 0xbf, 0x95, 0xe7, 0x55, 0x28, 0xb6, 0x3b, 0xc4, 0xed, 0x07, 0x79, 0x7e, - 0x0d, 0x58, 0xf2, 0xd6, 0xd4, 0x05, 0xfe, 0x1d, 0xdd, 0x99, 0xb8, 0xd0, 0xef, 0xb7, 0xf3, 0x38, - 0xae, 0x68, 0x96, 0xd9, 0xdf, 0xcd, 0x73, 0x06, 0xd5, 0x54, 0xe4, 0x8a, 0xfd, 0xbd, 0x3c, 0xe7, - 0xb0, 0xb4, 0xe7, 0x84, 0xa1, 0xe3, 0xf5, 0xcc, 0x08, 0x7e, 0x93, 0xbe, 0xbc, 0x1d, 0xdf, 0x82, - 0x60, 0xbf, 0x93, 0xe7, 0x37, 0x80, 0xa7, 0xa3, 0xf5, 0xe6, 0xc5, 0xdf, 0x27, 0x6a, 0xad, 0xf6, - 0x43, 0x03, 0xfb, 0x07, 0x44, 0x8d, 0x92, 0x60, 0x00, 0xff, 0x90, 0x26, 0x64, 0x33, 0xa9, 0x24, - 0x34, 0xf0, 0x1f, 0x12, 0x71, 0xb4, 0x98, 0x1a, 0xf6, 0xa3, 0xfc, 0xdd, 0x9f, 0x50, 0xb4, 0x35, - 0x5d, 0x90, 0xc3, 0x17, 0xa1, 0xec, 0xfa, 0x5e, 0x4f, 0xe9, 0x1f, 0xfa, 0x5b, 0x82, 0x4a, 0xd8, - 0xf7, 0x03, 0x45, 0x4d, 0xba, 0xa6, 0xe5, 0xd1, 0x85, 0x5d, 0x5d, 0x6d, 0xad, 0x9d, 0x14, 0x1d, - 0xbd, 0x52, 0xa2, 0xc7, 0xaa, 0x71, 0x0d, 0x64, 0x3e, 0xae, 0xd3, 0xa4, 0x8b, 0xc3, 0xd1, 0xc5, - 0x4c, 0x56, 0x44, 0xd4, 0x51, 0xe0, 0xea, 0x7a, 0x4d, 0x89, 0x06, 0xaa, 0xfe, 0x45, 0xaf, 0x61, - 0x1f, 0xed, 0xe0, 0x8a, 0x86, 0xfa, 0x9f, 0x39, 0xfa, 0xca, 0x9f, 0x29, 0x7f, 0xb2, 0xb1, 0x1f, - 0x71, 0x86, 0x9f, 0xc9, 0xbb, 0xbf, 0x9d, 0x81, 0xc5, 0xe8, 0xba, 0xac, 0xd3, 0x73, 0x3c, 0x5d, - 0xf1, 0x19, 0xfd, 0x7c, 0x62, 0xd7, 0x75, 0x86, 0xd1, 0xcf, 0x91, 0xad, 0x40, 0xd5, 0x0e, 0x44, - 0x6f, 0xdd, 0xb3, 0xb7, 0x02, 0x7f, 0xa8, 0xbb, 0xad, 0xf3, 0x31, 0xba, 0xd2, 0xf4, 0x99, 0x3c, - 0x42, 0xf4, 0xa1, 0x0c, 0x58, 0x9e, 0x4a, 0xab, 0xfa, 0x22, 0x70, 0xbc, 0x5e, 0xf3, 0x4c, 0x49, - 0x2f, 0xd4, 0x15, 0xa7, 0x55, 0x28, 0x8d, 0x42, 0xd9, 0x15, 0xa1, 0x64, 0x45, 0x6c, 0x1c, 0x8d, - 0x1c, 0x57, 0x39, 0x9e, 0xfe, 0x15, 0xb0, 0xb8, 0xa4, 0xb4, 0x7c, 0xf7, 0xf7, 0x33, 0x50, 0x25, - 0x69, 0x48, 0x02, 0x8d, 0x89, 0xa5, 0x51, 0x85, 0xd2, 0x6e, 0xfc, 0x2b, 0x50, 0x45, 0xc8, 0x1e, - 0x9c, 0xe8, 0x40, 0xa3, 0x91, 0x06, 0x7d, 0xd9, 0x4d, 0xff, 0x20, 0x54, 0x9e, 0x7f, 0x05, 0xae, - 0x59, 0x72, 0xe0, 0x2b, 0xf9, 0x44, 0x38, 0x2a, 0x7d, 0xdb, 0xa2, 0x80, 0x4e, 0x89, 0x7e, 0x15, - 0x5d, 0xaf, 0x28, 0x92, 0x53, 0x82, 0x9f, 0x8d, 0x20, 0x25, 0x1c, 0x34, 0x41, 0x8c, 0x97, 0x52, - 0x8e, 0x51, 0x3e, 0xf6, 0x1d, 0x0f, 0xbf, 0x46, 0x57, 0x2c, 0x09, 0x42, 0x11, 0x6b, 0x04, 0xc1, - 0xdd, 0x7d, 0xb8, 0x3e, 0x3b, 0xce, 0xaa, 0x2f, 0x5f, 0xd2, 0x4f, 0x8f, 0x52, 0xfd, 0xfd, 0x93, - 0xc0, 0xd1, 0x77, 0xe8, 0x2a, 0x50, 0x38, 0x78, 0xe6, 0x91, 0x34, 0xac, 0xc2, 0xd2, 0xbe, 0x9f, - 0xa2, 0x61, 0xb9, 0xbb, 0xdd, 0xb1, 0xd0, 0x78, 0x32, 0x29, 0x51, 0x27, 0x16, 0x52, 0x77, 0x4b, - 0x32, 0x3a, 0xe8, 0x4a, 0xbf, 0x1e, 0xaf, 0x2f, 0xa6, 0x9b, 0x90, 0xb4, 0xad, 0x2f, 0xa6, 0xc7, - 0xdd, 0xcc, 0xeb, 0x9f, 0x85, 0xf1, 0xba, 0xd2, 0x95, 0x36, 0x2b, 0xdc, 0x7d, 0x0f, 0x56, 0xcc, - 0x50, 0xbb, 0x32, 0x0c, 0xa3, 0xbb, 0x19, 0x87, 0x81, 0x73, 0xaa, 0x2f, 0xbf, 0x2f, 0x42, 0xf9, - 0x50, 0x06, 0xa1, 0xef, 0xd1, 0xc5, 0x7f, 0x80, 0x62, 0xbb, 0x2f, 0x02, 0xfc, 0xc6, 0xdd, 0x6f, - 0x40, 0x85, 0xee, 0x6a, 0x3c, 0x74, 0x3c, 0x1b, 0x47, 0xb2, 0x61, 0xca, 0x93, 0x2b, 0x50, 0xd8, - 0xf4, 0x4f, 0x69, 0x7c, 0x65, 0xfd, 0x03, 0x88, 0x2c, 0x7b, 0xf7, 0x23, 0xe0, 0x3a, 0xc4, 0x63, - 0xcb, 0x33, 0xc7, 0xeb, 0xc5, 0x37, 0x82, 0x81, 0xae, 0xf7, 0xdb, 0xf2, 0x8c, 0x3c, 0xa8, 0x2a, - 0x94, 0xa2, 0x46, 0xf4, 0x23, 0x03, 0xdb, 0xfe, 0xc8, 0xc3, 0xaf, 0x3d, 0x86, 0xab, 0x5a, 0x36, - 0xf0, 0xf3, 0x74, 0x27, 0xec, 0x42, 0xbf, 0x53, 0x5f, 0xa8, 0x51, 0xa3, 0x30, 0xc6, 0x65, 0x19, - 0x7e, 0x1d, 0x78, 0xec, 0xb3, 0x25, 0xf0, 0xec, 0xdd, 0x06, 0x5c, 0x99, 0xe1, 0x38, 0x93, 0x12, - 0xd6, 0xee, 0x03, 0x5b, 0xb8, 0xfb, 0x21, 0xac, 0x6a, 0xb5, 0xb1, 0xaf, 0xef, 0xf8, 0x44, 0x27, - 0xe0, 0x93, 0xd6, 0x76, 0x4b, 0x4f, 0xd1, 0x66, 0x73, 0x77, 0xf7, 0xd1, 0xee, 0xba, 0xc5, 0x32, - 0xb4, 0x90, 0x07, 0x9d, 0xa7, 0x9b, 0x07, 0xfb, 0xfb, 0xcd, 0xcd, 0x4e, 0x73, 0x8b, 0x65, 0x37, - 0xee, 0xfe, 0xe1, 0xcf, 0x6f, 0x65, 0x7e, 0xf6, 0xf3, 0x5b, 0x99, 0xff, 0xfe, 0xf3, 0x5b, 0x99, - 0x1f, 0x7c, 0x71, 0x6b, 0xe1, 0x67, 0x5f, 0xdc, 0x5a, 0xf8, 0x2f, 0x5f, 0xdc, 0x5a, 0xf8, 0x94, - 0x4d, 0xfe, 0xe7, 0x86, 0xa3, 0x22, 0x59, 0xac, 0x6f, 0xfe, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x03, 0x05, 0xfb, 0xeb, 0xd4, 0x61, 0x00, 0x00, + // 8645 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7d, 0x5b, 0x8c, 0x24, 0xc9, + 0x71, 0xd8, 0xf4, 0xbb, 0x3b, 0x7a, 0x1e, 0x39, 0xb9, 0xaf, 0x66, 0xdf, 0x6a, 0xb5, 0x6c, 0x1e, + 0xef, 0x96, 0xcb, 0xe3, 0xec, 0xdd, 0xde, 0x93, 0x27, 0xde, 0x1d, 0xe7, 0xd1, 0xb3, 0xd3, 0xb7, + 0xf3, 0xba, 0xea, 0xde, 0x5d, 0xf2, 0x20, 0x79, 0x9d, 0xd3, 0x95, 0xd3, 0x5d, 0x37, 0xd5, 0x55, + 0xcd, 0xaa, 0xec, 0xd9, 0x99, 0x83, 0x6d, 0xc8, 0x2f, 0xc9, 0xfa, 0xa3, 0x04, 0xcb, 0x8f, 0x0f, + 0x43, 0xe4, 0x9f, 0x61, 0x11, 0x36, 0x6c, 0x80, 0x30, 0x6d, 0x58, 0x80, 0xad, 0x1f, 0x0b, 0xf0, + 0x0f, 0x6d, 0x7f, 0xd8, 0xfe, 0xb2, 0x41, 0x7e, 0x1a, 0xb2, 0x20, 0x7f, 0x09, 0x86, 0x3f, 0x8c, + 0x88, 0xcc, 0x7a, 0xf4, 0x63, 0x66, 0x7b, 0x4f, 0x92, 0xa1, 0xaf, 0xa9, 0x88, 0x8a, 0x88, 0xca, + 0x47, 0x64, 0x64, 0x44, 0x64, 0x64, 0x0f, 0xbc, 0x3c, 0x3c, 0xe9, 0xdd, 0x73, 0x9d, 0xa3, 0x7b, + 0xc3, 0xa3, 0x7b, 0x03, 0xdf, 0x96, 0xee, 0xbd, 0x61, 0xe0, 0x2b, 0x3f, 0xd4, 0x40, 0xb8, 0x46, + 0x10, 0x5f, 0x12, 0xde, 0xb9, 0x3a, 0x1f, 0xca, 0x35, 0xc2, 0xd6, 0x6f, 0xf6, 0x7c, 0xbf, 0xe7, + 0x4a, 0x4d, 0x7a, 0x34, 0x3a, 0xbe, 0x17, 0xaa, 0x60, 0xd4, 0x55, 0x9a, 0xb8, 0xf1, 0xd3, 0x3c, + 0x5c, 0x6f, 0x0f, 0x44, 0xa0, 0x36, 0x5c, 0xbf, 0x7b, 0xd2, 0xf6, 0xc4, 0x30, 0xec, 0xfb, 0x6a, + 0x43, 0x84, 0x92, 0xbf, 0x06, 0xc5, 0x23, 0x44, 0x86, 0xb5, 0xcc, 0xed, 0xdc, 0x9d, 0xea, 0xfd, + 0xab, 0x6b, 0x63, 0x82, 0xd7, 0x88, 0xc3, 0x32, 0x34, 0xfc, 0x0d, 0x28, 0xd9, 0x52, 0x09, 0xc7, + 0x0d, 0x6b, 0xd9, 0xdb, 0x99, 0x3b, 0xd5, 0xfb, 0x37, 0xd6, 0xf4, 0x87, 0xd7, 0xa2, 0x0f, 0xaf, + 0xb5, 0xe9, 0xc3, 0x56, 0x44, 0xc7, 0xdf, 0x85, 0xf2, 0xb1, 0xe3, 0xca, 0x87, 0xf2, 0x3c, 0xac, + 0xe5, 0x2e, 0xe5, 0xd9, 0xc8, 0xd6, 0x32, 0x56, 0x4c, 0xcc, 0x37, 0x61, 0x59, 0x9e, 0xa9, 0x40, + 0x58, 0xd2, 0x15, 0xca, 0xf1, 0xbd, 0xb0, 0x96, 0xa7, 0x16, 0xde, 0x98, 0x68, 0x61, 0xf4, 0x9e, + 0xd8, 0x27, 0x58, 0xf8, 0x6d, 0xa8, 0xfa, 0x47, 0x9f, 0xc9, 0xae, 0xea, 0x9c, 0x0f, 0x65, 0x58, + 0x2b, 0xdc, 0xce, 0xdd, 0xa9, 0x58, 0x69, 0x14, 0xff, 0x26, 0x54, 0xbb, 0xbe, 0xeb, 0xca, 0xae, + 0xfe, 0x46, 0xf1, 0xf2, 0x6e, 0xa5, 0x69, 0xf9, 0x5b, 0x70, 0x2d, 0x90, 0x03, 0xff, 0x54, 0xda, + 0x9b, 0x31, 0x96, 0xfa, 0x59, 0xa6, 0xcf, 0xcc, 0x7e, 0xc9, 0xd7, 0x61, 0x29, 0x30, 0xed, 0xdb, + 0x75, 0xbc, 0x93, 0xb0, 0x56, 0xa2, 0x6e, 0xbd, 0x74, 0x41, 0xb7, 0x90, 0xc6, 0x1a, 0xe7, 0xe0, + 0x0c, 0x72, 0x27, 0xf2, 0xbc, 0x56, 0xb9, 0x9d, 0xb9, 0x53, 0xb1, 0xf0, 0x91, 0xbf, 0x0f, 0x35, + 0x3f, 0x70, 0x7a, 0x8e, 0x27, 0xdc, 0xcd, 0x40, 0x0a, 0x25, 0xed, 0x8e, 0x33, 0x90, 0xa1, 0x12, + 0x83, 0x61, 0x0d, 0x6e, 0x67, 0xee, 0xe4, 0xac, 0x0b, 0xdf, 0xf3, 0x37, 0xf5, 0x0c, 0xb5, 0xbc, + 0x63, 0xbf, 0x56, 0x35, 0xdd, 0x1f, 0x6f, 0xcb, 0xb6, 0x79, 0x6d, 0xc5, 0x84, 0x8d, 0x3f, 0xc9, + 0x42, 0xb1, 0x2d, 0x45, 0xd0, 0xed, 0xd7, 0x7f, 0x3d, 0x03, 0x45, 0x4b, 0x86, 0x23, 0x57, 0xf1, + 0x3a, 0x94, 0xf5, 0xd8, 0xb6, 0xec, 0x5a, 0x86, 0x5a, 0x17, 0xc3, 0x5f, 0x44, 0x77, 0xd6, 0x20, + 0x3f, 0x90, 0x4a, 0xd4, 0x72, 0x34, 0x42, 0xf5, 0x89, 0x56, 0xe9, 0xcf, 0xaf, 0xed, 0x49, 0x25, + 0x2c, 0xa2, 0xab, 0xff, 0x3c, 0x03, 0x79, 0x04, 0xf9, 0x4d, 0xa8, 0xf4, 0x9d, 0x5e, 0xdf, 0x75, + 0x7a, 0x7d, 0x65, 0x1a, 0x92, 0x20, 0xf8, 0x87, 0xb0, 0x12, 0x03, 0x96, 0xf0, 0x7a, 0x12, 0x5b, + 0x34, 0x4b, 0xf9, 0xe9, 0xa5, 0x35, 0x49, 0xcc, 0x6b, 0x50, 0xa2, 0xf5, 0xd0, 0xb2, 0x49, 0xa3, + 0x2b, 0x56, 0x04, 0xa2, 0xba, 0x45, 0x33, 0xf5, 0x50, 0x9e, 0xd7, 0xf2, 0xf4, 0x36, 0x8d, 0xe2, + 0xeb, 0xb0, 0x12, 0x81, 0x5b, 0x66, 0x34, 0x0a, 0x97, 0x8f, 0xc6, 0x24, 0x7d, 0xe3, 0xbf, 0xb4, + 0xa0, 0x40, 0xcb, 0x92, 0x2f, 0x43, 0xd6, 0x89, 0x06, 0x3a, 0xeb, 0xd8, 0xfc, 0x1e, 0x14, 0x8f, + 0x1d, 0xe9, 0xda, 0xcf, 0x1d, 0x61, 0x43, 0xc6, 0x9b, 0xb0, 0x18, 0xc8, 0x50, 0x05, 0x8e, 0xd1, + 0x7e, 0xbd, 0x40, 0xbf, 0x3c, 0xcb, 0x06, 0xac, 0x59, 0x29, 0x42, 0x6b, 0x8c, 0x0d, 0xbb, 0xdd, + 0xed, 0x3b, 0xae, 0x1d, 0x48, 0xaf, 0x65, 0xeb, 0x75, 0x5a, 0xb1, 0xd2, 0x28, 0x7e, 0x07, 0x56, + 0x8e, 0x44, 0xf7, 0xa4, 0x17, 0xf8, 0x23, 0x0f, 0x17, 0x84, 0x1f, 0x50, 0xb7, 0x2b, 0xd6, 0x24, + 0x9a, 0xbf, 0x0e, 0x05, 0xe1, 0x3a, 0x3d, 0x8f, 0x56, 0xe2, 0xf2, 0xd4, 0xa4, 0xeb, 0xb6, 0xac, + 0x23, 0x85, 0xa5, 0x09, 0xf9, 0x0e, 0x2c, 0x9d, 0xca, 0x40, 0x39, 0x5d, 0xe1, 0x12, 0xbe, 0x56, + 0x22, 0xce, 0xc6, 0x4c, 0xce, 0xc7, 0x69, 0x4a, 0x6b, 0x9c, 0x91, 0xb7, 0x00, 0x42, 0x34, 0x93, + 0x34, 0x9d, 0x66, 0x2d, 0xbc, 0x3a, 0x53, 0xcc, 0xa6, 0xef, 0x29, 0xe9, 0xa9, 0xb5, 0x76, 0x4c, + 0xbe, 0xb3, 0x60, 0xa5, 0x98, 0xf9, 0xbb, 0x90, 0x57, 0xf2, 0x4c, 0xd5, 0x96, 0x2f, 0x19, 0xd1, + 0x48, 0x48, 0x47, 0x9e, 0xa9, 0x9d, 0x05, 0x8b, 0x18, 0x90, 0x11, 0x17, 0x59, 0x6d, 0x65, 0x0e, + 0x46, 0x5c, 0x97, 0xc8, 0x88, 0x0c, 0xfc, 0x03, 0x28, 0xba, 0xe2, 0xdc, 0x1f, 0xa9, 0x1a, 0x23, + 0xd6, 0xaf, 0x5c, 0xca, 0xba, 0x4b, 0xa4, 0x3b, 0x0b, 0x96, 0x61, 0xe2, 0x6f, 0x41, 0xce, 0x76, + 0x4e, 0x6b, 0xab, 0xc4, 0x7b, 0xfb, 0x52, 0xde, 0x2d, 0xe7, 0x74, 0x67, 0xc1, 0x42, 0x72, 0xbe, + 0x09, 0xe5, 0x23, 0xdf, 0x3f, 0x19, 0x88, 0xe0, 0xa4, 0xc6, 0x89, 0xf5, 0xab, 0x97, 0xb2, 0x6e, + 0x18, 0xe2, 0x9d, 0x05, 0x2b, 0x66, 0xc4, 0x2e, 0x3b, 0x5d, 0xdf, 0xab, 0x5d, 0x99, 0xa3, 0xcb, + 0xad, 0xae, 0xef, 0x61, 0x97, 0x91, 0x01, 0x19, 0x5d, 0xc7, 0x3b, 0xa9, 0x5d, 0x9d, 0x83, 0x11, + 0x2d, 0x27, 0x32, 0x22, 0x03, 0x36, 0xdb, 0x16, 0x4a, 0x9c, 0x3a, 0xf2, 0x59, 0xed, 0xda, 0x1c, + 0xcd, 0xde, 0x32, 0xc4, 0xd8, 0xec, 0x88, 0x11, 0x85, 0x44, 0x4b, 0xb3, 0x76, 0x7d, 0x0e, 0x21, + 0x91, 0x45, 0x47, 0x21, 0x11, 0x23, 0xff, 0x4b, 0xb0, 0x7a, 0x2c, 0x85, 0x1a, 0x05, 0xd2, 0x4e, + 0x36, 0xba, 0x1b, 0x24, 0x6d, 0xed, 0xf2, 0xb9, 0x9f, 0xe4, 0xda, 0x59, 0xb0, 0xa6, 0x45, 0xf1, + 0xf7, 0xa1, 0xe0, 0x0a, 0x25, 0xcf, 0x6a, 0x35, 0x92, 0xd9, 0x78, 0x8e, 0x52, 0x28, 0x79, 0xb6, + 0xb3, 0x60, 0x69, 0x16, 0xfe, 0x1d, 0x58, 0x51, 0xe2, 0xc8, 0x95, 0x07, 0xc7, 0x86, 0x20, 0xac, + 0x7d, 0x89, 0xa4, 0xbc, 0x76, 0xb9, 0x3a, 0x8f, 0xf3, 0xec, 0x2c, 0x58, 0x93, 0x62, 0xb0, 0x55, + 0x84, 0xaa, 0xd5, 0xe7, 0x68, 0x15, 0xc9, 0xc3, 0x56, 0x11, 0x0b, 0xdf, 0x85, 0x2a, 0x3d, 0x6c, + 0xfa, 0xee, 0x68, 0xe0, 0xd5, 0x5e, 0x22, 0x09, 0x77, 0x9e, 0x2f, 0x41, 0xd3, 0xef, 0x2c, 0x58, + 0x69, 0x76, 0x9c, 0x44, 0x02, 0x2d, 0xff, 0x59, 0xed, 0xe6, 0x1c, 0x93, 0xd8, 0x31, 0xc4, 0x38, + 0x89, 0x11, 0x23, 0x2e, 0xbd, 0x67, 0x8e, 0xdd, 0x93, 0xaa, 0xf6, 0x0b, 0x73, 0x2c, 0xbd, 0x27, + 0x44, 0x8a, 0x4b, 0x4f, 0x33, 0xa1, 0x1a, 0x77, 0xfb, 0x42, 0xd5, 0x6e, 0xcd, 0xa1, 0xc6, 0x9b, + 0x7d, 0x41, 0xb6, 0x02, 0x19, 0xea, 0x9f, 0xc3, 0x62, 0xda, 0x2a, 0x73, 0x0e, 0xf9, 0x40, 0x0a, + 0xbd, 0x23, 0x94, 0x2d, 0x7a, 0x46, 0x9c, 0xb4, 0x1d, 0x45, 0x3b, 0x42, 0xd9, 0xa2, 0x67, 0x7e, + 0x1d, 0x8a, 0xda, 0x37, 0x21, 0x83, 0x5f, 0xb6, 0x0c, 0x84, 0xb4, 0x76, 0x20, 0x7a, 0xb4, 0x6f, + 0x95, 0x2d, 0x7a, 0x46, 0x5a, 0x3b, 0xf0, 0x87, 0x07, 0x1e, 0x19, 0xec, 0xb2, 0x65, 0xa0, 0xfa, + 0xbf, 0x7e, 0x1f, 0x4a, 0xa6, 0x51, 0xf5, 0x7f, 0x94, 0x81, 0xa2, 0x36, 0x28, 0xfc, 0x23, 0x28, + 0x84, 0xea, 0xdc, 0x95, 0xd4, 0x86, 0xe5, 0xfb, 0x5f, 0x9b, 0xc3, 0x08, 0xad, 0xb5, 0x91, 0xc1, + 0xd2, 0x7c, 0x0d, 0x0b, 0x0a, 0x04, 0xf3, 0x12, 0xe4, 0x2c, 0xff, 0x19, 0x5b, 0xe0, 0x00, 0x45, + 0x3d, 0x59, 0x2c, 0x83, 0xc8, 0x2d, 0xe7, 0x94, 0x65, 0x11, 0xb9, 0x23, 0x85, 0x2d, 0x03, 0x96, + 0xe3, 0x4b, 0x50, 0x89, 0xa6, 0x25, 0x64, 0x79, 0xce, 0x60, 0x31, 0x35, 0xe1, 0x21, 0x2b, 0xd4, + 0xff, 0x77, 0x1e, 0xf2, 0xb8, 0xfe, 0xf9, 0xcb, 0xb0, 0xa4, 0x44, 0xd0, 0x93, 0xda, 0x11, 0x8e, + 0x9d, 0x94, 0x71, 0x24, 0xff, 0x20, 0xea, 0x43, 0x96, 0xfa, 0xf0, 0xea, 0x73, 0xed, 0xca, 0x58, + 0x0f, 0x52, 0xbb, 0x70, 0x6e, 0xbe, 0x5d, 0x78, 0x1b, 0xca, 0x68, 0xce, 0xda, 0xce, 0xe7, 0x92, + 0x86, 0x7e, 0xf9, 0xfe, 0xdd, 0xe7, 0x7f, 0xb2, 0x65, 0x38, 0xac, 0x98, 0x97, 0xb7, 0xa0, 0xd2, + 0x15, 0x81, 0x4d, 0x8d, 0xa1, 0xd9, 0x5a, 0xbe, 0xff, 0xf5, 0xe7, 0x0b, 0xda, 0x8c, 0x58, 0xac, + 0x84, 0x9b, 0x1f, 0x40, 0xd5, 0x96, 0x61, 0x37, 0x70, 0x86, 0x64, 0xde, 0xf4, 0x5e, 0xfc, 0x8d, + 0xe7, 0x0b, 0xdb, 0x4a, 0x98, 0xac, 0xb4, 0x04, 0xf4, 0xc8, 0x82, 0xd8, 0xbe, 0x95, 0xc8, 0x41, + 0x48, 0x10, 0x8d, 0x77, 0xa1, 0x1c, 0xf5, 0x87, 0x2f, 0x42, 0x19, 0xff, 0xee, 0xfb, 0x9e, 0x64, + 0x0b, 0x38, 0xb7, 0x08, 0xb5, 0x07, 0xc2, 0x75, 0x59, 0x86, 0x2f, 0x03, 0x20, 0xb8, 0x27, 0x6d, + 0x67, 0x34, 0x60, 0xd9, 0xc6, 0x2f, 0x45, 0xda, 0x52, 0x86, 0xfc, 0xa1, 0xe8, 0x21, 0xc7, 0x22, + 0x94, 0x23, 0x73, 0xcd, 0x32, 0xc8, 0xbf, 0x25, 0xc2, 0xfe, 0x91, 0x2f, 0x02, 0x9b, 0x65, 0x79, + 0x15, 0x4a, 0xeb, 0x41, 0xb7, 0xef, 0x9c, 0x4a, 0x96, 0x6b, 0xdc, 0x83, 0x6a, 0xaa, 0xbd, 0x28, + 0xc2, 0x7c, 0xb4, 0x02, 0x85, 0x75, 0xdb, 0x96, 0x36, 0xcb, 0x20, 0x83, 0xe9, 0x20, 0xcb, 0x36, + 0xbe, 0x0e, 0x95, 0x78, 0xb4, 0x90, 0x1c, 0x37, 0x6e, 0xb6, 0x80, 0x4f, 0x88, 0x66, 0x19, 0xd4, + 0xca, 0x96, 0xe7, 0x3a, 0x9e, 0x64, 0xd9, 0xfa, 0x5f, 0x26, 0x55, 0xe5, 0xdf, 0x1a, 0x5f, 0x10, + 0xaf, 0x3c, 0x6f, 0x67, 0x1d, 0x5f, 0x0d, 0x2f, 0xa5, 0xfa, 0xb7, 0xeb, 0x50, 0xe3, 0xca, 0x90, + 0xdf, 0xf2, 0x55, 0xc8, 0x32, 0xf5, 0xff, 0x99, 0x85, 0x72, 0xb4, 0xa1, 0x62, 0x4c, 0x30, 0x0a, + 0x5c, 0xa3, 0xd0, 0xf8, 0xc8, 0xaf, 0x42, 0x41, 0x39, 0xca, 0xa8, 0x71, 0xc5, 0xd2, 0x00, 0xfa, + 0x6a, 0xe9, 0x99, 0xd5, 0x0e, 0xec, 0xe4, 0x54, 0x39, 0x03, 0xd1, 0x93, 0x3b, 0x22, 0xec, 0x1b, + 0x17, 0x36, 0x41, 0x20, 0xff, 0xb1, 0x38, 0x45, 0x9d, 0xa3, 0xf7, 0xda, 0x8b, 0x4b, 0xa3, 0xf8, + 0x9b, 0x90, 0xc7, 0x0e, 0x1a, 0xa5, 0xf9, 0xc5, 0x89, 0x0e, 0xa3, 0x9a, 0x1c, 0x06, 0x12, 0xa7, + 0x67, 0x0d, 0x23, 0x30, 0x8b, 0x88, 0xf9, 0x2b, 0xb0, 0xac, 0x17, 0xe1, 0x41, 0x14, 0x3f, 0x94, + 0x48, 0xf2, 0x04, 0x96, 0xaf, 0xe3, 0x70, 0x0a, 0x25, 0x6b, 0xe5, 0x39, 0xf4, 0x3b, 0x1a, 0x9c, + 0xb5, 0x36, 0xb2, 0x58, 0x9a, 0xb3, 0xf1, 0x36, 0x8e, 0xa9, 0x50, 0x12, 0xa7, 0xb9, 0x39, 0x18, + 0xaa, 0x73, 0xad, 0x34, 0xdb, 0x52, 0x75, 0xfb, 0x8e, 0xd7, 0x63, 0x19, 0x3d, 0xc4, 0x38, 0x89, + 0x44, 0x12, 0x04, 0x7e, 0xc0, 0x72, 0xf5, 0x3a, 0xe4, 0x51, 0x47, 0xd1, 0x48, 0x7a, 0x62, 0x20, + 0xcd, 0x48, 0xd3, 0x73, 0xfd, 0x0a, 0xac, 0x4e, 0xed, 0xc7, 0xf5, 0x7f, 0x55, 0xd4, 0x1a, 0x82, + 0x1c, 0xe4, 0x0b, 0x1a, 0x0e, 0x72, 0xf3, 0x5e, 0xc8, 0xc6, 0xa0, 0x94, 0x71, 0x1b, 0xf3, 0x01, + 0x14, 0xb0, 0x63, 0x91, 0x89, 0x99, 0x83, 0x7d, 0x0f, 0xc9, 0x2d, 0xcd, 0x85, 0x11, 0x4c, 0xb7, + 0x2f, 0xbb, 0x27, 0xd2, 0x36, 0xb6, 0x3e, 0x02, 0x51, 0x69, 0xba, 0x29, 0xf7, 0x5c, 0x03, 0xa4, + 0x12, 0x5d, 0xdf, 0x6b, 0x0e, 0xfc, 0xcf, 0x1c, 0x9a, 0x57, 0x54, 0x89, 0x08, 0x11, 0xbd, 0x6d, + 0xa1, 0x8e, 0x98, 0x69, 0x4b, 0x10, 0xf5, 0x26, 0x14, 0xe8, 0xdb, 0xb8, 0x12, 0x74, 0x9b, 0x75, + 0xa6, 0xe1, 0x95, 0xf9, 0xda, 0x6c, 0x9a, 0x5c, 0xff, 0x51, 0x16, 0xf2, 0x08, 0xf3, 0xbb, 0x50, + 0x08, 0x30, 0x0e, 0xa3, 0xe1, 0xbc, 0x28, 0x66, 0xd3, 0x24, 0xfc, 0x23, 0xa3, 0x8a, 0xd9, 0x39, + 0x94, 0x25, 0xfe, 0x62, 0x5a, 0x2d, 0xaf, 0x42, 0x61, 0x28, 0x02, 0x31, 0x30, 0xeb, 0x44, 0x03, + 0x8d, 0x1f, 0x64, 0x20, 0x8f, 0x44, 0x7c, 0x15, 0x96, 0xda, 0x2a, 0x70, 0x4e, 0xa4, 0xea, 0x07, + 0xfe, 0xa8, 0xd7, 0xd7, 0x9a, 0xf4, 0x50, 0x9e, 0x6b, 0x7b, 0xa3, 0x0d, 0x82, 0x12, 0xae, 0xd3, + 0x65, 0x59, 0xd4, 0xaa, 0x0d, 0xdf, 0xb5, 0x59, 0x8e, 0xaf, 0x40, 0xf5, 0x91, 0x67, 0xcb, 0x20, + 0xec, 0xfa, 0x81, 0xb4, 0x59, 0xde, 0xac, 0xee, 0x13, 0x56, 0xa0, 0xbd, 0x4c, 0x9e, 0x29, 0x8a, + 0x85, 0x58, 0x91, 0x5f, 0x81, 0x95, 0x8d, 0xf1, 0x00, 0x89, 0x95, 0xd0, 0x26, 0xed, 0x49, 0x0f, + 0x95, 0x8c, 0x95, 0xb5, 0x12, 0xfb, 0x9f, 0x39, 0xac, 0x82, 0x1f, 0xd3, 0xeb, 0x84, 0x41, 0xe3, + 0xdf, 0x64, 0x22, 0xcb, 0xb1, 0x04, 0x95, 0x43, 0x11, 0x88, 0x5e, 0x20, 0x86, 0xd8, 0xbe, 0x2a, + 0x94, 0xf4, 0xc6, 0xf9, 0x86, 0xb6, 0x6e, 0x1a, 0xb8, 0xaf, 0x6d, 0xa3, 0x06, 0xde, 0x64, 0xb9, + 0x04, 0x78, 0x8b, 0xe5, 0xf1, 0x1b, 0x9f, 0x8c, 0x7c, 0x25, 0x59, 0x81, 0x6c, 0x9d, 0x6f, 0x4b, + 0x56, 0x44, 0x64, 0x07, 0x2d, 0x0a, 0x2b, 0x61, 0x9f, 0x37, 0x51, 0x7f, 0x8e, 0xfc, 0x33, 0x56, + 0xc6, 0x66, 0xe0, 0x30, 0x4a, 0x9b, 0x55, 0xf0, 0xcd, 0xfe, 0x68, 0x70, 0x24, 0xb1, 0x9b, 0x80, + 0x6f, 0x3a, 0x7e, 0xaf, 0xe7, 0x4a, 0x56, 0xc5, 0x31, 0x48, 0x19, 0x5f, 0xb6, 0x48, 0x96, 0x56, + 0xb8, 0xae, 0x3f, 0x52, 0x6c, 0xa9, 0xfe, 0x27, 0x39, 0xc8, 0x63, 0x74, 0x83, 0x6b, 0xa7, 0x8f, + 0x76, 0xc6, 0xac, 0x1d, 0x7c, 0x8e, 0x57, 0x60, 0x36, 0x59, 0x81, 0xfc, 0x7d, 0x33, 0xd3, 0xb9, + 0x39, 0xac, 0x2c, 0x0a, 0x4e, 0x4f, 0x32, 0x87, 0xfc, 0xc0, 0x19, 0x48, 0x63, 0xeb, 0xe8, 0x19, + 0x71, 0x21, 0xee, 0xc7, 0x05, 0x4a, 0x9e, 0xd0, 0x33, 0xae, 0x1a, 0x81, 0xdb, 0xc2, 0xba, 0xa2, + 0x35, 0x90, 0xb3, 0x22, 0x70, 0x86, 0xf5, 0xaa, 0xcc, 0xb4, 0x5e, 0x1f, 0x44, 0xd6, 0xab, 0x34, + 0xc7, 0xaa, 0xa7, 0x66, 0xa6, 0x2d, 0x57, 0x62, 0x34, 0xca, 0xf3, 0xb3, 0xa7, 0x36, 0x93, 0x2d, + 0xa3, 0xb5, 0xc9, 0x46, 0x57, 0xd6, 0xa3, 0xcc, 0x32, 0x38, 0x9b, 0xb4, 0x5c, 0xb5, 0xcd, 0x7b, + 0xec, 0xd8, 0xd2, 0x67, 0x39, 0xda, 0x08, 0x47, 0xb6, 0xe3, 0xb3, 0x3c, 0x7a, 0x5e, 0x87, 0x5b, + 0xdb, 0xac, 0xd0, 0x78, 0x25, 0xb5, 0x25, 0xad, 0x8f, 0x94, 0xaf, 0xc5, 0x90, 0xfa, 0x66, 0xb4, + 0x36, 0x1e, 0x49, 0x9b, 0x65, 0x1b, 0xef, 0xcc, 0x30, 0xb3, 0x4b, 0x50, 0x79, 0x34, 0x74, 0x7d, + 0x61, 0x5f, 0x62, 0x67, 0x17, 0x01, 0x92, 0xa8, 0xba, 0xfe, 0x87, 0xbf, 0x98, 0x6c, 0xe7, 0xe8, + 0x8b, 0x86, 0xfe, 0x28, 0xe8, 0x4a, 0x32, 0x21, 0x15, 0xcb, 0x40, 0xfc, 0xdb, 0x50, 0xc0, 0xf7, + 0x51, 0x1a, 0xe7, 0xee, 0x5c, 0xb1, 0xdc, 0xda, 0x63, 0x47, 0x3e, 0xb3, 0x34, 0x23, 0xbf, 0x05, + 0x20, 0xba, 0xca, 0x39, 0x95, 0x88, 0x34, 0x8b, 0x3d, 0x85, 0xe1, 0x6f, 0xa7, 0xdd, 0x97, 0xcb, + 0xf3, 0x90, 0x29, 0xbf, 0x86, 0x5b, 0x50, 0xc5, 0xa5, 0x3b, 0x3c, 0x08, 0x70, 0xb5, 0xd7, 0x16, + 0x89, 0xf1, 0xf5, 0xf9, 0x9a, 0xf7, 0x20, 0x66, 0xb4, 0xd2, 0x42, 0xf8, 0x23, 0x58, 0xd4, 0x39, + 0x35, 0x23, 0x74, 0x89, 0x84, 0xbe, 0x31, 0x9f, 0xd0, 0x83, 0x84, 0xd3, 0x1a, 0x13, 0x33, 0x9d, + 0x96, 0x2c, 0xbc, 0x70, 0x5a, 0xf2, 0x15, 0x58, 0xee, 0x8c, 0xaf, 0x02, 0xbd, 0x55, 0x4c, 0x60, + 0x79, 0x03, 0x16, 0x9d, 0x30, 0xc9, 0x8a, 0x52, 0x8e, 0xa4, 0x6c, 0x8d, 0xe1, 0xea, 0xff, 0xb1, + 0x08, 0x79, 0x1a, 0xf9, 0xc9, 0x1c, 0xd7, 0xe6, 0x98, 0x49, 0xbf, 0x37, 0xff, 0x54, 0x4f, 0xac, + 0x78, 0xb2, 0x20, 0xb9, 0x94, 0x05, 0xf9, 0x36, 0x14, 0x42, 0x3f, 0x50, 0xd1, 0xf4, 0xce, 0xa9, + 0x44, 0x6d, 0x3f, 0x50, 0x96, 0x66, 0xe4, 0xdb, 0x50, 0x3a, 0x76, 0x5c, 0x85, 0x93, 0xa2, 0x07, + 0xef, 0xb5, 0xf9, 0x64, 0x6c, 0x13, 0x93, 0x15, 0x31, 0xf3, 0xdd, 0xb4, 0xb2, 0x15, 0x49, 0xd2, + 0xda, 0x7c, 0x92, 0x66, 0xe9, 0xe0, 0x5d, 0x60, 0x5d, 0xff, 0x54, 0x06, 0x56, 0x2a, 0x31, 0xa9, + 0x37, 0xe9, 0x29, 0x3c, 0xaf, 0x43, 0xb9, 0xef, 0xd8, 0x12, 0xfd, 0x1c, 0xb2, 0x31, 0x65, 0x2b, + 0x86, 0xf9, 0x43, 0x28, 0x53, 0x7c, 0x80, 0x56, 0xb1, 0xf2, 0xc2, 0x83, 0xaf, 0x43, 0x95, 0x48, + 0x00, 0x7e, 0x88, 0x3e, 0xbe, 0xed, 0x28, 0xca, 0x4f, 0x97, 0xad, 0x18, 0xc6, 0x06, 0x93, 0xbe, + 0xa7, 0x1b, 0x5c, 0xd5, 0x0d, 0x9e, 0xc4, 0xf3, 0xb7, 0xe0, 0x1a, 0xe1, 0x26, 0x36, 0x49, 0x5c, + 0x6a, 0x28, 0x74, 0xf6, 0x4b, 0x74, 0x58, 0x86, 0xa2, 0x27, 0x77, 0x9d, 0x81, 0xa3, 0x6a, 0x4b, + 0xb7, 0x33, 0x77, 0x0a, 0x56, 0x82, 0xe0, 0xaf, 0xc1, 0xaa, 0x2d, 0x8f, 0xc5, 0xc8, 0x55, 0x1d, + 0x39, 0x18, 0xba, 0x42, 0xc9, 0x96, 0x4d, 0x3a, 0x5a, 0xb1, 0xa6, 0x5f, 0xf0, 0xd7, 0xe1, 0x8a, + 0x41, 0x1e, 0xc4, 0xa7, 0x0a, 0x2d, 0x9b, 0xd2, 0x77, 0x15, 0x6b, 0xd6, 0xab, 0xc6, 0x9e, 0x31, + 0xc3, 0xb8, 0x81, 0x62, 0x9c, 0x1a, 0x19, 0xd0, 0x50, 0xe9, 0x1d, 0xf9, 0x81, 0x70, 0x5d, 0x19, + 0x9c, 0xeb, 0x20, 0xf7, 0xa1, 0xf0, 0x8e, 0x84, 0xc7, 0x72, 0xb4, 0xc7, 0x0a, 0x57, 0x7a, 0xb6, + 0x08, 0xf4, 0x8e, 0xfc, 0x80, 0x36, 0xf4, 0x42, 0xe3, 0x0e, 0xe4, 0x69, 0x48, 0x2b, 0x50, 0xd0, + 0x51, 0x12, 0x45, 0xcc, 0x26, 0x42, 0x22, 0x8b, 0xbc, 0x8b, 0xcb, 0x8f, 0x65, 0xeb, 0x3f, 0xc9, + 0x41, 0x39, 0x1a, 0xbc, 0xe8, 0x0c, 0x21, 0x93, 0x9c, 0x21, 0xa0, 0x1b, 0x17, 0x3e, 0x76, 0x42, + 0xe7, 0xc8, 0xb8, 0xa5, 0x65, 0x2b, 0x41, 0xa0, 0x27, 0xf4, 0xcc, 0xb1, 0x55, 0x9f, 0xd6, 0x4c, + 0xc1, 0xd2, 0x00, 0xbf, 0x03, 0x2b, 0x36, 0x8e, 0x83, 0xd7, 0x75, 0x47, 0xb6, 0xec, 0xe0, 0x2e, + 0xaa, 0xd3, 0x04, 0x93, 0x68, 0xfe, 0x5d, 0x00, 0xe5, 0x0c, 0xe4, 0xb6, 0x1f, 0x0c, 0x84, 0x32, + 0xb1, 0xc1, 0x37, 0x5f, 0x4c, 0xab, 0xd7, 0x3a, 0xb1, 0x00, 0x2b, 0x25, 0x0c, 0x45, 0xe3, 0xd7, + 0x8c, 0xe8, 0xd2, 0x17, 0x12, 0xbd, 0x15, 0x0b, 0xb0, 0x52, 0xc2, 0x1a, 0xbf, 0x0c, 0x90, 0xbc, + 0xe1, 0xd7, 0x81, 0xef, 0xf9, 0x9e, 0xea, 0xaf, 0x1f, 0x1d, 0x05, 0x1b, 0xf2, 0xd8, 0x0f, 0xe4, + 0x96, 0xc0, 0x6d, 0xed, 0x1a, 0xac, 0xc6, 0xf8, 0xf5, 0x63, 0x25, 0x03, 0x44, 0xd3, 0xd0, 0xb7, + 0xfb, 0x7e, 0xa0, 0xb4, 0x6f, 0x45, 0x8f, 0x8f, 0xda, 0x2c, 0x87, 0x5b, 0x69, 0xab, 0x7d, 0xc0, + 0xf2, 0x8d, 0x3b, 0x00, 0x49, 0x97, 0x28, 0x06, 0xa1, 0xa7, 0x37, 0xee, 0x9b, 0x88, 0x84, 0xa0, + 0xfb, 0x6f, 0xb1, 0x4c, 0xfd, 0x0f, 0x72, 0x90, 0x47, 0x53, 0x83, 0xe1, 0x57, 0x7a, 0x5d, 0xe8, + 0xe9, 0x4b, 0xa3, 0xbe, 0x98, 0x81, 0x44, 0xd9, 0x69, 0x03, 0xf9, 0x1e, 0x54, 0xbb, 0xa3, 0x50, + 0xf9, 0x03, 0xda, 0x1d, 0xcc, 0x01, 0xcc, 0xf5, 0xa9, 0x44, 0xc6, 0x63, 0xe1, 0x8e, 0xa4, 0x95, + 0x26, 0xe5, 0x6f, 0x43, 0xf1, 0x58, 0x4f, 0x84, 0x4e, 0x65, 0xfc, 0xc2, 0x05, 0x1b, 0x88, 0x19, + 0x6c, 0x43, 0x8c, 0xfd, 0x72, 0xa6, 0x94, 0x28, 0x8d, 0x32, 0x1b, 0x41, 0x31, 0xde, 0x08, 0x7e, + 0x19, 0x96, 0x25, 0xba, 0x15, 0x87, 0xae, 0xe8, 0xca, 0x81, 0xf4, 0xa2, 0x99, 0x7f, 0xeb, 0x05, + 0x7a, 0x4c, 0x7e, 0x09, 0x75, 0x7b, 0x42, 0x56, 0xe3, 0xab, 0x66, 0x91, 0x96, 0x20, 0xb7, 0x1e, + 0x76, 0x4d, 0xd8, 0x2d, 0xc3, 0xae, 0xf6, 0xe9, 0x37, 0xa9, 0xc3, 0x2c, 0xdb, 0x78, 0x03, 0x2a, + 0xb1, 0x0c, 0xce, 0x60, 0x71, 0xdf, 0x57, 0xed, 0xa1, 0xec, 0x3a, 0xc7, 0x8e, 0xb4, 0x75, 0x22, + 0xa1, 0xad, 0x44, 0xa0, 0x74, 0xe6, 0xaa, 0xe9, 0xd9, 0x2c, 0x5b, 0xff, 0xdd, 0x32, 0x14, 0xb5, + 0xc5, 0x37, 0x5d, 0xaa, 0xc4, 0x5d, 0xfa, 0x04, 0xca, 0xfe, 0x50, 0x06, 0x42, 0xf9, 0x81, 0x49, + 0x17, 0xbc, 0xfd, 0x22, 0x3b, 0xc8, 0xda, 0x81, 0x61, 0xb6, 0x62, 0x31, 0x93, 0xfa, 0x92, 0x9d, + 0xd6, 0x97, 0xbb, 0xc0, 0xa2, 0xcd, 0xe2, 0x30, 0x40, 0x3e, 0x75, 0x6e, 0x82, 0xbf, 0x29, 0x3c, + 0xef, 0x40, 0xa5, 0xeb, 0x7b, 0xb6, 0x13, 0xa7, 0x0e, 0x96, 0xef, 0xbf, 0xf3, 0x42, 0x2d, 0xdc, + 0x8c, 0xb8, 0xad, 0x44, 0x10, 0x7f, 0x0d, 0x0a, 0xa7, 0xa8, 0x48, 0xa4, 0x31, 0x17, 0xab, 0x99, + 0x26, 0xe2, 0x9f, 0x42, 0xf5, 0x7b, 0x23, 0xa7, 0x7b, 0x72, 0x90, 0x4e, 0x4d, 0xbd, 0xf7, 0x42, + 0xad, 0xf8, 0x24, 0xe1, 0xb7, 0xd2, 0xc2, 0x52, 0xca, 0x5b, 0xfa, 0x53, 0x28, 0x6f, 0x79, 0x5a, + 0x79, 0x2d, 0x58, 0xf2, 0x64, 0xa8, 0xa4, 0xbd, 0x6d, 0x1c, 0x04, 0xf8, 0x02, 0x0e, 0xc2, 0xb8, + 0x88, 0xc6, 0x57, 0xa0, 0x1c, 0x4d, 0x38, 0x2f, 0x42, 0x76, 0x1f, 0x3d, 0xf1, 0x22, 0x64, 0x0f, + 0x02, 0xad, 0x6d, 0xeb, 0xa8, 0x6d, 0x8d, 0x3f, 0xca, 0x40, 0x25, 0x1e, 0xf4, 0xf1, 0x14, 0x57, + 0xf3, 0x7b, 0x23, 0xe1, 0xb2, 0x0c, 0xc5, 0x68, 0xbe, 0xd2, 0x10, 0x59, 0xaa, 0x07, 0x74, 0x42, + 0x1c, 0xb0, 0x1c, 0xed, 0x4b, 0x32, 0x0c, 0x59, 0x9e, 0x73, 0x58, 0x36, 0xe8, 0x83, 0x40, 0x93, + 0x16, 0x30, 0x84, 0xc3, 0xb7, 0x11, 0xa2, 0xa8, 0xb7, 0xb1, 0x13, 0xa9, 0x43, 0xd4, 0x7d, 0x5f, + 0x11, 0x50, 0xc6, 0x46, 0xb5, 0x3c, 0x56, 0xc1, 0x6f, 0xee, 0xfb, 0xaa, 0xe5, 0x31, 0x48, 0x62, + 0x82, 0x6a, 0xf4, 0x79, 0x82, 0x16, 0x29, 0xe2, 0x70, 0xdd, 0x96, 0xc7, 0x96, 0xcc, 0x0b, 0x0d, + 0x2d, 0xa3, 0xc4, 0xe6, 0x99, 0xe8, 0x22, 0xfb, 0x0a, 0x5f, 0x06, 0x40, 0x1e, 0x03, 0x33, 0x5c, + 0x92, 0xcd, 0x33, 0x27, 0x54, 0x21, 0x5b, 0x6d, 0xfc, 0x87, 0x0c, 0x54, 0x53, 0x13, 0x8c, 0x31, + 0x07, 0x11, 0xa2, 0x1d, 0xd7, 0x21, 0xc8, 0x77, 0x71, 0x18, 0x03, 0x3b, 0xb2, 0xd1, 0x1d, 0x1f, + 0x1f, 0xb3, 0xf8, 0xbd, 0x8e, 0x3f, 0xf0, 0x83, 0xc0, 0x7f, 0xa6, 0xf7, 0xdb, 0x5d, 0x11, 0xaa, + 0x27, 0x52, 0x9e, 0xb0, 0x3c, 0x76, 0x75, 0x73, 0x14, 0x04, 0xd2, 0xd3, 0x88, 0x02, 0x35, 0x4e, + 0x9e, 0x69, 0xa8, 0x88, 0x42, 0x91, 0x98, 0x36, 0x01, 0x56, 0x42, 0x43, 0x60, 0xa8, 0x35, 0xa6, + 0x8c, 0x04, 0x48, 0xae, 0xc1, 0x0a, 0x86, 0xf5, 0x3a, 0x2c, 0x3e, 0x38, 0xde, 0x12, 0xe7, 0xe1, + 0x7a, 0xcf, 0x67, 0x30, 0x89, 0xdc, 0xf7, 0x9f, 0xb1, 0x6a, 0x7d, 0x04, 0x90, 0x04, 0x02, 0x18, + 0x00, 0xa1, 0x42, 0xc4, 0x89, 0x6b, 0x03, 0xf1, 0x03, 0x00, 0x7c, 0x22, 0xca, 0x28, 0x0a, 0x7a, + 0x01, 0xef, 0x8c, 0xf8, 0xac, 0x94, 0x88, 0xfa, 0x5f, 0x85, 0x4a, 0xfc, 0x02, 0xe3, 0x5e, 0xf2, + 0xa3, 0xe2, 0xcf, 0x46, 0x20, 0x3a, 0x05, 0x8e, 0x67, 0xcb, 0x33, 0xb2, 0x2b, 0x05, 0x4b, 0x03, + 0xd8, 0xca, 0xbe, 0x63, 0xdb, 0xd2, 0x8b, 0x8e, 0x17, 0x34, 0x34, 0xeb, 0x10, 0x38, 0x3f, 0xf3, + 0x10, 0xb8, 0xfe, 0x2b, 0x50, 0x4d, 0x45, 0x2a, 0x17, 0x76, 0x3b, 0xd5, 0xb0, 0xec, 0x78, 0xc3, + 0x6e, 0x42, 0x25, 0x2a, 0x3c, 0x08, 0x69, 0xf7, 0xaa, 0x58, 0x09, 0xa2, 0xfe, 0x2f, 0xb3, 0xe8, + 0x3e, 0x61, 0xd7, 0x26, 0xa3, 0x8b, 0x6d, 0x28, 0x62, 0xa8, 0x3d, 0x8a, 0x4e, 0xd0, 0xe7, 0x5c, + 0xa0, 0x6d, 0xe2, 0xd9, 0x59, 0xb0, 0x0c, 0x37, 0xff, 0x00, 0x72, 0x4a, 0xf4, 0x4c, 0x76, 0xee, + 0x6b, 0xf3, 0x09, 0xe9, 0x88, 0xde, 0xce, 0x82, 0x85, 0x7c, 0x7c, 0x17, 0xca, 0x5d, 0x93, 0x50, + 0x31, 0x46, 0x71, 0xce, 0x00, 0x20, 0x4a, 0xc3, 0xec, 0x2c, 0x58, 0xb1, 0x04, 0xfe, 0x6d, 0xc8, + 0xa3, 0x4b, 0x63, 0x0a, 0x0d, 0xe6, 0x0c, 0x6c, 0x70, 0xb9, 0xec, 0x2c, 0x58, 0xc4, 0xb9, 0x51, + 0x82, 0x02, 0xd9, 0xe0, 0x7a, 0x0d, 0x8a, 0xba, 0xaf, 0x93, 0x23, 0x57, 0xbf, 0x01, 0xb9, 0x8e, + 0xe8, 0xa1, 0x5b, 0xe9, 0xd8, 0xa1, 0x89, 0xcf, 0xf1, 0xb1, 0xfe, 0x72, 0x92, 0x1c, 0x4a, 0xe7, + 0x1d, 0x33, 0x63, 0x79, 0xc7, 0x7a, 0x11, 0xf2, 0xf8, 0xc5, 0xfa, 0xcd, 0xcb, 0x5c, 0xd4, 0xfa, + 0x3f, 0xc9, 0xa1, 0x37, 0xab, 0xe4, 0xd9, 0xcc, 0x9c, 0xea, 0xc7, 0x50, 0x19, 0x06, 0x7e, 0x57, + 0x86, 0xa1, 0x1f, 0x18, 0xf7, 0xe7, 0xb5, 0xe7, 0x9f, 0x77, 0xae, 0x1d, 0x46, 0x3c, 0x56, 0xc2, + 0xde, 0xf8, 0xb7, 0x59, 0xa8, 0xc4, 0x2f, 0xb4, 0x13, 0xad, 0xe4, 0x99, 0xce, 0x9f, 0xed, 0xc9, + 0x60, 0x20, 0x1c, 0x5b, 0x5b, 0x8f, 0xcd, 0xbe, 0x88, 0x3c, 0xbc, 0xef, 0xfa, 0x23, 0x35, 0x3a, + 0x92, 0x3a, 0x6f, 0xf2, 0xd8, 0x19, 0x48, 0x9f, 0xe5, 0xe9, 0xc4, 0x02, 0x15, 0xbb, 0xeb, 0xfa, + 0x23, 0x9b, 0x15, 0x10, 0x7e, 0x40, 0xdb, 0xdb, 0x9e, 0x18, 0x86, 0xda, 0x66, 0xee, 0x39, 0x81, + 0xcf, 0x4a, 0xc8, 0xb4, 0xed, 0xf4, 0x06, 0x82, 0x95, 0x51, 0x58, 0xe7, 0x99, 0xa3, 0xd0, 0x08, + 0x57, 0xf8, 0x2a, 0x2c, 0x1d, 0x0c, 0xa5, 0xd7, 0x56, 0x81, 0x94, 0x6a, 0x4f, 0x0c, 0x75, 0x22, + 0xcd, 0x92, 0xb6, 0xed, 0x28, 0x6d, 0x3f, 0xb7, 0x45, 0x57, 0x1e, 0xf9, 0xfe, 0x09, 0x5b, 0x44, + 0x43, 0xd3, 0xf2, 0x42, 0x25, 0x7a, 0x81, 0x18, 0x68, 0x1b, 0xda, 0x91, 0xae, 0x24, 0x68, 0x99, + 0xbe, 0xed, 0xa8, 0xfe, 0xe8, 0xe8, 0x01, 0x06, 0x1b, 0x2b, 0xfa, 0x70, 0xc3, 0x96, 0x43, 0x89, + 0x36, 0x74, 0x11, 0xca, 0x1b, 0x8e, 0xeb, 0x1c, 0x39, 0xae, 0xc3, 0x56, 0x91, 0xb4, 0x79, 0xd6, + 0x15, 0xae, 0x63, 0x07, 0xe2, 0x19, 0xe3, 0xd8, 0xb8, 0x87, 0x81, 0x7f, 0xe2, 0xb0, 0x2b, 0x48, + 0x48, 0xb1, 0xc7, 0xa9, 0xf3, 0x39, 0xbb, 0x4a, 0x07, 0x34, 0x27, 0x52, 0x75, 0xfb, 0xc7, 0xe2, + 0x88, 0x5d, 0x4b, 0xf2, 0x48, 0xd7, 0xeb, 0xab, 0xb0, 0x32, 0x71, 0x14, 0x5c, 0x2f, 0x99, 0x90, + 0xa7, 0xbe, 0x04, 0xd5, 0xd4, 0x19, 0x5d, 0xfd, 0x15, 0x28, 0x47, 0x27, 0x78, 0x18, 0x1a, 0x3a, + 0xa1, 0xce, 0x3d, 0x1a, 0x25, 0x89, 0xe1, 0xfa, 0xef, 0x65, 0xa0, 0xa8, 0x8f, 0x4f, 0xf9, 0x46, + 0x5c, 0xee, 0x90, 0x99, 0xe3, 0xc8, 0x4c, 0x33, 0x99, 0x03, 0xc7, 0xb8, 0xe6, 0xe1, 0x2a, 0x14, + 0x5c, 0x8a, 0x01, 0x8d, 0xf9, 0x22, 0x20, 0x65, 0x6d, 0x72, 0x69, 0x6b, 0xd3, 0x58, 0x8f, 0x0f, + 0x39, 0xa3, 0x7c, 0x17, 0x79, 0x85, 0x9d, 0x40, 0x4a, 0x9d, 0xcb, 0xa2, 0x10, 0x2e, 0x4b, 0x7b, + 0x85, 0x3f, 0x18, 0x8a, 0xae, 0x22, 0x04, 0xed, 0xa2, 0x68, 0x4c, 0x59, 0x1e, 0xb5, 0x7c, 0xb3, + 0x2f, 0x54, 0xe3, 0x18, 0xca, 0x87, 0x7e, 0x38, 0xb9, 0x27, 0x97, 0x20, 0xd7, 0xf1, 0x87, 0xda, + 0xc3, 0xdc, 0xf0, 0x15, 0x79, 0x98, 0x7a, 0x0b, 0x3e, 0x56, 0x5a, 0xa9, 0x2c, 0xa7, 0xd7, 0x57, + 0x3a, 0xfc, 0x6b, 0x79, 0x9e, 0x0c, 0x58, 0x01, 0xe7, 0xd0, 0x92, 0x43, 0xf4, 0x5b, 0x59, 0x11, + 0x67, 0x8d, 0xf0, 0xdb, 0x4e, 0x10, 0x2a, 0x56, 0x6a, 0xb4, 0x70, 0x37, 0x75, 0x7a, 0xb4, 0x09, + 0xd2, 0x03, 0x89, 0x5a, 0xc0, 0x26, 0x12, 0xb8, 0x29, 0x3d, 0xd4, 0x31, 0x3a, 0x57, 0xd3, 0x15, + 0x31, 0xf4, 0x81, 0x2c, 0xee, 0x60, 0x04, 0x7f, 0x3c, 0x0a, 0x95, 0x73, 0x7c, 0xce, 0x72, 0x8d, + 0x27, 0xb0, 0x34, 0x56, 0x3b, 0xc3, 0xaf, 0x02, 0x1b, 0x43, 0x60, 0xd3, 0x17, 0xf8, 0x0d, 0xb8, + 0x32, 0x86, 0xdd, 0x73, 0x6c, 0x9b, 0x12, 0x8c, 0x93, 0x2f, 0xa2, 0x0e, 0x6e, 0x54, 0xa0, 0xd4, + 0xd5, 0xb3, 0xd4, 0x38, 0x84, 0x25, 0x9a, 0xb6, 0x3d, 0xa9, 0xc4, 0x81, 0xe7, 0x9e, 0xff, 0xa9, + 0x0b, 0x9c, 0x1a, 0x5f, 0x87, 0x02, 0x1d, 0x08, 0xa0, 0xbd, 0x38, 0x0e, 0xfc, 0x01, 0xc9, 0x2a, + 0x58, 0xf4, 0x8c, 0xd2, 0x95, 0x6f, 0xe6, 0x3e, 0xab, 0xfc, 0xc6, 0x6f, 0x56, 0xa0, 0xb4, 0xde, + 0xed, 0xfa, 0x23, 0x4f, 0x4d, 0x7d, 0xf9, 0x6d, 0x28, 0x76, 0x7d, 0xef, 0xd8, 0xe9, 0x19, 0x7b, + 0x3c, 0xe9, 0x19, 0x1a, 0x3e, 0x54, 0xb8, 0x63, 0xa7, 0x67, 0x19, 0x62, 0x64, 0x33, 0xfb, 0x49, + 0xe1, 0x52, 0x36, 0x6d, 0x54, 0xe3, 0xed, 0xe3, 0x1e, 0xe4, 0x1d, 0xef, 0xd8, 0x37, 0xd5, 0x88, + 0x2f, 0x5d, 0xc0, 0x44, 0x25, 0x79, 0x44, 0x58, 0xff, 0xef, 0x19, 0x28, 0xea, 0x4f, 0xf3, 0x57, + 0x60, 0x59, 0x7a, 0xb8, 0x98, 0x22, 0x53, 0x6e, 0x56, 0xd1, 0x04, 0x16, 0x9d, 0x56, 0x83, 0x91, + 0x47, 0xa3, 0x9e, 0x09, 0xf8, 0xd3, 0x28, 0xfe, 0x1e, 0xdc, 0xd0, 0xe0, 0x61, 0x20, 0x03, 0xe9, + 0x4a, 0x11, 0xca, 0xcd, 0xbe, 0xf0, 0x3c, 0xe9, 0x9a, 0x8d, 0xfd, 0xa2, 0xd7, 0xbc, 0x01, 0x8b, + 0xfa, 0x55, 0x7b, 0x28, 0xba, 0x32, 0x34, 0x87, 0x4c, 0x63, 0x38, 0xfe, 0x0d, 0x28, 0x50, 0xb1, + 0x66, 0xcd, 0xbe, 0x7c, 0x2a, 0x35, 0x55, 0xdd, 0x8f, 0x77, 0x9e, 0x75, 0x00, 0x3d, 0x4c, 0x18, + 0x74, 0x99, 0xd5, 0xff, 0xe5, 0x4b, 0xc7, 0x95, 0x22, 0xbc, 0x14, 0x13, 0xb6, 0xcf, 0x96, 0xae, + 0xa4, 0xaa, 0x3a, 0xdc, 0x19, 0xb3, 0x94, 0xce, 0x1f, 0xc3, 0xd5, 0xff, 0x45, 0x1e, 0xf2, 0x38, + 0xc2, 0x48, 0xdc, 0xf7, 0x07, 0x32, 0x4e, 0x6a, 0x6a, 0x57, 0x63, 0x0c, 0x87, 0xae, 0x8d, 0xd0, + 0xe7, 0xca, 0x31, 0x99, 0x36, 0x1e, 0x93, 0x68, 0xa4, 0x1c, 0x06, 0xfe, 0xb1, 0xe3, 0x26, 0x94, + 0xc6, 0x09, 0x9a, 0x40, 0xf3, 0x77, 0xe0, 0xfa, 0x40, 0x04, 0x27, 0x52, 0xd1, 0xea, 0x7e, 0xe2, + 0x07, 0x27, 0x21, 0x8e, 0x5c, 0xcb, 0x36, 0xd9, 0xb0, 0x0b, 0xde, 0xf2, 0xd7, 0x60, 0xf5, 0x59, + 0x04, 0xc6, 0xdf, 0xd0, 0xf9, 0xa8, 0xe9, 0x17, 0x68, 0x6e, 0x6d, 0x79, 0xea, 0x90, 0xdc, 0xb2, + 0x2e, 0xd9, 0x8c, 0x60, 0x54, 0x25, 0xa1, 0x07, 0xb2, 0x6d, 0xbe, 0x6c, 0x8e, 0x35, 0xc6, 0xb1, + 0xe8, 0x6d, 0xe9, 0x52, 0x96, 0xb0, 0x65, 0x53, 0x3a, 0xaf, 0x62, 0x25, 0x08, 0x54, 0x34, 0xfa, + 0xe4, 0x63, 0x6d, 0x54, 0x97, 0x74, 0x08, 0x9a, 0x42, 0x21, 0x85, 0x92, 0xdd, 0x7e, 0xf4, 0x11, + 0x9d, 0x6b, 0x4b, 0xa3, 0xf8, 0x2d, 0x80, 0x9e, 0x50, 0xf2, 0x99, 0x38, 0x7f, 0x14, 0xb8, 0x35, + 0xa9, 0xf3, 0xf3, 0x09, 0x06, 0x83, 0x58, 0xd7, 0xef, 0x0a, 0xb7, 0xad, 0xfc, 0x40, 0xf4, 0xe4, + 0xa1, 0x50, 0xfd, 0x5a, 0x4f, 0x07, 0xb1, 0x93, 0x78, 0xec, 0xb1, 0x72, 0x06, 0xf2, 0x53, 0xdf, + 0x93, 0xb5, 0xbe, 0xee, 0x71, 0x04, 0x63, 0x4b, 0x84, 0x27, 0xdc, 0x73, 0xe5, 0x74, 0xb1, 0x2f, + 0x8e, 0x6e, 0x49, 0x0a, 0x85, 0x7d, 0xf5, 0xa4, 0xc2, 0x71, 0x6c, 0xd9, 0xb5, 0xcf, 0x74, 0x5f, + 0x63, 0x44, 0xe3, 0x00, 0x20, 0x51, 0x39, 0xb4, 0xe3, 0xeb, 0x74, 0x86, 0xc0, 0x16, 0xd0, 0xbb, + 0x3f, 0x94, 0x9e, 0xed, 0x78, 0xbd, 0x2d, 0xa3, 0x65, 0x2c, 0x83, 0x48, 0xca, 0x0f, 0x48, 0x3b, + 0x46, 0x92, 0x27, 0x41, 0x90, 0xb4, 0x59, 0xae, 0xf1, 0x7f, 0x33, 0x50, 0x4d, 0x1d, 0x99, 0xff, + 0x19, 0x1e, 0xf3, 0xe3, 0x3e, 0x8b, 0x3b, 0x35, 0x0e, 0xa8, 0xd6, 0xc0, 0x18, 0xc6, 0xe1, 0x36, + 0x27, 0xfa, 0xf8, 0x56, 0x67, 0x03, 0x52, 0x98, 0x2f, 0x74, 0xc4, 0xdf, 0xb8, 0x6f, 0x52, 0x2a, + 0x55, 0x28, 0x3d, 0xf2, 0x4e, 0x3c, 0xff, 0x99, 0xa7, 0x37, 0x50, 0xaa, 0xdb, 0x18, 0x3b, 0x81, + 0x8a, 0x4a, 0x2b, 0x72, 0x8d, 0x7f, 0x9a, 0x9f, 0x28, 0x71, 0x6a, 0x42, 0x51, 0xfb, 0xf1, 0xe4, + 0x62, 0x4e, 0xd7, 0xa4, 0xa4, 0x89, 0xcd, 0x69, 0x47, 0x0a, 0x65, 0x19, 0x66, 0x74, 0xb0, 0xe3, + 0x02, 0xc0, 0xec, 0xcc, 0x53, 0x99, 0x31, 0x41, 0x91, 0xd1, 0x1c, 0xab, 0x81, 0x8d, 0x25, 0xd4, + 0xff, 0x76, 0x06, 0xae, 0xce, 0x22, 0x49, 0x57, 0x0a, 0x67, 0xc6, 0x2b, 0x85, 0xdb, 0x13, 0x95, + 0xb7, 0x59, 0xea, 0xcd, 0xbd, 0x17, 0x6c, 0xc4, 0x78, 0x1d, 0x6e, 0xe3, 0x47, 0x19, 0x58, 0x9d, + 0xea, 0x73, 0xca, 0xc1, 0x00, 0x28, 0x6a, 0xcd, 0xd2, 0x85, 0x31, 0x71, 0xa9, 0x82, 0x4e, 0x35, + 0xd3, 0xd6, 0x1b, 0xea, 0xb3, 0x5f, 0x53, 0x6b, 0xac, 0xfd, 0x57, 0x9c, 0x35, 0xb4, 0xec, 0x3d, + 0xc9, 0x0a, 0xe8, 0x19, 0x68, 0x2f, 0xc8, 0x60, 0x8a, 0xda, 0xc7, 0xd4, 0xf9, 0x70, 0x56, 0xa2, + 0x82, 0x9b, 0xd1, 0xd0, 0x75, 0xba, 0x08, 0x96, 0x79, 0x1d, 0xae, 0xeb, 0x82, 0x73, 0x13, 0xcf, + 0x1d, 0x77, 0xfa, 0x0e, 0x2d, 0x0e, 0x56, 0x69, 0x58, 0x70, 0x65, 0x46, 0x9f, 0xa8, 0x95, 0x8f, + 0x4d, 0x8b, 0x97, 0x01, 0xb6, 0x1e, 0x47, 0xed, 0x64, 0x19, 0xce, 0x61, 0x79, 0xeb, 0x71, 0x5a, + 0xa0, 0x59, 0x2f, 0x8f, 0xd1, 0x92, 0x84, 0x2c, 0xd7, 0xf8, 0xb5, 0x4c, 0x74, 0x08, 0x5e, 0xff, + 0x2b, 0xb0, 0xa4, 0xdb, 0x78, 0x28, 0xce, 0x5d, 0x5f, 0xd8, 0xbc, 0x09, 0xcb, 0x61, 0x7c, 0x0b, + 0x22, 0xb5, 0x79, 0x4c, 0x6e, 0xca, 0xed, 0x31, 0x22, 0x6b, 0x82, 0x29, 0x0a, 0x4b, 0xb2, 0x49, + 0xe6, 0x9c, 0x53, 0x80, 0x25, 0x68, 0x95, 0x2d, 0x52, 0xc8, 0x24, 0x1a, 0xdf, 0x80, 0xd5, 0x76, + 0x62, 0x68, 0xb5, 0xff, 0x8a, 0xfa, 0xa0, 0xad, 0xf4, 0x56, 0xa4, 0x0f, 0x06, 0x6c, 0xfc, 0xe7, + 0x22, 0x40, 0x72, 0x4a, 0x30, 0x63, 0x99, 0xcf, 0x3a, 0xf4, 0x9e, 0x3a, 0xb3, 0xcb, 0xbd, 0xf0, + 0x99, 0xdd, 0x7b, 0xb1, 0x1b, 0xad, 0xd3, 0xb5, 0x93, 0x95, 0xbf, 0x49, 0x9b, 0x26, 0x9d, 0xe7, + 0xb1, 0x9a, 0x90, 0xc2, 0x64, 0x4d, 0xc8, 0xed, 0xe9, 0x02, 0xb2, 0x09, 0xfb, 0x93, 0x64, 0x09, + 0x4a, 0x63, 0x59, 0x82, 0x3a, 0x94, 0x03, 0x29, 0x6c, 0xdf, 0x73, 0xcf, 0xa3, 0xa3, 0xa1, 0x08, + 0xe6, 0x6f, 0x42, 0x41, 0xd1, 0x45, 0x8e, 0x32, 0x2d, 0x97, 0xe7, 0x4c, 0x9c, 0xa6, 0x45, 0x63, + 0xe6, 0x84, 0xa6, 0xea, 0x4b, 0xef, 0x60, 0x65, 0x2b, 0x85, 0xe1, 0x6b, 0xc0, 0x1d, 0x0c, 0x99, + 0x5c, 0x57, 0xda, 0x1b, 0xe7, 0x5b, 0xfa, 0xc4, 0x86, 0xf6, 0xd8, 0xb2, 0x35, 0xe3, 0x4d, 0x34, + 0xff, 0x8b, 0xc9, 0xfc, 0x53, 0x93, 0x4f, 0x9d, 0x10, 0x7b, 0xba, 0x44, 0xae, 0x44, 0x0c, 0xe3, + 0x2e, 0x1e, 0xad, 0x51, 0x3d, 0x96, 0xa4, 0xbd, 0xc9, 0xb1, 0xe7, 0x05, 0x6f, 0x1b, 0xbf, 0x9f, + 0x8d, 0xc3, 0x8d, 0x0a, 0x14, 0x8e, 0x44, 0xe8, 0x74, 0x75, 0xf4, 0x69, 0xdc, 0x04, 0x1d, 0x72, + 0x28, 0xdf, 0xf6, 0x59, 0x16, 0x23, 0x87, 0x50, 0x62, 0x8c, 0xb0, 0x0c, 0x90, 0x5c, 0x6e, 0x61, + 0x79, 0x5c, 0x9b, 0xd1, 0x7c, 0xeb, 0xe2, 0x0d, 0x62, 0xa5, 0x84, 0x95, 0x1d, 0x97, 0xc5, 0x51, + 0xe8, 0x49, 0xb6, 0x9f, 0x95, 0x91, 0xc6, 0xf3, 0x95, 0xd4, 0xe9, 0x3a, 0xd2, 0x4e, 0x06, 0x28, + 0x26, 0xaa, 0xd6, 0x66, 0x55, 0x74, 0xe5, 0x23, 0xa1, 0x3a, 0xc7, 0x16, 0x52, 0xa0, 0xb3, 0x88, + 0xab, 0x73, 0xfc, 0x05, 0x5b, 0xc2, 0x16, 0x25, 0x77, 0x66, 0xd8, 0x32, 0x4a, 0x15, 0x54, 0x52, + 0xb0, 0x82, 0x8f, 0xa7, 0x54, 0x68, 0xc0, 0xf0, 0xab, 0x36, 0x1a, 0x8c, 0x55, 0x6c, 0x59, 0xec, + 0x1a, 0x30, 0x8e, 0x91, 0xca, 0x50, 0x60, 0xd8, 0xe0, 0x0c, 0x85, 0xa7, 0xd8, 0x15, 0xec, 0xea, + 0xd0, 0x3e, 0x66, 0x57, 0x91, 0xa5, 0xdb, 0x17, 0x8a, 0x5d, 0x43, 0x1a, 0x7c, 0xda, 0x92, 0x01, + 0xce, 0x27, 0xbb, 0x8e, 0x34, 0x4a, 0xf4, 0xd8, 0x8d, 0xc6, 0x6f, 0x27, 0x85, 0xa9, 0xaf, 0xc7, + 0x0e, 0xfd, 0x3c, 0x4a, 0x8e, 0x2e, 0xff, 0xac, 0x15, 0xd7, 0x84, 0xd5, 0x40, 0x7e, 0x6f, 0xe4, + 0x8c, 0x95, 0x6b, 0xe7, 0x2e, 0xaf, 0x07, 0x98, 0xe6, 0x68, 0x9c, 0xc2, 0x6a, 0x04, 0x3c, 0x71, + 0x54, 0x9f, 0x72, 0x2b, 0xfc, 0xcd, 0x54, 0x3d, 0x79, 0x66, 0xe6, 0x3d, 0x9c, 0x58, 0x64, 0x52, + 0x3f, 0x1e, 0xe7, 0xce, 0xb3, 0x73, 0xe4, 0xce, 0x1b, 0xff, 0xa7, 0x98, 0x4a, 0xaf, 0xe8, 0x10, + 0xc7, 0x8e, 0x43, 0x9c, 0xe9, 0x13, 0xc1, 0x24, 0x1d, 0x9e, 0x7d, 0x91, 0x74, 0xf8, 0xac, 0xd3, + 0xf5, 0xf7, 0xd1, 0xe3, 0xa6, 0xf5, 0xf3, 0x78, 0x8e, 0x54, 0xff, 0x18, 0x2d, 0xdf, 0xa0, 0xf3, + 0x3d, 0xd1, 0xd6, 0xa5, 0x1f, 0x85, 0x99, 0xb7, 0x3b, 0xd2, 0x07, 0x79, 0x86, 0xd2, 0x4a, 0x71, + 0xa5, 0xac, 0x4d, 0x71, 0x96, 0xb5, 0xc1, 0x68, 0xd3, 0xd8, 0xa1, 0x18, 0xd6, 0x27, 0x23, 0xfa, + 0x39, 0x12, 0x4f, 0x7e, 0x74, 0xd9, 0x9a, 0xc2, 0xa3, 0x17, 0x36, 0x18, 0xb9, 0xca, 0x31, 0xc9, + 0x7f, 0x0d, 0x4c, 0x5e, 0x3f, 0xab, 0x4c, 0x5f, 0x3f, 0xfb, 0x10, 0x20, 0x94, 0xb8, 0x3a, 0xb6, + 0x9c, 0xae, 0x32, 0x05, 0x22, 0xb7, 0x2e, 0xea, 0x9b, 0x39, 0xb2, 0x48, 0x71, 0x60, 0xfb, 0x07, + 0xe2, 0x6c, 0x13, 0xbd, 0x71, 0x73, 0x92, 0x1d, 0xc3, 0x93, 0x36, 0x78, 0x79, 0xda, 0x06, 0xbf, + 0x09, 0x85, 0xb0, 0xeb, 0x0f, 0x25, 0xdd, 0xa0, 0xb8, 0x78, 0x7e, 0xd7, 0xda, 0x48, 0x64, 0x69, + 0x5a, 0x4a, 0xe2, 0xa1, 0x95, 0xf2, 0x03, 0xba, 0x3b, 0x51, 0xb1, 0x22, 0x70, 0xcc, 0x0e, 0x5e, + 0x1f, 0xb7, 0x83, 0x75, 0x1b, 0x8a, 0x26, 0x21, 0x3f, 0x19, 0x5a, 0x47, 0xa9, 0xbc, 0x6c, 0x2a, + 0x95, 0x17, 0x97, 0x21, 0xe6, 0xd2, 0x65, 0x88, 0x13, 0xd7, 0xab, 0x0a, 0x53, 0xd7, 0xab, 0x1a, + 0x9f, 0x42, 0x81, 0xda, 0x8a, 0x4e, 0x84, 0x1e, 0x66, 0xed, 0x63, 0x62, 0xa7, 0x58, 0x86, 0x5f, + 0x05, 0x16, 0x4a, 0x72, 0x42, 0x64, 0x5b, 0x0c, 0x24, 0x19, 0xc9, 0x2c, 0xaf, 0xc1, 0x55, 0x4d, + 0x1b, 0x8e, 0xbf, 0x21, 0x4f, 0xc8, 0x75, 0x8e, 0x02, 0x11, 0x9c, 0xb3, 0x7c, 0xe3, 0x43, 0x3a, + 0x0b, 0x8e, 0x14, 0xaa, 0x1a, 0x5f, 0x67, 0xd3, 0x66, 0xd9, 0x36, 0xd6, 0x87, 0x8e, 0xf0, 0x4d, + 0x7c, 0xa4, 0x0b, 0x9b, 0x28, 0x00, 0xa1, 0x0c, 0xca, 0x62, 0x7a, 0x27, 0xfe, 0x33, 0x5b, 0x6f, + 0x8d, 0x8d, 0x94, 0x2b, 0x37, 0x5e, 0xa9, 0x94, 0x99, 0xb7, 0x52, 0xa9, 0xf1, 0x10, 0x56, 0xac, + 0x71, 0x9b, 0xce, 0xdf, 0x83, 0x92, 0x3f, 0x4c, 0xcb, 0x79, 0x9e, 0x5e, 0x46, 0xe4, 0x8d, 0x1f, + 0x67, 0x60, 0xb1, 0xe5, 0x29, 0x19, 0x78, 0xc2, 0xdd, 0x76, 0x45, 0x8f, 0xbf, 0x1b, 0x59, 0xa9, + 0xd9, 0xd1, 0x7a, 0x9a, 0x76, 0xdc, 0x60, 0xb9, 0x26, 0xf1, 0xcc, 0xaf, 0xc1, 0xaa, 0xb4, 0x1d, + 0xe5, 0x07, 0xda, 0x81, 0x8d, 0x0a, 0xca, 0xae, 0x02, 0xd3, 0xe8, 0x36, 0x2d, 0x89, 0x8e, 0x9e, + 0xe6, 0x1a, 0x5c, 0x1d, 0xc3, 0x46, 0xde, 0x69, 0x96, 0xdf, 0x84, 0x5a, 0xb2, 0x1b, 0x6d, 0xf9, + 0x9e, 0x6a, 0x79, 0xb6, 0x3c, 0x23, 0x57, 0x88, 0xe5, 0x1a, 0xbf, 0x51, 0x8a, 0x9c, 0xb0, 0xc7, + 0xa6, 0xdc, 0x2c, 0xf0, 0xfd, 0xe4, 0x2e, 0xa3, 0x81, 0x52, 0x77, 0x66, 0xb3, 0x73, 0xdc, 0x99, + 0xfd, 0x30, 0xb9, 0xf7, 0xa8, 0x37, 0x8a, 0x97, 0x67, 0xee, 0x3e, 0x54, 0x25, 0x63, 0xdc, 0xee, + 0xb6, 0x4c, 0x5d, 0x82, 0x7c, 0xc3, 0xc4, 0x5a, 0xf9, 0x79, 0x7c, 0x55, 0x7d, 0x7a, 0xff, 0xf6, + 0x64, 0xb1, 0xfd, 0x7c, 0xd5, 0x6a, 0x53, 0xee, 0x24, 0xbc, 0xb0, 0x3b, 0xf9, 0xd1, 0x44, 0x58, + 0x53, 0x9e, 0x99, 0xc0, 0xba, 0xe4, 0x2a, 0xe1, 0x47, 0x50, 0xea, 0x3b, 0xa1, 0xf2, 0x03, 0x7d, + 0xbd, 0x75, 0xfa, 0x3a, 0x4e, 0x6a, 0xb4, 0x76, 0x34, 0x21, 0x95, 0x16, 0x45, 0x5c, 0xfc, 0x3b, + 0xb0, 0x4a, 0x03, 0x7f, 0x98, 0x78, 0x0d, 0x61, 0xad, 0x3a, 0xb3, 0xa4, 0x2b, 0x25, 0x6a, 0x63, + 0x82, 0xc5, 0x9a, 0x16, 0x52, 0xef, 0x01, 0x24, 0xf3, 0x33, 0x65, 0xc5, 0xbe, 0xc0, 0xf5, 0xd6, + 0xeb, 0x50, 0x0c, 0x47, 0x47, 0xc9, 0x09, 0x95, 0x81, 0xea, 0x67, 0x50, 0x9f, 0xf2, 0x0e, 0x0e, + 0x65, 0xa0, 0x9b, 0x7b, 0xe9, 0x1d, 0xdb, 0x0f, 0xd3, 0x13, 0xaf, 0x95, 0xf3, 0xf6, 0x05, 0xb3, + 0x17, 0x4b, 0x4e, 0x69, 0x40, 0xfd, 0x6d, 0xa8, 0xa6, 0x06, 0x15, 0x2d, 0xf3, 0xc8, 0xb3, 0xfd, + 0x28, 0x69, 0x8a, 0xcf, 0xfa, 0x8e, 0x91, 0x1d, 0xa5, 0x4d, 0xe9, 0xb9, 0x6e, 0x01, 0x9b, 0x1c, + 0xc0, 0x4b, 0x42, 0xdf, 0x97, 0x61, 0x29, 0xe5, 0xd2, 0xc5, 0x09, 0xb5, 0x71, 0x64, 0xe3, 0x14, + 0x5e, 0x4a, 0x89, 0x3b, 0x94, 0xc1, 0xc0, 0x09, 0x71, 0x23, 0xd1, 0x21, 0x1d, 0x65, 0x2f, 0x6c, + 0xe9, 0x29, 0x47, 0x45, 0x16, 0x34, 0x86, 0xf9, 0x2f, 0x41, 0x61, 0x28, 0x83, 0x41, 0x68, 0xac, + 0xe8, 0xa4, 0x06, 0xcd, 0x14, 0x1b, 0x5a, 0x9a, 0xa7, 0xf1, 0x8f, 0x33, 0x50, 0xde, 0x93, 0x4a, + 0xa0, 0xef, 0xc0, 0xf7, 0x26, 0xbe, 0x32, 0x7d, 0xaa, 0x1a, 0x91, 0xae, 0x99, 0x20, 0x73, 0xad, + 0x65, 0xe8, 0x0d, 0xbc, 0xb3, 0x90, 0x34, 0xac, 0xbe, 0x01, 0x25, 0x83, 0xae, 0xbf, 0x0b, 0x2b, + 0x13, 0x94, 0x34, 0x2e, 0xda, 0xb7, 0x6f, 0x9f, 0x0f, 0xa2, 0xe2, 0x9e, 0x45, 0x6b, 0x1c, 0xb9, + 0x51, 0x81, 0xd2, 0x50, 0x33, 0x34, 0x7e, 0xff, 0x1a, 0x15, 0x9c, 0x38, 0xc7, 0x18, 0x6c, 0xcf, + 0xda, 0x59, 0x6f, 0x01, 0xd0, 0xd6, 0xac, 0xcb, 0x12, 0x74, 0x92, 0x33, 0x85, 0xe1, 0xef, 0xc7, + 0xd9, 0xe9, 0xfc, 0x4c, 0xa7, 0x2a, 0x2d, 0x7c, 0x32, 0x45, 0x5d, 0x83, 0x92, 0x13, 0xee, 0xe2, + 0xd6, 0x66, 0x8a, 0x75, 0x22, 0x90, 0x7f, 0x0b, 0x8a, 0xce, 0x60, 0xe8, 0x07, 0xca, 0xa4, 0xaf, + 0x2f, 0x95, 0xda, 0x22, 0xca, 0x9d, 0x05, 0xcb, 0xf0, 0x20, 0xb7, 0x3c, 0x23, 0xee, 0xf2, 0xf3, + 0xb9, 0x9b, 0x67, 0x11, 0xb7, 0xe6, 0xe1, 0x9f, 0xc0, 0x52, 0x4f, 0x97, 0xcf, 0x69, 0xc1, 0xc6, + 0x88, 0x7c, 0xed, 0x32, 0x21, 0x0f, 0xd2, 0x0c, 0x3b, 0x0b, 0xd6, 0xb8, 0x04, 0x14, 0x89, 0x0e, + 0xbc, 0x0c, 0x55, 0xc7, 0xff, 0xd8, 0x77, 0x3c, 0x0a, 0x4a, 0x9f, 0x23, 0xd2, 0x4a, 0x33, 0xa0, + 0xc8, 0x31, 0x09, 0xfc, 0x1d, 0xf4, 0x78, 0x42, 0x65, 0x6e, 0x18, 0xdf, 0xbe, 0x4c, 0x52, 0x47, + 0x86, 0xe6, 0x6e, 0x70, 0xa8, 0xf8, 0x19, 0xd4, 0x53, 0x8b, 0xc4, 0x7c, 0x64, 0x7d, 0x38, 0x0c, + 0x7c, 0x8c, 0x6c, 0x97, 0x48, 0xda, 0x3b, 0x97, 0x49, 0x3b, 0xbc, 0x90, 0x7b, 0x67, 0xc1, 0xba, + 0x44, 0x36, 0xef, 0x60, 0x64, 0x67, 0xba, 0xb0, 0x2b, 0xc5, 0x69, 0x74, 0x3f, 0xf9, 0xee, 0x5c, + 0xa3, 0x40, 0x1c, 0x3b, 0x0b, 0xd6, 0x84, 0x0c, 0xfe, 0x2b, 0xb0, 0x3a, 0xf6, 0x4d, 0xba, 0x92, + 0xa8, 0x6f, 0x2f, 0x7f, 0x63, 0xee, 0x6e, 0x20, 0xd3, 0xce, 0x82, 0x35, 0x2d, 0x89, 0x8f, 0xe0, + 0x4b, 0xd3, 0x5d, 0xda, 0x92, 0x5d, 0xd7, 0xf1, 0xa4, 0xb9, 0xe8, 0xfc, 0xf6, 0x8b, 0x8d, 0x96, + 0x61, 0xde, 0x59, 0xb0, 0x2e, 0x96, 0xcc, 0xff, 0x1a, 0xdc, 0x1c, 0xce, 0x34, 0x31, 0xda, 0x74, + 0x99, 0x7b, 0xd2, 0xef, 0xcd, 0xf9, 0xe5, 0x29, 0xfe, 0x9d, 0x05, 0xeb, 0x52, 0xf9, 0xe8, 0x3b, + 0x53, 0x04, 0x6d, 0xaa, 0x7c, 0x35, 0xc0, 0x6f, 0x42, 0x45, 0x74, 0xdd, 0x1d, 0x29, 0xec, 0x38, + 0xc3, 0x9e, 0x20, 0xea, 0x7f, 0x98, 0x81, 0xa2, 0xd1, 0xf7, 0x9b, 0xf1, 0x29, 0x7a, 0x6c, 0xba, + 0x13, 0x04, 0xff, 0x00, 0x2a, 0x32, 0x08, 0xfc, 0x60, 0xd3, 0xb7, 0xa3, 0x12, 0xc3, 0xc9, 0xf4, + 0xaf, 0x96, 0xb3, 0xd6, 0x8c, 0xc8, 0xac, 0x84, 0x83, 0xbf, 0x0f, 0xa0, 0xd7, 0x79, 0x27, 0xb9, + 0xac, 0x51, 0x9f, 0xcd, 0xaf, 0x0f, 0x6d, 0x12, 0xea, 0x24, 0x79, 0x16, 0x9d, 0x98, 0x44, 0x60, + 0x1c, 0x70, 0x16, 0x52, 0x01, 0xe7, 0x4d, 0x93, 0x47, 0xd8, 0xc7, 0x17, 0xe6, 0xca, 0x52, 0x8c, + 0xa8, 0xff, 0xbb, 0x0c, 0x14, 0xb5, 0xf1, 0xe0, 0xcd, 0xe9, 0x1e, 0xbd, 0xfa, 0x7c, 0x9b, 0xb3, + 0x36, 0xd9, 0xb3, 0x6f, 0x01, 0x68, 0x1b, 0x94, 0xea, 0xd9, 0xcd, 0x09, 0x39, 0x86, 0x35, 0xaa, + 0x33, 0x4d, 0xe8, 0x1b, 0xf7, 0xf5, 0xb5, 0x1a, 0xca, 0xd5, 0x3e, 0xda, 0xdd, 0x65, 0x0b, 0x7c, + 0x15, 0x96, 0x1e, 0xed, 0x3f, 0xdc, 0x3f, 0x78, 0xb2, 0xff, 0xb4, 0x69, 0x59, 0x07, 0x96, 0x4e, + 0xd9, 0x6e, 0xac, 0x6f, 0x3d, 0x6d, 0xed, 0x1f, 0x3e, 0xea, 0xb0, 0x6c, 0xfd, 0x27, 0x19, 0x58, + 0x1a, 0xb3, 0x5d, 0x7f, 0xbe, 0x53, 0x97, 0x1a, 0xfe, 0xdc, 0xec, 0xe1, 0xcf, 0x5f, 0x34, 0xfc, + 0x85, 0xc9, 0xe1, 0xff, 0xdd, 0x0c, 0x2c, 0x8d, 0xd9, 0xc8, 0xb4, 0xf4, 0xcc, 0xb8, 0xf4, 0xf4, + 0x4e, 0x9f, 0x9d, 0xd8, 0xe9, 0x1b, 0xb0, 0x18, 0x3d, 0xef, 0x27, 0x19, 0x87, 0x31, 0x5c, 0x9a, + 0x86, 0xea, 0xda, 0xf3, 0xe3, 0x34, 0x54, 0xdb, 0x7e, 0x79, 0x6b, 0xe9, 0x1e, 0x5f, 0x48, 0xd7, + 0x9c, 0xeb, 0x17, 0x5b, 0xd0, 0x4b, 0xba, 0xf0, 0x00, 0xaa, 0xc3, 0x64, 0x99, 0xbe, 0x98, 0x5b, + 0x92, 0xe6, 0x7c, 0x4e, 0x3b, 0x7f, 0x94, 0x81, 0xe5, 0x71, 0x9b, 0xfb, 0x17, 0x7a, 0x58, 0xff, + 0x59, 0x06, 0x56, 0xa7, 0x2c, 0xf9, 0xa5, 0x8e, 0xdd, 0x64, 0xbb, 0xb2, 0x73, 0xb4, 0x2b, 0x37, + 0xa3, 0x5d, 0x17, 0x5b, 0x92, 0xcb, 0x5b, 0xdc, 0x86, 0x2f, 0x5d, 0xb8, 0x27, 0x5c, 0x32, 0xd4, + 0x63, 0x42, 0x73, 0x93, 0x42, 0x7f, 0x27, 0x03, 0x37, 0x2f, 0xb3, 0xf7, 0xff, 0xdf, 0xf5, 0x6a, + 0xb2, 0x85, 0x8d, 0x77, 0xe3, 0xa3, 0xf7, 0x2a, 0x94, 0xcc, 0xcf, 0x07, 0x99, 0xe2, 0xe6, 0xbe, + 0xff, 0xcc, 0xd3, 0x99, 0x68, 0x4b, 0x0a, 0x73, 0xc1, 0xda, 0x92, 0x43, 0xd7, 0xa1, 0xc3, 0xcb, + 0x1b, 0x00, 0xeb, 0x14, 0xd7, 0x45, 0xf7, 0x1d, 0x36, 0x77, 0x0f, 0xda, 0x4d, 0xb6, 0x90, 0x76, + 0x62, 0x3f, 0x8d, 0x0c, 0x71, 0xe3, 0x10, 0x8a, 0x49, 0x25, 0xfc, 0x9e, 0x08, 0x4e, 0x6c, 0x7d, + 0x44, 0xb8, 0x08, 0xe5, 0x43, 0x13, 0x42, 0xe9, 0x4f, 0x7d, 0xdc, 0x3e, 0xd8, 0xd7, 0x49, 0xef, + 0xad, 0x83, 0x8e, 0xae, 0xa7, 0x6f, 0x3f, 0x7e, 0xa0, 0xcf, 0xaa, 0x1e, 0x58, 0xeb, 0x87, 0x3b, + 0x4f, 0x89, 0xa2, 0xd0, 0xf8, 0x49, 0x36, 0xda, 0xd5, 0x1a, 0x96, 0x39, 0x7c, 0x04, 0x28, 0xa2, + 0x35, 0xf7, 0x8d, 0xe0, 0xf8, 0x33, 0x54, 0x06, 0xdb, 0x3c, 0xd3, 0x79, 0x08, 0x96, 0xe5, 0x45, + 0xc8, 0x1e, 0x1e, 0xe9, 0xda, 0x9d, 0x1d, 0x35, 0x70, 0xf5, 0x05, 0xb8, 0xce, 0x99, 0x62, 0x05, + 0x7c, 0xd8, 0x0c, 0x4f, 0x59, 0xb1, 0xf1, 0xdf, 0x32, 0x50, 0x89, 0x4d, 0xe5, 0x8b, 0x98, 0x6e, + 0xce, 0x61, 0xb9, 0xb5, 0xdf, 0x69, 0x5a, 0xfb, 0xeb, 0xbb, 0x86, 0x24, 0xc7, 0x6b, 0x70, 0x75, + 0xff, 0xe0, 0xe9, 0xc1, 0xc6, 0xc7, 0xcd, 0xcd, 0x4e, 0xfb, 0x69, 0xe7, 0xe0, 0x69, 0x6b, 0xef, + 0xf0, 0xc0, 0xea, 0xb0, 0x02, 0xbf, 0x0e, 0x5c, 0x3f, 0x3f, 0x6d, 0xb5, 0x9f, 0x6e, 0xae, 0xef, + 0x6f, 0x36, 0x77, 0x9b, 0x5b, 0xac, 0xc8, 0x5f, 0x85, 0xaf, 0xec, 0xb6, 0xf6, 0x5a, 0x9d, 0xa7, + 0x07, 0xdb, 0x4f, 0xad, 0x83, 0x27, 0xed, 0xa7, 0x07, 0xd6, 0x53, 0xab, 0xb9, 0xbb, 0xde, 0x69, + 0x1d, 0xec, 0xb7, 0x9f, 0x36, 0xbf, 0xb3, 0xd9, 0x6c, 0x6e, 0x35, 0xb7, 0x58, 0x89, 0x5f, 0x81, + 0x95, 0xed, 0xd6, 0x6e, 0xf3, 0xe9, 0xee, 0xc1, 0xfa, 0x96, 0xf9, 0x5e, 0x99, 0xdf, 0x84, 0x5a, + 0x6b, 0xbf, 0xfd, 0x68, 0x7b, 0xbb, 0xb5, 0xd9, 0x6a, 0xee, 0x77, 0x9e, 0x1e, 0x36, 0xad, 0xbd, + 0x56, 0xbb, 0x8d, 0xbc, 0xac, 0xd2, 0xf8, 0x36, 0x14, 0x5b, 0xde, 0xa9, 0xa3, 0x48, 0xfd, 0xcc, + 0x5c, 0x99, 0x80, 0x24, 0x02, 0x49, 0x6b, 0x9c, 0x9e, 0x47, 0xf7, 0x9e, 0x49, 0xf9, 0x16, 0xad, + 0x04, 0xd1, 0xf8, 0xe7, 0x59, 0x58, 0xd2, 0x22, 0xa2, 0x00, 0xe7, 0x0e, 0xac, 0x98, 0x4c, 0x61, + 0x6b, 0x7c, 0x85, 0x4f, 0xa2, 0xe9, 0x07, 0x85, 0x34, 0x2a, 0xb5, 0xce, 0xd3, 0x28, 0x3a, 0x7d, + 0x22, 0xe1, 0x18, 0x28, 0xe9, 0x73, 0xb7, 0x04, 0xf1, 0x45, 0x17, 0x38, 0x1a, 0x0f, 0x4d, 0xd8, + 0xf5, 0xbd, 0xcd, 0xf8, 0xb6, 0xc1, 0x18, 0x8e, 0x7f, 0x0a, 0x37, 0x62, 0xb8, 0xe9, 0x75, 0x83, + 0xf3, 0x61, 0xfc, 0xbb, 0x5f, 0xa5, 0x99, 0x11, 0xf7, 0xb6, 0xe3, 0xca, 0x31, 0x42, 0xeb, 0x22, + 0x01, 0x8d, 0x3f, 0xca, 0xa4, 0xc2, 0x42, 0x1d, 0xf6, 0x5d, 0x6a, 0x10, 0x67, 0x1d, 0x51, 0x60, + 0x60, 0x66, 0x9a, 0x6f, 0xf6, 0x69, 0x03, 0xf2, 0x43, 0xe0, 0xce, 0x74, 0xa3, 0xf3, 0x73, 0x36, + 0x7a, 0x06, 0xef, 0x64, 0x86, 0xb9, 0x30, 0x9d, 0x61, 0xbe, 0x05, 0xd0, 0x73, 0xfd, 0x23, 0xe1, + 0xa6, 0xfc, 0xb0, 0x14, 0xa6, 0xe1, 0x42, 0x39, 0xfa, 0x75, 0x31, 0x7e, 0x1d, 0x8a, 0xf4, 0xfb, + 0x62, 0x71, 0xbe, 0x4d, 0x43, 0x7c, 0x07, 0x96, 0xe5, 0x78, 0x9b, 0xb3, 0x73, 0xb6, 0x79, 0x82, + 0xaf, 0xf1, 0x4d, 0x58, 0x9d, 0x22, 0xc2, 0x41, 0x1c, 0x0a, 0x15, 0x5f, 0x31, 0xc6, 0xe7, 0xe9, + 0x33, 0xde, 0xc6, 0x7f, 0xca, 0xc2, 0xe2, 0x9e, 0xf0, 0x9c, 0x63, 0x19, 0xaa, 0xa8, 0xb5, 0x61, + 0xb7, 0x2f, 0x07, 0x22, 0x6a, 0xad, 0x86, 0x4c, 0x10, 0x9e, 0x4d, 0xa7, 0xb7, 0xa7, 0x4e, 0x43, + 0xae, 0x43, 0x51, 0x8c, 0x54, 0x3f, 0x2e, 0x80, 0x36, 0x10, 0xce, 0x9d, 0xeb, 0x74, 0xa5, 0x17, + 0x46, 0xba, 0x19, 0x81, 0x49, 0x95, 0x47, 0xf1, 0x92, 0x2a, 0x8f, 0xd2, 0xf4, 0xf8, 0xdf, 0x86, + 0x6a, 0xd8, 0x0d, 0xa4, 0xf4, 0xc2, 0xbe, 0xaf, 0xa2, 0x5f, 0xa6, 0x4b, 0xa3, 0xa8, 0x16, 0xca, + 0x7f, 0xe6, 0xe1, 0x0a, 0xdd, 0x75, 0xbc, 0x13, 0x53, 0xe2, 0x33, 0x86, 0x43, 0x1d, 0xa4, 0x14, + 0x84, 0xf3, 0xb9, 0xa4, 0xf0, 0xb7, 0x60, 0xc5, 0x30, 0x25, 0x19, 0x84, 0x92, 0x3d, 0x3f, 0x70, + 0xa4, 0xce, 0xb4, 0x55, 0xac, 0x14, 0x06, 0x79, 0x5d, 0xe1, 0xf5, 0x46, 0xa2, 0x27, 0xcd, 0x99, + 0x69, 0x0c, 0x37, 0xfe, 0x57, 0x01, 0x60, 0x4f, 0x0e, 0x8e, 0x64, 0x10, 0xf6, 0x9d, 0x21, 0x9d, + 0x04, 0x38, 0xa6, 0xec, 0x73, 0xc9, 0xa2, 0x67, 0xfe, 0xde, 0x58, 0x45, 0xf6, 0xf4, 0xd9, 0x5d, + 0xc2, 0x3e, 0x99, 0xa1, 0xc0, 0xc1, 0x11, 0x4a, 0x9a, 0x02, 0x1b, 0x1a, 0xff, 0xbc, 0x95, 0x46, + 0x51, 0xed, 0x93, 0x50, 0xb2, 0xe9, 0xd9, 0x3a, 0x03, 0x92, 0xb7, 0x62, 0x98, 0xee, 0x74, 0x84, + 0xeb, 0x23, 0xe5, 0x5b, 0xd2, 0x93, 0xcf, 0xe2, 0x0b, 0x49, 0x09, 0x8a, 0xef, 0xc1, 0xd2, 0x50, + 0x9c, 0x0f, 0xa4, 0xa7, 0xf6, 0xa4, 0xea, 0xfb, 0xb6, 0xa9, 0x86, 0x79, 0xf5, 0xe2, 0x06, 0x1e, + 0xa6, 0xc9, 0xad, 0x71, 0x6e, 0xd4, 0x09, 0x2f, 0xa4, 0x55, 0xa2, 0xa7, 0xd1, 0x40, 0x7c, 0x03, + 0x40, 0x3f, 0x51, 0x60, 0x51, 0x9e, 0x9d, 0xa8, 0x11, 0x03, 0x19, 0xca, 0xe0, 0xd4, 0xd1, 0x76, + 0x4c, 0x87, 0x4e, 0x09, 0x17, 0x5a, 0xbd, 0x51, 0x28, 0x83, 0xe6, 0x40, 0x38, 0xae, 0x99, 0xe0, + 0x04, 0xc1, 0xdf, 0x82, 0x6b, 0xe1, 0xe8, 0x08, 0x75, 0xe6, 0x48, 0x76, 0xfc, 0x7d, 0xf9, 0x2c, + 0x74, 0xa5, 0x52, 0x32, 0x30, 0xc7, 0xef, 0xb3, 0x5f, 0x36, 0x7a, 0xb1, 0x57, 0x40, 0xbf, 0x82, + 0x80, 0x4f, 0x49, 0x59, 0x4f, 0x8c, 0x32, 0x35, 0x4f, 0x2c, 0xc3, 0x19, 0x2c, 0x6a, 0x94, 0x29, + 0x89, 0xca, 0xf2, 0xaf, 0xc2, 0x97, 0xc7, 0x88, 0x2c, 0x7d, 0x4e, 0x1a, 0x6e, 0x3b, 0x9e, 0x70, + 0x9d, 0xcf, 0xf5, 0xa9, 0x75, 0xae, 0x31, 0x84, 0xa5, 0xb1, 0x81, 0xc3, 0x6d, 0x5e, 0x3f, 0x99, + 0x22, 0x11, 0x06, 0x8b, 0x1a, 0x6e, 0xab, 0xc0, 0xa1, 0x03, 0x80, 0x18, 0xb3, 0x89, 0xeb, 0xdc, + 0x67, 0x59, 0x7e, 0x15, 0x98, 0xc6, 0xb4, 0x3c, 0x31, 0x1c, 0xae, 0x0f, 0x87, 0xae, 0x64, 0x39, + 0xba, 0xb8, 0x97, 0x60, 0x75, 0x5d, 0x36, 0xcb, 0x37, 0xbe, 0x03, 0x37, 0x68, 0x64, 0x1e, 0xcb, + 0x20, 0x8e, 0xfb, 0x4c, 0x5f, 0xaf, 0xc1, 0xaa, 0x7e, 0xda, 0xf7, 0x95, 0x7e, 0x4d, 0xbe, 0x10, + 0x87, 0x65, 0x8d, 0x46, 0x57, 0xa0, 0x2d, 0x3d, 0xa5, 0x6b, 0x55, 0x34, 0x2e, 0xa6, 0xcb, 0x36, + 0x7e, 0x5c, 0x04, 0x9e, 0x28, 0x44, 0xc7, 0x91, 0xc1, 0x96, 0x50, 0x22, 0x95, 0xb8, 0x5b, 0xba, + 0xf0, 0xe8, 0xf9, 0xf9, 0x15, 0x5d, 0xd7, 0xa1, 0xe8, 0x84, 0x18, 0xa9, 0x98, 0x7a, 0x4b, 0x03, + 0xf1, 0x5d, 0x80, 0xa1, 0x0c, 0x1c, 0xdf, 0x26, 0x0d, 0x2a, 0xcc, 0x2c, 0x8c, 0x9f, 0x6e, 0xd4, + 0xda, 0x61, 0xcc, 0x63, 0xa5, 0xf8, 0xb1, 0x1d, 0x1a, 0xd2, 0x07, 0xb9, 0x45, 0x6a, 0x74, 0x1a, + 0xc5, 0x5f, 0x87, 0x2b, 0xc3, 0xc0, 0xe9, 0x4a, 0x3d, 0x1d, 0x8f, 0x42, 0x7b, 0x93, 0x7e, 0x3b, + 0xac, 0x44, 0x94, 0xb3, 0x5e, 0xa1, 0x06, 0x0a, 0x8f, 0xfc, 0xf7, 0x90, 0x8e, 0x2e, 0xcd, 0xc5, + 0x51, 0x5d, 0x91, 0xb8, 0x64, 0xcd, 0x7e, 0xc9, 0xef, 0x02, 0x33, 0x2f, 0xf6, 0x1c, 0x6f, 0x57, + 0x7a, 0x3d, 0xd5, 0x27, 0xe5, 0x5e, 0xb2, 0xa6, 0xf0, 0x64, 0xc1, 0xf4, 0x2f, 0xb4, 0xe8, 0x63, + 0x8d, 0x8a, 0x15, 0xc3, 0xfa, 0x32, 0xb2, 0xeb, 0x07, 0x6d, 0x15, 0x98, 0xd2, 0xca, 0x18, 0x46, + 0x9f, 0x25, 0xa4, 0xb6, 0x1e, 0x06, 0xbe, 0x3d, 0xa2, 0xa4, 0xbb, 0x36, 0x62, 0x93, 0xe8, 0x84, + 0x72, 0x4f, 0x78, 0xa6, 0xac, 0x6e, 0x29, 0x4d, 0x19, 0xa3, 0x29, 0x44, 0xf1, 0xc3, 0x44, 0xe0, + 0x8a, 0x09, 0x51, 0x52, 0x38, 0x43, 0x93, 0x88, 0x62, 0x31, 0x4d, 0x22, 0x87, 0xfa, 0x6f, 0x07, + 0xbe, 0x63, 0x27, 0xb2, 0x56, 0x75, 0xd1, 0xe3, 0x24, 0x3e, 0x45, 0x9b, 0xc8, 0xe4, 0x63, 0xb4, + 0x31, 0xbe, 0xf1, 0xfd, 0x0c, 0x40, 0x32, 0xf9, 0xa8, 0xf2, 0x09, 0x94, 0x2c, 0xf1, 0x1b, 0x70, + 0x25, 0x8d, 0xa6, 0xda, 0x79, 0x3a, 0xff, 0xe4, 0xb0, 0x9c, 0xbc, 0xd8, 0x12, 0xe7, 0x21, 0xcb, + 0xea, 0xea, 0xc7, 0x08, 0xf7, 0x44, 0x4a, 0xaa, 0x33, 0xbb, 0x0a, 0x2c, 0x41, 0xd2, 0xd5, 0xa8, + 0x90, 0xe5, 0xc7, 0x49, 0xbf, 0x2b, 0x45, 0x10, 0xb2, 0x42, 0x63, 0x07, 0x8a, 0xfa, 0xec, 0x65, + 0xc6, 0xa9, 0xe9, 0x8b, 0x95, 0x40, 0xfc, 0x9d, 0x0c, 0xc0, 0x96, 0x2e, 0x70, 0xc5, 0x5d, 0x7c, + 0xc6, 0x61, 0xf4, 0x2c, 0x8f, 0x4a, 0xd8, 0x36, 0x15, 0x0a, 0xe7, 0xe2, 0xdf, 0xfd, 0x40, 0x10, + 0x35, 0x47, 0x44, 0x85, 0x45, 0x7a, 0xcd, 0xc5, 0xb0, 0xde, 0x40, 0x36, 0x7d, 0xcf, 0x93, 0x5d, + 0xdc, 0x7e, 0xe2, 0x0d, 0x24, 0x46, 0x35, 0xfe, 0x7d, 0x09, 0xaa, 0x9b, 0x7d, 0xa1, 0xf6, 0x64, + 0x18, 0x8a, 0x9e, 0x9c, 0x6a, 0x4b, 0x0d, 0x4a, 0x7e, 0x60, 0xcb, 0x20, 0xb9, 0xde, 0x64, 0xc0, + 0xf4, 0x11, 0x7c, 0x6e, 0xfc, 0x08, 0xfe, 0x26, 0x54, 0x74, 0x82, 0xdf, 0x5e, 0xd7, 0x66, 0x20, + 0x67, 0x25, 0x08, 0xdc, 0xab, 0x07, 0xbe, 0x4d, 0xc6, 0x68, 0x5d, 0xe7, 0xc6, 0x73, 0x56, 0x0a, + 0xa3, 0x2b, 0x1e, 0x86, 0xee, 0x79, 0xc7, 0x37, 0x6d, 0x6a, 0xd9, 0xc9, 0x5d, 0xd0, 0x71, 0x3c, + 0xdf, 0x84, 0xd2, 0x40, 0x03, 0x26, 0xcf, 0x3f, 0x99, 0x11, 0x4f, 0x75, 0x6d, 0xcd, 0xfc, 0x35, + 0xd7, 0x31, 0xac, 0x88, 0x13, 0x23, 0x58, 0xa1, 0x94, 0xe8, 0xf6, 0x07, 0xc6, 0x44, 0xe4, 0x66, + 0x1c, 0xf9, 0xa5, 0x05, 0xad, 0xc7, 0xd4, 0x56, 0x9a, 0x93, 0x6f, 0x40, 0x25, 0x90, 0x62, 0xec, + 0xd4, 0xf1, 0xe5, 0x4b, 0xc4, 0x58, 0x11, 0xad, 0x95, 0xb0, 0xd5, 0x7f, 0x98, 0x81, 0xe5, 0xf1, + 0x86, 0xfe, 0x79, 0xfc, 0x74, 0xd3, 0xb7, 0x92, 0x9f, 0x6e, 0xfa, 0x02, 0x3f, 0x83, 0xf4, 0x3b, + 0x19, 0x80, 0x64, 0x0c, 0xd0, 0xe4, 0xeb, 0x9f, 0x98, 0x89, 0x9c, 0x50, 0x0d, 0xf1, 0x9d, 0xb1, + 0x4b, 0xe0, 0x6f, 0xcd, 0x35, 0xa0, 0xa9, 0xc7, 0x54, 0xd5, 0xee, 0x3d, 0x58, 0x1e, 0xc7, 0xd3, + 0x8f, 0xc6, 0xb4, 0x76, 0x9b, 0x3a, 0x03, 0xd0, 0xda, 0x5b, 0x7f, 0xd0, 0x34, 0xd7, 0x5f, 0x5a, + 0xfb, 0x0f, 0x59, 0xb6, 0xfe, 0xc7, 0x19, 0xa8, 0xc4, 0xc3, 0xcb, 0x3f, 0x49, 0xcf, 0x8b, 0x2e, + 0x23, 0x78, 0x73, 0x9e, 0x79, 0x49, 0x9e, 0x9a, 0x9e, 0x0a, 0xce, 0xd3, 0xd3, 0xe4, 0xc3, 0xf2, + 0xf8, 0xcb, 0x19, 0x36, 0xe1, 0xc1, 0xb8, 0x4d, 0x78, 0x63, 0xae, 0x4f, 0x46, 0x91, 0xd7, 0xae, + 0x13, 0x2a, 0x63, 0x2e, 0xde, 0xcf, 0xbe, 0x97, 0xa9, 0xdf, 0x86, 0xc5, 0xf4, 0xab, 0xe9, 0x3b, + 0x6e, 0x77, 0xff, 0x38, 0x07, 0xcb, 0xe3, 0x27, 0xf1, 0x74, 0xa3, 0x46, 0x57, 0x81, 0x1c, 0xb8, + 0x76, 0xaa, 0xd0, 0x99, 0xf1, 0x15, 0xa8, 0x9a, 0xd8, 0x8e, 0x10, 0xab, 0x94, 0x63, 0xf0, 0x07, + 0x92, 0xdd, 0x4e, 0xff, 0x3c, 0xdd, 0xeb, 0x1c, 0xa2, 0xbb, 0x4e, 0x6c, 0xc8, 0x2b, 0xe6, 0x87, + 0x7a, 0x7e, 0x35, 0xcb, 0x97, 0x52, 0xe5, 0xb6, 0x3f, 0x40, 0xc7, 0x66, 0x65, 0x63, 0xe4, 0xd9, + 0xae, 0xb4, 0x63, 0xec, 0x0f, 0xd3, 0xd8, 0xb8, 0x78, 0xf6, 0x57, 0xf3, 0x7c, 0x19, 0x2a, 0xed, + 0xd1, 0x91, 0x29, 0x9c, 0xfd, 0xeb, 0x79, 0x7e, 0x1d, 0x56, 0x0d, 0x55, 0x52, 0x01, 0xc7, 0xfe, + 0x06, 0x9a, 0xe0, 0xe5, 0x75, 0x3d, 0x5e, 0xa6, 0xa1, 0xec, 0x6f, 0xe6, 0xb1, 0x09, 0x74, 0x85, + 0xf6, 0x6f, 0x91, 0x9c, 0xf8, 0xc2, 0x01, 0xfb, 0xb5, 0x3c, 0x5f, 0x01, 0x68, 0x77, 0xe2, 0x0f, + 0xfd, 0x46, 0x9e, 0x57, 0xa1, 0xd8, 0xee, 0x90, 0xb4, 0xef, 0xe7, 0xf9, 0x35, 0x60, 0xc9, 0x5b, + 0x53, 0x17, 0xf8, 0x9b, 0xba, 0x31, 0x71, 0xa1, 0xdf, 0x6f, 0xe5, 0xb1, 0x5f, 0xd1, 0x28, 0xb3, + 0xbf, 0x9b, 0xe7, 0x0c, 0xaa, 0xa9, 0xcc, 0x15, 0xfb, 0x7b, 0x79, 0xce, 0x61, 0x69, 0xcf, 0x09, + 0x43, 0xc7, 0xeb, 0x99, 0x1e, 0xfc, 0x3a, 0x7d, 0x79, 0x3b, 0xbe, 0x33, 0xc1, 0x7e, 0x3b, 0xcf, + 0x6f, 0x00, 0x4f, 0x67, 0xeb, 0xcd, 0x8b, 0xbf, 0x4f, 0xdc, 0xda, 0xec, 0x87, 0x06, 0xf7, 0x0f, + 0x88, 0x1b, 0x35, 0xc1, 0x20, 0xfe, 0x21, 0x0d, 0xc8, 0x66, 0x52, 0x49, 0x68, 0xf0, 0x3f, 0x20, + 0xe6, 0x68, 0x32, 0x35, 0xee, 0x87, 0xf9, 0xbb, 0x3f, 0xa6, 0x6c, 0x6b, 0xba, 0x20, 0x87, 0x2f, + 0x42, 0xd9, 0xf5, 0xbd, 0x9e, 0xd2, 0x3f, 0x0b, 0xb8, 0x04, 0x95, 0xb0, 0xef, 0x07, 0x8a, 0x40, + 0xba, 0xd4, 0xe5, 0xd1, 0xf5, 0x5e, 0x5d, 0x6d, 0xad, 0x83, 0x14, 0x9d, 0xbd, 0x52, 0xa2, 0xc7, + 0xaa, 0x71, 0x0d, 0x64, 0x3e, 0xae, 0xd3, 0xa4, 0x6b, 0xc6, 0xd1, 0x35, 0x4e, 0x56, 0x44, 0xd2, + 0x51, 0xe0, 0xea, 0x7a, 0x4d, 0x89, 0x0e, 0xaa, 0xfe, 0xfd, 0xaf, 0x61, 0x1f, 0xfd, 0xe0, 0x8a, + 0xc6, 0xfa, 0x9f, 0x39, 0xfa, 0x82, 0xa0, 0x29, 0x7f, 0xb2, 0xb1, 0x1d, 0xf1, 0x09, 0x3f, 0x93, + 0x77, 0x7f, 0x2b, 0x03, 0x8b, 0xd1, 0xe5, 0x5a, 0xa7, 0xe7, 0x78, 0xba, 0xe2, 0x33, 0xfa, 0xb1, + 0xc5, 0xae, 0xeb, 0x0c, 0xa3, 0x1f, 0x2f, 0x5b, 0x81, 0xaa, 0x1d, 0x88, 0xde, 0xba, 0x67, 0x6f, + 0x05, 0xfe, 0x50, 0x37, 0x5b, 0x9f, 0xc7, 0xe8, 0x4a, 0xd3, 0x67, 0xf2, 0x08, 0xc9, 0x87, 0x32, + 0x60, 0x79, 0x2a, 0xad, 0xea, 0x8b, 0xc0, 0xf1, 0x7a, 0xcd, 0x33, 0x25, 0xbd, 0x50, 0x57, 0x9c, + 0x56, 0xa1, 0x34, 0x0a, 0x65, 0x57, 0x84, 0x92, 0x15, 0x11, 0x38, 0x1a, 0x39, 0xae, 0x72, 0x3c, + 0xfd, 0x9b, 0x61, 0x71, 0x49, 0x69, 0xf9, 0xee, 0xef, 0x65, 0xa0, 0x4a, 0xda, 0x90, 0x24, 0x1a, + 0x13, 0x4f, 0xa3, 0x0a, 0xa5, 0xdd, 0xf8, 0x37, 0xa3, 0x8a, 0x90, 0x3d, 0x38, 0xd1, 0x89, 0x46, + 0xa3, 0x0d, 0xfa, 0x6a, 0x9c, 0xfe, 0xf9, 0xa8, 0x3c, 0xff, 0x12, 0x5c, 0xb3, 0xe4, 0xc0, 0x57, + 0xf2, 0x89, 0x70, 0x54, 0xfa, 0xb6, 0x45, 0x01, 0x83, 0x12, 0xfd, 0x2a, 0xba, 0x5e, 0x51, 0xa4, + 0xa0, 0x04, 0x3f, 0x1b, 0x61, 0x4a, 0xd8, 0x69, 0xc2, 0x98, 0x28, 0xa5, 0x1c, 0x93, 0x7c, 0xec, + 0x3b, 0x1e, 0x7e, 0x8d, 0x2e, 0x64, 0x12, 0x86, 0x32, 0xd6, 0x88, 0x82, 0xbb, 0xfb, 0x70, 0x7d, + 0x76, 0x9e, 0x55, 0x5f, 0xd5, 0xa4, 0x1f, 0x2a, 0xa5, 0xfa, 0xfb, 0x27, 0x81, 0xa3, 0x6f, 0xdc, + 0x55, 0xa0, 0x70, 0xf0, 0xcc, 0x23, 0x6d, 0x58, 0x85, 0xa5, 0x7d, 0x3f, 0xc5, 0xc3, 0x72, 0x77, + 0xbb, 0x63, 0xa9, 0xf1, 0x64, 0x50, 0xa2, 0x46, 0x2c, 0xa4, 0xee, 0x96, 0x64, 0x74, 0xd2, 0x95, + 0x7e, 0x6b, 0x5e, 0x5f, 0x63, 0x37, 0x29, 0x69, 0x5b, 0x5f, 0x63, 0x8f, 0x9b, 0x99, 0xd7, 0x3f, + 0x22, 0xe3, 0x75, 0xa5, 0x2b, 0x6d, 0x56, 0xb8, 0xfb, 0x1e, 0xac, 0x98, 0xae, 0x76, 0x65, 0x18, + 0x46, 0x77, 0x33, 0x0e, 0x03, 0xe7, 0x54, 0x5f, 0x95, 0x5f, 0x84, 0xf2, 0xa1, 0x0c, 0x42, 0xdf, + 0xa3, 0x9f, 0x09, 0x00, 0x28, 0xb6, 0xfb, 0x22, 0xc0, 0x6f, 0xdc, 0xfd, 0x3a, 0x54, 0xe8, 0xae, + 0xc6, 0x43, 0xc7, 0xb3, 0xb1, 0x27, 0x1b, 0xa6, 0x3c, 0xb9, 0x02, 0x85, 0x4d, 0xff, 0x94, 0xfa, + 0x57, 0xd6, 0x3f, 0x97, 0xc8, 0xb2, 0x77, 0x3f, 0x02, 0xae, 0x53, 0x3c, 0xb6, 0x3c, 0x73, 0xbc, + 0x5e, 0x7c, 0x7f, 0x18, 0xe8, 0xc7, 0x00, 0x6c, 0x79, 0x46, 0x11, 0x54, 0x15, 0x4a, 0x11, 0x10, + 0xfd, 0x24, 0xc1, 0xb6, 0x3f, 0xf2, 0xf0, 0x6b, 0x8f, 0xe1, 0xaa, 0xd6, 0x0d, 0xfc, 0x3c, 0xdd, + 0x20, 0xbb, 0x30, 0xee, 0xd4, 0x17, 0x6a, 0xd4, 0x28, 0x8c, 0x69, 0x59, 0x86, 0x5f, 0x07, 0x1e, + 0xc7, 0x6c, 0x09, 0x3e, 0x7b, 0xb7, 0x01, 0x57, 0x66, 0x04, 0xce, 0x64, 0x84, 0x75, 0xf8, 0xc0, + 0x16, 0xee, 0x7e, 0x08, 0xab, 0xda, 0x6c, 0xec, 0xeb, 0x3b, 0x3e, 0xd1, 0x0e, 0xf8, 0xa4, 0xb5, + 0xdd, 0xd2, 0x43, 0xb4, 0xd9, 0xdc, 0xdd, 0x7d, 0xb4, 0xbb, 0x6e, 0xb1, 0x0c, 0x4d, 0xe4, 0x41, + 0xe7, 0xe9, 0xe6, 0xc1, 0xfe, 0x7e, 0x73, 0xb3, 0xd3, 0xdc, 0x62, 0xd9, 0x8d, 0xbb, 0x7f, 0xf0, + 0xb3, 0x5b, 0x99, 0x9f, 0xfe, 0xec, 0x56, 0xe6, 0x7f, 0xfc, 0xec, 0x56, 0xe6, 0xfb, 0x3f, 0xbf, + 0xb5, 0xf0, 0xd3, 0x9f, 0xdf, 0x5a, 0xf8, 0xaf, 0x3f, 0xbf, 0xb5, 0xf0, 0x29, 0x9b, 0xfc, 0x3f, + 0x0f, 0x47, 0x45, 0xf2, 0x58, 0xdf, 0xfc, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x19, 0xcf, 0x22, + 0x07, 0x02, 0x62, 0x00, 0x00, } func (m *SmartBlockSnapshotBase) Marshal() (dAtA []byte, err error) { @@ -12792,6 +12801,13 @@ func (m *AccountInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0xaa } + if len(m.WorkspaceObjectId) > 0 { + i -= len(m.WorkspaceObjectId) + copy(dAtA[i:], m.WorkspaceObjectId) + i = encodeVarintModels(dAtA, i, uint64(len(m.WorkspaceObjectId))) + i-- + dAtA[i] = 0x7a + } if len(m.TechSpaceId) > 0 { i -= len(m.TechSpaceId) copy(dAtA[i:], m.TechSpaceId) @@ -17242,6 +17258,10 @@ func (m *AccountInfo) Size() (n int) { if l > 0 { n += 1 + l + sovModels(uint64(l)) } + l = len(m.WorkspaceObjectId) + if l > 0 { + n += 1 + l + sovModels(uint64(l)) + } l = len(m.GatewayUrl) if l > 0 { n += 2 + l + sovModels(uint64(l)) @@ -26157,6 +26177,38 @@ func (m *AccountInfo) Unmarshal(dAtA []byte) error { } m.TechSpaceId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WorkspaceObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModels + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModels + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModels + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WorkspaceObjectId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 101: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field GatewayUrl", wireType) diff --git a/pkg/lib/pb/model/protos/models.proto b/pkg/lib/pb/model/protos/models.proto index 899a580b5..e69d07598 100644 --- a/pkg/lib/pb/model/protos/models.proto +++ b/pkg/lib/pb/model/protos/models.proto @@ -639,6 +639,7 @@ message Account { string archiveObjectId = 3; // archive block id string profileObjectId = 4; // profile block id string marketplaceWorkspaceId = 11; // marketplace workspace id + string workspaceObjectId = 15; // workspace object id. used for space-level chat string deviceId = 8; string accountSpaceId = 9; @@ -762,7 +763,7 @@ message ObjectType { participant = 19; pdf = 20; - chat = 21; + chat = 21; // deprecated chatDerived = 22; tag = 23; } diff --git a/space/clientspace/mock_clientspace/mock_Space.go b/space/clientspace/mock_clientspace/mock_Space.go index 02fd49bba..a4bff49ae 100644 --- a/space/clientspace/mock_clientspace/mock_Space.go +++ b/space/clientspace/mock_clientspace/mock_Space.go @@ -273,7 +273,7 @@ func (_c *MockSpace_CreateTreeObject_Call) RunAndReturn(run func(context.Context } // CreateTreeObjectWithPayload provides a mock function with given fields: ctx, payload, initFunc -func (_m *MockSpace) CreateTreeObjectWithPayload(ctx context.Context, payload treestorage.TreeStorageCreatePayload, initFunc func(string) *smartblock.InitContext) (smartblock.SmartBlock, error) { +func (_m *MockSpace) CreateTreeObjectWithPayload(ctx context.Context, payload treestorage.TreeStorageCreatePayload, initFunc objectcache.InitFunc) (smartblock.SmartBlock, error) { ret := _m.Called(ctx, payload, initFunc) if len(ret) == 0 { @@ -282,10 +282,10 @@ func (_m *MockSpace) CreateTreeObjectWithPayload(ctx context.Context, payload tr var r0 smartblock.SmartBlock var r1 error - if rf, ok := ret.Get(0).(func(context.Context, treestorage.TreeStorageCreatePayload, func(string) *smartblock.InitContext) (smartblock.SmartBlock, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, treestorage.TreeStorageCreatePayload, objectcache.InitFunc) (smartblock.SmartBlock, error)); ok { return rf(ctx, payload, initFunc) } - if rf, ok := ret.Get(0).(func(context.Context, treestorage.TreeStorageCreatePayload, func(string) *smartblock.InitContext) smartblock.SmartBlock); ok { + if rf, ok := ret.Get(0).(func(context.Context, treestorage.TreeStorageCreatePayload, objectcache.InitFunc) smartblock.SmartBlock); ok { r0 = rf(ctx, payload, initFunc) } else { if ret.Get(0) != nil { @@ -293,7 +293,7 @@ func (_m *MockSpace) CreateTreeObjectWithPayload(ctx context.Context, payload tr } } - if rf, ok := ret.Get(1).(func(context.Context, treestorage.TreeStorageCreatePayload, func(string) *smartblock.InitContext) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, treestorage.TreeStorageCreatePayload, objectcache.InitFunc) error); ok { r1 = rf(ctx, payload, initFunc) } else { r1 = ret.Error(1) @@ -310,14 +310,14 @@ type MockSpace_CreateTreeObjectWithPayload_Call struct { // CreateTreeObjectWithPayload is a helper method to define mock.On call // - ctx context.Context // - payload treestorage.TreeStorageCreatePayload -// - initFunc func(string) *smartblock.InitContext +// - initFunc objectcache.InitFunc func (_e *MockSpace_Expecter) CreateTreeObjectWithPayload(ctx interface{}, payload interface{}, initFunc interface{}) *MockSpace_CreateTreeObjectWithPayload_Call { return &MockSpace_CreateTreeObjectWithPayload_Call{Call: _e.mock.On("CreateTreeObjectWithPayload", ctx, payload, initFunc)} } -func (_c *MockSpace_CreateTreeObjectWithPayload_Call) Run(run func(ctx context.Context, payload treestorage.TreeStorageCreatePayload, initFunc func(string) *smartblock.InitContext)) *MockSpace_CreateTreeObjectWithPayload_Call { +func (_c *MockSpace_CreateTreeObjectWithPayload_Call) Run(run func(ctx context.Context, payload treestorage.TreeStorageCreatePayload, initFunc objectcache.InitFunc)) *MockSpace_CreateTreeObjectWithPayload_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(treestorage.TreeStorageCreatePayload), args[2].(func(string) *smartblock.InitContext)) + run(args[0].(context.Context), args[1].(treestorage.TreeStorageCreatePayload), args[2].(objectcache.InitFunc)) }) return _c } @@ -327,7 +327,7 @@ func (_c *MockSpace_CreateTreeObjectWithPayload_Call) Return(sb smartblock.Smart return _c } -func (_c *MockSpace_CreateTreeObjectWithPayload_Call) RunAndReturn(run func(context.Context, treestorage.TreeStorageCreatePayload, func(string) *smartblock.InitContext) (smartblock.SmartBlock, error)) *MockSpace_CreateTreeObjectWithPayload_Call { +func (_c *MockSpace_CreateTreeObjectWithPayload_Call) RunAndReturn(run func(context.Context, treestorage.TreeStorageCreatePayload, objectcache.InitFunc) (smartblock.SmartBlock, error)) *MockSpace_CreateTreeObjectWithPayload_Call { _c.Call.Return(run) return _c } diff --git a/space/internal/spacecontroller/mock_spacecontroller/mock_SpaceController.go b/space/internal/spacecontroller/mock_spacecontroller/mock_SpaceController.go index 583d58553..b3bc7b8a6 100644 --- a/space/internal/spacecontroller/mock_spacecontroller/mock_SpaceController.go +++ b/space/internal/spacecontroller/mock_spacecontroller/mock_SpaceController.go @@ -71,19 +71,19 @@ func (_c *MockSpaceController_Close_Call) RunAndReturn(run func(context.Context) } // Current provides a mock function with given fields: -func (_m *MockSpaceController) Current() interface{} { +func (_m *MockSpaceController) Current() any { ret := _m.Called() if len(ret) == 0 { panic("no return value specified for Current") } - var r0 interface{} - if rf, ok := ret.Get(0).(func() interface{}); ok { + var r0 any + if rf, ok := ret.Get(0).(func() any); ok { r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(interface{}) + r0 = ret.Get(0).(any) } } @@ -107,12 +107,12 @@ func (_c *MockSpaceController_Current_Call) Run(run func()) *MockSpaceController return _c } -func (_c *MockSpaceController_Current_Call) Return(_a0 interface{}) *MockSpaceController_Current_Call { +func (_c *MockSpaceController_Current_Call) Return(_a0 any) *MockSpaceController_Current_Call { _c.Call.Return(_a0) return _c } -func (_c *MockSpaceController_Current_Call) RunAndReturn(run func() interface{}) *MockSpaceController_Current_Call { +func (_c *MockSpaceController_Current_Call) RunAndReturn(run func() any) *MockSpaceController_Current_Call { _c.Call.Return(run) return _c } diff --git a/tantivity_sha256.txt b/tantivity_sha256.txt index dc2759fc2..38466aa62 100644 --- a/tantivity_sha256.txt +++ b/tantivity_sha256.txt @@ -1,11 +1,11 @@ -a05bdf7ce60a330211418df7bfdabd865aedd892d46d9f143de1e00f79935d55 deps/libs/android-386.tar.gz -f196e7f219cbb4d1b1a040de89bf6d9a7bb9c1ad2754386f680c2df368e2907a deps/libs/android-amd64.tar.gz -19e522f5562399ea5e182e30b06ad6df6d131cdf1b4d9289b5e5e9c9856ba0f4 deps/libs/android-arm.tar.gz -99ad41537a4c3c539c161c3cb2348c4c4890cff67515a06879f2b5ebdead0a84 deps/libs/android-arm64.tar.gz -72c95ba004dfc3af2682f789b3065af42c7fbc2a0a58296477249682fa071838 deps/libs/darwin-amd64.tar.gz -c1ae66952d6849a3061126993824eb8d1dae8af695f2cff6a62bb417ba1e5c22 deps/libs/darwin-arm64.tar.gz -a8601bcf050a4133f694942b4dc5dcd19a54b5559708450a0173e2e7ee72f9e2 deps/libs/ios-amd64.tar.gz -7342b454aacc13ca4b0245be94e1572d22dc2bd5987890d1ae0da9be4e13ee21 deps/libs/ios-arm64.tar.gz -3e54c74d47dd8486155dc10eb22f414224aefd104c10572456e213cfa7613851 deps/libs/ios-arm64-sim.tar.gz -f3216e5ef28c474d3200df560d2188a7456a10da39616bcbf09d3d14ab713932 deps/libs/linux-amd64-musl.tar.gz -66309ec91b9f03d2c1f9becff01cc40e6a81b3b082b975f90fd8341e3ad78949 deps/libs/windows-amd64.tar.gz +51756cec01c0d1867464d6fedf19df2e5e1859f7fc1784f35b4750dcf53ebb54 deps/libs/android-386.tar.gz +bce360c33af6559cf978539a546ce07cdf32b212b73ce93d655b8ba78ad923a6 deps/libs/android-amd64.tar.gz +7881478a39ff6b85e37ad4339aed3756a82d8cbf11bf56efe9c9530c6b4ed602 deps/libs/android-arm.tar.gz +0b129c76883a33700195ce971ad073b7855dc69e90418769b80259ec3125e2e0 deps/libs/android-arm64.tar.gz +71331b6b034a2f81ad4feed195d18cd0c039719cab4f015cfa5bb6eac298b7a7 deps/libs/darwin-amd64.tar.gz +96ab3f803b781bd6489e1d7172dfa2e13d251280db22d686b545baf5a99c7da3 deps/libs/darwin-arm64.tar.gz +3ce3f3933202dee68e106215772a102a5742b7915a6773d7a8aecddc66d2be10 deps/libs/ios-amd64.tar.gz +1ab4b2fdb6bf229bd63ce74bae7a25c4bd8ae895db192a096058035c7057b6ad deps/libs/ios-arm64.tar.gz +b38b025ef58c44240265f01b75a469b5003c63cbae78b9337ce6b9c48aa2e5ef deps/libs/ios-arm64-sim.tar.gz +2b8c84cb0e2a7309b7d130bc64217a3abcd086428403cc5343dad2534bbd7e7d deps/libs/linux-amd64-musl.tar.gz +99b8d647de1783f5362e603a1e5187895c49ae453895b17e132876c6eb4c66f1 deps/libs/windows-amd64.tar.gz diff --git a/util/pbtypes/pbtypes.go b/util/pbtypes/pbtypes.go index 6397b9d5b..b035c91d7 100644 --- a/util/pbtypes/pbtypes.go +++ b/util/pbtypes/pbtypes.go @@ -65,7 +65,7 @@ func IntList(ints ...int) *types.Value { } } -func FloatList(floats []float64) *types.Value { +func Float64List(floats []float64) *types.Value { var vals = make([]*types.Value, 0, len(floats)) for _, f := range floats { vals = append(vals, Float64(f))