From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32A8BC433E2 for ; Thu, 3 Sep 2020 16:20:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E6C5520829 for ; Thu, 3 Sep 2020 16:20:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1599150047; bh=80MRQcc/dskjVxhhaT5cX4wwojeRy/pJGcIGScdvztA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=ZGf/kA8Jcqc8A51ADodSeH/PX9Rfz1HlijgM3dNULU86F3rlhEsBtKOeaVBArA3vI m1xF0UfawIhQwgyxWtXxndm7BS77oLDqE6Jz7psq93/woUf3ymwRAv/s2+Jmxe7+rX aiWgDYo/2EA0ONEq4LT6co0Cmw45bvcGGDsPvCl8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728321AbgICQUp (ORCPT ); Thu, 3 Sep 2020 12:20:45 -0400 Received: from mail.kernel.org ([198.145.29.99]:46508 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726292AbgICQUp (ORCPT ); Thu, 3 Sep 2020 12:20:45 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 145B920722; Thu, 3 Sep 2020 16:20:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1599150042; bh=80MRQcc/dskjVxhhaT5cX4wwojeRy/pJGcIGScdvztA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=qNepaLgRDuVK6ZUJqKnF2/scV78eTbDi8YF4m19LulhwH9BnwV1dUyv8xWqksGwyz MPXfjmPn7oTS754K0H1wVMunapfO/QoFT1Clbv1/1hUIQfrDpPMUEF0V80FEvjTzBI DC+Yq6dEmD9ANW9xYA5c6hif/lV2fpPGIyaEDj4M= Date: Thu, 3 Sep 2020 18:21:05 +0200 From: Greg Kroah-Hartman To: Frankie Chang Cc: Todd Kjos , Joel Fernandes , Martijn Coenen , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Christian Brauner , linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, wsd_upstream@mediatek.com, Jian-Min Liu Subject: Re: [PATCH v7] binder: transaction latency tracking for user build Message-ID: <20200903162105.GA371057@kroah.com> References: <1596509145.5207.21.camel@mtkswgap22> <1596549552-5466-1-git-send-email-Frankie.Chang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1596549552-5466-1-git-send-email-Frankie.Chang@mediatek.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Aug 04, 2020 at 09:59:09PM +0800, Frankie Chang wrote: > > Frankie.Chang (3): > binder: move structs from core file to header file > binder: add trace at free transaction. > binder: add transaction latency tracer > > drivers/android/Kconfig | 8 + > drivers/android/Makefile | 1 + > drivers/android/binder.c | 425 ++----------------------------- > drivers/android/binder_internal.h | 417 ++++++++++++++++++++++++++++++ > drivers/android/binder_latency_tracer.c | 112 ++++++++ > drivers/android/binder_trace.h | 49 ++++ > 6 files changed, 607 insertions(+), 405 deletions(-) create mode 100644 drivers/android/binder_latency_tracer.c This series blows up the build into lots of tiny pieces, how was it tested? Here's my error logs: In file included from drivers/android/binderfs.c:37: drivers/android/binder_internal.h:537:17: error: field ‘tv’ has incomplete type 537 | struct timeval tv; | ^~ In file included from drivers/android/binder_trace.h:12, from drivers/android/binder_alloc.c:27: drivers/android/binder_trace.h: In function ‘trace_binder_txn_latency_alloc’: drivers/android/binder_trace.h:100:13: error: ‘e’ undeclared (first use in this function) 100 | TP_ARGS(t, e) | ^ ./include/linux/tracepoint.h:191:33: note: in definition of macro ‘__DO_TRACE’ 191 | ((void(*)(proto))(it_func))(args); \ | ^~~~ ./include/linux/tracepoint.h:236:5: note: in expansion of macro ‘TP_ARGS’ 236 | TP_ARGS(data_args), \ | ^~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:378:4: note: in expansion of macro ‘PARAMS’ 378 | PARAMS(__data, args)) | ^~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:100:2: note: in expansion of macro ‘TP_ARGS’ 100 | TP_ARGS(t, e) | ^~~~~~~ drivers/android/binder_trace.h:100:13: note: each undeclared identifier is reported only once for each function it appears in 100 | TP_ARGS(t, e) | ^ ./include/linux/tracepoint.h:191:33: note: in definition of macro ‘__DO_TRACE’ 191 | ((void(*)(proto))(it_func))(args); \ | ^~~~ ./include/linux/tracepoint.h:236:5: note: in expansion of macro ‘TP_ARGS’ 236 | TP_ARGS(data_args), \ | ^~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:378:4: note: in expansion of macro ‘PARAMS’ 378 | PARAMS(__data, args)) | ^~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:100:2: note: in expansion of macro ‘TP_ARGS’ 100 | TP_ARGS(t, e) | ^~~~~~~ ./include/linux/tracepoint.h:191:6: error: too many arguments to function ‘(void (*)(void *, struct binder_transaction *))it_func’ 191 | ((void(*)(proto))(it_func))(args); \ | ~^~~~~~~~~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:234:4: note: in expansion of macro ‘__DO_TRACE’ 234 | __DO_TRACE(&__tracepoint_##name, \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h: In function ‘trace_binder_txn_latency_alloc_rcuidle’: drivers/android/binder_trace.h:100:13: error: ‘e’ undeclared (first use in this function) 100 | TP_ARGS(t, e) | ^ ./include/linux/tracepoint.h:191:33: note: in definition of macro ‘__DO_TRACE’ 191 | ((void(*)(proto))(it_func))(args); \ | ^~~~ ./include/linux/tracepoint.h:210:5: note: in expansion of macro ‘TP_ARGS’ 210 | TP_ARGS(data_args), \ | ^~~~~~~ ./include/linux/tracepoint.h:244:2: note: in expansion of macro ‘__DECLARE_TRACE_RCU’ 244 | __DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:245:37: note: in expansion of macro ‘PARAMS’ 245 | PARAMS(cond), PARAMS(data_proto), PARAMS(data_args)) \ | ^~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:378:4: note: in expansion of macro ‘PARAMS’ 378 | PARAMS(__data, args)) | ^~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:100:2: note: in expansion of macro ‘TP_ARGS’ 100 | TP_ARGS(t, e) | ^~~~~~~ ./include/linux/tracepoint.h:191:6: error: too many arguments to function ‘(void (*)(void *, struct binder_transaction *))it_func’ 191 | ((void(*)(proto))(it_func))(args); \ | ~^~~~~~~~~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:208:4: note: in expansion of macro ‘__DO_TRACE’ 208 | __DO_TRACE(&__tracepoint_##name, \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:244:2: note: in expansion of macro ‘__DECLARE_TRACE_RCU’ 244 | __DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h: At top level: drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:231:34: note: in definition of macro ‘__DECLARE_TRACE’ 231 | static inline void trace_##name(proto) \ | ^~~~~ ./include/linux/tracepoint.h:375:24: note: in expansion of macro ‘PARAMS’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:205:44: note: in definition of macro ‘__DECLARE_TRACE_RCU’ 205 | static inline void trace_##name##_rcuidle(proto) \ | ^~~~~ ./include/linux/tracepoint.h:244:28: note: in expansion of macro ‘PARAMS’ 244 | __DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:375:24: note: in expansion of macro ‘PARAMS’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:247:38: note: in definition of macro ‘__DECLARE_TRACE’ 247 | register_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:247:51: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 247 | register_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:253:43: note: in definition of macro ‘__DECLARE_TRACE’ 253 | register_trace_prio_##name(void (*probe)(data_proto), void *data,\ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:253:56: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 253 | register_trace_prio_##name(void (*probe)(data_proto), void *data,\ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:260:40: note: in definition of macro ‘__DECLARE_TRACE’ 260 | unregister_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:260:53: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 260 | unregister_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:266:46: note: in definition of macro ‘__DECLARE_TRACE’ 266 | check_trace_callback_type_##name(void (*cb)(data_proto)) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ make[2]: *** [scripts/Makefile.build:283: drivers/android/binderfs.o] Error 1 make[2]: *** Waiting for unfinished jobs.... In file included from drivers/android/binder_latency_tracer.c:8: drivers/android/binder_internal.h:141:20: error: ‘BINDERFS_MAX_NAME’ undeclared here (not in a function) 141 | char context_name[BINDERFS_MAX_NAME + 1]; | ^~~~~~~~~~~~~~~~~ drivers/android/binder_internal.h:537:17: error: field ‘tv’ has incomplete type 537 | struct timeval tv; | ^~ In file included from drivers/android/binder_trace.h:12, from drivers/android/binder_latency_tracer.c:9: drivers/android/binder_trace.h: In function ‘trace_binder_txn_latency_alloc’: drivers/android/binder_trace.h:100:13: error: ‘e’ undeclared (first use in this function) 100 | TP_ARGS(t, e) | ^ ./include/linux/tracepoint.h:191:33: note: in definition of macro ‘__DO_TRACE’ 191 | ((void(*)(proto))(it_func))(args); \ | ^~~~ ./include/linux/tracepoint.h:236:5: note: in expansion of macro ‘TP_ARGS’ 236 | TP_ARGS(data_args), \ | ^~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:378:4: note: in expansion of macro ‘PARAMS’ 378 | PARAMS(__data, args)) | ^~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:100:2: note: in expansion of macro ‘TP_ARGS’ 100 | TP_ARGS(t, e) | ^~~~~~~ drivers/android/binder_trace.h:100:13: note: each undeclared identifier is reported only once for each function it appears in 100 | TP_ARGS(t, e) | ^ ./include/linux/tracepoint.h:191:33: note: in definition of macro ‘__DO_TRACE’ 191 | ((void(*)(proto))(it_func))(args); \ | ^~~~ ./include/linux/tracepoint.h:236:5: note: in expansion of macro ‘TP_ARGS’ 236 | TP_ARGS(data_args), \ | ^~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:378:4: note: in expansion of macro ‘PARAMS’ 378 | PARAMS(__data, args)) | ^~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:100:2: note: in expansion of macro ‘TP_ARGS’ 100 | TP_ARGS(t, e) | ^~~~~~~ ./include/linux/tracepoint.h:191:6: error: too many arguments to function ‘(void (*)(void *, struct binder_transaction *))it_func’ 191 | ((void(*)(proto))(it_func))(args); \ | ~^~~~~~~~~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:234:4: note: in expansion of macro ‘__DO_TRACE’ 234 | __DO_TRACE(&__tracepoint_##name, \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h: At top level: drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:231:34: note: in definition of macro ‘__DECLARE_TRACE’ 231 | static inline void trace_##name(proto) \ | ^~~~~ ./include/linux/tracepoint.h:375:24: note: in expansion of macro ‘PARAMS’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:247:38: note: in definition of macro ‘__DECLARE_TRACE’ 247 | register_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:247:51: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 247 | register_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:253:43: note: in definition of macro ‘__DECLARE_TRACE’ 253 | register_trace_prio_##name(void (*probe)(data_proto), void *data,\ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:253:56: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 253 | register_trace_prio_##name(void (*probe)(data_proto), void *data,\ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:260:40: note: in definition of macro ‘__DECLARE_TRACE’ 260 | unregister_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:260:53: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 260 | unregister_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:266:46: note: in definition of macro ‘__DECLARE_TRACE’ 266 | check_trace_callback_type_##name(void (*cb)(data_proto)) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ In file included from drivers/android/binder.c:75: drivers/android/binder_internal.h:537:17: error: field ‘tv’ has incomplete type 537 | struct timeval tv; | ^~ In file included from ./include/trace/syscall.h:5, from ./include/linux/syscalls.h:84, from drivers/android/binder.c:66: drivers/android/binder_trace.h: In function ‘trace_binder_txn_latency_alloc’: drivers/android/binder_trace.h:100:13: error: ‘e’ undeclared (first use in this function) 100 | TP_ARGS(t, e) | ^ ./include/linux/tracepoint.h:191:33: note: in definition of macro ‘__DO_TRACE’ 191 | ((void(*)(proto))(it_func))(args); \ | ^~~~ ./include/linux/tracepoint.h:236:5: note: in expansion of macro ‘TP_ARGS’ 236 | TP_ARGS(data_args), \ | ^~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:378:4: note: in expansion of macro ‘PARAMS’ 378 | PARAMS(__data, args)) | ^~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:100:2: note: in expansion of macro ‘TP_ARGS’ 100 | TP_ARGS(t, e) | ^~~~~~~ drivers/android/binder_trace.h:100:13: note: each undeclared identifier is reported only once for each function it appears in 100 | TP_ARGS(t, e) | ^ ./include/linux/tracepoint.h:191:33: note: in definition of macro ‘__DO_TRACE’ 191 | ((void(*)(proto))(it_func))(args); \ | ^~~~ ./include/linux/tracepoint.h:236:5: note: in expansion of macro ‘TP_ARGS’ 236 | TP_ARGS(data_args), \ | ^~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:378:4: note: in expansion of macro ‘PARAMS’ 378 | PARAMS(__data, args)) | ^~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:100:2: note: in expansion of macro ‘TP_ARGS’ 100 | TP_ARGS(t, e) | ^~~~~~~ ./include/linux/tracepoint.h:191:6: error: too many arguments to function ‘(void (*)(void *, struct binder_transaction *))it_func’ 191 | ((void(*)(proto))(it_func))(args); \ | ~^~~~~~~~~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:234:4: note: in expansion of macro ‘__DO_TRACE’ 234 | __DO_TRACE(&__tracepoint_##name, \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h: In function ‘trace_binder_txn_latency_alloc_rcuidle’: drivers/android/binder_trace.h:100:13: error: ‘e’ undeclared (first use in this function) 100 | TP_ARGS(t, e) | ^ ./include/linux/tracepoint.h:191:33: note: in definition of macro ‘__DO_TRACE’ 191 | ((void(*)(proto))(it_func))(args); \ | ^~~~ ./include/linux/tracepoint.h:210:5: note: in expansion of macro ‘TP_ARGS’ 210 | TP_ARGS(data_args), \ | ^~~~~~~ ./include/linux/tracepoint.h:244:2: note: in expansion of macro ‘__DECLARE_TRACE_RCU’ 244 | __DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:245:37: note: in expansion of macro ‘PARAMS’ 245 | PARAMS(cond), PARAMS(data_proto), PARAMS(data_args)) \ | ^~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:378:4: note: in expansion of macro ‘PARAMS’ 378 | PARAMS(__data, args)) | ^~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:100:2: note: in expansion of macro ‘TP_ARGS’ 100 | TP_ARGS(t, e) | ^~~~~~~ ./include/linux/tracepoint.h:191:6: error: too many arguments to function ‘(void (*)(void *, struct binder_transaction *))it_func’ 191 | ((void(*)(proto))(it_func))(args); \ | ~^~~~~~~~~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:208:4: note: in expansion of macro ‘__DO_TRACE’ 208 | __DO_TRACE(&__tracepoint_##name, \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:244:2: note: in expansion of macro ‘__DECLARE_TRACE_RCU’ 244 | __DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ drivers/android/binder_trace.h:98:1: note: in expansion of macro ‘DECLARE_TRACE’ 98 | DECLARE_TRACE(binder_txn_latency_alloc, | ^~~~~~~~~~~~~ drivers/android/binder_trace.h: At top level: drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:231:34: note: in definition of macro ‘__DECLARE_TRACE’ 231 | static inline void trace_##name(proto) \ | ^~~~~ ./include/linux/tracepoint.h:375:24: note: in expansion of macro ‘PARAMS’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:205:44: note: in definition of macro ‘__DECLARE_TRACE_RCU’ 205 | static inline void trace_##name##_rcuidle(proto) \ | ^~~~~ ./include/linux/tracepoint.h:244:28: note: in expansion of macro ‘PARAMS’ 244 | __DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:375:24: note: in expansion of macro ‘PARAMS’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:247:38: note: in definition of macro ‘__DECLARE_TRACE’ 247 | register_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:247:51: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 247 | register_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:253:43: note: in definition of macro ‘__DECLARE_TRACE’ 253 | register_trace_prio_##name(void (*probe)(data_proto), void *data,\ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:253:56: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 253 | register_trace_prio_##name(void (*probe)(data_proto), void *data,\ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:260:40: note: in definition of macro ‘__DECLARE_TRACE’ 260 | unregister_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ ./include/linux/tracepoint.h:260:53: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’ 260 | unregister_trace_##name(void (*probe)(data_proto), void *data) \ | ^~~~ ./include/linux/tracepoint.h:375:2: note: in expansion of macro ‘__DECLARE_TRACE’ 375 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | ^~~~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/linux/tracepoint.h:266:46: note: in definition of macro ‘__DECLARE_TRACE’ 266 | check_trace_callback_type_##name(void (*cb)(data_proto)) \ | ^~~~~~~~~~ ./include/linux/tracepoint.h:377:4: note: in expansion of macro ‘PARAMS’ 377 | PARAMS(void *__data, proto), \ | ^~~~~~ ./include/linux/tracepoint.h:511:2: note: in expansion of macro ‘DECLARE_TRACE’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~~~~~~~~ ./include/linux/tracepoint.h:511:22: note: in expansion of macro ‘PARAMS’ 511 | DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) | ^~~~~~ drivers/android/binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ drivers/android/binder_latency_tracer.c: In function ‘probe_binder_txn_latency_free’: drivers/android/binder_latency_tracer.c:43:2: error: implicit declaration of function ‘rtc_time_to_tm’; did you mean ‘rtc_ktime_to_tm’? [-Werror=implicit-function-declaration] 43 | rtc_time_to_tm(t->tv.tv_sec, &tm); | ^~~~~~~~~~~~~~ | rtc_ktime_to_tm make[2]: *** [scripts/Makefile.build:283: drivers/android/binder_alloc.o] Error 1 drivers/android/binder_latency_tracer.c: In function ‘init_binder_latency_tracer’: drivers/android/binder_latency_tracer.c:89:2: error: implicit declaration of function ‘register_trace_binder_txn_latency_free’; did you mean ‘register_trace_binder_txn_latency_info’? [-Werror=implicit-function-declaration] 89 | register_trace_binder_txn_latency_free( | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | register_trace_binder_txn_latency_info drivers/android/binder_latency_tracer.c: In function ‘exit_binder_latency_tracer’: drivers/android/binder_latency_tracer.c:101:2: error: implicit declaration of function ‘unregister_trace_binder_txn_latency_free’; did you mean ‘unregister_trace_binder_txn_latency_info’? [-Werror=implicit-function-declaration] 101 | unregister_trace_binder_txn_latency_free( | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | unregister_trace_binder_txn_latency_info cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:283: drivers/android/binder_latency_tracer.o] Error 1 drivers/android/binder.c: In function ‘binder_txn_latency_free’: drivers/android/binder.c:1522:2: error: implicit declaration of function ‘trace_binder_txn_latency_free’; did you mean ‘trace_binder_txn_latency_info’? [-Werror=implicit-function-declaration] 1522 | trace_binder_txn_latency_free(t, from_proc, from_thread, to_proc, to_thread); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | trace_binder_txn_latency_info In file included from ./include/trace/define_trace.h:102, from drivers/android/binder_trace.h:448, from drivers/android/binder.c:5822: drivers/android/./binder_trace.h: At top level: drivers/android/./binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/trace/trace_events.h:510:58: note: in definition of macro ‘DECLARE_EVENT_CLASS’ 510 | struct trace_event_data_offsets_##call *__data_offsets, proto) \ | ^~~~~ ./include/trace/trace_events.h:76:9: note: in expansion of macro ‘PARAMS’ 76 | PARAMS(proto), \ | ^~~~~~ drivers/android/./binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/./binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ In file included from ./include/trace/define_trace.h:102, from drivers/android/binder_trace.h:448, from drivers/android/binder.c:5822: drivers/android/./binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/trace/trace_events.h:674:44: note: in definition of macro ‘DECLARE_EVENT_CLASS’ 674 | trace_event_raw_event_##call(void *__data, proto) \ | ^~~~~ ./include/trace/trace_events.h:76:9: note: in expansion of macro ‘PARAMS’ 76 | PARAMS(proto), \ | ^~~~~~ drivers/android/./binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/./binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ drivers/android/./binder_trace.h: In function ‘ftrace_test_probe_binder_txn_latency_free’: ./include/trace/trace_events.h:709:2: error: implicit declaration of function ‘check_trace_callback_type_binder_txn_latency_free’; did you mean ‘check_trace_callback_type_binder_txn_latency_info’? [-Werror=implicit-function-declaration] 709 | check_trace_callback_type_##call(trace_event_raw_event_##template); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ./include/trace/trace_events.h:81:2: note: in expansion of macro ‘DEFINE_EVENT’ 81 | DEFINE_EVENT(name, name, PARAMS(proto), PARAMS(args)); | ^~~~~~~~~~~~ drivers/android/./binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ ./include/trace/trace_events.h:709:35: error: ‘trace_event_raw_event_binder_txn_latency_free’ undeclared (first use in this function); did you mean ‘trace_event_raw_binder_txn_latency_free’? 709 | check_trace_callback_type_##call(trace_event_raw_event_##template); \ | ^~~~~~~~~~~~~~~~~~~~~~ ./include/trace/trace_events.h:81:2: note: in expansion of macro ‘DEFINE_EVENT’ 81 | DEFINE_EVENT(name, name, PARAMS(proto), PARAMS(args)); | ^~~~~~~~~~~~ drivers/android/./binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/./binder_trace.h: At top level: drivers/android/./binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/trace/trace_events.h:618:34: note: in definition of macro ‘_TRACE_PERF_PROTO’ 618 | perf_trace_##call(void *__data, proto); | ^~~~~ ./include/trace/trace_events.h:733:25: note: in expansion of macro ‘PARAMS’ 733 | _TRACE_PERF_PROTO(call, PARAMS(proto)); \ | ^~~~~~ ./include/trace/trace_events.h:75:2: note: in expansion of macro ‘DECLARE_EVENT_CLASS’ 75 | DECLARE_EVENT_CLASS(name, \ | ^~~~~~~~~~~~~~~~~~~ ./include/trace/trace_events.h:76:9: note: in expansion of macro ‘PARAMS’ 76 | PARAMS(proto), \ | ^~~~~~ drivers/android/./binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/./binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ In file included from ./include/trace/define_trace.h:102, from drivers/android/binder_trace.h:448, from drivers/android/binder.c:5822: ./include/trace/trace_events.h:740:13: error: ‘trace_event_raw_event_binder_txn_latency_free’ undeclared here (not in a function); did you mean ‘trace_event_raw_binder_txn_latency_free’? 740 | .probe = trace_event_raw_event_##call, \ | ^~~~~~~~~~~~~~~~~~~~~~ ./include/trace/trace_events.h:75:2: note: in expansion of macro ‘DECLARE_EVENT_CLASS’ 75 | DECLARE_EVENT_CLASS(name, \ | ^~~~~~~~~~~~~~~~~~~ drivers/android/./binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ In file included from ./include/trace/define_trace.h:102, from drivers/android/binder_trace.h:448, from drivers/android/binder.c:5822: ./include/trace/trace_events.h:621:17: error: ‘perf_trace_binder_txn_latency_free’ undeclared here (not in a function); did you mean ‘print_fmt_binder_txn_latency_free’? 621 | .perf_probe = perf_trace_##call, | ^~~~~~~~~~~ ./include/trace/trace_events.h:742:2: note: in expansion of macro ‘_TRACE_PERF_INIT’ 742 | _TRACE_PERF_INIT(call) \ | ^~~~~~~~~~~~~~~~ ./include/trace/trace_events.h:75:2: note: in expansion of macro ‘DECLARE_EVENT_CLASS’ 75 | DECLARE_EVENT_CLASS(name, \ | ^~~~~~~~~~~~~~~~~~~ drivers/android/./binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ In file included from ./include/trace/define_trace.h:103, from drivers/android/binder_trace.h:448, from drivers/android/binder.c:5822: drivers/android/./binder_trace.h:111:4: error: expected ‘;’, ‘,’ or ‘)’ before ‘int’ 111 | int from_proc, int from_thread | ^~~ ./include/trace/perf.h:33:33: note: in definition of macro ‘DECLARE_EVENT_CLASS’ 33 | perf_trace_##call(void *__data, proto) \ | ^~~~~ ./include/trace/trace_events.h:76:9: note: in expansion of macro ‘PARAMS’ 76 | PARAMS(proto), \ | ^~~~~~ drivers/android/./binder_trace.h:109:1: note: in expansion of macro ‘TRACE_EVENT’ 109 | TRACE_EVENT(binder_txn_latency_free, | ^~~~~~~~~~~ drivers/android/./binder_trace.h:110:2: note: in expansion of macro ‘TP_PROTO’ 110 | TP_PROTO(struct binder_transaction *t | ^~~~~~~~ cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:283: drivers/android/binder.o] Error 1 make[1]: *** [scripts/Makefile.build:500: drivers/android] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:1788: drivers] Error 2 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AA4D0C433E9 for ; Thu, 3 Sep 2020 16:20:58 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 58FC720722 for ; Thu, 3 Sep 2020 16:20:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Yiu2XIO6"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="qNepaLgR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 58FC720722 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linuxfoundation.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=I/ty06sRUBuGdZVlz4JR2W0c4Wu8WM6jZ88jmbJwQqw=; b=Yiu2XIO6upiWKpZajcpD0gIz4 hdVgMnvlMxMqgqSwvUq/ydjXPfIpXGBstJBYolwzQG857DPjPDcfI0aXPrHy5YFN98rzFw9Lco7xA brq2AohVa5+mI4OSXrFt3tqy/0h2wmZB8F9Pxft94H8Q/D408Jd/BGrkkQX80dSDAmCdArs4zoW6B 60iRo8j4tOq7+vU2b15bAXnCSZoucWTT9meOyzkY0rJzW+VKgYzvaymuCraNev1jX9urz6BDQUPiJ 9cLA3iAdYkxsUANV5b7/Um2sIOqtN3ZZYFKfIzOQ4NyqdmUOJPNvaXLBOIVMC6EyUWnziOeqgR6Ov sL//gO61A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kDryh-0006UU-4F; Thu, 03 Sep 2020 16:20:47 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kDryd-0006TN-I0 for linux-mediatek@lists.infradead.org; Thu, 03 Sep 2020 16:20:45 +0000 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 145B920722; Thu, 3 Sep 2020 16:20:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1599150042; bh=80MRQcc/dskjVxhhaT5cX4wwojeRy/pJGcIGScdvztA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=qNepaLgRDuVK6ZUJqKnF2/scV78eTbDi8YF4m19LulhwH9BnwV1dUyv8xWqksGwyz MPXfjmPn7oTS754K0H1wVMunapfO/QoFT1Clbv1/1hUIQfrDpPMUEF0V80FEvjTzBI DC+Yq6dEmD9ANW9xYA5c6hif/lV2fpPGIyaEDj4M= Date: Thu, 3 Sep 2020 18:21:05 +0200 From: Greg Kroah-Hartman To: Frankie Chang Subject: Re: [PATCH v7] binder: transaction latency tracking for user build Message-ID: <20200903162105.GA371057@kroah.com> References: <1596509145.5207.21.camel@mtkswgap22> <1596549552-5466-1-git-send-email-Frankie.Chang@mediatek.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1596549552-5466-1-git-send-email-Frankie.Chang@mediatek.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200903_122043_777793_433B248F X-CRM114-Status: GOOD ( 13.03 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: wsd_upstream@mediatek.com, linux-kernel@vger.kernel.org, Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Jian-Min Liu , linux-mediatek@lists.infradead.org, Joel Fernandes , Martijn Coenen , Christian Brauner , Todd Kjos Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org T24gVHVlLCBBdWcgMDQsIDIwMjAgYXQgMDk6NTk6MDlQTSArMDgwMCwgRnJhbmtpZSBDaGFuZyB3 cm90ZToKPiAKPiBGcmFua2llLkNoYW5nICgzKToKPiAgIGJpbmRlcjogbW92ZSBzdHJ1Y3RzIGZy b20gY29yZSBmaWxlIHRvIGhlYWRlciBmaWxlCj4gICBiaW5kZXI6IGFkZCB0cmFjZSBhdCBmcmVl IHRyYW5zYWN0aW9uLgo+ICAgYmluZGVyOiBhZGQgdHJhbnNhY3Rpb24gbGF0ZW5jeSB0cmFjZXIK PiAKPiAgZHJpdmVycy9hbmRyb2lkL0tjb25maWcgICAgICAgICAgICAgICAgIHwgICAgOCArCj4g IGRyaXZlcnMvYW5kcm9pZC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBkcml2 ZXJzL2FuZHJvaWQvYmluZGVyLmMgICAgICAgICAgICAgICAgfCAgNDI1ICsrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9pbnRlcm5hbC5oICAg ICAgIHwgIDQxNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9hbmRy b2lkL2JpbmRlcl9sYXRlbmN5X3RyYWNlci5jIHwgIDExMiArKysrKysrKwo+ICBkcml2ZXJzL2Fu ZHJvaWQvYmluZGVyX3RyYWNlLmggICAgICAgICAgfCAgIDQ5ICsrKysKPiAgNiBmaWxlcyBjaGFu Z2VkLCA2MDcgaW5zZXJ0aW9ucygrKSwgNDA1IGRlbGV0aW9ucygtKSAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfbGF0ZW5jeV90cmFjZXIuYwoKVGhpcyBzZXJpZXMg Ymxvd3MgdXAgdGhlIGJ1aWxkIGludG8gbG90cyBvZiB0aW55IHBpZWNlcywgaG93IHdhcyBpdAp0 ZXN0ZWQ/CgpIZXJlJ3MgbXkgZXJyb3IgbG9nczoKCkluIGZpbGUgaW5jbHVkZWQgZnJvbSBkcml2 ZXJzL2FuZHJvaWQvYmluZGVyZnMuYzozNzoKZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9pbnRlcm5h bC5oOjUzNzoxNzogZXJyb3I6IGZpZWxkIOKAmHR24oCZIGhhcyBpbmNvbXBsZXRlIHR5cGUKICA1 MzcgfCAgc3RydWN0IHRpbWV2YWwgdHY7CiAgICAgIHwgICAgICAgICAgICAgICAgIF5+CkluIGZp bGUgaW5jbHVkZWQgZnJvbSBkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTIsCiAgICAg ICAgICAgICAgICAgZnJvbSBkcml2ZXJzL2FuZHJvaWQvYmluZGVyX2FsbG9jLmM6Mjc6CmRyaXZl cnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDogSW4gZnVuY3Rpb24g4oCYdHJhY2VfYmluZGVyX3R4 bl9sYXRlbmN5X2FsbG9j4oCZOgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTAwOjEz OiBlcnJvcjog4oCYZeKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikK ICAxMDAgfCAgVFBfQVJHUyh0LCBlKQogICAgICB8ICAgICAgICAgICAgIF4KLi9pbmNsdWRlL2xp bnV4L3RyYWNlcG9pbnQuaDoxOTE6MzM6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8g4oCY X19ET19UUkFDReKAmQogIDE5MSB8ICAgICAoKHZvaWQoKikocHJvdG8pKShpdF9mdW5jKSkoYXJn cyk7IFwKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn4KLi9pbmNs dWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoyMzY6NTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv IOKAmFRQX0FSR1PigJkKICAyMzYgfCAgICAgVFBfQVJHUyhkYXRhX2FyZ3MpLCAgIFwKICAgICAg fCAgICAgXn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3NToyOiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMzc1IHwgIF9fREVD TEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAgICAgIHwg IF5+fn5+fn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3ODo0OiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAgMzc4IHwgICAgUEFSQU1TKF9f ZGF0YSwgYXJncykpCiAgICAgIHwgICAgXn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJh Y2UuaDo5ODoxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKA mQogICA5OCB8IERFQ0xBUkVfVFJBQ0UoYmluZGVyX3R4bl9sYXRlbmN5X2FsbG9jLAogICAgICB8 IF5+fn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwMDoyOiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfQVJHU+KAmQogIDEwMCB8ICBUUF9BUkdTKHQs IGUpCiAgICAgIHwgIF5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwMDox Mzogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNl IGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4KICAxMDAgfCAgVFBfQVJHUyh0LCBlKQog ICAgICB8ICAgICAgICAgICAgIF4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoxOTE6MzM6 IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8g4oCYX19ET19UUkFDReKAmQogIDE5MSB8ICAg ICAoKHZvaWQoKikocHJvdG8pKShpdF9mdW5jKSkoYXJncyk7IFwKICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoy MzY6NTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQX0FSR1PigJkKICAyMzYgfCAg ICAgVFBfQVJHUyhkYXRhX2FyZ3MpLCAgIFwKICAgICAgfCAgICAgXn5+fn5+fgouL2luY2x1ZGUv bGludXgvdHJhY2Vwb2ludC5oOjM3NToyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCY X19ERUNMQVJFX1RSQUNF4oCZCiAgMzc1IHwgIF9fREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMo cHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAgICAgIHwgIF5+fn5+fn5+fn5+fn5+fgouL2luY2x1 ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3ODo0OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g 4oCYUEFSQU1T4oCZCiAgMzc4IHwgICAgUEFSQU1TKF9fZGF0YSwgYXJncykpCiAgICAgIHwgICAg Xn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDo5ODoxOiBub3RlOiBpbiBleHBh bnNpb24gb2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKAmQogICA5OCB8IERFQ0xBUkVfVFJBQ0Uo YmluZGVyX3R4bl9sYXRlbmN5X2FsbG9jLAogICAgICB8IF5+fn5+fn5+fn5+fn4KZHJpdmVycy9h bmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwMDoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g 4oCYVFBfQVJHU+KAmQogIDEwMCB8ICBUUF9BUkdTKHQsIGUpCiAgICAgIHwgIF5+fn5+fn4KLi9p bmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoxOTE6NjogZXJyb3I6IHRvbyBtYW55IGFyZ3VtZW50 cyB0byBmdW5jdGlvbiDigJgodm9pZCAoKikodm9pZCAqLCBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0 aW9uICopKWl0X2Z1bmPigJkKICAxOTEgfCAgICAgKCh2b2lkKCopKHByb3RvKSkoaXRfZnVuYykp KGFyZ3MpOyBcCiAgICAgIHwgICAgIH5efn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgouL2luY2x1 ZGUvbGludXgvdHJhY2Vwb2ludC5oOjIzNDo0OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g 4oCYX19ET19UUkFDReKAmQogIDIzNCB8ICAgIF9fRE9fVFJBQ0UoJl9fdHJhY2Vwb2ludF8jI25h bWUsICBcCiAgICAgIHwgICAgXn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5o OjM3NToyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZ CiAgMzc1IHwgIF9fREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJn cyksICBcCiAgICAgIHwgIF5+fn5+fn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3Ry YWNlLmg6OTg6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJBQ0Xi gJkKICAgOTggfCBERUNMQVJFX1RSQUNFKGJpbmRlcl90eG5fbGF0ZW5jeV9hbGxvYywKICAgICAg fCBefn5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDogSW4gZnVuY3Rp b24g4oCYdHJhY2VfYmluZGVyX3R4bl9sYXRlbmN5X2FsbG9jX3JjdWlkbGXigJk6CmRyaXZlcnMv YW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDA6MTM6IGVycm9yOiDigJhl4oCZIHVuZGVjbGFyZWQg KGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQogIDEwMCB8ICBUUF9BUkdTKHQsIGUpCiAgICAg IHwgICAgICAgICAgICAgXgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjE5MTozMzogbm90 ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyDigJhfX0RPX1RSQUNF4oCZCiAgMTkxIHwgICAgICgo dm9pZCgqKShwcm90bykpKGl0X2Z1bmMpKShhcmdzKTsgXAogICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjIxMDo1 OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfQVJHU+KAmQogIDIxMCB8ICAgICBU UF9BUkdTKGRhdGFfYXJncyksICAgXAogICAgICB8ICAgICBefn5+fn5+Ci4vaW5jbHVkZS9saW51 eC90cmFjZXBvaW50Lmg6MjQ0OjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhfX0RF Q0xBUkVfVFJBQ0VfUkNV4oCZCiAgMjQ0IHwgIF9fREVDTEFSRV9UUkFDRV9SQ1UobmFtZSwgUEFS QU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAgXAogICAgICB8ICBefn5+fn5+fn5+fn5+fn5+fn5+ Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MjQ1OjM3OiBub3RlOiBpbiBleHBhbnNpb24g b2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAgMjQ1IHwgICBQQVJBTVMoY29uZCksIFBBUkFNUyhkYXRh X3Byb3RvKSwgUEFSQU1TKGRhdGFfYXJncykpIFwKICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBefn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzU6 Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDReKAmQogIDM3 NSB8ICBfX0RFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAg XAogICAgICB8ICBefn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoz Nzg6NDogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFNU+KAmQogIDM3OCB8ICAg IFBBUkFNUyhfX2RhdGEsIGFyZ3MpKQogICAgICB8ICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQv YmluZGVyX3RyYWNlLmg6OTg6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmERFQ0xB UkVfVFJBQ0XigJkKICAgOTggfCBERUNMQVJFX1RSQUNFKGJpbmRlcl90eG5fbGF0ZW5jeV9hbGxv YywKICAgICAgfCBefn5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDox MDA6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQX0FSR1PigJkKICAxMDAgfCAg VFBfQVJHUyh0LCBlKQogICAgICB8ICBefn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50 Lmg6MTkxOjY6IGVycm9yOiB0b28gbWFueSBhcmd1bWVudHMgdG8gZnVuY3Rpb24g4oCYKHZvaWQg KCopKHZvaWQgKiwgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqKSlpdF9mdW5j4oCZCiAgMTkx IHwgICAgICgodm9pZCgqKShwcm90bykpKGl0X2Z1bmMpKShhcmdzKTsgXAogICAgICB8ICAgICB+ Xn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoy MDg6NDogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmF9fRE9fVFJBQ0XigJkKICAyMDgg fCAgICBfX0RPX1RSQUNFKCZfX3RyYWNlcG9pbnRfIyNuYW1lLCAgXAogICAgICB8ICAgIF5+fn5+ fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoyNDQ6Mjogbm90ZTogaW4gZXhwYW5z aW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDRV9SQ1XigJkKICAyNDQgfCAgX19ERUNMQVJF X1RSQUNFX1JDVShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAgICAgIHwg IF5+fn5+fn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzU6Mjog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDReKAmQogIDM3NSB8 ICBfX0RFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAgXAog ICAgICB8ICBefn5+fn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjk4 OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNMQVJFX1RSQUNF4oCZCiAgIDk4 IHwgREVDTEFSRV9UUkFDRShiaW5kZXJfdHhuX2xhdGVuY3lfYWxsb2MsCiAgICAgIHwgXn5+fn5+ fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6IEF0IHRvcCBsZXZlbDoKZHJp dmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjExMTo0OiBlcnJvcjogZXhwZWN0ZWQg4oCYO+KA mSwg4oCYLOKAmSBvciDigJgp4oCZIGJlZm9yZSDigJhpbnTigJkKICAxMTEgfCAgICBpbnQgZnJv bV9wcm9jLCBpbnQgZnJvbV90aHJlYWQKICAgICAgfCAgICBefn4KLi9pbmNsdWRlL2xpbnV4L3Ry YWNlcG9pbnQuaDoyMzE6MzQ6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8g4oCYX19ERUNM QVJFX1RSQUNF4oCZCiAgMjMxIHwgIHN0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV8jI25hbWUocHJv dG8pICAgIFwKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fgou L2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3NToyNDogbm90ZTogaW4gZXhwYW5zaW9uIG9m IG1hY3JvIOKAmFBBUkFNU+KAmQogIDM3NSB8ICBfX0RFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1T KHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg Xn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6NTExOjI6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyDigJhERUNMQVJFX1RSQUNF4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0Uo bmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpKQogICAgICB8ICBefn5+fn5+fn5+fn5+ Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6NTExOjIyOiBub3RlOiBpbiBleHBhbnNpb24g b2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1T KHByb3RvKSwgUEFSQU1TKGFyZ3MpKQogICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+ fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTA5OjE6IG5vdGU6IGluIGV4cGFuc2lv biBvZiBtYWNybyDigJhUUkFDRV9FVkVOVOKAmQogIDEwOSB8IFRSQUNFX0VWRU5UKGJpbmRlcl90 eG5fbGF0ZW5jeV9mcmVlLAogICAgICB8IF5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5k ZXJfdHJhY2UuaDoxMTA6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQX1BST1RP 4oCZCiAgMTEwIHwgIFRQX1BST1RPKHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnQKICAgICAg fCAgXn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjExMTo0OiBlcnJvcjog ZXhwZWN0ZWQg4oCYO+KAmSwg4oCYLOKAmSBvciDigJgp4oCZIGJlZm9yZSDigJhpbnTigJkKICAx MTEgfCAgICBpbnQgZnJvbV9wcm9jLCBpbnQgZnJvbV90aHJlYWQKICAgICAgfCAgICBefn4KLi9p bmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoyMDU6NDQ6IG5vdGU6IGluIGRlZmluaXRpb24gb2Yg bWFjcm8g4oCYX19ERUNMQVJFX1RSQUNFX1JDVeKAmQogIDIwNSB8ICBzdGF0aWMgaW5saW5lIHZv aWQgdHJhY2VfIyNuYW1lIyNfcmN1aWRsZShwcm90bykgIFwKICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNl cG9pbnQuaDoyNDQ6Mjg6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJBTVPigJkK ICAyNDQgfCAgX19ERUNMQVJFX1RSQUNFX1JDVShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMo YXJncyksICBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+Ci4vaW5j bHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc1OjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNy byDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAzNzUgfCAgX19ERUNMQVJFX1RSQUNFKG5hbWUsIFBB UkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSwgIFwKICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+Ci4v aW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc1OjI0OiBub3RlOiBpbiBleHBhbnNpb24gb2Yg bWFjcm8g4oCYUEFSQU1T4oCZCiAgMzc1IHwgIF9fREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMo cHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICBe fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhwYW5z aW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJBQ0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShu YW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+fn4K Li9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyDigJhQQVJBTVPigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMo cHJvdG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+ CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvIOKAmFRSQUNFX0VWRU5U4oCZCiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4 bl9sYXRlbmN5X2ZyZWUsCiAgICAgIHwgXn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRl cl90cmFjZS5oOjExMDoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfUFJPVE/i gJkKICAxMTAgfCAgVFBfUFJPVE8oc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdAogICAgICB8 ICBefn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTExOjQ6IGVycm9yOiBl eHBlY3RlZCDigJg74oCZLCDigJgs4oCZIG9yIOKAmCnigJkgYmVmb3JlIOKAmGludOKAmQogIDEx MSB8ICAgIGludCBmcm9tX3Byb2MsIGludCBmcm9tX3RocmVhZAogICAgICB8ICAgIF5+fgouL2lu Y2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjI0NzozODogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBt YWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAyNDcgfCAgcmVnaXN0ZXJfdHJhY2VfIyNuYW1l KHZvaWQgKCpwcm9iZSkoZGF0YV9wcm90byksIHZvaWQgKmRhdGEpIFwKICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgv dHJhY2Vwb2ludC5oOjM3Nzo0OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T 4oCZCiAgMzc3IHwgICAgUEFSQU1TKHZvaWQgKl9fZGF0YSwgcHJvdG8pLCAgIFwKICAgICAgfCAg ICBefn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJBQ0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFD RShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+ fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6MjI6IG5vdGU6IGluIGV4cGFuc2lv biBvZiBtYWNybyDigJhQQVJBTVPigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJB TVMocHJvdG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXn5+ fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5z aW9uIG9mIG1hY3JvIOKAmFRSQUNFX0VWRU5U4oCZCiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVy X3R4bl9sYXRlbmN5X2ZyZWUsCiAgICAgIHwgXn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2Jp bmRlcl90cmFjZS5oOjExMDoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfUFJP VE/igJkKICAxMTAgfCAgVFBfUFJPVE8oc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdAogICAg ICB8ICBefn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjI0Nzo1MTogZXJyb3I6 IGV4cGVjdGVkIOKAmDvigJksIOKAmCzigJkgb3Ig4oCYKeKAmSBiZWZvcmUg4oCYdm9pZOKAmQog IDI0NyB8ICByZWdpc3Rlcl90cmFjZV8jI25hbWUodm9pZCAoKnByb2JlKShkYXRhX3Byb3RvKSwg dm9pZCAqZGF0YSkgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3NToyOiBu b3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMzc1IHwg IF9fREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAg ICAgIHwgIF5+fn5+fn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUxMToy OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKAmQogIDUxMSB8 ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSkKICAgICAg fCAgXn5+fn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTA5OjE6IG5v dGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFDRV9FVkVOVOKAmQogIDEwOSB8IFRSQUNF X0VWRU5UKGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAogICAgICB8IF5+fn5+fn5+fn5+CmRyaXZl cnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMTE6NDogZXJyb3I6IGV4cGVjdGVkIOKAmDvigJks IOKAmCzigJkgb3Ig4oCYKeKAmSBiZWZvcmUg4oCYaW504oCZCiAgMTExIHwgICAgaW50IGZyb21f cHJvYywgaW50IGZyb21fdGhyZWFkCiAgICAgIHwgICAgXn5+Ci4vaW5jbHVkZS9saW51eC90cmFj ZXBvaW50Lmg6MjUzOjQzOiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvIOKAmF9fREVDTEFS RV9UUkFDReKAmQogIDI1MyB8ICByZWdpc3Rlcl90cmFjZV9wcmlvXyMjbmFtZSh2b2lkICgqcHJv YmUpKGRhdGFfcHJvdG8pLCB2b2lkICpkYXRhLFwKICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBv aW50Lmg6Mzc3OjQ6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJBTVPigJkKICAz NzcgfCAgICBQQVJBTVModm9pZCAqX19kYXRhLCBwcm90byksICAgXAogICAgICB8ICAgIF5+fn5+ fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUxMToyOiBub3RlOiBpbiBleHBhbnNpb24g b2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUs IFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSkKICAgICAgfCAgXn5+fn5+fn5+fn5+fgouL2lu Y2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUxMToyMjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1h Y3JvIOKAmFBBUkFNU+KAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90 byksIFBBUkFNUyhhcmdzKSkKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KZHJp dmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwOToxOiBub3RlOiBpbiBleHBhbnNpb24gb2Yg bWFjcm8g4oCYVFJBQ0VfRVZFTlTigJkKICAxMDkgfCBUUkFDRV9FVkVOVChiaW5kZXJfdHhuX2xh dGVuY3lfZnJlZSwKICAgICAgfCBefn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3Ry YWNlLmg6MTEwOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUF9QUk9UT+KAmQog IDExMCB8ICBUUF9QUk9UTyhzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0CiAgICAgIHwgIF5+ fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MjUzOjU2OiBlcnJvcjogZXhwZWN0 ZWQg4oCYO+KAmSwg4oCYLOKAmSBvciDigJgp4oCZIGJlZm9yZSDigJh2b2lk4oCZCiAgMjUzIHwg IHJlZ2lzdGVyX3RyYWNlX3ByaW9fIyNuYW1lKHZvaWQgKCpwcm9iZSkoZGF0YV9wcm90byksIHZv aWQgKmRhdGEsXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBefn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc1OjI6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAzNzUg fCAgX19ERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSwgIFwK ICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6NTEx OjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNMQVJFX1RSQUNF4oCZCiAgNTEx IHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpKQogICAg ICB8ICBefn5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDk6MTog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRSQUNFX0VWRU5U4oCZCiAgMTA5IHwgVFJB Q0VfRVZFTlQoYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUsCiAgICAgIHwgXn5+fn5+fn5+fn4KZHJp dmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjExMTo0OiBlcnJvcjogZXhwZWN0ZWQg4oCYO+KA mSwg4oCYLOKAmSBvciDigJgp4oCZIGJlZm9yZSDigJhpbnTigJkKICAxMTEgfCAgICBpbnQgZnJv bV9wcm9jLCBpbnQgZnJvbV90aHJlYWQKICAgICAgfCAgICBefn4KLi9pbmNsdWRlL2xpbnV4L3Ry YWNlcG9pbnQuaDoyNjA6NDA6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8g4oCYX19ERUNM QVJFX1RSQUNF4oCZCiAgMjYwIHwgIHVucmVnaXN0ZXJfdHJhY2VfIyNuYW1lKHZvaWQgKCpwcm9i ZSkoZGF0YV9wcm90byksIHZvaWQgKmRhdGEpIFwKICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50 Lmg6Mzc3OjQ6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJBTVPigJkKICAzNzcg fCAgICBQQVJBTVModm9pZCAqX19kYXRhLCBwcm90byksICAgXAogICAgICB8ICAgIF5+fn5+fgou L2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUxMToyOiBub3RlOiBpbiBleHBhbnNpb24gb2Yg bWFjcm8g4oCYREVDTEFSRV9UUkFDReKAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBB UkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSkKICAgICAgfCAgXn5+fn5+fn5+fn5+fgouL2luY2x1 ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUxMToyMjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv IOKAmFBBUkFNU+KAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byks IFBBUkFNUyhhcmdzKSkKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KZHJpdmVy cy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwOToxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8g4oCYVFJBQ0VfRVZFTlTigJkKICAxMDkgfCBUUkFDRV9FVkVOVChiaW5kZXJfdHhuX2xhdGVu Y3lfZnJlZSwKICAgICAgfCBefn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNl Lmg6MTEwOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUF9QUk9UT+KAmQogIDEx MCB8ICBUUF9QUk9UTyhzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0CiAgICAgIHwgIF5+fn5+ fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MjYwOjUzOiBlcnJvcjogZXhwZWN0ZWQg 4oCYO+KAmSwg4oCYLOKAmSBvciDigJgp4oCZIGJlZm9yZSDigJh2b2lk4oCZCiAgMjYwIHwgIHVu cmVnaXN0ZXJfdHJhY2VfIyNuYW1lKHZvaWQgKCpwcm9iZSkoZGF0YV9wcm90byksIHZvaWQgKmRh dGEpIFwKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3NToyOiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMzc1IHwgIF9fREVD TEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAgICAgIHwg IF5+fn5+fn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUxMToyOiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKAmQogIDUxMSB8ICBERUNM QVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSkKICAgICAgfCAgXn5+ fn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTA5OjE6IG5vdGU6IGlu IGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFDRV9FVkVOVOKAmQogIDEwOSB8IFRSQUNFX0VWRU5U KGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAogICAgICB8IF5+fn5+fn5+fn5+CmRyaXZlcnMvYW5k cm9pZC9iaW5kZXJfdHJhY2UuaDoxMTE6NDogZXJyb3I6IGV4cGVjdGVkIOKAmDvigJksIOKAmCzi gJkgb3Ig4oCYKeKAmSBiZWZvcmUg4oCYaW504oCZCiAgMTExIHwgICAgaW50IGZyb21fcHJvYywg aW50IGZyb21fdGhyZWFkCiAgICAgIHwgICAgXn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50 Lmg6MjY2OjQ2OiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9UUkFD ReKAmQogIDI2NiB8ICBjaGVja190cmFjZV9jYWxsYmFja190eXBlXyMjbmFtZSh2b2lkICgqY2Ip KGRhdGFfcHJvdG8pKSBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3Nzo0 OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAgMzc3IHwgICAgUEFS QU1TKHZvaWQgKl9fZGF0YSwgcHJvdG8pLCAgIFwKICAgICAgfCAgICBefn5+fn4KLi9pbmNsdWRl L2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKA mERFQ0xBUkVfVFJBQ0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJv dG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4 L3RyYWNlcG9pbnQuaDo1MTE6MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJB TVPigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMo YXJncykpCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CmRyaXZlcnMvYW5kcm9p ZC9iaW5kZXJfdHJhY2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRS QUNFX0VWRU5U4oCZCiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUs CiAgICAgIHwgXn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjExMDoy OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfUFJPVE/igJkKICAxMTAgfCAgVFBf UFJPVE8oc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdAogICAgICB8ICBefn5+fn5+fgptYWtl WzJdOiAqKiogW3NjcmlwdHMvTWFrZWZpbGUuYnVpbGQ6MjgzOiBkcml2ZXJzL2FuZHJvaWQvYmlu ZGVyZnMub10gRXJyb3IgMQptYWtlWzJdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2Jz Li4uLgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9sYXRlbmN5 X3RyYWNlci5jOjg6CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfaW50ZXJuYWwuaDoxNDE6MjA6IGVy cm9yOiDigJhCSU5ERVJGU19NQVhfTkFNReKAmSB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1 bmN0aW9uKQogIDE0MSB8ICBjaGFyIGNvbnRleHRfbmFtZVtCSU5ERVJGU19NQVhfTkFNRSArIDFd OwogICAgICB8ICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fgpkcml2ZXJzL2Fu ZHJvaWQvYmluZGVyX2ludGVybmFsLmg6NTM3OjE3OiBlcnJvcjogZmllbGQg4oCYdHbigJkgaGFz IGluY29tcGxldGUgdHlwZQogIDUzNyB8ICBzdHJ1Y3QgdGltZXZhbCB0djsKICAgICAgfCAgICAg ICAgICAgICAgICAgXn4KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGRyaXZlcnMvYW5kcm9pZC9iaW5k ZXJfdHJhY2UuaDoxMiwKICAgICAgICAgICAgICAgICBmcm9tIGRyaXZlcnMvYW5kcm9pZC9iaW5k ZXJfbGF0ZW5jeV90cmFjZXIuYzo5Ogpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6IElu IGZ1bmN0aW9uIOKAmHRyYWNlX2JpbmRlcl90eG5fbGF0ZW5jeV9hbGxvY+KAmToKZHJpdmVycy9h bmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwMDoxMzogZXJyb3I6IOKAmGXigJkgdW5kZWNsYXJlZCAo Zmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCiAgMTAwIHwgIFRQX0FSR1ModCwgZSkKICAgICAg fCAgICAgICAgICAgICBeCi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MTkxOjMzOiBub3Rl OiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvIOKAmF9fRE9fVFJBQ0XigJkKICAxOTEgfCAgICAgKCh2 b2lkKCopKHByb3RvKSkoaXRfZnVuYykpKGFyZ3MpOyBcCiAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBefn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MjM2OjU6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUF9BUkdT4oCZCiAgMjM2IHwgICAgIFRQ X0FSR1MoZGF0YV9hcmdzKSwgICBcCiAgICAgIHwgICAgIF5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4 L3RyYWNlcG9pbnQuaDozNzU6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmF9fREVD TEFSRV9UUkFDReKAmQogIDM3NSB8ICBfX0RFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3Rv KSwgUEFSQU1TKGFyZ3MpLCAgXAogICAgICB8ICBefn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xp bnV4L3RyYWNlcG9pbnQuaDozNzg6NDogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBB UkFNU+KAmQogIDM3OCB8ICAgIFBBUkFNUyhfX2RhdGEsIGFyZ3MpKQogICAgICB8ICAgIF5+fn5+ fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6OTg6MTogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJBQ0XigJkKICAgOTggfCBERUNMQVJFX1RSQUNFKGJpbmRl cl90eG5fbGF0ZW5jeV9hbGxvYywKICAgICAgfCBefn5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9p ZC9iaW5kZXJfdHJhY2UuaDoxMDA6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQ X0FSR1PigJkKICAxMDAgfCAgVFBfQVJHUyh0LCBlKQogICAgICB8ICBefn5+fn5+CmRyaXZlcnMv YW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDA6MTM6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVu dGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJz IGluCiAgMTAwIHwgIFRQX0FSR1ModCwgZSkKICAgICAgfCAgICAgICAgICAgICBeCi4vaW5jbHVk ZS9saW51eC90cmFjZXBvaW50Lmg6MTkxOjMzOiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3Jv IOKAmF9fRE9fVFJBQ0XigJkKICAxOTEgfCAgICAgKCh2b2lkKCopKHByb3RvKSkoaXRfZnVuYykp KGFyZ3MpOyBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+Ci4v aW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MjM2OjU6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyDigJhUUF9BUkdT4oCZCiAgMjM2IHwgICAgIFRQX0FSR1MoZGF0YV9hcmdzKSwgICBcCiAg ICAgIHwgICAgIF5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzU6Mjogbm90 ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDReKAmQogIDM3NSB8ICBf X0RFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAgXAogICAg ICB8ICBefn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzg6NDog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFNU+KAmQogIDM3OCB8ICAgIFBBUkFN UyhfX2RhdGEsIGFyZ3MpKQogICAgICB8ICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVy X3RyYWNlLmg6OTg6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJB Q0XigJkKICAgOTggfCBERUNMQVJFX1RSQUNFKGJpbmRlcl90eG5fbGF0ZW5jeV9hbGxvYywKICAg ICAgfCBefn5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDA6Mjog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQX0FSR1PigJkKICAxMDAgfCAgVFBfQVJH Uyh0LCBlKQogICAgICB8ICBefn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MTkx OjY6IGVycm9yOiB0b28gbWFueSBhcmd1bWVudHMgdG8gZnVuY3Rpb24g4oCYKHZvaWQgKCopKHZv aWQgKiwgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqKSlpdF9mdW5j4oCZCiAgMTkxIHwgICAg ICgodm9pZCgqKShwcm90bykpKGl0X2Z1bmMpKShhcmdzKTsgXAogICAgICB8ICAgICB+Xn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoyMzQ6NDog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmF9fRE9fVFJBQ0XigJkKICAyMzQgfCAgICBf X0RPX1RSQUNFKCZfX3RyYWNlcG9pbnRfIyNuYW1lLCAgXAogICAgICB8ICAgIF5+fn5+fn5+fn4K Li9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzU6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9m IG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDReKAmQogIDM3NSB8ICBfX0RFQ0xBUkVfVFJBQ0UobmFt ZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAgXAogICAgICB8ICBefn5+fn5+fn5+fn5+ fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjk4OjE6IG5vdGU6IGluIGV4cGFuc2lv biBvZiBtYWNybyDigJhERUNMQVJFX1RSQUNF4oCZCiAgIDk4IHwgREVDTEFSRV9UUkFDRShiaW5k ZXJfdHhuX2xhdGVuY3lfYWxsb2MsCiAgICAgIHwgXn5+fn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJv aWQvYmluZGVyX3RyYWNlLmg6IEF0IHRvcCBsZXZlbDoKZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90 cmFjZS5oOjExMTo0OiBlcnJvcjogZXhwZWN0ZWQg4oCYO+KAmSwg4oCYLOKAmSBvciDigJgp4oCZ IGJlZm9yZSDigJhpbnTigJkKICAxMTEgfCAgICBpbnQgZnJvbV9wcm9jLCBpbnQgZnJvbV90aHJl YWQKICAgICAgfCAgICBefn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoyMzE6MzQ6IG5v dGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMjMxIHwg IHN0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV8jI25hbWUocHJvdG8pICAgIFwKICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vw b2ludC5oOjM3NToyNDogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFNU+KAmQog IDM3NSB8ICBfX0RFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3Mp LCAgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+Ci4vaW5jbHVkZS9saW51 eC90cmFjZXBvaW50Lmg6NTExOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNM QVJFX1RSQUNF4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwg UEFSQU1TKGFyZ3MpKQogICAgICB8ICBefn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFj ZXBvaW50Lmg6NTExOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZ CiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3Mp KQogICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmlu ZGVyX3RyYWNlLmg6MTA5OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFDRV9F VkVOVOKAmQogIDEwOSB8IFRSQUNFX0VWRU5UKGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAogICAg ICB8IF5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMTA6Mjogbm90 ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQX1BST1RP4oCZCiAgMTEwIHwgIFRQX1BST1RP KHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnQKICAgICAgfCAgXn5+fn5+fn4KZHJpdmVycy9h bmRyb2lkL2JpbmRlcl90cmFjZS5oOjExMTo0OiBlcnJvcjogZXhwZWN0ZWQg4oCYO+KAmSwg4oCY LOKAmSBvciDigJgp4oCZIGJlZm9yZSDigJhpbnTigJkKICAxMTEgfCAgICBpbnQgZnJvbV9wcm9j LCBpbnQgZnJvbV90aHJlYWQKICAgICAgfCAgICBefn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9p bnQuaDoyNDc6Mzg6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RS QUNF4oCZCiAgMjQ3IHwgIHJlZ2lzdGVyX3RyYWNlXyMjbmFtZSh2b2lkICgqcHJvYmUpKGRhdGFf cHJvdG8pLCB2b2lkICpkYXRhKSBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzc6NDog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFNU+KAmQogIDM3NyB8ICAgIFBBUkFN Uyh2b2lkICpfX2RhdGEsIHByb3RvKSwgICBcCiAgICAgIHwgICAgXn5+fn5+Ci4vaW5jbHVkZS9s aW51eC90cmFjZXBvaW50Lmg6NTExOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhE RUNMQVJFX1RSQUNF4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3Rv KSwgUEFSQU1TKGFyZ3MpKQogICAgICB8ICBefn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90 cmFjZXBvaW50Lmg6NTExOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T 4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFy Z3MpKQogICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQv YmluZGVyX3RyYWNlLmg6MTA5OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFD RV9FVkVOVOKAmQogIDEwOSB8IFRSQUNFX0VWRU5UKGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAog ICAgICB8IF5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMTA6Mjog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQX1BST1RP4oCZCiAgMTEwIHwgIFRQX1BS T1RPKHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnQKICAgICAgfCAgXn5+fn5+fn4KLi9pbmNs dWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoyNDc6NTE6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDi gJgs4oCZIG9yIOKAmCnigJkgYmVmb3JlIOKAmHZvaWTigJkKICAyNDcgfCAgcmVnaXN0ZXJfdHJh Y2VfIyNuYW1lKHZvaWQgKCpwcm9iZSkoZGF0YV9wcm90byksIHZvaWQgKmRhdGEpIFwKICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn4K Li9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzU6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9m IG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDReKAmQogIDM3NSB8ICBfX0RFQ0xBUkVfVFJBQ0UobmFt ZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAgXAogICAgICB8ICBefn5+fn5+fn5+fn5+ fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJBQ0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1l LCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+fn4KZHJp dmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwOToxOiBub3RlOiBpbiBleHBhbnNpb24gb2Yg bWFjcm8g4oCYVFJBQ0VfRVZFTlTigJkKICAxMDkgfCBUUkFDRV9FVkVOVChiaW5kZXJfdHhuX2xh dGVuY3lfZnJlZSwKICAgICAgfCBefn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3Ry YWNlLmg6MTExOjQ6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDigJgs4oCZIG9yIOKAmCnigJkg YmVmb3JlIOKAmGludOKAmQogIDExMSB8ICAgIGludCBmcm9tX3Byb2MsIGludCBmcm9tX3RocmVh ZAogICAgICB8ICAgIF5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjI1Mzo0Mzogbm90 ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAyNTMgfCAg cmVnaXN0ZXJfdHJhY2VfcHJpb18jI25hbWUodm9pZCAoKnByb2JlKShkYXRhX3Byb3RvKSwgdm9p ZCAqZGF0YSxcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3Nzo0OiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAgMzc3IHwgICAgUEFSQU1TKHZvaWQg Kl9fZGF0YSwgcHJvdG8pLCAgIFwKICAgICAgfCAgICBefn5+fn4KLi9pbmNsdWRlL2xpbnV4L3Ry YWNlcG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVf VFJBQ0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJB TVMoYXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9p bnQuaDo1MTE6MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJBTVPigJkKICA1 MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncykpCiAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJf dHJhY2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRSQUNFX0VWRU5U 4oCZCiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUsCiAgICAgIHwg Xn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjExMDoyOiBub3RlOiBp biBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfUFJPVE/igJkKICAxMTAgfCAgVFBfUFJPVE8oc3Ry dWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdAogICAgICB8ICBefn5+fn5+fgouL2luY2x1ZGUvbGlu dXgvdHJhY2Vwb2ludC5oOjI1Mzo1NjogZXJyb3I6IGV4cGVjdGVkIOKAmDvigJksIOKAmCzigJkg b3Ig4oCYKeKAmSBiZWZvcmUg4oCYdm9pZOKAmQogIDI1MyB8ICByZWdpc3Rlcl90cmFjZV9wcmlv XyMjbmFtZSh2b2lkICgqcHJvYmUpKGRhdGFfcHJvdG8pLCB2b2lkICpkYXRhLFwKICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+ fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3NToyOiBub3RlOiBpbiBleHBhbnNpb24g b2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMzc1IHwgIF9fREVDTEFSRV9UUkFDRShu YW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAgICAgIHwgIF5+fn5+fn5+fn5+ fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUxMToyOiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5h bWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSkKICAgICAgfCAgXn5+fn5+fn5+fn5+fgpk cml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTA5OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyDigJhUUkFDRV9FVkVOVOKAmQogIDEwOSB8IFRSQUNFX0VWRU5UKGJpbmRlcl90eG5f bGF0ZW5jeV9mcmVlLAogICAgICB8IF5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJf dHJhY2UuaDoxMTE6NDogZXJyb3I6IGV4cGVjdGVkIOKAmDvigJksIOKAmCzigJkgb3Ig4oCYKeKA mSBiZWZvcmUg4oCYaW504oCZCiAgMTExIHwgICAgaW50IGZyb21fcHJvYywgaW50IGZyb21fdGhy ZWFkCiAgICAgIHwgICAgXn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MjYwOjQwOiBu b3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDReKAmQogIDI2MCB8 ICB1bnJlZ2lzdGVyX3RyYWNlXyMjbmFtZSh2b2lkICgqcHJvYmUpKGRhdGFfcHJvdG8pLCB2b2lk ICpkYXRhKSBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Xn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3Nzo0OiBub3RlOiBpbiBl eHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAgMzc3IHwgICAgUEFSQU1TKHZvaWQgKl9f ZGF0YSwgcHJvdG8pLCAgIFwKICAgICAgfCAgICBefn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNl cG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJB Q0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMo YXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQu aDo1MTE6MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJBTVPigJkKICA1MTEg fCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncykpCiAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJh Y2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRSQUNFX0VWRU5U4oCZ CiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUsCiAgICAgIHwgXn5+ fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjExMDoyOiBub3RlOiBpbiBl eHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfUFJPVE/igJkKICAxMTAgfCAgVFBfUFJPVE8oc3RydWN0 IGJpbmRlcl90cmFuc2FjdGlvbiAqdAogICAgICB8ICBefn5+fn5+fgouL2luY2x1ZGUvbGludXgv dHJhY2Vwb2ludC5oOjI2MDo1MzogZXJyb3I6IGV4cGVjdGVkIOKAmDvigJksIOKAmCzigJkgb3Ig 4oCYKeKAmSBiZWZvcmUg4oCYdm9pZOKAmQogIDI2MCB8ICB1bnJlZ2lzdGVyX3RyYWNlXyMjbmFt ZSh2b2lkICgqcHJvYmUpKGRhdGFfcHJvdG8pLCB2b2lkICpkYXRhKSBcCiAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn4KLi9pbmNs dWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzU6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv IOKAmF9fREVDTEFSRV9UUkFDReKAmQogIDM3NSB8ICBfX0RFQ0xBUkVfVFJBQ0UobmFtZSwgUEFS QU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAgXAogICAgICB8ICBefn5+fn5+fn5+fn5+fn4KLi9p bmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1h Y3JvIOKAmERFQ0xBUkVfVFJBQ0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJB TVMocHJvdG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+fn4KZHJpdmVycy9h bmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwOToxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g 4oCYVFJBQ0VfRVZFTlTigJkKICAxMDkgfCBUUkFDRV9FVkVOVChiaW5kZXJfdHhuX2xhdGVuY3lf ZnJlZSwKICAgICAgfCBefn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6 MTExOjQ6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDigJgs4oCZIG9yIOKAmCnigJkgYmVmb3Jl IOKAmGludOKAmQogIDExMSB8ICAgIGludCBmcm9tX3Byb2MsIGludCBmcm9tX3RocmVhZAogICAg ICB8ICAgIF5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjI2Njo0Njogbm90ZTogaW4g ZGVmaW5pdGlvbiBvZiBtYWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAyNjYgfCAgY2hlY2tf dHJhY2VfY2FsbGJhY2tfdHlwZV8jI25hbWUodm9pZCAoKmNiKShkYXRhX3Byb3RvKSkgXAogICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+ fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzc6NDogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvIOKAmFBBUkFNU+KAmQogIDM3NyB8ICAgIFBBUkFNUyh2b2lkICpfX2RhdGEsIHBy b3RvKSwgICBcCiAgICAgIHwgICAgXn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6 NTExOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNMQVJFX1RSQUNF4oCZCiAg NTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpKQog ICAgICB8ICBefn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6NTExOjIy OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAgNTExIHwgIERFQ0xB UkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpKQogICAgICB8ICAgICAg ICAgICAgICAgICAgICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTA5 OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFDRV9FVkVOVOKAmQogIDEwOSB8 IFRSQUNFX0VWRU5UKGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAogICAgICB8IF5+fn5+fn5+fn5+ CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMTA6Mjogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvIOKAmFRQX1BST1RP4oCZCiAgMTEwIHwgIFRQX1BST1RPKHN0cnVjdCBiaW5kZXJf dHJhbnNhY3Rpb24gKnQKICAgICAgfCAgXn5+fn5+fn4KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGRy aXZlcnMvYW5kcm9pZC9iaW5kZXIuYzo3NToKZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9pbnRlcm5h bC5oOjUzNzoxNzogZXJyb3I6IGZpZWxkIOKAmHR24oCZIGhhcyBpbmNvbXBsZXRlIHR5cGUKICA1 MzcgfCAgc3RydWN0IHRpbWV2YWwgdHY7CiAgICAgIHwgICAgICAgICAgICAgICAgIF5+CkluIGZp bGUgaW5jbHVkZWQgZnJvbSAuL2luY2x1ZGUvdHJhY2Uvc3lzY2FsbC5oOjUsCiAgICAgICAgICAg ICAgICAgZnJvbSAuL2luY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo4NCwKICAgICAgICAgICAgICAg ICBmcm9tIGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYzo2NjoKZHJpdmVycy9hbmRyb2lkL2JpbmRl cl90cmFjZS5oOiBJbiBmdW5jdGlvbiDigJh0cmFjZV9iaW5kZXJfdHhuX2xhdGVuY3lfYWxsb2Pi gJk6CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDA6MTM6IGVycm9yOiDigJhl4oCZ IHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQogIDEwMCB8ICBUUF9BUkdT KHQsIGUpCiAgICAgIHwgICAgICAgICAgICAgXgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5o OjE5MTozMzogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyDigJhfX0RPX1RSQUNF4oCZCiAg MTkxIHwgICAgICgodm9pZCgqKShwcm90bykpKGl0X2Z1bmMpKShhcmdzKTsgXAogICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vw b2ludC5oOjIzNjo1OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfQVJHU+KAmQog IDIzNiB8ICAgICBUUF9BUkdTKGRhdGFfYXJncyksICAgXAogICAgICB8ICAgICBefn5+fn5+Ci4v aW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc1OjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAzNzUgfCAgX19ERUNMQVJFX1RSQUNFKG5hbWUs IFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSwgIFwKICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+ Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc4OjQ6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyDigJhQQVJBTVPigJkKICAzNzggfCAgICBQQVJBTVMoX19kYXRhLCBhcmdzKSkKICAg ICAgfCAgICBefn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjk4OjE6IG5vdGU6 IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNMQVJFX1RSQUNF4oCZCiAgIDk4IHwgREVDTEFS RV9UUkFDRShiaW5kZXJfdHhuX2xhdGVuY3lfYWxsb2MsCiAgICAgIHwgXn5+fn5+fn5+fn5+fgpk cml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTAwOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyDigJhUUF9BUkdT4oCZCiAgMTAwIHwgIFRQX0FSR1ModCwgZSkKICAgICAgfCAgXn5+ fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTAwOjEzOiBub3RlOiBlYWNoIHVu ZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UgZm9yIGVhY2ggZnVuY3Rp b24gaXQgYXBwZWFycyBpbgogIDEwMCB8ICBUUF9BUkdTKHQsIGUpCiAgICAgIHwgICAgICAgICAg ICAgXgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjE5MTozMzogbm90ZTogaW4gZGVmaW5p dGlvbiBvZiBtYWNybyDigJhfX0RPX1RSQUNF4oCZCiAgMTkxIHwgICAgICgodm9pZCgqKShwcm90 bykpKGl0X2Z1bmMpKShhcmdzKTsgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjIzNjo1OiBub3RlOiBpbiBl eHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfQVJHU+KAmQogIDIzNiB8ICAgICBUUF9BUkdTKGRhdGFf YXJncyksICAgXAogICAgICB8ICAgICBefn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50 Lmg6Mzc1OjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhfX0RFQ0xBUkVfVFJBQ0Xi gJkKICAzNzUgfCAgX19ERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhh cmdzKSwgIFwKICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBv aW50Lmg6Mzc4OjQ6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJBTVPigJkKICAz NzggfCAgICBQQVJBTVMoX19kYXRhLCBhcmdzKSkKICAgICAgfCAgICBefn5+fn4KZHJpdmVycy9h bmRyb2lkL2JpbmRlcl90cmFjZS5oOjk4OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDi gJhERUNMQVJFX1RSQUNF4oCZCiAgIDk4IHwgREVDTEFSRV9UUkFDRShiaW5kZXJfdHhuX2xhdGVu Y3lfYWxsb2MsCiAgICAgIHwgXn5+fn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3Ry YWNlLmg6MTAwOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUF9BUkdT4oCZCiAg MTAwIHwgIFRQX0FSR1ModCwgZSkKICAgICAgfCAgXn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJh Y2Vwb2ludC5oOjE5MTo2OiBlcnJvcjogdG9vIG1hbnkgYXJndW1lbnRzIHRvIGZ1bmN0aW9uIOKA mCh2b2lkICgqKSh2b2lkICosIHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKikpaXRfZnVuY+KA mQogIDE5MSB8ICAgICAoKHZvaWQoKikocHJvdG8pKShpdF9mdW5jKSkoYXJncyk7IFwKICAgICAg fCAgICAgfl5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBv aW50Lmg6MjM0OjQ6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhfX0RPX1RSQUNF4oCZ CiAgMjM0IHwgICAgX19ET19UUkFDRSgmX190cmFjZXBvaW50XyMjbmFtZSwgIFwKICAgICAgfCAg ICBefn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc1OjI6IG5vdGU6IGlu IGV4cGFuc2lvbiBvZiBtYWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAzNzUgfCAgX19ERUNM QVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSwgIFwKICAgICAgfCAg Xn5+fn5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDo5ODoxOiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKAmQogICA5OCB8IERFQ0xB UkVfVFJBQ0UoYmluZGVyX3R4bl9sYXRlbmN5X2FsbG9jLAogICAgICB8IF5+fn5+fn5+fn5+fn4K ZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOiBJbiBmdW5jdGlvbiDigJh0cmFjZV9iaW5k ZXJfdHhuX2xhdGVuY3lfYWxsb2NfcmN1aWRsZeKAmToKZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90 cmFjZS5oOjEwMDoxMzogZXJyb3I6IOKAmGXigJkgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRo aXMgZnVuY3Rpb24pCiAgMTAwIHwgIFRQX0FSR1ModCwgZSkKICAgICAgfCAgICAgICAgICAgICBe Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MTkxOjMzOiBub3RlOiBpbiBkZWZpbml0aW9u IG9mIG1hY3JvIOKAmF9fRE9fVFJBQ0XigJkKICAxOTEgfCAgICAgKCh2b2lkKCopKHByb3RvKSko aXRfZnVuYykpKGFyZ3MpOyBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBefn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MjEwOjU6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyDigJhUUF9BUkdT4oCZCiAgMjEwIHwgICAgIFRQX0FSR1MoZGF0YV9hcmdz KSwgICBcCiAgICAgIHwgICAgIF5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoy NDQ6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDRV9SQ1Xi gJkKICAyNDQgfCAgX19ERUNMQVJFX1RSQUNFX1JDVShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJB TVMoYXJncyksICBcCiAgICAgIHwgIF5+fn5+fn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4 L3RyYWNlcG9pbnQuaDoyNDU6Mzc6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJB TVPigJkKICAyNDUgfCAgIFBBUkFNUyhjb25kKSwgUEFSQU1TKGRhdGFfcHJvdG8pLCBQQVJBTVMo ZGF0YV9hcmdzKSkgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3NToyOiBub3RlOiBpbiBleHBh bnNpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMzc1IHwgIF9fREVDTEFSRV9U UkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAgICAgIHwgIF5+fn5+ fn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3ODo0OiBub3RlOiBpbiBl eHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAgMzc4IHwgICAgUEFSQU1TKF9fZGF0YSwg YXJncykpCiAgICAgIHwgICAgXn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDo5 ODoxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKAmQogICA5 OCB8IERFQ0xBUkVfVFJBQ0UoYmluZGVyX3R4bl9sYXRlbmN5X2FsbG9jLAogICAgICB8IF5+fn5+ fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwMDoyOiBub3RlOiBpbiBl eHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfQVJHU+KAmQogIDEwMCB8ICBUUF9BUkdTKHQsIGUpCiAg ICAgIHwgIF5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoxOTE6NjogZXJyb3I6 IHRvbyBtYW55IGFyZ3VtZW50cyB0byBmdW5jdGlvbiDigJgodm9pZCAoKikodm9pZCAqLCBzdHJ1 Y3QgYmluZGVyX3RyYW5zYWN0aW9uICopKWl0X2Z1bmPigJkKICAxOTEgfCAgICAgKCh2b2lkKCop KHByb3RvKSkoaXRfZnVuYykpKGFyZ3MpOyBcCiAgICAgIHwgICAgIH5efn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjIwODo0OiBub3RlOiBpbiBl eHBhbnNpb24gb2YgbWFjcm8g4oCYX19ET19UUkFDReKAmQogIDIwOCB8ICAgIF9fRE9fVFJBQ0Uo Jl9fdHJhY2Vwb2ludF8jI25hbWUsICBcCiAgICAgIHwgICAgXn5+fn5+fn5+fgouL2luY2x1ZGUv bGludXgvdHJhY2Vwb2ludC5oOjI0NDoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCY X19ERUNMQVJFX1RSQUNFX1JDVeKAmQogIDI0NCB8ICBfX0RFQ0xBUkVfVFJBQ0VfUkNVKG5hbWUs IFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSwgIFwKICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+ fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjM3NToyOiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMzc1IHwgIF9fREVDTEFSRV9UUkFD RShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncyksICBcCiAgICAgIHwgIF5+fn5+fn5+ fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6OTg6MTogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJBQ0XigJkKICAgOTggfCBERUNMQVJFX1RSQUNF KGJpbmRlcl90eG5fbGF0ZW5jeV9hbGxvYywKICAgICAgfCBefn5+fn5+fn5+fn5+CmRyaXZlcnMv YW5kcm9pZC9iaW5kZXJfdHJhY2UuaDogQXQgdG9wIGxldmVsOgpkcml2ZXJzL2FuZHJvaWQvYmlu ZGVyX3RyYWNlLmg6MTExOjQ6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDigJgs4oCZIG9yIOKA mCnigJkgYmVmb3JlIOKAmGludOKAmQogIDExMSB8ICAgIGludCBmcm9tX3Byb2MsIGludCBmcm9t X3RocmVhZAogICAgICB8ICAgIF5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjIzMToz NDogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAy MzEgfCAgc3RhdGljIGlubGluZSB2b2lkIHRyYWNlXyMjbmFtZShwcm90bykgICAgXAogICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+Ci4vaW5jbHVkZS9saW51eC90 cmFjZXBvaW50Lmg6Mzc1OjI0OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T 4oCZCiAgMzc1IHwgIF9fREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMo YXJncyksICBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KLi9pbmNsdWRl L2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKA mERFQ0xBUkVfVFJBQ0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJv dG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4 L3RyYWNlcG9pbnQuaDo1MTE6MjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJB TVPigJkKICA1MTEgfCAgREVDTEFSRV9UUkFDRShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMo YXJncykpCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CmRyaXZlcnMvYW5kcm9p ZC9iaW5kZXJfdHJhY2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRS QUNFX0VWRU5U4oCZCiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUs CiAgICAgIHwgXn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjExMDoy OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFBfUFJPVE/igJkKICAxMTAgfCAgVFBf UFJPVE8oc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdAogICAgICB8ICBefn5+fn5+fgpkcml2 ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTExOjQ6IGVycm9yOiBleHBlY3RlZCDigJg74oCZ LCDigJgs4oCZIG9yIOKAmCnigJkgYmVmb3JlIOKAmGludOKAmQogIDExMSB8ICAgIGludCBmcm9t X3Byb2MsIGludCBmcm9tX3RocmVhZAogICAgICB8ICAgIF5+fgouL2luY2x1ZGUvbGludXgvdHJh Y2Vwb2ludC5oOjIwNTo0NDogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyDigJhfX0RFQ0xB UkVfVFJBQ0VfUkNV4oCZCiAgMjA1IHwgIHN0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV8jI25hbWUj I19yY3VpZGxlKHByb3RvKSAgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBefn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjI0NDoyODog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFNU+KAmQogIDI0NCB8ICBfX0RFQ0xB UkVfVFJBQ0VfUkNVKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSwgIFwKICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNl cG9pbnQuaDozNzU6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9U UkFDReKAmQogIDM3NSB8ICBfX0RFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFS QU1TKGFyZ3MpLCAgXAogICAgICB8ICBefn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3Ry YWNlcG9pbnQuaDozNzU6MjQ6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJBTVPi gJkKICAzNzUgfCAgX19ERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhh cmdzKSwgIFwKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgouL2luY2x1ZGUv bGludXgvdHJhY2Vwb2ludC5oOjUxMToyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCY REVDTEFSRV9UUkFDReKAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90 byksIFBBUkFNUyhhcmdzKSkKICAgICAgfCAgXn5+fn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgv dHJhY2Vwb2ludC5oOjUxMToyMjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFN U+KAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhh cmdzKSkKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KZHJpdmVycy9hbmRyb2lk L2JpbmRlcl90cmFjZS5oOjEwOToxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFJB Q0VfRVZFTlTigJkKICAxMDkgfCBUUkFDRV9FVkVOVChiaW5kZXJfdHhuX2xhdGVuY3lfZnJlZSwK ICAgICAgfCBefn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTEwOjI6 IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUF9QUk9UT+KAmQogIDExMCB8ICBUUF9Q Uk9UTyhzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0CiAgICAgIHwgIF5+fn5+fn5+CmRyaXZl cnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMTE6NDogZXJyb3I6IGV4cGVjdGVkIOKAmDvigJks IOKAmCzigJkgb3Ig4oCYKeKAmSBiZWZvcmUg4oCYaW504oCZCiAgMTExIHwgICAgaW50IGZyb21f cHJvYywgaW50IGZyb21fdGhyZWFkCiAgICAgIHwgICAgXn5+Ci4vaW5jbHVkZS9saW51eC90cmFj ZXBvaW50Lmg6MjQ3OjM4OiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvIOKAmF9fREVDTEFS RV9UUkFDReKAmQogIDI0NyB8ICByZWdpc3Rlcl90cmFjZV8jI25hbWUodm9pZCAoKnByb2JlKShk YXRhX3Byb3RvKSwgdm9pZCAqZGF0YSkgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBefn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc3 OjQ6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhQQVJBTVPigJkKICAzNzcgfCAgICBQ QVJBTVModm9pZCAqX19kYXRhLCBwcm90byksICAgXAogICAgICB8ICAgIF5+fn5+fgouL2luY2x1 ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUxMToyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g 4oCYREVDTEFSRV9UUkFDReKAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhw cm90byksIFBBUkFNUyhhcmdzKSkKICAgICAgfCAgXn5+fn5+fn5+fn5+fgouL2luY2x1ZGUvbGlu dXgvdHJhY2Vwb2ludC5oOjUxMToyMjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBB UkFNU+KAmQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFN UyhhcmdzKSkKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KZHJpdmVycy9hbmRy b2lkL2JpbmRlcl90cmFjZS5oOjEwOToxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCY VFJBQ0VfRVZFTlTigJkKICAxMDkgfCBUUkFDRV9FVkVOVChiaW5kZXJfdHhuX2xhdGVuY3lfZnJl ZSwKICAgICAgfCBefn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTEw OjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUF9QUk9UT+KAmQogIDExMCB8ICBU UF9QUk9UTyhzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0CiAgICAgIHwgIF5+fn5+fn5+Ci4v aW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6MjQ3OjUxOiBlcnJvcjogZXhwZWN0ZWQg4oCYO+KA mSwg4oCYLOKAmSBvciDigJgp4oCZIGJlZm9yZSDigJh2b2lk4oCZCiAgMjQ3IHwgIHJlZ2lzdGVy X3RyYWNlXyMjbmFtZSh2b2lkICgqcHJvYmUpKGRhdGFfcHJvdG8pLCB2b2lkICpkYXRhKSBcCiAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc1OjI6IG5vdGU6IGluIGV4cGFuc2lv biBvZiBtYWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAzNzUgfCAgX19ERUNMQVJFX1RSQUNF KG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSwgIFwKICAgICAgfCAgXn5+fn5+fn5+ fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6NTExOjI6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyDigJhERUNMQVJFX1RSQUNF4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0Uo bmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpKQogICAgICB8ICBefn5+fn5+fn5+fn5+ CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvIOKAmFRSQUNFX0VWRU5U4oCZCiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4 bl9sYXRlbmN5X2ZyZWUsCiAgICAgIHwgXn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRl cl90cmFjZS5oOjExMTo0OiBlcnJvcjogZXhwZWN0ZWQg4oCYO+KAmSwg4oCYLOKAmSBvciDigJgp 4oCZIGJlZm9yZSDigJhpbnTigJkKICAxMTEgfCAgICBpbnQgZnJvbV9wcm9jLCBpbnQgZnJvbV90 aHJlYWQKICAgICAgfCAgICBefn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoyNTM6NDM6 IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMjUz IHwgIHJlZ2lzdGVyX3RyYWNlX3ByaW9fIyNuYW1lKHZvaWQgKCpwcm9iZSkoZGF0YV9wcm90byks IHZvaWQgKmRhdGEsXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzc6NDogbm90 ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFNU+KAmQogIDM3NyB8ICAgIFBBUkFNUyh2 b2lkICpfX2RhdGEsIHByb3RvKSwgICBcCiAgICAgIHwgICAgXn5+fn5+Ci4vaW5jbHVkZS9saW51 eC90cmFjZXBvaW50Lmg6NTExOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNM QVJFX1RSQUNF4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwg UEFSQU1TKGFyZ3MpKQogICAgICB8ICBefn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFj ZXBvaW50Lmg6NTExOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZ CiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3Mp KQogICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmlu ZGVyX3RyYWNlLmg6MTA5OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFDRV9F VkVOVOKAmQogIDEwOSB8IFRSQUNFX0VWRU5UKGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAogICAg ICB8IF5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMTA6Mjogbm90 ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQX1BST1RP4oCZCiAgMTEwIHwgIFRQX1BST1RP KHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnQKICAgICAgfCAgXn5+fn5+fn4KLi9pbmNsdWRl L2xpbnV4L3RyYWNlcG9pbnQuaDoyNTM6NTY6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDigJgs 4oCZIG9yIOKAmCnigJkgYmVmb3JlIOKAmHZvaWTigJkKICAyNTMgfCAgcmVnaXN0ZXJfdHJhY2Vf cHJpb18jI25hbWUodm9pZCAoKnByb2JlKShkYXRhX3Byb3RvKSwgdm9pZCAqZGF0YSxcCiAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzU6Mjogbm90ZTogaW4gZXhwYW5z aW9uIG9mIG1hY3JvIOKAmF9fREVDTEFSRV9UUkFDReKAmQogIDM3NSB8ICBfX0RFQ0xBUkVfVFJB Q0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpLCAgXAogICAgICB8ICBefn5+fn5+ fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDo1MTE6Mjogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfVFJBQ0XigJkKICA1MTEgfCAgREVDTEFSRV9UUkFD RShuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncykpCiAgICAgIHwgIF5+fn5+fn5+fn5+ fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oOjEwOToxOiBub3RlOiBpbiBleHBhbnNp b24gb2YgbWFjcm8g4oCYVFJBQ0VfRVZFTlTigJkKICAxMDkgfCBUUkFDRV9FVkVOVChiaW5kZXJf dHhuX2xhdGVuY3lfZnJlZSwKICAgICAgfCBefn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmlu ZGVyX3RyYWNlLmg6MTExOjQ6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDigJgs4oCZIG9yIOKA mCnigJkgYmVmb3JlIOKAmGludOKAmQogIDExMSB8ICAgIGludCBmcm9tX3Byb2MsIGludCBmcm9t X3RocmVhZAogICAgICB8ICAgIF5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjI2MDo0 MDogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAy NjAgfCAgdW5yZWdpc3Rlcl90cmFjZV8jI25hbWUodm9pZCAoKnByb2JlKShkYXRhX3Byb3RvKSwg dm9pZCAqZGF0YSkgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF5+fn5+fn5+fn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDozNzc6NDogbm90ZTog aW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFNU+KAmQogIDM3NyB8ICAgIFBBUkFNUyh2b2lk ICpfX2RhdGEsIHByb3RvKSwgICBcCiAgICAgIHwgICAgXn5+fn5+Ci4vaW5jbHVkZS9saW51eC90 cmFjZXBvaW50Lmg6NTExOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNMQVJF X1RSQUNF4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFS QU1TKGFyZ3MpKQogICAgICB8ICBefn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBv aW50Lmg6NTExOjIyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T4oCZCiAg NTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwgUEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpKQog ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVy X3RyYWNlLmg6MTA5OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFDRV9FVkVO VOKAmQogIDEwOSB8IFRSQUNFX0VWRU5UKGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAogICAgICB8 IF5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMTA6Mjogbm90ZTog aW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRQX1BST1RP4oCZCiAgMTEwIHwgIFRQX1BST1RPKHN0 cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnQKICAgICAgfCAgXn5+fn5+fn4KLi9pbmNsdWRlL2xp bnV4L3RyYWNlcG9pbnQuaDoyNjA6NTM6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDigJgs4oCZ IG9yIOKAmCnigJkgYmVmb3JlIOKAmHZvaWTigJkKICAyNjAgfCAgdW5yZWdpc3Rlcl90cmFjZV8j I25hbWUodm9pZCAoKnByb2JlKShkYXRhX3Byb3RvKSwgdm9pZCAqZGF0YSkgXAogICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+Ci4v aW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc1OjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBt YWNybyDigJhfX0RFQ0xBUkVfVFJBQ0XigJkKICAzNzUgfCAgX19ERUNMQVJFX1RSQUNFKG5hbWUs IFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSwgIFwKICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+ Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6NTExOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBv ZiBtYWNybyDigJhERUNMQVJFX1RSQUNF4oCZCiAgNTExIHwgIERFQ0xBUkVfVFJBQ0UobmFtZSwg UEFSQU1TKHByb3RvKSwgUEFSQU1TKGFyZ3MpKQogICAgICB8ICBefn5+fn5+fn5+fn5+CmRyaXZl cnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1h Y3JvIOKAmFRSQUNFX0VWRU5U4oCZCiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4bl9sYXRl bmN5X2ZyZWUsCiAgICAgIHwgXn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFj ZS5oOjExMTo0OiBlcnJvcjogZXhwZWN0ZWQg4oCYO+KAmSwg4oCYLOKAmSBvciDigJgp4oCZIGJl Zm9yZSDigJhpbnTigJkKICAxMTEgfCAgICBpbnQgZnJvbV9wcm9jLCBpbnQgZnJvbV90aHJlYWQK ICAgICAgfCAgICBefn4KLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaDoyNjY6NDY6IG5vdGU6 IGluIGRlZmluaXRpb24gb2YgbWFjcm8g4oCYX19ERUNMQVJFX1RSQUNF4oCZCiAgMjY2IHwgIGNo ZWNrX3RyYWNlX2NhbGxiYWNrX3R5cGVfIyNuYW1lKHZvaWQgKCpjYikoZGF0YV9wcm90bykpIFwK ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+ fn5+fn5+Ci4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50Lmg6Mzc3OjQ6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyDigJhQQVJBTVPigJkKICAzNzcgfCAgICBQQVJBTVModm9pZCAqX19kYXRh LCBwcm90byksICAgXAogICAgICB8ICAgIF5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2lu dC5oOjUxMToyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYREVDTEFSRV9UUkFDReKA mQogIDUxMSB8ICBERUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdz KSkKICAgICAgfCAgXn5+fn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oOjUx MToyMjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBBUkFNU+KAmQogIDUxMSB8ICBE RUNMQVJFX1RSQUNFKG5hbWUsIFBBUkFNUyhwcm90byksIFBBUkFNUyhhcmdzKSkKICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICBefn5+fn4KZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5o OjEwOToxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFJBQ0VfRVZFTlTigJkKICAx MDkgfCBUUkFDRV9FVkVOVChiaW5kZXJfdHhuX2xhdGVuY3lfZnJlZSwKICAgICAgfCBefn5+fn5+ fn5+fgpkcml2ZXJzL2FuZHJvaWQvYmluZGVyX3RyYWNlLmg6MTEwOjI6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyDigJhUUF9QUk9UT+KAmQogIDExMCB8ICBUUF9QUk9UTyhzdHJ1Y3QgYmlu ZGVyX3RyYW5zYWN0aW9uICp0CiAgICAgIHwgIF5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC9iaW5k ZXJfbGF0ZW5jeV90cmFjZXIuYzogSW4gZnVuY3Rpb24g4oCYcHJvYmVfYmluZGVyX3R4bl9sYXRl bmN5X2ZyZWXigJk6CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfbGF0ZW5jeV90cmFjZXIuYzo0Mzoy OiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24g4oCYcnRjX3RpbWVfdG9f dG3igJk7IGRpZCB5b3UgbWVhbiDigJhydGNfa3RpbWVfdG9fdG3igJk/IFstV2Vycm9yPWltcGxp Y2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQogICA0MyB8ICBydGNfdGltZV90b190bSh0LT50di50 dl9zZWMsICZ0bSk7CiAgICAgIHwgIF5+fn5+fn5+fn5+fn5+CiAgICAgIHwgIHJ0Y19rdGltZV90 b190bQptYWtlWzJdOiAqKiogW3NjcmlwdHMvTWFrZWZpbGUuYnVpbGQ6MjgzOiBkcml2ZXJzL2Fu ZHJvaWQvYmluZGVyX2FsbG9jLm9dIEVycm9yIDEKZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9sYXRl bmN5X3RyYWNlci5jOiBJbiBmdW5jdGlvbiDigJhpbml0X2JpbmRlcl9sYXRlbmN5X3RyYWNlcuKA mToKZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9sYXRlbmN5X3RyYWNlci5jOjg5OjI6IGVycm9yOiBp bXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiDigJhyZWdpc3Rlcl90cmFjZV9iaW5kZXJf dHhuX2xhdGVuY3lfZnJlZeKAmTsgZGlkIHlvdSBtZWFuIOKAmHJlZ2lzdGVyX3RyYWNlX2JpbmRl cl90eG5fbGF0ZW5jeV9pbmZv4oCZPyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJh dGlvbl0KICAgODkgfCAgcmVnaXN0ZXJfdHJhY2VfYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUoCiAg ICAgIHwgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAgICAgIHwgIHJl Z2lzdGVyX3RyYWNlX2JpbmRlcl90eG5fbGF0ZW5jeV9pbmZvCmRyaXZlcnMvYW5kcm9pZC9iaW5k ZXJfbGF0ZW5jeV90cmFjZXIuYzogSW4gZnVuY3Rpb24g4oCYZXhpdF9iaW5kZXJfbGF0ZW5jeV90 cmFjZXLigJk6CmRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfbGF0ZW5jeV90cmFjZXIuYzoxMDE6Mjog ZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIOKAmHVucmVnaXN0ZXJfdHJh Y2VfYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWXigJk7IGRpZCB5b3UgbWVhbiDigJh1bnJlZ2lzdGVy X3RyYWNlX2JpbmRlcl90eG5fbGF0ZW5jeV9pbmZv4oCZPyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5j dGlvbi1kZWNsYXJhdGlvbl0KICAxMDEgfCAgdW5yZWdpc3Rlcl90cmFjZV9iaW5kZXJfdHhuX2xh dGVuY3lfZnJlZSgKICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fgogICAgICB8ICB1bnJlZ2lzdGVyX3RyYWNlX2JpbmRlcl90eG5fbGF0ZW5jeV9pbmZvCmNj MTogc29tZSB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwptYWtlWzJdOiAqKiogW3Nj cmlwdHMvTWFrZWZpbGUuYnVpbGQ6MjgzOiBkcml2ZXJzL2FuZHJvaWQvYmluZGVyX2xhdGVuY3lf dHJhY2VyLm9dIEVycm9yIDEKZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jOiBJbiBmdW5jdGlvbiDi gJhiaW5kZXJfdHhuX2xhdGVuY3lfZnJlZeKAmToKZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jOjE1 MjI6MjogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIOKAmHRyYWNlX2Jp bmRlcl90eG5fbGF0ZW5jeV9mcmVl4oCZOyBkaWQgeW91IG1lYW4g4oCYdHJhY2VfYmluZGVyX3R4 bl9sYXRlbmN5X2luZm/igJk/IFstV2Vycm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9u XQogMTUyMiB8ICB0cmFjZV9iaW5kZXJfdHhuX2xhdGVuY3lfZnJlZSh0LCBmcm9tX3Byb2MsIGZy b21fdGhyZWFkLCB0b19wcm9jLCB0b190aHJlYWQpOwogICAgICB8ICBefn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fgogICAgICB8ICB0cmFjZV9iaW5kZXJfdHhuX2xhdGVuY3lfaW5mbwpJbiBm aWxlIGluY2x1ZGVkIGZyb20gLi9pbmNsdWRlL3RyYWNlL2RlZmluZV90cmFjZS5oOjEwMiwKICAg ICAgICAgICAgICAgICBmcm9tIGRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDo0NDgsCiAg ICAgICAgICAgICAgICAgZnJvbSBkcml2ZXJzL2FuZHJvaWQvYmluZGVyLmM6NTgyMjoKZHJpdmVy cy9hbmRyb2lkLy4vYmluZGVyX3RyYWNlLmg6IEF0IHRvcCBsZXZlbDoKZHJpdmVycy9hbmRyb2lk Ly4vYmluZGVyX3RyYWNlLmg6MTExOjQ6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDigJgs4oCZ IG9yIOKAmCnigJkgYmVmb3JlIOKAmGludOKAmQogIDExMSB8ICAgIGludCBmcm9tX3Byb2MsIGlu dCBmcm9tX3RocmVhZAogICAgICB8ICAgIF5+fgouL2luY2x1ZGUvdHJhY2UvdHJhY2VfZXZlbnRz Lmg6NTEwOjU4OiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfRVZFTlRf Q0xBU1PigJkKICA1MTAgfCAgc3RydWN0IHRyYWNlX2V2ZW50X2RhdGFfb2Zmc2V0c18jI2NhbGwg Kl9fZGF0YV9vZmZzZXRzLCBwcm90bykgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+Ci4vaW5jbHVkZS90cmFjZS90 cmFjZV9ldmVudHMuaDo3Njo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYUEFSQU1T 4oCZCiAgIDc2IHwgICAgICAgICBQQVJBTVMocHJvdG8pLCAgICAgICAgIFwKICAgICAgfCAgICAg ICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvLi9iaW5kZXJfdHJhY2UuaDoxMDk6MTogbm90ZTog aW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRSQUNFX0VWRU5U4oCZCiAgMTA5IHwgVFJBQ0VfRVZF TlQoYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUsCiAgICAgIHwgXn5+fn5+fn5+fn4KZHJpdmVycy9h bmRyb2lkLy4vYmluZGVyX3RyYWNlLmg6MTEwOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNy byDigJhUUF9QUk9UT+KAmQogIDExMCB8ICBUUF9QUk9UTyhzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0 aW9uICp0CiAgICAgIHwgIF5+fn5+fn5+CkluIGZpbGUgaW5jbHVkZWQgZnJvbSAuL2luY2x1ZGUv dHJhY2UvZGVmaW5lX3RyYWNlLmg6MTAyLAogICAgICAgICAgICAgICAgIGZyb20gZHJpdmVycy9h bmRyb2lkL2JpbmRlcl90cmFjZS5oOjQ0OCwKICAgICAgICAgICAgICAgICBmcm9tIGRyaXZlcnMv YW5kcm9pZC9iaW5kZXIuYzo1ODIyOgpkcml2ZXJzL2FuZHJvaWQvLi9iaW5kZXJfdHJhY2UuaDox MTE6NDogZXJyb3I6IGV4cGVjdGVkIOKAmDvigJksIOKAmCzigJkgb3Ig4oCYKeKAmSBiZWZvcmUg 4oCYaW504oCZCiAgMTExIHwgICAgaW50IGZyb21fcHJvYywgaW50IGZyb21fdGhyZWFkCiAgICAg IHwgICAgXn5+Ci4vaW5jbHVkZS90cmFjZS90cmFjZV9ldmVudHMuaDo2NzQ6NDQ6IG5vdGU6IGlu IGRlZmluaXRpb24gb2YgbWFjcm8g4oCYREVDTEFSRV9FVkVOVF9DTEFTU+KAmQogIDY3NCB8IHRy YWNlX2V2ZW50X3Jhd19ldmVudF8jI2NhbGwodm9pZCAqX19kYXRhLCBwcm90bykgICBcCiAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+Ci4vaW5j bHVkZS90cmFjZS90cmFjZV9ldmVudHMuaDo3Njo5OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFj cm8g4oCYUEFSQU1T4oCZCiAgIDc2IHwgICAgICAgICBQQVJBTVMocHJvdG8pLCAgICAgICAgIFwK ICAgICAgfCAgICAgICAgIF5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvLi9iaW5kZXJfdHJhY2UuaDox MDk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRSQUNFX0VWRU5U4oCZCiAgMTA5 IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUsCiAgICAgIHwgXn5+fn5+fn5+ fn4KZHJpdmVycy9hbmRyb2lkLy4vYmluZGVyX3RyYWNlLmg6MTEwOjI6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybyDigJhUUF9QUk9UT+KAmQogIDExMCB8ICBUUF9QUk9UTyhzdHJ1Y3QgYmlu ZGVyX3RyYW5zYWN0aW9uICp0CiAgICAgIHwgIF5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC8uL2Jp bmRlcl90cmFjZS5oOiBJbiBmdW5jdGlvbiDigJhmdHJhY2VfdGVzdF9wcm9iZV9iaW5kZXJfdHhu X2xhdGVuY3lfZnJlZeKAmToKLi9pbmNsdWRlL3RyYWNlL3RyYWNlX2V2ZW50cy5oOjcwOToyOiBl cnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24g4oCYY2hlY2tfdHJhY2VfY2Fs bGJhY2tfdHlwZV9iaW5kZXJfdHhuX2xhdGVuY3lfZnJlZeKAmTsgZGlkIHlvdSBtZWFuIOKAmGNo ZWNrX3RyYWNlX2NhbGxiYWNrX3R5cGVfYmluZGVyX3R4bl9sYXRlbmN5X2luZm/igJk/IFstV2Vy cm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQogIDcwOSB8ICBjaGVja190cmFjZV9j YWxsYmFja190eXBlXyMjY2FsbCh0cmFjZV9ldmVudF9yYXdfZXZlbnRfIyN0ZW1wbGF0ZSk7IFwK ICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL3RyYWNlL3RyYWNl X2V2ZW50cy5oOjgxOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUZJTkVfRVZF TlTigJkKICAgODEgfCAgREVGSU5FX0VWRU5UKG5hbWUsIG5hbWUsIFBBUkFNUyhwcm90byksIFBB UkFNUyhhcmdzKSk7CiAgICAgIHwgIF5+fn5+fn5+fn5+fgpkcml2ZXJzL2FuZHJvaWQvLi9iaW5k ZXJfdHJhY2UuaDoxMDk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFRSQUNFX0VW RU5U4oCZCiAgMTA5IHwgVFJBQ0VfRVZFTlQoYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWUsCiAgICAg IHwgXn5+fn5+fn5+fn4KLi9pbmNsdWRlL3RyYWNlL3RyYWNlX2V2ZW50cy5oOjcwOTozNTogZXJy b3I6IOKAmHRyYWNlX2V2ZW50X3Jhd19ldmVudF9iaW5kZXJfdHhuX2xhdGVuY3lfZnJlZeKAmSB1 bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiDigJh0 cmFjZV9ldmVudF9yYXdfYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWXigJk/CiAgNzA5IHwgIGNoZWNr X3RyYWNlX2NhbGxiYWNrX3R5cGVfIyNjYWxsKHRyYWNlX2V2ZW50X3Jhd19ldmVudF8jI3RlbXBs YXRlKTsgXAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+ fn5+fn5+fn5+fn5+fn5+Ci4vaW5jbHVkZS90cmFjZS90cmFjZV9ldmVudHMuaDo4MToyOiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYREVGSU5FX0VWRU5U4oCZCiAgIDgxIHwgIERFRklO RV9FVkVOVChuYW1lLCBuYW1lLCBQQVJBTVMocHJvdG8pLCBQQVJBTVMoYXJncykpOwogICAgICB8 ICBefn5+fn5+fn5+fn4KZHJpdmVycy9hbmRyb2lkLy4vYmluZGVyX3RyYWNlLmg6MTA5OjE6IG5v dGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFDRV9FVkVOVOKAmQogIDEwOSB8IFRSQUNF X0VWRU5UKGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAogICAgICB8IF5+fn5+fn5+fn5+CmRyaXZl cnMvYW5kcm9pZC8uL2JpbmRlcl90cmFjZS5oOiBBdCB0b3AgbGV2ZWw6CmRyaXZlcnMvYW5kcm9p ZC8uL2JpbmRlcl90cmFjZS5oOjExMTo0OiBlcnJvcjogZXhwZWN0ZWQg4oCYO+KAmSwg4oCYLOKA mSBvciDigJgp4oCZIGJlZm9yZSDigJhpbnTigJkKICAxMTEgfCAgICBpbnQgZnJvbV9wcm9jLCBp bnQgZnJvbV90aHJlYWQKICAgICAgfCAgICBefn4KLi9pbmNsdWRlL3RyYWNlL3RyYWNlX2V2ZW50 cy5oOjYxODozNDogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyDigJhfVFJBQ0VfUEVSRl9Q Uk9UT+KAmQogIDYxOCB8ICBwZXJmX3RyYWNlXyMjY2FsbCh2b2lkICpfX2RhdGEsIHByb3RvKTsK ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fgouL2luY2x1ZGUv dHJhY2UvdHJhY2VfZXZlbnRzLmg6NzMzOjI1OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g 4oCYUEFSQU1T4oCZCiAgNzMzIHwgX1RSQUNFX1BFUkZfUFJPVE8oY2FsbCwgUEFSQU1TKHByb3Rv KSk7ICAgICBcCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+Ci4vaW5jbHVk ZS90cmFjZS90cmFjZV9ldmVudHMuaDo3NToyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g 4oCYREVDTEFSRV9FVkVOVF9DTEFTU+KAmQogICA3NSB8ICBERUNMQVJFX0VWRU5UX0NMQVNTKG5h bWUsICAgICAgICAgIFwKICAgICAgfCAgXn5+fn5+fn5+fn5+fn5+fn5+fgouL2luY2x1ZGUvdHJh Y2UvdHJhY2VfZXZlbnRzLmg6NzY6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFBB UkFNU+KAmQogICA3NiB8ICAgICAgICAgUEFSQU1TKHByb3RvKSwgICAgICAgICBcCiAgICAgIHwg ICAgICAgICBefn5+fn4KZHJpdmVycy9hbmRyb2lkLy4vYmluZGVyX3RyYWNlLmg6MTA5OjE6IG5v dGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhUUkFDRV9FVkVOVOKAmQogIDEwOSB8IFRSQUNF X0VWRU5UKGJpbmRlcl90eG5fbGF0ZW5jeV9mcmVlLAogICAgICB8IF5+fn5+fn5+fn5+CmRyaXZl cnMvYW5kcm9pZC8uL2JpbmRlcl90cmFjZS5oOjExMDoyOiBub3RlOiBpbiBleHBhbnNpb24gb2Yg bWFjcm8g4oCYVFBfUFJPVE/igJkKICAxMTAgfCAgVFBfUFJPVE8oc3RydWN0IGJpbmRlcl90cmFu c2FjdGlvbiAqdAogICAgICB8ICBefn5+fn5+fgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi9pbmNs dWRlL3RyYWNlL2RlZmluZV90cmFjZS5oOjEwMiwKICAgICAgICAgICAgICAgICBmcm9tIGRyaXZl cnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDo0NDgsCiAgICAgICAgICAgICAgICAgZnJvbSBkcml2 ZXJzL2FuZHJvaWQvYmluZGVyLmM6NTgyMjoKLi9pbmNsdWRlL3RyYWNlL3RyYWNlX2V2ZW50cy5o Ojc0MDoxMzogZXJyb3I6IOKAmHRyYWNlX2V2ZW50X3Jhd19ldmVudF9iaW5kZXJfdHhuX2xhdGVu Y3lfZnJlZeKAmSB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKTsgZGlkIHlvdSBt ZWFuIOKAmHRyYWNlX2V2ZW50X3Jhd19iaW5kZXJfdHhuX2xhdGVuY3lfZnJlZeKAmT8KICA3NDAg fCAgLnByb2JlICAgPSB0cmFjZV9ldmVudF9yYXdfZXZlbnRfIyNjYWxsLCAgXAogICAgICB8ICAg ICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL3RyYWNlL3RyYWNlX2V2 ZW50cy5oOjc1OjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNMQVJFX0VWRU5U X0NMQVNT4oCZCiAgIDc1IHwgIERFQ0xBUkVfRVZFTlRfQ0xBU1MobmFtZSwgICAgICAgICAgXAog ICAgICB8ICBefn5+fn5+fn5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC8uL2JpbmRlcl90cmFj ZS5oOjEwOToxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFJBQ0VfRVZFTlTigJkK ICAxMDkgfCBUUkFDRV9FVkVOVChiaW5kZXJfdHhuX2xhdGVuY3lfZnJlZSwKICAgICAgfCBefn5+ fn5+fn5+fgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi9pbmNsdWRlL3RyYWNlL2RlZmluZV90cmFj ZS5oOjEwMiwKICAgICAgICAgICAgICAgICBmcm9tIGRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJh Y2UuaDo0NDgsCiAgICAgICAgICAgICAgICAgZnJvbSBkcml2ZXJzL2FuZHJvaWQvYmluZGVyLmM6 NTgyMjoKLi9pbmNsdWRlL3RyYWNlL3RyYWNlX2V2ZW50cy5oOjYyMToxNzogZXJyb3I6IOKAmHBl cmZfdHJhY2VfYmluZGVyX3R4bl9sYXRlbmN5X2ZyZWXigJkgdW5kZWNsYXJlZCBoZXJlIChub3Qg aW4gYSBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiDigJhwcmludF9mbXRfYmluZGVyX3R4bl9sYXRl bmN5X2ZyZWXigJk/CiAgNjIxIHwgIC5wZXJmX3Byb2JlICA9IHBlcmZfdHJhY2VfIyNjYWxsLAog ICAgICB8ICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fgouL2luY2x1ZGUvdHJhY2UvdHJhY2Vf ZXZlbnRzLmg6NzQyOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhfVFJBQ0VfUEVS Rl9JTklU4oCZCiAgNzQyIHwgIF9UUkFDRV9QRVJGX0lOSVQoY2FsbCkgICAgICBcCiAgICAgIHwg IF5+fn5+fn5+fn5+fn5+fn4KLi9pbmNsdWRlL3RyYWNlL3RyYWNlX2V2ZW50cy5oOjc1OjI6IG5v dGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhERUNMQVJFX0VWRU5UX0NMQVNT4oCZCiAgIDc1 IHwgIERFQ0xBUkVfRVZFTlRfQ0xBU1MobmFtZSwgICAgICAgICAgXAogICAgICB8ICBefn5+fn5+ fn5+fn5+fn5+fn5+CmRyaXZlcnMvYW5kcm9pZC8uL2JpbmRlcl90cmFjZS5oOjEwOToxOiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFJBQ0VfRVZFTlTigJkKICAxMDkgfCBUUkFDRV9F VkVOVChiaW5kZXJfdHhuX2xhdGVuY3lfZnJlZSwKICAgICAgfCBefn5+fn5+fn5+fgpJbiBmaWxl IGluY2x1ZGVkIGZyb20gLi9pbmNsdWRlL3RyYWNlL2RlZmluZV90cmFjZS5oOjEwMywKICAgICAg ICAgICAgICAgICBmcm9tIGRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2UuaDo0NDgsCiAgICAg ICAgICAgICAgICAgZnJvbSBkcml2ZXJzL2FuZHJvaWQvYmluZGVyLmM6NTgyMjoKZHJpdmVycy9h bmRyb2lkLy4vYmluZGVyX3RyYWNlLmg6MTExOjQ6IGVycm9yOiBleHBlY3RlZCDigJg74oCZLCDi gJgs4oCZIG9yIOKAmCnigJkgYmVmb3JlIOKAmGludOKAmQogIDExMSB8ICAgIGludCBmcm9tX3By b2MsIGludCBmcm9tX3RocmVhZAogICAgICB8ICAgIF5+fgouL2luY2x1ZGUvdHJhY2UvcGVyZi5o OjMzOjMzOiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvIOKAmERFQ0xBUkVfRVZFTlRfQ0xB U1PigJkKICAgMzMgfCBwZXJmX3RyYWNlXyMjY2FsbCh2b2lkICpfX2RhdGEsIHByb3RvKSAgICAg XAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn4KLi9pbmNsdWRl L3RyYWNlL3RyYWNlX2V2ZW50cy5oOjc2Ojk6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDi gJhQQVJBTVPigJkKICAgNzYgfCAgICAgICAgIFBBUkFNUyhwcm90byksICAgICAgICAgXAogICAg ICB8ICAgICAgICAgXn5+fn5+CmRyaXZlcnMvYW5kcm9pZC8uL2JpbmRlcl90cmFjZS5oOjEwOTox OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g4oCYVFJBQ0VfRVZFTlTigJkKICAxMDkgfCBU UkFDRV9FVkVOVChiaW5kZXJfdHhuX2xhdGVuY3lfZnJlZSwKICAgICAgfCBefn5+fn5+fn5+fgpk cml2ZXJzL2FuZHJvaWQvLi9iaW5kZXJfdHJhY2UuaDoxMTA6Mjogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvIOKAmFRQX1BST1RP4oCZCiAgMTEwIHwgIFRQX1BST1RPKHN0cnVjdCBiaW5kZXJf dHJhbnNhY3Rpb24gKnQKICAgICAgfCAgXn5+fn5+fn4KY2MxOiBzb21lIHdhcm5pbmdzIGJlaW5n IHRyZWF0ZWQgYXMgZXJyb3JzCm1ha2VbMl06ICoqKiBbc2NyaXB0cy9NYWtlZmlsZS5idWlsZDoy ODM6IGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIub10gRXJyb3IgMQptYWtlWzFdOiAqKiogW3Njcmlw dHMvTWFrZWZpbGUuYnVpbGQ6NTAwOiBkcml2ZXJzL2FuZHJvaWRdIEVycm9yIDIKbWFrZVsxXTog KioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4KbWFrZTogKioqIFtNYWtlZmlsZTox Nzg4OiBkcml2ZXJzXSBFcnJvciAyCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KTGludXgtbWVkaWF0ZWsgbWFpbGluZyBsaXN0CkxpbnV4LW1lZGlhdGVr QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1tZWRpYXRlawo=