Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

report users simpler error message through psql interface #3730

Closed
xxchan opened this issue Jul 7, 2022 · 5 comments
Closed

report users simpler error message through psql interface #3730

xxchan opened this issue Jul 7, 2022 · 5 comments

Comments

@xxchan
Copy link
Member

xxchan commented Jul 7, 2022

we should warn users "no compute node" instead of complex error message when all compute nodes panicked.

Originally posted by @skyzh in #3729 (comment)

@BugenZhao
Copy link
Member

I'd like to make this issue more general since all error reporting becomes complex after #3211.

@BugenZhao BugenZhao changed the title warn users "no compute node" instead of complex error message report users simpler error message through sql interface Jul 7, 2022
@BugenZhao BugenZhao changed the title report users simpler error message through sql interface report users simpler error message through psql interface Jul 7, 2022
@xxchan
Copy link
Member Author

xxchan commented Jul 20, 2022

bad case be like 😇

dev=> select regexp_matches('Hello #risingwave #singularity', '#\w+', 'g');
ERROR:  QueryError: Scheduler error: gRPC status: status: Internal, message: "internal error: [PlanNode: Ok(Project(ProjectNode { select_list: [ExprNode { expr_type: InputRef, return_type: Some(DataType { type_name: List, precision: 0, scale: 0, is_nullable: true, interval_type: Invalid, field_type: [DataType { type_name: Varchar, precision: 0, scale: 0, is_nullable: true, interval_type: Invalid, field_type: [] }] }), rex_node: Some(InputRef(InputRefExpr { column_idx: 1 })) }] }))] Failed to build executor: internal error: [PlanNode: Ok(ProjectSet(ProjectSetNode { select_list: [ProjectSetSelectItem { select_item: Some(TableFunction(TableFunction { function_type: Unnest, args: [ExprNode { expr_type: ConstantValue, return_type: Some(DataType { type_name: Varchar, precision: 0, scale: 0, is_nullable: true, interval_type: Invalid, field_type: [] }), rex_node: Some(Constant(ConstantValue { body: [72, 101, 108, 108, 111, 32, 35, 114, 105, 115, 105, 110, 103, 119, 97, 118, 101, 32, 35, 115, 105, 110, 103, 117, 108, 97, 114, 105, 116, 121] })) }, ExprNode { expr_type: ConstantValue, return_type: Some(DataType { type_name: Varchar, precision: 0, scale: 0, is_nullable: true, interval_type: Invalid, field_type: [] }), rex_node: Some(Constant(ConstantValue { body: [35, 92, 119, 43] })) }, ExprNode { expr_type: ConstantValue, return_type: Some(DataType { type_name: Varchar, precision: 0, scale: 0, is_nullable: true, interval_type: Invalid, field_type: [] }), rex_node: Some(Constant(ConstantValue { body: [103] })) }], return_type: Some(DataType { type_name: List, precision: 0, scale: 0, is_nullable: true, interval_type: Invalid, field_type: [DataType { type_name: Varchar, precision: 0, scale: 0, is_nullable: true, interval_type: Invalid, field_type: [] }] }) })) }] }))] Failed to build executor: Expr error: Internal(prost.args.len() == 1\n\nStack backtrace:\n   0: std::backtrace_rs::backtrace::libunwind::trace\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5\n   1: std::backtrace_rs::backtrace::trace_unsynchronized\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5\n   2: std::backtrace::Backtrace::create\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/backtrace.rs:328:13\n   3: anyhow::kind::Adhoc::new\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/anyhow-1.0.58/src/kind.rs:70:36\n   4: risingwave_expr::table_function::unnest::new_unnest\n             at ./src/expr/src/table_function/unnest.rs:83:5\n   5: risingwave_expr::table_function::build_from_prost\n             at ./src/expr/src/table_function/mod.rs:60:19\n   6: risingwave_expr::table_function::ProjectSetSelectItem::from_prost\n             at ./src/expr/src/table_function/mod.rs:126:34\n   7: core::ops::function::FnMut::call_mut\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/ops/function.rs:164:5\n   8: core::iter::adapters::map::map_try_fold::{{closure}}\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/iter/adapters/map.rs:91:28\n   9: core::iter::traits::iterator::Iterator::try_fold\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/iter/traits/iterator.rs:2238:21\n  10: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::try_fold\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/iter/adapters/map.rs:117:9\n  11: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::try_fold\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/iter/adapters/mod.rs:191:9\n  12: core::iter::traits::iterator::Iterator::try_for_each\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/iter/adapters/mod.rs:174:9\n  13: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::next\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/iter/adapters/mod.rs:174:9\n  14: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/alloc/src/vec/spec_from_iter_nested.rs:26:32\n  15: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/alloc/src/vec/spec_from_iter.rs:33:9\n  16: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/alloc/src/vec/mod.rs:2648:9\n  17: core::iter::traits::iterator::Iterator::collect\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/result.rs:2092:49\n  18: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}}\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/result.rs:2092:49\n  19: core::iter::adapters::try_process\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/iter/adapters/mod.rs:160:17\n  20: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/result.rs:2092:9\n  21: core::iter::traits::iterator::Iterator::collect\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/iter/traits/iterator.rs:1836:9\n  22: itertools::Itertools::try_collect\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/itertools-0.10.3/src/lib.rs:2014:9\n  23: <risingwave_batch::executor::project_set::ProjectSetExecutor as risingwave_batch::executor::BoxedExecutorBuilder>::new_boxed_executor::{{closure}}\n             at ./src/batch/src/executor/project_set.rs:160:35\n  24: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  25: <core::pin::Pin<P> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/future.rs:124:9\n  26: risingwave_batch::executor::ExecutorBuilder<C>::try_build::{{closure}}\n             at ./src/batch/src/executor/mod.rs:172:29\n  27: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  28: <core::pin::Pin<P> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/future.rs:124:9\n  29: risingwave_batch::executor::ExecutorBuilder<C>::build::{{closure}}\n             at ./src/batch/src/executor/mod.rs:154:25\n  30: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  31: risingwave_batch::executor::ExecutorBuilder<C>::try_build::{{closure}}\n             at ./src/batch/src/executor/mod.rs:168:64\n  32: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  33: <core::pin::Pin<P> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/future.rs:124:9\n  34: risingwave_batch::executor::ExecutorBuilder<C>::build::{{closure}}\n             at ./src/batch/src/executor/mod.rs:154:25\n  35: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  36: <tokio::task::task_local::TaskLocalFuture<T,F> as core::future::future::Future>::poll::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/task/task_local.rs:345:35\n  37: tokio::task::task_local::LocalKey<T>::scope_inner\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/task/task_local.rs:231:19\n  38: <tokio::task::task_local::TaskLocalFuture<T,F> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/task/task_local.rs:342:13\n  39: risingwave_batch::task::task_execution::BatchTaskExecution<C>::async_execute::{{closure}}\n             at ./src/batch/src/task/task_execution.rs:235:14\n  40: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  41: risingwave_batch::task::task_manager::BatchManager::fire_task::{{closure}}\n             at ./src/batch/src/task/task_manager.rs:58:37\n  42: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  43: <risingwave_batch::rpc::service::task_service::BatchServiceImpl as risingwave_pb::task_service::task_service_server::TaskService>::create_task::{{closure}}\n             at ./src/batch/src/rpc/service/task_service.rs:66:14\n  44: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  45: <core::pin::Pin<P> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/future.rs:124:9\n  46: <<risingwave_pb::task_service::task_service_server::TaskServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::CreateTaskSvc<T> as tonic::server::service::UnaryService<risingwave_pb::task_service::CreateTaskRequest>>::call::{{closure}}\n             at ./src/prost/src/task_service.rs:470:81\n  47: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  48: <core::pin::Pin<P> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/future.rs:124:9\n  49: tonic::server::grpc::Grpc<T>::unary::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tonic-0.7.2/src/server/grpc.rs:199:27\n  50: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  51: <risingwave_pb::task_service::task_service_server::TaskServiceServer<T> as tower_service::Service<http::request::Request<B>>>::call::{{closure}}\n             at ./src/prost/src/task_service.rs:486:58\n  52: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/mod.rs:91:19\n  53: <core::pin::Pin<P> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/future.rs:124:9\n  54: <F as futures_core::future::TryFuture>::try_poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-core-0.3.21/src/future.rs:82:9\n  55: <futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.21/src/future/try_future/into_future.rs:34:9\n  56: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.21/src/future/future/map.rs:55:37\n  57: <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.21/src/lib.rs:91:13\n  58: <futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.21/src/lib.rs:91:13\n  59: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tower-0.4.13/src/macros.rs:38:17\n  60: <core::pin::Pin<P> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/future.rs:124:9\n  61: <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tower-0.4.13/src/util/oneshot.rs:97:38\n  62: <axum::routing::route::RouteFuture<B,E> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/axum-0.5.13/src/routing/route.rs:150:61\n  63: <tonic::transport::service::router::RoutesFuture as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tonic-0.7.2/src/transport/service/router.rs:90:36\n  64: <tonic::transport::service::grpc_timeout::ResponseFuture<F> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tonic-0.7.2/src/transport/service/grpc_timeout.rs:88:38\n  65: <tower::util::either::Either<A,B> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tower-0.4.13/src/util/either.rs:71:57\n  66: <tonic::transport::server::recover_error::ResponseFuture<F> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tonic-0.7.2/src/transport/server/recover_error.rs:63:20\n  67: <tonic::transport::server::SvcFuture<F> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tonic-0.7.2/src/transport/server/mod.rs:757:50\n  68: <core::pin::Pin<P> as core::future::future::Future>::poll\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/future/future.rs:124:9\n  69: hyper::proto::h2::server::H2Stream<F,B>::poll2\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.14.20/src/proto/h2/server.rs:453:37\n  70: <hyper::proto::h2::server::H2Stream<F,B> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.14.20/src/proto/h2/server.rs:542:9\n  71: <tracing::instrument::Instrumented<T> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-0.1.34/src/instrument.rs:272:9\n  72: tokio::runtime::task::core::CoreStage<T>::poll::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/core.rs:165:17\n  73: tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/loom/std/unsafe_cell.rs:14:9\n  74: tokio::runtime::task::core::CoreStage<T>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/core.rs:155:13\n  75: tokio::runtime::task::harness::poll_future::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/harness.rs:480:19\n  76: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/panic/unwind_safe.rs:271:9\n  77: std::panicking::try::do_call\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panicking.rs:492:40\n  78: ___rust_try\n  79: std::panicking::try\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panicking.rs:456:19\n  80: std::panic::catch_unwind\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panic.rs:137:14\n  81: tokio::runtime::task::harness::poll_future\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/harness.rs:468:18\n  82: tokio::runtime::task::harness::Harness<T,S>::poll_inner\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/harness.rs:104:27\n  83: tokio::runtime::task::harness::Harness<T,S>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/harness.rs:57:15\n  84: tokio::runtime::task::raw::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/raw.rs:144:5\n  85: tokio::runtime::task::raw::RawTask::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/raw.rs:84:18\n  86: tokio::runtime::task::LocalNotified<S>::run\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/mod.rs:381:9\n  87: tokio::runtime::thread_pool::worker::Context::run_task::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/thread_pool/worker.rs:458:21\n  88: tokio::coop::with_budget::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/coop.rs:102:9\n  89: std::thread::local::LocalKey<T>::try_with\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/thread/local.rs:445:16\n  90: std::thread::local::LocalKey<T>::with\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/thread/local.rs:421:9\n  91: tokio::coop::with_budget\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/coop.rs:95:5\n  92: tokio::coop::budget\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/coop.rs:72:5\n  93: tokio::runtime::thread_pool::worker::Context::run_task\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/thread_pool/worker.rs:434:9\n  94: tokio::runtime::thread_pool::worker::Context::run\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/thread_pool/worker.rs:401:24\n  95: tokio::runtime::thread_pool::worker::run::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/thread_pool/worker.rs:386:17\n  96: tokio::macros::scoped_tls::ScopedKey<T>::set\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/macros/scoped_tls.rs:61:9\n  97: tokio::runtime::thread_pool::worker::run\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/thread_pool/worker.rs:383:5\n  98: tokio::runtime::thread_pool::worker::Launch::launch::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/thread_pool/worker.rs:362:45\n  99: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/blocking/task.rs:42:21\n 100: <tracing::instrument::Instrumented<T> as core::future::future::Future>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tracing-0.1.34/src/instrument.rs:272:9\n 101: tokio::runtime::task::core::CoreStage<T>::poll::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/core.rs:165:17\n 102: tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/loom/std/unsafe_cell.rs:14:9\n 103: tokio::runtime::task::core::CoreStage<T>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/core.rs:155:13\n 104: tokio::runtime::task::harness::poll_future::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/harness.rs:480:19\n 105: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/panic/unwind_safe.rs:271:9\n 106: std::panicking::try::do_call\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panicking.rs:492:40\n 107: ___rust_try\n 108: std::panicking::try\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panicking.rs:456:19\n 109: std::panic::catch_unwind\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panic.rs:137:14\n 110: tokio::runtime::task::harness::poll_future\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/harness.rs:468:18\n 111: tokio::runtime::task::harness::Harness<T,S>::poll_inner\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/harness.rs:104:27\n 112: tokio::runtime::task::harness::Harness<T,S>::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/harness.rs:57:15\n 113: tokio::runtime::task::raw::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/raw.rs:144:5\n 114: tokio::runtime::task::raw::RawTask::poll\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/raw.rs:84:18\n 115: tokio::runtime::task::UnownedTask<S>::run\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/task/mod.rs:418:9\n 116: tokio::runtime::blocking::pool::Task::run\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/blocking/pool.rs:91:9\n 117: tokio::runtime::blocking::pool::Inner::run\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/blocking/pool.rs:325:17\n 118: tokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}}\n             at /Users/xxchan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.20.0/src/runtime/blocking/pool.rs:300:13\n 119: std::sys_common::backtrace::__rust_begin_short_backtrace\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/sys_common/backtrace.rs:122:18\n 120: std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/thread/mod.rs:505:17\n 121: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/panic/unwind_safe.rs:271:9\n 122: std::panicking::try::do_call\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panicking.rs:492:40\n 123: ___rust_try\n 124: std::panicking::try\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panicking.rs:456:19\n 125: std::panic::catch_unwind\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/panic.rs:137:14\n 126: std::thread::Builder::spawn_unchecked_::{{closure}}\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/thread/mod.rs:504:30\n 127: core::ops::function::FnOnce::call_once{{vtable.shim}}\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/core/src/ops/function.rs:248:5\n 128: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/alloc/src/boxed.rs:1935:9\n 129: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/alloc/src/boxed.rs:1935:9\n 130: std::sys::unix::thread::Thread::new::thread_start\n             at /rustc/263edd43c5255084292329423c61a9d69715ebfa/library/std/src/sys/unix/thread.rs:108:17\n 131: __pthread_deallocate)", details: [], metadata: MetadataMap { headers: {"content-type": "application/grpc", "risingwave-error-bin": "CAESjcEBaW50ZXJuYWwgZXJyb3I6IFtQbGFuTm9kZTogT2soUHJvamVjdChQcm9qZWN0Tm9kZSB7IHNlbGVjdF9saXN0OiBbRXhwck5vZGUgeyBleHByX3R5cGU6IElucHV0UmVmLCByZXR1cm5fdHlwZTogU29tZShEYXRhVHlwZSB7IHR5cGVfbmFtZTogTGlzdCwgcHJlY2lzaW9uOiAwLCBzY2FsZTogMCwgaXNfbnVsbGFibGU6IHRydWUsIGludGVydmFsX3R5cGU6IEludmFsaWQsIGZpZWxkX3R5cGU6IFtEYXRhVHlwZSB7IHR5cGVfbmFtZTogVmFyY2hhciwgcHJlY2lzaW9uOiAwLCBzY2FsZTogMCwgaXNfbnVsbGFibGU6IHRydWUsIGludGVydmFsX3R5cGU6IEludmFsaWQsIGZpZWxkX3R5cGU6IFtdIH1dIH0pLCByZXhfbm9kZTogU29tZShJbnB1dFJlZihJbnB1dFJlZkV4cHIgeyBjb2x1bW5faWR4OiAxIH0pKSB9XSB9KSldIEZhaWxlZCB0byBidWlsZCBleGVjdXRvcjogaW50ZXJuYWwgZXJyb3I6IFtQbGFuTm9kZTogT2soUHJvamVjdFNldChQcm9qZWN0U2V0Tm9kZSB7IHNlbGVjdF9saXN0OiBbUHJvamVjdFNldFNlbGVjdEl0ZW0geyBzZWxlY3RfaXRlbTogU29tZShUYWJsZUZ1bmN0aW9uKFRhYmxlRnVuY3Rpb24geyBmdW5jdGlvbl90eXBlOiBVbm5lc3QsIGFyZ3M6IFtFeHByTm9kZSB7IGV4cHJfdHlwZTogQ29uc3RhbnRWYWx1ZSwgcmV0dXJuX3R5cGU6IFNvbWUoRGF0YVR5cGUgeyB0eXBlX25hbWU6IFZhcmNoYXIsIHByZWNpc2lvbjogMCwgc2NhbGU6IDAsIGlzX251bGxhYmxlOiB0cnVlLCBpbnRlcnZhbF90eXBlOiBJbnZhbGlkLCBmaWVsZF90eXBlOiBbXSB9KSwgcmV4X25vZGU6IFNvbWUoQ29uc3RhbnQoQ29uc3RhbnRWYWx1ZSB7IGJvZHk6IFs3MiwgMTAxLCAxMDgsIDEwOCwgMTExLCAzMiwgMzUsIDExNCwgMTA1LCAxMTUsIDEwNSwgMTEwLCAxMDMsIDExOSwgOTcsIDExOCwgMTAxLCAzMiwgMzUsIDExNSwgMTA1LCAxMTAsIDEwMywgMTE3LCAxMDgsIDk3LCAxMTQsIDEwNSwgMTE2LCAxMjFdIH0pKSB9LCBFeHByTm9kZSB7IGV4cHJfdHlwZTogQ29uc3RhbnRWYWx1ZSwgcmV0dXJuX3R5cGU6IFNvbWUoRGF0YVR5cGUgeyB0eXBlX25hbWU6IFZhcmNoYXIsIHByZWNpc2lvbjogMCwgc2NhbGU6IDAsIGlzX251bGxhYmxlOiB0cnVlLCBpbnRlcnZhbF90eXBlOiBJbnZhbGlkLCBmaWVsZF90eXBlOiBbXSB9KSwgcmV4X25vZGU6IFNvbWUoQ29uc3RhbnQoQ29uc3RhbnRWYWx1ZSB7IGJvZHk6IFszNSwgOTIsIDExOSwgNDNdIH0pKSB9LCBFeHByTm9kZSB7IGV4cHJfdHlwZTogQ29uc3RhbnRWYWx1ZSwgcmV0dXJuX3R5cGU6IFNvbWUoRGF0YVR5cGUgeyB0eXBlX25hbWU6IFZhcmNoYXIsIHByZWNpc2lvbjogMCwgc2NhbGU6IDAsIGlzX251bGxhYmxlOiB0cnVlLCBpbnRlcnZhbF90eXBlOiBJbnZhbGlkLCBmaWVsZF90eXBlOiBbXSB9KSwgcmV4X25vZGU6IFNvbWUoQ29uc3RhbnQoQ29uc3RhbnRWYWx1ZSB7IGJvZHk6IFsxMDNdIH0pKSB9XSwgcmV0dXJuX3R5cGU6IFNvbWUoRGF0YVR5cGUgeyB0eXBlX25hbWU6IExpc3QsIHByZWNpc2lvbjogMCwgc2NhbGU6IDAsIGlzX251bGxhYmxlOiB0cnVlLCBpbnRlcnZhbF90eXBlOiBJbnZhbGlkLCBmaWVsZF90eXBlOiBbRGF0YVR5cGUgeyB0eXBlX25hbWU6IFZhcmNoYXIsIHByZWNpc2lvbjogMCwgc2NhbGU6IDAsIGlzX251bGxhYmxlOiB0cnVlLCBpbnRlcnZhbF90eXBlOiBJbnZhbGlkLCBmaWVsZF90eXBlOiBbXSB9XSB9KSB9KSkgfV0gfSkpXSBGYWlsZWQgdG8gYnVpbGQgZXhlY3V0b3I6IEV4cHIgZXJyb3I6IEludGVybmFsKHByb3N0LmFyZ3MubGVuKCkgPT0gMQoKU3RhY2sgYmFja3RyYWNlOgogICAwOiBzdGQ6OmJhY2t0cmFjZV9yczo6YmFja3RyYWNlOjpsaWJ1bndpbmQ6OnRyYWNlCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L3N0ZC9zcmMvLi4vLi4vYmFja3RyYWNlL3NyYy9iYWNrdHJhY2UvbW9kLnJzOjY2OjUKICAgMTogc3RkOjpiYWNrdHJhY2VfcnM6OmJhY2t0cmFjZTo6dHJhY2VfdW5zeW5jaHJvbml6ZWQKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvc3RkL3NyYy8uLi8uLi9iYWNrdHJhY2Uvc3JjL2JhY2t0cmFjZS9tb2QucnM6NjY6NQogICAyOiBzdGQ6OmJhY2t0cmFjZTo6QmFja3RyYWNlOjpjcmVhdGUKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvc3RkL3NyYy9iYWNrdHJhY2UucnM6MzI4OjEzCiAgIDM6IGFueWhvdzo6a2luZDo6QWRob2M6Om5ldwogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9hbnlob3ctMS4wLjU4L3NyYy9raW5kLnJzOjcwOjM2CiAgIDQ6IHJpc2luZ3dhdmVfZXhwcjo6dGFibGVfZnVuY3Rpb246OnVubmVzdDo6bmV3X3VubmVzdAogICAgICAgICAgICAgYXQgLi9zcmMvZXhwci9zcmMvdGFibGVfZnVuY3Rpb24vdW5uZXN0LnJzOjgzOjUKICAgNTogcmlzaW5nd2F2ZV9leHByOjp0YWJsZV9mdW5jdGlvbjo6YnVpbGRfZnJvbV9wcm9zdAogICAgICAgICAgICAgYXQgLi9zcmMvZXhwci9zcmMvdGFibGVfZnVuY3Rpb24vbW9kLnJzOjYwOjE5CiAgIDY6IHJpc2luZ3dhdmVfZXhwcjo6dGFibGVfZnVuY3Rpb246OlByb2plY3RTZXRTZWxlY3RJdGVtOjpmcm9tX3Byb3N0CiAgICAgICAgICAgICBhdCAuL3NyYy9leHByL3NyYy90YWJsZV9mdW5jdGlvbi9tb2QucnM6MTI2OjM0CiAgIDc6IGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuTXV0OjpjYWxsX211dAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnM6MTY0OjUKICAgODogY29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6bWFwX3RyeV9mb2xkOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9pdGVyL2FkYXB0ZXJzL21hcC5yczo5MToyOAogICA5OiBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcjo6dHJ5X2ZvbGQKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnM6MjIzODoyMQogIDEwOiA8Y29yZTo6aXRlcjo6YWRhcHRlcnM6Om1hcDo6TWFwPEksRj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+Ojp0cnlfZm9sZAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9pdGVyL2FkYXB0ZXJzL21hcC5yczoxMTc6OQogIDExOiA8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OkdlbmVyaWNTaHVudDxJLFI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6dHJ5X2ZvbGQKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvaXRlci9hZGFwdGVycy9tb2QucnM6MTkxOjkKICAxMjogY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I6OnRyeV9mb3JfZWFjaAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9pdGVyL2FkYXB0ZXJzL21vZC5yczoxNzQ6OQogIDEzOiA8Y29yZTo6aXRlcjo6YWRhcHRlcnM6OkdlbmVyaWNTaHVudDxJLFI+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yPjo6bmV4dAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9pdGVyL2FkYXB0ZXJzL21vZC5yczoxNzQ6OQogIDE0OiA8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyX25lc3RlZDo6U3BlY0Zyb21JdGVyTmVzdGVkPFQsST4+Ojpmcm9tX2l0ZXIKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlcl9uZXN0ZWQucnM6MjY6MzIKICAxNTogPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXIKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9zcGVjX2Zyb21faXRlci5yczozMzo5CiAgMTY6IDxhbGxvYzo6dmVjOjpWZWM8VD4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjpjb2xsZWN0OjpGcm9tSXRlcmF0b3I8VD4+Ojpmcm9tX2l0ZXIKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvYWxsb2Mvc3JjL3ZlYy9tb2QucnM6MjY0ODo5CiAgMTc6IGNvcmU6Oml0ZXI6OnRyYWl0czo6aXRlcmF0b3I6Okl0ZXJhdG9yOjpjb2xsZWN0CiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL3Jlc3VsdC5yczoyMDkyOjQ5CiAgMTg6IDxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxWLEU+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJhdG9yPGNvcmU6OnJlc3VsdDo6UmVzdWx0PEEsRT4+Pjo6ZnJvbV9pdGVyOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9yZXN1bHQucnM6MjA5Mjo0OQogIDE5OiBjb3JlOjppdGVyOjphZGFwdGVyczo6dHJ5X3Byb2Nlc3MKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvaXRlci9hZGFwdGVycy9tb2QucnM6MTYwOjE3CiAgMjA6IDxjb3JlOjpyZXN1bHQ6OlJlc3VsdDxWLEU+IGFzIGNvcmU6Oml0ZXI6OnRyYWl0czo6Y29sbGVjdDo6RnJvbUl0ZXJhdG9yPGNvcmU6OnJlc3VsdDo6UmVzdWx0PEEsRT4+Pjo6ZnJvbV9pdGVyCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL3Jlc3VsdC5yczoyMDkyOjkKICAyMTogY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I6OmNvbGxlY3QKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnM6MTgzNjo5CiAgMjI6IGl0ZXJ0b29sczo6SXRlcnRvb2xzOjp0cnlfY29sbGVjdAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9pdGVydG9vbHMtMC4xMC4zL3NyYy9saWIucnM6MjAxNDo5CiAgMjM6IDxyaXNpbmd3YXZlX2JhdGNoOjpleGVjdXRvcjo6cHJvamVjdF9zZXQ6OlByb2plY3RTZXRFeGVjdXRvciBhcyByaXNpbmd3YXZlX2JhdGNoOjpleGVjdXRvcjo6Qm94ZWRFeGVjdXRvckJ1aWxkZXI+OjpuZXdfYm94ZWRfZXhlY3V0b3I6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAuL3NyYy9iYXRjaC9zcmMvZXhlY3V0b3IvcHJvamVjdF9zZXQucnM6MTYwOjM1CiAgMjQ6IDxjb3JlOjpmdXR1cmU6OmZyb21fZ2VuZXJhdG9yOjpHZW5GdXR1cmU8VD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvZnV0dXJlL21vZC5yczo5MToxOQogIDI1OiA8Y29yZTo6cGluOjpQaW48UD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvZnV0dXJlL2Z1dHVyZS5yczoxMjQ6OQogIDI2OiByaXNpbmd3YXZlX2JhdGNoOjpleGVjdXRvcjo6RXhlY3V0b3JCdWlsZGVyPEM+Ojp0cnlfYnVpbGQ6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAuL3NyYy9iYXRjaC9zcmMvZXhlY3V0b3IvbW9kLnJzOjE3MjoyOQogIDI3OiA8Y29yZTo6ZnV0dXJlOjpmcm9tX2dlbmVyYXRvcjo6R2VuRnV0dXJlPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL2Z1dHVyZS9tb2QucnM6OTE6MTkKICAyODogPGNvcmU6OnBpbjo6UGluPFA+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL2Z1dHVyZS9mdXR1cmUucnM6MTI0OjkKICAyOTogcmlzaW5nd2F2ZV9iYXRjaDo6ZXhlY3V0b3I6OkV4ZWN1dG9yQnVpbGRlcjxDPjo6YnVpbGQ6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAuL3NyYy9iYXRjaC9zcmMvZXhlY3V0b3IvbW9kLnJzOjE1NDoyNQogIDMwOiA8Y29yZTo6ZnV0dXJlOjpmcm9tX2dlbmVyYXRvcjo6R2VuRnV0dXJlPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL2Z1dHVyZS9tb2QucnM6OTE6MTkKICAzMTogcmlzaW5nd2F2ZV9iYXRjaDo6ZXhlY3V0b3I6OkV4ZWN1dG9yQnVpbGRlcjxDPjo6dHJ5X2J1aWxkOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgLi9zcmMvYmF0Y2gvc3JjL2V4ZWN1dG9yL21vZC5yczoxNjg6NjQKICAzMjogPGNvcmU6OmZ1dHVyZTo6ZnJvbV9nZW5lcmF0b3I6OkdlbkZ1dHVyZTxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9mdXR1cmUvbW9kLnJzOjkxOjE5CiAgMzM6IDxjb3JlOjpwaW46OlBpbjxQPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9mdXR1cmUvZnV0dXJlLnJzOjEyNDo5CiAgMzQ6IHJpc2luZ3dhdmVfYmF0Y2g6OmV4ZWN1dG9yOjpFeGVjdXRvckJ1aWxkZXI8Qz46OmJ1aWxkOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgLi9zcmMvYmF0Y2gvc3JjL2V4ZWN1dG9yL21vZC5yczoxNTQ6MjUKICAzNTogPGNvcmU6OmZ1dHVyZTo6ZnJvbV9nZW5lcmF0b3I6OkdlbkZ1dHVyZTxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9mdXR1cmUvbW9kLnJzOjkxOjE5CiAgMzY6IDx0b2tpbzo6dGFzazo6dGFza19sb2NhbDo6VGFza0xvY2FsRnV0dXJlPFQsRj4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGw6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvdGFzay90YXNrX2xvY2FsLnJzOjM0NTozNQogIDM3OiB0b2tpbzo6dGFzazo6dGFza19sb2NhbDo6TG9jYWxLZXk8VD46OnNjb3BlX2lubmVyCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvdGFzay90YXNrX2xvY2FsLnJzOjIzMToxOQogIDM4OiA8dG9raW86OnRhc2s6OnRhc2tfbG9jYWw6OlRhc2tMb2NhbEZ1dHVyZTxULEY+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvdGFzay90YXNrX2xvY2FsLnJzOjM0MjoxMwogIDM5OiByaXNpbmd3YXZlX2JhdGNoOjp0YXNrOjp0YXNrX2V4ZWN1dGlvbjo6QmF0Y2hUYXNrRXhlY3V0aW9uPEM+Ojphc3luY19leGVjdXRlOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgLi9zcmMvYmF0Y2gvc3JjL3Rhc2svdGFza19leGVjdXRpb24ucnM6MjM1OjE0CiAgNDA6IDxjb3JlOjpmdXR1cmU6OmZyb21fZ2VuZXJhdG9yOjpHZW5GdXR1cmU8VD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvZnV0dXJlL21vZC5yczo5MToxOQogIDQxOiByaXNpbmd3YXZlX2JhdGNoOjp0YXNrOjp0YXNrX21hbmFnZXI6OkJhdGNoTWFuYWdlcjo6ZmlyZV90YXNrOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgLi9zcmMvYmF0Y2gvc3JjL3Rhc2svdGFza19tYW5hZ2VyLnJzOjU4OjM3CiAgNDI6IDxjb3JlOjpmdXR1cmU6OmZyb21fZ2VuZXJhdG9yOjpHZW5GdXR1cmU8VD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvZnV0dXJlL21vZC5yczo5MToxOQogIDQzOiA8cmlzaW5nd2F2ZV9iYXRjaDo6cnBjOjpzZXJ2aWNlOjp0YXNrX3NlcnZpY2U6OkJhdGNoU2VydmljZUltcGwgYXMgcmlzaW5nd2F2ZV9wYjo6dGFza19zZXJ2aWNlOjp0YXNrX3NlcnZpY2Vfc2VydmVyOjpUYXNrU2VydmljZT46OmNyZWF0ZV90YXNrOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgLi9zcmMvYmF0Y2gvc3JjL3JwYy9zZXJ2aWNlL3Rhc2tfc2VydmljZS5yczo2NjoxNAogIDQ0OiA8Y29yZTo6ZnV0dXJlOjpmcm9tX2dlbmVyYXRvcjo6R2VuRnV0dXJlPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL2Z1dHVyZS9tb2QucnM6OTE6MTkKICA0NTogPGNvcmU6OnBpbjo6UGluPFA+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL2Z1dHVyZS9mdXR1cmUucnM6MTI0OjkKICA0NjogPDxyaXNpbmd3YXZlX3BiOjp0YXNrX3NlcnZpY2U6OnRhc2tfc2VydmljZV9zZXJ2ZXI6OlRhc2tTZXJ2aWNlU2VydmVyPFQ+IGFzIHRvd2VyX3NlcnZpY2U6OlNlcnZpY2U8aHR0cDo6cmVxdWVzdDo6UmVxdWVzdDxCPj4+OjpjYWxsOjpDcmVhdGVUYXNrU3ZjPFQ+IGFzIHRvbmljOjpzZXJ2ZXI6OnNlcnZpY2U6OlVuYXJ5U2VydmljZTxyaXNpbmd3YXZlX3BiOjp0YXNrX3NlcnZpY2U6OkNyZWF0ZVRhc2tSZXF1ZXN0Pj46OmNhbGw6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAuL3NyYy9wcm9zdC9zcmMvdGFza19zZXJ2aWNlLnJzOjQ3MDo4MQogIDQ3OiA8Y29yZTo6ZnV0dXJlOjpmcm9tX2dlbmVyYXRvcjo6R2VuRnV0dXJlPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL2Z1dHVyZS9tb2QucnM6OTE6MTkKICA0ODogPGNvcmU6OnBpbjo6UGluPFA+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL2Z1dHVyZS9mdXR1cmUucnM6MTI0OjkKICA0OTogdG9uaWM6OnNlcnZlcjo6Z3JwYzo6R3JwYzxUPjo6dW5hcnk6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3RvbmljLTAuNy4yL3NyYy9zZXJ2ZXIvZ3JwYy5yczoxOTk6MjcKICA1MDogPGNvcmU6OmZ1dHVyZTo6ZnJvbV9nZW5lcmF0b3I6OkdlbkZ1dHVyZTxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9mdXR1cmUvbW9kLnJzOjkxOjE5CiAgNTE6IDxyaXNpbmd3YXZlX3BiOjp0YXNrX3NlcnZpY2U6OnRhc2tfc2VydmljZV9zZXJ2ZXI6OlRhc2tTZXJ2aWNlU2VydmVyPFQ+IGFzIHRvd2VyX3NlcnZpY2U6OlNlcnZpY2U8aHR0cDo6cmVxdWVzdDo6UmVxdWVzdDxCPj4+OjpjYWxsOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgLi9zcmMvcHJvc3Qvc3JjL3Rhc2tfc2VydmljZS5yczo0ODY6NTgKICA1MjogPGNvcmU6OmZ1dHVyZTo6ZnJvbV9nZW5lcmF0b3I6OkdlbkZ1dHVyZTxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9mdXR1cmUvbW9kLnJzOjkxOjE5CiAgNTM6IDxjb3JlOjpwaW46OlBpbjxQPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9mdXR1cmUvZnV0dXJlLnJzOjEyNDo5CiAgNTQ6IDxGIGFzIGZ1dHVyZXNfY29yZTo6ZnV0dXJlOjpUcnlGdXR1cmU+Ojp0cnlfcG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9mdXR1cmVzLWNvcmUtMC4zLjIxL3NyYy9mdXR1cmUucnM6ODI6OQogIDU1OiA8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6OmludG9fZnV0dXJlOjpJbnRvRnV0dXJlPEZ1dD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvZnV0dXJlcy11dGlsLTAuMy4yMS9zcmMvZnV0dXJlL3RyeV9mdXR1cmUvaW50b19mdXR1cmUucnM6MzQ6OQogIDU2OiA8ZnV0dXJlc191dGlsOjpmdXR1cmU6OmZ1dHVyZTo6bWFwOjpNYXA8RnV0LEY+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Z1dHVyZXMtdXRpbC0wLjMuMjEvc3JjL2Z1dHVyZS9mdXR1cmUvbWFwLnJzOjU1OjM3CiAgNTc6IDxmdXR1cmVzX3V0aWw6OmZ1dHVyZTo6ZnV0dXJlOjpNYXA8RnV0LEY+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Z1dHVyZXMtdXRpbC0wLjMuMjEvc3JjL2xpYi5yczo5MToxMwogIDU4OiA8ZnV0dXJlc191dGlsOjpmdXR1cmU6OnRyeV9mdXR1cmU6Ok1hcE9rPEZ1dCxGPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9mdXR1cmVzLXV0aWwtMC4zLjIxL3NyYy9saWIucnM6OTE6MTMKICA1OTogPHRvd2VyOjp1dGlsOjptYXBfcmVzcG9uc2U6Ok1hcFJlc3BvbnNlRnV0dXJlPEYsTj4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG93ZXItMC40LjEzL3NyYy9tYWNyb3MucnM6Mzg6MTcKICA2MDogPGNvcmU6OnBpbjo6UGluPFA+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL2Z1dHVyZS9mdXR1cmUucnM6MTI0OjkKICA2MTogPHRvd2VyOjp1dGlsOjpvbmVzaG90OjpPbmVzaG90PFMsUmVxPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b3dlci0wLjQuMTMvc3JjL3V0aWwvb25lc2hvdC5yczo5NzozOAogIDYyOiA8YXh1bTo6cm91dGluZzo6cm91dGU6OlJvdXRlRnV0dXJlPEIsRT4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYXh1bS0wLjUuMTMvc3JjL3JvdXRpbmcvcm91dGUucnM6MTUwOjYxCiAgNjM6IDx0b25pYzo6dHJhbnNwb3J0OjpzZXJ2aWNlOjpyb3V0ZXI6OlJvdXRlc0Z1dHVyZSBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b25pYy0wLjcuMi9zcmMvdHJhbnNwb3J0L3NlcnZpY2Uvcm91dGVyLnJzOjkwOjM2CiAgNjQ6IDx0b25pYzo6dHJhbnNwb3J0OjpzZXJ2aWNlOjpncnBjX3RpbWVvdXQ6OlJlc3BvbnNlRnV0dXJlPEY+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3RvbmljLTAuNy4yL3NyYy90cmFuc3BvcnQvc2VydmljZS9ncnBjX3RpbWVvdXQucnM6ODg6MzgKICA2NTogPHRvd2VyOjp1dGlsOjplaXRoZXI6OkVpdGhlcjxBLEI+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rvd2VyLTAuNC4xMy9zcmMvdXRpbC9laXRoZXIucnM6NzE6NTcKICA2NjogPHRvbmljOjp0cmFuc3BvcnQ6OnNlcnZlcjo6cmVjb3Zlcl9lcnJvcjo6UmVzcG9uc2VGdXR1cmU8Rj4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9uaWMtMC43LjIvc3JjL3RyYW5zcG9ydC9zZXJ2ZXIvcmVjb3Zlcl9lcnJvci5yczo2MzoyMAogIDY3OiA8dG9uaWM6OnRyYW5zcG9ydDo6c2VydmVyOjpTdmNGdXR1cmU8Rj4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9uaWMtMC43LjIvc3JjL3RyYW5zcG9ydC9zZXJ2ZXIvbW9kLnJzOjc1Nzo1MAogIDY4OiA8Y29yZTo6cGluOjpQaW48UD4gYXMgY29yZTo6ZnV0dXJlOjpmdXR1cmU6OkZ1dHVyZT46OnBvbGwKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvZnV0dXJlL2Z1dHVyZS5yczoxMjQ6OQogIDY5OiBoeXBlcjo6cHJvdG86OmgyOjpzZXJ2ZXI6OkgyU3RyZWFtPEYsQj46OnBvbGwyCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2h5cGVyLTAuMTQuMjAvc3JjL3Byb3RvL2gyL3NlcnZlci5yczo0NTM6MzcKICA3MDogPGh5cGVyOjpwcm90bzo6aDI6OnNlcnZlcjo6SDJTdHJlYW08RixCPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9oeXBlci0wLjE0LjIwL3NyYy9wcm90by9oMi9zZXJ2ZXIucnM6NTQyOjkKICA3MTogPHRyYWNpbmc6Omluc3RydW1lbnQ6Okluc3RydW1lbnRlZDxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90cmFjaW5nLTAuMS4zNC9zcmMvaW5zdHJ1bWVudC5yczoyNzI6OQogIDcyOiB0b2tpbzo6cnVudGltZTo6dGFzazo6Y29yZTo6Q29yZVN0YWdlPFQ+Ojpwb2xsOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvdGFzay9jb3JlLnJzOjE2NToxNwogIDczOiB0b2tpbzo6bG9vbTo6c3RkOjp1bnNhZmVfY2VsbDo6VW5zYWZlQ2VsbDxUPjo6d2l0aF9tdXQKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9sb29tL3N0ZC91bnNhZmVfY2VsbC5yczoxNDo5CiAgNzQ6IHRva2lvOjpydW50aW1lOjp0YXNrOjpjb3JlOjpDb3JlU3RhZ2U8VD46OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9ydW50aW1lL3Rhc2svY29yZS5yczoxNTU6MTMKICA3NTogdG9raW86OnJ1bnRpbWU6OnRhc2s6Omhhcm5lc3M6OnBvbGxfZnV0dXJlOjp7e2Nsb3N1cmV9fQogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvdGFzay9oYXJuZXNzLnJzOjQ4MDoxOQogIDc2OiA8Y29yZTo6cGFuaWM6OnVud2luZF9zYWZlOjpBc3NlcnRVbndpbmRTYWZlPEY+IGFzIGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTwoKT4+OjpjYWxsX29uY2UKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvY29yZS9zcmMvcGFuaWMvdW53aW5kX3NhZmUucnM6MjcxOjkKICA3Nzogc3RkOjpwYW5pY2tpbmc6OnRyeTo6ZG9fY2FsbAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yczo0OTI6NDAKICA3ODogX19fcnVzdF90cnkKICA3OTogc3RkOjpwYW5pY2tpbmc6OnRyeQogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yczo0NTY6MTkKICA4MDogc3RkOjpwYW5pYzo6Y2F0Y2hfdW53aW5kCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L3N0ZC9zcmMvcGFuaWMucnM6MTM3OjE0CiAgODE6IHRva2lvOjpydW50aW1lOjp0YXNrOjpoYXJuZXNzOjpwb2xsX2Z1dHVyZQogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvdGFzay9oYXJuZXNzLnJzOjQ2ODoxOAogIDgyOiB0b2tpbzo6cnVudGltZTo6dGFzazo6aGFybmVzczo6SGFybmVzczxULFM+Ojpwb2xsX2lubmVyCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90YXNrL2hhcm5lc3MucnM6MTA0OjI3CiAgODM6IHRva2lvOjpydW50aW1lOjp0YXNrOjpoYXJuZXNzOjpIYXJuZXNzPFQsUz46OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9ydW50aW1lL3Rhc2svaGFybmVzcy5yczo1NzoxNQogIDg0OiB0b2tpbzo6cnVudGltZTo6dGFzazo6cmF3Ojpwb2xsCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90YXNrL3Jhdy5yczoxNDQ6NQogIDg1OiB0b2tpbzo6cnVudGltZTo6dGFzazo6cmF3OjpSYXdUYXNrOjpwb2xsCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90YXNrL3Jhdy5yczo4NDoxOAogIDg2OiB0b2tpbzo6cnVudGltZTo6dGFzazo6TG9jYWxOb3RpZmllZDxTPjo6cnVuCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90YXNrL21vZC5yczozODE6OQogIDg3OiB0b2tpbzo6cnVudGltZTo6dGhyZWFkX3Bvb2w6Ondvcmtlcjo6Q29udGV4dDo6cnVuX3Rhc2s6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90aHJlYWRfcG9vbC93b3JrZXIucnM6NDU4OjIxCiAgODg6IHRva2lvOjpjb29wOjp3aXRoX2J1ZGdldDo6e3tjbG9zdXJlfX0KICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9jb29wLnJzOjEwMjo5CiAgODk6IHN0ZDo6dGhyZWFkOjpsb2NhbDo6TG9jYWxLZXk8VD46OnRyeV93aXRoCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzOjQ0NToxNgogIDkwOiBzdGQ6OnRocmVhZDo6bG9jYWw6OkxvY2FsS2V5PFQ+Ojp3aXRoCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzOjQyMTo5CiAgOTE6IHRva2lvOjpjb29wOjp3aXRoX2J1ZGdldAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL2Nvb3AucnM6OTU6NQogIDkyOiB0b2tpbzo6Y29vcDo6YnVkZ2V0CiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvY29vcC5yczo3Mjo1CiAgOTM6IHRva2lvOjpydW50aW1lOjp0aHJlYWRfcG9vbDo6d29ya2VyOjpDb250ZXh0OjpydW5fdGFzawogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvdGhyZWFkX3Bvb2wvd29ya2VyLnJzOjQzNDo5CiAgOTQ6IHRva2lvOjpydW50aW1lOjp0aHJlYWRfcG9vbDo6d29ya2VyOjpDb250ZXh0OjpydW4KICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9ydW50aW1lL3RocmVhZF9wb29sL3dvcmtlci5yczo0MDE6MjQKICA5NTogdG9raW86OnJ1bnRpbWU6OnRocmVhZF9wb29sOjp3b3JrZXI6OnJ1bjo6e3tjbG9zdXJlfX0KICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9ydW50aW1lL3RocmVhZF9wb29sL3dvcmtlci5yczozODY6MTcKICA5NjogdG9raW86Om1hY3Jvczo6c2NvcGVkX3Rsczo6U2NvcGVkS2V5PFQ+OjpzZXQKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9tYWNyb3Mvc2NvcGVkX3Rscy5yczo2MTo5CiAgOTc6IHRva2lvOjpydW50aW1lOjp0aHJlYWRfcG9vbDo6d29ya2VyOjpydW4KICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9ydW50aW1lL3RocmVhZF9wb29sL3dvcmtlci5yczozODM6NQogIDk4OiB0b2tpbzo6cnVudGltZTo6dGhyZWFkX3Bvb2w6Ondvcmtlcjo6TGF1bmNoOjpsYXVuY2g6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90aHJlYWRfcG9vbC93b3JrZXIucnM6MzYyOjQ1CiAgOTk6IDx0b2tpbzo6cnVudGltZTo6YmxvY2tpbmc6OnRhc2s6OkJsb2NraW5nVGFzazxUPiBhcyBjb3JlOjpmdXR1cmU6OmZ1dHVyZTo6RnV0dXJlPjo6cG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvYmxvY2tpbmcvdGFzay5yczo0MjoyMQogMTAwOiA8dHJhY2luZzo6aW5zdHJ1bWVudDo6SW5zdHJ1bWVudGVkPFQ+IGFzIGNvcmU6OmZ1dHVyZTo6ZnV0dXJlOjpGdXR1cmU+Ojpwb2xsCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3RyYWNpbmctMC4xLjM0L3NyYy9pbnN0cnVtZW50LnJzOjI3Mjo5CiAxMDE6IHRva2lvOjpydW50aW1lOjp0YXNrOjpjb3JlOjpDb3JlU3RhZ2U8VD46OnBvbGw6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90YXNrL2NvcmUucnM6MTY1OjE3CiAxMDI6IHRva2lvOjpsb29tOjpzdGQ6OnVuc2FmZV9jZWxsOjpVbnNhZmVDZWxsPFQ+Ojp3aXRoX211dAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL2xvb20vc3RkL3Vuc2FmZV9jZWxsLnJzOjE0OjkKIDEwMzogdG9raW86OnJ1bnRpbWU6OnRhc2s6OmNvcmU6OkNvcmVTdGFnZTxUPjo6cG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvdGFzay9jb3JlLnJzOjE1NToxMwogMTA0OiB0b2tpbzo6cnVudGltZTo6dGFzazo6aGFybmVzczo6cG9sbF9mdXR1cmU6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90YXNrL2hhcm5lc3MucnM6NDgwOjE5CiAxMDU6IDxjb3JlOjpwYW5pYzo6dW53aW5kX3NhZmU6OkFzc2VydFVud2luZFNhZmU8Rj4gYXMgY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlPCgpPj46OmNhbGxfb25jZQogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9wYW5pYy91bndpbmRfc2FmZS5yczoyNzE6OQogMTA2OiBzdGQ6OnBhbmlja2luZzo6dHJ5Ojpkb19jYWxsCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzOjQ5Mjo0MAogMTA3OiBfX19ydXN0X3RyeQogMTA4OiBzdGQ6OnBhbmlja2luZzo6dHJ5CiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzOjQ1NjoxOQogMTA5OiBzdGQ6OnBhbmljOjpjYXRjaF91bndpbmQKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvc3RkL3NyYy9wYW5pYy5yczoxMzc6MTQKIDExMDogdG9raW86OnJ1bnRpbWU6OnRhc2s6Omhhcm5lc3M6OnBvbGxfZnV0dXJlCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90YXNrL2hhcm5lc3MucnM6NDY4OjE4CiAxMTE6IHRva2lvOjpydW50aW1lOjp0YXNrOjpoYXJuZXNzOjpIYXJuZXNzPFQsUz46OnBvbGxfaW5uZXIKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9ydW50aW1lL3Rhc2svaGFybmVzcy5yczoxMDQ6MjcKIDExMjogdG9raW86OnJ1bnRpbWU6OnRhc2s6Omhhcm5lc3M6Okhhcm5lc3M8VCxTPjo6cG9sbAogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvdGFzay9oYXJuZXNzLnJzOjU3OjE1CiAxMTM6IHRva2lvOjpydW50aW1lOjp0YXNrOjpyYXc6OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9ydW50aW1lL3Rhc2svcmF3LnJzOjE0NDo1CiAxMTQ6IHRva2lvOjpydW50aW1lOjp0YXNrOjpyYXc6OlJhd1Rhc2s6OnBvbGwKICAgICAgICAgICAgIGF0IC9Vc2Vycy94eGNoYW4vLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvdG9raW8tMS4yMC4wL3NyYy9ydW50aW1lL3Rhc2svcmF3LnJzOjg0OjE4CiAxMTU6IHRva2lvOjpydW50aW1lOjp0YXNrOjpVbm93bmVkVGFzazxTPjo6cnVuCiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS90YXNrL21vZC5yczo0MTg6OQogMTE2OiB0b2tpbzo6cnVudGltZTo6YmxvY2tpbmc6OnBvb2w6OlRhc2s6OnJ1bgogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvYmxvY2tpbmcvcG9vbC5yczo5MTo5CiAxMTc6IHRva2lvOjpydW50aW1lOjpibG9ja2luZzo6cG9vbDo6SW5uZXI6OnJ1bgogICAgICAgICAgICAgYXQgL1VzZXJzL3h4Y2hhbi8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy90b2tpby0xLjIwLjAvc3JjL3J1bnRpbWUvYmxvY2tpbmcvcG9vbC5yczozMjU6MTcKIDExODogdG9raW86OnJ1bnRpbWU6OmJsb2NraW5nOjpwb29sOjpTcGF3bmVyOjpzcGF3bl90aHJlYWQ6Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAvVXNlcnMveHhjaGFuLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3Rva2lvLTEuMjAuMC9zcmMvcnVudGltZS9ibG9ja2luZy9wb29sLnJzOjMwMDoxMwogMTE5OiBzdGQ6OnN5c19jb21tb246OmJhY2t0cmFjZTo6X19ydXN0X2JlZ2luX3Nob3J0X2JhY2t0cmFjZQogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9zdGQvc3JjL3N5c19jb21tb24vYmFja3RyYWNlLnJzOjEyMjoxOAogMTIwOiBzdGQ6OnRocmVhZDo6QnVpbGRlcjo6c3Bhd25fdW5jaGVja2VkXzo6e3tjbG9zdXJlfX06Ont7Y2xvc3VyZX19CiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL21vZC5yczo1MDU6MTcKIDEyMTogPGNvcmU6OnBhbmljOjp1bndpbmRfc2FmZTo6QXNzZXJ0VW53aW5kU2FmZTxGPiBhcyBjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U8KCk+Pjo6Y2FsbF9vbmNlCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2NvcmUvc3JjL3BhbmljL3Vud2luZF9zYWZlLnJzOjI3MTo5CiAxMjI6IHN0ZDo6cGFuaWNraW5nOjp0cnk6OmRvX2NhbGwKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnM6NDkyOjQwCiAxMjM6IF9fX3J1c3RfdHJ5CiAxMjQ6IHN0ZDo6cGFuaWNraW5nOjp0cnkKICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnM6NDU2OjE5CiAxMjU6IHN0ZDo6cGFuaWM6OmNhdGNoX3Vud2luZAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9zdGQvc3JjL3BhbmljLnJzOjEzNzoxNAogMTI2OiBzdGQ6OnRocmVhZDo6QnVpbGRlcjo6c3Bhd25fdW5jaGVja2VkXzo6e3tjbG9zdXJlfX0KICAgICAgICAgICAgIGF0IC9ydXN0Yy8yNjNlZGQ0M2M1MjU1MDg0MjkyMzI5NDIzYzYxYTlkNjk3MTVlYmZhL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbW9kLnJzOjUwNDozMAogMTI3OiBjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fQogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9jb3JlL3NyYy9vcHMvZnVuY3Rpb24ucnM6MjQ4OjUKIDEyODogPGFsbG9jOjpib3hlZDo6Qm94PEYsQT4gYXMgY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlPEFyZ3M+Pjo6Y2FsbF9vbmNlCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2FsbG9jL3NyYy9ib3hlZC5yczoxOTM1OjkKIDEyOTogPGFsbG9jOjpib3hlZDo6Qm94PEYsQT4gYXMgY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlPEFyZ3M+Pjo6Y2FsbF9vbmNlCiAgICAgICAgICAgICBhdCAvcnVzdGMvMjYzZWRkNDNjNTI1NTA4NDI5MjMyOTQyM2M2MWE5ZDY5NzE1ZWJmYS9saWJyYXJ5L2FsbG9jL3NyYy9ib3hlZC5yczoxOTM1OjkKIDEzMDogc3RkOjpzeXM6OnVuaXg6OnRocmVhZDo6VGhyZWFkOjpuZXc6OnRocmVhZF9zdGFydAogICAgICAgICAgICAgYXQgL3J1c3RjLzI2M2VkZDQzYzUyNTUwODQyOTIzMjk0MjNjNjFhOWQ2OTcxNWViZmEvbGlicmFyeS9zdGQvc3JjL3N5cy91bml4L3RocmVhZC5yczoxMDg6MTcKIDEzMTogX19wdGhyZWFkX2RlYWxsb2NhdGUp", "date": "Wed, 20 Jul 2022 15:35:37 GMT", "content-length": "0"} }.
dev=>

