From nobody Mon Feb 9 19:40:08 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1697380156; cv=none; d=zohomail.com; s=zohoarc; b=KWgB166598BMS/gDnPNU3WK3Vi/G9YnWzAFtAdJ+Wrjng8zv85xIHW027lJXgNC/ey/gT+UgW/Uwg2kR9w+5XKsZMTLPD+ql8GQ79g6jf1SEVzExy7HegsdlPV9xY/vakVGsHqmpI6SVe2ZkNMWiba94P3swTcb/n88FxGUBPD0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1697380156; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:Message-Id:Reply-To:To; bh=KYSBDI/TNw65eSfBI02a4q34325EGKRhlnNMnOuMzYs=; b=C9pHoHWSPE2/TjR/wlIH0Cd/Fu6t3QkxDQTsy18dI3fi8BlDVjexnAx7uhz36fITrJsnP8pqVOGnD1CWtHvaa/RBb5H041bdvQMWWQJNUt51L/1OdS/GZ/jYTh8kvgKDv19gkyWY4ibRhMZ1S0F3ktdNhy9JoTe7wsJDNy1LeGM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 169738015691949.26141649601175; Sun, 15 Oct 2023 07:29:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qs26L-0004G3-IX; Sun, 15 Oct 2023 10:28:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qs26I-0004FI-Tf for qemu-devel@nongnu.org; Sun, 15 Oct 2023 10:28:14 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qs26D-0003JW-T5 for qemu-devel@nongnu.org; Sun, 15 Oct 2023 10:28:14 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-1c5cd27b1acso31235335ad.2 for ; Sun, 15 Oct 2023 07:28:09 -0700 (PDT) Received: from localhost ([2400:4050:a840:1e00:78d2:b862:10a7:d486]) by smtp.gmail.com with UTF8SMTPSA id ij6-20020a170902ab4600b001c0c79b386esm7069300plb.95.2023.10.15.07.28.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 15 Oct 2023 07:28:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1697380088; x=1697984888; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KYSBDI/TNw65eSfBI02a4q34325EGKRhlnNMnOuMzYs=; b=ZuL8uCKwGfmgfkFhe1hMZWA8s8f99kU4mtGWyv/Q24eDCJ7n+j2Th6hz7XQSevNX7o KWj29CvPb+wg/g1KnnDy0XB6CBa9GHxYqp44yMGkoVv6obVAgLHZoPqdHB81SDeXpuiw ME/4/MAEf+kvFyFAIW+ICHQXtHni8k8/KuMvwlwEgYMM51rkt16p8fVQ5j0PwaoBNt9G YOWZhsUlt80H+8OaLBpyM1oyasy6Th6ZGYcro9Rs7oAsjhyjtt2RPOzSbPBmIXlQO5SM xx4qnMSLVXglkwha7iUhW9k/76oeg6XGZcV/9iUMQj2hCFKj4jD9ozbrwUefIWhZjM// yQzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697380088; x=1697984888; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KYSBDI/TNw65eSfBI02a4q34325EGKRhlnNMnOuMzYs=; b=KQbRdLoMFgYdwx8wdMId7p2JRZgc7qH06utQvD/IjGNf7/MF/odNMU3+7miRqZ0X9h XwEA+X9mqiYqNklS/i/uwcJV7No6yCbkgMCg+v2OyHlt9+XXukEzQDqnB765JUG3BIcS TDfSkYSWcviGx43A8hjJhXHN9JA3I5yeek1pKrpyj0O+LHdXJSWk0s/9wD0b7JNNIT4m 77AckHfCoi7q9XqyuJ1o+JGzt5YagCJAgNvmymbjMgPdyk/m3K8sWizohgMoRsN+VWYe RUIWi0uwmc+xIUj/gdsf3KhgJt67S9gKJTeUR0x48QpgjY2QXORp1+hYXa0nkzQDjlhK mwpA== X-Gm-Message-State: AOJu0Yy/t63Q9EKSG8wFaj7zU2PSzJIQMT30yfBhzOXcM2u35QxPsYhA lqiu6EbyMO6tDzmqdl+nh9+cE9zXm3sSR6WkcqYR8w== X-Google-Smtp-Source: AGHT+IEMgOYGEkUsx4O02Q+bIo6YubmKZ2+omccyNisKAm1zmprnVQRWtt3VR2g7qmNxQhkH8S/6kQ== X-Received: by 2002:a17:902:e80e:b0:1c6:2d13:5b77 with SMTP id u14-20020a170902e80e00b001c62d135b77mr37935097plg.39.1697380085872; Sun, 15 Oct 2023 07:28:05 -0700 (PDT) From: Akihiko Odaki To: Cc: qemu-devel@nongnu.org, Yuri Benditovich , Andrew Melnychenko , "Michael S . Tsirkin" , Jason Wang , Akihiko Odaki Subject: [RFC PATCH v2 1/3] ebpf: Add tools/ebpf/vnet_hash.bpf.c Date: Sun, 15 Oct 2023 23:27:43 +0900 Message-ID: <20231015142755.261808-2-akihiko.odaki@daynix.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231015142755.261808-1-akihiko.odaki@daynix.com> References: <20231015142755.261808-1-akihiko.odaki@daynix.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=2607:f8b0:4864:20::629; envelope-from=akihiko.odaki@daynix.com; helo=mail-pl1-x629.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @daynix-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1697380159200100003 Content-Type: text/plain; charset="utf-8" This new BPF program is capable of hash reporting. Signed-off-by: Akihiko Odaki --- ebpf/ebpf_rss.h | 2 + ebpf/rss.bpf.skeleton.h | 995 ------------------------- ebpf/socket.bpf.skeleton.h | 1019 +++++++++++++++++++++++++ ebpf/vnet_hash.bpf.skeleton.h | 1075 +++++++++++++++++++++++++++ tools/ebpf/{rss.bpf.c =3D> rss.bpf.h} | 49 +- ebpf/ebpf_rss-stub.c | 5 + ebpf/ebpf_rss.c | 64 +- tools/ebpf/socket.bpf.c | 32 + tools/ebpf/vnet_hash.bpf.c | 29 + tools/ebpf/Makefile.ebpf | 6 +- 10 files changed, 2245 insertions(+), 1031 deletions(-) delete mode 100644 ebpf/rss.bpf.skeleton.h create mode 100644 ebpf/socket.bpf.skeleton.h create mode 100644 ebpf/vnet_hash.bpf.skeleton.h rename tools/ebpf/{rss.bpf.c =3D> rss.bpf.h} (91%) create mode 100644 tools/ebpf/socket.bpf.c create mode 100644 tools/ebpf/vnet_hash.bpf.c diff --git a/ebpf/ebpf_rss.h b/ebpf/ebpf_rss.h index 1128173572..4fce335739 100644 --- a/ebpf/ebpf_rss.h +++ b/ebpf/ebpf_rss.h @@ -20,6 +20,7 @@ struct EBPFRSSContext { int map_configuration; int map_toeplitz_key; int map_indirections_table; + bool hash_report; }; =20 struct EBPFRSSConfig { @@ -35,6 +36,7 @@ void ebpf_rss_init(struct EBPFRSSContext *ctx); bool ebpf_rss_is_loaded(struct EBPFRSSContext *ctx); =20 bool ebpf_rss_load(struct EBPFRSSContext *ctx); +bool ebpf_rss_hash_report_load(struct EBPFRSSContext *ctx); =20 void ebpf_rss_set_all(struct EBPFRSSContext *ctx, struct EBPFRSSConfig *co= nfig, uint16_t *indirections_table, uint8_t *toeplitz_key); diff --git a/ebpf/rss.bpf.skeleton.h b/ebpf/rss.bpf.skeleton.h deleted file mode 100644 index 3e33786799..0000000000 --- a/ebpf/rss.bpf.skeleton.h +++ /dev/null @@ -1,995 +0,0 @@ -/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ - -/* THIS FILE IS AUTOGENERATED BY BPFTOOL! */ -#ifndef __RSS_BPF_SKEL_H__ -#define __RSS_BPF_SKEL_H__ - -#include -#include -#include - -struct rss_bpf { - struct bpf_object_skeleton *skeleton; - struct bpf_object *obj; - struct { - struct bpf_map *tap_rss_map_configurations; - struct bpf_map *tap_rss_map_toeplitz_key; - struct bpf_map *tap_rss_map_indirection_table; - } maps; - struct { - struct bpf_program *tun_rss_steering_prog; - } progs; - struct { - struct bpf_link *tun_rss_steering_prog; - } links; - -#ifdef __cplusplus - static inline struct rss_bpf *open(const struct bpf_object_open_opts *opt= s =3D nullptr); - static inline struct rss_bpf *open_and_load(); - static inline int load(struct rss_bpf *skel); - static inline int attach(struct rss_bpf *skel); - static inline void detach(struct rss_bpf *skel); - static inline void destroy(struct rss_bpf *skel); - static inline const void *elf_bytes(size_t *sz); -#endif /* __cplusplus */ -}; - -static void -rss_bpf__destroy(struct rss_bpf *obj) -{ - if (!obj) - return; - if (obj->skeleton) - bpf_object__destroy_skeleton(obj->skeleton); - free(obj); -} - -static inline int -rss_bpf__create_skeleton(struct rss_bpf *obj); - -static inline struct rss_bpf * -rss_bpf__open_opts(const struct bpf_object_open_opts *opts) -{ - struct rss_bpf *obj; - int err; - - obj =3D (struct rss_bpf *)calloc(1, sizeof(*obj)); - if (!obj) { - errno =3D ENOMEM; - return NULL; - } - - err =3D rss_bpf__create_skeleton(obj); - if (err) - goto err_out; - - err =3D bpf_object__open_skeleton(obj->skeleton, opts); - if (err) - goto err_out; - - return obj; -err_out: - rss_bpf__destroy(obj); - errno =3D -err; - return NULL; -} - -static inline struct rss_bpf * -rss_bpf__open(void) -{ - return rss_bpf__open_opts(NULL); -} - -static inline int -rss_bpf__load(struct rss_bpf *obj) -{ - return bpf_object__load_skeleton(obj->skeleton); -} - -static inline struct rss_bpf * -rss_bpf__open_and_load(void) -{ - struct rss_bpf *obj; - int err; - - obj =3D rss_bpf__open(); - if (!obj) - return NULL; - err =3D rss_bpf__load(obj); - if (err) { - rss_bpf__destroy(obj); - errno =3D -err; - return NULL; - } - return obj; -} - -static inline int -rss_bpf__attach(struct rss_bpf *obj) -{ - return bpf_object__attach_skeleton(obj->skeleton); -} - -static inline void -rss_bpf__detach(struct rss_bpf *obj) -{ - bpf_object__detach_skeleton(obj->skeleton); -} - -static inline const void *rss_bpf__elf_bytes(size_t *sz); - -static inline int -rss_bpf__create_skeleton(struct rss_bpf *obj) -{ - struct bpf_object_skeleton *s; - int err; - - s =3D (struct bpf_object_skeleton *)calloc(1, sizeof(*s)); - if (!s) { - err =3D -ENOMEM; - goto err; - } - - s->sz =3D sizeof(*s); - s->name =3D "rss_bpf"; - s->obj =3D &obj->obj; - - /* maps */ - s->map_cnt =3D 3; - s->map_skel_sz =3D sizeof(*s->maps); - s->maps =3D (struct bpf_map_skeleton *)calloc(s->map_cnt, s->map_skel_sz); - if (!s->maps) { - err =3D -ENOMEM; - goto err; - } - - s->maps[0].name =3D "tap_rss_map_configurations"; - s->maps[0].map =3D &obj->maps.tap_rss_map_configurations; - - s->maps[1].name =3D "tap_rss_map_toeplitz_key"; - s->maps[1].map =3D &obj->maps.tap_rss_map_toeplitz_key; - - s->maps[2].name =3D "tap_rss_map_indirection_table"; - s->maps[2].map =3D &obj->maps.tap_rss_map_indirection_table; - - /* programs */ - s->prog_cnt =3D 1; - s->prog_skel_sz =3D sizeof(*s->progs); - s->progs =3D (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel= _sz); - if (!s->progs) { - err =3D -ENOMEM; - goto err; - } - - s->progs[0].name =3D "tun_rss_steering_prog"; - s->progs[0].prog =3D &obj->progs.tun_rss_steering_prog; - s->progs[0].link =3D &obj->links.tun_rss_steering_prog; - - s->data =3D (void *)rss_bpf__elf_bytes(&s->data_sz); - - obj->skeleton =3D s; - return 0; -err: - bpf_object__destroy_skeleton(s); - return err; -} - -static inline const void *rss_bpf__elf_bytes(size_t *sz) -{ - *sz =3D 20480; - return (const void *)"\ -\x7f\x45\x4c\x46\x02\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\xf7\0\x01\0\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\xc0\x4c\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x0d= \0\ -\x01\0\x7b\x1a\x40\xff\0\0\0\0\xb7\x09\0\0\0\0\0\0\x63\x9a\x4c\xff\0\0\0\0= \xbf\ -\xa7\0\0\0\0\0\0\x07\x07\0\0\x4c\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\xbf\x72\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x06\0\0\0\0\0\0\x18\x01\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\xbf\x72\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x08\0\0\0= \0\0\ -\0\x15\x06\x61\x02\0\0\0\0\xbf\x87\0\0\0\0\0\0\x15\x07\x5f\x02\0\0\0\0\x71= \x61\ -\0\0\0\0\0\0\x55\x01\x01\0\0\0\0\0\x05\0\x58\x02\0\0\0\0\xb7\x01\0\0\0\0\0= \0\ -\x63\x1a\xc0\xff\0\0\0\0\x7b\x1a\xb8\xff\0\0\0\0\x7b\x1a\xb0\xff\0\0\0\0\x= 7b\ -\x1a\xa8\xff\0\0\0\0\x7b\x1a\xa0\xff\0\0\0\0\x63\x1a\x98\xff\0\0\0\0\x7b\x= 1a\ -\x90\xff\0\0\0\0\x7b\x1a\x88\xff\0\0\0\0\x7b\x1a\x80\xff\0\0\0\0\x7b\x1a\x= 78\ -\xff\0\0\0\0\x7b\x1a\x70\xff\0\0\0\0\x7b\x1a\x68\xff\0\0\0\0\x7b\x1a\x60\x= ff\0\ -\0\0\0\x7b\x1a\x58\xff\0\0\0\0\x7b\x1a\x50\xff\0\0\0\0\x79\xa9\x40\xff\0\0= \0\0\ -\x15\x09\x46\x02\0\0\0\0\x6b\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x= 03\0\ -\0\xc8\xff\xff\xff\xbf\x91\0\0\0\0\0\0\xb7\x02\0\0\x0c\0\0\0\xb7\x04\0\0\x= 02\0\ -\0\0\xb7\x05\0\0\0\0\0\0\x85\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0= \x20\ -\0\0\0\x55\0\x3b\x02\0\0\0\0\xb7\x02\0\0\x10\0\0\0\x69\xa1\xc8\xff\0\0\0\0= \xbf\ -\x13\0\0\0\0\0\0\xdc\x03\0\0\x10\0\0\0\x15\x03\x02\0\0\x81\0\0\x55\x03\x0b= \0\ -\xa8\x88\0\0\xb7\x02\0\0\x14\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff= \xff\ -\xff\xbf\x91\0\0\0\0\0\0\xb7\x04\0\0\x02\0\0\0\xb7\x05\0\0\0\0\0\0\x85\0\0= \0\ -\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x2b\x02\0\0\0\0\x= 69\ -\xa1\xc8\xff\0\0\0\0\x15\x01\x29\x02\0\0\0\0\x15\x01\x56\0\x86\xdd\0\0\x7b= \x7a\ -\x30\xff\0\0\0\0\x55\x01\x39\0\x08\0\0\0\xb7\x07\0\0\x01\0\0\0\x73\x7a\x50= \xff\ -\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\xd8\xff\0\0\0\0\x7b\x1a\xd0\xff\0\0\0= \0\ -\x7b\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\x= 79\ -\xa1\x40\xff\0\0\0\0\xb7\x02\0\0\0\0\0\0\xb7\x04\0\0\x14\0\0\0\xb7\x05\0\0= \x01\ -\0\0\0\x85\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x= 16\ -\x02\0\0\0\0\x69\xa1\xce\xff\0\0\0\0\x55\x01\x01\0\0\0\0\0\xb7\x07\0\0\0\0= \0\0\ -\x61\xa1\xd4\xff\0\0\0\0\x63\x1a\x5c\xff\0\0\0\0\x61\xa1\xd8\xff\0\0\0\0\x= 63\ -\x1a\x60\xff\0\0\0\0\x71\xa9\xd1\xff\0\0\0\0\x73\x7a\x56\xff\0\0\0\0\x71\x= a1\ -\xc8\xff\0\0\0\0\x67\x01\0\0\x02\0\0\0\x57\x01\0\0\x3c\0\0\0\x7b\x1a\x38\x= ff\0\ -\0\0\0\xbf\x91\0\0\0\0\0\0\x57\x01\0\0\xff\0\0\0\x15\x01\x19\0\0\0\0\0\x57= \x07\ -\0\0\xff\0\0\0\x55\x07\x17\0\0\0\0\0\x57\x09\0\0\xff\0\0\0\x15\x09\x59\x01= \x11\ -\0\0\0\x55\x09\x14\0\x06\0\0\0\xb7\x01\0\0\x01\0\0\0\x73\x1a\x53\xff\0\0\0= \0\ -\xb7\x01\0\0\0\0\0\0\x63\x1a\xd8\xff\0\0\0\0\x7b\x1a\xd0\xff\0\0\0\0\x7b\x= 1a\ -\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\x79\xa1\x= 40\ -\xff\0\0\0\0\x79\xa2\x38\xff\0\0\0\0\xb7\x04\0\0\x14\0\0\0\xb7\x05\0\0\x01= \0\0\ -\0\x85\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\xf1\x= 01\0\ -\0\0\0\x69\xa1\xc8\xff\0\0\0\0\x6b\x1a\x58\xff\0\0\0\0\x69\xa1\xca\xff\0\0= \0\0\ -\x6b\x1a\x5a\xff\0\0\0\0\x71\xa1\x50\xff\0\0\0\0\x15\x01\xd9\0\0\0\0\0\x71= \x62\ -\x03\0\0\0\0\0\x67\x02\0\0\x08\0\0\0\x71\x61\x02\0\0\0\0\0\x4f\x12\0\0\0\0= \0\0\ -\x71\x63\x04\0\0\0\0\0\x67\x03\0\0\x10\0\0\0\x71\x61\x05\0\0\0\0\0\x67\x01= \0\0\ -\x18\0\0\0\x4f\x31\0\0\0\0\0\0\x4f\x21\0\0\0\0\0\0\x71\xa2\x53\xff\0\0\0\0= \x79\ -\xa0\x30\xff\0\0\0\0\x15\x02\x0a\x01\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02\0= \0\ -\x02\0\0\0\x15\x02\x07\x01\0\0\0\0\x61\xa1\x5c\xff\0\0\0\0\x63\x1a\xa0\xff= \0\0\ -\0\0\x61\xa1\x60\xff\0\0\0\0\x63\x1a\xa4\xff\0\0\0\0\x69\xa1\x58\xff\0\0\0= \0\ -\x6b\x1a\xa8\xff\0\0\0\0\x69\xa1\x5a\xff\0\0\0\0\x6b\x1a\xaa\xff\0\0\0\0\x= 05\0\ -\x69\x01\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73\x1a\x51\xff\0\0\0\0\xb7\x01\0\0= \0\0\ -\0\0\x7b\x1a\xe8\xff\0\0\0\0\x7b\x1a\xe0\xff\0\0\0\0\x7b\x1a\xd8\xff\0\0\0= \0\ -\x7b\x1a\xd0\xff\0\0\0\0\x7b\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x= 03\0\ -\0\xc8\xff\xff\xff\xb7\x01\0\0\x28\0\0\0\x7b\x1a\x38\xff\0\0\0\0\xbf\x91\0= \0\0\ -\0\0\0\xb7\x02\0\0\0\0\0\0\xb7\x04\0\0\x28\0\0\0\xb7\x05\0\0\x01\0\0\0\x85= \0\0\ -\0\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\xfd\0\0\0\0\0\x= 79\ -\xa1\xd8\xff\0\0\0\0\x63\x1a\x64\xff\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x1a= \x68\ -\xff\0\0\0\0\x79\xa1\xd0\xff\0\0\0\0\x63\x1a\x5c\xff\0\0\0\0\x77\x01\0\0\x= 20\0\ -\0\0\x63\x1a\x60\xff\0\0\0\0\x79\xa1\xe0\xff\0\0\0\0\x63\x1a\x6c\xff\0\0\0= \0\ -\x77\x01\0\0\x20\0\0\0\x63\x1a\x70\xff\0\0\0\0\x79\xa1\xe8\xff\0\0\0\0\x63= \x1a\ -\x74\xff\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x1a\x78\xff\0\0\0\0\x71\xa9\xce= \xff\ -\0\0\0\0\x7b\x7a\x30\xff\0\0\0\0\x25\x09\x11\x01\x3c\0\0\0\xb7\x01\0\0\x01= \0\0\ -\0\x6f\x91\0\0\0\0\0\0\x18\x02\0\0\x01\0\0\0\0\0\0\0\0\x18\0\x1c\x5f\x21\0= \0\0\ -\0\0\0\x55\x01\x01\0\0\0\0\0\x05\0\x0a\x01\0\0\0\0\xb7\x01\0\0\0\0\0\0\x6b= \x1a\ -\xf8\xff\0\0\0\0\xb7\x01\0\0\x28\0\0\0\x7b\x1a\x38\xff\0\0\0\0\xbf\xa1\0\0= \0\0\ -\0\0\x07\x01\0\0\x8c\xff\xff\xff\x7b\x1a\x18\xff\0\0\0\0\xbf\xa1\0\0\0\0\0= \0\ -\x07\x01\0\0\x7c\xff\xff\xff\x7b\x1a\x10\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x= 7b\ -\x1a\x28\xff\0\0\0\0\x7b\x8a\x20\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0= \0\ -\xf8\xff\xff\xff\x79\xa1\x40\xff\0\0\0\0\x79\xa2\x38\xff\0\0\0\0\xb7\x04\0= \0\ -\x02\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x= 67\ -\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\x55\x01\xc8\0\0\0\0\0\xbf\x91\0\0= \0\0\ -\0\0\x15\x01\x24\0\x3c\0\0\0\x15\x01\x5c\0\x2c\0\0\0\x55\x01\x5d\0\x2b\0\0= \0\ -\xb7\x01\0\0\0\0\0\0\x63\x1a\xf0\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0= \0\ -\xf0\xff\xff\xff\x79\xa9\x40\xff\0\0\0\0\xbf\x91\0\0\0\0\0\0\x79\xa2\x38\x= ff\0\ -\0\0\0\xb7\x04\0\0\x04\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\xbf= \x01\ -\0\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\x55\x01\x07\x01\0= \0\0\ -\0\x71\xa1\xf2\xff\0\0\0\0\x55\x01\x4d\0\x02\0\0\0\x71\xa1\xf1\xff\0\0\0\0= \x55\ -\x01\x4b\0\x02\0\0\0\x71\xa1\xf3\xff\0\0\0\0\x55\x01\x49\0\x01\0\0\0\x79\x= a2\ -\x38\xff\0\0\0\0\x07\x02\0\0\x08\0\0\0\xbf\x91\0\0\0\0\0\0\x79\xa3\x18\xff= \0\0\ -\0\0\xb7\x04\0\0\x10\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x= 01\0\ -\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\x55\x01\xf6\0\0\0\0= \0\ -\xb7\x01\0\0\x01\0\0\0\x73\x1a\x55\xff\0\0\0\0\x05\0\x3b\0\0\0\0\0\xb7\x08= \0\0\ -\x02\0\0\0\xb7\x07\0\0\0\0\0\0\x6b\x7a\xf0\xff\0\0\0\0\x05\0\x12\0\0\0\0\0= \x0f\ -\x81\0\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x07\x02\0\0\x01\0\0\0\x71\xa3\xf9\xff= \0\0\ -\0\0\x67\x03\0\0\x03\0\0\0\x3d\x32\x09\0\0\0\0\0\xbf\x72\0\0\0\0\0\0\x07\x= 02\0\ -\0\x01\0\0\0\x67\x07\0\0\x20\0\0\0\xbf\x73\0\0\0\0\0\0\x77\x03\0\0\x20\0\0= \0\ -\xbf\x27\0\0\0\0\0\0\xbf\x18\0\0\0\0\0\0\xb7\x01\0\0\x1d\0\0\0\x2d\x31\x03= \0\0\ -\0\0\0\x79\xa8\x20\xff\0\0\0\0\x79\xa7\x30\xff\0\0\0\0\x05\0\x25\0\0\0\0\0= \xbf\ -\x89\0\0\0\0\0\0\x79\xa1\x38\xff\0\0\0\0\x0f\x19\0\0\0\0\0\0\xbf\xa3\0\0\0= \0\0\ -\0\x07\x03\0\0\xf0\xff\xff\xff\x79\xa1\x40\xff\0\0\0\0\xbf\x92\0\0\0\0\0\0= \xb7\ -\x04\0\0\x02\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0= \0\0\ -\0\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\x55\x01\x7b\0\0\0\0\0\x71\x= a2\ -\xf0\xff\0\0\0\0\x55\x02\x0e\0\xc9\0\0\0\x07\x09\0\0\x02\0\0\0\x79\xa1\x40= \xff\ -\0\0\0\0\xbf\x92\0\0\0\0\0\0\x79\xa3\x10\xff\0\0\0\0\xb7\x04\0\0\x10\0\0\0= \xb7\ -\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20= \0\0\ -\0\x77\x01\0\0\x20\0\0\0\x55\x01\x6e\0\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73\x= 1a\ -\x54\xff\0\0\0\0\x05\0\xdf\xff\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x15\x02\xce\x= ff\0\ -\0\0\0\x71\xa1\xf1\xff\0\0\0\0\x07\x01\0\0\x02\0\0\0\x05\0\xcb\xff\0\0\0\0= \xb7\ -\x01\0\0\x01\0\0\0\x73\x1a\x56\xff\0\0\0\0\x71\xa1\xf9\xff\0\0\0\0\x67\x01= \0\0\ -\x03\0\0\0\x79\xa2\x38\xff\0\0\0\0\x0f\x12\0\0\0\0\0\0\x07\x02\0\0\x08\0\0= \0\ -\x7b\x2a\x38\xff\0\0\0\0\x71\xa9\xf8\xff\0\0\0\0\x25\x09\x0f\0\x3c\0\0\0\x= b7\ -\x01\0\0\x01\0\0\0\x6f\x91\0\0\0\0\0\0\x18\x02\0\0\x01\0\0\0\0\0\0\0\0\x18= \0\ -\x1c\x5f\x21\0\0\0\0\0\0\x55\x01\x01\0\0\0\0\0\x05\0\x08\0\0\0\0\0\x79\xa1= \x28\ -\xff\0\0\0\0\x07\x01\0\0\x01\0\0\0\x7b\x1a\x28\xff\0\0\0\0\x67\x01\0\0\x20= \0\0\ -\0\x77\x01\0\0\x20\0\0\0\x55\x01\x7f\xff\x0b\0\0\0\x71\xa7\x56\xff\0\0\0\0= \x05\ -\0\x0b\xff\0\0\0\0\x15\x09\xf7\xff\x87\0\0\0\x05\0\xfc\xff\0\0\0\0\x71\xa1= \x51\ -\xff\0\0\0\0\x79\xa0\x30\xff\0\0\0\0\x15\x01\x0f\x01\0\0\0\0\x71\x62\x03\0= \0\0\ -\0\0\x67\x02\0\0\x08\0\0\0\x71\x61\x02\0\0\0\0\0\x4f\x12\0\0\0\0\0\0\x71\x= 63\ -\x04\0\0\0\0\0\x67\x03\0\0\x10\0\0\0\x71\x61\x05\0\0\0\0\0\x67\x01\0\0\x18= \0\0\ -\0\x4f\x31\0\0\0\0\0\0\x4f\x21\0\0\0\0\0\0\x71\xa2\x53\xff\0\0\0\0\x15\x02= \x43\ -\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02\0\0\x10\0\0\0\x15\x02\x40\0\0\0\0\0= \x57\ -\x01\0\0\x80\0\0\0\xb7\x02\0\0\x10\0\0\0\xb7\x03\0\0\x10\0\0\0\x15\x01\x01= \0\0\ -\0\0\0\xb7\x03\0\0\x30\0\0\0\x71\xa4\x55\xff\0\0\0\0\x15\x04\x01\0\0\0\0\0= \xbf\ -\x32\0\0\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\x5c\xff\xff\xff\xbf\x34\0= \0\0\ -\0\0\0\x15\x01\x02\0\0\0\0\0\xbf\xa4\0\0\0\0\0\0\x07\x04\0\0\x7c\xff\xff\x= ff\ -\x71\xa5\x54\xff\0\0\0\0\xbf\x31\0\0\0\0\0\0\x15\x05\x01\0\0\0\0\0\xbf\x41= \0\0\ -\0\0\0\0\x61\x14\x04\0\0\0\0\0\x67\x04\0\0\x20\0\0\0\x61\x15\0\0\0\0\0\0\x= 4f\ -\x54\0\0\0\0\0\0\x7b\x4a\xa0\xff\0\0\0\0\x61\x14\x08\0\0\0\0\0\x61\x11\x0c= \0\0\ -\0\0\0\x67\x01\0\0\x20\0\0\0\x4f\x41\0\0\0\0\0\0\x7b\x1a\xa8\xff\0\0\0\0\x= 0f\ -\x23\0\0\0\0\0\0\x61\x31\0\0\0\0\0\0\x61\x32\x04\0\0\0\0\0\x61\x34\x08\0\0= \0\0\ -\0\x61\x33\x0c\0\0\0\0\0\x69\xa5\x5a\xff\0\0\0\0\x6b\x5a\xc2\xff\0\0\0\0\x= 69\ -\xa5\x58\xff\0\0\0\0\x6b\x5a\xc0\xff\0\0\0\0\x67\x03\0\0\x20\0\0\0\x4f\x43= \0\0\ -\0\0\0\0\x7b\x3a\xb8\xff\0\0\0\0\x67\x02\0\0\x20\0\0\0\x4f\x12\0\0\0\0\0\0= \x7b\ -\x2a\xb0\xff\0\0\0\0\x05\0\x6b\0\0\0\0\0\x71\xa2\x52\xff\0\0\0\0\x15\x02\x= 04\0\ -\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02\0\0\x04\0\0\0\x15\x02\x01\0\0\0\0\0\x= 05\0\ -\xf3\xfe\0\0\0\0\x57\x01\0\0\x01\0\0\0\x15\x01\xcc\0\0\0\0\0\x61\xa1\x5c\x= ff\0\ -\0\0\0\x63\x1a\xa0\xff\0\0\0\0\x61\xa1\x60\xff\0\0\0\0\x63\x1a\xa4\xff\0\0= \0\0\ -\x05\0\x5e\0\0\0\0\0\xb7\x09\0\0\x3c\0\0\0\x79\xa8\x20\xff\0\0\0\0\x79\xa7= \x30\ -\xff\0\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x15\0\xab\xff\0\0\0\0= \x05\ -\0\xc0\0\0\0\0\0\x71\xa2\x52\xff\0\0\0\0\x15\x02\x26\0\0\0\0\0\xbf\x12\0\0= \0\0\ -\0\0\x57\x02\0\0\x20\0\0\0\x15\x02\x23\0\0\0\0\0\x57\x01\0\0\0\x01\0\0\xb7= \x02\ -\0\0\x10\0\0\0\xb7\x03\0\0\x10\0\0\0\x15\x01\x01\0\0\0\0\0\xb7\x03\0\0\x30= \0\0\ -\0\x71\xa4\x55\xff\0\0\0\0\x15\x04\x01\0\0\0\0\0\xbf\x32\0\0\0\0\0\0\xbf\x= a3\0\ -\0\0\0\0\0\x07\x03\0\0\x5c\xff\xff\xff\xbf\x34\0\0\0\0\0\0\x15\x01\x02\0\0= \0\0\ -\0\xbf\xa4\0\0\0\0\0\0\x07\x04\0\0\x7c\xff\xff\xff\x71\xa5\x54\xff\0\0\0\0= \xbf\ -\x31\0\0\0\0\0\0\x15\x05\xbc\xff\0\0\0\0\x05\0\xba\xff\0\0\0\0\xb7\x01\0\0= \x01\ -\0\0\0\x73\x1a\x52\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x7b\x1a\xc8\xff\0\0\0\0= \xbf\ -\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\x79\xa1\x40\xff\0\0\0\0\x79\x= a2\ -\x38\xff\0\0\0\0\xb7\x04\0\0\x08\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44= \0\0\ -\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x9b\0\0\0\0\0\x05\0\xa9\x= fe\0\ -\0\0\0\x15\x09\xf5\xfe\x87\0\0\0\x05\0\x82\xff\0\0\0\0\xbf\x12\0\0\0\0\0\0= \x57\ -\x02\0\0\x08\0\0\0\x15\x02\x95\0\0\0\0\0\x57\x01\0\0\x40\0\0\0\xb7\x02\0\0= \x0c\ -\0\0\0\xb7\x03\0\0\x0c\0\0\0\x15\x01\x01\0\0\0\0\0\xb7\x03\0\0\x2c\0\0\0\x= 71\ -\xa4\x54\xff\0\0\0\0\x15\x04\x01\0\0\0\0\0\xbf\x32\0\0\0\0\0\0\xbf\xa3\0\0= \0\0\ -\0\0\x07\x03\0\0\x50\xff\xff\xff\x0f\x23\0\0\0\0\0\0\x61\x32\x04\0\0\0\0\0= \x67\ -\x02\0\0\x20\0\0\0\x61\x34\0\0\0\0\0\0\x4f\x42\0\0\0\0\0\0\x7b\x2a\xa0\xff= \0\0\ -\0\0\x61\x32\x08\0\0\0\0\0\x61\x33\x0c\0\0\0\0\0\x67\x03\0\0\x20\0\0\0\x4f= \x23\ -\0\0\0\0\0\0\x7b\x3a\xa8\xff\0\0\0\0\xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\xb0\x= ff\ -\xff\xff\x71\xa3\x55\xff\0\0\0\0\x15\x03\x0b\0\0\0\0\0\x15\x01\x0a\0\0\0\0= \0\ -\x61\xa1\x98\xff\0\0\0\0\x63\x12\x0c\0\0\0\0\0\x61\xa1\x94\xff\0\0\0\0\x63= \x12\ -\x08\0\0\0\0\0\x61\xa1\x90\xff\0\0\0\0\x63\x12\x04\0\0\0\0\0\x61\xa1\x8c\x= ff\0\ -\0\0\0\x05\0\x09\0\0\0\0\0\xb7\x09\0\0\x2b\0\0\0\x05\0\xad\xff\0\0\0\0\x61= \xa1\ -\x78\xff\0\0\0\0\x63\x12\x0c\0\0\0\0\0\x61\xa1\x74\xff\0\0\0\0\x63\x12\x08= \0\0\ -\0\0\0\x61\xa1\x70\xff\0\0\0\0\x63\x12\x04\0\0\0\0\0\x61\xa1\x6c\xff\0\0\0= \0\ -\x63\x12\0\0\0\0\0\0\xb7\x01\0\0\0\0\0\0\x07\x08\0\0\x04\0\0\0\x61\x03\0\0= \0\0\ -\0\0\xb7\x05\0\0\0\0\0\0\xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\xa0\xff\xff\xff\x= 0f\ -\x12\0\0\0\0\0\0\x71\x24\0\0\0\0\0\0\xbf\x42\0\0\0\0\0\0\x67\x02\0\0\x38\0= \0\0\ -\xc7\x02\0\0\x3f\0\0\0\x5f\x32\0\0\0\0\0\0\xaf\x52\0\0\0\0\0\0\xbf\x85\0\0= \0\0\ -\0\0\x0f\x15\0\0\0\0\0\0\x71\x55\0\0\0\0\0\0\x67\x03\0\0\x01\0\0\0\xbf\x50= \0\0\ -\0\0\0\0\x77\0\0\0\x07\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0= \0\0\ -\x39\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\xbf= \x50\ -\0\0\0\0\0\0\x77\0\0\0\x06\0\0\0\x57\0\0\0\x01\0\0\0\x67\x03\0\0\x01\0\0\0= \x4f\ -\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3a\0\0\0\xc7\0\0\0\x3f\0\0= \0\ -\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\x67\x03\0\0\x01\0\0\0\xbf\x50\0\0= \0\0\ -\0\0\x77\0\0\0\x05\0\0\0\x57\0\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0= \0\0\ -\0\0\0\x67\0\0\0\x3b\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02= \0\0\ -\0\0\0\0\x67\x03\0\0\x01\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x04\0\0\0\x57= \0\0\ -\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3c\0\0\0\x= c7\0\ -\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\xbf\x50\0\0\0\0\0\0= \x77\ -\0\0\0\x03\0\0\0\x57\0\0\0\x01\0\0\0\x67\x03\0\0\x01\0\0\0\x4f\x03\0\0\0\0= \0\0\ -\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3d\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0= \0\0\ -\0\xaf\x02\0\0\0\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x02\0\0\0\x57\0\0\0\x= 01\0\ -\0\0\x67\x03\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0\0= \0\ -\x3e\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\xbf= \x50\ -\0\0\0\0\0\0\x77\0\0\0\x01\0\0\0\x57\0\0\0\x01\0\0\0\x67\x03\0\0\x01\0\0\0= \x4f\ -\x03\0\0\0\0\0\0\x57\x04\0\0\x01\0\0\0\x87\x04\0\0\0\0\0\0\x5f\x34\0\0\0\0= \0\0\ -\xaf\x42\0\0\0\0\0\0\x57\x05\0\0\x01\0\0\0\x67\x03\0\0\x01\0\0\0\x4f\x53\0= \0\0\ -\0\0\0\x07\x01\0\0\x01\0\0\0\xbf\x25\0\0\0\0\0\0\x15\x01\x01\0\x24\0\0\0\x= 05\0\ -\xa9\xff\0\0\0\0\x71\x61\x06\0\0\0\0\0\x71\x63\x07\0\0\0\0\0\x67\x03\0\0\x= 08\0\ -\0\0\x4f\x13\0\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\x77\x02\0\0\x20\0\0\0\x9f\x= 32\0\ -\0\0\0\0\0\x63\x2a\x50\xff\0\0\0\0\xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\x50\xff= \xff\ -\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\x55\0\x07\0\0= \0\0\ -\0\x71\x61\x08\0\0\0\0\0\x71\x69\x09\0\0\0\0\0\x67\x09\0\0\x08\0\0\0\x4f\x= 19\0\ -\0\0\0\0\0\x57\x09\0\0\xff\xff\0\0\xbf\x90\0\0\0\0\0\0\x95\0\0\0\0\0\0\0\x= 69\ -\x09\0\0\0\0\0\0\x05\0\xfb\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x47\ -\x50\x4c\x20\x76\x32\0\0\x9f\xeb\x01\0\x18\0\0\0\0\0\0\0\x50\x05\0\0\x50\x= 05\0\ -\0\x8e\x11\0\0\0\0\0\0\0\0\0\x02\x03\0\0\0\x01\0\0\0\0\0\0\x01\x04\0\0\0\x= 20\0\ -\0\x01\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x02\0\0\0\x05\0\0\0\0= \0\0\ -\x01\x04\0\0\0\x20\0\0\0\0\0\0\0\0\0\0\x02\x06\0\0\0\0\0\0\0\0\0\0\x03\0\0= \0\0\ -\x02\0\0\0\x04\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\x02\x08\0\0\0\0\0\0\0\0\0\0\x= 03\0\ -\0\0\0\x02\0\0\0\x04\0\0\0\x0a\0\0\0\0\0\0\0\0\0\0\x02\x0a\0\0\0\0\0\0\0\0= \0\0\ -\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x01\0\0\0\0\0\0\0\x04\0\0\x04\x20\0\0\0\x= 19\0\ -\0\0\x01\0\0\0\0\0\0\0\x1e\0\0\0\x05\0\0\0\x40\0\0\0\x27\0\0\0\x07\0\0\0\x= 80\0\ -\0\0\x32\0\0\0\x09\0\0\0\xc0\0\0\0\x3e\0\0\0\0\0\0\x0e\x0b\0\0\0\x01\0\0\0= \0\0\ -\0\0\0\0\0\x02\x0e\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x28= \0\0\ -\0\0\0\0\0\x04\0\0\x04\x20\0\0\0\x19\0\0\0\x01\0\0\0\0\0\0\0\x1e\0\0\0\x05= \0\0\ -\0\x40\0\0\0\x27\0\0\0\x0d\0\0\0\x80\0\0\0\x32\0\0\0\x09\0\0\0\xc0\0\0\0\x= 59\0\ -\0\0\0\0\0\x0e\x0f\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x02\x12\0\0\0\0\0\0\0\0\0= \0\ -\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x80\0\0\0\0\0\0\0\x04\0\0\x04\x20\0\0\0\x= 19\0\ -\0\0\x01\0\0\0\0\0\0\0\x1e\0\0\0\x05\0\0\0\x40\0\0\0\x27\0\0\0\x01\0\0\0\x= 80\0\ -\0\0\x32\0\0\0\x11\0\0\0\xc0\0\0\0\x72\0\0\0\0\0\0\x0e\x13\0\0\0\x01\0\0\0= \0\0\ -\0\0\0\0\0\x02\x16\0\0\0\x90\0\0\0\x25\0\0\x04\xc8\0\0\0\x9a\0\0\0\x17\0\0= \0\0\ -\0\0\0\x9e\0\0\0\x17\0\0\0\x20\0\0\0\xa7\0\0\0\x17\0\0\0\x40\0\0\0\xac\0\0= \0\ -\x17\0\0\0\x60\0\0\0\xba\0\0\0\x17\0\0\0\x80\0\0\0\xc3\0\0\0\x17\0\0\0\xa0= \0\0\ -\0\xd0\0\0\0\x17\0\0\0\xc0\0\0\0\xd9\0\0\0\x17\0\0\0\xe0\0\0\0\xe4\0\0\0\x= 17\0\ -\0\0\0\x01\0\0\xed\0\0\0\x17\0\0\0\x20\x01\0\0\xfd\0\0\0\x17\0\0\0\x40\x01= \0\0\ -\x05\x01\0\0\x17\0\0\0\x60\x01\0\0\x0e\x01\0\0\x19\0\0\0\x80\x01\0\0\x11\x= 01\0\ -\0\x17\0\0\0\x20\x02\0\0\x16\x01\0\0\x17\0\0\0\x40\x02\0\0\x21\x01\0\0\x17= \0\0\ -\0\x60\x02\0\0\x26\x01\0\0\x17\0\0\0\x80\x02\0\0\x2f\x01\0\0\x17\0\0\0\xa0= \x02\ -\0\0\x37\x01\0\0\x17\0\0\0\xc0\x02\0\0\x3e\x01\0\0\x17\0\0\0\xe0\x02\0\0\x= 49\ -\x01\0\0\x17\0\0\0\0\x03\0\0\x53\x01\0\0\x1a\0\0\0\x20\x03\0\0\x5e\x01\0\0= \x1a\ -\0\0\0\xa0\x03\0\0\x68\x01\0\0\x17\0\0\0\x20\x04\0\0\x74\x01\0\0\x17\0\0\0= \x40\ -\x04\0\0\x7f\x01\0\0\x17\0\0\0\x60\x04\0\0\0\0\0\0\x1b\0\0\0\x80\x04\0\0\x= 89\ -\x01\0\0\x1d\0\0\0\xc0\x04\0\0\x90\x01\0\0\x17\0\0\0\0\x05\0\0\x99\x01\0\0= \x17\ -\0\0\0\x20\x05\0\0\0\0\0\0\x1f\0\0\0\x40\x05\0\0\xa2\x01\0\0\x17\0\0\0\x80= \x05\ -\0\0\xab\x01\0\0\x21\0\0\0\xa0\x05\0\0\xb7\x01\0\0\x1d\0\0\0\xc0\x05\0\0\x= c0\ -\x01\0\0\x17\0\0\0\0\x06\0\0\xd0\x01\0\0\x23\0\0\0\x20\x06\0\0\xe1\x01\0\0= \x23\ -\0\0\0\x30\x06\0\0\xf0\x01\0\0\0\0\0\x08\x18\0\0\0\xf6\x01\0\0\0\0\0\x01\x= 04\0\ -\0\0\x20\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x17\0\0\0\x04\0\0\0\x05\0\0\0\0\0= \0\0\ -\0\0\0\x03\0\0\0\0\x17\0\0\0\x04\0\0\0\x04\0\0\0\0\0\0\0\x01\0\0\x05\x08\0= \0\0\ -\x03\x02\0\0\x1c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x2c\0\0\0\x0d\x02\0\0\0\0= \0\ -\x08\x1e\0\0\0\x13\x02\0\0\0\0\0\x01\x08\0\0\0\x40\0\0\0\0\0\0\0\x01\0\0\x= 05\ -\x08\0\0\0\x26\x02\0\0\x20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x2d\0\0\0\x29\x= 02\0\ -\0\0\0\0\x08\x22\0\0\0\x2e\x02\0\0\0\0\0\x01\x01\0\0\0\x08\0\0\0\x3c\x02\0= \0\0\ -\0\0\x08\x24\0\0\0\x42\x02\0\0\0\0\0\x01\x02\0\0\0\x10\0\0\0\0\0\0\0\x01\0= \0\ -\x0d\x02\0\0\0\x51\x02\0\0\x15\0\0\0\x55\x02\0\0\x01\0\0\x0c\x25\0\0\0\x5b= \x11\ -\0\0\0\0\0\x01\x01\0\0\0\x08\0\0\x01\0\0\0\0\0\0\0\x03\0\0\0\0\x27\0\0\0\x= 04\0\ -\0\0\x07\0\0\0\x60\x11\0\0\0\0\0\x0e\x28\0\0\0\x01\0\0\0\x69\x11\0\0\x03\0= \0\ -\x0f\0\0\0\0\x0c\0\0\0\0\0\0\0\x20\0\0\0\x10\0\0\0\0\0\0\0\x20\0\0\0\x14\0= \0\0\ -\0\0\0\0\x20\0\0\0\x6f\x11\0\0\x01\0\0\x0f\0\0\0\0\x29\0\0\0\0\0\0\0\x07\0= \0\0\ -\x77\x11\0\0\0\0\0\x07\0\0\0\0\x85\x11\0\0\0\0\0\x07\0\0\0\0\0\x69\x6e\x74= \0\ -\x5f\x5f\x41\x52\x52\x41\x59\x5f\x53\x49\x5a\x45\x5f\x54\x59\x50\x45\x5f\x= 5f\0\ -\x74\x79\x70\x65\0\x6b\x65\x79\x5f\x73\x69\x7a\x65\0\x76\x61\x6c\x75\x65\x= 5f\ -\x73\x69\x7a\x65\0\x6d\x61\x78\x5f\x65\x6e\x74\x72\x69\x65\x73\0\x74\x61\x= 70\ -\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x= 74\ -\x69\x6f\x6e\x73\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x74\x6f= \x65\ -\x70\x6c\x69\x74\x7a\x5f\x6b\x65\x79\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d= \x61\ -\x70\x5f\x69\x6e\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x5f\x74\x61\x62\x6c\x= 65\0\ -\x5f\x5f\x73\x6b\x5f\x62\x75\x66\x66\0\x6c\x65\x6e\0\x70\x6b\x74\x5f\x74\x= 79\ -\x70\x65\0\x6d\x61\x72\x6b\0\x71\x75\x65\x75\x65\x5f\x6d\x61\x70\x70\x69\x= 6e\ -\x67\0\x70\x72\x6f\x74\x6f\x63\x6f\x6c\0\x76\x6c\x61\x6e\x5f\x70\x72\x65\x= 73\ -\x65\x6e\x74\0\x76\x6c\x61\x6e\x5f\x74\x63\x69\0\x76\x6c\x61\x6e\x5f\x70\x= 72\ -\x6f\x74\x6f\0\x70\x72\x69\x6f\x72\x69\x74\x79\0\x69\x6e\x67\x72\x65\x73\x= 73\ -\x5f\x69\x66\x69\x6e\x64\x65\x78\0\x69\x66\x69\x6e\x64\x65\x78\0\x74\x63\x= 5f\ -\x69\x6e\x64\x65\x78\0\x63\x62\0\x68\x61\x73\x68\0\x74\x63\x5f\x63\x6c\x61= \x73\ -\x73\x69\x64\0\x64\x61\x74\x61\0\x64\x61\x74\x61\x5f\x65\x6e\x64\0\x6e\x61= \x70\ -\x69\x5f\x69\x64\0\x66\x61\x6d\x69\x6c\x79\0\x72\x65\x6d\x6f\x74\x65\x5f\x= 69\ -\x70\x34\0\x6c\x6f\x63\x61\x6c\x5f\x69\x70\x34\0\x72\x65\x6d\x6f\x74\x65\x= 5f\ -\x69\x70\x36\0\x6c\x6f\x63\x61\x6c\x5f\x69\x70\x36\0\x72\x65\x6d\x6f\x74\x= 65\ -\x5f\x70\x6f\x72\x74\0\x6c\x6f\x63\x61\x6c\x5f\x70\x6f\x72\x74\0\x64\x61\x= 74\ -\x61\x5f\x6d\x65\x74\x61\0\x74\x73\x74\x61\x6d\x70\0\x77\x69\x72\x65\x5f\x= 6c\ -\x65\x6e\0\x67\x73\x6f\x5f\x73\x65\x67\x73\0\x67\x73\x6f\x5f\x73\x69\x7a\x= 65\0\ -\x74\x73\x74\x61\x6d\x70\x5f\x74\x79\x70\x65\0\x68\x77\x74\x73\x74\x61\x6d= \x70\ -\0\x76\x6e\x65\x74\x5f\x68\x61\x73\x68\x5f\x76\x61\x6c\x75\x65\0\x76\x6e\x= 65\ -\x74\x5f\x68\x61\x73\x68\x5f\x72\x65\x70\x6f\x72\x74\0\x76\x6e\x65\x74\x5f= \x72\ -\x73\x73\x5f\x71\x75\x65\x75\x65\0\x5f\x5f\x75\x33\x32\0\x75\x6e\x73\x69\x= 67\ -\x6e\x65\x64\x20\x69\x6e\x74\0\x66\x6c\x6f\x77\x5f\x6b\x65\x79\x73\0\x5f\x= 5f\ -\x75\x36\x34\0\x75\x6e\x73\x69\x67\x6e\x65\x64\x20\x6c\x6f\x6e\x67\x20\x6c= \x6f\ -\x6e\x67\0\x73\x6b\0\x5f\x5f\x75\x38\0\x75\x6e\x73\x69\x67\x6e\x65\x64\x20= \x63\ -\x68\x61\x72\0\x5f\x5f\x75\x31\x36\0\x75\x6e\x73\x69\x67\x6e\x65\x64\x20\x= 73\ -\x68\x6f\x72\x74\0\x73\x6b\x62\0\x74\x75\x6e\x5f\x72\x73\x73\x5f\x73\x74\x= 65\ -\x65\x72\x69\x6e\x67\x5f\x70\x72\x6f\x67\0\x73\x6f\x63\x6b\x65\x74\0\x2f\x= 68\ -\x6f\x6d\x65\x2f\x61\x6c\x61\x72\x6d\x2f\x71\x2f\x76\x61\x72\x2f\x71\x65\x= 6d\ -\x75\x2f\x74\x6f\x6f\x6c\x73\x2f\x65\x62\x70\x66\x2f\x72\x73\x73\x2e\x62\x= 70\ -\x66\x2e\x63\0\x69\x6e\x74\x20\x74\x75\x6e\x5f\x72\x73\x73\x5f\x73\x74\x65= \x65\ -\x72\x69\x6e\x67\x5f\x70\x72\x6f\x67\x28\x73\x74\x72\x75\x63\x74\x20\x5f\x= 5f\ -\x73\x6b\x5f\x62\x75\x66\x66\x20\x2a\x73\x6b\x62\x29\0\x20\x20\x20\x20\x5f= \x5f\ -\x75\x33\x32\x20\x6b\x65\x79\x20\x3d\x20\x30\x3b\0\x20\x20\x20\x20\x63\x6f= \x6e\ -\x66\x69\x67\x20\x3d\x20\x62\x70\x66\x5f\x6d\x61\x70\x5f\x6c\x6f\x6f\x6b\x= 75\ -\x70\x5f\x65\x6c\x65\x6d\x28\x26\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x= 70\ -\x5f\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x73\x2c\x20\x26\x= 6b\ -\x65\x79\x29\x3b\0\x20\x20\x20\x20\x74\x6f\x65\x20\x3d\x20\x62\x70\x66\x5f= \x6d\ -\x61\x70\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x65\x6c\x65\x6d\x28\x26\x74\x61\x= 70\ -\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x74\x6f\x65\x70\x6c\x69\x74\x7a\x5f\x= 6b\ -\x65\x79\x2c\x20\x26\x6b\x65\x79\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28= \x63\ -\x6f\x6e\x66\x69\x67\x20\x26\x26\x20\x74\x6f\x65\x29\x20\x7b\0\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x69\x66\x20\x28\x21\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x72\x= 65\ -\x64\x69\x72\x65\x63\x74\x29\x20\x7b\0\x20\x20\x20\x20\x5f\x5f\x75\x38\x20= \x72\ -\x73\x73\x5f\x69\x6e\x70\x75\x74\x5b\x48\x41\x53\x48\x5f\x43\x41\x4c\x43\x= 55\ -\x4c\x41\x54\x49\x4f\x4e\x5f\x42\x55\x46\x46\x45\x52\x5f\x53\x49\x5a\x45\x= 5d\ -\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x70= \x61\ -\x63\x6b\x65\x74\x5f\x68\x61\x73\x68\x5f\x69\x6e\x66\x6f\x5f\x74\x20\x70\x= 61\ -\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20= \x20\ -\x69\x66\x20\x28\x21\x69\x6e\x66\x6f\x20\x7c\x7c\x20\x21\x73\x6b\x62\x29\x= 20\ -\x7b\0\x20\x20\x20\x20\x5f\x5f\x62\x65\x31\x36\x20\x72\x65\x74\x20\x3d\x20= \x30\ -\x3b\0\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62= \x5f\ -\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x= 65\ -\x28\x73\x6b\x62\x2c\x20\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x72\x65\x74\x= 2c\ -\x20\x73\x69\x7a\x65\x6f\x66\x28\x72\x65\x74\x29\x2c\0\x20\x20\x20\x20\x69= \x66\ -\x20\x28\x65\x72\x72\x29\x20\x7b\0\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68= \x20\ -\x28\x62\x70\x66\x5f\x6e\x74\x6f\x68\x73\x28\x72\x65\x74\x29\x29\x20\x7b\0= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x= 6b\ -\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x= 69\ -\x76\x65\x28\x73\x6b\x62\x2c\x20\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x72\x= 65\ -\x74\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x72\x65\x74\x29\x2c\0\x20\x20\x20= \x20\ -\x72\x65\x74\x75\x72\x6e\x20\x72\x65\x74\x3b\0\x20\x20\x20\x20\x69\x66\x20= \x28\ -\x6c\x33\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x3d\x20\x30\x29\x20\x= 7b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x69\x= 70\ -\x76\x34\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72= \x75\ -\x63\x74\x20\x69\x70\x68\x64\x72\x20\x69\x70\x20\x3d\x20\x7b\x7d\x3b\0\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x= 62\ -\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x= 76\ -\x65\x28\x73\x6b\x62\x2c\x20\x30\x2c\x20\x26\x69\x70\x2c\x20\x73\x69\x7a\x= 65\ -\x6f\x66\x28\x69\x70\x29\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20= \x28\ -\x65\x72\x72\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f= \x2d\ -\x3e\x69\x73\x5f\x66\x72\x61\x67\x6d\x65\x6e\x74\x65\x64\x20\x3d\x20\x21\x= 21\ -\x69\x70\x2e\x66\x72\x61\x67\x5f\x6f\x66\x66\x3b\0\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x6e\x5f\x73\x72\x63\x20\x3d\x20\x69\x70\x= 2e\ -\x73\x61\x64\x64\x72\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f= \x2d\ -\x3e\x69\x6e\x5f\x64\x73\x74\x20\x3d\x20\x69\x70\x2e\x64\x61\x64\x64\x72\x= 3b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x= 6c\ -\x20\x3d\x20\x69\x70\x2e\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x3b\0\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x3d\x20\x69\x70\x= 2e\ -\x69\x68\x6c\x20\x2a\x20\x34\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x6c\x34= \x5f\ -\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x21\x3d\x20\x30\x20\x26\x26\x20\x21\x= 69\ -\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x66\x72\x61\x67\x6d\x65\x6e\x74\x65\x64\x= 29\ -\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6c\x34\x5f\x70= \x72\ -\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x3d\x20\x49\x50\x50\x52\x4f\x54\x4f\x5f\x= 54\ -\x43\x50\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69= \x6e\ -\x66\x6f\x2d\x3e\x69\x73\x5f\x74\x63\x70\x20\x3d\x20\x31\x3b\0\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x74\x63\x70\x= 68\ -\x64\x72\x20\x74\x63\x70\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x= 5f\ -\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x= 65\ -\x28\x73\x6b\x62\x2c\x20\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x= 74\ -\x63\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x74\x63\x70\x29\x2c\0\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x72\x72\x29\x20\x= 7b\0\ -\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x= 6f\ -\x2e\x69\x73\x5f\x69\x70\x76\x34\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x= 5f\ -\x74\x63\x70\x20\x26\x26\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f= \x2d\ -\x3e\x69\x73\x5f\x69\x70\x76\x36\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x73\x74\x72\x75\x63\x74\x20\x69\x70\x76\x36\x68\x64\x72\x20\x69\x= 70\ -\x36\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72= \x20\ -\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x= 65\ -\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x30\x2c\x= 20\ -\x26\x69\x70\x36\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x69\x70\x36\x29\x2c\0= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x6e\x36\x5f\x73\x= 72\ -\x63\x20\x3d\x20\x69\x70\x36\x2e\x73\x61\x64\x64\x72\x3b\0\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x6e\x36\x5f\x64\x73\x74\x20\x3d\x= 20\ -\x69\x70\x36\x2e\x64\x61\x64\x64\x72\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20= \x6c\ -\x34\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x20\x69\x70\x36\x2e\x6e\x= 65\ -\x78\x74\x68\x64\x72\x3b\0\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68\x20\x28= \x68\ -\x64\x72\x5f\x74\x79\x70\x65\x29\x20\x7b\0\x20\x20\x20\x20\x73\x74\x72\x75= \x63\ -\x74\x20\x69\x70\x76\x36\x5f\x6f\x70\x74\x5f\x68\x64\x72\x20\x65\x78\x74\x= 5f\ -\x68\x64\x72\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x65= \x72\ -\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x= 79\ -\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x= 2a\ -\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x65\x78\x74\x5f\x68\x64\x= 72\ -\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x2a\x6c\x34\x5f\x70= \x72\ -\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x3d\x20\x49\x50\x50\x52\x4f\x54\x4f\x5f\x= 52\ -\x4f\x55\x54\x49\x4e\x47\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x73\x74\x72\x75\x63\x74\x20\x69\x70\x76\x36\x5f\x72\x74\x5f\x68\x= 64\ -\x72\x20\x65\x78\x74\x5f\x72\x74\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x= 6b\ -\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x= 69\ -\x76\x65\x28\x73\x6b\x62\x2c\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x= 2c\ -\x20\x26\x65\x78\x74\x5f\x72\x74\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x69\x66\x20\x28\x28\x65\x78\x74\x5f\x72\x74\x2e\x74\x79\x70\x65\x= 20\ -\x3d\x3d\x20\x49\x50\x56\x36\x5f\x53\x52\x43\x52\x54\x5f\x54\x59\x50\x45\x= 5f\ -\x32\x29\x20\x26\x26\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x= 20\ -\x6f\x66\x66\x73\x65\x74\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x72\x74\x= 32\ -\x5f\x68\x64\x72\x2c\x20\x61\x64\x64\x72\x29\x2c\0\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x= 5f\ -\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x= 61\ -\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x72\x72\x29\x20\x7b\0\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x= 3e\ -\x69\x73\x5f\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x64\x73\x74\x20\x3d\x20\x= 31\ -\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x20\x5f\x5f\x61= \x74\ -\x74\x72\x69\x62\x75\x74\x65\x5f\x5f\x28\x28\x70\x61\x63\x6b\x65\x64\x29\x= 29\ -\x20\x6f\x70\x74\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x6f\x70\x74\x5f\x6f\x66\x66\x73\x65\x74\x20\x= 2b\ -\x3d\x20\x28\x6f\x70\x74\x2e\x74\x79\x70\x65\x20\x3d\x3d\x20\x49\x50\x56\x= 36\ -\x5f\x54\x4c\x56\x5f\x50\x41\x44\x31\x29\x20\x3f\0\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6f\x70\x74\x5f\x6f\x= 66\ -\x66\x73\x65\x74\x20\x2b\x20\x31\x20\x3e\x3d\x20\x65\x78\x74\x5f\x68\x64\x= 72\ -\x2e\x68\x64\x72\x6c\x65\x6e\x20\x2a\x20\x38\x29\x20\x7b\0\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x= 70\ -\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x= 65\ -\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x2a\x6c\x34\x5f\x6f\x66\x= 66\ -\x73\x65\x74\x20\x2b\x20\x6f\x70\x74\x5f\x6f\x66\x66\x73\x65\x74\x2c\0\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x= 6f\ -\x70\x74\x2e\x74\x79\x70\x65\x20\x3d\x3d\x20\x49\x50\x56\x36\x5f\x54\x4c\x= 56\ -\x5f\x48\x41\x4f\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2a\x6c\x34\x5f\x6f\x66\x= 66\ -\x73\x65\x74\x20\x2b\x20\x6f\x70\x74\x5f\x6f\x66\x66\x73\x65\x74\0\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x= 72\ -\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x= 79\ -\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\0\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 69\ -\x66\x20\x28\x65\x72\x72\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x= 5f\ -\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x73\x72\x63\x20\x3d\x20\x31\x3b\0\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x= 5f\ -\x66\x72\x61\x67\x6d\x65\x6e\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x3b\0= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x= 2b\ -\x3d\x20\x28\x65\x78\x74\x5f\x68\x64\x72\x2e\x68\x64\x72\x6c\x65\x6e\x20\x= 2b\ -\x20\x31\x29\x20\x2a\x20\x38\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x2a\x6c= \x34\ -\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x20\x65\x78\x74\x5f\x68\x64\x= 72\ -\x2e\x6e\x65\x78\x74\x68\x64\x72\x3b\0\x20\x20\x20\x20\x66\x6f\x72\x20\x28= \x75\ -\x6e\x73\x69\x67\x6e\x65\x64\x20\x69\x6e\x74\x20\x69\x20\x3d\x20\x30\x3b\x= 20\ -\x69\x20\x3c\x20\x49\x50\x36\x5f\x45\x58\x54\x45\x4e\x53\x49\x4f\x4e\x53\x= 5f\ -\x43\x4f\x55\x4e\x54\x3b\x20\x2b\x2b\x69\x29\x20\x7b\0\x20\x20\x20\x20\x7d= \x20\ -\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x= 66\ -\x6f\x2e\x69\x73\x5f\x69\x70\x76\x36\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x= 66\ -\x6f\x2e\x69\x73\x5f\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x64\x73\x74\x20\x= 26\ -\x26\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x70= \x61\ -\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x69\x70\x76\x36\x5f\x= 65\ -\x78\x74\x5f\x73\x72\x63\x20\x26\x26\0\x20\x20\x20\x20\x20\x20\x20\x20\x7d= \x20\ -\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x= 66\ -\x6f\x2e\x69\x73\x5f\x75\x64\x70\x20\x26\x26\0\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x7d\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x63\x6f\x6e\x66\x69\x67\x2d\x= 3e\ -\x68\x61\x73\x68\x5f\x74\x79\x70\x65\x73\x20\x26\x20\x56\x49\x52\x54\x49\x= 4f\ -\x5f\x4e\x45\x54\x5f\x52\x53\x53\x5f\x48\x41\x53\x48\x5f\x54\x59\x50\x45\x= 5f\ -\x49\x50\x76\x34\x29\x20\x7b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74= \x69\ -\x6e\x5f\x6d\x65\x6d\x63\x70\x79\x28\x26\x72\x73\x73\x5f\x69\x6e\x70\x75\x= 74\ -\x5b\x2a\x62\x79\x74\x65\x73\x5f\x77\x72\x69\x74\x74\x65\x6e\x5d\x2c\x20\x= 70\ -\x74\x72\x2c\x20\x73\x69\x7a\x65\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x75\x64\x70\x20\x3d\x20\x= 31\ -\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x75\x63= \x74\ -\x20\x75\x64\x70\x68\x64\x72\x20\x75\x64\x70\x20\x3d\x20\x7b\x7d\x3b\0\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x= 66\ -\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x= 6c\ -\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x6c\x34\x5f\x6f\x66\x66\x73\x= 65\ -\x74\x2c\x20\x26\x75\x64\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x75\x64\x= 70\ -\x29\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x20\x65\x6c\x73\x65\x20\x69= \x66\ -\x20\x28\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x68\x61\x73\x68\x5f\x74\x79\x70\x= 65\ -\x73\x20\x26\x20\x56\x49\x52\x54\x49\x4f\x5f\x4e\x45\x54\x5f\x52\x53\x53\x= 5f\ -\x48\x41\x53\x48\x5f\x54\x59\x50\x45\x5f\x49\x50\x76\x36\x29\x20\x7b\0\x20= \x20\ -\x20\x20\x66\x6f\x72\x20\x28\x62\x79\x74\x65\x20\x3d\x20\x30\x3b\x20\x62\x= 79\ -\x74\x65\x20\x3c\x20\x48\x41\x53\x48\x5f\x43\x41\x4c\x43\x55\x4c\x41\x54\x= 49\ -\x4f\x4e\x5f\x42\x55\x46\x46\x45\x52\x5f\x53\x49\x5a\x45\x3b\x20\x62\x79\x= 74\ -\x65\x2b\x2b\x29\x20\x7b\0\x20\x20\x20\x20\x5f\x5f\x75\x33\x32\x20\x6c\x65= \x66\ -\x74\x6d\x6f\x73\x74\x5f\x33\x32\x5f\x62\x69\x74\x73\x20\x3d\x20\x6b\x65\x= 79\ -\x2d\x3e\x6c\x65\x66\x74\x6d\x6f\x73\x74\x5f\x33\x32\x5f\x62\x69\x74\x73\x= 3b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x75\x38\x20\x69\x6e\x70\x75\x74\x= 5f\ -\x62\x79\x74\x65\x20\x3d\x20\x69\x6e\x70\x75\x74\x5b\x62\x79\x74\x65\x5d\x= 3b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x69\x6e\x= 70\ -\x75\x74\x5f\x62\x79\x74\x65\x20\x26\x20\x28\x31\x20\x3c\x3c\x20\x37\x29\x= 29\ -\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x75\x38\x20\x6b\x65\x79= \x5f\ -\x62\x79\x74\x65\x20\x3d\x20\x6b\x65\x79\x2d\x3e\x6e\x65\x78\x74\x5f\x62\x= 79\ -\x74\x65\x5b\x62\x79\x74\x65\x5d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6c\x65\x66\x74\x6d\x6f\x73\x= 74\ -\x5f\x33\x32\x5f\x62\x69\x74\x73\x20\x3c\x3c\x20\x31\x29\x20\x7c\x20\x28\x= 28\ -\x6b\x65\x79\x5f\x62\x79\x74\x65\x20\x26\x20\x28\x31\x20\x3c\x3c\x20\x37\x= 29\ -\x29\x20\x3e\x3e\x20\x37\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x5f\x5f\x75\x33\x32\x20\x74\x61\x62\x6c\x65\x5f\x69\x64\x78\x20\x3d\x= 20\ -\x68\x61\x73\x68\x20\x25\x20\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x69\x6e\x64\x= 69\ -\x72\x65\x63\x74\x69\x6f\x6e\x73\x5f\x6c\x65\x6e\x3b\0\x20\x20\x20\x20\x20= \x20\ -\x20\x20\x20\x20\x20\x20\x71\x75\x65\x75\x65\x20\x3d\x20\x62\x70\x66\x5f\x= 6d\ -\x61\x70\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x65\x6c\x65\x6d\x28\x26\x74\x61\x= 70\ -\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x69\x6e\x64\x69\x72\x65\x63\x74\x69\x= 6f\ -\x6e\x5f\x74\x61\x62\x6c\x65\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ -\x20\x69\x66\x20\x28\x71\x75\x65\x75\x65\x29\x20\x7b\0\x7d\0\x20\x20\x20\x= 20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x= 20\ -\x2a\x71\x75\x65\x75\x65\x3b\0\x63\x68\x61\x72\0\x5f\x6c\x69\x63\x65\x6e\x= 73\ -\x65\0\x2e\x6d\x61\x70\x73\0\x6c\x69\x63\x65\x6e\x73\x65\0\x62\x70\x66\x5f= \x66\ -\x6c\x6f\x77\x5f\x6b\x65\x79\x73\0\x62\x70\x66\x5f\x73\x6f\x63\x6b\0\0\0\x= 9f\ -\xeb\x01\0\x20\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x8c\x0c\0\0\xa0\x0c\0\0\0= \0\0\ -\0\x08\0\0\0\x6b\x02\0\0\x01\0\0\0\0\0\0\0\x26\0\0\0\x10\0\0\0\x6b\x02\0\0= \xc8\ -\0\0\0\0\0\0\0\x72\x02\0\0\x9e\x02\0\0\0\x5c\x08\0\x10\0\0\0\x72\x02\0\0\x= cf\ -\x02\0\0\x0b\x74\x08\0\x20\0\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\x28\0\0\0\x72= \x02\ -\0\0\xe2\x02\0\0\x0e\x80\x08\0\x50\0\0\0\x72\x02\0\0\x27\x03\0\0\x0b\x84\x= 08\0\ -\x78\0\0\0\x72\x02\0\0\x67\x03\0\0\x10\x8c\x08\0\x80\0\0\0\x72\x02\0\0\0\0= \0\0\ -\0\0\0\0\x88\0\0\0\x72\x02\0\0\x67\x03\0\0\x10\x8c\x08\0\x90\0\0\0\x72\x02= \0\0\ -\x80\x03\0\0\x16\x90\x08\0\x98\0\0\0\x72\x02\0\0\x80\x03\0\0\x0d\x90\x08\0= \xb0\ -\0\0\0\x72\x02\0\0\xa1\x03\0\0\x0a\x04\x06\0\xd8\0\0\0\x72\x02\0\0\xd8\x03= \0\0\ -\x1f\x10\x06\0\x30\x01\0\0\x72\x02\0\0\x08\x04\0\0\x0f\xa0\x04\0\x38\x01\0= \0\ -\x72\x02\0\0\x21\x04\0\0\x0c\x20\x04\0\x48\x01\0\0\x72\x02\0\0\0\0\0\0\0\0= \0\0\ -\x50\x01\0\0\x72\x02\0\0\x35\x04\0\0\x0b\x2c\x04\0\x78\x01\0\0\x72\x02\0\0= \x7b\ -\x04\0\0\x09\x34\x04\0\x88\x01\0\0\x72\x02\0\0\x7b\x04\0\0\x09\x34\x04\0\x= 98\ -\x01\0\0\x72\x02\0\0\x8a\x04\0\0\x0d\x44\x04\0\xb0\x01\0\0\x72\x02\0\0\x8a= \x04\ -\0\0\x05\x44\x04\0\xd0\x01\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\xd8\x01\0\0\x72= \x02\ -\0\0\xa8\x04\0\0\x0f\x58\x04\0\xf8\x01\0\0\x72\x02\0\0\x7b\x04\0\0\x09\x70= \x04\ -\0\x08\x02\0\0\x72\x02\0\0\x7b\x04\0\0\x09\x70\x04\0\x10\x02\0\0\x72\x02\0= \0\ -\xf2\x04\0\0\x0c\x80\x04\0\x18\x02\0\0\x72\x02\0\0\x02\x05\0\0\x09\xbc\x04= \0\ -\x40\x02\0\0\x72\x02\0\0\x1e\x05\0\0\x17\xd4\x04\0\x50\x02\0\0\x72\x02\0\0= \x39\ -\x05\0\0\x16\xdc\x04\0\x70\x02\0\0\x72\x02\0\0\x1e\x05\0\0\x17\xd4\x04\0\x= 78\ -\x02\0\0\x72\x02\0\0\x57\x05\0\0\x0f\xe0\x04\0\xa0\x02\0\0\x72\x02\0\0\x9a= \x05\ -\0\0\x0d\xe8\x04\0\xb0\x02\0\0\x72\x02\0\0\x9a\x05\0\0\x0d\xe8\x04\0\xb8\x= 02\0\ -\0\x72\x02\0\0\xad\x05\0\0\x24\0\x05\0\xc0\x02\0\0\x72\x02\0\0\xad\x05\0\0= \x20\ -\0\x05\0\xd0\x02\0\0\x72\x02\0\0\xda\x05\0\0\x1b\xf8\x04\0\xd8\x02\0\0\x72= \x02\ -\0\0\xda\x05\0\0\x16\xf8\x04\0\xe0\x02\0\0\x72\x02\0\0\xfb\x05\0\0\x1b\xfc= \x04\ -\0\xe8\x02\0\0\x72\x02\0\0\xfb\x05\0\0\x16\xfc\x04\0\xf0\x02\0\0\x72\x02\0= \0\ -\x1c\x06\0\0\x1a\x08\x05\0\xf8\x02\0\0\x72\x02\0\0\xad\x05\0\0\x1d\0\x05\0= \0\ -\x03\0\0\x72\x02\0\0\x3f\x06\0\0\x18\x0c\x05\0\x08\x03\0\0\x72\x02\0\0\x3f= \x06\ -\0\0\x1c\x0c\x05\0\x20\x03\0\0\x72\x02\0\0\x5f\x06\0\0\x15\x68\x05\0\x30\x= 03\0\ -\0\x72\x02\0\0\x5f\x06\0\0\x1a\x68\x05\0\x48\x03\0\0\x72\x02\0\0\x93\x06\0= \0\ -\x0d\x6c\x05\0\x68\x03\0\0\x72\x02\0\0\xbd\x06\0\0\x1a\x70\x05\0\x78\x03\0= \0\ -\x72\x02\0\0\xdb\x06\0\0\x1b\x78\x05\0\x98\x03\0\0\x72\x02\0\0\xbd\x06\0\0= \x1a\ -\x70\x05\0\xa0\x03\0\0\x72\x02\0\0\xff\x06\0\0\x13\x7c\x05\0\xc8\x03\0\0\x= 72\ -\x02\0\0\x50\x07\0\0\x11\x84\x05\0\xd8\x03\0\0\x72\x02\0\0\x50\x07\0\0\x11= \x84\ -\x05\0\xe0\x03\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\x72\x02\0\0\x67\x= 07\0\ -\0\x15\x2c\x06\0\x08\x04\0\0\x72\x02\0\0\x67\x07\0\0\x09\x2c\x06\0\x10\x04= \0\0\ -\x72\x02\0\0\0\0\0\0\0\0\0\0\x60\x04\0\0\x72\x02\0\0\x86\x07\0\0\x19\x30\x= 06\0\ -\x70\x04\0\0\x72\x02\0\0\x86\x07\0\0\x20\x30\x06\0\x90\x04\0\0\x72\x02\0\0= \0\0\ -\0\0\0\0\0\0\xe0\x04\0\0\x72\x02\0\0\xa8\x07\0\0\x17\x14\x05\0\xf0\x04\0\0= \x72\ -\x02\0\0\xc3\x07\0\0\x18\x1c\x05\0\x20\x05\0\0\x72\x02\0\0\xa8\x07\0\0\x17= \x14\ -\x05\0\x30\x05\0\0\x72\x02\0\0\xe4\x07\0\0\x0f\x20\x05\0\x60\x05\0\0\x72\x= 02\0\ -\0\x9a\x05\0\0\x0d\x28\x05\0\x70\x05\0\0\x72\x02\0\0\x9a\x05\0\0\x0d\x28\x= 05\0\ -\x78\x05\0\0\x72\x02\0\0\x29\x08\0\0\x1d\x38\x05\0\xb8\x05\0\0\x72\x02\0\0= \x4c\ -\x08\0\0\x1d\x3c\x05\0\xf8\x05\0\0\x72\x02\0\0\x6f\x08\0\0\x1b\x44\x05\0\0= \x06\ -\0\0\x72\x02\0\0\x92\x08\0\0\x05\x30\x02\0\x50\x06\0\0\x72\x02\0\0\xaa\x08= \0\0\ -\x19\xb8\x02\0\xb8\x06\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\xc0\x06\0\0\x72\x02= \0\0\ -\xd0\x08\0\0\x0f\xc8\x02\0\xe8\x06\0\0\x72\x02\0\0\x9a\x05\0\0\x0d\xd0\x02= \0\0\ -\x07\0\0\x72\x02\0\0\x9a\x05\0\0\x0d\xd0\x02\0\x08\x07\0\0\x72\x02\0\0\x15= \x09\ -\0\0\x0d\xe0\x02\0\x28\x07\0\0\x72\x02\0\0\x44\x09\0\0\x20\xe4\x02\0\x50\x= 07\0\ -\0\x72\x02\0\0\x70\x09\0\0\x13\xec\x02\0\x78\x07\0\0\x72\x02\0\0\x50\x07\0= \0\ -\x11\xf4\x02\0\x90\x07\0\0\x72\x02\0\0\x50\x07\0\0\x11\xf4\x02\0\x98\x07\0= \0\ -\x72\x02\0\0\xb8\x09\0\0\x19\x04\x03\0\xa0\x07\0\0\x72\x02\0\0\xb8\x09\0\0= \x34\ -\x04\x03\0\xc8\x07\0\0\x72\x02\0\0\xee\x09\0\0\x15\x18\x03\0\xd8\x07\0\0\x= 72\ -\x02\0\0\x2f\x0a\0\0\x17\x14\x03\0\0\x08\0\0\x72\x02\0\0\x66\x0a\0\0\x15\x= 24\ -\x03\0\x18\x08\0\0\x72\x02\0\0\x66\x0a\0\0\x15\x24\x03\0\x20\x08\0\0\x72\x= 02\0\ -\0\x81\x0a\0\0\x27\x34\x03\0\x48\x08\0\0\x72\x02\0\0\xac\x0a\0\0\x27\x50\x= 03\0\ -\x58\x08\0\0\x72\x02\0\0\xdc\x0a\0\0\x1c\xb4\x03\0\x60\x08\0\0\x72\x02\0\0= \x18\ -\x0b\0\0\x20\xc0\x03\0\x70\x08\0\0\x72\x02\0\0\x18\x0b\0\0\x2f\xc0\x03\0\x= 78\ -\x08\0\0\x72\x02\0\0\x18\x0b\0\0\x36\xc0\x03\0\x80\x08\0\0\x72\x02\0\0\x18= \x0b\ -\0\0\x15\xc0\x03\0\xe8\x08\0\0\x72\x02\0\0\x54\x0b\0\0\x43\x64\x03\0\x08\x= 09\0\ -\0\x72\x02\0\0\0\0\0\0\0\0\0\0\x10\x09\0\0\x72\x02\0\0\x54\x0b\0\0\x17\x64= \x03\ -\0\x38\x09\0\0\x72\x02\0\0\x66\x0a\0\0\x15\x6c\x03\0\x50\x09\0\0\x72\x02\0= \0\ -\x66\x0a\0\0\x15\x6c\x03\0\x58\x09\0\0\x72\x02\0\0\xa4\x0b\0\0\x19\x7c\x03= \0\ -\x60\x09\0\0\x72\x02\0\0\xa4\x0b\0\0\x15\x7c\x03\0\x68\x09\0\0\x72\x02\0\0= \xd4\ -\x0b\0\0\x19\x84\x03\0\x70\x09\0\0\x72\x02\0\0\x04\x0c\0\0\x1b\x80\x03\0\x= a0\ -\x09\0\0\x72\x02\0\0\x3f\x0c\0\0\x19\x94\x03\0\xb8\x09\0\0\x72\x02\0\0\x3f= \x0c\ -\0\0\x19\x94\x03\0\xc0\x09\0\0\x72\x02\0\0\x5e\x0c\0\0\x2b\xa4\x03\0\xe0\x= 09\0\ -\0\x72\x02\0\0\xdc\x0a\0\0\x1f\xb4\x03\0\0\x0a\0\0\x72\x02\0\0\x8d\x0c\0\0= \x21\ -\xd4\x03\0\x10\x0a\0\0\x72\x02\0\0\xb5\x0c\0\0\x20\xe4\x03\0\x18\x0a\0\0\x= 72\ -\x02\0\0\xb5\x0c\0\0\x2c\xe4\x03\0\x30\x0a\0\0\x72\x02\0\0\xb5\x0c\0\0\x14= \xe4\ -\x03\0\x40\x0a\0\0\x72\x02\0\0\xe5\x0c\0\0\x20\xe0\x03\0\x48\x0a\0\0\x72\x= 02\0\ -\0\x92\x08\0\0\x05\x30\x02\0\x90\x0a\0\0\x72\x02\0\0\x0d\x0d\0\0\x38\xc0\x= 02\0\ -\xb0\x0a\0\0\x72\x02\0\0\x0d\x0d\0\0\x05\xc0\x02\0\xc8\x0a\0\0\x72\x02\0\0= \x92\ -\x08\0\0\x05\x30\x02\0\xd8\x0a\0\0\x72\x02\0\0\x4b\x0d\0\0\x1c\xc8\x06\0\x= e8\ -\x0a\0\0\x72\x02\0\0\x4b\x0d\0\0\x10\xc8\x06\0\xf0\x0a\0\0\x72\x02\0\0\0\0= \0\0\ -\0\0\0\0\x40\x0b\0\0\x72\x02\0\0\x86\x07\0\0\x19\xcc\x06\0\x48\x0b\0\0\x72= \x02\ -\0\0\x86\x07\0\0\x20\xcc\x06\0\x80\x0b\0\0\x72\x02\0\0\x71\x0d\0\0\x2d\x04= \x07\ -\0\x90\x0b\0\0\x72\x02\0\0\x71\x0d\0\0\x1d\x04\x07\0\x98\x0b\0\0\x72\x02\0= \0\ -\x71\x0d\0\0\x2d\x04\x07\0\xa8\x0b\0\0\x72\x02\0\0\xa0\x0d\0\0\x2d\xd8\x06= \0\ -\xd8\x0b\0\0\x72\x02\0\0\xa0\x0d\0\0\x1d\xd8\x06\0\xe8\x0b\0\0\x72\x02\0\0= \xa0\ -\x0d\0\0\x2d\xd8\x06\0\xf8\x0b\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\xc8\x0c\0\0= \x72\ -\x02\0\0\xcf\x0d\0\0\x20\x6c\x06\0\xd0\x0c\0\0\x72\x02\0\0\xcf\x0d\0\0\x27= \x6c\ -\x06\0\xf8\x0c\0\0\x72\x02\0\0\xf8\x0d\0\0\x27\xa8\x06\0\0\x0d\0\0\x72\x02= \0\0\ -\xf8\x0d\0\0\x14\xa8\x06\0\x08\x0d\0\0\x72\x02\0\0\x41\x0e\0\0\x05\x98\x01= \0\ -\x18\x0d\0\0\x72\x02\0\0\x41\x0e\0\0\x05\x98\x01\0\x48\x0d\0\0\x72\x02\0\0= \x9a\ -\x05\0\0\x0d\x54\x05\0\x58\x0d\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\x68\x0d\0\0= \x72\ -\x02\0\0\xcf\x0d\0\0\x20\x48\x07\0\x70\x0d\0\0\x72\x02\0\0\xcf\x0d\0\0\x27= \x48\ -\x07\0\xa8\x0d\0\0\x72\x02\0\0\x71\x0d\0\0\x2d\x80\x07\0\xb8\x0d\0\0\x72\x= 02\0\ -\0\x71\x0d\0\0\x1d\x80\x07\0\xc0\x0d\0\0\x72\x02\0\0\x71\x0d\0\0\x2d\x80\x= 07\0\ -\xd0\x0d\0\0\x72\x02\0\0\xa0\x0d\0\0\x2d\x54\x07\0\0\x0e\0\0\x72\x02\0\0\x= a0\ -\x0d\0\0\x1d\x54\x07\0\x10\x0e\0\0\x72\x02\0\0\xa0\x0d\0\0\x2d\x54\x07\0\x= 28\ -\x0e\0\0\x72\x02\0\0\x7e\x0e\0\0\x1a\xa0\x05\0\x38\x0e\0\0\x72\x02\0\0\x9c= \x0e\ -\0\0\x1b\xa8\x05\0\x48\x0e\0\0\x72\x02\0\0\x7e\x0e\0\0\x1a\xa0\x05\0\x50\x= 0e\0\ -\0\x72\x02\0\0\xc0\x0e\0\0\x13\xac\x05\0\x78\x0e\0\0\x72\x02\0\0\x50\x07\0= \0\ -\x11\xb4\x05\0\x88\x0e\0\0\x72\x02\0\0\x50\x07\0\0\x11\xb4\x05\0\x98\x0e\0= \0\ -\x72\x02\0\0\x92\x08\0\0\x05\x30\x02\0\xa8\x0e\0\0\x72\x02\0\0\x11\x0f\0\0= \x27\ -\xcc\x07\0\xb8\x0e\0\0\x72\x02\0\0\x11\x0f\0\0\x14\xcc\x07\0\xd8\x0e\0\0\x= 72\ -\x02\0\0\xa0\x0d\0\0\x2d\xd0\x07\0\xe8\x0e\0\0\x72\x02\0\0\xa0\x0d\0\0\x1d= \xd0\ -\x07\0\xf0\x0e\0\0\x72\x02\0\0\xa0\x0d\0\0\x2d\xd0\x07\0\x18\x0f\0\0\x72\x= 02\0\ -\0\0\0\0\0\0\0\0\0\x68\x0f\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\x78\x0f\0\0\x72= \x02\ -\0\0\x71\x0d\0\0\x1d\xfc\x07\0\x80\x0f\0\0\x72\x02\0\0\x71\x0d\0\0\x2d\xfc= \x07\ -\0\x90\x0f\0\0\x72\x02\0\0\x41\x0e\0\0\x05\x98\x01\0\xe0\x0f\0\0\x72\x02\0= \0\ -\x41\x0e\0\0\x05\x98\x01\0\x18\x10\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\x28\x10= \0\0\ -\x72\x02\0\0\x5a\x0f\0\0\x05\xd0\x01\0\x30\x10\0\0\x72\x02\0\0\x9c\x0f\0\0= \x23\ -\xc4\x01\0\x48\x10\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\x50\x10\0\0\x72\x02\0\0= \xd0\ -\x0f\0\0\x1b\xd4\x01\0\x70\x10\0\0\x72\x02\0\0\xf7\x0f\0\0\x11\xe8\x01\0\x= 88\ -\x10\0\0\x72\x02\0\0\x20\x10\0\0\x19\xd8\x01\0\xa0\x10\0\0\x72\x02\0\0\x4e= \x10\ -\0\0\x27\xfc\x01\0\xb8\x10\0\0\x72\x02\0\0\x4e\x10\0\0\x2d\xfc\x01\0\xc0\x= 10\0\ -\0\x72\x02\0\0\xf7\x0f\0\0\x11\xe8\x01\0\0\x11\0\0\x72\x02\0\0\x4e\x10\0\0= \x27\ -\xfc\x01\0\x08\x11\0\0\x72\x02\0\0\x4e\x10\0\0\x2d\xfc\x01\0\x10\x11\0\0\x= 72\ -\x02\0\0\xf7\x0f\0\0\x11\xe8\x01\0\x38\x11\0\0\x72\x02\0\0\x4e\x10\0\0\x27= \xfc\ -\x01\0\x58\x11\0\0\x72\x02\0\0\x4e\x10\0\0\x2d\xfc\x01\0\x60\x11\0\0\x72\x= 02\0\ -\0\xf7\x0f\0\0\x11\xe8\x01\0\x88\x11\0\0\x72\x02\0\0\x4e\x10\0\0\x27\xfc\x= 01\0\ -\xa8\x11\0\0\x72\x02\0\0\x4e\x10\0\0\x2d\xfc\x01\0\xb0\x11\0\0\x72\x02\0\0= \xf7\ -\x0f\0\0\x11\xe8\x01\0\xf0\x11\0\0\x72\x02\0\0\x4e\x10\0\0\x27\xfc\x01\0\x= f8\ -\x11\0\0\x72\x02\0\0\x4e\x10\0\0\x2d\xfc\x01\0\0\x12\0\0\x72\x02\0\0\xf7\x= 0f\0\ -\0\x11\xe8\x01\0\x40\x12\0\0\x72\x02\0\0\x4e\x10\0\0\x27\xfc\x01\0\x48\x12= \0\0\ -\x72\x02\0\0\x4e\x10\0\0\x2d\xfc\x01\0\x50\x12\0\0\x72\x02\0\0\xf7\x0f\0\0= \x11\ -\xe8\x01\0\x90\x12\0\0\x72\x02\0\0\x4e\x10\0\0\x27\xfc\x01\0\x98\x12\0\0\x= 72\ -\x02\0\0\x4e\x10\0\0\x2d\xfc\x01\0\xa0\x12\0\0\x72\x02\0\0\xf7\x0f\0\0\x11= \xe8\ -\x01\0\xc8\x12\0\0\x72\x02\0\0\x4e\x10\0\0\x27\xfc\x01\0\xd0\x12\0\0\x72\x= 02\0\ -\0\x4e\x10\0\0\x2d\xfc\x01\0\xd8\x12\0\0\x72\x02\0\0\x5a\x0f\0\0\x3d\xd0\x= 01\0\ -\xe8\x12\0\0\x72\x02\0\0\x5a\x0f\0\0\x05\xd0\x01\0\xf8\x12\0\0\x72\x02\0\0= \x9a\ -\x10\0\0\x2e\xa4\x08\0\x18\x13\0\0\x72\x02\0\0\x9a\x10\0\0\x24\xa4\x08\0\x= 30\ -\x13\0\0\x72\x02\0\0\x9a\x10\0\0\x13\xa4\x08\0\x40\x13\0\0\x72\x02\0\0\0\0= \0\0\ -\0\0\0\0\x48\x13\0\0\x72\x02\0\0\xd9\x10\0\0\x15\xb0\x08\0\x60\x13\0\0\x72= \x02\ -\0\0\x21\x11\0\0\x11\xbc\x08\0\x68\x13\0\0\x72\x02\0\0\0\0\0\0\0\0\0\0\x88= \x13\ -\0\0\x72\x02\0\0\x3a\x11\0\0\x01\xe0\x08\0\xa0\x13\0\0\x72\x02\0\0\x3c\x11= \0\0\ -\x18\xc0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03= \0\ -\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3d\x01\0\0\0\0\x03\0\x88\x13\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\x6f\x01\0\0\0\0\x03\0\xa8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x66\ -\x01\0\0\0\0\x03\0\x68\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xbd\0\0\0\0\0\x03\0= \xc8\ -\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\0\0\0\0\x03\0\x18\x02\0\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\x04\x01\0\0\0\0\x03\0\xd8\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc= \0\0\ -\0\0\0\x03\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\x03\0\xd0\x= 02\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\x32\x02\0\0\0\0\x03\0\x20\x03\0\0\0\0\0\0\0\0\0= \0\0\ -\0\0\0\x2a\x02\0\0\0\0\x03\0\x20\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xec\0\0\0= \0\0\ -\x03\0\xe0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x22\x02\0\0\0\0\x03\0\xd8\x0a\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\x56\x01\0\0\0\0\x03\0\xc8\x0c\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\x76\x01\0\0\0\0\x03\0\x90\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe8\x01\0\0\0= \0\ -\x03\0\x20\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97\x01\0\0\0\0\x03\0\x60\x0d\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\x42\x02\0\0\0\0\x03\0\x98\x0e\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\xe0\x01\0\0\0\0\x03\0\x48\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xaf\x01\0\0\0= \0\ -\x03\0\xb0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd0\x01\0\0\0\0\x03\0\x48\x0d\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\xa7\x01\0\0\0\0\x03\0\x38\x08\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\x7e\x01\0\0\0\0\x03\0\0\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5e\x01\0\0\0\0= \x03\ -\0\x10\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf9\x01\0\0\0\0\x03\0\xd0\x0f\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\x86\x01\0\0\0\0\x03\0\xe8\x08\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ -\x3a\x02\0\0\0\0\x03\0\x58\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd8\x01\0\0\0\0= \x03\ -\0\xd0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9f\x01\0\0\0\0\x03\0\x30\x0d\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\xfc\0\0\0\0\0\x03\0\xd8\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x35\ -\x01\0\0\0\0\x03\0\xc8\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf4\0\0\0\0\0\x03\0= \x88\ -\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd4\0\0\0\0\0\x03\0\xb8\x0a\0\0\0\0\0\0\0= \0\0\ -\0\0\0\0\0\xc8\x01\0\0\0\0\x03\0\x68\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4e\x= 01\0\ -\0\0\0\x03\0\x90\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14\x01\0\0\0\0\x03\0\xa8= \x0b\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc4\0\0\0\0\0\x03\0\xd8\x0b\0\0\0\0\0\0\0\0\0= \0\0\ -\0\0\0\xf1\x01\0\0\0\0\x03\0\xf8\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1a\x02\0= \0\0\ -\0\x03\0\xf0\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe4\0\0\0\0\0\x03\0\xf8\x0c\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\xc0\x01\0\0\0\0\x03\0\xa8\x0e\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\x2d\x01\0\0\0\0\x03\0\xb8\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdc\0\0\0\0\0= \x03\ -\0\xd0\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x12\x02\0\0\0\0\x03\0\0\x0e\0\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\x46\x01\0\0\0\0\x03\0\xe8\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x0c\ -\x01\0\0\0\0\x03\0\0\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4a\x02\0\0\0\0\x03\0= \xe0\ -\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x09\x02\0\0\0\0\x03\0\x18\x10\0\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\xb7\x01\0\0\0\0\x03\0\x40\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8e= \x01\ -\0\0\0\0\x03\0\xf8\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x24\x01\0\0\0\0\x03\0\x= a0\ -\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x59\0\0\0\x12\0\x03\0\0\0\0\0\0\0\0\0\xb0= \x13\ -\0\0\0\0\0\0\x3e\0\0\0\x11\0\x05\0\0\0\0\0\0\0\0\0\x20\0\0\0\0\0\0\0\x01\0= \0\0\ -\x11\0\x05\0\x20\0\0\0\0\0\0\0\x20\0\0\0\0\0\0\0\x86\0\0\0\x11\0\x05\0\x40= \0\0\ -\0\0\0\0\0\x20\0\0\0\0\0\0\0\x7d\0\0\0\x11\0\x06\0\0\0\0\0\0\0\0\0\x07\0\0= \0\0\ -\0\0\0\x28\0\0\0\0\0\0\0\x01\0\0\0\x35\0\0\0\x50\0\0\0\0\0\0\0\x01\0\0\0\x= 36\0\ -\0\0\x48\x13\0\0\0\0\0\0\x01\0\0\0\x37\0\0\0\x18\x05\0\0\0\0\0\0\x04\0\0\0= \x35\ -\0\0\0\x24\x05\0\0\0\0\0\0\x04\0\0\0\x36\0\0\0\x30\x05\0\0\0\0\0\0\x04\0\0= \0\ -\x37\0\0\0\x48\x05\0\0\0\0\0\0\x04\0\0\0\x38\0\0\0\x2c\0\0\0\0\0\0\0\x04\0= \0\0\ -\x01\0\0\0\x40\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\0\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\x60\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\0\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\x80\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\0\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\xa0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\0\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\xc0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\0\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\xe0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\0\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x01\0\0\0\0\0\0\x04\0= \0\0\ -\x01\0\0\0\x20\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x01\0\0\0\0\0\0\x04= \0\0\ -\0\x01\0\0\0\x40\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x01\0\0\0\0\0\0\x= 04\0\ -\0\0\x01\0\0\0\x60\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x01\0\0\0\0\0\0= \x04\ -\0\0\0\x01\0\0\0\x80\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x01\0\0\0\0\0= \0\ -\x04\0\0\0\x01\0\0\0\xa0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x01\0\0\0= \0\0\ -\0\x04\0\0\0\x01\0\0\0\xc0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x01\0\0= \0\0\ -\0\0\x04\0\0\0\x01\0\0\0\xe0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x01\0= \0\0\ -\0\0\0\x04\0\0\0\x01\0\0\0\0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x02\0= \0\0\ -\0\0\0\x04\0\0\0\x01\0\0\0\x20\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x02= \0\0\ -\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x= 02\0\ -\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70= \x02\ -\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 90\ -\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ -\xb0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x02\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ -\0\xd0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x02\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ -\0\0\xf0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x03\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ -\0\0\x10\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x03\0\0\0\0\0\0\x04\0\0\0= \x01\ -\0\0\0\x30\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x03\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\x50\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x03\0\0\0\0\0\0\x04= \0\0\ -\0\x01\0\0\0\x70\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x03\0\0\0\0\0\0\x= 04\0\ -\0\0\x01\0\0\0\x90\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x03\0\0\0\0\0\0= \x04\ -\0\0\0\x01\0\0\0\xb0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x03\0\0\0\0\0= \0\ -\x04\0\0\0\x01\0\0\0\xd0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x03\0\0\0= \0\0\ -\0\x04\0\0\0\x01\0\0\0\xf0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x04\0\0\0= \0\0\ -\0\x04\0\0\0\x01\0\0\0\x10\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x04\0\0= \0\0\ -\0\0\x04\0\0\0\x01\0\0\0\x30\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x04\0= \0\0\ -\0\0\0\x04\0\0\0\x01\0\0\0\x50\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x04= \0\0\ -\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x= 04\0\ -\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0= \x04\ -\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= c0\ -\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ -\xe0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x04\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ -\0\0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x05\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ -\0\x20\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x05\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ -\0\0\x40\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x05\0\0\0\0\0\0\x04\0\0\0= \x01\ -\0\0\0\x60\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x05\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\x80\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x05\0\0\0\0\0\0\x04= \0\0\ -\0\x01\0\0\0\xa0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x05\0\0\0\0\0\0\x= 04\0\ -\0\0\x01\0\0\0\xc0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x05\0\0\0\0\0\0= \x04\ -\0\0\0\x01\0\0\0\xe0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x05\0\0\0\0\0= \0\ -\x04\0\0\0\x01\0\0\0\0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x06\0\0\0\0= \0\0\ -\x04\0\0\0\x01\0\0\0\x20\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x06\0\0\0= \0\0\ -\0\x04\0\0\0\x01\0\0\0\x40\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x06\0\0= \0\0\ -\0\0\x04\0\0\0\x01\0\0\0\x60\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x06\0= \0\0\ -\0\0\0\x04\0\0\0\x01\0\0\0\x80\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x06= \0\0\ -\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x= 06\0\ -\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0= \x06\ -\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= f0\ -\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0= \x10\ -\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ -\x30\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x07\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ -\0\x50\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x07\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ -\0\0\x70\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x07\0\0\0\0\0\0\x04\0\0\0= \x01\ -\0\0\0\x90\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x07\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\xb0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x07\0\0\0\0\0\0\x04= \0\0\ -\0\x01\0\0\0\xd0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x07\0\0\0\0\0\0\x= 04\0\ -\0\0\x01\0\0\0\xf0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x08\0\0\0\0\0\0\x= 04\0\ -\0\0\x01\0\0\0\x10\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x08\0\0\0\0\0\0= \x04\ -\0\0\0\x01\0\0\0\x30\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x08\0\0\0\0\0= \0\ -\x04\0\0\0\x01\0\0\0\x50\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x08\0\0\0= \0\0\ -\0\x04\0\0\0\x01\0\0\0\x70\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x08\0\0= \0\0\ -\0\0\x04\0\0\0\x01\0\0\0\x90\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x08\0= \0\0\ -\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x08= \0\0\ -\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x= 08\0\ -\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x= 09\0\ -\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20= \x09\ -\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 40\ -\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ -\x60\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x09\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ -\0\x80\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x09\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ -\0\0\xa0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x09\0\0\0\0\0\0\x04\0\0\0= \x01\ -\0\0\0\xc0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x09\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\xe0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x09\0\0\0\0\0\0\x04= \0\0\ -\0\x01\0\0\0\0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x0a\0\0\0\0\0\0\x04= \0\0\ -\0\x01\0\0\0\x20\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x0a\0\0\0\0\0\0\x= 04\0\ -\0\0\x01\0\0\0\x40\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x0a\0\0\0\0\0\0= \x04\ -\0\0\0\x01\0\0\0\x60\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x0a\0\0\0\0\0= \0\ -\x04\0\0\0\x01\0\0\0\x80\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x0a\0\0\0= \0\0\ -\0\x04\0\0\0\x01\0\0\0\xa0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x0a\0\0= \0\0\ -\0\0\x04\0\0\0\x01\0\0\0\xc0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x0a\0= \0\0\ -\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x0a= \0\0\ -\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x0b= \0\0\ -\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x= 0b\0\ -\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50= \x0b\ -\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 70\ -\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ -\x90\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x0b\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ -\0\xb0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x0b\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ -\0\0\xd0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x0b\0\0\0\0\0\0\x04\0\0\0= \x01\ -\0\0\0\xf0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x0c\0\0\0\0\0\0\x04\0\0\0= \x01\ -\0\0\0\x10\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x0c\0\0\0\0\0\0\x04\0\0= \0\ -\x01\0\0\0\x30\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x0c\0\0\0\0\0\0\x04= \0\0\ -\0\x01\0\0\0\x50\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x0c\0\0\0\0\0\0\x= 04\0\ -\0\0\x01\0\0\0\x70\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x0c\0\0\0\0\0\0= \x04\ -\0\0\0\x01\0\0\0\x90\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x0c\0\0\0\0\0= \0\ -\x04\0\0\0\x01\0\0\0\xb0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x3e\x3f\x40\x= 41\ -\x42\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x74\x6f\x65\x70\x6c= \x69\ -\x74\x7a\x5f\x6b\x65\x79\0\x2e\x74\x65\x78\x74\0\x2e\x72\x65\x6c\x2e\x42\x= 54\ -\x46\x2e\x65\x78\x74\0\x2e\x72\x65\x6c\x73\x6f\x63\x6b\x65\x74\0\x2e\x6d\x= 61\ -\x70\x73\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x63\x6f\x6e\x66= \x69\ -\x67\x75\x72\x61\x74\x69\x6f\x6e\x73\0\x74\x75\x6e\x5f\x72\x73\x73\x5f\x73= \x74\ -\x65\x65\x72\x69\x6e\x67\x5f\x70\x72\x6f\x67\0\x2e\x6c\x6c\x76\x6d\x5f\x61= \x64\ -\x64\x72\x73\x69\x67\0\x5f\x6c\x69\x63\x65\x6e\x73\x65\0\x74\x61\x70\x5f\x= 72\ -\x73\x73\x5f\x6d\x61\x70\x5f\x69\x6e\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x= 5f\ -\x74\x61\x62\x6c\x65\0\x2e\x73\x74\x72\x74\x61\x62\0\x2e\x73\x79\x6d\x74\x= 61\ -\x62\0\x2e\x72\x65\x6c\x2e\x42\x54\x46\0\x4c\x42\x42\x30\x5f\x39\0\x4c\x42= \x42\ -\x30\x5f\x37\x39\0\x4c\x42\x42\x30\x5f\x35\x39\0\x4c\x42\x42\x30\x5f\x34\x= 39\0\ -\x4c\x42\x42\x30\x5f\x38\x38\0\x4c\x42\x42\x30\x5f\x36\x38\0\x4c\x42\x42\x= 30\ -\x5f\x35\x38\0\x4c\x42\x42\x30\x5f\x34\x38\0\x4c\x42\x42\x30\x5f\x33\x38\0= \x4c\ -\x42\x42\x30\x5f\x31\x38\0\x4c\x42\x42\x30\x5f\x39\x37\0\x4c\x42\x42\x30\x= 5f\ -\x37\x37\0\x4c\x42\x42\x30\x5f\x31\x37\0\x4c\x42\x42\x30\x5f\x31\x30\x37\0= \x4c\ -\x42\x42\x30\x5f\x38\x36\0\x4c\x42\x42\x30\x5f\x34\x36\0\x4c\x42\x42\x30\x= 5f\ -\x31\x30\x36\0\x4c\x42\x42\x30\x5f\x39\x35\0\x4c\x42\x42\x30\x5f\x37\x35\0= \x4c\ -\x42\x42\x30\x5f\x36\x35\0\x4c\x42\x42\x30\x5f\x34\x35\0\x4c\x42\x42\x30\x= 5f\ -\x31\x30\x35\0\x4c\x42\x42\x30\x5f\x34\0\x4c\x42\x42\x30\x5f\x36\x34\0\x4c= \x42\ -\x42\x30\x5f\x34\x34\0\x4c\x42\x42\x30\x5f\x33\x34\0\x4c\x42\x42\x30\x5f\x= 31\ -\x30\x34\0\x4c\x42\x42\x30\x5f\x35\x33\0\x4c\x42\x42\x30\x5f\x34\x33\0\x4c= \x42\ -\x42\x30\x5f\x33\x33\0\x4c\x42\x42\x30\x5f\x32\x33\0\x4c\x42\x42\x30\x5f\x= 31\ -\x30\x33\0\x4c\x42\x42\x30\x5f\x39\x32\0\x4c\x42\x42\x30\x5f\x38\x32\0\x4c= \x42\ -\x42\x30\x5f\x35\x32\0\x4c\x42\x42\x30\x5f\x34\x32\0\x4c\x42\x42\x30\x5f\x= 32\ -\x32\0\x4c\x42\x42\x30\x5f\x31\x30\x32\0\x4c\x42\x42\x30\x5f\x38\x31\0\x4c= \x42\ -\x42\x30\x5f\x35\x31\0\x4c\x42\x42\x30\x5f\x31\x31\0\x4c\x42\x42\x30\x5f\x= 31\ -\x30\x31\0\x4c\x42\x42\x30\x5f\x39\x30\0\x4c\x42\x42\x30\x5f\x38\x30\0\x4c= \x42\ -\x42\x30\x5f\x37\x30\0\x4c\x42\x42\x30\x5f\x36\x30\0\x4c\x42\x42\x30\x5f\x= 35\ -\x30\0\x4c\x42\x42\x30\x5f\x34\x30\0\x4c\x42\x42\x30\x5f\x32\x30\0\x4c\x42= \x42\ -\x30\x5f\x31\x30\x30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x= a4\0\ -\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x6d\x4a\0\0\0\0\0\0\x53\x02= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1a\0\0\0\x01\0= \0\0\ -\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x31\0\0\0\x01\0\0\0\x06\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\xb0\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\x2d\0\0\0\x09\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\x68\x3d\0\0\0\0\0\0\x30\0\0\0\0\0\0\0\x0c\0\0\0\x03\0\0\0\x08\0\0\0\0\0= \0\0\ -\x10\0\0\0\0\0\0\0\x38\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x= f0\ -\x13\0\0\0\0\0\0\x60\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\0\0\x7e\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x50\x14\0\0\0= \0\0\ -\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb8= \0\0\ -\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x58\x14\0\0\0\0\0\0\xf6\x16\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb4\0\0\0\x09\0\0= \0\ -\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\x3d\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\x= 0c\0\ -\0\0\x07\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\x24\0\0\0\x01\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\x50\x2b\0\0\0\0\0\0\xc0\x0c\0\0\0\0\0\0\0\0\0\0\0= \0\0\ -\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x20\0\0\0\x09\0\0\0\x40\0\0\0\0\0\0\0= \0\0\ -\0\0\0\0\0\0\xd8\x3d\0\0\0\0\0\0\x90\x0c\0\0\0\0\0\0\x0c\0\0\0\x09\0\0\0\x= 08\0\ -\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\x6f\0\0\0\x03\x4c\xff\x6f\0\0\0\x80\0\0\0\0= \0\0\ -\0\0\0\0\0\0\x68\x4a\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0= \0\0\ -\0\0\0\0\0\0\0\0\0\0\0\xac\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x10\ -\x38\0\0\0\0\0\0\x58\x05\0\0\0\0\0\0\x01\0\0\0\x34\0\0\0\x08\0\0\0\0\0\0\0= \x18\ -\0\0\0\0\0\0\0"; -} - -#ifdef __cplusplus -struct rss_bpf *rss_bpf::open(const struct bpf_object_open_opts *opts) { r= eturn rss_bpf__open_opts(opts); } -struct rss_bpf *rss_bpf::open_and_load() { return rss_bpf__open_and_load()= ; } -int rss_bpf::load(struct rss_bpf *skel) { return rss_bpf__load(skel); } -int rss_bpf::attach(struct rss_bpf *skel) { return rss_bpf__attach(skel); } -void rss_bpf::detach(struct rss_bpf *skel) { rss_bpf__detach(skel); } -void rss_bpf::destroy(struct rss_bpf *skel) { rss_bpf__destroy(skel); } -const void *rss_bpf::elf_bytes(size_t *sz) { return rss_bpf__elf_bytes(sz)= ; } -#endif /* __cplusplus */ - -__attribute__((unused)) static void -rss_bpf__assert(struct rss_bpf *s __attribute__((unused))) -{ -#ifdef __cplusplus -#define _Static_assert static_assert -#endif -#ifdef __cplusplus -#undef _Static_assert -#endif -} - -#endif /* __RSS_BPF_SKEL_H__ */ diff --git a/ebpf/socket.bpf.skeleton.h b/ebpf/socket.bpf.skeleton.h new file mode 100644 index 0000000000..dfb6e58f09 --- /dev/null +++ b/ebpf/socket.bpf.skeleton.h @@ -0,0 +1,1019 @@ +/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ + +/* THIS FILE IS AUTOGENERATED BY BPFTOOL! */ +#ifndef __SOCKET_BPF_SKEL_H__ +#define __SOCKET_BPF_SKEL_H__ + +#include +#include +#include + +struct socket_bpf { + struct bpf_object_skeleton *skeleton; + struct bpf_object *obj; + struct { + struct bpf_map *tap_rss_map_configurations; + struct bpf_map *tap_rss_map_toeplitz_key; + struct bpf_map *tap_rss_map_indirection_table; + } maps; + struct { + struct bpf_program *tun_rss_steering_prog; + } progs; + struct { + struct bpf_link *tun_rss_steering_prog; + } links; + +#ifdef __cplusplus + static inline struct socket_bpf *open(const struct bpf_object_open_opts *= opts =3D nullptr); + static inline struct socket_bpf *open_and_load(); + static inline int load(struct socket_bpf *skel); + static inline int attach(struct socket_bpf *skel); + static inline void detach(struct socket_bpf *skel); + static inline void destroy(struct socket_bpf *skel); + static inline const void *elf_bytes(size_t *sz); +#endif /* __cplusplus */ +}; + +static void +socket_bpf__destroy(struct socket_bpf *obj) +{ + if (!obj) + return; + if (obj->skeleton) + bpf_object__destroy_skeleton(obj->skeleton); + free(obj); +} + +static inline int +socket_bpf__create_skeleton(struct socket_bpf *obj); + +static inline struct socket_bpf * +socket_bpf__open_opts(const struct bpf_object_open_opts *opts) +{ + struct socket_bpf *obj; + int err; + + obj =3D (struct socket_bpf *)calloc(1, sizeof(*obj)); + if (!obj) { + errno =3D ENOMEM; + return NULL; + } + + err =3D socket_bpf__create_skeleton(obj); + if (err) + goto err_out; + + err =3D bpf_object__open_skeleton(obj->skeleton, opts); + if (err) + goto err_out; + + return obj; +err_out: + socket_bpf__destroy(obj); + errno =3D -err; + return NULL; +} + +static inline struct socket_bpf * +socket_bpf__open(void) +{ + return socket_bpf__open_opts(NULL); +} + +static inline int +socket_bpf__load(struct socket_bpf *obj) +{ + return bpf_object__load_skeleton(obj->skeleton); +} + +static inline struct socket_bpf * +socket_bpf__open_and_load(void) +{ + struct socket_bpf *obj; + int err; + + obj =3D socket_bpf__open(); + if (!obj) + return NULL; + err =3D socket_bpf__load(obj); + if (err) { + socket_bpf__destroy(obj); + errno =3D -err; + return NULL; + } + return obj; +} + +static inline int +socket_bpf__attach(struct socket_bpf *obj) +{ + return bpf_object__attach_skeleton(obj->skeleton); +} + +static inline void +socket_bpf__detach(struct socket_bpf *obj) +{ + bpf_object__detach_skeleton(obj->skeleton); +} + +static inline const void *socket_bpf__elf_bytes(size_t *sz); + +static inline int +socket_bpf__create_skeleton(struct socket_bpf *obj) +{ + struct bpf_object_skeleton *s; + int err; + + s =3D (struct bpf_object_skeleton *)calloc(1, sizeof(*s)); + if (!s) { + err =3D -ENOMEM; + goto err; + } + + s->sz =3D sizeof(*s); + s->name =3D "socket_bpf"; + s->obj =3D &obj->obj; + + /* maps */ + s->map_cnt =3D 3; + s->map_skel_sz =3D sizeof(*s->maps); + s->maps =3D (struct bpf_map_skeleton *)calloc(s->map_cnt, s->map_skel_sz); + if (!s->maps) { + err =3D -ENOMEM; + goto err; + } + + s->maps[0].name =3D "tap_rss_map_configurations"; + s->maps[0].map =3D &obj->maps.tap_rss_map_configurations; + + s->maps[1].name =3D "tap_rss_map_toeplitz_key"; + s->maps[1].map =3D &obj->maps.tap_rss_map_toeplitz_key; + + s->maps[2].name =3D "tap_rss_map_indirection_table"; + s->maps[2].map =3D &obj->maps.tap_rss_map_indirection_table; + + /* programs */ + s->prog_cnt =3D 1; + s->prog_skel_sz =3D sizeof(*s->progs); + s->progs =3D (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel= _sz); + if (!s->progs) { + err =3D -ENOMEM; + goto err; + } + + s->progs[0].name =3D "tun_rss_steering_prog"; + s->progs[0].prog =3D &obj->progs.tun_rss_steering_prog; + s->progs[0].link =3D &obj->links.tun_rss_steering_prog; + + s->data =3D (void *)socket_bpf__elf_bytes(&s->data_sz); + + obj->skeleton =3D s; + return 0; +err: + bpf_object__destroy_skeleton(s); + return err; +} + +static inline const void *socket_bpf__elf_bytes(size_t *sz) +{ + *sz =3D 21016; + return (const void *)"\ +\x7f\x45\x4c\x46\x02\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\xf7\0\x01\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\xd8\x4e\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x0d= \0\ +\x01\0\x7b\x1a\x40\xff\0\0\0\0\xb7\x09\0\0\0\0\0\0\x63\x9a\x4c\xff\0\0\0\0= \xbf\ +\xa7\0\0\0\0\0\0\x07\x07\0\0\x4c\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\xbf\x72\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x06\0\0\0\0\0\0\x18\x01\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\xbf\x72\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x08\0\0\0= \0\0\ +\0\x15\x06\x7f\x01\0\0\0\0\xbf\x87\0\0\0\0\0\0\x15\x07\x7d\x01\0\0\0\0\x71= \x61\ +\0\0\0\0\0\0\x15\x01\x77\x01\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\xc0\xff\0= \0\0\ +\0\x7b\x1a\xb8\xff\0\0\0\0\x7b\x1a\xb0\xff\0\0\0\0\x7b\x1a\xa8\xff\0\0\0\0= \x7b\ +\x1a\xa0\xff\0\0\0\0\x63\x1a\x98\xff\0\0\0\0\x7b\x1a\x90\xff\0\0\0\0\x7b\x= 1a\ +\x88\xff\0\0\0\0\x7b\x1a\x80\xff\0\0\0\0\x7b\x1a\x78\xff\0\0\0\0\x7b\x1a\x= 70\ +\xff\0\0\0\0\x7b\x1a\x68\xff\0\0\0\0\x7b\x1a\x60\xff\0\0\0\0\x7b\x1a\x58\x= ff\0\ +\0\0\0\x7b\x1a\x50\xff\0\0\0\0\x79\xa9\x40\xff\0\0\0\0\x15\x09\x65\x01\0\0= \0\0\ +\x6b\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\x= bf\ +\x91\0\0\0\0\0\0\xb7\x02\0\0\x0c\0\0\0\xb7\x04\0\0\x02\0\0\0\xb7\x05\0\0\0= \0\0\ +\0\x85\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x5a\x= 01\0\ +\0\0\0\xb7\x02\0\0\x10\0\0\0\x69\xa1\xc8\xff\0\0\0\0\xbf\x13\0\0\0\0\0\0\x= dc\ +\x03\0\0\x10\0\0\0\x15\x03\x02\0\0\x81\0\0\x55\x03\x0b\0\xa8\x88\0\0\xb7\x= 02\0\ +\0\x14\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\xbf\x91\0\0\0= \0\0\ +\0\xb7\x04\0\0\x02\0\0\0\xb7\x05\0\0\0\0\0\0\x85\0\0\0\x44\0\0\0\x67\0\0\0= \x20\ +\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x4a\x01\0\0\0\0\x69\xa1\xc8\xff\0\0\0\0\x= 15\ +\x01\x48\x01\0\0\0\0\x15\x01\x56\0\x86\xdd\0\0\x7b\x7a\x30\xff\0\0\0\0\x55= \x01\ +\x39\0\x08\0\0\0\xb7\x07\0\0\x01\0\0\0\x73\x7a\x50\xff\0\0\0\0\xb7\x01\0\0= \0\0\ +\0\0\x63\x1a\xd8\xff\0\0\0\0\x7b\x1a\xd0\xff\0\0\0\0\x7b\x1a\xc8\xff\0\0\0= \0\ +\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\x79\xa1\x40\xff\0\0\0\0\x= b7\ +\x02\0\0\0\0\0\0\xb7\x04\0\0\x14\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44= \0\0\ +\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x35\x01\0\0\0\0\x69\xa1\x= ce\ +\xff\0\0\0\0\x55\x01\x01\0\0\0\0\0\xb7\x07\0\0\0\0\0\0\x61\xa1\xd4\xff\0\0= \0\0\ +\x63\x1a\x5c\xff\0\0\0\0\x61\xa1\xd8\xff\0\0\0\0\x63\x1a\x60\xff\0\0\0\0\x= 71\ +\xa9\xd1\xff\0\0\0\0\x73\x7a\x56\xff\0\0\0\0\x71\xa1\xc8\xff\0\0\0\0\x67\x= 01\0\ +\0\x02\0\0\0\x57\x01\0\0\x3c\0\0\0\x7b\x1a\x38\xff\0\0\0\0\xbf\x91\0\0\0\0= \0\0\ +\x57\x01\0\0\xff\0\0\0\x15\x01\x19\0\0\0\0\0\x57\x07\0\0\xff\0\0\0\x55\x07= \x17\ +\0\0\0\0\0\x57\x09\0\0\xff\0\0\0\x15\x09\xc8\x01\x11\0\0\0\x55\x09\x14\0\x= 06\0\ +\0\0\xb7\x01\0\0\x01\0\0\0\x73\x1a\x53\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63= \x1a\ +\xd8\xff\0\0\0\0\x7b\x1a\xd0\xff\0\0\0\0\x7b\x1a\xc8\xff\0\0\0\0\xbf\xa3\0= \0\0\ +\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\x79\xa1\x40\xff\0\0\0\0\x79\xa2\x38\xff= \0\0\ +\0\0\xb7\x04\0\0\x14\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\x67\0= \0\0\ +\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x10\x01\0\0\0\0\x69\xa1\xc8\xff\0\0\0= \0\ +\x6b\x1a\x58\xff\0\0\0\0\x69\xa1\xca\xff\0\0\0\0\x6b\x1a\x5a\xff\0\0\0\0\x= 71\ +\xa1\x50\xff\0\0\0\0\x15\x01\xd9\0\0\0\0\0\x71\x62\x03\0\0\0\0\0\x67\x02\0= \0\ +\x08\0\0\0\x71\x61\x02\0\0\0\0\0\x4f\x12\0\0\0\0\0\0\x71\x63\x04\0\0\0\0\0= \x67\ +\x03\0\0\x10\0\0\0\x71\x61\x05\0\0\0\0\0\x67\x01\0\0\x18\0\0\0\x4f\x31\0\0= \0\0\ +\0\0\x4f\x21\0\0\0\0\0\0\x71\xa2\x53\xff\0\0\0\0\x79\xa0\x30\xff\0\0\0\0\x= 15\ +\x02\xea\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02\0\0\x02\0\0\0\x15\x02\xe7\0= \0\0\ +\0\0\x61\xa1\x5c\xff\0\0\0\0\x63\x1a\xa0\xff\0\0\0\0\x61\xa1\x60\xff\0\0\0= \0\ +\x63\x1a\xa4\xff\0\0\0\0\x69\xa1\x58\xff\0\0\0\0\x6b\x1a\xa8\xff\0\0\0\0\x= 69\ +\xa1\x5a\xff\0\0\0\0\x6b\x1a\xaa\xff\0\0\0\0\x05\0\x2d\x01\0\0\0\0\xb7\x01= \0\0\ +\x01\0\0\0\x73\x1a\x51\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x7b\x1a\xe8\xff\0\0= \0\0\ +\x7b\x1a\xe0\xff\0\0\0\0\x7b\x1a\xd8\xff\0\0\0\0\x7b\x1a\xd0\xff\0\0\0\0\x= 7b\ +\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\xb7\x= 01\0\ +\0\x28\0\0\0\x7b\x1a\x38\xff\0\0\0\0\xbf\x91\0\0\0\0\0\0\xb7\x02\0\0\0\0\0= \0\ +\xb7\x04\0\0\x28\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\x67\0\0\0= \x20\ +\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\xdd\0\0\0\0\0\x79\xa1\xd8\xff\0\0\0\0\x63= \x1a\ +\x64\xff\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x1a\x68\xff\0\0\0\0\x79\xa1\xd0= \xff\ +\0\0\0\0\x63\x1a\x5c\xff\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x1a\x60\xff\0\0= \0\0\ +\x79\xa1\xe0\xff\0\0\0\0\x63\x1a\x6c\xff\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63= \x1a\ +\x70\xff\0\0\0\0\x79\xa1\xe8\xff\0\0\0\0\x63\x1a\x74\xff\0\0\0\0\x77\x01\0= \0\ +\x20\0\0\0\x63\x1a\x78\xff\0\0\0\0\x71\xa9\xce\xff\0\0\0\0\x7b\x7a\x30\xff= \0\0\ +\0\0\x25\x09\x80\x01\x3c\0\0\0\xb7\x01\0\0\x01\0\0\0\x6f\x91\0\0\0\0\0\0\x= 18\ +\x02\0\0\x01\0\0\0\0\0\0\0\0\x18\0\x1c\x5f\x21\0\0\0\0\0\0\x55\x01\x01\0\0= \0\0\ +\0\x05\0\x79\x01\0\0\0\0\xb7\x01\0\0\0\0\0\0\x6b\x1a\xf8\xff\0\0\0\0\xb7\x= 01\0\ +\0\x28\0\0\0\x7b\x1a\x38\xff\0\0\0\0\xbf\xa1\0\0\0\0\0\0\x07\x01\0\0\x8c\x= ff\ +\xff\xff\x7b\x1a\x18\xff\0\0\0\0\xbf\xa1\0\0\0\0\0\0\x07\x01\0\0\x7c\xff\x= ff\ +\xff\x7b\x1a\x10\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x7b\x1a\x28\xff\0\0\0\0\x= 7b\ +\x8a\x20\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xf8\xff\xff\xff\x79\x= a1\ +\x40\xff\0\0\0\0\x79\xa2\x38\xff\0\0\0\0\xb7\x04\0\0\x02\0\0\0\xb7\x05\0\0= \x01\ +\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x= 01\0\ +\0\x20\0\0\0\x55\x01\xa8\0\0\0\0\0\xbf\x91\0\0\0\0\0\0\x15\x01\x24\0\x3c\0= \0\0\ +\x15\x01\x5c\0\x2c\0\0\0\x55\x01\x5d\0\x2b\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x= 1a\ +\xf0\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xf0\xff\xff\xff\x79\xa9\x= 40\ +\xff\0\0\0\0\xbf\x91\0\0\0\0\0\0\x79\xa2\x38\xff\0\0\0\0\xb7\x04\0\0\x04\0= \0\0\ +\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0= \x20\ +\0\0\0\x77\x01\0\0\x20\0\0\0\x55\x01\x81\x01\0\0\0\0\x71\xa1\xf2\xff\0\0\0= \0\ +\x55\x01\x4d\0\x02\0\0\0\x71\xa1\xf1\xff\0\0\0\0\x55\x01\x4b\0\x02\0\0\0\x= 71\ +\xa1\xf3\xff\0\0\0\0\x55\x01\x49\0\x01\0\0\0\x79\xa2\x38\xff\0\0\0\0\x07\x= 02\0\ +\0\x08\0\0\0\xbf\x91\0\0\0\0\0\0\x79\xa3\x18\xff\0\0\0\0\xb7\x04\0\0\x10\0= \0\0\ +\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0= \x20\ +\0\0\0\x77\x01\0\0\x20\0\0\0\x55\x01\x70\x01\0\0\0\0\xb7\x01\0\0\x01\0\0\0= \x73\ +\x1a\x55\xff\0\0\0\0\x05\0\x3b\0\0\0\0\0\xb7\x08\0\0\x02\0\0\0\xb7\x07\0\0= \0\0\ +\0\0\x6b\x7a\xf0\xff\0\0\0\0\x05\0\x12\0\0\0\0\0\x0f\x81\0\0\0\0\0\0\xbf\x= 12\0\ +\0\0\0\0\0\x07\x02\0\0\x01\0\0\0\x71\xa3\xf9\xff\0\0\0\0\x67\x03\0\0\x03\0= \0\0\ +\x3d\x32\x09\0\0\0\0\0\xbf\x72\0\0\0\0\0\0\x07\x02\0\0\x01\0\0\0\x67\x07\0= \0\ +\x20\0\0\0\xbf\x73\0\0\0\0\0\0\x77\x03\0\0\x20\0\0\0\xbf\x27\0\0\0\0\0\0\x= bf\ +\x18\0\0\0\0\0\0\xb7\x01\0\0\x1d\0\0\0\x2d\x31\x03\0\0\0\0\0\x79\xa8\x20\x= ff\0\ +\0\0\0\x79\xa7\x30\xff\0\0\0\0\x05\0\x25\0\0\0\0\0\xbf\x89\0\0\0\0\0\0\x79= \xa1\ +\x38\xff\0\0\0\0\x0f\x19\0\0\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xf0\x= ff\ +\xff\xff\x79\xa1\x40\xff\0\0\0\0\xbf\x92\0\0\0\0\0\0\xb7\x04\0\0\x02\0\0\0= \xb7\ +\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20= \0\0\ +\0\x77\x01\0\0\x20\0\0\0\x55\x01\x5b\0\0\0\0\0\x71\xa2\xf0\xff\0\0\0\0\x55= \x02\ +\x0e\0\xc9\0\0\0\x07\x09\0\0\x02\0\0\0\x79\xa1\x40\xff\0\0\0\0\xbf\x92\0\0= \0\0\ +\0\0\x79\xa3\x10\xff\0\0\0\0\xb7\x04\0\0\x10\0\0\0\xb7\x05\0\0\x01\0\0\0\x= 85\0\ +\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0= \0\0\ +\x55\x01\x4e\0\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73\x1a\x54\xff\0\0\0\0\x05\0= \xdf\ +\xff\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x15\x02\xce\xff\0\0\0\0\x71\xa1\xf1\xff= \0\0\ +\0\0\x07\x01\0\0\x02\0\0\0\x05\0\xcb\xff\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73= \x1a\ +\x56\xff\0\0\0\0\x71\xa1\xf9\xff\0\0\0\0\x67\x01\0\0\x03\0\0\0\x79\xa2\x38= \xff\ +\0\0\0\0\x0f\x12\0\0\0\0\0\0\x07\x02\0\0\x08\0\0\0\x7b\x2a\x38\xff\0\0\0\0= \x71\ +\xa9\xf8\xff\0\0\0\0\x25\x09\x0f\0\x3c\0\0\0\xb7\x01\0\0\x01\0\0\0\x6f\x91= \0\0\ +\0\0\0\0\x18\x02\0\0\x01\0\0\0\0\0\0\0\0\x18\0\x1c\x5f\x21\0\0\0\0\0\0\x55= \x01\ +\x01\0\0\0\0\0\x05\0\x08\0\0\0\0\0\x79\xa1\x28\xff\0\0\0\0\x07\x01\0\0\x01= \0\0\ +\0\x7b\x1a\x28\xff\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\x55= \x01\ +\x7f\xff\x0b\0\0\0\x71\xa7\x56\xff\0\0\0\0\x05\0\x0b\xff\0\0\0\0\x15\x09\x= f7\ +\xff\x87\0\0\0\x05\0\xfc\xff\0\0\0\0\x71\xa1\x51\xff\0\0\0\0\x79\xa0\x30\x= ff\0\ +\0\0\0\x15\x01\x2e\0\0\0\0\0\x71\x62\x03\0\0\0\0\0\x67\x02\0\0\x08\0\0\0\x= 71\ +\x61\x02\0\0\0\0\0\x4f\x12\0\0\0\0\0\0\x71\x63\x04\0\0\0\0\0\x67\x03\0\0\x= 10\0\ +\0\0\x71\x61\x05\0\0\0\0\0\x67\x01\0\0\x18\0\0\0\x4f\x31\0\0\0\0\0\0\x4f\x= 21\0\ +\0\0\0\0\0\x71\xa2\x53\xff\0\0\0\0\x15\x02\x29\0\0\0\0\0\xbf\x12\0\0\0\0\0= \0\ +\x57\x02\0\0\x10\0\0\0\x15\x02\x26\0\0\0\0\0\x71\xa2\x55\xff\0\0\0\0\x71\x= a3\ +\x54\xff\0\0\0\0\xbf\x34\0\0\0\0\0\0\x4f\x24\0\0\0\0\0\0\x57\x01\0\0\x80\0= \0\0\ +\x57\x04\0\0\xff\0\0\0\x15\x04\x30\0\0\0\0\0\x15\x03\x2f\0\0\0\0\0\x15\x01= \x2e\ +\0\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\x7c\xff\xff\xff\x05\0\x2d\0\0\0= \0\0\ +\x71\xa2\x52\xff\0\0\0\0\x15\x02\x04\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02= \0\0\ +\x04\0\0\0\x15\x02\x01\0\0\0\0\0\x05\0\x13\xff\0\0\0\0\x57\x01\0\0\x01\0\0= \0\ +\x15\x01\x0b\0\0\0\0\0\x61\xa1\x5c\xff\0\0\0\0\x63\x1a\xa0\xff\0\0\0\0\x61= \xa1\ +\x60\xff\0\0\0\0\x63\x1a\xa4\xff\0\0\0\0\x05\0\x42\0\0\0\0\0\xb7\x09\0\0\x= 3c\0\ +\0\0\x79\xa8\x20\xff\0\0\0\0\x79\xa7\x30\xff\0\0\0\0\x67\0\0\0\x20\0\0\0\x= 77\0\ +\0\0\x20\0\0\0\x15\0\xcb\xff\0\0\0\0\x71\x61\x08\0\0\0\0\0\x71\x69\x09\0\0= \0\0\ +\0\x67\x09\0\0\x08\0\0\0\x4f\x19\0\0\0\0\0\0\x57\x09\0\0\xff\xff\0\0\xbf\x= 90\0\ +\0\0\0\0\0\x95\0\0\0\0\0\0\0\x71\xa2\x52\xff\0\0\0\0\x15\x02\xaf\0\0\0\0\0= \xbf\ +\x12\0\0\0\0\0\0\x57\x02\0\0\x20\0\0\0\x15\x02\xac\0\0\0\0\0\x71\xa2\x55\x= ff\0\ +\0\0\0\x71\xa3\x54\xff\0\0\0\0\xbf\x34\0\0\0\0\0\0\x4f\x24\0\0\0\0\0\0\x57= \x01\ +\0\0\0\x01\0\0\x57\x04\0\0\xff\0\0\0\x15\x04\xb4\0\0\0\0\0\x15\x03\xb3\0\0= \0\0\ +\0\x15\x01\xb2\0\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\x7c\xff\xff\xff\x= 05\0\ +\xb1\0\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\x5c\xff\xff\xff\xb7\x04\0\0= \x10\ +\0\0\0\xb7\x05\0\0\x10\0\0\0\x15\x01\x01\0\0\0\0\0\xb7\x05\0\0\x30\0\0\0\x= bf\ +\x21\0\0\0\0\0\0\x15\x01\x01\0\0\0\0\0\xbf\x54\0\0\0\0\0\0\xbf\xa1\0\0\0\0= \0\0\ +\x07\x01\0\0\x50\xff\xff\xff\x0f\x41\0\0\0\0\0\0\x61\x32\x04\0\0\0\0\0\x67= \x02\ +\0\0\x20\0\0\0\x61\x34\0\0\0\0\0\0\x4f\x42\0\0\0\0\0\0\x61\x34\x08\0\0\0\0= \0\ +\x61\x33\x0c\0\0\0\0\0\x67\x03\0\0\x20\0\0\0\x4f\x43\0\0\0\0\0\0\x69\xa4\x= 5a\ +\xff\0\0\0\0\x6b\x4a\xc2\xff\0\0\0\0\x69\xa4\x58\xff\0\0\0\0\x6b\x4a\xc0\x= ff\0\ +\0\0\0\x7b\x3a\xa8\xff\0\0\0\0\x7b\x2a\xa0\xff\0\0\0\0\x61\x12\x18\0\0\0\0= \0\ +\x67\x02\0\0\x20\0\0\0\x61\x13\x14\0\0\0\0\0\x4f\x32\0\0\0\0\0\0\x7b\x2a\x= b8\ +\xff\0\0\0\0\x61\x12\x0c\0\0\0\0\0\x61\x11\x10\0\0\0\0\0\x67\x01\0\0\x20\0= \0\0\ +\x4f\x21\0\0\0\0\0\0\x7b\x1a\xb0\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x07\x08\0= \0\ +\x04\0\0\0\x61\x03\0\0\0\0\0\0\xb7\x05\0\0\0\0\0\0\xbf\xa2\0\0\0\0\0\0\x07= \x02\ +\0\0\xa0\xff\xff\xff\x0f\x12\0\0\0\0\0\0\x71\x24\0\0\0\0\0\0\xbf\x42\0\0\0= \0\0\ +\0\x67\x02\0\0\x38\0\0\0\xc7\x02\0\0\x3f\0\0\0\x5f\x32\0\0\0\0\0\0\xaf\x52= \0\0\ +\0\0\0\0\xbf\x85\0\0\0\0\0\0\x0f\x15\0\0\0\0\0\0\x71\x55\0\0\0\0\0\0\x67\x= 03\0\ +\0\x01\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x07\0\0\0\x4f\x03\0\0\0\0\0\0\x= bf\ +\x40\0\0\0\0\0\0\x67\0\0\0\x39\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0= \0\ +\xaf\x02\0\0\0\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x06\0\0\0\x57\0\0\0\x01= \0\0\ +\0\x67\x03\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0\0\0= \x3a\ +\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\x67\x03= \0\0\ +\x01\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x05\0\0\0\x57\0\0\0\x01\0\0\0\x4f= \x03\ +\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3b\0\0\0\xc7\0\0\0\x3f\0\0\0\x= 5f\ +\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\x67\x03\0\0\x01\0\0\0\xbf\x50\0\0\0\0= \0\0\ +\x77\0\0\0\x04\0\0\0\x57\0\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0= \0\0\ +\0\x67\0\0\0\x3c\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0= \0\0\ +\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x03\0\0\0\x57\0\0\0\x01\0\0\0\x67\x03\0= \0\ +\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3d\0\0\0\xc7= \0\0\ +\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\xbf\x50\0\0\0\0\0\0\x= 77\0\ +\0\0\x02\0\0\0\x57\0\0\0\x01\0\0\0\x67\x03\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0= \0\ +\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3e\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0= \0\0\ +\0\xaf\x02\0\0\0\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x01\0\0\0\x57\0\0\0\x= 01\0\ +\0\0\x67\x03\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\x57\x04\0\0\x01\0\0\0\x87\x= 04\0\ +\0\0\0\0\0\x5f\x34\0\0\0\0\0\0\xaf\x42\0\0\0\0\0\0\x57\x05\0\0\x01\0\0\0\x= 67\ +\x03\0\0\x01\0\0\0\x4f\x53\0\0\0\0\0\0\x07\x01\0\0\x01\0\0\0\xbf\x25\0\0\0= \0\0\ +\0\x15\x01\x01\0\x24\0\0\0\x05\0\xa9\xff\0\0\0\0\x71\x61\x06\0\0\0\0\0\x71= \x63\ +\x07\0\0\0\0\0\x67\x03\0\0\x08\0\0\0\x4f\x13\0\0\0\0\0\0\x67\x02\0\0\x20\0= \0\0\ +\x77\x02\0\0\x20\0\0\0\x9f\x32\0\0\0\0\0\0\x63\x2a\x50\xff\0\0\0\0\xbf\xa2= \0\0\ +\0\0\0\0\x07\x02\0\0\x50\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x= 85\0\ +\0\0\x01\0\0\0\x15\0\x5b\xff\0\0\0\0\x69\x09\0\0\0\0\0\0\x05\0\x5d\xff\0\0= \0\0\ +\xb7\x01\0\0\x01\0\0\0\x73\x1a\x52\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x7b\x1a= \xc8\ +\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\x79\xa1\x40\x= ff\0\ +\0\0\0\x79\xa2\x38\xff\0\0\0\0\xb7\x04\0\0\x08\0\0\0\xb7\x05\0\0\x01\0\0\0= \x85\ +\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x4b\xff\0\0= \0\0\ +\x05\0\x3a\xfe\0\0\0\0\x15\x09\x86\xfe\x87\0\0\0\x05\0\x13\xff\0\0\0\0\xbf= \x12\ +\0\0\0\0\0\0\x57\x02\0\0\x08\0\0\0\x15\x02\x45\xff\0\0\0\0\x71\xa2\x55\xff= \0\0\ +\0\0\x71\xa3\x54\xff\0\0\0\0\xbf\x34\0\0\0\0\0\0\x4f\x24\0\0\0\0\0\0\x57\x= 01\0\ +\0\x40\0\0\0\x57\x04\0\0\xff\0\0\0\x15\x04\x0e\0\0\0\0\0\x15\x03\x0d\0\0\0= \0\0\ +\x15\x01\x0c\0\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\x7c\xff\xff\xff\x05= \0\ +\x0b\0\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\x5c\xff\xff\xff\xb7\x04\0\0= \x10\ +\0\0\0\xb7\x05\0\0\x10\0\0\0\x15\x01\x01\0\0\0\0\0\xb7\x05\0\0\x30\0\0\0\x= bf\ +\x21\0\0\0\0\0\0\x15\x01\x52\xff\0\0\0\0\x05\0\x50\xff\0\0\0\0\xbf\xa3\0\0= \0\0\ +\0\0\x07\x03\0\0\x5c\xff\xff\xff\x61\x34\x0c\0\0\0\0\0\x67\x04\0\0\x20\0\0= \0\ +\x61\x35\x08\0\0\0\0\0\x4f\x54\0\0\0\0\0\0\x7b\x4a\xa8\xff\0\0\0\0\x61\x34= \0\0\ +\0\0\0\0\x61\x33\x04\0\0\0\0\0\x67\x03\0\0\x20\0\0\0\x4f\x43\0\0\0\0\0\0\x= 7b\ +\x3a\xa0\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xb0\xff\xff\xff\x15\x= 02\ +\x0b\0\0\0\0\0\x15\x01\x0a\0\0\0\0\0\x61\xa1\x98\xff\0\0\0\0\x63\x13\x0c\0= \0\0\ +\0\0\x61\xa1\x94\xff\0\0\0\0\x63\x13\x08\0\0\0\0\0\x61\xa1\x90\xff\0\0\0\0= \x63\ +\x13\x04\0\0\0\0\0\x61\xa1\x8c\xff\0\0\0\0\x05\0\x09\0\0\0\0\0\xb7\x09\0\0= \x2b\ +\0\0\0\x05\0\x13\xff\0\0\0\0\x61\xa1\x78\xff\0\0\0\0\x63\x13\x0c\0\0\0\0\0= \x61\ +\xa1\x74\xff\0\0\0\0\x63\x13\x08\0\0\0\0\0\x61\xa1\x70\xff\0\0\0\0\x63\x13= \x04\ +\0\0\0\0\0\x61\xa1\x6c\xff\0\0\0\0\x63\x13\0\0\0\0\0\0\x05\0\x49\xff\0\0\0= \0\ +\x47\x50\x4c\x20\x76\x32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9f\xeb\x= 01\0\ +\x18\0\0\0\0\0\0\0\x50\x05\0\0\x50\x05\0\0\xc5\x12\0\0\0\0\0\0\0\0\0\x02\x= 03\0\ +\0\0\x01\0\0\0\0\0\0\x01\x04\0\0\0\x20\0\0\x01\0\0\0\0\0\0\0\x03\0\0\0\0\x= 02\0\ +\0\0\x04\0\0\0\x02\0\0\0\x05\0\0\0\0\0\0\x01\x04\0\0\0\x20\0\0\0\0\0\0\0\0= \0\0\ +\x02\x06\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x04\0\0\0\0\0= \0\0\ +\0\0\0\x02\x08\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x0a\0\0= \0\0\ +\0\0\0\0\0\0\x02\x0a\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\0\0\0\0\x04\0\0\x04\x20\0\0\0\x19\0\0\0\x01\0\0\0\0\0\0\0\x1e\0\0\0\x= 05\0\ +\0\0\x40\0\0\0\x27\0\0\0\x07\0\0\0\x80\0\0\0\x32\0\0\0\x09\0\0\0\xc0\0\0\0= \x3e\ +\0\0\0\0\0\0\x0e\x0b\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x02\x0e\0\0\0\0\0\0\0\0= \0\0\ +\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x28\0\0\0\0\0\0\0\x04\0\0\x04\x20\0\0\0\x= 19\0\ +\0\0\x01\0\0\0\0\0\0\0\x1e\0\0\0\x05\0\0\0\x40\0\0\0\x27\0\0\0\x0d\0\0\0\x= 80\0\ +\0\0\x32\0\0\0\x09\0\0\0\xc0\0\0\0\x59\0\0\0\0\0\0\x0e\x0f\0\0\0\x01\0\0\0= \0\0\ +\0\0\0\0\0\x02\x12\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x80= \0\0\ +\0\0\0\0\0\x04\0\0\x04\x20\0\0\0\x19\0\0\0\x01\0\0\0\0\0\0\0\x1e\0\0\0\x05= \0\0\ +\0\x40\0\0\0\x27\0\0\0\x01\0\0\0\x80\0\0\0\x32\0\0\0\x11\0\0\0\xc0\0\0\0\x= 72\0\ +\0\0\0\0\0\x0e\x13\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x02\x16\0\0\0\x90\0\0\0\x= 25\0\ +\0\x04\xc8\0\0\0\x9a\0\0\0\x17\0\0\0\0\0\0\0\x9e\0\0\0\x17\0\0\0\x20\0\0\0= \xa7\ +\0\0\0\x17\0\0\0\x40\0\0\0\xac\0\0\0\x17\0\0\0\x60\0\0\0\xba\0\0\0\x17\0\0= \0\ +\x80\0\0\0\xc3\0\0\0\x17\0\0\0\xa0\0\0\0\xd0\0\0\0\x17\0\0\0\xc0\0\0\0\xd9= \0\0\ +\0\x17\0\0\0\xe0\0\0\0\xe4\0\0\0\x17\0\0\0\0\x01\0\0\xed\0\0\0\x17\0\0\0\x= 20\ +\x01\0\0\xfd\0\0\0\x17\0\0\0\x40\x01\0\0\x05\x01\0\0\x17\0\0\0\x60\x01\0\0= \x0e\ +\x01\0\0\x19\0\0\0\x80\x01\0\0\x11\x01\0\0\x17\0\0\0\x20\x02\0\0\x16\x01\0= \0\ +\x17\0\0\0\x40\x02\0\0\x21\x01\0\0\x17\0\0\0\x60\x02\0\0\x26\x01\0\0\x17\0= \0\0\ +\x80\x02\0\0\x2f\x01\0\0\x17\0\0\0\xa0\x02\0\0\x37\x01\0\0\x17\0\0\0\xc0\x= 02\0\ +\0\x3e\x01\0\0\x17\0\0\0\xe0\x02\0\0\x49\x01\0\0\x17\0\0\0\0\x03\0\0\x53\x= 01\0\ +\0\x1a\0\0\0\x20\x03\0\0\x5e\x01\0\0\x1a\0\0\0\xa0\x03\0\0\x68\x01\0\0\x17= \0\0\ +\0\x20\x04\0\0\x74\x01\0\0\x17\0\0\0\x40\x04\0\0\x7f\x01\0\0\x17\0\0\0\x60= \x04\ +\0\0\0\0\0\0\x1b\0\0\0\x80\x04\0\0\x89\x01\0\0\x1d\0\0\0\xc0\x04\0\0\x90\x= 01\0\ +\0\x17\0\0\0\0\x05\0\0\x99\x01\0\0\x17\0\0\0\x20\x05\0\0\0\0\0\0\x1f\0\0\0= \x40\ +\x05\0\0\xa2\x01\0\0\x17\0\0\0\x80\x05\0\0\xab\x01\0\0\x21\0\0\0\xa0\x05\0= \0\ +\xb7\x01\0\0\x1d\0\0\0\xc0\x05\0\0\xc0\x01\0\0\x17\0\0\0\0\x06\0\0\xd0\x01= \0\0\ +\x23\0\0\0\x20\x06\0\0\xe1\x01\0\0\x23\0\0\0\x30\x06\0\0\xf0\x01\0\0\0\0\0= \x08\ +\x18\0\0\0\xf6\x01\0\0\0\0\0\x01\x04\0\0\0\x20\0\0\0\0\0\0\0\0\0\0\x03\0\0= \0\0\ +\x17\0\0\0\x04\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x17\0\0\0\x04\0\0= \0\ +\x04\0\0\0\0\0\0\0\x01\0\0\x05\x08\0\0\0\x03\x02\0\0\x1c\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\x02\x2c\0\0\0\x0d\x02\0\0\0\0\0\x08\x1e\0\0\0\x13\x02\0\0\0\0\0\x01= \x08\ +\0\0\0\x40\0\0\0\0\0\0\0\x01\0\0\x05\x08\0\0\0\x26\x02\0\0\x20\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\x02\x2d\0\0\0\x29\x02\0\0\0\0\0\x08\x22\0\0\0\x2e\x02\0\0\0\0= \0\ +\x01\x01\0\0\0\x08\0\0\0\x3c\x02\0\0\0\0\0\x08\x24\0\0\0\x42\x02\0\0\0\0\0= \x01\ +\x02\0\0\0\x10\0\0\0\0\0\0\0\x01\0\0\x0d\x02\0\0\0\x51\x02\0\0\x15\0\0\0\x= 55\ +\x02\0\0\x01\0\0\x0c\x25\0\0\0\x92\x12\0\0\0\0\0\x01\x01\0\0\0\x08\0\0\x01= \0\0\ +\0\0\0\0\0\x03\0\0\0\0\x27\0\0\0\x04\0\0\0\x07\0\0\0\x97\x12\0\0\0\0\0\x0e= \x28\ +\0\0\0\x01\0\0\0\xa0\x12\0\0\x03\0\0\x0f\0\0\0\0\x0c\0\0\0\0\0\0\0\x20\0\0= \0\ +\x10\0\0\0\0\0\0\0\x20\0\0\0\x14\0\0\0\0\0\0\0\x20\0\0\0\xa6\x12\0\0\x01\0= \0\ +\x0f\0\0\0\0\x29\0\0\0\0\0\0\0\x07\0\0\0\xae\x12\0\0\0\0\0\x07\0\0\0\0\xbc= \x12\ +\0\0\0\0\0\x07\0\0\0\0\0\x69\x6e\x74\0\x5f\x5f\x41\x52\x52\x41\x59\x5f\x53= \x49\ +\x5a\x45\x5f\x54\x59\x50\x45\x5f\x5f\0\x74\x79\x70\x65\0\x6b\x65\x79\x5f\x= 73\ +\x69\x7a\x65\0\x76\x61\x6c\x75\x65\x5f\x73\x69\x7a\x65\0\x6d\x61\x78\x5f\x= 65\ +\x6e\x74\x72\x69\x65\x73\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f= \x63\ +\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x73\0\x74\x61\x70\x5f\x72= \x73\ +\x73\x5f\x6d\x61\x70\x5f\x74\x6f\x65\x70\x6c\x69\x74\x7a\x5f\x6b\x65\x79\0= \x74\ +\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x69\x6e\x64\x69\x72\x65\x63\x= 74\ +\x69\x6f\x6e\x5f\x74\x61\x62\x6c\x65\0\x5f\x5f\x73\x6b\x5f\x62\x75\x66\x66= \0\ +\x6c\x65\x6e\0\x70\x6b\x74\x5f\x74\x79\x70\x65\0\x6d\x61\x72\x6b\0\x71\x75= \x65\ +\x75\x65\x5f\x6d\x61\x70\x70\x69\x6e\x67\0\x70\x72\x6f\x74\x6f\x63\x6f\x6c= \0\ +\x76\x6c\x61\x6e\x5f\x70\x72\x65\x73\x65\x6e\x74\0\x76\x6c\x61\x6e\x5f\x74= \x63\ +\x69\0\x76\x6c\x61\x6e\x5f\x70\x72\x6f\x74\x6f\0\x70\x72\x69\x6f\x72\x69\x= 74\ +\x79\0\x69\x6e\x67\x72\x65\x73\x73\x5f\x69\x66\x69\x6e\x64\x65\x78\0\x69\x= 66\ +\x69\x6e\x64\x65\x78\0\x74\x63\x5f\x69\x6e\x64\x65\x78\0\x63\x62\0\x68\x61= \x73\ +\x68\0\x74\x63\x5f\x63\x6c\x61\x73\x73\x69\x64\0\x64\x61\x74\x61\0\x64\x61= \x74\ +\x61\x5f\x65\x6e\x64\0\x6e\x61\x70\x69\x5f\x69\x64\0\x66\x61\x6d\x69\x6c\x= 79\0\ +\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x34\0\x6c\x6f\x63\x61\x6c\x5f\x69\x70= \x34\ +\0\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x36\0\x6c\x6f\x63\x61\x6c\x5f\x69\x= 70\ +\x36\0\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\0\x6c\x6f\x63\x61\x6c\x= 5f\ +\x70\x6f\x72\x74\0\x64\x61\x74\x61\x5f\x6d\x65\x74\x61\0\x74\x73\x74\x61\x= 6d\ +\x70\0\x77\x69\x72\x65\x5f\x6c\x65\x6e\0\x67\x73\x6f\x5f\x73\x65\x67\x73\0= \x67\ +\x73\x6f\x5f\x73\x69\x7a\x65\0\x74\x73\x74\x61\x6d\x70\x5f\x74\x79\x70\x65= \0\ +\x68\x77\x74\x73\x74\x61\x6d\x70\0\x76\x6e\x65\x74\x5f\x68\x61\x73\x68\x5f= \x76\ +\x61\x6c\x75\x65\0\x76\x6e\x65\x74\x5f\x68\x61\x73\x68\x5f\x72\x65\x70\x6f= \x72\ +\x74\0\x76\x6e\x65\x74\x5f\x72\x73\x73\x5f\x71\x75\x65\x75\x65\0\x5f\x5f\x= 75\ +\x33\x32\0\x75\x6e\x73\x69\x67\x6e\x65\x64\x20\x69\x6e\x74\0\x66\x6c\x6f\x= 77\ +\x5f\x6b\x65\x79\x73\0\x5f\x5f\x75\x36\x34\0\x75\x6e\x73\x69\x67\x6e\x65\x= 64\ +\x20\x6c\x6f\x6e\x67\x20\x6c\x6f\x6e\x67\0\x73\x6b\0\x5f\x5f\x75\x38\0\x75= \x6e\ +\x73\x69\x67\x6e\x65\x64\x20\x63\x68\x61\x72\0\x5f\x5f\x75\x31\x36\0\x75\x= 6e\ +\x73\x69\x67\x6e\x65\x64\x20\x73\x68\x6f\x72\x74\0\x73\x6b\x62\0\x74\x75\x= 6e\ +\x5f\x72\x73\x73\x5f\x73\x74\x65\x65\x72\x69\x6e\x67\x5f\x70\x72\x6f\x67\0= \x73\ +\x6f\x63\x6b\x65\x74\0\x2f\x68\x6f\x6d\x65\x2f\x61\x6c\x61\x72\x6d\x2f\x71= \x2f\ +\x76\x61\x72\x2f\x71\x65\x6d\x75\x2f\x74\x6f\x6f\x6c\x73\x2f\x65\x62\x70\x= 66\ +\x2f\x73\x6f\x63\x6b\x65\x74\x2e\x62\x70\x66\x2e\x63\0\x69\x6e\x74\x20\x74= \x75\ +\x6e\x5f\x72\x73\x73\x5f\x73\x74\x65\x65\x72\x69\x6e\x67\x5f\x70\x72\x6f\x= 67\ +\x28\x73\x74\x72\x75\x63\x74\x20\x5f\x5f\x73\x6b\x5f\x62\x75\x66\x66\x20\x= 2a\ +\x73\x6b\x62\x29\0\x2f\x68\x6f\x6d\x65\x2f\x61\x6c\x61\x72\x6d\x2f\x71\x2f= \x76\ +\x61\x72\x2f\x71\x65\x6d\x75\x2f\x74\x6f\x6f\x6c\x73\x2f\x65\x62\x70\x66\x= 2f\ +\x2e\x2f\x72\x73\x73\x2e\x62\x70\x66\x2e\x68\0\x20\x20\x20\x20\x5f\x5f\x75= \x33\ +\x32\x20\x6b\x65\x79\x20\x3d\x20\x30\x3b\0\x20\x20\x20\x20\x63\x6f\x6e\x66= \x69\ +\x67\x20\x3d\x20\x62\x70\x66\x5f\x6d\x61\x70\x5f\x6c\x6f\x6f\x6b\x75\x70\x= 5f\ +\x65\x6c\x65\x6d\x28\x26\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x= 63\ +\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x73\x2c\x20\x26\x6b\x65\x= 79\ +\x29\x3b\0\x20\x20\x20\x20\x74\x6f\x65\x20\x3d\x20\x62\x70\x66\x5f\x6d\x61= \x70\ +\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x65\x6c\x65\x6d\x28\x26\x74\x61\x70\x5f\x= 72\ +\x73\x73\x5f\x6d\x61\x70\x5f\x74\x6f\x65\x70\x6c\x69\x74\x7a\x5f\x6b\x65\x= 79\ +\x2c\x20\x26\x6b\x65\x79\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x21\x63= \x6f\ +\x6e\x66\x69\x67\x20\x7c\x7c\x20\x21\x74\x6f\x65\x29\x20\x7b\0\x20\x20\x20= \x20\ +\x69\x66\x20\x28\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x72\x65\x64\x69\x72\x65\x= 63\ +\x74\x20\x26\x26\0\x20\x20\x20\x20\x5f\x5f\x75\x38\x20\x72\x73\x73\x5f\x69= \x6e\ +\x70\x75\x74\x5b\x48\x41\x53\x48\x5f\x43\x41\x4c\x43\x55\x4c\x41\x54\x49\x= 4f\ +\x4e\x5f\x42\x55\x46\x46\x45\x52\x5f\x53\x49\x5a\x45\x5d\x20\x3d\x20\x7b\x= 7d\ +\x3b\0\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x70\x61\x63\x6b\x65\x74= \x5f\ +\x68\x61\x73\x68\x5f\x69\x6e\x66\x6f\x5f\x74\x20\x70\x61\x63\x6b\x65\x74\x= 5f\ +\x69\x6e\x66\x6f\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28= \x21\ +\x69\x6e\x66\x6f\x20\x7c\x7c\x20\x21\x73\x6b\x62\x29\x20\x7b\0\x20\x20\x20= \x20\ +\x5f\x5f\x62\x65\x31\x36\x20\x72\x65\x74\x20\x3d\x20\x30\x3b\0\x20\x20\x20= \x20\ +\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x= 5f\ +\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x= 2c\ +\x20\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x72\x65\x74\x2c\x20\x73\x69\x7a\x= 65\ +\x6f\x66\x28\x72\x65\x74\x29\x2c\0\x20\x20\x20\x20\x69\x66\x20\x28\x65\x72= \x72\ +\x29\x20\x7b\0\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68\x20\x28\x62\x70\x66= \x5f\ +\x6e\x74\x6f\x68\x73\x28\x72\x65\x74\x29\x29\x20\x7b\0\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x= 61\ +\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x= 6b\ +\x62\x2c\x20\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x72\x65\x74\x2c\x20\x73\x= 69\ +\x7a\x65\x6f\x66\x28\x72\x65\x74\x29\x2c\0\x20\x20\x20\x20\x72\x65\x74\x75= \x72\ +\x6e\x20\x72\x65\x74\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x6c\x33\x5f\x70= \x72\ +\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x3d\x20\x30\x29\x20\x7b\0\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x69\x70\x76\x34\x20\x3d\x= 20\ +\x31\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x69= \x70\ +\x68\x64\x72\x20\x69\x70\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x= 64\ +\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x= 62\ +\x2c\x20\x30\x2c\x20\x26\x69\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x69\x= 70\ +\x29\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x72\x72\x29= \x20\ +\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f= \x66\ +\x72\x61\x67\x6d\x65\x6e\x74\x65\x64\x20\x3d\x20\x21\x21\x69\x70\x2e\x66\x= 72\ +\x61\x67\x5f\x6f\x66\x66\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66= \x6f\ +\x2d\x3e\x69\x6e\x5f\x73\x72\x63\x20\x3d\x20\x69\x70\x2e\x73\x61\x64\x64\x= 72\ +\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x6e\x5f= \x64\ +\x73\x74\x20\x3d\x20\x69\x70\x2e\x64\x61\x64\x64\x72\x3b\0\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x20\x69\x= 70\ +\x2e\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20= \x6c\ +\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x3d\x20\x69\x70\x2e\x69\x68\x6c\x20\x= 2a\ +\x20\x34\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x6c\x34\x5f\x70\x72\x6f\x74= \x6f\ +\x63\x6f\x6c\x20\x21\x3d\x20\x30\x20\x26\x26\x20\x21\x69\x6e\x66\x6f\x2d\x= 3e\ +\x69\x73\x5f\x66\x72\x61\x67\x6d\x65\x6e\x74\x65\x64\x29\x20\x7b\0\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63\x= 6f\ +\x6c\x20\x3d\x3d\x20\x49\x50\x50\x52\x4f\x54\x4f\x5f\x54\x43\x50\x29\x20\x= 7b\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x= 69\ +\x73\x5f\x74\x63\x70\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x74\x63\x70\x68\x64\x72\x20\x74\x= 63\ +\x70\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x= 5f\ +\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x= 2c\ +\x20\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x74\x63\x70\x2c\x20\x= 73\ +\x69\x7a\x65\x6f\x66\x28\x74\x63\x70\x29\x2c\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x69\x66\x20\x28\x65\x72\x72\x29\x20\x7b\0\x20\x20\x20\x20= \x69\ +\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x= 69\ +\x70\x76\x34\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28= \x70\ +\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x74\x63\x70\x20\x= 26\ +\x26\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f= \x69\ +\x70\x76\x36\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74= \x72\ +\x75\x63\x74\x20\x69\x70\x76\x36\x68\x64\x72\x20\x69\x70\x36\x20\x3d\x20\x= 7b\ +\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70= \x66\ +\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x= 6c\ +\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x30\x2c\x20\x26\x69\x70\x36\x= 2c\ +\x20\x73\x69\x7a\x65\x6f\x66\x28\x69\x70\x36\x29\x2c\0\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x6e\x36\x5f\x73\x72\x63\x20\x3d\x20\x= 69\ +\x70\x36\x2e\x73\x61\x64\x64\x72\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69= \x6e\ +\x66\x6f\x2d\x3e\x69\x6e\x36\x5f\x64\x73\x74\x20\x3d\x20\x69\x70\x36\x2e\x= 64\ +\x61\x64\x64\x72\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x34\x5f\x70\x72= \x6f\ +\x74\x6f\x63\x6f\x6c\x20\x3d\x20\x69\x70\x36\x2e\x6e\x65\x78\x74\x68\x64\x= 72\ +\x3b\0\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68\x20\x28\x68\x64\x72\x5f\x74= \x79\ +\x70\x65\x29\x20\x7b\0\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x69\x70= \x76\ +\x36\x5f\x6f\x70\x74\x5f\x68\x64\x72\x20\x65\x78\x74\x5f\x68\x64\x72\x20\x= 3d\ +\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20= \x62\ +\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x= 72\ +\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x2a\x6c\x34\x5f\x6f\x= 66\ +\x66\x73\x65\x74\x2c\x20\x26\x65\x78\x74\x5f\x68\x64\x72\x2c\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x69\x66\x20\x28\x2a\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63\x= 6f\ +\x6c\x20\x3d\x3d\x20\x49\x50\x50\x52\x4f\x54\x4f\x5f\x52\x4f\x55\x54\x49\x= 4e\ +\x47\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74= \x72\ +\x75\x63\x74\x20\x69\x70\x76\x36\x5f\x72\x74\x5f\x68\x64\x72\x20\x65\x78\x= 74\ +\x5f\x72\x74\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x= 61\ +\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x= 6b\ +\x62\x2c\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x65\x78\x= 74\ +\x5f\x72\x74\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66= \x20\ +\x28\x28\x65\x78\x74\x5f\x72\x74\x2e\x74\x79\x70\x65\x20\x3d\x3d\x20\x49\x= 50\ +\x56\x36\x5f\x53\x52\x43\x52\x54\x5f\x54\x59\x50\x45\x5f\x32\x29\x20\x26\x= 26\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 20\ +\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x20\x6f\x66\x66\x73\x= 65\ +\x74\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x72\x74\x32\x5f\x68\x64\x72\x= 2c\ +\x20\x61\x64\x64\x72\x29\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x= 6c\ +\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x= 28\ +\x73\x6b\x62\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x69\x66\x20\x28\x65\x72\x72\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x69\x= 70\ +\x76\x36\x5f\x65\x78\x74\x5f\x64\x73\x74\x20\x3d\x20\x31\x3b\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x20\x5f\x5f\x61\x74\x74\x72\x69\x62\x= 75\ +\x74\x65\x5f\x5f\x28\x28\x70\x61\x63\x6b\x65\x64\x29\x29\x20\x6f\x70\x74\x= 20\ +\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x6f\x70\x74\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x3d\x20\x28\x6f\x= 70\ +\x74\x2e\x74\x79\x70\x65\x20\x3d\x3d\x20\x49\x50\x56\x36\x5f\x54\x4c\x56\x= 5f\ +\x50\x41\x44\x31\x29\x20\x3f\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x69\x66\x20\x28\x6f\x70\x74\x5f\x6f\x66\x66\x73\x65\x74\x= 20\ +\x2b\x20\x31\x20\x3e\x3d\x20\x65\x78\x74\x5f\x68\x64\x72\x2e\x68\x64\x72\x= 6c\ +\x65\x6e\x20\x2a\x20\x38\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x= 62\ +\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x= 76\ +\x65\x28\x73\x6b\x62\x2c\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x= 2b\ +\x20\x6f\x70\x74\x5f\x6f\x66\x66\x73\x65\x74\x2c\0\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6f\x70\x74\x2e\x74\x= 79\ +\x70\x65\x20\x3d\x3d\x20\x49\x50\x56\x36\x5f\x54\x4c\x56\x5f\x48\x41\x4f\x= 29\ +\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x= 2b\ +\x20\x6f\x70\x74\x5f\x6f\x66\x66\x73\x65\x74\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x= 62\ +\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x= 72\ +\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\0\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x= 72\ +\x72\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x69\x70\x76\x36\x= 5f\ +\x65\x78\x74\x5f\x73\x72\x63\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x66\x72\x61\x67\x= 6d\ +\x65\x6e\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x3b\0\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x3d\x20\x28\x65\x= 78\ +\x74\x5f\x68\x64\x72\x2e\x68\x64\x72\x6c\x65\x6e\x20\x2b\x20\x31\x29\x20\x= 2a\ +\x20\x38\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x2a\x6c\x34\x5f\x70\x72\x6f= \x74\ +\x6f\x63\x6f\x6c\x20\x3d\x20\x65\x78\x74\x5f\x68\x64\x72\x2e\x6e\x65\x78\x= 74\ +\x68\x64\x72\x3b\0\x20\x20\x20\x20\x66\x6f\x72\x20\x28\x75\x6e\x73\x69\x67= \x6e\ +\x65\x64\x20\x69\x6e\x74\x20\x69\x20\x3d\x20\x30\x3b\x20\x69\x20\x3c\x20\x= 49\ +\x50\x36\x5f\x45\x58\x54\x45\x4e\x53\x49\x4f\x4e\x53\x5f\x43\x4f\x55\x4e\x= 54\ +\x3b\x20\x2b\x2b\x69\x29\x20\x7b\0\x20\x20\x20\x20\x7d\x20\x65\x6c\x73\x65= \x20\ +\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x= 5f\ +\x69\x70\x76\x36\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x2a\x72\x65\x70\x6f\x72\x74\x20\x3d\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x= 69\ +\x6e\x66\x6f\x2e\x69\x73\x5f\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x73\x72\x= 63\ +\x20\x7c\x7c\x20\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x= 5f\ +\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x64\x73\x74\x29\x20\x26\x26\0\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x= 74\ +\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x= 73\ +\x72\x63\x20\x26\x26\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 20\ +\x20\x20\x20\x20\x26\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x= 6e\ +\x36\x5f\x65\x78\x74\x5f\x73\x72\x63\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20= \x7d\ +\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x= 6e\ +\x66\x6f\x2e\x69\x73\x5f\x75\x64\x70\x20\x26\x26\0\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x7d\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x63\x6f\x6e\x66\x69\x67\x= 2d\ +\x3e\x68\x61\x73\x68\x5f\x74\x79\x70\x65\x73\x20\x26\x20\x56\x49\x52\x54\x= 49\ +\x4f\x5f\x4e\x45\x54\x5f\x52\x53\x53\x5f\x48\x41\x53\x48\x5f\x54\x59\x50\x= 45\ +\x5f\x49\x50\x76\x34\x29\x20\x7b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c= \x74\ +\x69\x6e\x5f\x6d\x65\x6d\x63\x70\x79\x28\x26\x72\x73\x73\x5f\x69\x6e\x70\x= 75\ +\x74\x5b\x2a\x62\x79\x74\x65\x73\x5f\x77\x72\x69\x74\x74\x65\x6e\x5d\x2c\x= 20\ +\x70\x74\x72\x2c\x20\x73\x69\x7a\x65\x29\x3b\0\x20\x20\x20\x20\x2a\x72\x73= \x73\ +\x5f\x71\x75\x65\x75\x65\x20\x3d\x20\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x64\x= 65\ +\x66\x61\x75\x6c\x74\x5f\x71\x75\x65\x75\x65\x3b\0\x20\x20\x20\x20\x72\x65= \x74\ +\x75\x72\x6e\x20\x72\x73\x73\x5f\x71\x75\x65\x75\x65\x3b\0\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x26\x70\x61\x63\x6b\x= 65\ +\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x6e\x36\x5f\x73\x72\x63\x2c\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x= 5f\ +\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x64\x= 73\ +\x74\x20\x26\x26\0\x20\x20\x20\x20\x66\x6f\x72\x20\x28\x62\x79\x74\x65\x20= \x3d\ +\x20\x30\x3b\x20\x62\x79\x74\x65\x20\x3c\x20\x48\x41\x53\x48\x5f\x43\x41\x= 4c\ +\x43\x55\x4c\x41\x54\x49\x4f\x4e\x5f\x42\x55\x46\x46\x45\x52\x5f\x53\x49\x= 5a\ +\x45\x3b\x20\x62\x79\x74\x65\x2b\x2b\x29\x20\x7b\0\x20\x20\x20\x20\x5f\x5f= \x75\ +\x33\x32\x20\x6c\x65\x66\x74\x6d\x6f\x73\x74\x5f\x33\x32\x5f\x62\x69\x74\x= 73\ +\x20\x3d\x20\x6b\x65\x79\x2d\x3e\x6c\x65\x66\x74\x6d\x6f\x73\x74\x5f\x33\x= 32\ +\x5f\x62\x69\x74\x73\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x75\x38= \x20\ +\x69\x6e\x70\x75\x74\x5f\x62\x79\x74\x65\x20\x3d\x20\x69\x6e\x70\x75\x74\x= 5b\ +\x62\x79\x74\x65\x5d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x69\ +\x66\x20\x28\x69\x6e\x70\x75\x74\x5f\x62\x79\x74\x65\x20\x26\x20\x28\x31\x= 20\ +\x3c\x3c\x20\x37\x29\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f= \x75\ +\x38\x20\x6b\x65\x79\x5f\x62\x79\x74\x65\x20\x3d\x20\x6b\x65\x79\x2d\x3e\x= 6e\ +\x65\x78\x74\x5f\x62\x79\x74\x65\x5b\x62\x79\x74\x65\x5d\x3b\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6c\x= 65\ +\x66\x74\x6d\x6f\x73\x74\x5f\x33\x32\x5f\x62\x69\x74\x73\x20\x3c\x3c\x20\x= 31\ +\x29\x20\x7c\x20\x28\x28\x6b\x65\x79\x5f\x62\x79\x74\x65\x20\x26\x20\x28\x= 31\ +\x20\x3c\x3c\x20\x37\x29\x29\x20\x3e\x3e\x20\x37\x29\x3b\0\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x5f\x5f\x75\x33\x32\x20\x74\x61\x62\x6c\x65\x5f\x69\x64\x78\x= 20\ +\x3d\x20\x2a\x68\x61\x73\x68\x5f\x76\x61\x6c\x75\x65\x20\x25\x20\x63\x6f\x= 6e\ +\x66\x69\x67\x2d\x3e\x69\x6e\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x5f\x= 6c\ +\x65\x6e\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x71\x75\x65\x75\x65\x20\x3d= \x20\ +\x62\x70\x66\x5f\x6d\x61\x70\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x65\x6c\x65\x= 6d\ +\x28\x26\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x69\x6e\x64\x69\x= 72\ +\x65\x63\x74\x69\x6f\x6e\x5f\x74\x61\x62\x6c\x65\x2c\0\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x69\x66\x20\x28\x71\x75\x65\x75\x65\x29\x20\x7b\0\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x2a\x72\x73\x73\x5f\x71\x75\x65\x75\x65\x20\x= 3d\ +\x20\x2a\x71\x75\x65\x75\x65\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x75\x64\x70\x20\x3d\x20\x31\x3b\0= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x= 75\ +\x64\x70\x68\x64\x72\x20\x75\x64\x70\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x= 73\ +\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x= 74\ +\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x= 2c\ +\x20\x26\x75\x64\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x75\x64\x70\x29\x= 2c\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x= 28\ +\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x68\x61\x73\x68\x5f\x74\x79\x70\x65\x73\x= 20\ +\x26\x20\x56\x49\x52\x54\x49\x4f\x5f\x4e\x45\x54\x5f\x52\x53\x53\x5f\x48\x= 41\ +\x53\x48\x5f\x54\x59\x50\x45\x5f\x49\x50\x76\x36\x29\x20\x7b\0\x63\x68\x61= \x72\ +\0\x5f\x6c\x69\x63\x65\x6e\x73\x65\0\x2e\x6d\x61\x70\x73\0\x6c\x69\x63\x65= \x6e\ +\x73\x65\0\x62\x70\x66\x5f\x66\x6c\x6f\x77\x5f\x6b\x65\x79\x73\0\x62\x70\x= 66\ +\x5f\x73\x6f\x63\x6b\0\0\0\0\x9f\xeb\x01\0\x20\0\0\0\0\0\0\0\x14\0\0\0\x14= \0\0\ +\0\x0c\x0d\0\0\x20\x0d\0\0\0\0\0\0\x08\0\0\0\x6b\x02\0\0\x01\0\0\0\0\0\0\0= \x26\ +\0\0\0\x10\0\0\0\x6b\x02\0\0\xd0\0\0\0\0\0\0\0\x72\x02\0\0\xa1\x02\0\0\0\x= 5c\0\ +\0\x10\0\0\0\xd2\x02\0\0\0\x03\0\0\x0b\x8c\x08\0\x20\0\0\0\x72\x02\0\0\0\0= \0\0\ +\0\0\0\0\x28\0\0\0\xd2\x02\0\0\x13\x03\0\0\x0e\x94\x08\0\x50\0\0\0\xd2\x02= \0\0\ +\x58\x03\0\0\x0b\x98\x08\0\x78\0\0\0\xd2\x02\0\0\x98\x03\0\0\x11\xa0\x08\0= \x80\ +\0\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\x88\0\0\0\xd2\x02\0\0\x98\x03\0\0\x11\x= a0\ +\x08\0\x90\0\0\0\xd2\x02\0\0\xb3\x03\0\0\x11\xb0\x08\0\x98\0\0\0\xd2\x02\0= \0\ +\xb3\x03\0\0\x1a\xb0\x08\0\xa8\0\0\0\xd2\x02\0\0\xcf\x03\0\0\x0a\xf0\x05\0= \xd0\ +\0\0\0\xd2\x02\0\0\x06\x04\0\0\x1f\xfc\x05\0\x28\x01\0\0\xd2\x02\0\0\x36\x= 04\0\ +\0\x0f\x88\x04\0\x30\x01\0\0\xd2\x02\0\0\x4f\x04\0\0\x0c\x08\x04\0\x40\x01= \0\0\ +\xd2\x02\0\0\0\0\0\0\0\0\0\0\x48\x01\0\0\xd2\x02\0\0\x63\x04\0\0\x0b\x14\x= 04\0\ +\x70\x01\0\0\xd2\x02\0\0\xa9\x04\0\0\x09\x1c\x04\0\x80\x01\0\0\xd2\x02\0\0= \xa9\ +\x04\0\0\x09\x1c\x04\0\x90\x01\0\0\xd2\x02\0\0\xb8\x04\0\0\x0d\x2c\x04\0\x= a8\ +\x01\0\0\xd2\x02\0\0\xb8\x04\0\0\x05\x2c\x04\0\xc8\x01\0\0\xd2\x02\0\0\0\0= \0\0\ +\0\0\0\0\xd0\x01\0\0\xd2\x02\0\0\xd6\x04\0\0\x0f\x40\x04\0\xf0\x01\0\0\xd2= \x02\ +\0\0\xa9\x04\0\0\x09\x58\x04\0\0\x02\0\0\xd2\x02\0\0\xa9\x04\0\0\x09\x58\x= 04\0\ +\x08\x02\0\0\xd2\x02\0\0\x20\x05\0\0\x0c\x68\x04\0\x10\x02\0\0\xd2\x02\0\0= \x30\ +\x05\0\0\x09\xa4\x04\0\x38\x02\0\0\xd2\x02\0\0\x4c\x05\0\0\x17\xbc\x04\0\x= 48\ +\x02\0\0\xd2\x02\0\0\x67\x05\0\0\x16\xc4\x04\0\x68\x02\0\0\xd2\x02\0\0\x4c= \x05\ +\0\0\x17\xbc\x04\0\x70\x02\0\0\xd2\x02\0\0\x85\x05\0\0\x0f\xc8\x04\0\x98\x= 02\0\ +\0\xd2\x02\0\0\xc8\x05\0\0\x0d\xd0\x04\0\xa8\x02\0\0\xd2\x02\0\0\xc8\x05\0= \0\ +\x0d\xd0\x04\0\xb0\x02\0\0\xd2\x02\0\0\xdb\x05\0\0\x24\xe8\x04\0\xb8\x02\0= \0\ +\xd2\x02\0\0\xdb\x05\0\0\x20\xe8\x04\0\xc8\x02\0\0\xd2\x02\0\0\x08\x06\0\0= \x1b\ +\xe0\x04\0\xd0\x02\0\0\xd2\x02\0\0\x08\x06\0\0\x16\xe0\x04\0\xd8\x02\0\0\x= d2\ +\x02\0\0\x29\x06\0\0\x1b\xe4\x04\0\xe0\x02\0\0\xd2\x02\0\0\x29\x06\0\0\x16= \xe4\ +\x04\0\xe8\x02\0\0\xd2\x02\0\0\x4a\x06\0\0\x1a\xf0\x04\0\xf0\x02\0\0\xd2\x= 02\0\ +\0\xdb\x05\0\0\x1d\xe8\x04\0\xf8\x02\0\0\xd2\x02\0\0\x6d\x06\0\0\x18\xf4\x= 04\0\ +\0\x03\0\0\xd2\x02\0\0\x6d\x06\0\0\x1c\xf4\x04\0\x18\x03\0\0\xd2\x02\0\0\x= 8d\ +\x06\0\0\x15\x50\x05\0\x28\x03\0\0\xd2\x02\0\0\x8d\x06\0\0\x1a\x50\x05\0\x= 40\ +\x03\0\0\xd2\x02\0\0\xc1\x06\0\0\x0d\x54\x05\0\x60\x03\0\0\xd2\x02\0\0\xeb= \x06\ +\0\0\x1a\x58\x05\0\x70\x03\0\0\xd2\x02\0\0\x09\x07\0\0\x1b\x60\x05\0\x90\x= 03\0\ +\0\xd2\x02\0\0\xeb\x06\0\0\x1a\x58\x05\0\x98\x03\0\0\xd2\x02\0\0\x2d\x07\0= \0\ +\x13\x64\x05\0\xc0\x03\0\0\xd2\x02\0\0\x7e\x07\0\0\x11\x6c\x05\0\xd0\x03\0= \0\ +\xd2\x02\0\0\x7e\x07\0\0\x11\x6c\x05\0\xd8\x03\0\0\xd2\x02\0\0\0\0\0\0\0\0= \0\0\ +\xf8\x03\0\0\xd2\x02\0\0\x95\x07\0\0\x15\x18\x06\0\0\x04\0\0\xd2\x02\0\0\x= 95\ +\x07\0\0\x09\x18\x06\0\x08\x04\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\x58\x04\0\0= \xd2\ +\x02\0\0\xb4\x07\0\0\x19\x1c\x06\0\x68\x04\0\0\xd2\x02\0\0\xb4\x07\0\0\x20= \x1c\ +\x06\0\x88\x04\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\xd8\x04\0\0\xd2\x02\0\0\xd6= \x07\ +\0\0\x17\xfc\x04\0\xe8\x04\0\0\xd2\x02\0\0\xf1\x07\0\0\x18\x04\x05\0\x18\x= 05\0\ +\0\xd2\x02\0\0\xd6\x07\0\0\x17\xfc\x04\0\x28\x05\0\0\xd2\x02\0\0\x12\x08\0= \0\ +\x0f\x08\x05\0\x58\x05\0\0\xd2\x02\0\0\xc8\x05\0\0\x0d\x10\x05\0\x68\x05\0= \0\ +\xd2\x02\0\0\xc8\x05\0\0\x0d\x10\x05\0\x70\x05\0\0\xd2\x02\0\0\x57\x08\0\0= \x1d\ +\x20\x05\0\xb0\x05\0\0\xd2\x02\0\0\x7a\x08\0\0\x1d\x24\x05\0\xf0\x05\0\0\x= d2\ +\x02\0\0\x9d\x08\0\0\x1b\x2c\x05\0\xf8\x05\0\0\xd2\x02\0\0\xc0\x08\0\0\x05= \x18\ +\x02\0\x48\x06\0\0\xd2\x02\0\0\xd8\x08\0\0\x19\xa0\x02\0\xb0\x06\0\0\xd2\x= 02\0\ +\0\0\0\0\0\0\0\0\0\xb8\x06\0\0\xd2\x02\0\0\xfe\x08\0\0\x0f\xb0\x02\0\xe0\x= 06\0\ +\0\xd2\x02\0\0\xc8\x05\0\0\x0d\xb8\x02\0\xf8\x06\0\0\xd2\x02\0\0\xc8\x05\0= \0\ +\x0d\xb8\x02\0\0\x07\0\0\xd2\x02\0\0\x43\x09\0\0\x0d\xc8\x02\0\x20\x07\0\0= \xd2\ +\x02\0\0\x72\x09\0\0\x20\xcc\x02\0\x48\x07\0\0\xd2\x02\0\0\x9e\x09\0\0\x13= \xd4\ +\x02\0\x70\x07\0\0\xd2\x02\0\0\x7e\x07\0\0\x11\xdc\x02\0\x88\x07\0\0\xd2\x= 02\0\ +\0\x7e\x07\0\0\x11\xdc\x02\0\x90\x07\0\0\xd2\x02\0\0\xe6\x09\0\0\x19\xec\x= 02\0\ +\x98\x07\0\0\xd2\x02\0\0\xe6\x09\0\0\x34\xec\x02\0\xc0\x07\0\0\xd2\x02\0\0= \x1c\ +\x0a\0\0\x15\0\x03\0\xd0\x07\0\0\xd2\x02\0\0\x5d\x0a\0\0\x17\xfc\x02\0\xf8= \x07\ +\0\0\xd2\x02\0\0\x94\x0a\0\0\x15\x0c\x03\0\x10\x08\0\0\xd2\x02\0\0\x94\x0a= \0\0\ +\x15\x0c\x03\0\x18\x08\0\0\xd2\x02\0\0\xaf\x0a\0\0\x27\x1c\x03\0\x40\x08\0= \0\ +\xd2\x02\0\0\xda\x0a\0\0\x27\x38\x03\0\x50\x08\0\0\xd2\x02\0\0\x0a\x0b\0\0= \x1c\ +\x9c\x03\0\x58\x08\0\0\xd2\x02\0\0\x46\x0b\0\0\x20\xa8\x03\0\x68\x08\0\0\x= d2\ +\x02\0\0\x46\x0b\0\0\x2f\xa8\x03\0\x70\x08\0\0\xd2\x02\0\0\x46\x0b\0\0\x36= \xa8\ +\x03\0\x78\x08\0\0\xd2\x02\0\0\x46\x0b\0\0\x15\xa8\x03\0\xe0\x08\0\0\xd2\x= 02\0\ +\0\x82\x0b\0\0\x43\x4c\x03\0\0\x09\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\x08\x09= \0\0\ +\xd2\x02\0\0\x82\x0b\0\0\x17\x4c\x03\0\x30\x09\0\0\xd2\x02\0\0\x94\x0a\0\0= \x15\ +\x54\x03\0\x48\x09\0\0\xd2\x02\0\0\x94\x0a\0\0\x15\x54\x03\0\x50\x09\0\0\x= d2\ +\x02\0\0\xd2\x0b\0\0\x19\x64\x03\0\x58\x09\0\0\xd2\x02\0\0\xd2\x0b\0\0\x15= \x64\ +\x03\0\x60\x09\0\0\xd2\x02\0\0\x02\x0c\0\0\x19\x6c\x03\0\x68\x09\0\0\xd2\x= 02\0\ +\0\x32\x0c\0\0\x1b\x68\x03\0\x98\x09\0\0\xd2\x02\0\0\x6d\x0c\0\0\x19\x7c\x= 03\0\ +\xb0\x09\0\0\xd2\x02\0\0\x6d\x0c\0\0\x19\x7c\x03\0\xb8\x09\0\0\xd2\x02\0\0= \x8c\ +\x0c\0\0\x2b\x8c\x03\0\xd8\x09\0\0\xd2\x02\0\0\x0a\x0b\0\0\x1f\x9c\x03\0\x= f8\ +\x09\0\0\xd2\x02\0\0\xbb\x0c\0\0\x21\xbc\x03\0\x08\x0a\0\0\xd2\x02\0\0\xe3= \x0c\ +\0\0\x20\xcc\x03\0\x10\x0a\0\0\xd2\x02\0\0\xe3\x0c\0\0\x2c\xcc\x03\0\x28\x= 0a\0\ +\0\xd2\x02\0\0\xe3\x0c\0\0\x14\xcc\x03\0\x38\x0a\0\0\xd2\x02\0\0\x13\x0d\0= \0\ +\x20\xc8\x03\0\x40\x0a\0\0\xd2\x02\0\0\xc0\x08\0\0\x05\x18\x02\0\x88\x0a\0= \0\ +\xd2\x02\0\0\x3b\x0d\0\0\x38\xa8\x02\0\xa8\x0a\0\0\xd2\x02\0\0\x3b\x0d\0\0= \x05\ +\xa8\x02\0\xc0\x0a\0\0\xd2\x02\0\0\xc0\x08\0\0\x05\x18\x02\0\xd0\x0a\0\0\x= d2\ +\x02\0\0\x79\x0d\0\0\x1c\xb8\x06\0\xe0\x0a\0\0\xd2\x02\0\0\x79\x0d\0\0\x10= \xb8\ +\x06\0\xe8\x0a\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\x38\x0b\0\0\xd2\x02\0\0\xb4= \x07\ +\0\0\x19\xbc\x06\0\x40\x0b\0\0\xd2\x02\0\0\xb4\x07\0\0\x20\xbc\x06\0\x68\x= 0b\0\ +\0\xd2\x02\0\0\x9f\x0d\0\0\x24\xc4\x06\0\x70\x0b\0\0\xd2\x02\0\0\x9f\x0d\0= \0\ +\x18\xc4\x06\0\x90\x0b\0\0\xd2\x02\0\0\x9f\x0d\0\0\x34\xc4\x06\0\x98\x0b\0= \0\ +\xd2\x02\0\0\xf5\x0d\0\0\x2d\xd4\x06\0\xa8\x0b\0\0\xd2\x02\0\0\x24\x0e\0\0= \x33\ +\xe4\x06\0\xc0\x0b\0\0\xd2\x02\0\0\x63\x0e\0\0\x20\x58\x06\0\xc8\x0b\0\0\x= d2\ +\x02\0\0\x63\x0e\0\0\x27\x58\x06\0\xf0\x0b\0\0\xd2\x02\0\0\x8c\x0e\0\0\x27= \x94\ +\x06\0\xf8\x0b\0\0\xd2\x02\0\0\x8c\x0e\0\0\x14\x94\x06\0\0\x0c\0\0\xd2\x02= \0\0\ +\xd5\x0e\0\0\x05\x80\x01\0\x10\x0c\0\0\xd2\x02\0\0\xd5\x0e\0\0\x05\x80\x01= \0\ +\x40\x0c\0\0\xd2\x02\0\0\xc8\x05\0\0\x0d\x3c\x05\0\x50\x0c\0\0\xd2\x02\0\0= \0\0\ +\0\0\0\0\0\0\x58\x0c\0\0\xd2\x02\0\0\x12\x0f\0\0\x1a\xe8\x08\0\x78\x0c\0\0= \x72\ +\x02\0\0\x3a\x0f\0\0\x05\x7c\0\0\x90\x0c\0\0\xd2\x02\0\0\x63\x0e\0\0\x20\x= 44\ +\x07\0\x98\x0c\0\0\xd2\x02\0\0\x63\x0e\0\0\x27\x44\x07\0\xc0\x0c\0\0\xd2\x= 02\0\ +\0\x9f\x0d\0\0\x24\x4c\x07\0\xc8\x0c\0\0\xd2\x02\0\0\x9f\x0d\0\0\x18\x4c\x= 07\0\ +\xe8\x0c\0\0\xd2\x02\0\0\x9f\x0d\0\0\x34\x4c\x07\0\xf0\x0c\0\0\xd2\x02\0\0= \xf5\ +\x0d\0\0\x2d\x5c\x07\0\0\x0d\0\0\xd2\x02\0\0\x24\x0e\0\0\x33\x6c\x07\0\x18= \x0d\ +\0\0\xd2\x02\0\0\x50\x0f\0\0\x33\xf4\x06\0\x38\x0d\0\0\xd2\x02\0\0\x8b\x0f= \0\0\ +\x2d\0\x07\0\x48\x0d\0\0\xd2\x02\0\0\x8b\x0f\0\0\x11\0\x07\0\x50\x0d\0\0\x= d2\ +\x02\0\0\x8b\x0f\0\0\x2d\0\x07\0\x68\x0d\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\x= 40\ +\x0e\0\0\xd2\x02\0\0\xba\x0f\0\0\x05\xb8\x01\0\x48\x0e\0\0\xd2\x02\0\0\xfc= \x0f\ +\0\0\x23\xac\x01\0\x60\x0e\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\x68\x0e\0\0\xd2= \x02\ +\0\0\x30\x10\0\0\x1b\xbc\x01\0\x88\x0e\0\0\xd2\x02\0\0\x57\x10\0\0\x11\xd0= \x01\ +\0\xa0\x0e\0\0\xd2\x02\0\0\x80\x10\0\0\x19\xc0\x01\0\xb8\x0e\0\0\xd2\x02\0= \0\ +\xae\x10\0\0\x27\xe4\x01\0\xd0\x0e\0\0\xd2\x02\0\0\xae\x10\0\0\x2d\xe4\x01= \0\ +\xd8\x0e\0\0\xd2\x02\0\0\x57\x10\0\0\x11\xd0\x01\0\x18\x0f\0\0\xd2\x02\0\0= \xae\ +\x10\0\0\x27\xe4\x01\0\x20\x0f\0\0\xd2\x02\0\0\xae\x10\0\0\x2d\xe4\x01\0\x= 28\ +\x0f\0\0\xd2\x02\0\0\x57\x10\0\0\x11\xd0\x01\0\x50\x0f\0\0\xd2\x02\0\0\xae= \x10\ +\0\0\x27\xe4\x01\0\x70\x0f\0\0\xd2\x02\0\0\xae\x10\0\0\x2d\xe4\x01\0\x78\x= 0f\0\ +\0\xd2\x02\0\0\x57\x10\0\0\x11\xd0\x01\0\xa0\x0f\0\0\xd2\x02\0\0\xae\x10\0= \0\ +\x27\xe4\x01\0\xc0\x0f\0\0\xd2\x02\0\0\xae\x10\0\0\x2d\xe4\x01\0\xc8\x0f\0= \0\ +\xd2\x02\0\0\x57\x10\0\0\x11\xd0\x01\0\x08\x10\0\0\xd2\x02\0\0\xae\x10\0\0= \x27\ +\xe4\x01\0\x10\x10\0\0\xd2\x02\0\0\xae\x10\0\0\x2d\xe4\x01\0\x18\x10\0\0\x= d2\ +\x02\0\0\x57\x10\0\0\x11\xd0\x01\0\x58\x10\0\0\xd2\x02\0\0\xae\x10\0\0\x27= \xe4\ +\x01\0\x60\x10\0\0\xd2\x02\0\0\xae\x10\0\0\x2d\xe4\x01\0\x68\x10\0\0\xd2\x= 02\0\ +\0\x57\x10\0\0\x11\xd0\x01\0\xa8\x10\0\0\xd2\x02\0\0\xae\x10\0\0\x27\xe4\x= 01\0\ +\xb0\x10\0\0\xd2\x02\0\0\xae\x10\0\0\x2d\xe4\x01\0\xb8\x10\0\0\xd2\x02\0\0= \x57\ +\x10\0\0\x11\xd0\x01\0\xe0\x10\0\0\xd2\x02\0\0\xae\x10\0\0\x27\xe4\x01\0\x= e8\ +\x10\0\0\xd2\x02\0\0\xae\x10\0\0\x2d\xe4\x01\0\xf0\x10\0\0\xd2\x02\0\0\xba= \x0f\ +\0\0\x3d\xb8\x01\0\0\x11\0\0\xd2\x02\0\0\xba\x0f\0\0\x05\xb8\x01\0\x10\x11= \0\0\ +\xd2\x02\0\0\xfa\x10\0\0\x31\xb8\x08\0\x30\x11\0\0\xd2\x02\0\0\xfa\x10\0\0= \x27\ +\xb8\x08\0\x48\x11\0\0\xd2\x02\0\0\xfa\x10\0\0\x0f\xb8\x08\0\x58\x11\0\0\x= d2\ +\x02\0\0\xfa\x10\0\0\x31\xb8\x08\0\x60\x11\0\0\xd2\x02\0\0\x3c\x11\0\0\x11= \xc4\ +\x08\0\x78\x11\0\0\xd2\x02\0\0\x80\x11\0\0\x0d\xd0\x08\0\x80\x11\0\0\xd2\x= 02\0\ +\0\x95\x11\0\0\x1a\xd4\x08\0\x98\x11\0\0\xd2\x02\0\0\xb6\x11\0\0\x1a\x88\x= 05\0\ +\xa8\x11\0\0\xd2\x02\0\0\xd4\x11\0\0\x1b\x90\x05\0\xb8\x11\0\0\xd2\x02\0\0= \xb6\ +\x11\0\0\x1a\x88\x05\0\xc0\x11\0\0\xd2\x02\0\0\xf8\x11\0\0\x13\x94\x05\0\x= e8\ +\x11\0\0\xd2\x02\0\0\x7e\x07\0\0\x11\x9c\x05\0\xf8\x11\0\0\xd2\x02\0\0\x7e= \x07\ +\0\0\x11\x9c\x05\0\x08\x12\0\0\xd2\x02\0\0\xc0\x08\0\0\x05\x18\x02\0\x18\x= 12\0\ +\0\xd2\x02\0\0\x49\x12\0\0\x27\xd4\x07\0\x28\x12\0\0\xd2\x02\0\0\x49\x12\0= \0\ +\x14\xd4\x07\0\x38\x12\0\0\xd2\x02\0\0\x9f\x0d\0\0\x24\xd8\x07\0\x40\x12\0= \0\ +\xd2\x02\0\0\x9f\x0d\0\0\x18\xd8\x07\0\x60\x12\0\0\xd2\x02\0\0\x9f\x0d\0\0= \x34\ +\xd8\x07\0\x68\x12\0\0\xd2\x02\0\0\xf5\x0d\0\0\x2d\xe8\x07\0\x78\x12\0\0\x= d2\ +\x02\0\0\x24\x0e\0\0\x33\xf8\x07\0\x90\x12\0\0\xd2\x02\0\0\x50\x0f\0\0\x33= \x7c\ +\x07\0\xb0\x12\0\0\xd2\x02\0\0\x8b\x0f\0\0\x2d\x88\x07\0\xc0\x12\0\0\xd2\x= 02\0\ +\0\x8b\x0f\0\0\x11\x88\x07\0\xc8\x12\0\0\xd2\x02\0\0\x8b\x0f\0\0\x2d\x88\x= 07\0\ +\xd8\x12\0\0\xd2\x02\0\0\x50\x0f\0\0\x33\x08\x08\0\xe8\x12\0\0\xd2\x02\0\0= \0\0\ +\0\0\0\0\0\0\x38\x13\0\0\xd2\x02\0\0\0\0\0\0\0\0\0\0\x48\x13\0\0\xd2\x02\0= \0\ +\x8b\x0f\0\0\x2d\x14\x08\0\x58\x13\0\0\xd2\x02\0\0\xd5\x0e\0\0\x05\x80\x01= \0\ +\xa8\x13\0\0\xd2\x02\0\0\xd5\x0e\0\0\x05\x80\x01\0\xe0\x13\0\0\xd2\x02\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0= \x03\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x24\x01\0\0\0\0\x03\0\x78\x0c\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\xd1\x01\0\0\0\0\x03\0\x58\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x= fd\0\ +\0\0\0\0\x03\0\xc0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x32\x02\0\0\0\0\x03\0\x= 10\ +\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x55\x01\0\0\0\0\x03\0\xd0\x04\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\x14\x01\0\0\0\0\x03\0\xf8\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x65= \x01\ +\0\0\0\0\x03\0\xc8\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe5\0\0\0\0\0\x03\0\x18= \x03\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdd\0\0\0\0\0\x03\0\x90\x11\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\x3d\x01\0\0\0\0\x03\0\xd8\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\0\0\0= \0\0\ +\x03\0\xd0\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87\x01\0\0\0\0\x03\0\xc0\x0b\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\xa8\x01\0\0\0\0\x03\0\x88\x04\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\x97\x01\0\0\0\0\x03\0\x38\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\0\0\0\0= \x03\ +\0\x08\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1a\x02\0\0\0\0\x03\0\x40\x06\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\xe9\x01\0\0\0\0\x03\0\xa8\x06\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\x0a\x02\0\0\0\0\x03\0\x40\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe1\x01\0\0\0\0= \x03\ +\0\x30\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb0\x01\0\0\0\0\x03\0\xf8\x09\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\x8f\x01\0\0\0\0\x03\0\x08\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\x2a\x02\0\0\0\0\x03\0\x98\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb8\x01\0\0\0\0= \x03\ +\0\xe0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xed\0\0\0\0\0\x03\0\x50\x08\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x12\x02\0\0\0\0\x03\0\xc8\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \xd9\ +\x01\0\0\0\0\x03\0\x28\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4d\x01\0\0\0\0\x03= \0\ +\xd0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x76\x01\0\0\0\0\x03\0\xc0\x0a\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x45\x01\0\0\0\0\x03\0\x80\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x1c\ +\x01\0\0\0\0\x03\0\xb0\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc9\x01\0\0\0\0\x03= \0\ +\x90\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5d\x01\0\0\0\0\x03\0\x18\x0d\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x2d\x01\0\0\0\0\x03\0\x28\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x35\ +\x01\0\0\0\0\x03\0\xf0\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa0\x01\0\0\0\0\x03= \0\ +\x18\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0c\x01\0\0\0\0\x03\0\x90\x12\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\xc5\0\0\0\0\0\x03\0\xa0\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x= cd\0\ +\0\0\0\0\x03\0\x48\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\x03\0\x= 60\ +\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x22\x02\0\0\0\0\x03\0\x58\x0d\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\x7e\x01\0\0\0\0\x03\0\x58\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x6d= \x01\ +\0\0\0\0\x03\0\x10\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x01\0\0\0\0\x03\0\x= d8\ +\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xbd\0\0\0\0\0\x03\0\xe8\x12\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\xfa\x01\0\0\0\0\x03\0\xc0\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf1\x= 01\0\ +\0\0\0\x03\0\xa8\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc0\x01\0\0\0\0\x03\0\xe0= \x13\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x59\0\0\0\x12\0\x03\0\0\0\0\0\0\0\0\0\xf0\x13= \0\0\ +\0\0\0\0\x3e\0\0\0\x11\0\x06\0\0\0\0\0\0\0\0\0\x20\0\0\0\0\0\0\0\x01\0\0\0= \x11\ +\0\x06\0\x20\0\0\0\0\0\0\0\x20\0\0\0\0\0\0\0\x86\0\0\0\x11\0\x06\0\x40\0\0= \0\0\ +\0\0\0\x20\0\0\0\0\0\0\0\x7d\0\0\0\x11\0\x05\0\0\0\0\0\0\0\0\0\x07\0\0\0\0= \0\0\ +\0\x28\0\0\0\0\0\0\0\x01\0\0\0\x32\0\0\0\x50\0\0\0\0\0\0\0\x01\0\0\0\x33\0= \0\0\ +\x60\x11\0\0\0\0\0\0\x01\0\0\0\x34\0\0\0\x18\x05\0\0\0\0\0\0\x04\0\0\0\x32= \0\0\ +\0\x24\x05\0\0\0\0\0\0\x04\0\0\0\x33\0\0\0\x30\x05\0\0\0\0\0\0\x04\0\0\0\x= 34\0\ +\0\0\x48\x05\0\0\0\0\0\0\x04\0\0\0\x35\0\0\0\x2c\0\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x40\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\0\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\x60\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\0\0\0\0\0\0\0\x04\0\0\0\x01\0= \0\0\ +\x80\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\xa0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\xc0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\xe0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\0\ +\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\x20\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x01\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\x40\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x01\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x60\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x01\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\x80\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x01\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\xa0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x01\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\xc0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x01\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\xe0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x01\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x02\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\x20\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x02\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\x40\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x02\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\x60\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x02\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\x80\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x02\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x02= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x= 02\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0= \x02\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10= \x03\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 30\ +\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\x50\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x03\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\x70\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x03\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x90\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x03\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\xb0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x03\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\xd0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x03\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\xf0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x04\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\x10\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x04\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\x30\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x04\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\x50\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x04\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\x70\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x04\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\x90\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x04\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\xb0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x04\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x04= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x05= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x= 05\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40= \x05\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 60\ +\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\x80\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x05\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\xa0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x05\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\xc0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x05\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\xe0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x05\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x06\0\0\0\0\0\0\x04\0= \0\0\ +\x01\0\0\0\x20\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x06\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\x40\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x06\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\x60\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x06\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\x80\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x06\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\xa0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x06\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\xc0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x06\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\xe0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x06\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x07\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\x20\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x07= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x= 07\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70= \x07\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 90\ +\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\xb0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x07\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\xd0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x07\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\xf0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x08\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x10\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x08\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\x30\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x08\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\x50\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x08\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\x70\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x08\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\x90\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x08\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\xb0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x08\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\xd0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x08\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\xf0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x09\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\x10\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x09\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\x30\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x09\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\x50\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x09= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x= 09\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0= \x09\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= c0\ +\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\xe0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x09\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x0a\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\x20\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x0a\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x40\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x0a\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\x60\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x0a\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\x80\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x0a\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\xa0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x0a\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\xc0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x0a\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\xe0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x0a\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x0b\0\0\0\0= \0\0\ +\x04\0\0\0\x01\0\0\0\x20\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x0b\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\x40\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x0b\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\x60\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x0b\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\x80\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x0b= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x= 0b\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0= \x0b\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= f0\ +\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0= \x10\ +\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\x30\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x0c\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\x50\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x0c\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x70\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x0c\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\x90\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x0c\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\xb0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x0c\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\xd0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x0c\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\xf0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x0d\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\x10\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x0d\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\x30\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x3b\x3f\x3c\x3d\x= 3e\0\ +\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x74\x6f\x65\x70\x6c\x69\x= 74\ +\x7a\x5f\x6b\x65\x79\0\x2e\x74\x65\x78\x74\0\x2e\x72\x65\x6c\x2e\x42\x54\x= 46\ +\x2e\x65\x78\x74\0\x2e\x72\x65\x6c\x73\x6f\x63\x6b\x65\x74\0\x2e\x6d\x61\x= 70\ +\x73\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x63\x6f\x6e\x66\x69= \x67\ +\x75\x72\x61\x74\x69\x6f\x6e\x73\0\x74\x75\x6e\x5f\x72\x73\x73\x5f\x73\x74= \x65\ +\x65\x72\x69\x6e\x67\x5f\x70\x72\x6f\x67\0\x2e\x6c\x6c\x76\x6d\x5f\x61\x64= \x64\ +\x72\x73\x69\x67\0\x5f\x6c\x69\x63\x65\x6e\x73\x65\0\x74\x61\x70\x5f\x72\x= 73\ +\x73\x5f\x6d\x61\x70\x5f\x69\x6e\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x5f\x= 74\ +\x61\x62\x6c\x65\0\x2e\x73\x74\x72\x74\x61\x62\0\x2e\x73\x79\x6d\x74\x61\x= 62\0\ +\x2e\x72\x65\x6c\x2e\x42\x54\x46\0\x4c\x42\x42\x30\x5f\x39\x39\0\x4c\x42\x= 42\ +\x30\x5f\x38\x39\0\x4c\x42\x42\x30\x5f\x37\x39\0\x4c\x42\x42\x30\x5f\x36\x= 39\0\ +\x4c\x42\x42\x30\x5f\x35\x39\0\x4c\x42\x42\x30\x5f\x34\x39\0\x4c\x42\x42\x= 30\ +\x5f\x33\x39\0\x4c\x42\x42\x30\x5f\x31\x39\0\x4c\x42\x42\x30\x5f\x38\0\x4c= \x42\ +\x42\x30\x5f\x39\x38\0\x4c\x42\x42\x30\x5f\x38\x38\0\x4c\x42\x42\x30\x5f\x= 35\ +\x38\0\x4c\x42\x42\x30\x5f\x34\x38\0\x4c\x42\x42\x30\x5f\x31\x30\x38\0\x4c= \x42\ +\x42\x30\x5f\x37\x37\0\x4c\x42\x42\x30\x5f\x36\x37\0\x4c\x42\x42\x30\x5f\x= 35\ +\x37\0\x4c\x42\x42\x30\x5f\x34\x37\0\x4c\x42\x42\x30\x5f\x33\x37\0\x4c\x42= \x42\ +\x30\x5f\x31\x37\0\x4c\x42\x42\x30\x5f\x37\x36\0\x4c\x42\x42\x30\x5f\x31\x= 36\0\ +\x4c\x42\x42\x30\x5f\x31\x30\x36\0\x4c\x42\x42\x30\x5f\x34\x35\0\x4c\x42\x= 42\ +\x30\x5f\x31\x30\x35\0\x4c\x42\x42\x30\x5f\x36\x34\0\x4c\x42\x42\x30\x5f\x= 34\ +\x34\0\x4c\x42\x42\x30\x5f\x31\x30\x34\0\x4c\x42\x42\x30\x5f\x39\x33\0\x4c= \x42\ +\x42\x30\x5f\x36\x33\0\x4c\x42\x42\x30\x5f\x34\x33\0\x4c\x42\x42\x30\x5f\x= 33\ +\x33\0\x4c\x42\x42\x30\x5f\x31\x30\x33\0\x4c\x42\x42\x30\x5f\x38\x32\0\x4c= \x42\ +\x42\x30\x5f\x35\x32\0\x4c\x42\x42\x30\x5f\x34\x32\0\x4c\x42\x42\x30\x5f\x= 33\ +\x32\0\x4c\x42\x42\x30\x5f\x32\x32\0\x4c\x42\x42\x30\x5f\x31\x30\x32\0\x4c= \x42\ +\x42\x30\x5f\x39\x31\0\x4c\x42\x42\x30\x5f\x38\x31\0\x4c\x42\x42\x30\x5f\x= 35\ +\x31\0\x4c\x42\x42\x30\x5f\x34\x31\0\x4c\x42\x42\x30\x5f\x32\x31\0\x4c\x42= \x42\ +\x30\x5f\x38\x30\0\x4c\x42\x42\x30\x5f\x35\x30\0\x4c\x42\x42\x30\x5f\x31\x= 30\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa4\0\0\0\x03\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\x9d\x4c\0\0\0\0\0\0\x3a\x02\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1a\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\x31\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x40\ +\0\0\0\0\0\0\0\xf0\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\x2d\0\0\0\x09\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x3f\0\0\0= \0\0\ +\0\x30\0\0\0\0\0\0\0\x0c\0\0\0\x03\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0= \0\ +\x7e\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x30\x14\0\0\0\0\0\0= \x07\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x38\0\0\0= \x01\ +\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x38\x14\0\0\0\0\0\0\x60\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb8\0\0\0\x01\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\x98\x14\0\0\0\0\0\0\x2d\x18\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb4\0\0\0\x09\0\0\0\x40\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\x48\x3f\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\x0c\0\0\0\x07\0\0\0\x08= \0\0\ +\0\0\0\0\0\x10\0\0\0\0\0\0\0\x24\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\xc8\x2c\0\0\0\0\0\0\x40\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\x20\0\0\0\x09\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x88\x= 3f\0\ +\0\0\0\0\0\x10\x0d\0\0\0\0\0\0\x0c\0\0\0\x09\0\0\0\x08\0\0\0\0\0\0\0\x10\0= \0\0\ +\0\0\0\0\x6f\0\0\0\x03\x4c\xff\x6f\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x98\x= 4c\0\ +\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\xac\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\x3a\0\0\0\0\0\0\x= 10\ +\x05\0\0\0\0\0\0\x01\0\0\0\x31\0\0\0\x08\0\0\0\0\0\0\0\x18\0\0\0\0\0\0\0"; +} + +#ifdef __cplusplus +struct socket_bpf *socket_bpf::open(const struct bpf_object_open_opts *opt= s) { return socket_bpf__open_opts(opts); } +struct socket_bpf *socket_bpf::open_and_load() { return socket_bpf__open_a= nd_load(); } +int socket_bpf::load(struct socket_bpf *skel) { return socket_bpf__load(sk= el); } +int socket_bpf::attach(struct socket_bpf *skel) { return socket_bpf__attac= h(skel); } +void socket_bpf::detach(struct socket_bpf *skel) { socket_bpf__detach(skel= ); } +void socket_bpf::destroy(struct socket_bpf *skel) { socket_bpf__destroy(sk= el); } +const void *socket_bpf::elf_bytes(size_t *sz) { return socket_bpf__elf_byt= es(sz); } +#endif /* __cplusplus */ + +__attribute__((unused)) static void +socket_bpf__assert(struct socket_bpf *s __attribute__((unused))) +{ +#ifdef __cplusplus +#define _Static_assert static_assert +#endif +#ifdef __cplusplus +#undef _Static_assert +#endif +} + +#endif /* __SOCKET_BPF_SKEL_H__ */ diff --git a/ebpf/vnet_hash.bpf.skeleton.h b/ebpf/vnet_hash.bpf.skeleton.h new file mode 100644 index 0000000000..e8825226c8 --- /dev/null +++ b/ebpf/vnet_hash.bpf.skeleton.h @@ -0,0 +1,1075 @@ +/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ + +/* THIS FILE IS AUTOGENERATED BY BPFTOOL! */ +#ifndef __VNET_HASH_BPF_SKEL_H__ +#define __VNET_HASH_BPF_SKEL_H__ + +#include +#include +#include + +struct vnet_hash_bpf { + struct bpf_object_skeleton *skeleton; + struct bpf_object *obj; + struct { + struct bpf_map *tap_rss_map_configurations; + struct bpf_map *tap_rss_map_toeplitz_key; + struct bpf_map *tap_rss_map_indirection_table; + } maps; + struct { + struct bpf_program *tun_rss_steering_prog; + } progs; + struct { + struct bpf_link *tun_rss_steering_prog; + } links; + +#ifdef __cplusplus + static inline struct vnet_hash_bpf *open(const struct bpf_object_open_opt= s *opts =3D nullptr); + static inline struct vnet_hash_bpf *open_and_load(); + static inline int load(struct vnet_hash_bpf *skel); + static inline int attach(struct vnet_hash_bpf *skel); + static inline void detach(struct vnet_hash_bpf *skel); + static inline void destroy(struct vnet_hash_bpf *skel); + static inline const void *elf_bytes(size_t *sz); +#endif /* __cplusplus */ +}; + +static void +vnet_hash_bpf__destroy(struct vnet_hash_bpf *obj) +{ + if (!obj) + return; + if (obj->skeleton) + bpf_object__destroy_skeleton(obj->skeleton); + free(obj); +} + +static inline int +vnet_hash_bpf__create_skeleton(struct vnet_hash_bpf *obj); + +static inline struct vnet_hash_bpf * +vnet_hash_bpf__open_opts(const struct bpf_object_open_opts *opts) +{ + struct vnet_hash_bpf *obj; + int err; + + obj =3D (struct vnet_hash_bpf *)calloc(1, sizeof(*obj)); + if (!obj) { + errno =3D ENOMEM; + return NULL; + } + + err =3D vnet_hash_bpf__create_skeleton(obj); + if (err) + goto err_out; + + err =3D bpf_object__open_skeleton(obj->skeleton, opts); + if (err) + goto err_out; + + return obj; +err_out: + vnet_hash_bpf__destroy(obj); + errno =3D -err; + return NULL; +} + +static inline struct vnet_hash_bpf * +vnet_hash_bpf__open(void) +{ + return vnet_hash_bpf__open_opts(NULL); +} + +static inline int +vnet_hash_bpf__load(struct vnet_hash_bpf *obj) +{ + return bpf_object__load_skeleton(obj->skeleton); +} + +static inline struct vnet_hash_bpf * +vnet_hash_bpf__open_and_load(void) +{ + struct vnet_hash_bpf *obj; + int err; + + obj =3D vnet_hash_bpf__open(); + if (!obj) + return NULL; + err =3D vnet_hash_bpf__load(obj); + if (err) { + vnet_hash_bpf__destroy(obj); + errno =3D -err; + return NULL; + } + return obj; +} + +static inline int +vnet_hash_bpf__attach(struct vnet_hash_bpf *obj) +{ + return bpf_object__attach_skeleton(obj->skeleton); +} + +static inline void +vnet_hash_bpf__detach(struct vnet_hash_bpf *obj) +{ + bpf_object__detach_skeleton(obj->skeleton); +} + +static inline const void *vnet_hash_bpf__elf_bytes(size_t *sz); + +static inline int +vnet_hash_bpf__create_skeleton(struct vnet_hash_bpf *obj) +{ + struct bpf_object_skeleton *s; + int err; + + s =3D (struct bpf_object_skeleton *)calloc(1, sizeof(*s)); + if (!s) { + err =3D -ENOMEM; + goto err; + } + + s->sz =3D sizeof(*s); + s->name =3D "vnet_hash_bpf"; + s->obj =3D &obj->obj; + + /* maps */ + s->map_cnt =3D 3; + s->map_skel_sz =3D sizeof(*s->maps); + s->maps =3D (struct bpf_map_skeleton *)calloc(s->map_cnt, s->map_skel_sz); + if (!s->maps) { + err =3D -ENOMEM; + goto err; + } + + s->maps[0].name =3D "tap_rss_map_configurations"; + s->maps[0].map =3D &obj->maps.tap_rss_map_configurations; + + s->maps[1].name =3D "tap_rss_map_toeplitz_key"; + s->maps[1].map =3D &obj->maps.tap_rss_map_toeplitz_key; + + s->maps[2].name =3D "tap_rss_map_indirection_table"; + s->maps[2].map =3D &obj->maps.tap_rss_map_indirection_table; + + /* programs */ + s->prog_cnt =3D 1; + s->prog_skel_sz =3D sizeof(*s->progs); + s->progs =3D (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel= _sz); + if (!s->progs) { + err =3D -ENOMEM; + goto err; + } + + s->progs[0].name =3D "tun_rss_steering_prog"; + s->progs[0].prog =3D &obj->progs.tun_rss_steering_prog; + s->progs[0].link =3D &obj->links.tun_rss_steering_prog; + + s->data =3D (void *)vnet_hash_bpf__elf_bytes(&s->data_sz); + + obj->skeleton =3D s; + return 0; +err: + bpf_object__destroy_skeleton(s); + return err; +} + +static inline const void *vnet_hash_bpf__elf_bytes(size_t *sz) +{ + *sz =3D 22408; + return (const void *)"\ +\x7f\x45\x4c\x46\x02\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\xf7\0\x01\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\x48\x54\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x0d= \0\ +\x01\0\xbf\x16\0\0\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\x4c\xff\0\0\0\0\xbf= \xa8\ +\0\0\0\0\0\0\x07\x08\0\0\x4c\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\xbf\x82\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x07\0\0\0\0\0\0\x18\x01\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\xbf\x82\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x08\0\0\0\0= \0\0\ +\x15\x07\x88\x01\0\0\0\0\xbf\x89\0\0\0\0\0\0\x15\x09\x86\x01\0\0\0\0\x71\x= 71\0\ +\0\0\0\0\0\x15\x01\x7f\x01\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\xc0\xff\0\0= \0\0\ +\x7b\x1a\xb8\xff\0\0\0\0\x7b\x1a\xb0\xff\0\0\0\0\x7b\x1a\xa8\xff\0\0\0\0\x= 7b\ +\x1a\xa0\xff\0\0\0\0\x63\x1a\x98\xff\0\0\0\0\x7b\x1a\x90\xff\0\0\0\0\x7b\x= 1a\ +\x88\xff\0\0\0\0\x7b\x1a\x80\xff\0\0\0\0\x7b\x1a\x78\xff\0\0\0\0\x7b\x1a\x= 70\ +\xff\0\0\0\0\x7b\x1a\x68\xff\0\0\0\0\x7b\x1a\x60\xff\0\0\0\0\x7b\x1a\x58\x= ff\0\ +\0\0\0\x7b\x1a\x50\xff\0\0\0\0\x15\x06\x6e\x01\0\0\0\0\x6b\x1a\xc8\xff\0\0= \0\0\ +\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\xbf\x61\0\0\0\0\0\0\xb7\x= 02\0\ +\0\x0c\0\0\0\xb7\x04\0\0\x02\0\0\0\xb7\x05\0\0\0\0\0\0\x85\0\0\0\x44\0\0\0= \x67\ +\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\x63\x01\0\0\0\0\xb7\x02\0\0\x10= \0\0\ +\0\x69\xa1\xc8\xff\0\0\0\0\xbf\x13\0\0\0\0\0\0\xdc\x03\0\0\x10\0\0\0\x15\x= 03\ +\x02\0\0\x81\0\0\x55\x03\x0b\0\xa8\x88\0\0\xb7\x02\0\0\x14\0\0\0\xbf\xa3\0= \0\0\ +\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\xbf\x61\0\0\0\0\0\0\xb7\x04\0\0\x02\0\0= \0\ +\xb7\x05\0\0\0\0\0\0\x85\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20= \0\0\ +\0\x55\0\x53\x01\0\0\0\0\x69\xa1\xc8\xff\0\0\0\0\x15\x01\x51\x01\0\0\0\0\x= 7b\ +\x9a\x28\xff\0\0\0\0\x7b\x8a\x30\xff\0\0\0\0\x15\x01\x51\0\x86\xdd\0\0\xbf= \x68\ +\0\0\0\0\0\0\x55\x01\x39\0\x08\0\0\0\xb7\x06\0\0\x01\0\0\0\x73\x6a\x50\xff= \0\0\ +\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\xd8\xff\0\0\0\0\x7b\x1a\xd0\xff\0\0\0\0\x= 7b\ +\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xc8\xff\xff\xff\xbf\x= 81\0\ +\0\0\0\0\0\xb7\x02\0\0\0\0\0\0\xb7\x04\0\0\x14\0\0\0\xb7\x05\0\0\x01\0\0\0= \x85\ +\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\xfb\0\0\0\0= \0\ +\x69\xa1\xce\xff\0\0\0\0\x55\x01\x01\0\0\0\0\0\xb7\x06\0\0\0\0\0\0\x61\xa1= \xd4\ +\xff\0\0\0\0\x63\x1a\x5c\xff\0\0\0\0\x61\xa1\xd8\xff\0\0\0\0\x63\x1a\x60\x= ff\0\ +\0\0\0\x71\xa9\xd1\xff\0\0\0\0\x73\x6a\x56\xff\0\0\0\0\x71\xa2\xc8\xff\0\0= \0\0\ +\x67\x02\0\0\x02\0\0\0\x57\x02\0\0\x3c\0\0\0\xbf\x91\0\0\0\0\0\0\x57\x01\0= \0\ +\xff\0\0\0\x15\x01\x1a\0\0\0\0\0\x57\x06\0\0\xff\0\0\0\x55\x06\x18\0\0\0\0= \0\ +\x57\x09\0\0\xff\0\0\0\x15\x09\x41\x01\x11\0\0\0\x55\x09\x15\0\x06\0\0\0\x= b7\ +\x01\0\0\x01\0\0\0\x73\x1a\x53\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\xd8= \xff\ +\0\0\0\0\x7b\x1a\xd0\xff\0\0\0\0\x7b\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0= \0\ +\x07\x03\0\0\xc8\xff\xff\xff\xbf\x86\0\0\0\0\0\0\xbf\x61\0\0\0\0\0\0\xb7\x= 04\0\ +\0\x14\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0\0= \x77\ +\0\0\0\x20\0\0\0\x55\0\x18\x01\0\0\0\0\xbf\x68\0\0\0\0\0\0\x69\xa1\xc8\xff= \0\0\ +\0\0\x6b\x1a\x58\xff\0\0\0\0\x69\xa1\xca\xff\0\0\0\0\x6b\x1a\x5a\xff\0\0\0= \0\ +\x71\xa1\x50\xff\0\0\0\0\x15\x01\xd2\0\0\0\0\0\x71\x72\x03\0\0\0\0\0\x67\x= 02\0\ +\0\x08\0\0\0\x71\x71\x02\0\0\0\0\0\x4f\x12\0\0\0\0\0\0\x71\x73\x04\0\0\0\0= \0\ +\x67\x03\0\0\x10\0\0\0\x71\x71\x05\0\0\0\0\0\x67\x01\0\0\x18\0\0\0\x4f\x31= \0\0\ +\0\0\0\0\x4f\x21\0\0\0\0\0\0\x71\xa2\x53\xff\0\0\0\0\xbf\x86\0\0\0\0\0\0\x= 79\ +\xa8\x30\xff\0\0\0\0\x79\xa0\x28\xff\0\0\0\0\x15\x02\xe3\0\0\0\0\0\xbf\x12= \0\0\ +\0\0\0\0\x57\x02\0\0\x02\0\0\0\x15\x02\xe0\0\0\0\0\0\xb7\x01\0\0\x02\0\0\0= \x05\ +\0\xe4\0\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73\x1a\x51\xff\0\0\0\0\xb7\x01\0\0= \0\0\ +\0\0\x7b\x1a\xe8\xff\0\0\0\0\x7b\x1a\xe0\xff\0\0\0\0\x7b\x1a\xd8\xff\0\0\0= \0\ +\x7b\x1a\xd0\xff\0\0\0\0\x7b\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x= 03\0\ +\0\xc8\xff\xff\xff\xb7\x08\0\0\x28\0\0\0\xbf\x61\0\0\0\0\0\0\xb7\x02\0\0\0= \0\0\ +\0\xb7\x04\0\0\x28\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\x67\0\0= \0\ +\x20\0\0\0\x77\0\0\0\x20\0\0\0\x55\0\xea\0\0\0\0\0\x79\xa1\xd8\xff\0\0\0\0= \x63\ +\x1a\x64\xff\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x1a\x68\xff\0\0\0\0\x79\xa1= \xd0\ +\xff\0\0\0\0\x63\x1a\x5c\xff\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x1a\x60\xff= \0\0\ +\0\0\x79\xa1\xe0\xff\0\0\0\0\x63\x1a\x6c\xff\0\0\0\0\x77\x01\0\0\x20\0\0\0= \x63\ +\x1a\x70\xff\0\0\0\0\x79\xa1\xe8\xff\0\0\0\0\x63\x1a\x74\xff\0\0\0\0\x77\x= 01\0\ +\0\x20\0\0\0\x63\x1a\x78\xff\0\0\0\0\x71\xa9\xce\xff\0\0\0\0\x25\x09\xff\0= \x3c\ +\0\0\0\xb7\x01\0\0\x01\0\0\0\x6f\x91\0\0\0\0\0\0\x18\x02\0\0\x01\0\0\0\0\0= \0\0\ +\0\x18\0\x1c\x5f\x21\0\0\0\0\0\0\x55\x01\x01\0\0\0\0\0\x05\0\xf8\0\0\0\0\0= \xb7\ +\x01\0\0\0\0\0\0\x6b\x1a\xf8\xff\0\0\0\0\xbf\xa1\0\0\0\0\0\0\x07\x01\0\0\x= 8c\ +\xff\xff\xff\x7b\x1a\x18\xff\0\0\0\0\xbf\xa1\0\0\0\0\0\0\x07\x01\0\0\x7c\x= ff\ +\xff\xff\x7b\x1a\x10\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x7b\x1a\x20\xff\0\0\0= \0\ +\x7b\x6a\x38\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xf8\xff\xff\xff\x= bf\ +\x61\0\0\0\0\0\0\xbf\x82\0\0\0\0\0\0\xb7\x04\0\0\x02\0\0\0\xb7\x05\0\0\x01= \0\0\ +\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x01\0= \0\ +\x20\0\0\0\x55\x01\xb8\0\0\0\0\0\xbf\x91\0\0\0\0\0\0\x15\x01\x23\0\x3c\0\0= \0\ +\x15\x01\x5c\0\x2c\0\0\0\x55\x01\x5d\0\x2b\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x= 1a\ +\xf0\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xf0\xff\xff\xff\xbf\x61\0= \0\0\ +\0\0\0\xbf\x82\0\0\0\0\0\0\xb7\x04\0\0\x04\0\0\0\xb7\x05\0\0\x01\0\0\0\x85= \0\0\ +\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0= \0\ +\x55\x01\x8b\x01\0\0\0\0\x71\xa1\xf2\xff\0\0\0\0\x55\x01\x4e\0\x02\0\0\0\x= 71\ +\xa1\xf1\xff\0\0\0\0\x55\x01\x4c\0\x02\0\0\0\x71\xa1\xf3\xff\0\0\0\0\x55\x= 01\ +\x4a\0\x01\0\0\0\xbf\x82\0\0\0\0\0\0\x07\x02\0\0\x08\0\0\0\xbf\x61\0\0\0\0= \0\0\ +\x79\xa3\x18\xff\0\0\0\0\xb7\x04\0\0\x10\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0= \0\0\ +\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0= \x55\ +\x01\x7a\x01\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73\x1a\x55\xff\0\0\0\0\x05\0\x= 3c\0\ +\0\0\0\0\x7b\x8a\x40\xff\0\0\0\0\xb7\x08\0\0\x02\0\0\0\xb7\x06\0\0\0\0\0\0= \x6b\ +\x6a\xf0\xff\0\0\0\0\x05\0\x12\0\0\0\0\0\x0f\x81\0\0\0\0\0\0\xbf\x12\0\0\0= \0\0\ +\0\x07\x02\0\0\x01\0\0\0\x71\xa3\xf9\xff\0\0\0\0\x67\x03\0\0\x03\0\0\0\x3d= \x32\ +\x09\0\0\0\0\0\xbf\x62\0\0\0\0\0\0\x07\x02\0\0\x01\0\0\0\x67\x06\0\0\x20\0= \0\0\ +\xbf\x63\0\0\0\0\0\0\x77\x03\0\0\x20\0\0\0\xbf\x26\0\0\0\0\0\0\xbf\x18\0\0= \0\0\ +\0\0\xb7\x01\0\0\x1d\0\0\0\x2d\x31\x03\0\0\0\0\0\x79\xa6\x38\xff\0\0\0\0\x= 79\ +\xa8\x40\xff\0\0\0\0\x05\0\x25\0\0\0\0\0\xbf\x89\0\0\0\0\0\0\x79\xa1\x40\x= ff\0\ +\0\0\0\x0f\x19\0\0\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xf0\xff\xff\xff= \x79\ +\xa1\x38\xff\0\0\0\0\xbf\x92\0\0\0\0\0\0\xb7\x04\0\0\x02\0\0\0\xb7\x05\0\0= \x01\ +\0\0\0\x85\0\0\0\x44\0\0\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x= 01\0\ +\0\x20\0\0\0\x55\x01\x6b\0\0\0\0\0\x71\xa2\xf0\xff\0\0\0\0\x55\x02\x0e\0\x= c9\0\ +\0\0\x07\x09\0\0\x02\0\0\0\x79\xa1\x38\xff\0\0\0\0\xbf\x92\0\0\0\0\0\0\x79= \xa3\ +\x10\xff\0\0\0\0\xb7\x04\0\0\x10\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44= \0\0\ +\0\xbf\x01\0\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\x55\x01= \x5e\ +\0\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73\x1a\x54\xff\0\0\0\0\x05\0\xdf\xff\0\0= \0\0\ +\xb7\x01\0\0\x01\0\0\0\x15\x02\xce\xff\0\0\0\0\x71\xa1\xf1\xff\0\0\0\0\x07= \x01\ +\0\0\x02\0\0\0\x05\0\xcb\xff\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73\x1a\x56\xff= \0\0\ +\0\0\x71\xa1\xf9\xff\0\0\0\0\x67\x01\0\0\x03\0\0\0\x0f\x18\0\0\0\0\0\0\x07= \x08\ +\0\0\x08\0\0\0\x71\xa9\xf8\xff\0\0\0\0\x25\x09\x11\0\x3c\0\0\0\xb7\x01\0\0= \x01\ +\0\0\0\x6f\x91\0\0\0\0\0\0\x18\x02\0\0\x01\0\0\0\0\0\0\0\0\x18\0\x1c\x5f\x= 21\0\ +\0\0\0\0\0\x55\x01\x01\0\0\0\0\0\x05\0\x0a\0\0\0\0\0\x79\xa1\x20\xff\0\0\0= \0\ +\x07\x01\0\0\x01\0\0\0\x7b\x1a\x20\xff\0\0\0\0\x67\x01\0\0\x20\0\0\0\x77\x= 01\0\ +\0\x20\0\0\0\x55\x01\x81\xff\x0b\0\0\0\xbf\x82\0\0\0\0\0\0\xbf\x68\0\0\0\0= \0\0\ +\x71\xa6\x56\xff\0\0\0\0\x05\0\x13\xff\0\0\0\0\x15\x09\xf5\xff\x87\0\0\0\x= 05\0\ +\xfa\xff\0\0\0\0\xbf\x86\0\0\0\0\0\0\x05\0\x3f\0\0\0\0\0\x71\xa1\x51\xff\0= \0\0\ +\0\xbf\x86\0\0\0\0\0\0\x79\xa8\x30\xff\0\0\0\0\x79\xa0\x28\xff\0\0\0\0\x15= \x01\ +\x3a\0\0\0\0\0\x71\x72\x03\0\0\0\0\0\x67\x02\0\0\x08\0\0\0\x71\x71\x02\0\0= \0\0\ +\0\x4f\x12\0\0\0\0\0\0\x71\x73\x04\0\0\0\0\0\x67\x03\0\0\x10\0\0\0\x71\x71= \x05\ +\0\0\0\0\0\x67\x01\0\0\x18\0\0\0\x4f\x31\0\0\0\0\0\0\x4f\x21\0\0\0\0\0\0\x= 71\ +\xa2\x53\xff\0\0\0\0\x15\x02\x35\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02\0\0= \x10\ +\0\0\0\x15\x02\x32\0\0\0\0\0\x71\xa2\x55\xff\0\0\0\0\x71\xa3\x54\xff\0\0\0= \0\ +\xbf\x34\0\0\0\0\0\0\x4f\x24\0\0\0\0\0\0\x57\x04\0\0\xff\0\0\0\x55\x04\x5d= \0\0\ +\0\0\0\xb7\x03\0\0\x05\0\0\0\x6b\x36\xc4\0\0\0\0\0\x57\x01\0\0\x80\0\0\0\x= bf\ +\xa3\0\0\0\0\0\0\x07\x03\0\0\x5c\xff\xff\xff\x05\0\x60\0\0\0\0\0\x71\xa2\x= 52\ +\xff\0\0\0\0\x15\x02\x0e\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02\0\0\x04\0\0= \0\ +\x15\x02\x0b\0\0\0\0\0\xb7\x01\0\0\x03\0\0\0\x6b\x16\xc4\0\0\0\0\0\x61\xa1= \x5c\ +\xff\0\0\0\0\x63\x1a\xa0\xff\0\0\0\0\x61\xa1\x60\xff\0\0\0\0\x63\x1a\xa4\x= ff\0\ +\0\0\0\x69\xa1\x58\xff\0\0\0\0\x6b\x1a\xa8\xff\0\0\0\0\x69\xa1\x5a\xff\0\0= \0\0\ +\x6b\x1a\xaa\xff\0\0\0\0\x05\0\x72\0\0\0\0\0\x57\x01\0\0\x01\0\0\0\x15\x01= \x0d\ +\0\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x6b\x16\xc4\0\0\0\0\0\x61\xa1\x5c\xff\0\0= \0\0\ +\x63\x1a\xa0\xff\0\0\0\0\x61\xa1\x60\xff\0\0\0\0\x63\x1a\xa4\xff\0\0\0\0\x= 05\0\ +\x69\0\0\0\0\0\xb7\x09\0\0\x3c\0\0\0\x79\xa6\x38\xff\0\0\0\0\x79\xa8\x40\x= ff\0\ +\0\0\0\x67\0\0\0\x20\0\0\0\x77\0\0\0\x20\0\0\0\x15\0\xb9\xff\0\0\0\0\x71\x= 71\ +\x08\0\0\0\0\0\x71\x72\x09\0\0\0\0\0\x67\x02\0\0\x08\0\0\0\x4f\x12\0\0\0\0= \0\0\ +\x6b\x26\xc6\0\0\0\0\0\xb7\0\0\0\0\0\0\0\x95\0\0\0\0\0\0\0\x71\xa2\x52\xff= \0\0\ +\0\0\x15\x02\x20\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02\0\0\x20\0\0\0\x15\x= 02\ +\x1d\0\0\0\0\0\x71\xa2\x55\xff\0\0\0\0\x71\xa3\x54\xff\0\0\0\0\xbf\x34\0\0= \0\0\ +\0\0\x4f\x24\0\0\0\0\0\0\x57\x04\0\0\xff\0\0\0\x55\x04\xbf\0\0\0\0\0\xb7\x= 03\0\ +\0\x06\0\0\0\x6b\x36\xc4\0\0\0\0\0\x57\x01\0\0\0\x01\0\0\xbf\xa3\0\0\0\0\0= \0\ +\x07\x03\0\0\x5c\xff\xff\xff\x05\0\xc2\0\0\0\0\0\xb7\x01\0\0\x01\0\0\0\x73= \x1a\ +\x52\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x7b\x1a\xc8\xff\0\0\0\0\xbf\xa3\0\0\0= \0\0\ +\0\x07\x03\0\0\xc8\xff\xff\xff\xbf\x86\0\0\0\0\0\0\xbf\x61\0\0\0\0\0\0\xb7= \x04\ +\0\0\x08\0\0\0\xb7\x05\0\0\x01\0\0\0\x85\0\0\0\x44\0\0\0\x67\0\0\0\x20\0\0= \0\ +\x77\0\0\0\x20\0\0\0\x55\0\xda\xff\0\0\0\0\x05\0\xc1\xfe\0\0\0\0\x15\x09\x= 07\ +\xff\x87\0\0\0\x05\0\x90\xff\0\0\0\0\xbf\x12\0\0\0\0\0\0\x57\x02\0\0\x08\0= \0\0\ +\x15\x02\xd4\xff\0\0\0\0\x71\xa2\x55\xff\0\0\0\0\x71\xa3\x54\xff\0\0\0\0\x= bf\ +\x34\0\0\0\0\0\0\x4f\x24\0\0\0\0\0\0\x57\x04\0\0\xff\0\0\0\x55\x04\xb1\0\0= \0\0\ +\0\xb7\x03\0\0\x04\0\0\0\x6b\x36\xc4\0\0\0\0\0\x57\x01\0\0\x40\0\0\0\xbf\x= a3\0\ +\0\0\0\0\0\x07\x03\0\0\x5c\xff\xff\xff\x05\0\xb4\0\0\0\0\0\x57\x01\0\0\x80= \0\0\ +\0\xb7\x04\0\0\x05\0\0\0\x15\x01\x01\0\0\0\0\0\xb7\x04\0\0\x08\0\0\0\x6b\x= 46\ +\xc4\0\0\0\0\0\x15\x03\xa0\xff\0\0\0\0\x15\x01\x9f\xff\0\0\0\0\xbf\xa3\0\0= \0\0\ +\0\0\x07\x03\0\0\x7c\xff\xff\xff\xb7\x04\0\0\x10\0\0\0\xb7\x05\0\0\x10\0\0= \0\ +\x15\x01\x01\0\0\0\0\0\xb7\x05\0\0\x30\0\0\0\xbf\x21\0\0\0\0\0\0\x15\x01\x= 01\0\ +\0\0\0\0\xbf\x54\0\0\0\0\0\0\xbf\xa1\0\0\0\0\0\0\x07\x01\0\0\x50\xff\xff\x= ff\ +\x0f\x41\0\0\0\0\0\0\x61\x32\x04\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\x61\x34\0= \0\0\ +\0\0\0\x4f\x42\0\0\0\0\0\0\x61\x34\x08\0\0\0\0\0\x61\x33\x0c\0\0\0\0\0\x67= \x03\ +\0\0\x20\0\0\0\x4f\x43\0\0\0\0\0\0\x69\xa4\x5a\xff\0\0\0\0\x6b\x4a\xc2\xff= \0\0\ +\0\0\x69\xa4\x58\xff\0\0\0\0\x6b\x4a\xc0\xff\0\0\0\0\x7b\x3a\xa8\xff\0\0\0= \0\ +\x7b\x2a\xa0\xff\0\0\0\0\x61\x12\x18\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\x61\x= 13\ +\x14\0\0\0\0\0\x4f\x32\0\0\0\0\0\0\x7b\x2a\xb8\xff\0\0\0\0\x61\x12\x0c\0\0= \0\0\ +\0\x61\x11\x10\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x4f\x21\0\0\0\0\0\0\x7b\x1a= \xb0\ +\xff\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x16\xc0\0\0\0\0\0\x07\x08\0\0\x04\0\0= \0\ +\x61\x03\0\0\0\0\0\0\xb7\x05\0\0\0\0\0\0\xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\x= a0\ +\xff\xff\xff\x0f\x12\0\0\0\0\0\0\x71\x24\0\0\0\0\0\0\xbf\x42\0\0\0\0\0\0\x= 67\ +\x02\0\0\x38\0\0\0\xc7\x02\0\0\x3f\0\0\0\x5f\x32\0\0\0\0\0\0\xaf\x52\0\0\0= \0\0\ +\0\xbf\x85\0\0\0\0\0\0\x0f\x15\0\0\0\0\0\0\x71\x55\0\0\0\0\0\0\x67\x03\0\0= \x01\ +\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x07\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40= \0\0\ +\0\0\0\0\x67\0\0\0\x39\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x= 02\0\ +\0\0\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x06\0\0\0\x57\0\0\0\x01\0\0\0\x67= \x03\ +\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3a\0\0\0= \xc7\ +\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\x67\x03\0\0\x01\0= \0\0\ +\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x05\0\0\0\x57\0\0\0\x01\0\0\0\x4f\x03\0\0\0= \0\0\ +\0\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3b\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0= \0\0\ +\0\0\xaf\x02\0\0\0\0\0\0\x67\x03\0\0\x01\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0= \0\ +\x04\0\0\0\x57\0\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67= \0\0\ +\0\x3c\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\x= bf\ +\x50\0\0\0\0\0\0\x77\0\0\0\x03\0\0\0\x57\0\0\0\x01\0\0\0\x67\x03\0\0\x01\0= \0\0\ +\x4f\x03\0\0\0\0\0\0\xbf\x40\0\0\0\0\0\0\x67\0\0\0\x3d\0\0\0\xc7\0\0\0\x3f= \0\0\ +\0\x5f\x30\0\0\0\0\0\0\xaf\x02\0\0\0\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x= 02\0\ +\0\0\x57\0\0\0\x01\0\0\0\x67\x03\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\xbf\x40= \0\0\ +\0\0\0\0\x67\0\0\0\x3e\0\0\0\xc7\0\0\0\x3f\0\0\0\x5f\x30\0\0\0\0\0\0\xaf\x= 02\0\ +\0\0\0\0\0\xbf\x50\0\0\0\0\0\0\x77\0\0\0\x01\0\0\0\x57\0\0\0\x01\0\0\0\x67= \x03\ +\0\0\x01\0\0\0\x4f\x03\0\0\0\0\0\0\x57\x04\0\0\x01\0\0\0\x87\x04\0\0\0\0\0= \0\ +\x5f\x34\0\0\0\0\0\0\xaf\x42\0\0\0\0\0\0\x57\x05\0\0\x01\0\0\0\x67\x03\0\0= \x01\ +\0\0\0\x4f\x53\0\0\0\0\0\0\x07\x01\0\0\x01\0\0\0\xbf\x25\0\0\0\0\0\0\x15\x= 01\ +\x01\0\x24\0\0\0\x05\0\xa9\xff\0\0\0\0\x63\x26\xc0\0\0\0\0\0\x71\x71\x06\0= \0\0\ +\0\0\x71\x73\x07\0\0\0\0\0\x67\x03\0\0\x08\0\0\0\x4f\x13\0\0\0\0\0\0\x67\x= 02\0\ +\0\x20\0\0\0\x77\x02\0\0\x20\0\0\0\x9f\x32\0\0\0\0\0\0\x63\x2a\x50\xff\0\0= \0\0\ +\xbf\xa2\0\0\0\0\0\0\x07\x02\0\0\x50\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\x85\0\0\0\x01\0\0\0\x15\0\x32\xff\0\0\0\0\x69\x01\0\0\0\0\0\0\x6b\x= 16\ +\xc6\0\0\0\0\0\x05\0\x34\xff\0\0\0\0\x57\x01\0\0\0\x01\0\0\xb7\x04\0\0\x06= \0\0\ +\0\x15\x01\x01\0\0\0\0\0\xb7\x04\0\0\x09\0\0\0\x6b\x46\xc4\0\0\0\0\0\x15\x= 03\ +\x3e\xff\0\0\0\0\x15\x01\x3d\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\x= 7c\ +\xff\xff\xff\xb7\x04\0\0\x10\0\0\0\xb7\x05\0\0\x10\0\0\0\x15\x01\x01\0\0\0= \0\0\ +\xb7\x05\0\0\x30\0\0\0\xbf\x21\0\0\0\0\0\0\x15\x01\x68\xff\0\0\0\0\x05\0\x= 66\ +\xff\0\0\0\0\xb7\x09\0\0\x2b\0\0\0\x05\0\x1a\xff\0\0\0\0\x57\x01\0\0\x40\0= \0\0\ +\xb7\x04\0\0\x04\0\0\0\x15\x01\x01\0\0\0\0\0\xb7\x04\0\0\x07\0\0\0\x6b\x46= \xc4\ +\0\0\0\0\0\x15\x03\x4c\xff\0\0\0\0\x15\x01\x4b\xff\0\0\0\0\xbf\xa3\0\0\0\0= \0\0\ +\x07\x03\0\0\x7c\xff\xff\xff\x61\x34\x0c\0\0\0\0\0\x67\x04\0\0\x20\0\0\0\x= 61\ +\x35\x08\0\0\0\0\0\x4f\x54\0\0\0\0\0\0\x7b\x4a\xa8\xff\0\0\0\0\x61\x34\0\0= \0\0\ +\0\0\x61\x33\x04\0\0\0\0\0\x67\x03\0\0\x20\0\0\0\x4f\x43\0\0\0\0\0\0\x7b\x= 3a\ +\xa0\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xb0\xff\xff\xff\x15\x02\x= 09\0\ +\0\0\0\0\x15\x01\x08\0\0\0\0\0\x61\xa1\x98\xff\0\0\0\0\x63\x13\x0c\0\0\0\0= \0\ +\x61\xa1\x94\xff\0\0\0\0\x63\x13\x08\0\0\0\0\0\x61\xa1\x90\xff\0\0\0\0\x63= \x13\ +\x04\0\0\0\0\0\x61\xa1\x8c\xff\0\0\0\0\x05\0\x07\0\0\0\0\0\x61\xa1\x78\xff= \0\0\ +\0\0\x63\x13\x0c\0\0\0\0\0\x61\xa1\x74\xff\0\0\0\0\x63\x13\x08\0\0\0\0\0\x= 61\ +\xa1\x70\xff\0\0\0\0\x63\x13\x04\0\0\0\0\0\x61\xa1\x6c\xff\0\0\0\0\x63\x13= \0\0\ +\0\0\0\0\x05\0\x58\xff\0\0\0\0\x47\x50\x4c\x20\x76\x32\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x9f\xeb\x01\0\x18\0\0\0\0\0\0\0\x50\x05\0\0\x50\x05\0\0\x= 0d\ +\x14\0\0\0\0\0\0\0\0\0\x02\x03\0\0\0\x01\0\0\0\0\0\0\x01\x04\0\0\0\x20\0\0= \x01\ +\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x02\0\0\0\x05\0\0\0\0\0\0\x= 01\ +\x04\0\0\0\x20\0\0\0\0\0\0\0\0\0\0\x02\x06\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0= \x02\ +\0\0\0\x04\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\x02\x08\0\0\0\0\0\0\0\0\0\0\x03\0= \0\0\ +\0\x02\0\0\0\x04\0\0\0\x0a\0\0\0\0\0\0\0\0\0\0\x02\x0a\0\0\0\0\0\0\0\0\0\0= \x03\ +\0\0\0\0\x02\0\0\0\x04\0\0\0\x01\0\0\0\0\0\0\0\x04\0\0\x04\x20\0\0\0\x19\0= \0\0\ +\x01\0\0\0\0\0\0\0\x1e\0\0\0\x05\0\0\0\x40\0\0\0\x27\0\0\0\x07\0\0\0\x80\0= \0\0\ +\x32\0\0\0\x09\0\0\0\xc0\0\0\0\x3e\0\0\0\0\0\0\x0e\x0b\0\0\0\x01\0\0\0\0\0= \0\0\ +\0\0\0\x02\x0e\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x28\0\0= \0\0\ +\0\0\0\x04\0\0\x04\x20\0\0\0\x19\0\0\0\x01\0\0\0\0\0\0\0\x1e\0\0\0\x05\0\0= \0\ +\x40\0\0\0\x27\0\0\0\x0d\0\0\0\x80\0\0\0\x32\0\0\0\x09\0\0\0\xc0\0\0\0\x59= \0\0\ +\0\0\0\0\x0e\x0f\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x02\x12\0\0\0\0\0\0\0\0\0\0= \x03\ +\0\0\0\0\x02\0\0\0\x04\0\0\0\x80\0\0\0\0\0\0\0\x04\0\0\x04\x20\0\0\0\x19\0= \0\0\ +\x01\0\0\0\0\0\0\0\x1e\0\0\0\x05\0\0\0\x40\0\0\0\x27\0\0\0\x01\0\0\0\x80\0= \0\0\ +\x32\0\0\0\x11\0\0\0\xc0\0\0\0\x72\0\0\0\0\0\0\x0e\x13\0\0\0\x01\0\0\0\0\0= \0\0\ +\0\0\0\x02\x16\0\0\0\x90\0\0\0\x25\0\0\x04\xc8\0\0\0\x9a\0\0\0\x17\0\0\0\0= \0\0\ +\0\x9e\0\0\0\x17\0\0\0\x20\0\0\0\xa7\0\0\0\x17\0\0\0\x40\0\0\0\xac\0\0\0\x= 17\0\ +\0\0\x60\0\0\0\xba\0\0\0\x17\0\0\0\x80\0\0\0\xc3\0\0\0\x17\0\0\0\xa0\0\0\0= \xd0\ +\0\0\0\x17\0\0\0\xc0\0\0\0\xd9\0\0\0\x17\0\0\0\xe0\0\0\0\xe4\0\0\0\x17\0\0= \0\0\ +\x01\0\0\xed\0\0\0\x17\0\0\0\x20\x01\0\0\xfd\0\0\0\x17\0\0\0\x40\x01\0\0\x= 05\ +\x01\0\0\x17\0\0\0\x60\x01\0\0\x0e\x01\0\0\x19\0\0\0\x80\x01\0\0\x11\x01\0= \0\ +\x17\0\0\0\x20\x02\0\0\x16\x01\0\0\x17\0\0\0\x40\x02\0\0\x21\x01\0\0\x17\0= \0\0\ +\x60\x02\0\0\x26\x01\0\0\x17\0\0\0\x80\x02\0\0\x2f\x01\0\0\x17\0\0\0\xa0\x= 02\0\ +\0\x37\x01\0\0\x17\0\0\0\xc0\x02\0\0\x3e\x01\0\0\x17\0\0\0\xe0\x02\0\0\x49= \x01\ +\0\0\x17\0\0\0\0\x03\0\0\x53\x01\0\0\x1a\0\0\0\x20\x03\0\0\x5e\x01\0\0\x1a= \0\0\ +\0\xa0\x03\0\0\x68\x01\0\0\x17\0\0\0\x20\x04\0\0\x74\x01\0\0\x17\0\0\0\x40= \x04\ +\0\0\x7f\x01\0\0\x17\0\0\0\x60\x04\0\0\0\0\0\0\x1b\0\0\0\x80\x04\0\0\x89\x= 01\0\ +\0\x1d\0\0\0\xc0\x04\0\0\x90\x01\0\0\x17\0\0\0\0\x05\0\0\x99\x01\0\0\x17\0= \0\0\ +\x20\x05\0\0\0\0\0\0\x1f\0\0\0\x40\x05\0\0\xa2\x01\0\0\x17\0\0\0\x80\x05\0= \0\ +\xab\x01\0\0\x21\0\0\0\xa0\x05\0\0\xb7\x01\0\0\x1d\0\0\0\xc0\x05\0\0\xc0\x= 01\0\ +\0\x17\0\0\0\0\x06\0\0\xd0\x01\0\0\x23\0\0\0\x20\x06\0\0\xe1\x01\0\0\x23\0= \0\0\ +\x30\x06\0\0\xf0\x01\0\0\0\0\0\x08\x18\0\0\0\xf6\x01\0\0\0\0\0\x01\x04\0\0= \0\ +\x20\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x17\0\0\0\x04\0\0\0\x05\0\0\0\0\0\0\0= \0\0\ +\0\x03\0\0\0\0\x17\0\0\0\x04\0\0\0\x04\0\0\0\0\0\0\0\x01\0\0\x05\x08\0\0\0= \x03\ +\x02\0\0\x1c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x2c\0\0\0\x0d\x02\0\0\0\0\0\x= 08\ +\x1e\0\0\0\x13\x02\0\0\0\0\0\x01\x08\0\0\0\x40\0\0\0\0\0\0\0\x01\0\0\x05\x= 08\0\ +\0\0\x26\x02\0\0\x20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x2d\0\0\0\x29\x02\0\0= \0\0\ +\0\x08\x22\0\0\0\x2e\x02\0\0\0\0\0\x01\x01\0\0\0\x08\0\0\0\x3c\x02\0\0\0\0= \0\ +\x08\x24\0\0\0\x42\x02\0\0\0\0\0\x01\x02\0\0\0\x10\0\0\0\0\0\0\0\x01\0\0\x= 0d\ +\x02\0\0\0\x51\x02\0\0\x15\0\0\0\x55\x02\0\0\x01\0\0\x0c\x25\0\0\0\xda\x13= \0\0\ +\0\0\0\x01\x01\0\0\0\x08\0\0\x01\0\0\0\0\0\0\0\x03\0\0\0\0\x27\0\0\0\x04\0= \0\0\ +\x07\0\0\0\xdf\x13\0\0\0\0\0\x0e\x28\0\0\0\x01\0\0\0\xe8\x13\0\0\x03\0\0\x= 0f\0\ +\0\0\0\x0c\0\0\0\0\0\0\0\x20\0\0\0\x10\0\0\0\0\0\0\0\x20\0\0\0\x14\0\0\0\0= \0\0\ +\0\x20\0\0\0\xee\x13\0\0\x01\0\0\x0f\0\0\0\0\x29\0\0\0\0\0\0\0\x07\0\0\0\x= f6\ +\x13\0\0\0\0\0\x07\0\0\0\0\x04\x14\0\0\0\0\0\x07\0\0\0\0\0\x69\x6e\x74\0\x= 5f\ +\x5f\x41\x52\x52\x41\x59\x5f\x53\x49\x5a\x45\x5f\x54\x59\x50\x45\x5f\x5f\0= \x74\ +\x79\x70\x65\0\x6b\x65\x79\x5f\x73\x69\x7a\x65\0\x76\x61\x6c\x75\x65\x5f\x= 73\ +\x69\x7a\x65\0\x6d\x61\x78\x5f\x65\x6e\x74\x72\x69\x65\x73\0\x74\x61\x70\x= 5f\ +\x72\x73\x73\x5f\x6d\x61\x70\x5f\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x= 69\ +\x6f\x6e\x73\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x74\x6f\x65= \x70\ +\x6c\x69\x74\x7a\x5f\x6b\x65\x79\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61= \x70\ +\x5f\x69\x6e\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x5f\x74\x61\x62\x6c\x65\0= \x5f\ +\x5f\x73\x6b\x5f\x62\x75\x66\x66\0\x6c\x65\x6e\0\x70\x6b\x74\x5f\x74\x79\x= 70\ +\x65\0\x6d\x61\x72\x6b\0\x71\x75\x65\x75\x65\x5f\x6d\x61\x70\x70\x69\x6e\x= 67\0\ +\x70\x72\x6f\x74\x6f\x63\x6f\x6c\0\x76\x6c\x61\x6e\x5f\x70\x72\x65\x73\x65= \x6e\ +\x74\0\x76\x6c\x61\x6e\x5f\x74\x63\x69\0\x76\x6c\x61\x6e\x5f\x70\x72\x6f\x= 74\ +\x6f\0\x70\x72\x69\x6f\x72\x69\x74\x79\0\x69\x6e\x67\x72\x65\x73\x73\x5f\x= 69\ +\x66\x69\x6e\x64\x65\x78\0\x69\x66\x69\x6e\x64\x65\x78\0\x74\x63\x5f\x69\x= 6e\ +\x64\x65\x78\0\x63\x62\0\x68\x61\x73\x68\0\x74\x63\x5f\x63\x6c\x61\x73\x73= \x69\ +\x64\0\x64\x61\x74\x61\0\x64\x61\x74\x61\x5f\x65\x6e\x64\0\x6e\x61\x70\x69= \x5f\ +\x69\x64\0\x66\x61\x6d\x69\x6c\x79\0\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x= 34\0\ +\x6c\x6f\x63\x61\x6c\x5f\x69\x70\x34\0\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70= \x36\ +\0\x6c\x6f\x63\x61\x6c\x5f\x69\x70\x36\0\x72\x65\x6d\x6f\x74\x65\x5f\x70\x= 6f\ +\x72\x74\0\x6c\x6f\x63\x61\x6c\x5f\x70\x6f\x72\x74\0\x64\x61\x74\x61\x5f\x= 6d\ +\x65\x74\x61\0\x74\x73\x74\x61\x6d\x70\0\x77\x69\x72\x65\x5f\x6c\x65\x6e\0= \x67\ +\x73\x6f\x5f\x73\x65\x67\x73\0\x67\x73\x6f\x5f\x73\x69\x7a\x65\0\x74\x73\x= 74\ +\x61\x6d\x70\x5f\x74\x79\x70\x65\0\x68\x77\x74\x73\x74\x61\x6d\x70\0\x76\x= 6e\ +\x65\x74\x5f\x68\x61\x73\x68\x5f\x76\x61\x6c\x75\x65\0\x76\x6e\x65\x74\x5f= \x68\ +\x61\x73\x68\x5f\x72\x65\x70\x6f\x72\x74\0\x76\x6e\x65\x74\x5f\x72\x73\x73= \x5f\ +\x71\x75\x65\x75\x65\0\x5f\x5f\x75\x33\x32\0\x75\x6e\x73\x69\x67\x6e\x65\x= 64\ +\x20\x69\x6e\x74\0\x66\x6c\x6f\x77\x5f\x6b\x65\x79\x73\0\x5f\x5f\x75\x36\x= 34\0\ +\x75\x6e\x73\x69\x67\x6e\x65\x64\x20\x6c\x6f\x6e\x67\x20\x6c\x6f\x6e\x67\0= \x73\ +\x6b\0\x5f\x5f\x75\x38\0\x75\x6e\x73\x69\x67\x6e\x65\x64\x20\x63\x68\x61\x= 72\0\ +\x5f\x5f\x75\x31\x36\0\x75\x6e\x73\x69\x67\x6e\x65\x64\x20\x73\x68\x6f\x72= \x74\ +\0\x73\x6b\x62\0\x74\x75\x6e\x5f\x72\x73\x73\x5f\x73\x74\x65\x65\x72\x69\x= 6e\ +\x67\x5f\x70\x72\x6f\x67\0\x76\x6e\x65\x74\x5f\x68\x61\x73\x68\0\x2f\x68\x= 6f\ +\x6d\x65\x2f\x61\x6c\x61\x72\x6d\x2f\x71\x2f\x76\x61\x72\x2f\x71\x65\x6d\x= 75\ +\x2f\x74\x6f\x6f\x6c\x73\x2f\x65\x62\x70\x66\x2f\x76\x6e\x65\x74\x5f\x68\x= 61\ +\x73\x68\x2e\x62\x70\x66\x2e\x63\0\x69\x6e\x74\x20\x74\x75\x6e\x5f\x72\x73= \x73\ +\x5f\x73\x74\x65\x65\x72\x69\x6e\x67\x5f\x70\x72\x6f\x67\x28\x73\x74\x72\x= 75\ +\x63\x74\x20\x5f\x5f\x73\x6b\x5f\x62\x75\x66\x66\x20\x2a\x73\x6b\x62\x29\0= \x2f\ +\x68\x6f\x6d\x65\x2f\x61\x6c\x61\x72\x6d\x2f\x71\x2f\x76\x61\x72\x2f\x71\x= 65\ +\x6d\x75\x2f\x74\x6f\x6f\x6c\x73\x2f\x65\x62\x70\x66\x2f\x2e\x2f\x72\x73\x= 73\ +\x2e\x62\x70\x66\x2e\x68\0\x20\x20\x20\x20\x5f\x5f\x75\x33\x32\x20\x6b\x65= \x79\ +\x20\x3d\x20\x30\x3b\0\x20\x20\x20\x20\x63\x6f\x6e\x66\x69\x67\x20\x3d\x20= \x62\ +\x70\x66\x5f\x6d\x61\x70\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x65\x6c\x65\x6d\x= 28\ +\x26\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x63\x6f\x6e\x66\x69\x= 67\ +\x75\x72\x61\x74\x69\x6f\x6e\x73\x2c\x20\x26\x6b\x65\x79\x29\x3b\0\x20\x20= \x20\ +\x20\x74\x6f\x65\x20\x3d\x20\x62\x70\x66\x5f\x6d\x61\x70\x5f\x6c\x6f\x6f\x= 6b\ +\x75\x70\x5f\x65\x6c\x65\x6d\x28\x26\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x= 61\ +\x70\x5f\x74\x6f\x65\x70\x6c\x69\x74\x7a\x5f\x6b\x65\x79\x2c\x20\x26\x6b\x= 65\ +\x79\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x21\x63\x6f\x6e\x66\x69\x67= \x20\ +\x7c\x7c\x20\x21\x74\x6f\x65\x29\x20\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28= \x63\ +\x6f\x6e\x66\x69\x67\x2d\x3e\x72\x65\x64\x69\x72\x65\x63\x74\x20\x26\x26\0= \x20\ +\x20\x20\x20\x5f\x5f\x75\x38\x20\x72\x73\x73\x5f\x69\x6e\x70\x75\x74\x5b\x= 48\ +\x41\x53\x48\x5f\x43\x41\x4c\x43\x55\x4c\x41\x54\x49\x4f\x4e\x5f\x42\x55\x= 46\ +\x46\x45\x52\x5f\x53\x49\x5a\x45\x5d\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20= \x20\ +\x73\x74\x72\x75\x63\x74\x20\x70\x61\x63\x6b\x65\x74\x5f\x68\x61\x73\x68\x= 5f\ +\x69\x6e\x66\x6f\x5f\x74\x20\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x= 20\ +\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x21\x69\x6e\x66\x6f= \x20\ +\x7c\x7c\x20\x21\x73\x6b\x62\x29\x20\x7b\0\x20\x20\x20\x20\x5f\x5f\x62\x65= \x31\ +\x36\x20\x72\x65\x74\x20\x3d\x20\x30\x3b\0\x20\x20\x20\x20\x65\x72\x72\x20= \x3d\ +\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x= 73\ +\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x6f\x66\x66\x= 73\ +\x65\x74\x2c\x20\x26\x72\x65\x74\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x72\x= 65\ +\x74\x29\x2c\0\x20\x20\x20\x20\x69\x66\x20\x28\x65\x72\x72\x29\x20\x7b\0\x= 20\ +\x20\x20\x20\x73\x77\x69\x74\x63\x68\x20\x28\x62\x70\x66\x5f\x6e\x74\x6f\x= 68\ +\x73\x28\x72\x65\x74\x29\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x65= \x72\ +\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x= 79\ +\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x= 6f\ +\x66\x66\x73\x65\x74\x2c\x20\x26\x72\x65\x74\x2c\x20\x73\x69\x7a\x65\x6f\x= 66\ +\x28\x72\x65\x74\x29\x2c\0\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72= \x65\ +\x74\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x6c\x33\x5f\x70\x72\x6f\x74\x6f= \x63\ +\x6f\x6c\x20\x3d\x3d\x20\x30\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20= \x69\ +\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x69\x70\x76\x34\x20\x3d\x20\x31\x3b\0\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x69\x70\x68\x64\x72\x= 20\ +\x69\x70\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72= \x72\ +\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x= 74\ +\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x30\x= 2c\ +\x20\x26\x69\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x69\x70\x29\x2c\0\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x72\x72\x29\x20\x7b\0\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x66\x72\x61\x67\x= 6d\ +\x65\x6e\x74\x65\x64\x20\x3d\x20\x21\x21\x69\x70\x2e\x66\x72\x61\x67\x5f\x= 6f\ +\x66\x66\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69= \x6e\ +\x5f\x73\x72\x63\x20\x3d\x20\x69\x70\x2e\x73\x61\x64\x64\x72\x3b\0\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x6e\x5f\x64\x73\x74\x20\x= 3d\ +\x20\x69\x70\x2e\x64\x61\x64\x64\x72\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20= \x6c\ +\x34\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x20\x69\x70\x2e\x70\x72\x= 6f\ +\x74\x6f\x63\x6f\x6c\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x34\x5f\x6f= \x66\ +\x66\x73\x65\x74\x20\x3d\x20\x69\x70\x2e\x69\x68\x6c\x20\x2a\x20\x34\x3b\0= \x20\ +\x20\x20\x20\x69\x66\x20\x28\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x= 20\ +\x21\x3d\x20\x30\x20\x26\x26\x20\x21\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x= 66\ +\x72\x61\x67\x6d\x65\x6e\x74\x65\x64\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x69\x66\x20\x28\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x= 3d\ +\x20\x49\x50\x50\x52\x4f\x54\x4f\x5f\x54\x43\x50\x29\x20\x7b\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x74\x= 63\ +\x70\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x73\ +\x74\x72\x75\x63\x74\x20\x74\x63\x70\x68\x64\x72\x20\x74\x63\x70\x20\x3d\x= 20\ +\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72= \x20\ +\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x= 65\ +\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x6c\x34\x= 5f\ +\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x74\x63\x70\x2c\x20\x73\x69\x7a\x65\x= 6f\ +\x66\x28\x74\x63\x70\x29\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x69\x66\x20\x28\x65\x72\x72\x29\x20\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28= \x70\ +\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x69\x70\x76\x34\x= 29\ +\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x63\x6b= \x65\ +\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x74\x63\x70\x20\x26\x26\0\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x69\x70\x76\x36\x= 20\ +\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74= \x20\ +\x69\x70\x76\x36\x68\x64\x72\x20\x69\x70\x36\x20\x3d\x20\x7b\x7d\x3b\0\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x= 62\ +\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x= 76\ +\x65\x28\x73\x6b\x62\x2c\x20\x30\x2c\x20\x26\x69\x70\x36\x2c\x20\x73\x69\x= 7a\ +\x65\x6f\x66\x28\x69\x70\x36\x29\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x69= \x6e\ +\x66\x6f\x2d\x3e\x69\x6e\x36\x5f\x73\x72\x63\x20\x3d\x20\x69\x70\x36\x2e\x= 73\ +\x61\x64\x64\x72\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d= \x3e\ +\x69\x6e\x36\x5f\x64\x73\x74\x20\x3d\x20\x69\x70\x36\x2e\x64\x61\x64\x64\x= 72\ +\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63= \x6f\ +\x6c\x20\x3d\x20\x69\x70\x36\x2e\x6e\x65\x78\x74\x68\x64\x72\x3b\0\x20\x20= \x20\ +\x20\x73\x77\x69\x74\x63\x68\x20\x28\x68\x64\x72\x5f\x74\x79\x70\x65\x29\x= 20\ +\x7b\0\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x69\x70\x76\x36\x5f\x6f= \x70\ +\x74\x5f\x68\x64\x72\x20\x65\x78\x74\x5f\x68\x64\x72\x20\x3d\x20\x7b\x7d\x= 3b\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x= 73\ +\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x= 74\ +\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x= 74\ +\x2c\x20\x26\x65\x78\x74\x5f\x68\x64\x72\x2c\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x69\x66\x20\x28\x2a\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3d\x= 3d\ +\x20\x49\x50\x50\x52\x4f\x54\x4f\x5f\x52\x4f\x55\x54\x49\x4e\x47\x29\x20\x= 7b\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x= 20\ +\x69\x70\x76\x36\x5f\x72\x74\x5f\x68\x64\x72\x20\x65\x78\x74\x5f\x72\x74\x= 20\ +\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65= \x72\ +\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x= 79\ +\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x2c\x20\x= 2a\ +\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x65\x78\x74\x5f\x72\x74\x= 2c\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x28\x65\x= 78\ +\x74\x5f\x72\x74\x2e\x74\x79\x70\x65\x20\x3d\x3d\x20\x49\x50\x56\x36\x5f\x= 53\ +\x52\x43\x52\x54\x5f\x54\x59\x50\x45\x5f\x32\x29\x20\x26\x26\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2a\x6c\x= 34\ +\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x20\x6f\x66\x66\x73\x65\x74\x6f\x66\x= 28\ +\x73\x74\x72\x75\x63\x74\x20\x72\x74\x32\x5f\x68\x64\x72\x2c\x20\x61\x64\x= 64\ +\x72\x29\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x61\x64\x= 5f\ +\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x6b\x62\x= 2c\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x= 20\ +\x28\x65\x72\x72\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x69\x70\x76\x36\x5f\x= 65\ +\x78\x74\x5f\x64\x73\x74\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x7d\x20\x5f\x5f\x61\x74\x74\x72\x69\x62\x75\x74\x65\x5f\x= 5f\ +\x28\x28\x70\x61\x63\x6b\x65\x64\x29\x29\x20\x6f\x70\x74\x20\x3d\x20\x7b\x= 7d\ +\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f= \x70\ +\x74\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x3d\x20\x28\x6f\x70\x74\x2e\x74\x= 79\ +\x70\x65\x20\x3d\x3d\x20\x49\x50\x56\x36\x5f\x54\x4c\x56\x5f\x50\x41\x44\x= 31\ +\x29\x20\x3f\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x69\x66\x20\x28\x6f\x70\x74\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x20\x31\x= 20\ +\x3e\x3d\x20\x65\x78\x74\x5f\x68\x64\x72\x2e\x68\x64\x72\x6c\x65\x6e\x20\x= 2a\ +\x20\x38\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x= 61\ +\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x= 6b\ +\x62\x2c\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x20\x6f\x70\x= 74\ +\x5f\x6f\x66\x66\x73\x65\x74\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6f\x70\x74\x2e\x74\x79\x70\x65\x20\x= 3d\ +\x3d\x20\x49\x50\x56\x36\x5f\x54\x4c\x56\x5f\x48\x41\x4f\x29\x20\x7b\0\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 20\ +\x20\x20\x20\x2a\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x20\x6f\x70\x= 74\ +\x5f\x6f\x66\x66\x73\x65\x74\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x= 73\ +\x6b\x62\x5f\x6c\x6f\x61\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x= 74\ +\x69\x76\x65\x28\x73\x6b\x62\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x72\x72\x29\x20\x= 7b\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 20\ +\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x69\x70\x76\x36\x5f\x65\x78\x74\x= 5f\ +\x73\x72\x63\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x69\x6e\x66\x6f\x2d\x3e\x69\x73\x5f\x66\x72\x61\x67\x6d\x65\x6e\x74\x= 65\ +\x64\x20\x3d\x20\x74\x72\x75\x65\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x2a= \x6c\ +\x34\x5f\x6f\x66\x66\x73\x65\x74\x20\x2b\x3d\x20\x28\x65\x78\x74\x5f\x68\x= 64\ +\x72\x2e\x68\x64\x72\x6c\x65\x6e\x20\x2b\x20\x31\x29\x20\x2a\x20\x38\x3b\0= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x2a\x6c\x34\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x= 6c\ +\x20\x3d\x20\x65\x78\x74\x5f\x68\x64\x72\x2e\x6e\x65\x78\x74\x68\x64\x72\x= 3b\0\ +\x20\x20\x20\x20\x66\x6f\x72\x20\x28\x75\x6e\x73\x69\x67\x6e\x65\x64\x20\x= 69\ +\x6e\x74\x20\x69\x20\x3d\x20\x30\x3b\x20\x69\x20\x3c\x20\x49\x50\x36\x5f\x= 45\ +\x58\x54\x45\x4e\x53\x49\x4f\x4e\x53\x5f\x43\x4f\x55\x4e\x54\x3b\x20\x2b\x= 2b\ +\x69\x29\x20\x7b\0\x20\x20\x20\x20\x7d\x20\x65\x6c\x73\x65\x20\x69\x66\x20= \x28\ +\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x69\x70\x76\x= 36\ +\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2a\x72\x65= \x70\ +\x6f\x72\x74\x20\x3d\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x= 2e\ +\x69\x73\x5f\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x73\x72\x63\x20\x7c\x7c\x= 20\ +\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x69\x70\x76\x= 36\ +\x5f\x65\x78\x74\x5f\x64\x73\x74\x29\x20\x26\x26\0\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x26\x70\x61\x63\x6b\x65\x74\x= 5f\ +\x69\x6e\x66\x6f\x2e\x69\x6e\x36\x5f\x73\x72\x63\x2c\0\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x7d\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x= 74\ +\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x75\x64\x70\x20\x26\x26\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x7d\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x63\x6f\x6e\x= 66\ +\x69\x67\x2d\x3e\x68\x61\x73\x68\x5f\x74\x79\x70\x65\x73\x20\x26\x20\x56\x= 49\ +\x52\x54\x49\x4f\x5f\x4e\x45\x54\x5f\x52\x53\x53\x5f\x48\x41\x53\x48\x5f\x= 54\ +\x59\x50\x45\x5f\x49\x50\x76\x34\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x2a\x72\x65\x70\x6f\x72\x74\x20\x3d\x20\x56\x49\x52\x54\x= 49\ +\x4f\x5f\x4e\x45\x54\x5f\x48\x41\x53\x48\x5f\x52\x45\x50\x4f\x52\x54\x5f\x= 49\ +\x50\x76\x34\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f= \x6d\ +\x65\x6d\x63\x70\x79\x28\x26\x72\x73\x73\x5f\x69\x6e\x70\x75\x74\x5b\x2a\x= 62\ +\x79\x74\x65\x73\x5f\x77\x72\x69\x74\x74\x65\x6e\x5d\x2c\x20\x70\x74\x72\x= 2c\ +\x20\x73\x69\x7a\x65\x29\x3b\0\x20\x20\x20\x20\x2a\x72\x73\x73\x5f\x71\x75= \x65\ +\x75\x65\x20\x3d\x20\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x64\x65\x66\x61\x75\x= 6c\ +\x74\x5f\x71\x75\x65\x75\x65\x3b\0\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e= \x20\ +\x30\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x66\x6f= \x2d\ +\x3e\x69\x73\x5f\x75\x64\x70\x20\x3d\x20\x31\x3b\0\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x75\x64\x70\x68\x64\x72\x= 20\ +\x75\x64\x70\x20\x3d\x20\x7b\x7d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x65\x72\x72\x20\x3d\x20\x62\x70\x66\x5f\x73\x6b\x62\x5f\x6c\x6f\x= 61\ +\x64\x5f\x62\x79\x74\x65\x73\x5f\x72\x65\x6c\x61\x74\x69\x76\x65\x28\x73\x= 6b\ +\x62\x2c\x20\x6c\x34\x5f\x6f\x66\x66\x73\x65\x74\x2c\x20\x26\x75\x64\x70\x= 2c\ +\x20\x73\x69\x7a\x65\x6f\x66\x28\x75\x64\x70\x29\x2c\0\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x7d\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x63\x6f\x6e\x66\x69\x= 67\ +\x2d\x3e\x68\x61\x73\x68\x5f\x74\x79\x70\x65\x73\x20\x26\x20\x56\x49\x52\x= 54\ +\x49\x4f\x5f\x4e\x45\x54\x5f\x52\x53\x53\x5f\x48\x41\x53\x48\x5f\x54\x59\x= 50\ +\x45\x5f\x49\x50\x76\x36\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x63\x6f\x6e\x66\x69\x= 67\ +\x2d\x3e\x68\x61\x73\x68\x5f\x74\x79\x70\x65\x73\x20\x26\x20\x56\x49\x52\x= 54\ +\x49\x4f\x5f\x4e\x45\x54\x5f\x52\x53\x53\x5f\x48\x41\x53\x48\x5f\x54\x59\x= 50\ +\x45\x5f\x54\x43\x50\x5f\x45\x58\x29\x20\x3f\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x= 6f\ +\x2e\x69\x73\x5f\x69\x70\x76\x36\x5f\x65\x78\x74\x5f\x73\x72\x63\x20\x26\x= 26\0\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x= 26\ +\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x6e\x36\x5f\x65\x78\x= 74\ +\x5f\x73\x72\x63\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69= \x66\ +\x20\x28\x70\x61\x63\x6b\x65\x74\x5f\x69\x6e\x66\x6f\x2e\x69\x73\x5f\x69\x= 70\ +\x76\x36\x5f\x65\x78\x74\x5f\x64\x73\x74\x20\x26\x26\0\x20\x20\x20\x20\x2a= \x76\ +\x61\x6c\x75\x65\x20\x3d\x20\x30\x3b\0\x20\x20\x20\x20\x66\x6f\x72\x20\x28= \x62\ +\x79\x74\x65\x20\x3d\x20\x30\x3b\x20\x62\x79\x74\x65\x20\x3c\x20\x48\x41\x= 53\ +\x48\x5f\x43\x41\x4c\x43\x55\x4c\x41\x54\x49\x4f\x4e\x5f\x42\x55\x46\x46\x= 45\ +\x52\x5f\x53\x49\x5a\x45\x3b\x20\x62\x79\x74\x65\x2b\x2b\x29\x20\x7b\0\x20= \x20\ +\x20\x20\x5f\x5f\x75\x33\x32\x20\x6c\x65\x66\x74\x6d\x6f\x73\x74\x5f\x33\x= 32\ +\x5f\x62\x69\x74\x73\x20\x3d\x20\x6b\x65\x79\x2d\x3e\x6c\x65\x66\x74\x6d\x= 6f\ +\x73\x74\x5f\x33\x32\x5f\x62\x69\x74\x73\x3b\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x5f\x5f\x75\x38\x20\x69\x6e\x70\x75\x74\x5f\x62\x79\x74\x65\x20\x3d\x20\x= 69\ +\x6e\x70\x75\x74\x5b\x62\x79\x74\x65\x5d\x3b\0\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x69\x66\x20\x28\x69\x6e\x70\x75\x74\x5f\x62\x79\x74\x65\x= 20\ +\x26\x20\x28\x31\x20\x3c\x3c\x20\x37\x29\x29\x20\x7b\0\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x5f\x5f\x75\x38\x20\x6b\x65\x79\x5f\x62\x79\x74\x65\x20\x3d\x20\x= 6b\ +\x65\x79\x2d\x3e\x6e\x65\x78\x74\x5f\x62\x79\x74\x65\x5b\x62\x79\x74\x65\x= 5d\ +\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x28\x6c\x65\x66\x74\x6d\x6f\x73\x74\x5f\x33\x32\x5f\x62\x69\x74\x= 73\ +\x20\x3c\x3c\x20\x31\x29\x20\x7c\x20\x28\x28\x6b\x65\x79\x5f\x62\x79\x74\x= 65\ +\x20\x26\x20\x28\x31\x20\x3c\x3c\x20\x37\x29\x29\x20\x3e\x3e\x20\x37\x29\x= 3b\0\ +\x20\x20\x20\x20\x2a\x72\x65\x73\x75\x6c\x74\x20\x3d\x20\x61\x63\x63\x75\x= 6d\ +\x75\x6c\x61\x74\x6f\x72\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x75= \x33\ +\x32\x20\x74\x61\x62\x6c\x65\x5f\x69\x64\x78\x20\x3d\x20\x2a\x68\x61\x73\x= 68\ +\x5f\x76\x61\x6c\x75\x65\x20\x25\x20\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x69\x= 6e\ +\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x5f\x6c\x65\x6e\x3b\0\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x71\x75\x65\x75\x65\x20\x3d\x20\x62\x70\x66\x5f\x6d\x61\x= 70\ +\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x65\x6c\x65\x6d\x28\x26\x74\x61\x70\x5f\x= 72\ +\x73\x73\x5f\x6d\x61\x70\x5f\x69\x6e\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x= 5f\ +\x74\x61\x62\x6c\x65\x2c\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28= \x71\ +\x75\x65\x75\x65\x29\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x2a\x72\x73\x73\x5f\x71\x75\x65\x75\x65\x20\x3d\x20\x2a\x71\x75\x65\x75\x= 65\ +\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x28\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x68\x61\x73\x68\x5f\x= 74\ +\x79\x70\x65\x73\x20\x26\x20\x56\x49\x52\x54\x49\x4f\x5f\x4e\x45\x54\x5f\x= 52\ +\x53\x53\x5f\x48\x41\x53\x48\x5f\x54\x59\x50\x45\x5f\x55\x44\x50\x5f\x45\x= 58\ +\x29\x20\x3f\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20= \x20\ +\x20\x20\x20\x20\x20\x20\x28\x63\x6f\x6e\x66\x69\x67\x2d\x3e\x68\x61\x73\x= 68\ +\x5f\x74\x79\x70\x65\x73\x20\x26\x20\x56\x49\x52\x54\x49\x4f\x5f\x4e\x45\x= 54\ +\x5f\x52\x53\x53\x5f\x48\x41\x53\x48\x5f\x54\x59\x50\x45\x5f\x49\x50\x5f\x= 45\ +\x58\x29\x20\x3f\0\x63\x68\x61\x72\0\x5f\x6c\x69\x63\x65\x6e\x73\x65\0\x2e= \x6d\ +\x61\x70\x73\0\x6c\x69\x63\x65\x6e\x73\x65\0\x62\x70\x66\x5f\x66\x6c\x6f\x= 77\ +\x5f\x6b\x65\x79\x73\0\x62\x70\x66\x5f\x73\x6f\x63\x6b\0\0\0\0\x9f\xeb\x01= \0\ +\x20\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\x2c\x0e\0\0\x40\x0e\0\0\0\0\0\0\x08= \0\0\ +\0\x6b\x02\0\0\x01\0\0\0\0\0\0\0\x26\0\0\0\x10\0\0\0\x6b\x02\0\0\xe2\0\0\0= \0\0\ +\0\0\x75\x02\0\0\xa7\x02\0\0\0\x5c\0\0\x10\0\0\0\xd8\x02\0\0\x06\x03\0\0\x= 0b\ +\x8c\x08\0\x20\0\0\0\x75\x02\0\0\0\0\0\0\0\0\0\0\x28\0\0\0\xd8\x02\0\0\x19= \x03\ +\0\0\x0e\x94\x08\0\x50\0\0\0\xd8\x02\0\0\x5e\x03\0\0\x0b\x98\x08\0\x78\0\0= \0\ +\xd8\x02\0\0\x9e\x03\0\0\x11\xa0\x08\0\x80\0\0\0\xd8\x02\0\0\0\0\0\0\0\0\0= \0\ +\x88\0\0\0\xd8\x02\0\0\x9e\x03\0\0\x11\xa0\x08\0\x90\0\0\0\xd8\x02\0\0\xb9= \x03\ +\0\0\x11\xb0\x08\0\x98\0\0\0\xd8\x02\0\0\xb9\x03\0\0\x1a\xb0\x08\0\xa8\0\0= \0\ +\xd8\x02\0\0\xd5\x03\0\0\x0a\xf0\x05\0\xd0\0\0\0\xd8\x02\0\0\x0c\x04\0\0\x= 1f\ +\xfc\x05\0\x20\x01\0\0\xd8\x02\0\0\x3c\x04\0\0\x0f\x88\x04\0\x28\x01\0\0\x= d8\ +\x02\0\0\x55\x04\0\0\x0c\x08\x04\0\x38\x01\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0= \x40\ +\x01\0\0\xd8\x02\0\0\x69\x04\0\0\x0b\x14\x04\0\x68\x01\0\0\xd8\x02\0\0\xaf= \x04\ +\0\0\x09\x1c\x04\0\x78\x01\0\0\xd8\x02\0\0\xaf\x04\0\0\x09\x1c\x04\0\x88\x= 01\0\ +\0\xd8\x02\0\0\xbe\x04\0\0\x0d\x2c\x04\0\xa0\x01\0\0\xd8\x02\0\0\xbe\x04\0= \0\ +\x05\x2c\x04\0\xc0\x01\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\xd8\x02= \0\0\ +\xdc\x04\0\0\x0f\x40\x04\0\xe8\x01\0\0\xd8\x02\0\0\xaf\x04\0\0\x09\x58\x04= \0\ +\xf8\x01\0\0\xd8\x02\0\0\xaf\x04\0\0\x09\x58\x04\0\0\x02\0\0\xd8\x02\0\0\x= 26\ +\x05\0\0\x0c\x68\x04\0\x08\x02\0\0\xd8\x02\0\0\x36\x05\0\0\x09\xa4\x04\0\x= 40\ +\x02\0\0\xd8\x02\0\0\x52\x05\0\0\x17\xbc\x04\0\x50\x02\0\0\xd8\x02\0\0\x6d= \x05\ +\0\0\x16\xc4\x04\0\x70\x02\0\0\xd8\x02\0\0\x52\x05\0\0\x17\xbc\x04\0\x78\x= 02\0\ +\0\xd8\x02\0\0\x8b\x05\0\0\x0f\xc8\x04\0\xa0\x02\0\0\xd8\x02\0\0\xce\x05\0= \0\ +\x0d\xd0\x04\0\xb0\x02\0\0\xd8\x02\0\0\xce\x05\0\0\x0d\xd0\x04\0\xb8\x02\0= \0\ +\xd8\x02\0\0\xe1\x05\0\0\x24\xe8\x04\0\xc0\x02\0\0\xd8\x02\0\0\xe1\x05\0\0= \x20\ +\xe8\x04\0\xd0\x02\0\0\xd8\x02\0\0\x0e\x06\0\0\x1b\xe0\x04\0\xd8\x02\0\0\x= d8\ +\x02\0\0\x0e\x06\0\0\x16\xe0\x04\0\xe0\x02\0\0\xd8\x02\0\0\x2f\x06\0\0\x1b= \xe4\ +\x04\0\xe8\x02\0\0\xd8\x02\0\0\x2f\x06\0\0\x16\xe4\x04\0\xf0\x02\0\0\xd8\x= 02\0\ +\0\x50\x06\0\0\x1a\xf0\x04\0\xf8\x02\0\0\xd8\x02\0\0\xe1\x05\0\0\x1d\xe8\x= 04\0\ +\0\x03\0\0\xd8\x02\0\0\x73\x06\0\0\x18\xf4\x04\0\x08\x03\0\0\xd8\x02\0\0\x= 73\ +\x06\0\0\x1c\xf4\x04\0\x18\x03\0\0\xd8\x02\0\0\x93\x06\0\0\x15\x50\x05\0\x= 28\ +\x03\0\0\xd8\x02\0\0\x93\x06\0\0\x1a\x50\x05\0\x40\x03\0\0\xd8\x02\0\0\xc7= \x06\ +\0\0\x0d\x54\x05\0\x60\x03\0\0\xd8\x02\0\0\xf1\x06\0\0\x1a\x58\x05\0\x70\x= 03\0\ +\0\xd8\x02\0\0\x0f\x07\0\0\x1b\x60\x05\0\x90\x03\0\0\xd8\x02\0\0\xf1\x06\0= \0\ +\x1a\x58\x05\0\xa0\x03\0\0\xd8\x02\0\0\x33\x07\0\0\x13\x64\x05\0\xc0\x03\0= \0\ +\xd8\x02\0\0\x84\x07\0\0\x11\x6c\x05\0\xd0\x03\0\0\xd8\x02\0\0\x84\x07\0\0= \x11\ +\x6c\x05\0\xe0\x03\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\xd8\x02\0\0\x= 9b\ +\x07\0\0\x15\x18\x06\0\x08\x04\0\0\xd8\x02\0\0\x9b\x07\0\0\x09\x18\x06\0\x= 10\ +\x04\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\x60\x04\0\0\xd8\x02\0\0\xba\x07\0\0\x= 19\ +\x1c\x06\0\x80\x04\0\0\xd8\x02\0\0\xba\x07\0\0\x20\x1c\x06\0\xb8\x04\0\0\x= d8\ +\x02\0\0\xdc\x07\0\0\x17\xfc\x04\0\xc8\x04\0\0\xd8\x02\0\0\xf7\x07\0\0\x18= \x04\ +\x05\0\xf8\x04\0\0\xd8\x02\0\0\xdc\x07\0\0\x17\xfc\x04\0\x08\x05\0\0\xd8\x= 02\0\ +\0\x18\x08\0\0\x0f\x08\x05\0\x30\x05\0\0\xd8\x02\0\0\xce\x05\0\0\x0d\x10\x= 05\0\ +\x40\x05\0\0\xd8\x02\0\0\xce\x05\0\0\x0d\x10\x05\0\x48\x05\0\0\xd8\x02\0\0= \x5d\ +\x08\0\0\x1d\x20\x05\0\x88\x05\0\0\xd8\x02\0\0\x80\x08\0\0\x1d\x24\x05\0\x= c8\ +\x05\0\0\xd8\x02\0\0\xa3\x08\0\0\x1b\x2c\x05\0\xd0\x05\0\0\xd8\x02\0\0\xc6= \x08\ +\0\0\x05\x18\x02\0\x18\x06\0\0\xd8\x02\0\0\xde\x08\0\0\x19\xa0\x02\0\x70\x= 06\0\ +\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\x78\x06\0\0\xd8\x02\0\0\x04\x09\0\0\x0f\xb0= \x02\ +\0\xa0\x06\0\0\xd8\x02\0\0\xce\x05\0\0\x0d\xb8\x02\0\xb8\x06\0\0\xd8\x02\0= \0\ +\xce\x05\0\0\x0d\xb8\x02\0\xc0\x06\0\0\xd8\x02\0\0\x49\x09\0\0\x0d\xc8\x02= \0\ +\xe0\x06\0\0\xd8\x02\0\0\x78\x09\0\0\x20\xcc\x02\0\0\x07\0\0\xd8\x02\0\0\x= a4\ +\x09\0\0\x13\xd4\x02\0\x28\x07\0\0\xd8\x02\0\0\x84\x07\0\0\x11\xdc\x02\0\x= 40\ +\x07\0\0\xd8\x02\0\0\x84\x07\0\0\x11\xdc\x02\0\x48\x07\0\0\xd8\x02\0\0\xec= \x09\ +\0\0\x19\xec\x02\0\x50\x07\0\0\xd8\x02\0\0\xec\x09\0\0\x34\xec\x02\0\x78\x= 07\0\ +\0\xd8\x02\0\0\x22\x0a\0\0\x15\0\x03\0\x88\x07\0\0\xd8\x02\0\0\x63\x0a\0\0= \x17\ +\xfc\x02\0\xb0\x07\0\0\xd8\x02\0\0\x9a\x0a\0\0\x15\x0c\x03\0\xc8\x07\0\0\x= d8\ +\x02\0\0\x9a\x0a\0\0\x15\x0c\x03\0\xd0\x07\0\0\xd8\x02\0\0\xb5\x0a\0\0\x27= \x1c\ +\x03\0\0\x08\0\0\xd8\x02\0\0\xe0\x0a\0\0\x27\x38\x03\0\x10\x08\0\0\xd8\x02= \0\0\ +\x10\x0b\0\0\x1c\x9c\x03\0\x18\x08\0\0\xd8\x02\0\0\x4c\x0b\0\0\x20\xa8\x03= \0\ +\x28\x08\0\0\xd8\x02\0\0\x4c\x0b\0\0\x2f\xa8\x03\0\x30\x08\0\0\xd8\x02\0\0= \x4c\ +\x0b\0\0\x36\xa8\x03\0\x38\x08\0\0\xd8\x02\0\0\x4c\x0b\0\0\x15\xa8\x03\0\x= a0\ +\x08\0\0\xd8\x02\0\0\x88\x0b\0\0\x43\x4c\x03\0\xc0\x08\0\0\xd8\x02\0\0\0\0= \0\0\ +\0\0\0\0\xc8\x08\0\0\xd8\x02\0\0\x88\x0b\0\0\x17\x4c\x03\0\xf0\x08\0\0\xd8= \x02\ +\0\0\x9a\x0a\0\0\x15\x54\x03\0\x08\x09\0\0\xd8\x02\0\0\x9a\x0a\0\0\x15\x54= \x03\ +\0\x10\x09\0\0\xd8\x02\0\0\xd8\x0b\0\0\x19\x64\x03\0\x18\x09\0\0\xd8\x02\0= \0\ +\xd8\x0b\0\0\x15\x64\x03\0\x20\x09\0\0\xd8\x02\0\0\x08\x0c\0\0\x19\x6c\x03= \0\ +\x28\x09\0\0\xd8\x02\0\0\x38\x0c\0\0\x1b\x68\x03\0\x58\x09\0\0\xd8\x02\0\0= \x73\ +\x0c\0\0\x19\x7c\x03\0\x70\x09\0\0\xd8\x02\0\0\x73\x0c\0\0\x19\x7c\x03\0\x= 78\ +\x09\0\0\xd8\x02\0\0\x92\x0c\0\0\x2b\x8c\x03\0\x98\x09\0\0\xd8\x02\0\0\x10= \x0b\ +\0\0\x1f\x9c\x03\0\xb8\x09\0\0\xd8\x02\0\0\xc1\x0c\0\0\x21\xbc\x03\0\xc8\x= 09\0\ +\0\xd8\x02\0\0\xe9\x0c\0\0\x20\xcc\x03\0\xd0\x09\0\0\xd8\x02\0\0\xe9\x0c\0= \0\ +\x2c\xcc\x03\0\xe0\x09\0\0\xd8\x02\0\0\xe9\x0c\0\0\x14\xcc\x03\0\xe8\x09\0= \0\ +\xd8\x02\0\0\x19\x0d\0\0\x20\xc8\x03\0\xf0\x09\0\0\xd8\x02\0\0\xc6\x08\0\0= \x05\ +\x18\x02\0\x38\x0a\0\0\xd8\x02\0\0\x41\x0d\0\0\x38\xa8\x02\0\x58\x0a\0\0\x= d8\ +\x02\0\0\x41\x0d\0\0\x05\xa8\x02\0\x80\x0a\0\0\xd8\x02\0\0\xc6\x08\0\0\x05= \x18\ +\x02\0\xa0\x0a\0\0\xd8\x02\0\0\x7f\x0d\0\0\x1c\xb8\x06\0\xc0\x0a\0\0\xd8\x= 02\0\ +\0\x7f\x0d\0\0\x10\xb8\x06\0\xc8\x0a\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\x18\x= 0b\0\ +\0\xd8\x02\0\0\xba\x07\0\0\x19\xbc\x06\0\x20\x0b\0\0\xd8\x02\0\0\xba\x07\0= \0\ +\x20\xbc\x06\0\x48\x0b\0\0\xd8\x02\0\0\xa5\x0d\0\0\x24\xc4\x06\0\x50\x0b\0= \0\ +\xd8\x02\0\0\xa5\x0d\0\0\x18\xc4\x06\0\x68\x0b\0\0\xd8\x02\0\0\xa5\x0d\0\0= \x34\ +\xc4\x06\0\x78\x0b\0\0\xd8\x02\0\0\xa5\x0d\0\0\x15\xc4\x06\0\x88\x0b\0\0\x= d8\ +\x02\0\0\xfb\x0d\0\0\x33\xf4\x06\0\xa0\x0b\0\0\xd8\x02\0\0\x36\x0e\0\0\x20= \x58\ +\x06\0\xa8\x0b\0\0\xd8\x02\0\0\x36\x0e\0\0\x27\x58\x06\0\xd0\x0b\0\0\xd8\x= 02\0\ +\0\0\0\0\0\0\0\0\0\x20\x0c\0\0\xd8\x02\0\0\x5f\x0e\0\0\x27\x94\x06\0\x28\x= 0c\0\ +\0\xd8\x02\0\0\x5f\x0e\0\0\x14\x94\x06\0\x38\x0c\0\0\xd8\x02\0\0\xa8\x0e\0= \0\ +\x15\x98\x06\0\x40\x0c\0\0\xd8\x02\0\0\xdb\x0e\0\0\x05\x80\x01\0\x50\x0c\0= \0\ +\xd8\x02\0\0\xdb\x0e\0\0\x05\x80\x01\0\x80\x0c\0\0\xd8\x02\0\0\xce\x05\0\0= \x0d\ +\x3c\x05\0\x90\x0c\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\x98\x0c\0\0\xd8\x02\0\0= \x18\ +\x0f\0\0\x1a\xe8\x08\0\xb8\x0c\0\0\xd8\x02\0\0\x18\x0f\0\0\x10\xe8\x08\0\x= c0\ +\x0c\0\0\x75\x02\0\0\x40\x0f\0\0\x05\x70\0\0\xd0\x0c\0\0\xd8\x02\0\0\x36\x= 0e\0\ +\0\x20\x44\x07\0\xd8\x0c\0\0\xd8\x02\0\0\x36\x0e\0\0\x27\x44\x07\0\0\x0d\0= \0\ +\xd8\x02\0\0\xa5\x0d\0\0\x24\x4c\x07\0\x08\x0d\0\0\xd8\x02\0\0\xa5\x0d\0\0= \x18\ +\x4c\x07\0\x20\x0d\0\0\xd8\x02\0\0\xa5\x0d\0\0\x34\x4c\x07\0\x30\x0d\0\0\x= d8\ +\x02\0\0\xa5\x0d\0\0\x15\x4c\x07\0\x40\x0d\0\0\xd8\x02\0\0\xfb\x0d\0\0\x33= \x7c\ +\x07\0\x60\x0d\0\0\xd8\x02\0\0\x4e\x0f\0\0\x1a\x88\x05\0\x70\x0d\0\0\xd8\x= 02\0\ +\0\x6c\x0f\0\0\x1b\x90\x05\0\x80\x0d\0\0\xd8\x02\0\0\x4e\x0f\0\0\x1a\x88\x= 05\0\ +\x90\x0d\0\0\xd8\x02\0\0\x90\x0f\0\0\x13\x94\x05\0\xb0\x0d\0\0\xd8\x02\0\0= \x84\ +\x07\0\0\x11\x9c\x05\0\xc0\x0d\0\0\xd8\x02\0\0\x84\x07\0\0\x11\x9c\x05\0\x= d0\ +\x0d\0\0\xd8\x02\0\0\xc6\x08\0\0\x05\x18\x02\0\xe0\x0d\0\0\xd8\x02\0\0\xe1= \x0f\ +\0\0\x27\xd4\x07\0\xf0\x0d\0\0\xd8\x02\0\0\xe1\x0f\0\0\x14\xd4\x07\0\0\x0e= \0\0\ +\xd8\x02\0\0\xa5\x0d\0\0\x24\xd8\x07\0\x08\x0e\0\0\xd8\x02\0\0\xa5\x0d\0\0= \x18\ +\xd8\x07\0\x20\x0e\0\0\xd8\x02\0\0\xa5\x0d\0\0\x34\xd8\x07\0\x30\x0e\0\0\x= d8\ +\x02\0\0\xa5\x0d\0\0\x15\xd8\x07\0\x40\x0e\0\0\xd8\x02\0\0\xfb\x0d\0\0\x33= \x08\ +\x08\0\x58\x0e\0\0\xd8\x02\0\0\x2a\x10\0\0\x2b\xc8\x06\0\x68\x0e\0\0\xd8\x= 02\0\ +\0\xa5\x0d\0\0\x17\xc4\x06\0\x78\x0e\0\0\xd8\x02\0\0\xa5\x0d\0\0\x15\xc4\x= 06\0\ +\x80\x0e\0\0\xd8\x02\0\0\x79\x10\0\0\x2d\xd4\x06\0\x90\x0e\0\0\xd8\x02\0\0= \xa8\ +\x10\0\0\x33\xe4\x06\0\xb0\x0e\0\0\xd8\x02\0\0\xe7\x10\0\0\x2d\0\x07\0\xc0= \x0e\ +\0\0\xd8\x02\0\0\xe7\x10\0\0\x11\0\x07\0\xc8\x0e\0\0\xd8\x02\0\0\xe7\x10\0= \0\ +\x2d\0\x07\0\xe0\x0e\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\xb8\x0f\0\0\xd8\x02\0= \0\ +\x16\x11\0\0\x0c\x5c\x08\0\xc0\x0f\0\0\xd8\x02\0\0\x26\x11\0\0\x05\xb8\x01= \0\ +\xc8\x0f\0\0\xd8\x02\0\0\x68\x11\0\0\x23\xac\x01\0\xe0\x0f\0\0\xd8\x02\0\0= \0\0\ +\0\0\0\0\0\0\xe8\x0f\0\0\xd8\x02\0\0\x9c\x11\0\0\x1b\xbc\x01\0\x08\x10\0\0= \xd8\ +\x02\0\0\xc3\x11\0\0\x11\xd0\x01\0\x20\x10\0\0\xd8\x02\0\0\xec\x11\0\0\x19= \xc0\ +\x01\0\x38\x10\0\0\xd8\x02\0\0\x1a\x12\0\0\x27\xe4\x01\0\x50\x10\0\0\xd8\x= 02\0\ +\0\x1a\x12\0\0\x2d\xe4\x01\0\x58\x10\0\0\xd8\x02\0\0\xc3\x11\0\0\x11\xd0\x= 01\0\ +\x98\x10\0\0\xd8\x02\0\0\x1a\x12\0\0\x27\xe4\x01\0\xa0\x10\0\0\xd8\x02\0\0= \x1a\ +\x12\0\0\x2d\xe4\x01\0\xa8\x10\0\0\xd8\x02\0\0\xc3\x11\0\0\x11\xd0\x01\0\x= d0\ +\x10\0\0\xd8\x02\0\0\x1a\x12\0\0\x27\xe4\x01\0\xf0\x10\0\0\xd8\x02\0\0\x1a= \x12\ +\0\0\x2d\xe4\x01\0\xf8\x10\0\0\xd8\x02\0\0\xc3\x11\0\0\x11\xd0\x01\0\x20\x= 11\0\ +\0\xd8\x02\0\0\x1a\x12\0\0\x27\xe4\x01\0\x40\x11\0\0\xd8\x02\0\0\x1a\x12\0= \0\ +\x2d\xe4\x01\0\x48\x11\0\0\xd8\x02\0\0\xc3\x11\0\0\x11\xd0\x01\0\x88\x11\0= \0\ +\xd8\x02\0\0\x1a\x12\0\0\x27\xe4\x01\0\x90\x11\0\0\xd8\x02\0\0\x1a\x12\0\0= \x2d\ +\xe4\x01\0\x98\x11\0\0\xd8\x02\0\0\xc3\x11\0\0\x11\xd0\x01\0\xd8\x11\0\0\x= d8\ +\x02\0\0\x1a\x12\0\0\x27\xe4\x01\0\xe0\x11\0\0\xd8\x02\0\0\x1a\x12\0\0\x2d= \xe4\ +\x01\0\xe8\x11\0\0\xd8\x02\0\0\xc3\x11\0\0\x11\xd0\x01\0\x28\x12\0\0\xd8\x= 02\0\ +\0\x1a\x12\0\0\x27\xe4\x01\0\x30\x12\0\0\xd8\x02\0\0\x1a\x12\0\0\x2d\xe4\x= 01\0\ +\x38\x12\0\0\xd8\x02\0\0\xc3\x11\0\0\x11\xd0\x01\0\x60\x12\0\0\xd8\x02\0\0= \x1a\ +\x12\0\0\x27\xe4\x01\0\x68\x12\0\0\xd8\x02\0\0\x1a\x12\0\0\x2d\xe4\x01\0\x= 70\ +\x12\0\0\xd8\x02\0\0\x26\x11\0\0\x3d\xb8\x01\0\x80\x12\0\0\xd8\x02\0\0\x26= \x11\ +\0\0\x05\xb8\x01\0\x90\x12\0\0\xd8\x02\0\0\x66\x12\0\0\x0d\0\x02\0\x98\x12= \0\0\ +\xd8\x02\0\0\x81\x12\0\0\x31\xb8\x08\0\xb8\x12\0\0\xd8\x02\0\0\x66\x12\0\0= \x0d\ +\0\x02\0\xc8\x12\0\0\xd8\x02\0\0\x81\x12\0\0\x27\xb8\x08\0\xd0\x12\0\0\xd8= \x02\ +\0\0\x81\x12\0\0\x0f\xb8\x08\0\xe0\x12\0\0\xd8\x02\0\0\x66\x12\0\0\x0d\0\x= 02\0\ +\xe8\x12\0\0\xd8\x02\0\0\xc3\x12\0\0\x11\xc4\x08\0\0\x13\0\0\xd8\x02\0\0\x= 07\ +\x13\0\0\x0d\xd0\x08\0\x08\x13\0\0\xd8\x02\0\0\x1c\x13\0\0\x1a\xd4\x08\0\x= 10\ +\x13\0\0\xd8\x02\0\0\x1c\x13\0\0\x18\xd4\x08\0\x20\x13\0\0\xd8\x02\0\0\x3d= \x13\ +\0\0\x2b\x50\x07\0\x30\x13\0\0\xd8\x02\0\0\xa5\x0d\0\0\x17\x4c\x07\0\x40\x= 13\0\ +\0\xd8\x02\0\0\xa5\x0d\0\0\x15\x4c\x07\0\x48\x13\0\0\xd8\x02\0\0\x79\x10\0= \0\ +\x2d\x5c\x07\0\x58\x13\0\0\xd8\x02\0\0\xa8\x10\0\0\x33\x6c\x07\0\x78\x13\0= \0\ +\xd8\x02\0\0\xe7\x10\0\0\x2d\x88\x07\0\x88\x13\0\0\xd8\x02\0\0\xe7\x10\0\0= \x11\ +\x88\x07\0\x90\x13\0\0\xd8\x02\0\0\xe7\x10\0\0\x2d\x88\x07\0\xb0\x13\0\0\x= d8\ +\x02\0\0\x8c\x13\0\0\x2b\xdc\x07\0\xc0\x13\0\0\xd8\x02\0\0\xa5\x0d\0\0\x17= \xd8\ +\x07\0\xd0\x13\0\0\xd8\x02\0\0\xa5\x0d\0\0\x15\xd8\x07\0\xd8\x13\0\0\xd8\x= 02\0\ +\0\x79\x10\0\0\x2d\xe8\x07\0\xe8\x13\0\0\xd8\x02\0\0\xa8\x10\0\0\x33\xf8\x= 07\0\ +\xf8\x13\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\x48\x14\0\0\xd8\x02\0\0\0\0\0\0\0= \0\0\ +\0\x58\x14\0\0\xd8\x02\0\0\xe7\x10\0\0\x2d\x14\x08\0\x68\x14\0\0\xd8\x02\0= \0\ +\xdb\x0e\0\0\x05\x80\x01\0\xa8\x14\0\0\xd8\x02\0\0\xdb\x0e\0\0\x05\x80\x01= \0\ +\xe0\x14\0\0\xd8\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe0\0\0\0\0= \0\ +\x03\0\xc0\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\0\0\0\0\x03\0\x98\x0c\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\xf2\0\0\0\0\0\x03\0\xb8\x01\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\x6a\x02\0\0\0\0\x03\0\x08\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x39\x01\0\0\0\0= \x03\ +\0\xb0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x01\0\0\0\0\x03\0\0\x04\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x6a\x01\0\0\0\0\x03\0\x90\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x62\ +\x01\0\0\0\0\x03\0\xd0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\0\0\0\0\0\x03\0= \x18\ +\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc0\0\0\0\0\0\x03\0\x58\x0d\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\x21\x01\0\0\0\0\x03\0\xd8\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5a\x= 02\0\ +\0\0\0\x03\0\xa0\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\x03\0\xa0= \x0b\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xad\x01\0\0\0\0\x03\0\xd0\x0b\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\xd8\0\0\0\0\0\x03\0\xd0\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4a\x02\0= \0\0\ +\0\x03\0\x10\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\x02\0\0\0\0\x03\0\x68\x06= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\x3a\x02\0\0\0\0\x03\0\x80\x0c\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\x11\x02\0\0\0\0\x03\0\xe8\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdf\x01\0\0= \0\0\ +\x03\0\xb8\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb5\x01\0\0\0\0\x03\0\xc8\x09\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\x62\x02\0\0\0\0\x03\0\xa0\x13\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\xe7\x01\0\0\0\0\x03\0\xa0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd0\0\0\0\0\0= \x03\ +\0\x10\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x42\x02\0\0\0\0\x03\0\x88\x08\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\x09\x02\0\0\0\0\x03\0\x68\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\x31\x01\0\0\0\0\x03\0\x90\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x01\0\0\0\0= \x03\ +\0\x80\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x29\x01\0\0\0\0\x03\0\x30\x0a\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\x19\x01\0\0\0\0\x03\0\x60\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\x52\x01\0\0\0\0\x03\0\xd0\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5a\x01\0\0\0\0= \x03\ +\0\x58\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\0\0\0\0\x03\0\x88\x0b\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\x32\x02\0\0\0\0\x03\0\xa0\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\x09\x01\0\0\0\0\x03\0\x20\x0c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xbd\x01\0\0\0\0= \x03\ +\0\xb0\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x72\x02\0\0\0\0\x03\0\xe0\x0d\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\x2a\x02\0\0\0\0\x03\0\x20\x13\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\x52\x02\0\0\0\0\x03\0\x40\x0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4a\x01\0\0\0\0= \x03\ +\0\x68\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc6\x01\0\0\0\0\x03\0\xb0\x13\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\xf8\x01\0\0\0\0\x03\0\x40\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\xe9\0\0\0\0\0\x03\0\xf8\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x= 03\0\ +\x78\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd7\x01\0\0\0\0\x03\0\xc0\x0e\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x7c\x01\0\0\0\0\x03\0\xd8\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \xa5\ +\x01\0\0\0\0\x03\0\xd0\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9c\x01\0\0\0\0\x03= \0\ +\xd8\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x41\x01\0\0\0\0\x03\0\x90\x12\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\xcf\x01\0\0\0\0\x03\0\x40\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \xf9\ +\0\0\0\0\0\x03\0\x88\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x73\x01\0\0\0\0\x03\0= \xd0\ +\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x21\x02\0\0\0\0\x03\0\xa8\x14\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\xef\x01\0\0\0\0\x03\0\xe0\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5c= \0\0\ +\0\x12\0\x03\0\0\0\0\0\0\0\0\0\xf0\x14\0\0\0\0\0\0\x33\0\0\0\x11\0\x06\0\0= \0\0\ +\0\0\0\0\0\x20\0\0\0\0\0\0\0\x01\0\0\0\x11\0\x06\0\x20\0\0\0\0\0\0\0\x20\0= \0\0\ +\0\0\0\0\x89\0\0\0\x11\0\x06\0\x40\0\0\0\0\0\0\0\x20\0\0\0\0\0\0\0\x80\0\0= \0\ +\x11\0\x05\0\0\0\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\x28\0\0\0\0\0\0\0\x01\0\0\0= \x39\ +\0\0\0\x50\0\0\0\0\0\0\0\x01\0\0\0\x3a\0\0\0\xe8\x12\0\0\0\0\0\0\x01\0\0\0= \x3b\ +\0\0\0\x18\x05\0\0\0\0\0\0\x04\0\0\0\x39\0\0\0\x24\x05\0\0\0\0\0\0\x04\0\0= \0\ +\x3a\0\0\0\x30\x05\0\0\0\0\0\0\x04\0\0\0\x3b\0\0\0\x48\x05\0\0\0\0\0\0\x04= \0\0\ +\0\x3c\0\0\0\x2c\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\0\0\0\0\0\0\0\x04\0= \0\0\ +\x01\0\0\0\x50\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\0\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\x70\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\0\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\x90\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\0\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\xb0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\0\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\xd0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\0\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\xf0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x01\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\x10\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x01\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\x30\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x01\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\x50\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x01\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\x70\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x01\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\x90\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x01\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\xb0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x01\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\xd0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x01\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x01\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x02\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\x10\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x02= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x= 02\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60= \x02\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 80\ +\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\xa0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x02\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\xc0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x02\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\xe0\x02\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x02\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x03\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\x20\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x03\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\x40\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x03\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\x60\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x03\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\x80\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x03\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\xa0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x03\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\xc0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x03\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\xe0\x03\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x03\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x04\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\x20\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x04\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\x40\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x04= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x= 04\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90= \x04\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= b0\ +\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\xd0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x04\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\xf0\x04\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x05\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\x10\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x05\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x30\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x05\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\x50\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x05\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\x70\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x05\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\x90\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x05\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\xb0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x05\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\xd0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x05\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\xf0\x05\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x06\0\0\0\0= \0\0\ +\x04\0\0\0\x01\0\0\0\x10\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x06\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\x30\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x06\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\x50\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x06\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\x70\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x06= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x= 06\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0= \x06\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= e0\ +\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x06\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\0\ +\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\x20\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x07\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\x40\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x07\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x60\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x07\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\x80\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x07\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\xa0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x07\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\xc0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x07\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\xe0\x07\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x07\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x08\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\x20\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x08\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\x40\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x08\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\x60\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x08\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\x80\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x08\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x08= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x= 08\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x08\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0= \x08\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10= \x09\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 30\ +\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\x50\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x09\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\x70\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x09\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x90\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x09\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\xb0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x09\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\xd0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x09\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\xf0\x09\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x0a\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\x10\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x0a\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\x30\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x0a\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\x50\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x0a\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\x70\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x0a\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\x90\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x0a\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\xb0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x0a\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x0a= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x0a\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x0b= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x= 0b\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40= \x0b\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 60\ +\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\x80\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x0b\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\xa0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x0b\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\xc0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x0b\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\xe0\x0b\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x0b\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x0c\0\0\0\0\0\0\x04\0= \0\0\ +\x01\0\0\0\x20\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x0c\0\0\0\0\0\0\x04= \0\0\ +\0\x01\0\0\0\x40\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x0c\0\0\0\0\0\0\x= 04\0\ +\0\0\x01\0\0\0\x60\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70\x0c\0\0\0\0\0\0= \x04\ +\0\0\0\x01\0\0\0\x80\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x90\x0c\0\0\0\0\0= \0\ +\x04\0\0\0\x01\0\0\0\xa0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xb0\x0c\0\0\0= \0\0\ +\0\x04\0\0\0\x01\0\0\0\xc0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xd0\x0c\0\0= \0\0\ +\0\0\x04\0\0\0\x01\0\0\0\xe0\x0c\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xf0\x0c\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\0\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x10\x0d\0= \0\0\ +\0\0\0\x04\0\0\0\x01\0\0\0\x20\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x30\x0d= \0\0\ +\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x50\x= 0d\0\ +\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x60\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x70= \x0d\ +\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x80\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x= 90\ +\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xa0\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0= \0\ +\xb0\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xc0\x0d\0\0\0\0\0\0\x04\0\0\0\x01= \0\0\ +\0\xd0\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\xe0\x0d\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\xf0\x0d\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\0\x0e\0\0\0\0\0\0\x04\0\0\0\x= 01\0\ +\0\0\x10\x0e\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x20\x0e\0\0\0\0\0\0\x04\0\0\0= \x01\ +\0\0\0\x30\x0e\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x40\x0e\0\0\0\0\0\0\x04\0\0= \0\ +\x01\0\0\0\x50\x0e\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0\x42\x46\x43\x44\x45\0\x= 74\ +\x61\x70\x5f\x72\x73\x73\x5f\x6d\x61\x70\x5f\x74\x6f\x65\x70\x6c\x69\x74\x= 7a\ +\x5f\x6b\x65\x79\0\x2e\x74\x65\x78\x74\0\x2e\x72\x65\x6c\x2e\x42\x54\x46\x= 2e\ +\x65\x78\x74\0\x2e\x6d\x61\x70\x73\0\x74\x61\x70\x5f\x72\x73\x73\x5f\x6d\x= 61\ +\x70\x5f\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x73\0\x2e\x72= \x65\ +\x6c\x76\x6e\x65\x74\x5f\x68\x61\x73\x68\0\x74\x75\x6e\x5f\x72\x73\x73\x5f= \x73\ +\x74\x65\x65\x72\x69\x6e\x67\x5f\x70\x72\x6f\x67\0\x2e\x6c\x6c\x76\x6d\x5f= \x61\ +\x64\x64\x72\x73\x69\x67\0\x5f\x6c\x69\x63\x65\x6e\x73\x65\0\x74\x61\x70\x= 5f\ +\x72\x73\x73\x5f\x6d\x61\x70\x5f\x69\x6e\x64\x69\x72\x65\x63\x74\x69\x6f\x= 6e\ +\x5f\x74\x61\x62\x6c\x65\0\x2e\x73\x74\x72\x74\x61\x62\0\x2e\x73\x79\x6d\x= 74\ +\x61\x62\0\x2e\x72\x65\x6c\x2e\x42\x54\x46\0\x4c\x42\x42\x30\x5f\x35\x39\0= \x4c\ +\x42\x42\x30\x5f\x34\x39\0\x4c\x42\x42\x30\x5f\x33\x39\0\x4c\x42\x42\x30\x= 5f\ +\x31\x39\0\x4c\x42\x42\x30\x5f\x31\x31\x39\0\x4c\x42\x42\x30\x5f\x31\x30\x= 39\0\ +\x4c\x42\x42\x30\x5f\x38\0\x4c\x42\x42\x30\x5f\x39\x38\0\x4c\x42\x42\x30\x= 5f\ +\x37\x38\0\x4c\x42\x42\x30\x5f\x36\x38\0\x4c\x42\x42\x30\x5f\x35\x38\0\x4c= \x42\ +\x42\x30\x5f\x34\x38\0\x4c\x42\x42\x30\x5f\x35\x37\0\x4c\x42\x42\x30\x5f\x= 34\ +\x37\0\x4c\x42\x42\x30\x5f\x33\x37\0\x4c\x42\x42\x30\x5f\x31\x37\0\x4c\x42= \x42\ +\x30\x5f\x31\x31\x37\0\x4c\x42\x42\x30\x5f\x39\x36\0\x4c\x42\x42\x30\x5f\x= 38\ +\x36\0\x4c\x42\x42\x30\x5f\x37\x36\0\x4c\x42\x42\x30\x5f\x31\x36\0\x4c\x42= \x42\ +\x30\x5f\x31\x31\x36\0\x4c\x42\x42\x30\x5f\x31\x30\x36\0\x4c\x42\x42\x30\x= 5f\ +\x38\x35\0\x4c\x42\x42\x30\x5f\x37\x35\0\x4c\x42\x42\x30\x5f\x36\x35\0\x4c= \x42\ +\x42\x30\x5f\x34\x35\0\x4c\x42\x42\x30\x5f\x31\x31\x35\0\x4c\x42\x42\x30\x= 5f\ +\x38\x34\0\x4c\x42\x42\x30\x5f\x36\x34\0\x4c\x42\x42\x30\x5f\x34\x34\0\x4c= \x42\ +\x42\x30\x5f\x31\x31\x34\0\x4c\x42\x42\x30\x5f\x31\x30\x34\0\x4c\x42\x42\x= 30\ +\x5f\x39\x33\0\x4c\x42\x42\x30\x5f\x38\x33\0\x4c\x42\x42\x30\x5f\x34\x33\0= \x4c\ +\x42\x42\x30\x5f\x33\x33\0\x4c\x42\x42\x30\x5f\x31\x31\x33\0\x4c\x42\x42\x= 30\ +\x5f\x31\x30\x33\0\x4c\x42\x42\x30\x5f\x35\x32\0\x4c\x42\x42\x30\x5f\x34\x= 32\0\ +\x4c\x42\x42\x30\x5f\x33\x32\0\x4c\x42\x42\x30\x5f\x32\x32\0\x4c\x42\x42\x= 30\ +\x5f\x31\x31\x32\0\x4c\x42\x42\x30\x5f\x39\x31\0\x4c\x42\x42\x30\x5f\x38\x= 31\0\ +\x4c\x42\x42\x30\x5f\x35\x31\0\x4c\x42\x42\x30\x5f\x34\x31\0\x4c\x42\x42\x= 30\ +\x5f\x32\x31\0\x4c\x42\x42\x30\x5f\x39\x30\0\x4c\x42\x42\x30\x5f\x37\x30\0= \x4c\ +\x42\x42\x30\x5f\x35\x30\0\x4c\x42\x42\x30\x5f\x31\x30\0\x4c\x42\x42\x30\x= 5f\ +\x31\x30\x30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa7\0\0\0= \x03\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcd\x51\0\0\0\0\0\0\x7b\x02\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1a\0\0\0\x01\0\0\0\x06= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x52\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\x40\0\0\0\0\0\0\0\xf0\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\0\0\x4e\0\0\0\x09\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \x28\ +\x43\0\0\0\0\0\0\x30\0\0\0\0\0\0\0\x0c\0\0\0\x03\0\0\0\x08\0\0\0\0\0\0\0\x= 10\0\ +\0\0\0\0\0\0\x81\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x30\x15= \0\0\ +\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0= \0\ +\x2d\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x38\x15\0\0\0\0\0\0= \x60\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xbb\0\0\0= \x01\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\x15\0\0\0\0\0\0\x75\x19\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb7\0\0\0\x09\0\0\0\x40= \0\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\x58\x43\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\x0c\0\0\0= \x07\ +\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\x24\0\0\0\x01\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\0\x10\x2f\0\0\0\0\0\0\x60\x0e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x= 04\0\ +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x20\0\0\0\x09\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0= \0\0\ +\0\0\x98\x43\0\0\0\0\0\0\x30\x0e\0\0\0\0\0\0\x0c\0\0\0\x09\0\0\0\x08\0\0\0= \0\0\ +\0\0\x10\0\0\0\0\0\0\0\x72\0\0\0\x03\x4c\xff\x6f\0\0\0\x80\0\0\0\0\0\0\0\0= \0\0\ +\0\0\xc8\x51\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0= \0\0\ +\0\0\0\0\0\0\0\xaf\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x70\x3d= \0\0\ +\0\0\0\0\xb8\x05\0\0\0\0\0\0\x01\0\0\0\x38\0\0\0\x08\0\0\0\0\0\0\0\x18\0\0= \0\0\ +\0\0\0"; +} + +#ifdef __cplusplus +struct vnet_hash_bpf *vnet_hash_bpf::open(const struct bpf_object_open_opt= s *opts) { return vnet_hash_bpf__open_opts(opts); } +struct vnet_hash_bpf *vnet_hash_bpf::open_and_load() { return vnet_hash_bp= f__open_and_load(); } +int vnet_hash_bpf::load(struct vnet_hash_bpf *skel) { return vnet_hash_bpf= __load(skel); } +int vnet_hash_bpf::attach(struct vnet_hash_bpf *skel) { return vnet_hash_b= pf__attach(skel); } +void vnet_hash_bpf::detach(struct vnet_hash_bpf *skel) { vnet_hash_bpf__de= tach(skel); } +void vnet_hash_bpf::destroy(struct vnet_hash_bpf *skel) { vnet_hash_bpf__d= estroy(skel); } +const void *vnet_hash_bpf::elf_bytes(size_t *sz) { return vnet_hash_bpf__e= lf_bytes(sz); } +#endif /* __cplusplus */ + +__attribute__((unused)) static void +vnet_hash_bpf__assert(struct vnet_hash_bpf *s __attribute__((unused))) +{ +#ifdef __cplusplus +#define _Static_assert static_assert +#endif +#ifdef __cplusplus +#undef _Static_assert +#endif +} + +#endif /* __VNET_HASH_BPF_SKEL_H__ */ diff --git a/tools/ebpf/rss.bpf.c b/tools/ebpf/rss.bpf.h similarity index 91% rename from tools/ebpf/rss.bpf.c rename to tools/ebpf/rss.bpf.h index 012af38df1..008a89e342 100644 --- a/tools/ebpf/rss.bpf.c +++ b/tools/ebpf/rss.bpf.h @@ -9,12 +9,6 @@ * * This work is licensed under the terms of the GNU GPL, version 2. See * the COPYING file in the top-level directory. - * - * Prepare: - * Requires llvm, clang, bpftool, linux kernel tree - * - * Build rss.bpf.skeleton.h: - * make -f Makefile.ebpf clean all */ =20 #include @@ -380,7 +374,8 @@ error: static inline bool calculate_rss_hash(struct __sk_buff *skb, struct rss_config_t *config, struct toeplitz_key_data_t *toe, - __u32 *result) + __u32 *value, + __u16 *report) { __u8 rss_input[HASH_CALCULATION_BUFFER_SIZE] =3D {}; size_t bytes_written =3D 0; @@ -395,7 +390,7 @@ static inline bool calculate_rss_hash(struct __sk_buff = *skb, if (packet_info.is_ipv4) { if (packet_info.is_tcp && config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_TCPv4) { - + *report =3D VIRTIO_NET_HASH_REPORT_TCPv4; net_rx_rss_add_chunk(rss_input, &bytes_written, &packet_info.in_src, sizeof(packet_info.in_src)); @@ -410,7 +405,7 @@ static inline bool calculate_rss_hash(struct __sk_buff = *skb, sizeof(packet_info.dst_port)); } else if (packet_info.is_udp && config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_UDPv4) { - + *report =3D VIRTIO_NET_HASH_REPORT_UDPv4; net_rx_rss_add_chunk(rss_input, &bytes_written, &packet_info.in_src, sizeof(packet_info.in_src)); @@ -424,6 +419,7 @@ static inline bool calculate_rss_hash(struct __sk_buff = *skb, &packet_info.dst_port, sizeof(packet_info.dst_port)); } else if (config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_IPv4) { + *report =3D VIRTIO_NET_HASH_REPORT_IPv4; net_rx_rss_add_chunk(rss_input, &bytes_written, &packet_info.in_src, sizeof(packet_info.in_src)); @@ -434,7 +430,10 @@ static inline bool calculate_rss_hash(struct __sk_buff= *skb, } else if (packet_info.is_ipv6) { if (packet_info.is_tcp && config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_TCPv6) { - + *report =3D (packet_info.is_ipv6_ext_src || packet_info.is_ipv= 6_ext_dst) && + (config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_TCP_E= X) ? + VIRTIO_NET_HASH_REPORT_TCPv6_EX : + VIRTIO_NET_HASH_REPORT_TCPv6; if (packet_info.is_ipv6_ext_src && config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_TCP_EX) { =20 @@ -465,7 +464,10 @@ static inline bool calculate_rss_hash(struct __sk_buff= *skb, sizeof(packet_info.dst_port)); } else if (packet_info.is_udp && config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_UDPv6) { - + *report =3D (packet_info.is_ipv6_ext_src || packet_info.is_ipv= 6_ext_dst) && + (config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_UDP_E= X) ? + VIRTIO_NET_HASH_REPORT_UDPv6_EX : + VIRTIO_NET_HASH_REPORT_UDPv6; if (packet_info.is_ipv6_ext_src && config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_UDP_EX) { =20 @@ -497,6 +499,10 @@ static inline bool calculate_rss_hash(struct __sk_buff= *skb, sizeof(packet_info.dst_port)); =20 } else if (config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_IPv6) { + *report =3D (packet_info.is_ipv6_ext_src || packet_info.is_ipv= 6_ext_dst) && + (config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_IP_EX= ) ? + VIRTIO_NET_HASH_REPORT_IPv6_EX : + VIRTIO_NET_HASH_REPORT_IPv6; if (packet_info.is_ipv6_ext_src && config->hash_types & VIRTIO_NET_RSS_HASH_TYPE_IP_EX) { =20 @@ -526,41 +532,42 @@ static inline bool calculate_rss_hash(struct __sk_buf= f *skb, return false; } =20 - net_toeplitz_add(result, rss_input, bytes_written, toe); + *value =3D 0; + net_toeplitz_add(value, rss_input, bytes_written, toe); =20 return true; } =20 -SEC("socket") -int tun_rss_steering_prog(struct __sk_buff *skb) +static inline void all(struct __sk_buff *skb, __u32 *hash_value, + __u16 *hash_report, __u16 *rss_queue) { - struct rss_config_t *config; struct toeplitz_key_data_t *toe; =20 __u32 key =3D 0; - __u32 hash =3D 0; =20 config =3D bpf_map_lookup_elem(&tap_rss_map_configurations, &key); toe =3D bpf_map_lookup_elem(&tap_rss_map_toeplitz_key, &key); =20 if (!config || !toe) { - return 0; + return; } =20 - if (config->redirect && calculate_rss_hash(skb, config, toe, &hash)) { - __u32 table_idx =3D hash % config->indirections_len; + if (config->redirect && + calculate_rss_hash(skb, config, toe, hash_value, hash_report)) { + __u32 table_idx =3D *hash_value % config->indirections_len; __u16 *queue =3D 0; =20 queue =3D bpf_map_lookup_elem(&tap_rss_map_indirection_table, &table_idx); =20 if (queue) { - return *queue; + *rss_queue =3D *queue; + return; } } =20 - return config->default_queue; + *rss_queue =3D config->default_queue; } =20 char _license[] SEC("license") =3D "GPL v2"; diff --git a/ebpf/ebpf_rss-stub.c b/ebpf/ebpf_rss-stub.c index 525b358597..3da7cc4785 100644 --- a/ebpf/ebpf_rss-stub.c +++ b/ebpf/ebpf_rss-stub.c @@ -28,6 +28,11 @@ bool ebpf_rss_load(struct EBPFRSSContext *ctx) return false; } =20 +bool ebpf_rss_hash_report_load(struct EBPFRSSContext *ctx) +{ + return false; +} + void ebpf_rss_set_all(struct EBPFRSSContext *ctx, struct EBPFRSSConfig *co= nfig, uint16_t *indirections_table, uint8_t *toeplitz_key) { diff --git a/ebpf/ebpf_rss.c b/ebpf/ebpf_rss.c index 56c518c604..7e2db1bd98 100644 --- a/ebpf/ebpf_rss.c +++ b/ebpf/ebpf_rss.c @@ -20,7 +20,8 @@ #include "hw/virtio/virtio-net.h" /* VIRTIO_NET_RSS_MAX_TABLE_LEN */ =20 #include "ebpf/ebpf_rss.h" -#include "ebpf/rss.bpf.skeleton.h" +#include "ebpf/socket.bpf.skeleton.h" +#include "ebpf/vnet_hash.bpf.skeleton.h" #include "trace.h" =20 void ebpf_rss_init(struct EBPFRSSContext *ctx) @@ -37,33 +38,67 @@ bool ebpf_rss_is_loaded(struct EBPFRSSContext *ctx) =20 bool ebpf_rss_load(struct EBPFRSSContext *ctx) { - struct rss_bpf *rss_bpf_ctx; + struct socket_bpf *socket_bpf_ctx; =20 if (ctx =3D=3D NULL) { return false; } =20 - rss_bpf_ctx =3D rss_bpf__open(); - if (rss_bpf_ctx =3D=3D NULL) { + socket_bpf_ctx =3D socket_bpf__open(); + if (socket_bpf_ctx =3D=3D NULL) { trace_ebpf_error("eBPF RSS", "can not open eBPF RSS object"); return false; } =20 - if (rss_bpf__load(rss_bpf_ctx)) { + if (socket_bpf__load(socket_bpf_ctx)) { trace_ebpf_error("eBPF RSS", "can not load RSS program"); - rss_bpf__destroy(rss_bpf_ctx); + socket_bpf__destroy(socket_bpf_ctx); return false; } =20 - ctx->obj =3D rss_bpf_ctx; + ctx->obj =3D socket_bpf_ctx; ctx->program_fd =3D bpf_program__fd( - rss_bpf_ctx->progs.tun_rss_steering_prog); + socket_bpf_ctx->progs.tun_rss_steering_prog); ctx->map_configuration =3D bpf_map__fd( - rss_bpf_ctx->maps.tap_rss_map_configurations); + socket_bpf_ctx->maps.tap_rss_map_configurations); ctx->map_indirections_table =3D bpf_map__fd( - rss_bpf_ctx->maps.tap_rss_map_indirection_table); + socket_bpf_ctx->maps.tap_rss_map_indirection_table); ctx->map_toeplitz_key =3D bpf_map__fd( - rss_bpf_ctx->maps.tap_rss_map_toeplitz_key); + socket_bpf_ctx->maps.tap_rss_map_toeplitz_key); + + return true; +} + +bool ebpf_rss_hash_report_load(struct EBPFRSSContext *ctx) +{ + struct vnet_hash_bpf *vnet_hash_bpf_ctx; + + if (ctx =3D=3D NULL) { + return false; + } + + vnet_hash_bpf_ctx =3D vnet_hash_bpf__open(); + if (vnet_hash_bpf_ctx =3D=3D NULL) { + trace_ebpf_error("eBPF RSS", "can not open eBPF RSS object"); + return false; + } + + if (vnet_hash_bpf__load(vnet_hash_bpf_ctx)) { + trace_ebpf_error("eBPF RSS", "can not load RSS program"); + vnet_hash_bpf__destroy(vnet_hash_bpf_ctx); + return false; + } + + ctx->obj =3D vnet_hash_bpf_ctx; + ctx->program_fd =3D bpf_program__fd( + vnet_hash_bpf_ctx->progs.tun_rss_steering_prog); + ctx->map_configuration =3D bpf_map__fd( + vnet_hash_bpf_ctx->maps.tap_rss_map_configurations); + ctx->map_indirections_table =3D bpf_map__fd( + vnet_hash_bpf_ctx->maps.tap_rss_map_indirection_table); + ctx->map_toeplitz_key =3D bpf_map__fd( + vnet_hash_bpf_ctx->maps.tap_rss_map_toeplitz_key); + ctx->hash_report =3D true; =20 return true; } @@ -132,6 +167,11 @@ void ebpf_rss_unload(struct EBPFRSSContext *ctx) return; } =20 - rss_bpf__destroy(ctx->obj); + if (ctx->hash_report) { + vnet_hash_bpf__destroy(ctx->obj); + } else { + socket_bpf__destroy(ctx->obj); + } + ctx->obj =3D NULL; } diff --git a/tools/ebpf/socket.bpf.c b/tools/ebpf/socket.bpf.c new file mode 100644 index 0000000000..3e3dfcf008 --- /dev/null +++ b/tools/ebpf/socket.bpf.c @@ -0,0 +1,32 @@ +/* + * eBPF RSS program + * + * Developed by Daynix Computing LTD (http://www.daynix.com) + * + * Authors: + * Andrew Melnychenko + * Yuri Benditovich + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Prepare: + * Requires llvm, clang, bpftool, linux kernel tree + * + * Build socket.bpf.skeleton.h: + * make -f Makefile.ebpf clean all + */ + +#include "rss.bpf.h" + +SEC("socket") +int tun_rss_steering_prog(struct __sk_buff *skb) +{ + __u32 hash_value; + __u16 hash_report; + __u16 rss_queue =3D 0; + + all(skb, &hash_value, &hash_report, &rss_queue); + + return rss_queue; +} diff --git a/tools/ebpf/vnet_hash.bpf.c b/tools/ebpf/vnet_hash.bpf.c new file mode 100644 index 0000000000..82db29f01e --- /dev/null +++ b/tools/ebpf/vnet_hash.bpf.c @@ -0,0 +1,29 @@ +/* + * eBPF RSS program + * + * Developed by Daynix Computing LTD (http://www.daynix.com) + * + * Authors: + * Andrew Melnychenko + * Yuri Benditovich + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Prepare: + * Requires llvm, clang, bpftool, linux kernel tree + * + * Build vnet_hash.bpf.skeleton.h: + * make -f Makefile.ebpf clean all + */ + +#include "rss.bpf.h" + +SEC("vnet_hash") +int tun_rss_steering_prog(struct __sk_buff *skb) +{ + all(skb, + &skb->vnet_hash_value, &skb->vnet_hash_report, &skb->vnet_rss_queu= e); + + return 0; +} diff --git a/tools/ebpf/Makefile.ebpf b/tools/ebpf/Makefile.ebpf index 572ca5987a..31e8578efb 100755 --- a/tools/ebpf/Makefile.ebpf +++ b/tools/ebpf/Makefile.ebpf @@ -1,4 +1,4 @@ -SKELETONS =3D rss.bpf.skeleton.h +SKELETONS =3D socket.bpf.skeleton.h vnet_hash.bpf.skeleton.h =20 LLVM_STRIP ?=3D llvm-strip CLANG ?=3D clang @@ -6,13 +6,14 @@ INC_FLAGS =3D `$(CLANG) -print-file-name=3Dinclude` EXTRA_CFLAGS ?=3D -O2 -g -target bpf =20 all: $(SKELETONS) + cp $^ ../../ebpf/ =20 .PHONY: clean =20 clean: rm -f $(SKELETONS) $(SKELETONS:%.skeleton.h=3D%.o) =20 -%.o: %.c +%.o: %.c rss.bpf.h $(CLANG) $(INC_FLAGS) \ -D__KERNEL__ -D__ASM_SYSREG_H \ -I../include $(LINUXINCLUDE) \ @@ -21,4 +22,3 @@ clean: =20 %.skeleton.h: %.o bpftool gen skeleton $< > $@ - cp $@ ../../ebpf/ --=20 2.42.0 From nobody Mon Feb 9 19:40:08 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1697380130; cv=none; d=zohomail.com; s=zohoarc; b=DrnsD47bKKuWLpgHzMg/98odS/oIw7EXEvfc+DlQSGuSZ2xoi98SqyCm9zClwTOAckVuDlWXqyQrE25SprpMH8sQWkZhlCZXTgF2+pleXKlDcFSOi7PnzuWfNjM2Y0RA3qT97OzN3/HWyfsT+Cra826vGG4X3w/vEaWYLOLoDvM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1697380130; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:Message-Id:Reply-To:To; bh=5B6D6s0+oKXYblkLpvR/u04mFbhIWckspGCNETFNSvk=; b=Hw9M2MAdjizJEm4h6sIcRM69U+8VvuyE7f3jw4xMb3rDyQNQbQRLqzCTHvZULGMnq634Ew7Nb4MuwgeCFKidpJx5P816O06O4rmjMRCuYjeKN9gZv4p+DmHESdHq4XmzJrEKiLVveItYfrPZ0ZmkJqy9VE5RAJU2zj+qfh+4oXk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1697380130482530.135535362021; Sun, 15 Oct 2023 07:28:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qs26I-0004FA-Ub; Sun, 15 Oct 2023 10:28:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qs26G-0004Ew-LY for qemu-devel@nongnu.org; Sun, 15 Oct 2023 10:28:12 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qs26E-0003Jb-Vw for qemu-devel@nongnu.org; Sun, 15 Oct 2023 10:28:12 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-27d104fa285so2935347a91.2 for ; Sun, 15 Oct 2023 07:28:10 -0700 (PDT) Received: from localhost ([2400:4050:a840:1e00:78d2:b862:10a7:d486]) by smtp.gmail.com with UTF8SMTPSA id a29-20020a63705d000000b0058958ea2aaesm6361272pgn.83.2023.10.15.07.28.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 15 Oct 2023 07:28:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1697380089; x=1697984889; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5B6D6s0+oKXYblkLpvR/u04mFbhIWckspGCNETFNSvk=; b=1aWLDH3w9cgu8J2UDagkit+tHMyOmXCmA2tbVjKT7HOBpOjT9ptgk+gNxqJsBlHXuL J2Y15/NXYRv9hNpXzsYJWnW7XqDvsbTNtQJHlfwJYn3Y13vguUh1iHFAkANSfyUFuPV+ 6jSgALDgzvJGsbz77jSulfAZi6RvY1fekjdKwaUOEpY+jn18DsvIzvItU1xcIopzSIV+ /v78sr637KZrzGWvXrU3RuRc0O5g6Yl4N3Dkm+6oth0ttm/FSCiooccbbuFM6A6JBrvu 3AO8Aj+6WdSNqHjS0dpIYMDStq3JF+IHmmT1QNvo0Us467yGnPwxY/Ol60yLNqbqDJQC Q/1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697380089; x=1697984889; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5B6D6s0+oKXYblkLpvR/u04mFbhIWckspGCNETFNSvk=; b=EHPmHf48W0tgy+G3h/da6pmqYvK8ohuhkVRCTd88CrVApPKrRmIcEDVFUXljw75JkX 20OWcHw9gRRkkrABwNcGrIxeWItpSLU4tPbX6w14CZSkhJpkTQETOP4UObBkkKpOrrOj wU0J/moqZuJGTQBeM7/G3Z/CyshQxjoRc7NPGhcEgdg5jwP3HMzzeR2RTUSGwx/FK+n0 tct2bmc2zJMe8qjzLkgJQFb/lcwf48ljGZHS8WO9D47ZF/SW1npOdCk+HLpM/8bJCDLX FRsKml0gui3VSV+t+6Flo4FmDxmeDS7L2us+ldZ+4k03PmNH2XDiY9dHiFQeFU25nW9B hHGA== X-Gm-Message-State: AOJu0Yw4B3xd+DEkmOukqxNCHvO41xyfx2sh7a6f403yxVPjDZZbqahO TKJB2zmR+IXb8JBpcKrA8fJfaQfZY6fukE+a840S0Q== X-Google-Smtp-Source: AGHT+IF1PF3RnTjJ45uV567fKSkPaTdl3HFMfuT3gfdtWG1vRADlD7Lvv4tSBJ/14csgPMMsQ9ZJhA== X-Received: by 2002:a17:90a:1c7:b0:27d:4b6e:b405 with SMTP id 7-20020a17090a01c700b0027d4b6eb405mr4955611pjd.33.1697380089656; Sun, 15 Oct 2023 07:28:09 -0700 (PDT) From: Akihiko Odaki To: Cc: qemu-devel@nongnu.org, Yuri Benditovich , Andrew Melnychenko , "Michael S . Tsirkin" , Jason Wang , Akihiko Odaki Subject: [RFC PATCH v2 2/3] virtio-net: Use vnet_hash BPF program Date: Sun, 15 Oct 2023 23:27:44 +0900 Message-ID: <20231015142755.261808-3-akihiko.odaki@daynix.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231015142755.261808-1-akihiko.odaki@daynix.com> References: <20231015142755.261808-1-akihiko.odaki@daynix.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=2607:f8b0:4864:20::1033; envelope-from=akihiko.odaki@daynix.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @daynix-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1697380130969100001 Content-Type: text/plain; charset="utf-8" The vnet_hash BPF program is capable of hash reporting. Signed-off-by: Akihiko Odaki --- hw/net/virtio-net.c | 62 ++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 8865825362..b9d01af39d 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -1254,8 +1254,9 @@ static void virtio_net_detach_epbf_rss(VirtIONet *n) static void virtio_net_commit_rss_config(VirtIONet *n) { if (n->rss_data.enabled) { - n->rss_data.enabled_software_rss =3D n->rss_data.populate_hash; - if (n->rss_data.populate_hash) { + n->rss_data.enabled_software_rss =3D n->rss_data.populate_hash && + !n->ebpf_rss.hash_report; + if (n->rss_data.enabled_software_rss) { virtio_net_detach_epbf_rss(n); } else if (!virtio_net_attach_epbf_rss(n)) { n->rss_data.enabled_software_rss =3D true; @@ -1280,14 +1281,42 @@ static void virtio_net_disable_rss(VirtIONet *n) virtio_net_commit_rss_config(n); } =20 -static bool virtio_net_load_ebpf(VirtIONet *n) +static bool virtio_net_load_ebpf(VirtIONet *n, Error **errp) { - if (!virtio_net_attach_ebpf_to_backend(n->nic, -1)) { - /* backend does't support steering ebpf */ - return false; + bool rss =3D virtio_has_feature(n->host_features, VIRTIO_NET_F_RSS); + bool hash_report =3D virtio_has_feature(n->host_features, VIRTIO_NET_F= _HASH_REPORT); + bool attachable; + + if (!rss && !hash_report) { + return true; } =20 - return ebpf_rss_load(&n->ebpf_rss); + attachable =3D virtio_net_attach_ebpf_to_backend(n->nic, -1); + + if (hash_report) { + if (attachable && ebpf_rss_hash_report_load(&n->ebpf_rss)) { + return true; + } + + if (get_vhost_net(qemu_get_queue(n->nic)->peer)) { + error_setg(errp, "Can't report hashes with eBPF for vhost"); + return false; + } + } + + if (rss) { + bool loaded =3D attachable && ebpf_rss_load(&n->ebpf_rss); + if (!loaded && get_vhost_net(qemu_get_queue(n->nic)->peer)) { + error_setg(errp, "Can't load eBPF RSS for vhost"); + return false; + } + + if (hash_report || !loaded) { + warn_report_once("Can't use eBPF RSS - fallback to software RS= S"); + } + } + + return true; } =20 static void virtio_net_unload_ebpf(VirtIONet *n) @@ -1639,7 +1668,7 @@ static void receive_header(VirtIONet *n, const struct= iovec *iov, int iov_cnt, if (n->needs_vnet_hdr_swap) { virtio_net_hdr_swap(VIRTIO_DEVICE(n), wbuf); } - iov_from_buf(iov, iov_cnt, 0, buf, sizeof(struct virtio_net_hdr)); + iov_from_buf(iov, iov_cnt, 0, buf, n->host_hdr_len); } else { struct virtio_net_hdr hdr =3D { .flags =3D 0, @@ -1903,7 +1932,7 @@ static ssize_t virtio_net_receive_rcu(NetClientState = *nc, const uint8_t *buf, } =20 receive_header(n, sg, elem->in_num, buf, size); - if (n->rss_data.populate_hash) { + if (n->rss_data.enabled_software_rss && n->rss_data.populate_h= ash) { offset =3D sizeof(mhdr); iov_from_buf(sg, elem->in_num, offset, buf + offset, n->host_hdr_len - sizeof(mhdr)); @@ -3507,9 +3536,7 @@ static void virtio_net_device_unrealize(DeviceState *= dev) VirtIONet *n =3D VIRTIO_NET(dev); int i, max_queue_pairs; =20 - if (virtio_has_feature(n->host_features, VIRTIO_NET_F_RSS)) { - virtio_net_unload_ebpf(n); - } + virtio_net_unload_ebpf(n); =20 /* This will stop vhost backend if appropriate. */ virtio_net_set_status(vdev, 0); @@ -3716,15 +3743,8 @@ static void virtio_net_device_realize(DeviceState *d= ev, Error **errp) =20 net_rx_pkt_init(&n->rx_pkt); =20 - if (virtio_has_feature(n->host_features, VIRTIO_NET_F_RSS) && - !virtio_net_load_ebpf(n)) { - if (get_vhost_net(nc->peer)) { - error_setg(errp, "Can't load eBPF RSS for vhost"); - virtio_net_device_unrealize(dev); - return; - } - - warn_report_once("Can't load eBPF RSS - fallback to software RSS"); + if (!virtio_net_load_ebpf(n, errp)) { + virtio_net_device_unrealize(dev); } } =20 --=20 2.42.0 From nobody Mon Feb 9 19:40:08 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1697380122; cv=none; d=zohomail.com; s=zohoarc; b=eMwu7/Pf6LD3dcdll3orFeyVECHAH+nHBN71LXxnWgp21m/T6GZEGuN7E4qMePRpa9GybtxthW8ykdl9DkH+gLdIcGDvgCjP+IRmXU3D8XkCCE25mYoPBjknid+OLjOskgJgIny65VLxHR9rjTgsAytlEPyiN9AQyX+HU9eV5c0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1697380122; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:Message-Id:Reply-To:To; bh=NJvuvj66EsS91S2m+8/F/LwLUlH8M44s6LWhiQhjrYg=; b=aXgUM/xrtvDvZv7rADN7xbVvBOob/gMPYn6o+xTY18UT6cdSNHLVDkqfuanmjgYD++jTZ0+qwDEfzdbnFO5UV4crSybJQ19o1T01cRAEawoizd7J4bnAUrnY4JWHA4U1sRGd8YARCJyDGwXG3r7d0sNaNLnP3ctnJ65zDfaKj1g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1697380122646443.61630441226043; Sun, 15 Oct 2023 07:28:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qs26M-0004GM-OZ; Sun, 15 Oct 2023 10:28:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qs26K-0004Fg-SV for qemu-devel@nongnu.org; Sun, 15 Oct 2023 10:28:17 -0400 Received: from mail-oo1-xc30.google.com ([2607:f8b0:4864:20::c30]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qs26I-0003Jo-IW for qemu-devel@nongnu.org; Sun, 15 Oct 2023 10:28:16 -0400 Received: by mail-oo1-xc30.google.com with SMTP id 006d021491bc7-57f0f81b2aeso2066145eaf.3 for ; Sun, 15 Oct 2023 07:28:14 -0700 (PDT) Received: from localhost ([2400:4050:a840:1e00:78d2:b862:10a7:d486]) by smtp.gmail.com with UTF8SMTPSA id e9-20020aa78249000000b006934390d0c5sm16863448pfn.175.2023.10.15.07.28.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 15 Oct 2023 07:28:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1697380093; x=1697984893; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NJvuvj66EsS91S2m+8/F/LwLUlH8M44s6LWhiQhjrYg=; b=McciN+O9SrrB9p665M2NsQP5bjiPW2e0G3GUN67kTZsCsXNUKqD2FnJv7hK7k/s0mF kYIruvbqkTTGq6nAysaYzdWjQI6s1h+xMiTxqaHRriijtMo+zOfnQ0OO9BfHurw4Pchu K36A8AbAwrAFgkexSN1B/E/eFv20y7NBu/vdj5QiBd23i5sReKOX+M8OXl5tA68w9IZ1 OqPLJiITrzwk9bWfnl6za/NYk4MCXzeZWZknfoZd+Mu6/mBjr7HELuE9hjwZBRZBKKyZ CVwv8NBhZaKfCdZsAOH4n5lsAG2iipnoovsXgs99zTnOvbR7I8OrBIHEqNjG17AiF8Lg qZyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697380093; x=1697984893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NJvuvj66EsS91S2m+8/F/LwLUlH8M44s6LWhiQhjrYg=; b=Jno+4e5A2hmffIHwPlA5+Twt7JIYLR9cM10K3KFAlQKe0pXhYCNrGmKidgoqFoYweZ lSUSNotpGwnhcLbZjEccmHVA/B18HFauLoT+Uu9l8pdHurVitUhrGZHZubr7n8ur1+XX jf3pbsU0tF204lnmrtDIG+Dsnl5lCaSGD7AAm8xSfMvzMTGXivuBkCS8VVViyh0qxyoA Nwl3UHOD7zG4SSX7feLSEP6GrN+wZ+lzOQbNarW3onlW1yW49h3BadKa1nnq+c/eiS0D /oUlt8E/EUz9NUQ50wVjk4jv0xvDX/sCBq3CxZZQO8FYPV58Rj93ctLjHeY74qxKIfvO 0Znw== X-Gm-Message-State: AOJu0YztMjXz2EgBVwcgdyWs4vI/yQiuetuvEFAp3ImDqaxawmOTXwdK 2KM5e6IMMt+BPjhDGe0ZIaa+49Kyv5gvQ1bEUiP7Qg== X-Google-Smtp-Source: AGHT+IFYJ7VL3oFJDlva87pZAogAIXLzWnBUolBcQpyfYNsmQseO7g65u/qOLQvm2Lh/HbMQbSuXVg== X-Received: by 2002:a05:6358:5e0a:b0:139:9fc3:eade with SMTP id q10-20020a0563585e0a00b001399fc3eademr30300873rwn.29.1697380093040; Sun, 15 Oct 2023 07:28:13 -0700 (PDT) From: Akihiko Odaki To: Cc: qemu-devel@nongnu.org, Yuri Benditovich , Andrew Melnychenko , "Michael S . Tsirkin" , Jason Wang , Akihiko Odaki Subject: [RFC PATCH v2 3/3] docs: Describe eBPF hash reporting Date: Sun, 15 Oct 2023 23:27:45 +0900 Message-ID: <20231015142755.261808-4-akihiko.odaki@daynix.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231015142755.261808-1-akihiko.odaki@daynix.com> References: <20231015142755.261808-1-akihiko.odaki@daynix.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=2607:f8b0:4864:20::c30; envelope-from=akihiko.odaki@daynix.com; helo=mail-oo1-xc30.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @daynix-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1697380122974100001 Content-Type: text/plain; charset="utf-8" eBPF hash reporting is now available. Signed-off-by: Akihiko Odaki --- docs/devel/ebpf_rss.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/devel/ebpf_rss.rst b/docs/devel/ebpf_rss.rst index 4a68682b31..b015a8a78b 100644 --- a/docs/devel/ebpf_rss.rst +++ b/docs/devel/ebpf_rss.rst @@ -27,7 +27,8 @@ Simplified decision formula: =20 Not for all packets, the hash can/should be calculated. =20 -Note: currently, eBPF RSS does not support hash reporting. +Note: eBPF hash reporting a kernel and libbpf patched with: +https://lore.kernel.org/all/20231015141644.260646-1-akihiko.odaki@daynix.c= om/ =20 eBPF RSS turned on by different combinations of vhost-net, vitrio-net and = tap configurations: =20 @@ -43,7 +44,7 @@ eBPF RSS turned on by different combinations of vhost-net= , vitrio-net and tap co =20 tap,vhost=3Doff & virtio-net-pci,rss=3Don,hash=3Don =20 -- eBPF is used, hash population feature is not reported to the guest: +- eBPF is used, hash population feature is reported to the guest: =20 tap,vhost=3Don & virtio-net-pci,rss=3Don,hash=3Don =20 --=20 2.42.0