and

dev=> create table t(x int,y int);
CREATE_TABLE
dev=> insert into t values(4,2),(1,0);
INSERT 0 2
dev=> select x/y from t;
ERROR:  QueryError: RPC error: Status { code: Internal, message: "internal error: broken fifo_channel", metadata: MetadataMap { headers: {"risingwave-error-bin": "CAESI2ludGVybmFsIGVycm9yOiBicm9rZW4gZmlmb19jaGFubmVs"} }, source: None }.

@xxchan
Copy link
Member Author

xxchan commented Jul 26, 2022

IMO there are different problems:

Better error display for RpcError

  • unwrap InternalError
  • handle some status code. e.g. transport error which might or might not caused by panic

Propagating errors
There're some discussion here #3908.

Result might not be serializable and cannot be sent over the network. I think the current implementation is okay. If there's an error, we can find it on upstream compute node?

We can modify the error message to be more user friendly, like "[E2333] internal error when computing", where E2333 = fifo channel broken. Then developers can go into the log dashboard (maybe ELK in the future) to find what's happening.

Originally posted by @skyzh in #3908 (comment)

I think fifo channel broken isn't user-friendly enough. Maybe we need another dedicated serializable error? (RwError should originally be so? But misused #4077)

Possible implementation problem:

Had an offline discussion with @lmatz and he suggested the following:

Multiple upstream executors may yield multiple errors, causing the errors to accumulate. Does not make sense to pass all these downstream.
One way to deal with this is by having a separate mechanism for tracking all errors.
We can push all errors to some error queue as they are encountered, then frontend can use this to view errors.

This currently blocks sqlsmith work, since we can't know what the source of broken fifo channel error is: Runtime error? System internal error? etc... This means we won't know if a query is failing due to runtime error or system internal error.

Originally posted by @kwannoel in #3908 (comment)

@xxchan
Copy link
Member Author

xxchan commented Jul 27, 2022

I think fifo channel broken isn't user-friendly enough. Maybe we need another dedicated serializable error? (RwError should originally be so? But misused #4077)

Maybe use Status proto?
https://github.com/singularity-data/risingwave/blob/9d8b7d2bd7b9041f3272aed081d7cc99a36a968c/proto/common.proto#L7-L13

Some discussion here #4227 (comment)

@xxchan
Copy link
Member Author

xxchan commented Mar 22, 2023

I feel am not sure if it's better now. We may solve case by case (or reopen) in the future if it occurs again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants