[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] merge with xen-unstable.hg
# HG changeset patch # User Alex Williamson <alex.williamson@xxxxxx> # Date 1208279386 21600 # Node ID 2b3d3aaf8be4395144414d4a1d9e4799e5485cab # Parent c0f77a6575475a1e6aa29ea4ed9f25893b8f19a0 # Parent 08e010c3f2519a585e2948871ab6be0fe25d93d4 merge with xen-unstable.hg --- tools/firmware/etherboot/make-eb-rom-list | 11 tools/security/policies/DEFAULT-UL-security_policy.xml | 41 tools/xenstore/xsls.c | 171 xen/drivers/passthrough/pci-direct.h | 48 xen/include/asm-ia64/linux-xen/linux/pci.h | 820 -- xen/include/asm-ia64/linux/asm/sn/pcidev.h | 83 .hgignore | 3 docs/misc/VMX_changes.txt | 2 docs/misc/hg-cheatsheet.txt | 14 docs/misc/vtpm.txt | 2 docs/misc/xenstore.txt | 3 docs/src/interface.tex | 10 docs/src/user.tex | 4 docs/xen-api/presentation.tex | 2 docs/xen-api/todo.tex | 2 docs/xen-api/wire-protocol.tex | 6 docs/xen-api/xenapi-datamodel.tex | 8 extras/mini-os/blkfront.c | 188 extras/mini-os/include/blkfront.h | 12 extras/mini-os/kernel.c | 41 extras/mini-os/lib/xmalloc.c | 14 stubdom/stubdom-dm | 2 tools/blktap/drivers/block-qcow.c | 2 tools/examples/xend-config-xenapi.sxp | 11 tools/examples/xend-config.sxp | 11 tools/firmware/Rules.mk | 17 tools/firmware/etherboot/Makefile | 15 tools/firmware/etherboot/eb-roms.h | 5695 ++++++++--------- tools/firmware/extboot/Makefile | 14 tools/firmware/hvmloader/Makefile | 17 tools/firmware/hvmloader/acpi/Makefile | 12 tools/firmware/hvmloader/hvmloader.c | 93 tools/firmware/hvmloader/option_rom.h | 50 tools/firmware/hvmloader/smp.c | 132 tools/firmware/hvmloader/util.c | 38 tools/firmware/hvmloader/util.h | 5 tools/firmware/rombios/32bit/Makefile | 8 tools/firmware/rombios/32bit/tcgbios/Makefile | 8 tools/firmware/rombios/32bit/tcgbios/tcgbios.c | 2 tools/ioemu/Makefile | 11 tools/ioemu/block-cow.c | 3 tools/ioemu/block-vbd.c | 48 tools/ioemu/block.c | 4 tools/ioemu/hw/ide.c | 5 tools/ioemu/hw/rtl8139.c | 18 tools/ioemu/hw/xen_machine_fv.c | 1 tools/ioemu/osdep.c | 3 tools/ioemu/qemu-img.c | 4 tools/ioemu/tapdisk-ioemu.c | 142 tools/ioemu/target-i386-dm/helper2.c | 2 tools/ioemu/vl.c | 38 tools/ioemu/vl.h | 4 tools/ioemu/xenstore.c | 12 tools/libxc/xc_domain.c | 31 tools/libxc/xc_domain_restore.c | 28 tools/libxc/xc_domain_save.c | 62 tools/libxc/xc_evtchn.c | 24 tools/libxc/xc_hvm_build.c | 89 tools/libxc/xenctrl.h | 3 tools/libxc/xg_private.c | 17 tools/libxc/xg_private.h | 2 tools/python/xen/util/acmpolicy.py | 26 tools/python/xen/util/xsm/acm/acm.py | 21 tools/python/xen/xend/XendConstants.py | 1 tools/python/xen/xend/XendDomainInfo.py | 10 tools/python/xen/xend/XendOptions.py | 7 tools/python/xen/xend/balloon.py | 17 tools/python/xen/xend/image.py | 7 tools/python/xen/xm/main.py | 10 tools/python/xen/xm/shutdown.py | 2 tools/security/Makefile | 2 tools/tests/blowfish.mk | 8 tools/xcutils/Makefile | 2 tools/xcutils/lsevtchn.c | 59 tools/xenstore/Makefile | 40 tools/xenstore/xenstore_client.c | 627 + tools/xenstore/xenstored_core.c | 2 tools/xenstore/xenstored_solaris.c | 1 tools/xenstore/xenstored_watch.c | 2 tools/xenstore/xs.c | 108 xen/arch/ia64/linux-xen/sn/kernel/irq.c | 2 xen/arch/ia64/vmx/vmx_hypercall.c | 5 xen/arch/ia64/xen/mm.c | 10 xen/arch/ia64/xen/tlb_track.c | 4 xen/arch/ia64/xen/xensetup.c | 2 xen/arch/x86/Makefile | 1 xen/arch/x86/acpi/boot.c | 62 xen/arch/x86/cpu/amd.c | 18 xen/arch/x86/domain.c | 25 xen/arch/x86/domain_build.c | 4 xen/arch/x86/hvm/emulate.c | 89 xen/arch/x86/hvm/hpet.c | 21 xen/arch/x86/hvm/hvm.c | 194 xen/arch/x86/hvm/i8254.c | 68 xen/arch/x86/hvm/intercept.c | 191 xen/arch/x86/hvm/io.c | 92 xen/arch/x86/hvm/mtrr.c | 2 xen/arch/x86/hvm/pmtimer.c | 12 xen/arch/x86/hvm/rtc.c | 12 xen/arch/x86/hvm/stdvga.c | 28 xen/arch/x86/hvm/svm/svm.c | 7 xen/arch/x86/hvm/vioapic.c | 54 xen/arch/x86/hvm/vlapic.c | 327 xen/arch/x86/hvm/vmx/realmode.c | 2 xen/arch/x86/hvm/vmx/vmcs.c | 85 xen/arch/x86/hvm/vmx/vmx.c | 307 xen/arch/x86/hvm/vmx/x86_32/exits.S | 2 xen/arch/x86/hvm/vmx/x86_64/exits.S | 2 xen/arch/x86/hvm/vpic.c | 42 xen/arch/x86/io_apic.c | 9 xen/arch/x86/mm.c | 51 xen/arch/x86/mm/hap/Makefile | 1 xen/arch/x86/mm/hap/hap.c | 12 xen/arch/x86/mm/hap/p2m-ept.c | 257 xen/arch/x86/mm/p2m.c | 377 - xen/arch/x86/mm/paging.c | 19 xen/arch/x86/mm/shadow/common.c | 8 xen/arch/x86/pci.c | 118 xen/arch/x86/setup.c | 2 xen/arch/x86/time.c | 158 xen/arch/x86/traps.c | 299 xen/arch/x86/x86_64/compat/mm.c | 4 xen/arch/x86/x86_64/mm.c | 8 xen/common/compat/domain.c | 4 xen/common/compat/grant_table.c | 20 xen/common/domain.c | 10 xen/common/domctl.c | 7 xen/common/event_channel.c | 12 xen/common/grant_table.c | 6 xen/common/keyhandler.c | 8 xen/common/memory.c | 25 xen/common/page_alloc.c | 27 xen/common/softirq.c | 102 xen/common/trace.c | 9 xen/common/xencomm.c | 1 xen/drivers/passthrough/amd/iommu_detect.c | 37 xen/drivers/passthrough/amd/iommu_init.c | 2 xen/drivers/passthrough/amd/iommu_map.c | 76 xen/drivers/passthrough/amd/pci_amd_iommu.c | 11 xen/drivers/passthrough/io.c | 74 xen/drivers/passthrough/iommu.c | 2 xen/drivers/passthrough/vtd/Makefile | 2 xen/drivers/passthrough/vtd/dmar.c | 30 xen/drivers/passthrough/vtd/dmar.h | 8 xen/drivers/passthrough/vtd/intremap.c | 68 xen/drivers/passthrough/vtd/iommu.c | 500 - xen/drivers/passthrough/vtd/iommu.h | 4 xen/drivers/passthrough/vtd/qinval.c | 105 xen/drivers/passthrough/vtd/utils.c | 79 xen/drivers/passthrough/vtd/vtd.h | 9 xen/drivers/passthrough/vtd/x86/Makefile | 1 xen/drivers/passthrough/vtd/x86/vtd.c | 303 xen/include/asm-ia64/domain.h | 2 xen/include/asm-ia64/linux-xen/asm/sn/README.origin | 1 xen/include/asm-ia64/linux-xen/asm/sn/pcibr_provider.h | 2 xen/include/asm-ia64/linux-xen/asm/sn/pcidev.h | 87 xen/include/asm-ia64/linux-xen/linux/interrupt.h | 2 xen/include/asm-ia64/linux-xen/linux/linux-pci.h | 820 ++ xen/include/asm-ia64/linux/asm/sn/README.origin | 1 xen/include/asm-x86/domain.h | 26 xen/include/asm-x86/hvm/domain.h | 12 xen/include/asm-x86/hvm/hvm.h | 4 xen/include/asm-x86/hvm/io.h | 21 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h | 1 xen/include/asm-x86/hvm/svm/vmcb.h | 6 xen/include/asm-x86/hvm/vcpu.h | 6 xen/include/asm-x86/hvm/vlapic.h | 2 xen/include/asm-x86/hvm/vmx/vmcs.h | 47 xen/include/asm-x86/hvm/vmx/vmx.h | 128 xen/include/asm-x86/mm.h | 3 xen/include/asm-x86/numa.h | 1 xen/include/asm-x86/p2m.h | 80 xen/include/asm-x86/paging.h | 2 xen/include/public/hvm/params.h | 8 xen/include/xen/hvm/iommu.h | 5 xen/include/xen/hypercall.h | 1 xen/include/xen/iommu.h | 6 xen/include/xen/mm.h | 7 xen/include/xen/numa.h | 7 xen/include/xen/pci.h | 29 xen/include/xen/sched.h | 9 xen/include/xen/softirq.h | 59 xen/include/xen/xencomm.h | 8 xen/xsm/acm/acm_chinesewall_hooks.c | 8 xen/xsm/acm/acm_simple_type_enforcement_hooks.c | 12 185 files changed, 8535 insertions(+), 6533 deletions(-) diff -r c0f77a657547 -r 2b3d3aaf8be4 .hgignore --- a/.hgignore Mon Apr 14 14:04:58 2008 -0600 +++ b/.hgignore Tue Apr 15 11:09:46 2008 -0600 @@ -150,6 +150,7 @@ ^tools/ioemu/qemu-tech\.html$ ^tools/ioemu/qemu\.1$ ^tools/ioemu/qemu\.pod$ +^tools/ioemu/tapdisk-ioemu$ ^tools/libxc/ia64/asm/.*\.h$ ^tools/libxc/ia64/acpi/.*\.h$ ^tools/libxc/ia64/acpi/platform/.*\.h$ @@ -198,6 +199,7 @@ ^tools/vtpm/tpm_emulator/.*$ ^tools/vtpm/vtpm/.*$ ^tools/vtpm_manager/manager/vtpm_managerd$ +^tools/xcutils/lsevtchn$ ^tools/xcutils/xc_restore$ ^tools/xcutils/xc_save$ ^tools/xcutils/readnotes$ @@ -208,6 +210,7 @@ ^tools/xenstat/xentop/xentop$ ^tools/xenstore/testsuite/tmp/.*$ ^tools/xenstore/xen$ +^tools/xenstore/xenstore$ ^tools/xenstore/xenstore-chmod$ ^tools/xenstore/xenstore-exists$ ^tools/xenstore/xenstore-list$ diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/misc/VMX_changes.txt --- a/docs/misc/VMX_changes.txt Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/misc/VMX_changes.txt Tue Apr 15 11:09:46 2008 -0600 @@ -79,7 +79,7 @@ Changes to the existing code: * include/asm-x86/processor.h: struct arch_vmx_struct arch_vmx has been added to the thread_struct data structure. The arch_vmx has - the addtional VMX-related CPU context. + the additional VMX-related CPU context. * arch/x86/io_apic.c: reverse mapping between vector and irq has been added. We will revisit this code when considering MSI diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/misc/hg-cheatsheet.txt --- a/docs/misc/hg-cheatsheet.txt Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/misc/hg-cheatsheet.txt Tue Apr 15 11:09:46 2008 -0600 @@ -12,7 +12,7 @@ running with the new tools as quickly as running with the new tools as quickly as possible, and is written from the perspective of someone who has been using BK. -For a more detailed exposition, see the mecurial tutorial: +For a more detailed exposition, see the mercurial tutorial: http://www.serpentine.com/mercurial/index.cgi?Tutorial The Hg manpage is available at: @@ -69,7 +69,7 @@ actually pretty neat. For example, it wo actually pretty neat. For example, it would in principle enable you to have both the 2.0-testing and unstable trees in a single repository. We shyed away from doing this as we thought the risk of -commiting to the wrong head was too great. +committing to the wrong head was too great. One slightly confusing aspect of Hg is that many of the commands have aliases, and hence when looking things up in the man page its not @@ -81,7 +81,7 @@ Getting Xen Getting Xen ----------- -The URL for the mainline Xen mercurial respository is: +The URL for the mainline Xen mercurial repository is: http://xenbits.xensource.com/xen-unstable.hg (similarly for xen-2.0 and xen-2.0-testing) @@ -273,9 +273,9 @@ Pushing changesets to a parent repositor Pushes changes up to a parent. You can't push if you pulled the repository off the web interface. In fact, you can currently only push -to an ssh target -- filesystem drectory targets don't work, but this +to an ssh target -- filesystem directory targets don't work, but this will be fixed soon. -For now it is possible to set up assymetric pull/push paths. Pulls can +For now it is possible to set up asymmetric pull/push paths. Pulls can be done via web interface while pushes via ssh. Example of .hg/hgrc config file: | [paths] @@ -332,7 +332,7 @@ system. Hg will probably get fixed soon, system. Hg will probably get fixed soon, but in the meantime you can cleanup with "find -depth -type d -print | xargs -r rmdir". -You can return to the tip by ommiting an explicit changeset id. +You can return to the tip by omitting an explicit changeset id. The manifest command lets you see the contents of the repository for the current changeset. @@ -347,7 +347,7 @@ This will print a bunch of records of th | 7fc869aae2945a9f4626fad96552db3103e61cb9 644 README | ... -This lists the hash of each file, its 1-bit 'executable' atribute +This lists the hash of each file, its 1-bit 'executable' attribute (either file permission mode 644 or 755), and the file name. So, to determine the files that change across two changesets, you would dump the respective manifests to files, and use diff. diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/misc/vtpm.txt --- a/docs/misc/vtpm.txt Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/misc/vtpm.txt Tue Apr 15 11:09:46 2008 -0600 @@ -143,7 +143,7 @@ PCR-08: 00 00 00 00 00 00 00 00 00 00 00 PCR-08: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [...] -At this point the user domain has been sucessfully connected to its +At this point the user domain has been successfully connected to its virtual TPM instance. For further information please read the documentation in diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/misc/xenstore.txt --- a/docs/misc/xenstore.txt Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/misc/xenstore.txt Tue Apr 15 11:09:46 2008 -0600 @@ -129,7 +129,7 @@ reply payloads as applicable: reply payloads as applicable: ----------- Database read, write and permissions operatons ---------- +---------- Database read, write and permissions operations ---------- READ <path>| <value|> WRITE <path>|<value|> @@ -206,7 +206,7 @@ WATCH_EVENT <epath>|<token>| as described above. req_id and tx_id are both 0. <epath> is the event's path, ie the actual path that was - modifed; however if the event was the recursive removal of an + modified; however if the event was the recursive removal of an parent of <wpath>, <epath> is just <wpath> (rather than the actual path which was removed). So <epath> is a child of <wpath>, regardless. diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/src/interface.tex --- a/docs/src/interface.tex Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/src/interface.tex Tue Apr 15 11:09:46 2008 -0600 @@ -470,7 +470,7 @@ typedef struct shared_info { * are delivered by this mechanism: * 1. Bi-directional inter- and intra-domain connections. Domains must * arrange out-of-band to set up a connection (usually by allocating - * an unbound 'listener' port and avertising that via a storage service + * an unbound 'listener' port and advertising that via a storage service * such as xenstore). * 2. Physical interrupts. A domain with suitable hardware-access * privileges can bind an event-channel port to a physical interrupt @@ -915,7 +915,7 @@ These activities include: (e.g. performance-related statistics, etc). \end{itemize} -The store is arranged as a hierachical collection of key-value pairs. +The store is arranged as a hierarchical collection of key-value pairs. Each domain has a directory hierarchy containing data related to its configuration. Domains are permitted to register for notifications about changes in subtrees of the store, and to apply changes to the @@ -1114,9 +1114,9 @@ This path contains: \end{description} \end{description} - \item[device-misc/] miscellanous information for devices + \item[device-misc/] miscellaneous information for devices \begin{description} - \item[vif/] miscellanous information for vif devices + \item[vif/] miscellaneous information for vif devices \begin{description} \item[nextDeviceID] the next device id to use \end{description} @@ -1511,7 +1511,7 @@ The virtual TPM implementation listens f The virtual TPM implementation listens for TPM request on /dev/vtpm. Since it must be able to apply the TPM request packet to the virtual TPM instance associated with the virtual machine, a 4-byte virtual TPM instance -identifier is prepended to each packet by the backend driver (in network +identifier is pretended to each packet by the backend driver (in network byte order) for internal routing of the request. \subsection{Virtual TPM ring interface} diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/src/user.tex --- a/docs/src/user.tex Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/src/user.tex Tue Apr 15 11:09:46 2008 -0600 @@ -3394,7 +3394,7 @@ Alternatively, a system that has two har Alternatively, a system that has two hard-drives does not need a VIO domain but can directly assign one hardware storage device to each of the workloads if the platform offers an IO-MMU, cf -Section~\ref{s:ddsecurity}. Sharing hardware through virtualizated devices +Section~\ref{s:ddsecurity}. Sharing hardware through virtualized devices is a trade-off between the amount of trusted code (size of the trusted computing base) and the amount of acceptable over-provisioning. This holds both for peripherals and for system platforms. @@ -4652,7 +4652,7 @@ answering the questions as follows: \begin{enumerate} \item When the program asks for \textbf{model}, -scroll down and selese \textbf{SummaSketch (MM Compatible)}. +scroll down and select \textbf{SummaSketch (MM Compatible)}. \item When the program asks for \textbf{COM Port} specify \textbf{com2}. diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/xen-api/presentation.tex --- a/docs/xen-api/presentation.tex Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/xen-api/presentation.tex Tue Apr 15 11:09:46 2008 -0600 @@ -69,7 +69,7 @@ The API reference explicitly lists the f The API reference explicitly lists the fields that are bound together in this way. It also contains a diagram that shows relationships between classes. In this diagram an edge signifies the -existance of a pair of fields that are bound together, using standard +existence of a pair of fields that are bound together, using standard crows-foot notation to signify the type of relationship (e.g.\ one-many, many-many). diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/xen-api/todo.tex --- a/docs/xen-api/todo.tex Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/xen-api/todo.tex Tue Apr 15 11:09:46 2008 -0600 @@ -32,7 +32,7 @@ code, potential error description, but o \item Clarify session behaviour wrt timeouts and disconnects. -\item Clarify behaviour of progress field on asyncrhonous request polling when +\item Clarify behaviour of progress field on asynchronous request polling when that request fails. \item Clarify which calls have asynchronous counterparts by marking them as such in the reference. (Individual getters and setters are too small and quick to justify having async versions) diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/xen-api/wire-protocol.tex --- a/docs/xen-api/wire-protocol.tex Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/xen-api/wire-protocol.tex Tue Apr 15 11:09:46 2008 -0600 @@ -185,7 +185,7 @@ Where {\tt uname} and {\tt password} ref Where {\tt uname} and {\tt password} refer to your username and password respectively, as defined by the Xen administrator. The {\tt session\_id} returned by {\tt session.login\_with\_password} is passed -to subequent RPC calls as an authentication token. +to subsequent RPC calls as an authentication token. A session can be terminated with the {\tt session.logout} function: \begin{verbatim} @@ -210,7 +210,7 @@ Async.VM.clone(...)}, that is non-blocki Instead of returning its result directly, an asynchronous RPC call returns a {\tt task-id}; this identifier is subsequently used -to track the status of a running asynchronous RPC. Note that an asychronous +to track the status of a running asynchronous RPC. Note that an asynchronous call may fail immediately, before a {\tt task-id} has even been created---to represent this eventuality, the returned {\tt task-id} is wrapped in an XML-RPC struct with a {\tt Status}, {\tt ErrorDescription} and @@ -248,7 +248,7 @@ Create a python object referencing the r \end{verbatim} Acquire a session token by logging in with a username and password -(error-handling ommitted for brevity; the session token is pointed to by the +(error-handling omitted for brevity; the session token is pointed to by the key {\tt 'Value'} in the returned dictionary) \begin{verbatim} diff -r c0f77a657547 -r 2b3d3aaf8be4 docs/xen-api/xenapi-datamodel.tex --- a/docs/xen-api/xenapi-datamodel.tex Mon Apr 14 14:04:58 2008 -0600 +++ b/docs/xen-api/xenapi-datamodel.tex Tue Apr 15 11:09:46 2008 -0600 @@ -75,7 +75,7 @@ host.host\_CPUs & host\_cpu.host & many- \hline \end{tabular}\end{center} -The following represents bound fields (as specified above) diagramatically, using crows-foot notation to specify one-to-one, one-to-many or many-to-many +The following represents bound fields (as specified above) diagrammatically, using crows-foot notation to specify one-to-one, one-to-many or many-to-many relationships: \begin{center}\resizebox{0.8\textwidth}{!}{ @@ -444,7 +444,7 @@ returned. Also returned is a developer- \subsubsection{VLAN\_TAG\_INVALID} -You tried to create a VLAN, but the tag you gave was invalid -- it mmust be +You tried to create a VLAN, but the tag you gave was invalid -- it must be between 0 and 4095. The parameter echoes the VLAN tag you gave. \vspace{0.3cm} @@ -1390,7 +1390,7 @@ Quals & Field & Type & Description \\ $\mathit{RW}$ & {\tt memory/static\_max} & int & Statically-set (i.e. absolute) maximum (bytes) \\ $\mathit{RW}$ & {\tt memory/dynamic\_max} & int & Dynamic maximum (bytes) \\ $\mathit{RW}$ & {\tt memory/dynamic\_min} & int & Dynamic minimum (bytes) \\ -$\mathit{RW}$ & {\tt memory/static\_min} & int & Statically-set (i.e. absolute) mininum (bytes) \\ +$\mathit{RW}$ & {\tt memory/static\_min} & int & Statically-set (i.e. absolute) minimum (bytes) \\ $\mathit{RW}$ & {\tt VCPUs/params} & (string $\rightarrow$ string) Map & configuration parameters for the selected VCPU policy \\ $\mathit{RW}$ & {\tt VCPUs/max} & int & Max number of VCPUs \\ $\mathit{RW}$ & {\tt VCPUs/at\_startup} & int & Boot number of VCPUs \\ @@ -14954,7 +14954,7 @@ Check whether a VM with the given securi \begin{tabular}{|c|c|p{7cm}|} \hline {\bf type} & {\bf name} & {\bf description} \\ \hline -{\tt string } & security_label & reference to the object \\ \hline +{\tt string } & security\_label & reference to the object \\ \hline \end{tabular} diff -r c0f77a657547 -r 2b3d3aaf8be4 extras/mini-os/blkfront.c --- a/extras/mini-os/blkfront.c Mon Apr 14 14:04:58 2008 -0600 +++ b/extras/mini-os/blkfront.c Tue Apr 15 11:09:46 2008 -0600 @@ -48,11 +48,7 @@ struct blkfront_dev { char *nodename; char *backend; - unsigned sector_size; - unsigned sectors; - int mode; - int barrier; - int flush; + struct blkfront_info info; #ifdef HAVE_LIBC int fd; @@ -70,7 +66,7 @@ void blkfront_handler(evtchn_port_t port wake_up(&blkfront_queue); } -struct blkfront_dev *init_blkfront(char *nodename, uint64_t *sectors, unsigned *sector_size, int *mode, int *info) +struct blkfront_dev *init_blkfront(char *nodename, struct blkfront_info *info) { xenbus_transaction_t xbt; char* err; @@ -163,9 +159,9 @@ done: return NULL; } if (*c == 'w') - *mode = dev->mode = O_RDWR; + dev->info.mode = O_RDWR; else - *mode = dev->mode = O_RDONLY; + dev->info.mode = O_RDONLY; free(c); snprintf(path, sizeof(path), "%s/state", dev->backend); @@ -177,24 +173,26 @@ done: xenbus_unwatch_path(XBT_NIL, path); snprintf(path, sizeof(path), "%s/info", dev->backend); - *info = xenbus_read_integer(path); + dev->info.info = xenbus_read_integer(path); snprintf(path, sizeof(path), "%s/sectors", dev->backend); // FIXME: read_integer returns an int, so disk size limited to 1TB for now - *sectors = dev->sectors = xenbus_read_integer(path); + dev->info.sectors = xenbus_read_integer(path); snprintf(path, sizeof(path), "%s/sector-size", dev->backend); - *sector_size = dev->sector_size = xenbus_read_integer(path); + dev->info.sector_size = xenbus_read_integer(path); snprintf(path, sizeof(path), "%s/feature-barrier", dev->backend); - dev->barrier = xenbus_read_integer(path); + dev->info.barrier = xenbus_read_integer(path); snprintf(path, sizeof(path), "%s/feature-flush-cache", dev->backend); - dev->flush = xenbus_read_integer(path); + dev->info.flush = xenbus_read_integer(path); + + *info = dev->info; } unmask_evtchn(dev->evtchn); - printk("%u sectors of %u bytes\n", dev->sectors, dev->sector_size); + printk("%u sectors of %u bytes\n", dev->info.sectors, dev->info.sector_size); printk("**************************\n"); return dev; @@ -258,11 +256,11 @@ void blkfront_aio(struct blkfront_aiocb uintptr_t start, end; // Can't io at non-sector-aligned location - ASSERT(!(aiocbp->aio_offset & (dev->sector_size-1))); + ASSERT(!(aiocbp->aio_offset & (dev->info.sector_size-1))); // Can't io non-sector-sized amounts - ASSERT(!(aiocbp->aio_nbytes & (dev->sector_size-1))); + ASSERT(!(aiocbp->aio_nbytes & (dev->info.sector_size-1))); // Can't io non-sector-aligned buffer - ASSERT(!((uintptr_t) aiocbp->aio_buf & (dev->sector_size-1))); + ASSERT(!((uintptr_t) aiocbp->aio_buf & (dev->info.sector_size-1))); start = (uintptr_t)aiocbp->aio_buf & PAGE_MASK; end = ((uintptr_t)aiocbp->aio_buf + aiocbp->aio_nbytes + PAGE_SIZE - 1) & PAGE_MASK; @@ -280,7 +278,7 @@ void blkfront_aio(struct blkfront_aiocb req->nr_segments = n; req->handle = dev->handle; req->id = (uintptr_t) aiocbp; - req->sector_number = aiocbp->aio_offset / dev->sector_size; + req->sector_number = aiocbp->aio_offset / dev->info.sector_size; for (j = 0; j < n; j++) { uintptr_t data = start + j * PAGE_SIZE; @@ -292,10 +290,10 @@ void blkfront_aio(struct blkfront_aiocb aiocbp->gref[j] = req->seg[j].gref = gnttab_grant_access(dev->dom, virtual_to_mfn(data), write); req->seg[j].first_sect = 0; - req->seg[j].last_sect = PAGE_SIZE / dev->sector_size - 1; - } - req->seg[0].first_sect = ((uintptr_t)aiocbp->aio_buf & ~PAGE_MASK) / dev->sector_size; - req->seg[n-1].last_sect = (((uintptr_t)aiocbp->aio_buf + aiocbp->aio_nbytes - 1) & ~PAGE_MASK) / dev->sector_size; + req->seg[j].last_sect = PAGE_SIZE / dev->info.sector_size - 1; + } + req->seg[0].first_sect = ((uintptr_t)aiocbp->aio_buf & ~PAGE_MASK) / dev->info.sector_size; + req->seg[n-1].last_sect = (((uintptr_t)aiocbp->aio_buf + aiocbp->aio_nbytes - 1) & ~PAGE_MASK) / dev->info.sector_size; dev->ring.req_prod_pvt = i + 1; @@ -315,67 +313,7 @@ void blkfront_aio_read(struct blkfront_a blkfront_aio(aiocbp, 0); } -int blkfront_aio_poll(struct blkfront_dev *dev) -{ - RING_IDX rp, cons; - struct blkif_response *rsp; - int more; - -moretodo: -#ifdef HAVE_LIBC - files[dev->fd].read = 0; - mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */ -#endif - - rp = dev->ring.sring->rsp_prod; - rmb(); /* Ensure we see queued responses up to 'rp'. */ - cons = dev->ring.rsp_cons; - - int nr_consumed = 0; - while ((cons != rp)) - { - rsp = RING_GET_RESPONSE(&dev->ring, cons); - nr_consumed++; - - if (rsp->status != BLKIF_RSP_OKAY) - printk("block error %d for op %d\n", rsp->status, rsp->operation); - - switch (rsp->operation) { - case BLKIF_OP_READ: - case BLKIF_OP_WRITE: - { - struct blkfront_aiocb *aiocbp = (void*) (uintptr_t) rsp->id; - int status = rsp->status; - int j; - - for (j = 0; j < aiocbp->n; j++) - gnttab_end_access(aiocbp->gref[j]); - - dev->ring.rsp_cons = ++cons; - /* Nota: callback frees aiocbp itself */ - aiocbp->aio_cb(aiocbp, status ? -EIO : 0); - if (dev->ring.rsp_cons != cons) - /* We reentered, we must not continue here */ - goto out; - break; - } - default: - printk("unrecognized block operation %d response\n", rsp->operation); - case BLKIF_OP_WRITE_BARRIER: - case BLKIF_OP_FLUSH_DISKCACHE: - dev->ring.rsp_cons = ++cons; - break; - } - } - -out: - RING_FINAL_CHECK_FOR_RESPONSES(&dev->ring, more); - if (more) goto moretodo; - - return nr_consumed; -} - -static void blkfront_push_operation(struct blkfront_dev *dev, uint8_t op) +static void blkfront_push_operation(struct blkfront_dev *dev, uint8_t op, uint64_t id) { int i; struct blkif_request *req; @@ -387,8 +325,7 @@ static void blkfront_push_operation(stru req->operation = op; req->nr_segments = 0; req->handle = dev->handle; - /* Not used */ - req->id = 0; + req->id = id; /* Not needed anyway, but the backend will check it */ req->sector_number = 0; dev->ring.req_prod_pvt = i + 1; @@ -397,16 +334,22 @@ static void blkfront_push_operation(stru if (notify) notify_remote_via_evtchn(dev->evtchn); } +void blkfront_aio_push_operation(struct blkfront_aiocb *aiocbp, uint8_t op) +{ + struct blkfront_dev *dev = aiocbp->aio_dev; + blkfront_push_operation(dev, op, (uintptr_t) aiocbp); +} + void blkfront_sync(struct blkfront_dev *dev) { unsigned long flags; - if (dev->mode == O_RDWR) { - if (dev->barrier == 1) - blkfront_push_operation(dev, BLKIF_OP_WRITE_BARRIER); - - if (dev->flush == 1) - blkfront_push_operation(dev, BLKIF_OP_FLUSH_DISKCACHE); + if (dev->info.mode == O_RDWR) { + if (dev->info.barrier == 1) + blkfront_push_operation(dev, BLKIF_OP_WRITE_BARRIER, 0); + + if (dev->info.flush == 1) + blkfront_push_operation(dev, BLKIF_OP_FLUSH_DISKCACHE, 0); } /* Note: This won't finish if another thread enqueues requests. */ @@ -426,6 +369,69 @@ void blkfront_sync(struct blkfront_dev * local_irq_restore(flags); } +int blkfront_aio_poll(struct blkfront_dev *dev) +{ + RING_IDX rp, cons; + struct blkif_response *rsp; + int more; + +moretodo: +#ifdef HAVE_LIBC + files[dev->fd].read = 0; + mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */ +#endif + + rp = dev->ring.sring->rsp_prod; + rmb(); /* Ensure we see queued responses up to 'rp'. */ + cons = dev->ring.rsp_cons; + + int nr_consumed = 0; + while ((cons != rp)) + { + rsp = RING_GET_RESPONSE(&dev->ring, cons); + nr_consumed++; + + struct blkfront_aiocb *aiocbp = (void*) (uintptr_t) rsp->id; + int status = rsp->status; + + if (status != BLKIF_RSP_OKAY) + printk("block error %d for op %d\n", status, rsp->operation); + + switch (rsp->operation) { + case BLKIF_OP_READ: + case BLKIF_OP_WRITE: + { + int j; + + for (j = 0; j < aiocbp->n; j++) + gnttab_end_access(aiocbp->gref[j]); + + break; + } + + case BLKIF_OP_WRITE_BARRIER: + case BLKIF_OP_FLUSH_DISKCACHE: + break; + + default: + printk("unrecognized block operation %d response\n", rsp->operation); + } + + dev->ring.rsp_cons = ++cons; + /* Nota: callback frees aiocbp itself */ + if (aiocbp && aiocbp->aio_cb) + aiocbp->aio_cb(aiocbp, status ? -EIO : 0); + if (dev->ring.rsp_cons != cons) + /* We reentered, we must not continue here */ + break; + } + + RING_FINAL_CHECK_FOR_RESPONSES(&dev->ring, more); + if (more) goto moretodo; + + return nr_consumed; +} + #ifdef HAVE_LIBC int blkfront_open(struct blkfront_dev *dev) { diff -r c0f77a657547 -r 2b3d3aaf8be4 extras/mini-os/include/blkfront.h --- a/extras/mini-os/include/blkfront.h Mon Apr 14 14:04:58 2008 -0600 +++ b/extras/mini-os/include/blkfront.h Tue Apr 15 11:09:46 2008 -0600 @@ -15,13 +15,23 @@ struct blkfront_aiocb void (*aio_cb)(struct blkfront_aiocb *aiocb, int ret); }; -struct blkfront_dev *init_blkfront(char *nodename, uint64_t *sectors, unsigned *sector_size, int *mode, int *info); +struct blkfront_info +{ + uint64_t sectors; + unsigned sector_size; + int mode; + int info; + int barrier; + int flush; +}; +struct blkfront_dev *init_blkfront(char *nodename, struct blkfront_info *info); #ifdef HAVE_LIBC int blkfront_open(struct blkfront_dev *dev); #endif void blkfront_aio(struct blkfront_aiocb *aiocbp, int write); void blkfront_aio_read(struct blkfront_aiocb *aiocbp); void blkfront_aio_write(struct blkfront_aiocb *aiocbp); +void blkfront_aio_push_operation(struct blkfront_aiocb *aiocbp, uint8_t op); int blkfront_aio_poll(struct blkfront_dev *dev); void blkfront_sync(struct blkfront_dev *dev); void shutdown_blkfront(struct blkfront_dev *dev); diff -r c0f77a657547 -r 2b3d3aaf8be4 extras/mini-os/kernel.c --- a/extras/mini-os/kernel.c Mon Apr 14 14:04:58 2008 -0600 +++ b/extras/mini-os/kernel.c Tue Apr 15 11:09:46 2008 -0600 @@ -91,9 +91,7 @@ static void netfront_thread(void *p) } static struct blkfront_dev *blk_dev; -static uint64_t blk_sectors; -static unsigned blk_sector_size; -static int blk_mode; +static struct blkfront_info blk_info; static uint64_t blk_size_read; static uint64_t blk_size_write; @@ -111,9 +109,9 @@ static struct blk_req *blk_alloc_req(uin { struct blk_req *req = xmalloc(struct blk_req); req->aiocb.aio_dev = blk_dev; - req->aiocb.aio_buf = _xmalloc(blk_sector_size, blk_sector_size); - req->aiocb.aio_nbytes = blk_sector_size; - req->aiocb.aio_offset = sector * blk_sector_size; + req->aiocb.aio_buf = _xmalloc(blk_info.sector_size, blk_info.sector_size); + req->aiocb.aio_nbytes = blk_info.sector_size; + req->aiocb.aio_offset = sector * blk_info.sector_size; req->aiocb.data = req; req->next = NULL; return req; @@ -125,7 +123,7 @@ static void blk_read_completed(struct bl if (ret) printk("got error code %d when reading at offset %ld\n", ret, aiocb->aio_offset); else - blk_size_read += blk_sector_size; + blk_size_read += blk_info.sector_size; free(aiocb->aio_buf); free(req); } @@ -154,10 +152,10 @@ static void blk_write_read_completed(str free(req); return; } - blk_size_read += blk_sector_size; + blk_size_read += blk_info.sector_size; buf = (int*) aiocb->aio_buf; rand_value = req->rand_value; - for (i = 0; i < blk_sector_size / sizeof(int); i++) { + for (i = 0; i < blk_info.sector_size / sizeof(int); i++) { if (buf[i] != rand_value) { printk("bogus data at offset %ld\n", aiocb->aio_offset + i); break; @@ -177,7 +175,7 @@ static void blk_write_completed(struct b free(req); return; } - blk_size_write += blk_sector_size; + blk_size_write += blk_info.sector_size; /* Push write check */ req->next = blk_to_read; blk_to_read = req; @@ -195,7 +193,7 @@ static void blk_write_sector(uint64_t se req->rand_value = rand_value = rand(); buf = (int*) req->aiocb.aio_buf; - for (i = 0; i < blk_sector_size / sizeof(int); i++) { + for (i = 0; i < blk_info.sector_size / sizeof(int); i++) { buf[i] = rand_value; rand_value *= RAND_MIX; } @@ -207,35 +205,34 @@ static void blkfront_thread(void *p) static void blkfront_thread(void *p) { time_t lasttime = 0; - int blk_info; - - blk_dev = init_blkfront(NULL, &blk_sectors, &blk_sector_size, &blk_mode, &blk_info); + + blk_dev = init_blkfront(NULL, &blk_info); if (!blk_dev) return; - if (blk_info & VDISK_CDROM) + if (blk_info.info & VDISK_CDROM) printk("Block device is a CDROM\n"); - if (blk_info & VDISK_REMOVABLE) + if (blk_info.info & VDISK_REMOVABLE) printk("Block device is removable\n"); - if (blk_info & VDISK_READONLY) + if (blk_info.info & VDISK_READONLY) printk("Block device is read-only\n"); #ifdef BLKTEST_WRITE - if (blk_mode == O_RDWR) { + if (blk_info.mode == O_RDWR) { blk_write_sector(0); - blk_write_sector(blk_sectors-1); + blk_write_sector(blk_info.sectors-1); } else #endif { blk_read_sector(0); - blk_read_sector(blk_sectors-1); + blk_read_sector(blk_info.sectors-1); } while (1) { - uint64_t sector = rand() % blk_sectors; + uint64_t sector = rand() % blk_info.sectors; struct timeval tv; #ifdef BLKTEST_WRITE - if (blk_mode == O_RDWR) + if (blk_info.mode == O_RDWR) blk_write_sector(sector); else #endif diff -r c0f77a657547 -r 2b3d3aaf8be4 extras/mini-os/lib/xmalloc.c --- a/extras/mini-os/lib/xmalloc.c Mon Apr 14 14:04:58 2008 -0600 +++ b/extras/mini-os/lib/xmalloc.c Tue Apr 15 11:09:46 2008 -0600 @@ -208,6 +208,13 @@ void xfree(const void *p) pad = (struct xmalloc_pad *)p - 1; hdr = (struct xmalloc_hdr *)((char *)p - pad->hdr_size); + /* Big allocs free directly. */ + if ( hdr->size >= PAGE_SIZE ) + { + free_pages(hdr, get_order(hdr->size)); + return; + } + /* We know hdr will be on same page. */ if(((long)p & PAGE_MASK) != ((long)hdr & PAGE_MASK)) { @@ -220,13 +227,6 @@ void xfree(const void *p) { printk("Should not be previously freed\n"); *(int*)0=0; - } - - /* Big allocs free directly. */ - if ( hdr->size >= PAGE_SIZE ) - { - free_pages(hdr, get_order(hdr->size)); - return; } /* Merge with other free block, or put in list. */ diff -r c0f77a657547 -r 2b3d3aaf8be4 stubdom/stubdom-dm --- a/stubdom/stubdom-dm Mon Apr 14 14:04:58 2008 -0600 +++ b/stubdom/stubdom-dm Tue Apr 15 11:09:46 2008 -0600 @@ -74,7 +74,7 @@ done creation="xm create -c stubdom-$domname target=$domid memory=32 extra=\"$extra\"" -(while true ; do sleep 60 ; done) | $creation & +(while true ; do sleep 60 ; done) | /bin/sh -c "$creation" & #xterm -geometry +0+0 -e /bin/sh -c "$creation ; echo ; echo press ENTER to shut down ; read" & consolepid=$! diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/blktap/drivers/block-qcow.c --- a/tools/blktap/drivers/block-qcow.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/blktap/drivers/block-qcow.c Tue Apr 15 11:09:46 2008 -0600 @@ -1112,7 +1112,7 @@ int qcow_create(const char *filename, ui int shift, length, adjust, flags = 0, ret = 0; QCowHeader header; QCowHeader_ext exthdr; - char backing_filename[1024], *ptr; + char backing_filename[PATH_MAX], *ptr; uint64_t tmp, size, total_length; struct stat st; diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/examples/xend-config-xenapi.sxp --- a/tools/examples/xend-config-xenapi.sxp Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/examples/xend-config-xenapi.sxp Tue Apr 15 11:09:46 2008 -0600 @@ -167,11 +167,14 @@ #(network-script network-nat) #(vif-script vif-nat) +# dom0-min-mem is the lowest permissible memory level (in MB) for dom0. +# This is a minimum both for auto-ballooning (as enabled by +# enable-dom0-ballooning below) and for xm mem-set when applied to dom0. +(dom0-min-mem 196) -# Dom0 will balloon out when needed to free memory for domU. -# dom0-min-mem is the lowest memory level (in MB) dom0 will get down to. -# If dom0-min-mem=0, dom0 will never balloon out. -(dom0-min-mem 196) +# Whether to enable auto-ballooning of dom0 to allow domUs to be created. +# If enable-dom0-ballooning = no, dom0 will never balloon out. +(enable-dom0-ballooning yes) # In SMP system, dom0 will use dom0-cpus # of CPUS # If dom0-cpus = 0, dom0 will take all cpus available diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/examples/xend-config.sxp --- a/tools/examples/xend-config.sxp Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/examples/xend-config.sxp Tue Apr 15 11:09:46 2008 -0600 @@ -165,11 +165,14 @@ #(network-script network-nat) #(vif-script vif-nat) - -# Dom0 will balloon out when needed to free memory for domU. -# dom0-min-mem is the lowest memory level (in MB) dom0 will get down to. -# If dom0-min-mem=0, dom0 will never balloon out. +# dom0-min-mem is the lowest permissible memory level (in MB) for dom0. +# This is a minimum both for auto-ballooning (as enabled by +# enable-dom0-ballooning below) and for xm mem-set when applied to dom0. (dom0-min-mem 196) + +# Whether to enable auto-ballooning of dom0 to allow domUs to be created. +# If enable-dom0-ballooning = no, dom0 will never balloon out. +(enable-dom0-ballooning yes) # In SMP system, dom0 will use dom0-cpus # of CPUS # If dom0-cpus = 0, dom0 will take all cpus available diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/Rules.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/Rules.mk Tue Apr 15 11:09:46 2008 -0600 @@ -0,0 +1,17 @@ +# Firmware is a 32-bit target +override XEN_TARGET_ARCH = x86_32 + +# User-supplied CFLAGS are not useful here. +CFLAGS := + +include $(XEN_ROOT)/tools/Rules.mk + +CFLAGS += -Werror + +# Disable PIE/SSP if GCC supports them. They can break us. +CFLAGS += $(call cc-option,$(CC),-nopie,) +CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) +CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) + +# Extra CFLAGS suitable for an embedded type of environment. +CFLAGS += -fno-builtin -msoft-float diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/etherboot/Makefile --- a/tools/firmware/etherboot/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/etherboot/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -10,21 +10,16 @@ T=etherboot-$(EB_VERSION).tar.gz T=etherboot-$(EB_VERSION).tar.gz E=etherboot-build -ROM_ZHS = $(addprefix eb-, $(addsuffix .zrom.h, $(NICS))) +ROMS = $(addprefix $E/src/bin/, $(addsuffix .zrom, $(NICS))) .PHONY: all all: eb-roms.h -eb-%.zrom.h: $E/src/Config - $(MAKE) -C $E/src bin/$*.zrom - ../hvmloader/mkhex etherboot_$* <$E/src/bin/$*.zrom >$@.new - mv -f $@.new $@ +%.zrom: $E/src/Config + $(MAKE) -C $E/src bin/$(*F).zrom -eb-rom-list.h: make-eb-rom-list $E/src/bin/Roms - ./$^ $(NICS) >$@.new && mv -f $@.new $@ - -eb-roms.h.new: eb-rom-list.h $(ROM_ZHS) - cat $^ >$@ +eb-roms.h.new: $(ROMS) + cat $^ | ../hvmloader/mkhex etherboot >$@ eb-roms.h: Config $(MAKE) $@.new diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/etherboot/eb-roms.h --- a/tools/firmware/etherboot/eb-roms.h Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/etherboot/eb-roms.h Tue Apr 15 11:09:46 2008 -0600 @@ -1,11 +1,5 @@ -/* autogenerated - do not edit */ -#define ETHERBOOT_ROM_LIST \ - ETHERBOOT_ROM(rtl8139, 0x10ec,0x8139) \ - ETHERBOOT_ROM(eepro100, 0x8086,0x1229) \ - -/*end.*/ -unsigned etherboot_rtl8139[] = { -0xeb40aa55, 0xbfe94b65, 0x68744500, 0x6f627265, +unsigned etherboot[] = { +0xeb40aa55, 0xbfe9ca65, 0x68744500, 0x6f627265, 0x0000746f, 0x00540000, 0x0034001c, 0x52494350, 0x813910ec, 0x00180000, 0x00000200, 0x00010040, 0x00008000, 0x506e5024, 0x00000201, 0x00008a00, @@ -24,7 +18,7 @@ 0x55506650, 0x468be589, 0x02468910, 0x89 0x55506650, 0x468be589, 0x02468910, 0x8912468b, 0x685d0446, 0x5066104d, 0x0f2e0e50, 0x000206b6, 0x5009e0c1, 0xe6e8146a, 0x8f2e5800, 0x2e064a06, -0x0648068f, 0xc72e6658, 0x00038406, 0x66000000, +0x0648068f, 0xc72e6658, 0x00038006, 0x66000000, 0x00020168, 0x50686600, 0xe8000178, 0xc4830010, 0x89175b12, 0x3ce85bdc, 0x0002ca01, 0x6650006a, 0xc0200f50, 0x586601a8, 0x832d7458, 0x0000247c, @@ -39,18 +33,18 @@ 0x1f07a10f, 0x8cc03166, 0x66d88ec8, 0x66 0x1f07a10f, 0x8cc03166, 0x66d88ec8, 0x6604e0c1, 0x00038005, 0x0ba36600, 0x1f586604, 0x500179e9, 0xbb061e60, 0xc38e0040, 0x131e8b26, 0x06e3c100, -0x14d1eb81, 0x2606ebc1, 0x00131e89, 0x8c06e3c1, -0x89d88ed0, 0x4c8b36e6, 0x78c98518, 0x99878d15, +0x1511eb81, 0x2606ebc1, 0x00131e89, 0x8c06e3c1, +0x89d88ed0, 0x4c8b36e6, 0x78c98518, 0xd9878d15, 0xbfc08e13, 0xc1831000, 0x8ecf291a, 0xfcfc89d0, -0x6066a4f3, 0x1f0ec38e, 0x5f4fb966, 0x89660000, +0x6066a4f3, 0x1f0ec38e, 0x5b7fb966, 0x89660000, 0xcf8966ce, 0xf3fd4166, 0x66fca467, 0x66506661, -0xd889c031, 0x04e0c166, 0x84a32666, 0xc7266603, -0x10038006, 0x6600014d, 0x87e58958, 0x5e89165e, +0xd889c031, 0x04e0c166, 0x80a32666, 0xc7266603, +0x10038406, 0x66000151, 0x87e58958, 0x5e89165e, 0x611f0714, 0xb80650cb, 0xc08e0040, 0x0013a126, -0x0506e0c1, 0xe8c11510, 0x13a32606, 0xc3580700, -0x0000e860, 0x815d0000, 0x0002b6ed, 0xfab9fd00, -0x8d000058, 0x06530db4, 0xbc8d0000, 0x0050d90d, -0xfca4f300, 0x50dab58d, 0xbd8d0000, 0x00000650, +0x0506e0c1, 0xe8c11550, 0x13a32606, 0xc3580700, +0x0000e860, 0x815d0000, 0x0002b6ed, 0x21b9fd00, +0x8d000055, 0x06530db4, 0xbc8d0000, 0x0059320d, +0xfca4f300, 0x5933b58d, 0xbd8d0000, 0x00000650, 0xffffffbd, 0xa405ebff, 0x0775db01, 0xee831e8b, 0x72db11fc, 0x40c031f2, 0x0775db01, 0xee831e8b, 0x11db11fc, 0x75db01c0, 0x831e8b07, 0xdb11fcee, @@ -106,7 +100,7 @@ 0x00000000, 0x00000000, 0x00000000, 0x00 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, 0x0002bd01, 0x00000000, 0x90909090, -0x000090ec, 0xffedffff, 0xf8835858, 0xcb017500, +0x000094ec, 0xffedffff, 0xf8835858, 0xcb017500, 0x0804c483, 0xcd027502, 0xfb18cd19, 0xfbfa9090, 0x15cdf958, 0xbbf6edfd, 0x0eb4069c, 0x0001bb66, 0x0c10cd00, 0x16cdc031, 0x4bffe430, 0xb407b973, @@ -138,1398 +132,1398 @@ 0x0bfdc1c8, 0x500342dd, 0xc88c66d7, 0x04 0x0bfdc1c8, 0x500342dd, 0xc88c66d7, 0x04244487, 0xdda17d03, 0xec837eee, 0x08010f08, 0x02a80f66, 0x435c66a0, 0x7eddb777, 0x600e6616, 0x8938128d, -0x44070c03, 0xae3be850, 0x5dfdbedb, 0x050ced81, -0x98ad8906, 0x168b0591, 0x6fffbca9, 0x7400fedf, -0x90b58d21, 0xbd8d0739, 0x39054990, 0x390472f4, -0x890d76fc, 0x76fdb9e6, 0x3248bbfc, 0xfc89cf29, -0xe3e8a4f3, 0x362d8b51, 0xb3db6c29, 0xe868bdcd, -0x3f450c4f, 0xb70f1220, 0x6db7240a, 0x5c046ff7, -0x8d502624, 0x50608085, 0x7c548ffa, 0xfb7fd38e, -0xec01fb6d, 0x936158cb, 0x66a102a9, 0xe61f6607, -0x648b9d0c, 0xa37dd424, 0xf79cdcd0, 0xbe852696, -0xca9dcb9d, 0xbff62db5, 0x57565507, 0x10247c8b, -0x61983d2b, 0x8336a810, 0x68affbbb, 0xe8550e48, -0x5b217cba, 0xd637df40, 0x42a30eed, 0xbe778904, -0x29b4b923, 0xb6dbf77b, 0x732ea3f1, 0xf8ea2015, -0xb8000881, 0x6ddd1c10, 0xd88ebfff, 0xd08ec08e, -0xe88ee08e, 0xc35d5e5f, 0x89e64035, 0x77ee4435, -0x3d05f9f3, 0x584c1d48, 0x250b50a3, 0xfbac0554, -0xbb59e17b, 0x0300e968, 0x68535f1d, 0xe4514328, -0xf770fbf7, 0x890bb1e8, 0xa5282ca5, 0x6ca52f20, -0xde977b29, 0xe4cf615c, 0x8100768d, 0xa88fbcfc, -0x74d7ba15, 0xed0c6020, 0x02341b22, 0xbb7b1919, -0x17072db7, 0x7e8bd0ff, 0xf23b8b8b, 0x8b8b191c, -0x3ca18b15, 0x28d0bb04, 0x8be2ffbc, 0x68d6da4c, -0xfd025189, 0x597ff1b8, 0x08618904, 0x890c6989, -0x14796071, 0x6dc3006f, 0x1bcd0bdb, 0x8b08431f, -0x095a374a, 0xebf4f662, 0x0c6a08bf, 0x8b10728b, -0x051c147a, 0x4389ffb8, 0xb6959c2d, 0xbea29c28, -0x840c5401, 0xce8b664b, 0xb8bb188d, 0xef181f30, -0x21a29687, 0x2e9d5d58, 0xc3c2e428, 0x2b07357b, -0x38815080, 0x0f0d2300, 0x82858907, 0x68956ffa, -0x921b11d7, 0x284f2907, 0xd4bd530c, 0x5350ee68, -0x2c1d9da9, 0x2f024389, 0x03d4bedf, 0x88101f0a, -0x0c020443, 0x0f076388, 0xc231585b, 0x90c3db8d, -0xc6535600, 0x6cd6a10c, 0xbddaddfa, 0x70bb0010, -0x29c62904, 0xb801006a, 0xe6dfc2e8, 0x2d062e66, -0x056850e4, 0x6c0986e8, 0x38de176f, 0x18c03b80, -0xc03903c6, 0xb0050f93, 0x7f5d6500, 0x0921188d, -0x055a0603, 0x5bd30aa1, 0x145db6eb, 0x047f1887, -0x13026a10, 0x6c7dd7b6, 0x1c065016, 0x4eefb850, -0xe859602d, 0x793d2dbf, 0x66c2892c, 0x010a20f6, -0xb10f0374, 0xb6c730ed, 0x8843bbc6, 0xce961203, -0x3f7cb3c8, 0xefeffc1e, 0x95f7b072, 0x2e2c3f8e, -0x250304bd, 0x282f6cf3, 0x32c8fc23, 0xb0b937b5, -0x2d0c26c0, 0x30be0526, 0xa1e805fb, 0x83063126, -0x19b901f0, 0x01b0b939, 0x0c0c152f, 0xecb0ccb9, -0x29535671, 0x19e4b817, 0x47151539, 0x196d2f57, -0x66287b7e, 0x8dca13c7, 0x0a6a1887, 0xbbeeef4a, -0x2474db57, 0x2a24bb22, 0x3eeb8156, 0x2b186f0d, -0xdcd805f0, 0x01181820, 0x35fb3975, 0x14881dfc, -0x74d28566, 0x16186617, 0x0506e0a9, 0x6e0bad62, -0x017220d2, 0xbd16f9d0, 0x20debec5, 0x24e475c0, -0x10321d12, 0x1b07deeb, 0x0e6dfd73, 0x6cba8800, -0x07b15d56, 0x22c5cdb1, 0x55404d3f, 0x636e8f9c, -0x3b2c2c83, 0x06334440, 0xc36c619e, 0x31657df7, -0x7f1e39ed, 0x1406500c, 0x3dafd986, 0xb0034673, -0x65e805e1, 0x03fdb74b, 0x02d081db, 0xf63a75fb, -0x34b22404, 0xb5deef91, 0x23e4405a, 0xb9fc0adf, -0xa5f34e05, 0xae868343, 0x14c5dffb, 0x850c7d60, -0x21a574db, 0x1b9db206, 0xdb5ae70d, 0x5f87d889, -0x0e070939, 0xb07c08fc, 0xe81c8f5d, 0x140101ed, -0xfffe98e8, 0x0bdbb9fd, 0x2f60a3ea, 0x0ab4e80f, -0x6c682096, 0xdbf36d06, 0x1364a30e, 0x10c4ff3c, -0xc2fb704e, 0x3284dcdb, 0x072a05d3, 0x74a3990a, -0x7dc27608, 0x0d64a1b6, 0x086805c7, 0x90790924, -0x003cbded, 0x15897009, 0x73db6378, 0x057c0f9b, -0x19800911, 0x83b1b210, 0x23840975, 0x8c2288a3, -0x1bedb73c, 0xa12c906c, 0xf8843159, 0xd8f9867c, -0x0f726896, 0x89fc1489, 0xdb4f0805, 0x0c4e6bff, -0x470ceb2b, 0x3914c183, 0xe7d91ff8, 0xefdb7fb9, -0xeb756663, 0x837f918b, 0x928131fa, 0x5f3d5277, -0xff86f0db, 0xbd4b772d, 0xf6318400, 0x372b941e, -0xa9bf6bf8, 0x23d6391b, 0x770c72ce, 0xd876c53c, -0x06ef12d8, 0xc30da98b, 0x3fc70729, 0xbdac3b16, -0x19d20935, 0x2fef623d, 0xff4b472d, 0x8944777c, -0x399903c3, 0xf7c2fc37, 0xb113d689, 0x0cab3b27, -0x06772e72, 0x267608a3, 0x8d6ed977, 0x4367413b, -0x77440d72, 0xd9b1cf3b, 0x260856dd, 0xd619218b, -0x30333589, 0xf762c1c2, 0x862787d8, 0xf8675a1c, -0x18a3cc8d, 0x34ace5e9, 0x64c82c14, 0x9879f65f, -0x097481c7, 0x5d760c78, 0x4bb3eb3a, 0x2b9013b8, -0xbc6fef05, 0x36b2c3a7, 0xeb9b14be, 0x6dc5811b, -0x213fffeb, 0x75455246, 0x5703662e, 0x21116204, -0xb58e044f, 0x3d09c344, 0x89d3aa3b, 0x4aeffdf1, -0x170bb72d, 0x0ae7c1fa, 0x8166c729, 0xbadd80fa, -0xcabb0b75, 0x8944c38e, 0x150369d3, 0xfc777d6c, -0xffe28125, 0x1a8c8db8, 0xd6fc8906, 0x5c3768ea, -0xf2893942, 0x772096a6, 0x465edf7f, 0x5c12ebc9, -0x02c7044a, 0x00c2816c, 0x7549667c, 0xb772c40b, -0x70e946ec, 0xcc42e4df, 0x5c3bb3af, 0xa109bdf2, -0xb90408d0, 0x660d83ee, 0xc99c69b8, 0xf0662c89, -0x33e8ed1a, 0x232404fd, 0xfbe177b5, 0x535723de, -0xd3bf7705, 0x1ce88151, 0xfb85c826, 0x2bf9897b, -0xebc1390d, 0x1676be0a, 0x915d0b73, 0xda832472, -0x5fcad7e3, 0xd2b796db, 0xc2e2c117, 0xf31ecb07, -0x140b60d7, 0x5f72a732, 0x0f63738d, 0x25742a72, -0x5b9082a1, 0x37bb870d, 0x97032fb6, 0xe9821ca3, -0xd2a6fc9e, 0x8a6b160d, 0x2e7c9d24, 0xbbb7ad61, -0x51d1753b, 0x10883a68, 0x473058e7, 0xa6ee4dde, -0xe8088cfe, 0x10b41e05, 0xbdb239e8, 0xb9db1a67, -0xbc084657, 0xb1421983, 0xe8a77e1b, 0xd9e8f291, -0x22c962fe, 0x23b82894, 0xc1781d7b, 0xdc11f0fd, -0x9a8dd029, 0x00e3810b, 0x86ffe41b, 0x0d8bb705, -0xecde8715, 0xc839ce29, 0xd8390c77, 0xa36df847, -0x12fb6477, 0x0476000a, 0x56086e58, 0xfa4c5afd, -0xe851d129, 0x2f4de497, 0x18473529, 0x1e44ef7b, -0x438b599b, 0xcdb2c829, 0x07537899, 0x6904764f, -0x74ddcfd8, 0xda34d039, 0xafb10574, 0xaf40ff08, -0x05a97b30, 0x573fe852, 0x0d8b2c08, 0x06d549a3, -0x140a602c, 0xc849db0c, 0xc0847a25, 0x5af60d75, -0x8c675045, 0x1f845b34, 0xb95c0958, 0x2e5a7ce8, -0x8b56c4a0, 0x086808c5, 0x2bcc2620, 0x99b5f1b6, -0x5359563d, 0xb7efa412, 0x21856bef, 0x5230262d, -0xbe7974ed, 0x6c1a1054, 0x892408fd, 0x89d729f7, -0xdd0e0715, 0x54fe3eb1, 0xab898389, 0xf7839f82, -0xdd36b80b, 0x2d8943de, 0x3354550f, 0xdefb8386, -0x21fd2c5c, 0x8c8a1554, 0xeac1fed5, 0xb1e37d04, -0x960313db, 0x43688b89, 0x352b0257, 0xe0db966f, -0x3e060c59, 0x5b788fd9, 0xaa9d629c, 0x370f1d3a, -0xfdd62946, 0xbb73061c, 0x6e36da92, 0x53e2f1a5, -0x06047902, 0x685dfb0b, 0x007e1db4, 0x74b5153b, -0x6d80d602, 0xea8177e7, 0x03828ba0, 0xa041585b, -0xcb3ca114, 0x85b3ebc5, 0x2822191a, 0x11048ddb, -0x7432377a, 0x47207b14, 0x8dcd87cd, 0x00be9691, -0x2b9a1915, 0xd0408934, 0x4f1b56f4, 0x290c2bc7, -0xf7fe91df, 0x28b5386c, 0xbf6687d3, 0x760d8f01, -0x5678c7b0, 0xc65915e8, 0x180475ff, 0xdd0bc601, -0x17bb22ed, 0xc31458fd, 0xf45e5502, 0xcf730403, -0xc13321ad, 0x181be101, 0x305d0e93, 0xe0062da1, -0x9fd917d8, 0x2f485721, 0xf8890603, 0x2b061712, -0x095bcfb5, 0x1045fb43, 0x02a66e31, 0xc19946c9, -0xde0d6203, 0x181c5b6a, 0x1c42d213, 0xad0cc903, -0x3d03dee0, 0x3c497611, 0xe36c584b, 0xe7338190, -0xdfd66189, 0xd2b01c76, 0x526e2d84, 0x5708b150, -0xd7c74be8, 0xa495736e, 0x17e9910c, 0x3da7312d, -0x2904d8b0, 0xbbeb4246, 0xb7c2d82e, 0x03ec0dbe, -0x0ac9104d, 0x46fe26d4, 0x03014c2c, 0x9bfce183, -0xa4c45504, 0x2910be8d, 0x5b5154cc, 0xaee27c84, -0xf59ab745, 0x066bd054, 0x875dec89, 0xe860a13f, -0x8b4c9294, 0x79a4249c, 0x6e015a9a, 0xc4f76435, -0x4260b94b, 0x6cf85e2e, 0x7408998d, 0xc8979d65, -0xe6815b12, 0x06ba0c05, 0xe85b51b8, 0x83d3c283, -0x4f75cd0f, 0x5b71363f, 0xc2ef8b19, 0x8e886b04, -0xddc1c695, 0xfec2835e, 0x17dd1f02, 0x8e108c42, -0x1bdff0b0, 0x7cf13941, 0x535250f0, 0x70125955, -0xf1fae381, 0x2a64f6ed, 0x4c0c2775, 0x75f0895b, -0x427645c7, 0x266f458e, 0xd97411dd, 0x4fbf8b6c, -0x00e8d10c, 0x6a20a86a, 0x8cf67c10, 0x02e47350, -0xe8d0dfd0, 0x5fdc91e9, 0x83542036, 0x6ae903c0, -0x90dbb3f5, 0xd1821301, 0x2cc51534, 0x9a36b75f, -0x5bc9beff, 0xc8b30e76, 0x1ac118a4, 0xf0ec16bf, -0x7b10bba9, 0x25008ba3, 0x09086841, 0x10cf08ff, -0xa98045bb, 0x2b7b9856, 0x60a1b1c1, 0x0abef339, -0x613f4ae2, 0xe20c5782, 0xebd93917, 0xa37e06db, -0x1604c109, 0xbec10142, 0xc10b5bf5, 0x8b0f850a, -0x40a1c85e, 0xa331ba2b, 0x651a36e5, 0x499cd330, -0xbf020847, 0x7d9c6c30, 0x830f026e, 0x03e5f0e7, -0x89ef4b86, 0xb964273d, 0xdce07580, 0x97257ef0, -0x0e838d0f, 0x8e2d189d, 0x36fd3a18, 0x05b88d32, -0x1ae19605, 0x76674098, 0x1e04d00b, 0x6f588289, -0xad1ef785, 0xe58309cb, 0x1dfaa4f0, 0xa57328d0, -0x68046a51, 0xb95d8855, 0xcfacfdb1, 0xf5c60555, -0x0707c658, 0x5d73a464, 0x05d3431d, 0xaf490e08, -0xa10c6c11, 0xba288883, 0x1c896c5b, 0x7b0aa62b, -0x74162210, 0x28c6c44b, 0xff510514, 0x74601805, -0x1c50adbb, 0x0d071d54, 0xc5b6cc1e, 0x283cb3ba, -0x070f2003, 0xaeb2022a, 0x8222c18b, 0x26032e13, -0x10ccdb6a, 0x7f11309b, 0x75321014, 0xe457b64f, -0x3643057f, 0x3ec6405f, 0x43757413, 0x054680ae, -0x06c6f948, 0x4e4a12f9, 0x52125005, 0x0436163b, -0x01586ad3, 0x738d3c3d, 0xfd18e196, 0x05432860, -0x68f104c7, 0x742b195a, 0xb5efff64, 0x06462554, -0x46c60201, 0x46942c08, 0xee9276d9, 0x461486ae, -0x5a0e2c0a, 0xec0f7583, 0x46ed1246, 0xe2140320, -0xeb1b1946, 0x160322ba, 0x1a281822, 0xf6131c05, -0x651e184a, 0x46e92446, 0x89560382, 0x46ac6526, -0xb7db172a, 0xe3833a47, 0x285e0c0f, 0x70b42c6a, -0x8f060868, 0x09462871, 0x8c80c768, 0xb63c77bf, -0xdf891cc1, 0x24d23468, 0x9d76d6e8, 0x375389b1, -0xd4df6a5a, 0x842c8971, 0x14ddac5c, 0x3b07f918, -0x96e0c1dc, 0x24ba3030, 0x09c6d1f0, 0xf7592dd7, -0x001ac225, 0xa705c2c0, 0xeb6b47dd, 0x6c8e62d9, -0x685fbaf0, 0xe9e804e3, 0xf91d21f6, 0x441bcc02, -0x235b1822, 0x36f415fb, 0x56567df8, 0x0b745339, -0xdddd9a9a, 0xb095be87, 0x97047401, 0xe80e68be, -0xf73df8da, 0x66241a14, 0xafcfc529, 0x4ef06e0f, -0x48cdb503, 0x81cd250b, 0x8d0af4e1, 0x02090a94, -0x9ad4f8e3, 0x4e83e0cd, 0x7f38de0b, 0x8a17a3c1, -0xbad0361e, 0x75d044a9, 0x01f38e17, 0x4c835fd0, -0x06296027, 0x80833062, 0xaeb4fc1d, 0x42845981, -0xa4d2e743, 0x91d4a0da, 0x9eb1c082, 0xfbd0c811, -0xeb291c1a, 0x70acb85a, 0xe3837d0b, 0x0b899392, -0x684bbac0, 0xd61d31b1, 0x5d7c325c, 0xebba178c, -0xe8671857, 0x23c3541b, 0x21dafc22, 0x05527716, -0xefc4e82d, 0x3634222c, 0x1c6de3c7, 0xfb30d08a, -0x7b6168d0, 0x66104f6b, 0x1102c010, 0x0af31982, -0xde180c1a, 0xdad4a9a0, 0xb1fbe083, 0xd46c36e0, -0x1204bef6, 0x800fe283, 0x106df6a9, 0x040e140a, -0x02334fbc, 0xb508947c, 0x2f46464d, 0xaf343018, -0xd8bf38ef, 0xcbeb2de8, 0xd820acd0, 0x4114abc6, -0xad036019, 0x81c55424, 0x77052a38, 0x20e277c7, -0x028b4676, 0x04428b43, 0xe898795c, 0x08076d8a, -0xdc04f57a, 0x302d6d0b, 0xd14a6b23, 0x989a0471, -0xe26f0ae0, 0x80c6b622, 0x8b0ddf83, 0x245d6317, -0x68167d5b, 0x8b0db89b, 0x0640b243, 0xbee1e927, -0x7fd76a6d, 0xaf09135b, 0x0a031072, 0x3790baeb, -0x2d1b0c35, 0xcb3c8c68, 0x49fae8b3, 0x753b6f99, -0x78cad904, 0xb05a15c4, 0x0bd9b239, 0x1fa8000a, -0x4e42888b, 0x9c09b46f, 0x638e5728, 0xbe02f8c0, -0xbbf4f8db, 0x07771aa1, 0xa085348b, 0xed147b27, -0x77761940, 0x7718651b, 0x1b741e54, 0x07760a48, -0xb81d6c7a, 0x19ff2cb8, 0x72db8c14, 0x02bae874, -0x921d6f86, 0x0dddb87a, 0xb81789ad, 0x3a397440, -0xd81ecdeb, 0xa73f0364, 0xa1247b8d, 0xf6530024, -0x75ecf25c, 0x497a33ac, 0x0b2994b2, 0x35b86306, -0xa0928e0c, 0x6a6461e2, 0x0c866303, 0x7d193153, -0x037ba054, 0xc377906d, 0x85a3208d, 0x205c6868, -0x851906bf, 0xc5ffffff, 0x09e7d350, 0xb0f631d7, -0xeeea8980, 0xedee88b0, 0xc383cb89, 0x872f7804, -0x4a2df05c, 0xd98877bc, 0xddb6f8d3, 0x89dedc3f, -0x4ff7c019, 0x8ba602e0, 0xc8832414, 0xed778a29, -0x080b7365, 0xd5794b8c, 0xbbed3e39, 0xeb65ee10, -0x8cbf5276, 0xf80fb1f8, 0x3dece6d1, 0xf725f78b, -0xc888c609, 0xeb7f9b24, 0xd426f7b0, 0xc49b306c, -0xc35f9155, 0x060b9e97, 0x534307cb, 0x4fa9538b, -0xb068c4df, 0x68ee37f1, 0xd4fb2e9a, 0xe31f4293, -0x09d80ec1, 0xfe690ae8, 0x8d686b8b, 0xf528b698, -0xa8ec3755, 0x48fc983c, 0x35c97f42, 0x3b13ec04, -0x8a5c5b8b, 0xfd920b04, 0x0dffefed, 0x8341ee00, -0xf27e05f9, 0x758d62bf, 0xf2899a37, 0x8400b9ee, -0xd8df00b6, 0x63445d0c, 0xb8efda89, 0x6245038b, -0x40e24f77, 0x99c8b4ef, 0xef30551a, 0xb858e028, -0x4c0d20c5, 0x1aef7266, 0xeebfdef6, 0x0704a5d6, -0x840eb866, 0x08210b3d, 0x08dd95bd, 0x05ef0c25, -0xb8ef663c, 0xb2c0d0d0, 0xa32c74e1, 0x35d8e830, -0x685c7bb8, 0x4be5bc9e, 0x85c243a5, 0x30559e16, -0x68f2fc22, 0xb30cce8a, 0x4288fc0b, 0x321c896c, -0xa3d7437e, 0x16d85c5a, 0xc0c85106, 0x0aee5206, -0x95b83b81, 0x39e88971, 0x81293d5a, 0x5e25c280, -0xb62694a8, 0x3fe15af8, 0x7296bc06, 0x8d57fb9b, -0x3a610756, 0x46e31e1a, 0x1452a150, 0x5ebda8d5, -0x3ebdca58, 0x17e47e58, 0x51224812, 0x9788ec58, -0xd766140a, 0x666251b6, 0x6fb86ee0, 0x01c4f67d, -0x31892eba, 0xfb0633ba, 0x9dbd8eeb, 0x0e38b852, -0x50063bb8, 0x5c72ff98, 0x68da7b63, 0x0750935b, -0x3029ec31, 0x3f04ccb4, 0xe852dc93, 0xc1a28041, -0xa016b7df, 0x7504a85c, 0x00c7182c, 0x1afe7e59, -0x40c776dc, 0x4c064948, 0x20501bf3, 0x1811061e, -0x1a5fcc8c, 0xdb166204, 0x8d1c683d, 0xee4adb54, -0x44fd301c, 0x2c0aa312, 0x0edec486, 0x3746b876, -0x6a233b7c, 0x17425d06, 0x682ce3bb, 0x66e803dc, -0x7712524d, 0x208a6454, 0x5411e2df, 0xf93bbbd8, -0xe868d42e, 0x37534013, 0x11ea6838, 0xe7c0777e, -0x7f0ec32e, 0x4a83c608, 0xfe014300, 0x3bebadf8, -0x358bf376, 0xb5148d5b, 0xcff7f114, 0x6630d6e0, -0x81687703, 0x6e8d25c1, 0x8182d620, 0xefea0bde, -0x7230cb81, 0xde1ad910, 0x1eefc0b0, 0x1270faeb, -0x3e614f8b, 0x157378ea, 0x2515f758, 0xef1b800c, -0x95a186e0, 0x95500700, 0x870beae0, 0xf02537b9, -0x6224db72, 0x5b1032b1, 0x850a0df1, 0x8d1374df, -0xf0031846, 0xa3e10d06, 0xe81f93d8, 0x2be3e8f8, -0x49488c05, 0x6ec0b642, 0x7942dc34, 0x0ceb664e, -0x60c301a8, 0xc52d2580, 0x42f0f5aa, 0xb26dc7b3, -0xdbb7840d, 0x15389082, 0x52e8db68, 0x35dd80ae, -0x2d5c0d1e, 0xd47ad495, 0xad81fed5, 0xc11e252f, -0x3ea810ef, 0xc0771140, 0xff83653f, 0x35860f3b, -0x6deeff81, 0x1ed12ff7, 0x8d3a0e7d, 0x003dfc4f, -0x644e2d20, 0x77f70d1b, 0xfcbb8d9b, 0x50d32941, -0xcc828d53, 0x9bba1045, 0x6076d4a3, 0x29a80b21, -0x1983a5d8, 0x05142bfa, 0x5e035e6c, 0xf1d7ff60, -0xbc18cad7, 0x07478d79, 0xb60aa3db, 0xb8b83815, -0x38a2cde3, 0xff618398, 0xac519fbe, 0x0001baef, -0x4f031af7, 0x081447db, 0xc51f3f49, 0xf21b5825, -0xfb1cf0c6, 0x23f5ffff, 0xecbc752d, 0xeb855153, -0xdc088291, 0x6d028101, 0x06765113, 0xdbaf8008, -0x9146cc97, 0x25ed8352, 0x49267fac, 0xdbc36f85, -0xc3660374, 0xeb8a530d, 0x6fb01af6, 0xf02185e6, -0xc3ee36c2, 0x76e8ae35, 0x23d7f1fb, 0x73987059, -0xc864aae8, 0x988bdcbf, 0x09601719, 0xc0649be8, -0xebc08887, 0xb9f42151, 0x3c173a19, 0x52a6fe96, -0xd7765e68, 0x44ef0b15, 0xe819f840, 0x2e5be811, -0xcf8c10da, 0x796aa1bf, 0x1d6d6faf, 0x080c89c7, -0x0131f8ca, 0xfadb3b00, 0xc38aa5db, 0x0c4384db, -0x08743a3c, 0x0b1eb343, 0x7e1eec2e, 0x64bff475, -0x056c9486, 0xff791f73, 0x36243f37, 0xd114c03a, -0x8331f24a, 0x57e108c7, 0x721e67e2, 0xf65653e1, -0x3a526859, 0xf6fd1fa4, 0x5a04478a, 0x34986859, -0xb229ef73, 0x41ec1a96, 0xaad24c85, 0x70589603, -0xe928092d, 0xbc42461e, 0x50c3c344, 0x0843ba75, -0x03428dfe, 0x4fe2ddc2, 0x037a8082, 0x25740d2f, -0xd59377d2, 0xe851e847, 0x180c17c2, 0x3a388031, -0x77e8f07e, 0x3980311f, 0x5280752f, 0x516568a8, -0x56ebf764, 0x05e889a3, 0x3e585e84, 0xd3eb42f0, -0xe9040500, 0x01402773, 0xfd0aaeb7, 0x756a525f, -0x33815251, 0x78783917, 0xa308ee58, 0x92f3eb10, -0x332d7f11, 0xfc053d36, 0x61a8dfb9, 0x47850343, -0xb84af0e4, 0xbbb7bb17, 0xc604eb17, 0x903d4004, -0xfff5726d, 0xa501bc1f, 0xbbe8fb69, 0x06153d65, -0xc8c268f8, 0x6e56bc02, 0x9a8eeed1, 0x0462dbdd, -0x74ed179a, 0x04e9f3e8, 0x8860c1f8, 0xaeeea093, -0x02e647e8, 0x6ac61db3, 0xf479c03d, 0xf4b7b406, -0x8515b2b4, 0xcd8c6447, 0x0b21db22, 0x0d1f99e0, -0x2e26f75b, 0xf9097e3a, 0x01b58e0f, 0x8408fe72, -0xbbda1ad9, 0x4a7f6f35, 0x6f09f685, 0xf17a1800, -0xf3d1efdd, 0x04e4a13c, 0xbe0c50ff, 0xd8ec46ff, -0x71f07519, 0x33219875, 0x375fc2c6, 0x09a1c202, -0xb8f8658d, 0xa7bf66c9, 0x04feedcd, 0x8c020d4a, -0x79fea9a2, 0x04f72774, 0x71b97c3e, 0x414599f0, -0xbb33ec3d, 0xa10b4075, 0x3d927ffd, 0x742e0df0, -0x9f7ef06b, 0x9beb621e, 0xba9290e3, 0xe5076c4f, -0x053bd548, 0x08940418, 0x5029b41f, 0x926d1943, -0x4755cc68, 0x7a58532d, 0x6bc14644, 0xe8a37731, -0x4e22a443, 0x8e105b24, 0x95e005fc, 0x09badc09, -0x30d8cdb7, 0x2ee90333, 0x73344553, 0x7666ec10, -0xda46b9e0, 0x2e09befb, 0x49ca0406, 0xe78e7ab5, -0x9429856e, 0x4df200ee, 0x5f85e9d9, 0x6b782b81, -0x396fc985, 0x63d02042, 0xe75f3ec1, 0x9644b17a, -0x75fbe991, 0xbec4ba87, 0xb80b57be, 0x7afdc4ca, -0x0e047bf1, 0xe9103e63, 0xfdfe8c2d, 0xbbdf6360, -0xb8fed002, 0xecae0356, 0xecd9d809, 0x18b7e9ef, -0xfb011442, 0x22a753ae, 0xa10d873c, 0xe25e78a6, -0x06bbdcde, 0x6a36147b, 0x8dd46801, 0x344c686e, -0x3b63ba01, 0x2826fa3f, 0x6885f9e9, 0x1323ab23, -0xc2ae3730, 0xfd9cccd4, 0xf0ea4860, 0xc86f2243, -0x425e1318, 0x372be94b, 0x2231ef24, 0x2999084d, -0x34d3880f, 0xb3cdb043, 0xfdc9ee01, 0x5d31fcd5, -0xe19868ba, 0xacc746e8, 0xef87a5ae, 0xf1f829df, -0x950c8d42, 0x16a3a162, 0xd3c5f02f, 0x7f0f05e8, -0x21ebc107, 0xd0ac61f0, 0xa322d0fa, 0xc60a7e0f, -0x17963719, 0x4f0d75e2, 0xf14ac503, 0x0ba1778e, -0x89687fe6, 0xbecdb6c2, 0x6082058e, 0x8ba6a331, -0x5bd8b50a, 0x14e77ae2, 0xbf7b86ab, 0x31fd8fb3, -0x0d105089, 0xa11c5889, 0xbe8a2021, 0x7845a803, -0xd301c767, 0x84fd3991, 0xebccc6c7, 0xfe98e9ec, -0x3be802c9, 0x07849c15, 0x3634ac17, 0x2efa85dd, -0x689dca78, 0xac4c9c2a, 0xfbb03fdd, 0x48fa81d1, -0x247c7669, 0xbe0f1869, 0xb896401d, 0x6fe01621, -0x746f4813, 0x7e307728, 0xc76f3855, 0x8d566172, -0x4e87c5b6, 0x622005c6, 0x4d6ee483, 0x8c26425b, -0x27613488, 0xfa2c047b, 0x74237850, 0x5f673a2d, -0x27e87b0f, 0xf7caeb33, 0xaa012757, 0xe8ee91ee, -0xb712fb58, 0x0bf308e8, 0xcf6893ab, 0x60fec36a, -0xcb10e206, 0x83be017e, 0x3950783c, 0x4dc589da, -0x07870f34, 0x061f0301, 0x0488af21, 0x1620d939, -0x247a043f, 0x8ac4820f, 0x0e76cb39, 0x6db9aa39, -0xf53985a0, 0x35010f17, 0x3396e51b, 0x28f4fe16, -0x2c416c12, 0x98f56a3a, 0xcbb6bc1c, 0x0bd8cea8, -0x27fe1e14, 0x03d421cc, 0x6c811ea3, 0xf50e01c1, -0xde380d8a, 0xbb3dd6dd, 0x09789113, 0x390d8b2c, -0x281f1c03, 0xf74dfba0, 0x7c76b972, 0x77142c0f, -0x8b0a72ad, 0x1b753913, 0x77f3eede, 0x346c3ba1, -0x34781376, 0xc82b092b, 0xa90c85d5, 0xc3d989c5, -0x47c05f6a, 0x8d3eebe9, 0x80ee98b0, 0xc1fd3eab, -0x5351561b, 0x10706855, 0xc42f40df, 0x3c3a1053, -0xf69febfb, 0xff8bb122, 0xfac03119, 0xb4fb191b, -0xa38bdce0, 0xd482d86f, 0xdf0471e9, 0x50ae9b61, -0xd1eba446, 0xa90ddc54, 0x2de8f508, 0x98c29d24, -0x80f47091, 0xa0794e53, 0xd080c155, 0x36f4d0d3, -0x10ce3a2b, 0x500c0707, 0x80f990b8, 0x4d2d791d, -0xd2ef4dce, 0x81baee17, 0x6838142d, 0x009f9aaf, -0xb42ab14b, 0xe86cdb64, 0x3075f94c, 0x4899187a, -0x5b08cb5f, 0x583d58c2, 0xbea4a1fa, 0xa19724d6, -0x2422f1cb, 0xdda24aa1, 0x1b92ddf1, 0xb0291cb4, -0x09cf8905, 0x1b7674d7, 0xd518a085, 0x392e2bee, -0x6dda5df1, 0x0e726fdc, 0x3986821c, 0x037ab0c2, -0x86085a5c, 0xa9249b29, 0x0ee0beb0, 0xb47a0876, -0x08b8a109, 0x34743374, 0x445d4b3f, 0x77d8428a, -0xbc329436, 0x5352c3df, 0xa1ba8d08, 0x24c62ca0, -0x445220e8, 0xdbd632c3, 0x01c350b0, 0x1d1d01b7, -0xada2663c, 0x4115a337, 0x5ea2e418, 0x8ce9d46b, -0x69bd81ba, 0x416dbaca, 0x160ff7ac, 0x770269c2, -0x6f442d0b, 0xa8efedee, 0xac2d131a, 0x72140324, -0x1cc4a605, 0x700750b4, 0x1636460d, 0x5cea203d, -0x7efe6fdd, 0xa0ba8363, 0x063a014a, 0x5aeb6f75, -0xac1398b4, 0x60640edd, 0x823a37ff, 0x95398fdb, -0x06774048, 0xf939c872, 0x7fdcc472, 0x742708e8, -0xe0c15716, 0xa4808b05, 0xfef43526, 0x413970af, -0x89a77340, 0x10458b35, 0x8d8e1067, 0x7f624661, -0xd8c25b9d, 0x1b76dcd7, 0x8637e6c1, 0x8bdba3ac, -0xf62ceda4, 0x8e8b31a9, 0xb0dbae4c, 0xff4c3611, -0xea11f801, 0xd319c129, 0x8d0d1f42, 0x845b6dd6, -0x440f991d, 0x392bb040, 0x5b09ea09, 0x085c7fab, -0x1638821a, 0xfcfb1e01, 0x25f02835, 0xb7290900, -0x3ddedf8b, 0xc1014f33, 0xcd01fb11, 0x5e4d5c11, -0xf07dd43b, 0x09f8ac0f, 0x5b5d0c1d, 0x85740171, -0x3a489e1a, 0x6d8dff38, 0x1584d7b4, 0xa34d8294, -0xdc1a154e, 0xc143eda7, 0x780de31d, 0xb91c6a79, -0x09dbfb82, 0x3db715bc, 0x88881072, 0x2e2c7c3e, -0x55068406, 0x68346a08, 0x3aa3e84f, 0xd30a6d03, -0x0e9458c7, 0x68746c5a, 0x6fc23218, 0xd6ed0c0e, -0xde290598, 0x2f50c706, 0x06b82ded, 0x2dd8112e, -0xaeb81127, 0x34d5b440, 0x3226f996, 0x088017f8, -0x688dcf69, 0x31697e34, 0x9f91d4db, 0x58c3c049, -0xea75bb83, 0xf0fe2304, 0xff57833a, 0xb9bab4b3, -0x6d85f628, 0x55692051, 0xef9350e8, 0x867bd3d9, -0x16726ca1, 0x38ab0351, 0x63a1aefb, 0xaea87f57, -0x3966dfc0, 0x383474fa, 0xa24f7607, 0x8e0c3155, -0x8e3cbebc, 0x02e14221, 0x5d6deb41, 0x026ce0f1, -0x16e9b44e, 0xc889d29c, 0x2ad58e24, 0xe8671a39, -0x25740e59, 0x6b0dc220, 0x72844005, 0x59de08c5, -0x57e34bff, 0xa850e2b8, 0xec5b7eac, 0x052ee52d, -0xcf1b7420, 0x604f3ce3, 0x4e6ff329, 0x55b0533b, -0x63e952dc, 0xc8bb516c, 0x19da29de, 0xc61ca78f, -0xa1b36918, 0x10ce154a, 0x2b5381b8, 0xfdebe928, -0xc0ddb1df, 0x3d802cfd, 0x25377f45, 0x0544af81, -0xec1c0d62, 0x2d021020, 0xe0a1ece0, 0x81146cc0, -0xf8f4cbca, 0x402d0914, 0xa553b58e, 0xd6804d4f, -0xed85ce48, 0xdd1bdb82, 0x1d8ad94f, 0x32eb1d44, -0xfc4c8ac8, 0x87e1c1a3, 0x34ce488f, 0x38a3f887, -0xdde25cc1, 0x881a99a2, 0x25992315, 0xb625e9f0, -0xc1dce20e, 0x90148da8, 0xbbf0c8f3, 0x2d840cb1, -0x84263c15, 0xb6bd2522, 0x7593dc06, 0xdc58756e, -0x9808232f, 0x222017ea, 0x9f1c85a2, 0x4ae80268, -0xb5a07304, 0x72b44ded, 0x7a8b47d5, 0x13468a0c, -0xc0da5762, 0x7c0336b0, 0xad7af50a, 0xb61a376f, -0x80186c4f, 0x047474e8, 0x0a7b7402, 0xa1bfe10c, -0xe9c82992, 0xbd9bff58, 0x1d35c01a, 0x7544869b, -0x7bc0486a, 0xe433a177, 0xeb89fb3b, 0x3ded0476, -0xb1b7868c, 0x488fcda1, 0x743d9242, 0x97cf5b6d, -0x2129945f, 0xaf509854, 0x254ab5e1, 0xa3ad269a, -0x5f6de019, 0xfed3e9c3, 0x6e01faa1, 0x036d0be9, -0x7d8484da, 0x251f10c0, 0xd5b86717, 0x28461213, -0x71b1323b, 0x783424a4, 0x4b60522a, 0x16fd3c0c, -0x3573282e, 0xb9d21b2c, 0x0d121e08, 0xda65a05b, -0xf88c77db, 0x8d05eb00, 0x29522e90, 0x26b07030, -0xdf940536, 0xd9733550, 0x07630763, 0x335a58a6, -0xf69c3a1a, 0xdfba3c1b, 0x74932505, 0x5106e60a, -0x1e2bbb88, 0x518973db, 0xd7169e0a, 0x82eefc04, -0x6b400d50, 0x5031048d, 0x0dc1998d, 0x511cd0b8, -0x845233a8, 0xd837f7e2, 0x756919e9, 0xd292d50f, -0xc37c026a, 0x2b56507b, 0x1827901d, 0x3c70e853, -0xa6bddc2e, 0x4a35c020, 0x5b5e0831, 0x3edc193b, -0x05c35e6d, 0xd98c52e8, 0x87d809e5, 0x98a3683f, -0x0e022404, 0x2e3a3deb, 0x6cae6fc5, 0x428d1c32, -0x77d766fc, 0xf6706b07, 0xeb046dff, 0xe9a8e890, -0x840bffff, 0x90420bf6, 0xeb1986ea, 0x49f8d5db, -0x64c4d81b, 0x1033ff8c, 0x35347760, 0x2fd52829, -0xa91b5e1b, 0x5553d59e, 0x6e3bd384, 0xb7f80d3d, -0x457fffdf, 0x3e74464c, 0x752ec031, 0x7d8175d1, -0x03133600, 0x31f4f11b, 0x60d639da, 0xbc75d389, -0xbd8eb5af, 0xd6533c41, 0x2cc8bba2, 0xe105c73d, -0xd6f16383, 0x1ca19bba, 0xb5b14525, 0x3d00bb41, -0xb1350001, 0x36b17049, 0xe80bfb1a, 0xa3a2bc02, -0x2dda9274, 0x7299b6e8, 0xb6340888, 0xa3238d75, -0x2707742b, 0x058c0320, 0xbe60ee06, 0xe8776013, -0x816a6bbb, 0x12d7cc06, 0x325e0bc0, 0xc2af0a8a, -0x11151811, 0x3da2d0af, 0x006b811d, 0xd37d8c53, -0x4e05a780, 0xbf0414ab, 0x7ccec46f, 0xc668cb47, -0xb823203d, 0x9df276c0, 0xe6e9dcdd, 0x19de63fe, -0xba128106, 0x2fbaf6dd, 0x093a1fba, 0x5920bf84, -0x23f859b9, 0x5c00e7e8, 0x39106a53, 0x318dc320, -0x883a99f6, 0x8b0ce82a, 0x78a3c6a5, 0x8c6af7d0, -0xbc2e3e9f, 0xa352d405, 0xe8b9a38d, 0x167a71b0, -0x5f31f58c, 0xc60ba984, 0xecea156a, 0xc10a0251, -0x17b785be, 0x95548d27, 0x80021c3d, 0x7442be99, -0x36ffe36a, 0x3907bd76, 0x514676df, 0x43924b8b, -0x5fdde056, 0x010814cb, 0x0c5651f1, 0x51044b03, -0xa5ad5647, 0x7c741ff8, 0x0303438a, 0x1ed90873, -0x15f67b65, 0x5d5503b0, 0xb6755493, 0xc19ac524, -0x2682219a, 0x7facb052, 0x555c6348, 0x0039bbd6, -0xa224a100, 0x2e7ac5dc, 0x6e9c01e8, 0xc52aafba, -0x25087c0c, 0x49dfe901, 0xb0b06051, 0x5009cb2b, -0xcc298a52, 0xe0910a3d, 0xf7d63972, 0x0c0d8b06, -0x5fdc9b5d, 0x41a4353f, 0xdb196368, 0x0ebc3cf6, -0xf14da2df, 0xd4e91375, 0x2f015a13, 0x8d0fc339, -0x89e0e128, 0xe5d86e19, 0x4a3faddc, 0xa46c4a3d, -0xee407983, 0xf8b185c2, 0x8bd975da, 0x1e491298, -0x60f30b04, 0x77fdb6d9, 0x1d5c8dc9, 0xcb0a0c21, -0x1a833050, 0x9c301568, 0xdb81a728, 0x00c4ff12, -0x60eb1572, 0x3987082f, 0xe214c103, 0x0c241a9b, -0x8b277330, 0x3efd4613, 0x8dfb46fc, 0x348d0c4b, -0x0ec08363, 0x762ef001, 0xbad94e9b, 0x76073930, -0xd57417c6, 0x992cadc5, 0x281b1e74, 0x963f16a0, -0x2c9e1f70, 0x44e4d203, 0x106b35c1, 0xde80119b, -0xe84bb56d, 0x1fe9ed5d, 0x0026badd, 0x364a8e00, -0xa8096d19, 0x3809ac0c, 0x2032b6c8, 0x39e9b809, -0x90774304, 0x0c8e5c2c, 0x1d3c6434, 0x757db4a1, -0xb8a4eb0e, 0x7d31ae01, 0x8410ab98, 0xe1c1c54b, -0xb4ae232d, 0x2f423a5a, 0xdb6d407b, 0xa7fb703c, -0xc181fd4f, 0x505b8b9d, 0x4902718b, 0xd406fc40, -0x2203ceb0, 0x04ecdb20, 0xc6c60153, 0x516f1120, -0x3df30ee8, 0xb7dced84, 0x4a31a1c3, 0xa1187466, -0x8ded08c4, 0x20ff205e, 0x73a40d72, 0x70996609, -0xc091616a, 0x4e89e3ea, 0x92db92c4, 0x688b801b, -0x86443841, 0x376b518e, 0x5853a1bc, 0x4307eb3c, -0x467d3c7e, 0x1fbdb4ac, 0xe2c13e8c, 0xe5757405, -0x596c8a8d, 0x1aeee52f, 0x7348763c, 0x82132f04, -0xdbb9bab4, 0x448663be, 0x1c440f76, 0x76400c50, -0xd0ddd5b9, 0xb3eb40bd, 0xa248058b, 0x10c18540, -0x2201941c, 0x94f545b4, 0x627ba378, 0x412ba6f7, -0x3838f983, 0x41213486, 0x98050b80, 0x5dceaf86, -0x47052601, 0x76101887, 0xae1121ee, 0x572eff17, -0xe29a8334, 0x1411ed8d, 0x5a7b3339, 0x351ab845, -0xdc9e011a, 0x1300f120, 0x039001a0, 0x120edba6, -0x6e1392d1, 0x6c10bd77, 0x2df7f886, 0x2689a731, -0xd1015905, 0x398bc839, 0x738dbff7, 0x76d03906, -0x181e4102, 0x201ef70e, 0x0c137376, 0x1f23d088, -0x6ec44b0a, 0x76953bc2, 0x0f108e0a, 0xebfc0739, -0x7609108f, 0x68153b0c, 0x87eefe11, 0x546c0dc2, -0x1c07ff02, 0xc221d0f7, 0xdd6cd139, 0x3efb8d86, -0x3bd1297f, 0x55320b38, 0x570e250b, 0xd0bbde64, -0xc0cae188, 0x42c04666, 0x7e83e3ec, 0x930105e3, -0xca0e8b28, 0x0c234b47, 0xb87cc943, 0xbc72de15, -0x46e9e381, 0x68084018, 0x1c7ef1fd, 0xb37cdc16, -0x31aec035, 0xb23e0843, 0x4954a9bd, 0x10481e77, -0x7c80049d, 0x6c01c930, 0x8f0d0d0d, 0x56dc2e60, -0x86e9b1e0, 0x7d11eaca, 0x1edf8f08, 0x6d12ad93, -0x66ee2906, 0xd84c57a3, 0x6eb1168f, 0x4f3f5de9, -0x9d889dbb, 0xe29b8028, 0x7d032950, 0x4c69ba66, -0x7c684c7e, 0x17e9c316, 0x65cc89fa, 0x12ac2927, -0x26859404, 0x24703576, 0x02281501, 0x8f8546c0, -0x00e800ce, 0x76160ca8, 0xe8bafe1b, 0x82fb3909, -0x730c0835, 0xd410014d, 0x45afed16, 0x222e73eb, -0xac7b05da, 0xc2f98ffe, 0x3109eac1, 0x19d629c9, -0xd80142cf, 0xd2f62c89, 0x3f891b1b, 0x29882fa3, -0x513989eb, 0xb8344922, 0xc8df6f27, 0xf06f06f1, -0xfde4ad72, 0x09f031fa, 0xecef5b6d, 0x5e4074c2, -0x09df3ea1, 0x58e80149, 0x295a36bf, 0x55304ec5, -0x57001553, 0x41416338, 0x332a1561, 0x8c6dbd83, -0x2594a191, 0xb2d8a592, 0x77f166c5, 0xb951e9b5, -0x1e08293d, 0x090b6496, 0xd7e83d0c, 0x2c3bc2c4, -0x5964a3b9, 0x250134f7, 0xe1550882, 0x71f82330, -0x37e9c712, 0x8eda9090, 0xd2382960, 0x0ddcda31, -0x73f02fda, 0xa0c1f625, 0x740e04b6, 0x2687b903, -0xc2c33468, 0x95315b81, 0x46fed1a6, 0x2bfc1083, -0xd93941d0, 0x9e0edb72, 0x7ea004e0, 0x0ccb54ea, -0x2ad12edd, 0xd2f71cc1, 0xd8027416, 0x25475c05, -0x02ba1cd2, 0x891d3d3d, 0x2d05efba, 0xc03df706, -0x78c80de7, 0x787817ab, 0x55b85f69, 0xe9f713ed, -0xa160dfdb, 0x1fc5c8b3, 0x290cfbc1, 0xdb5b35c3, -0x026c475a, 0x6f07d583, 0xe086c309, 0x027ad0be, -0xbbcbc129, 0xca2903e2, 0xdcdb4086, 0x16c24fd6, -0x800223db, 0xddbdb115, 0xd17711c8, 0x89430be2, -0xf67827d1, 0xeaac4149, 0xf5e8c05b, 0xbd0579d0, -0x646dab69, 0x15bf0f40, 0x05b6c268, 0x100c6cde, -0xab288aeb, 0xe3297f16, 0xb744700d, 0x841e8aa1, -0xf8d6fc30, 0x74144346, 0x9f418a1c, 0x88da8818, -0x06ff7ec8, 0x2bdf1c4b, 0x75c238df, 0x1f47460a, -0xf0bfe475, 0x7d1bd52f, 0xc3be0fdf, 0x04dfe183, -0x295ed1be, 0x721a3bd0, 0xdbf27814, 0x5b0a147f, -0x5e01eef7, 0x5b0e744c, 0x229bce5e, 0xc2f6fad2, -0x3842be06, 0x058d118a, 0xec76093c, 0x64b4382f, -0xad0eee92, 0xe005f495, 0x18b0518e, 0x31e1ea89, -0x15ff31f6, 0x884a184a, 0x7013644a, 0x021a00e5, -0xd07d34b2, 0x9d68e11b, 0x9a3b74d1, 0xffff6f77, -0x02ffa86f, 0x8942097f, 0x39802414, 0xc126752e, -0x094708e6, 0x7e0313c6, 0xf6ebf1c4, 0x7bf089c2, -0x0410c8c1, 0x8922c689, 0x0dc6bc30, 0x29a23947, -0x4407a4e8, 0xd1430a1f, 0xe9cfdee1, 0xf8bfedd6, -0x02eb1258, 0x64e460e4, 0xe1a8c09e, 0x0cd7a804, -0x097b86e0, 0x6f18c5e8, 0x0cb5e872, 0x18f89ba9, -0xe8f50168, 0x7f0bd00f, 0xfd51fbbf, 0xb097b8e8, -0xe864e6d1, 0xe6df08af, 0x08f8ec60, 0xa6eb1576, -0x834db627, 0x8b7bddfb, 0xf01d2e6e, 0x890d743a, -0x26e94b0e, 0x10bd4dd1, 0xe80d0642, 0xe29d67d5, -0xf619c3c8, 0xda3d80cf, 0x9bf9360e, 0xe82e2961, -0x23e810ab, 0xe5db6f7d, 0xc0958842, 0x6f13c064, -0x51cef7bb, 0x45eb5b7c, 0xe8187507, 0x92b34cff, -0xef2921bb, 0xae08cfe8, 0xc059e217, 0xfbce74b7, -0xfb07740d, 0x12280ab3, 0x74cb8c96, 0xf777fb70, -0xe8f33c77, 0x1bf878a2, 0x04041174, 0x789bba74, -0x75cc7dab, 0xff93badf, 0xba0b0aeb, 0x0f6baacf, -0x527c61f0, 0xbecdbe13, 0x861061d0, 0xe8db8410, -0x1361ce81, 0x1c5c1bf1, 0xe805eb58, 0xce72eb9a, -0xa306ee52, 0x1462f218, 0x1f681c27, 0x9f15f6c2, -0x1a2d708c, 0x07181a20, 0xd22ab041, 0xe05c8fb9, -0xd41fa7c1, 0x8dd0868d, 0xe20626be, 0xf8d63e0e, -0x688d08e4, 0xc1a350ed, 0xf00a818e, 0x433036ff, -0x990e80fc, 0xb900b08f, 0xddc6d7c1, 0x14c3a7c1, -0xa4a0c049, 0x4060cfbb, 0x8bedc19f, 0xdc831c93, -0xbf6c873c, 0xd577403d, 0xc4747817, 0x9d9a016f, -0x934b26bd, 0x4b4bc016, 0x04758385, 0x39f00af0, -0x0d72dfc2, 0x9e6a735c, 0x9672ea99, 0x6c68dbf7, -0x75e4c280, 0xa9656911, 0xefdfbf0a, 0xea8130c2, -0x47e28107, 0x6d2c543b, 0xe4135fff, 0x14208d0c, -0x40d70b61, 0xce7ea3af, 0x9e7f56e9, 0xe8066be3, -0x39748976, 0xf75557f8, 0x03558ff1, 0x685350fc, -0x864acfdc, 0x6e75e820, 0xe5a24553, 0xcb1a775f, -0x2e00cb44, 0x4b629b01, 0x7f061cac, 0x72badc1b, -0x0fff65e9, 0x62c6d61c, 0x540c3906, 0x8b810937, -0x3058bc21, 0xd8a71301, 0xc993b20e, 0x426467fc, -0xbb89d3f8, 0x0131fc2d, 0xc3a19148, 0x85bb267f, -0x8be375ff, 0xe0a73ab3, 0xd9ad1230, 0x2abbff09, -0x5db0febb, 0xf2f73905, 0x76f21fa4, 0x73113932, -0xb7c2df2c, 0x66b439b9, 0x48fa139a, 0x0df88ea1, -0xf5143a85, 0xbb14d338, 0x39b9b007, 0xe7893309, -0xf73bf019, 0x9a77a068, 0x81750a77, 0x868d79a5, -0x2a604b68, 0xa07ceee8, 0x168046bc, 0x18a26fd3, -0xd8b1a81d, 0xba15cf02, 0x038275b6, 0x289f78fc, -0x582b115e, 0x7d237d0e, 0x4be2e17a, 0x06a328a1, -0x2041a27b, 0x52e0bffc, 0x0fbc0e04, 0x9c0d999f, -0x0672e9d6, 0x8275035f, 0x32a13d08, 0xc2ae7e29, -0x508dc8f1, 0x6a1c02fc, 0xc6821972, 0x51d31559, -0x70269489, 0x1532b6f6, 0x4ec31024, 0x3b62dc5f, -0x168b0cea, 0xb1da29e6, 0x2302b08d, 0x3ef84add, -0x3e78230d, 0x42ec15db, 0x0afc42f1, 0x480d89b2, -0x2c0cea60, 0x9604e722, 0x2f8cd062, 0x408bc2d9, -0xd94687fc, 0x070d63a1, 0x3cc239ce, 0x1d4ca57d, -0xf1bacaa8, 0x6817b5e2, 0x528b3050, 0xe87523f8, -0xcea450ac, 0x78c12f8f, 0x8c766095, 0xa2e6a164, -0x2289f417, 0x70d4dba4, 0x10b87ab5, 0xa71ae084, -0xa8971021, 0xb99e92e8, 0xbafbd832, 0x03281a20, -0xec230453, 0x35d30293, 0xf2086d20, 0x5f8f67b0, -0xb2fb24db, 0x5fe4e84a, 0x26417e00, 0x603515f0, -0xe8780375, 0x55bb4334, 0x375a5827, 0x4b1a0edf, -0x114b68a2, 0x397ea143, 0xa10d3883, 0x66ec8f01, -0xefbe7c83, 0x2256346a, 0x75337820, 0xee740fd4, -0x1a74a17b, 0x0a4f5f08, 0xe6c75be8, 0xf4a722b6, -0x2aa722cc, 0xa186df28, 0xebe80abf, 0x6128a9e0, -0x0927dc43, 0x594f00b8, 0xdfe83658, 0x8b3be605, -0x1d773ec8, 0x708b40be, 0xdc30be83, 0x17df305f, -0x26d715b0, 0x939e1f84, 0xc821ac67, 0x8b91128e, -0x8f633c83, 0x9d15b2e9, 0x551a3a75, 0x9f37320b, -0x297891e3, 0x0806189a, 0x5b590637, 0x74036805, -0x3d125e61, 0xf1761c04, 0x5b9be951, 0x21080007, -0x0200147b, 0xffc42475, 0xaf049db0, 0x501c438d, -0x422b13e8, 0xdb6c06f8, 0x140618ca, 0x8db63116, -0x1a020084, 0x1ff39db0, 0x22a1c5d2, 0x94d3cdb0, -0x403fa5a9, 0x18407209, 0x7e0946e0, 0xc6661c2b, -0x59784503, 0xede25841, 0x8845fe28, 0x0143c603, -0x05000437, 0xa689544c, 0x664ac88b, 0xa7c5f6c5, -0xe74388ac, 0x10090618, 0x4148c3b5, 0xda1baca1, -0x0fed0170, 0x14c46b06, 0xde899a07, 0xf6aae8b3, -0x4cd42190, 0xfd12f8e5, 0xa2eb0342, 0x10fe1363, -0x51a4e16d, 0x10403e0f, 0x410b0539, 0x643ef42b, -0x02411f80, 0x324236a6, 0x2df620c0, 0xee78342d, -0xaa14c294, 0x2feb29bf, 0xec2da8d1, 0xad4194b6, -0xcd408a02, 0x02dbf6f0, 0x3c23f83c, 0xe9ec753c, -0x46a56809, 0x609c76ee, 0x0fe302b6, 0xb074d4f0, -0x68891b01, 0xe5737b31, 0xed15441c, 0x0c6d5b50, -0x8819a370, 0x8a54d6db, 0x110688bf, 0xa89ad8c6, -0x4379b377, 0xe514e883, 0x01db0c85, 0xe801a0fd, -0x58c648e7, 0x5c16dd1e, 0x225a9837, 0xe8034356, -0x30ed10cd, 0xc65219c8, 0x2f112686, 0xf79ee228, -0x84e9c44e, 0x28272445, 0xa160991f, 0xb53f11ca, -0x110fb1e8, 0x4bc37ea0, 0xb7727e8d, 0x46c3eedb, -0xeb835114, 0x0edf860c, 0x5f030247, 0x0fc07304, -0x79475d0b, 0x6e3de8f0, 0x4536ebd5, 0x8f110aaf, -0x0623c35f, 0x823a7d07, 0x008925c4, 0x1f16c70f, -0x4fe50ca3, 0xc702e804, 0x030e0369, 0x33e8017e, -0x2a06eefc, 0xc7fa163c, 0x0df9834e, 0x5015e276, -0x40b475bd, 0x66e40c4c, 0x090d5a07, 0x6e9db321, -0xc066ed09, 0xd188002b, 0xad510bf6, 0x097d800a, -0xd8640f11, 0xd827db53, 0xe4555600, 0x0340c4c3, -0xcae76af6, 0x8f5dce54, 0x103cdfc6, 0xbd8d028c, -0x785fb3b0, 0x74b52c0f, 0x05663d39, 0x26778d04, -0x821fe336, 0x6f8db656, 0xfa3ee80e, 0x00d81330, -0xbae77dda, 0x7eddca4b, 0x11088cdb, 0xc7f63b0f, -0x51021b45, 0xdfb18eff, 0x531c5f38, 0x310ce856, -0x1677de0c, 0x20c78356, 0x1b60e857, 0x27fad9ef, -0x34680411, 0x5a0fea74, 0x06f336ec, 0xda316468, -0x666a550f, 0xd6b708e0, 0x402d0792, 0xe0e979fb, -0x26c08eda, 0xdbf70595, 0x0fc4852c, 0x16d18857, -0x740cc58c, 0x0b6a1b81, 0xc0316243, 0x12212548, -0xbff1bfc4, 0x0e6a8d38, 0xc60e528a, 0x0f0a3cbb, -0x42fea087, 0xc6e28d53, 0x7b899390, 0xa755682c, -0xb0544ecd, 0xa9433734, 0xf7fe7fbb, 0x2716c13f, -0xc674821a, 0x6ac1c3f4, 0x6519617b, 0xaf8f0c84, -0x62b380cf, 0xf4582478, 0x7046e91c, 0x1e7843a8, -0x7bcd8f3a, 0x3afc6c9b, 0x8422c683, 0x04560845, -0xa5df742b, 0xd6867572, 0x1387805c, 0x6be1836b, -0x277e8501, 0x26e89706, 0x6316d839, 0x4e0f30fd, -0xf88aaf6c, 0x0ba4f7b0, 0x4c1de3e9, 0xdb05dc3d, -0xff6dc286, 0x3e13cf8f, 0x093414ea, 0x14cffdb8, -0x0c8b74ae, 0x08748d24, 0x012278f3, 0x31cf12e0, -0x73cfd129, 0x736db60e, 0x15297785, 0x2034450e, -0x0efe030e, 0x0f7cf6f4, 0xfc15fdff, 0x01dfe7eb, -0x623f3468, 0xc42ba04d, 0x186ee8fd, 0xf8982fc4, -0x057e074c, 0xf81e07b9, 0x84a5fc52, 0xe8e3d3c3, -0xc751f2f6, 0xaa071c71, 0xa437d3a5, 0x29f9f799, -0xd1125fb1, 0xa4c1bbda, 0x8b54273c, 0xd6381048, -0x77d341b1, 0xa173748f, 0xca12c134, 0xa04323c8, -0xfe248b54, 0x96b5dbaa, 0xaa4f8db1, 0x460813b8, -0x5b046ec4, 0x07fe766d, 0x6274a1f3, 0x0616fc78, -0xe0d1c307, 0x1318bc80, 0xb6225ede, 0x05550618, -0x0604f07e, 0x41e06174, 0x54c03af7, 0xb4682303, -0x43c4cb80, 0x1917eb30, 0xec40b703, 0x54e72ba3, -0xd486d91b, 0x61101980, 0xf8e6f8fc, 0x31770fa1, -0x6851df03, 0x22a664c3, 0x01831487, 0xdc663804, -0x397df6ae, 0x43120601, 0x0406146d, 0x1554ed8c, -0x57171640, 0xd5b8c0a9, 0x55241414, 0x94cd252c, -0x13dd2c8a, 0x7450182a, 0xa96c019a, 0x4f0ebe22, -0x438d68d8, 0xf876506c, 0xb801b3d6, 0x217016e0, -0xc3db0ada, 0x0b39638f, 0xf6810b86, 0x7c3045b6, -0xb4199175, 0x2ee26b27, 0xb1df7526, 0x3e546856, -0x5914b80c, 0xee526b60, 0x18ede9c3, 0x7d28b977, -0x39197a5d, 0x3c6a78c5, 0xc69a50b8, 0x6604fc36, -0xe8823ca3, 0x9318341b, 0xe22c0452, 0x5b14cdb1, -0xc7000f5e, 0x9e6315d7, 0x1c02ea69, 0xe71a2971, -0xbf1c4a24, 0x8cfc360b, 0x06427437, 0x32ff2550, -0x6834df68, 0x2078e81e, 0x2be818ee, 0x592a1f1e, -0x665ac442, 0x671fbe5b, 0xdd10e71e, 0xec473ae7, -0xec112040, 0xc7220b14, 0x0722d9ef, 0x713a0224, -0x1354cf04, 0xbfa805a0, 0xcdbddb88, 0x4413abc2, -0x61932c35, 0xc5e8ff23, 0x23113b68, 0x22e9d99d, -0x3de0f01a, 0xcd04e38e, 0xc7b4ce0a, 0x502bfa6e, -0xd163e9ac, 0x19500176, 0xddb0b40d, 0x987ee013, -0xfb2d9136, 0xee12c76a, 0xc7561544, 0x2ec5eb37, -0xfa72e105, 0x0088e245, 0xb5b6dec9, 0x40b43de2, -0x0ca3affa, 0x9764aed9, 0x5002efaa, 0xf100f4e0, -0x6c14ef73, 0x5bc1ace8, 0x7b01ecfe, 0xba0750ee, -0xfe5de8cc, 0x0e1b7d68, 0xcc45843c, 0x0d028b5b, -0x71164848, 0x95dbdecc, 0xc1d4b8c2, 0x3d791302, -0xe118c30e, 0xf1bdd59d, 0x08f6688d, 0x5aa34714, -0x1ae9154a, 0x1c19e724, 0x6db10744, 0x204e0512, -0xb2f0602c, 0x84c076c7, 0x200da8e9, 0x206aa0c1, -0x984d9e10, 0x869a0263, 0x73ede4cd, 0xce04ed87, -0xc60fd40d, 0x03b1b520, 0xfda7c09d, 0xeb3a4d79, -0xc07fed04, 0x065d0fe9, 0x578da475, 0xc301492c, -0x0873752e, 0x6aff101a, 0x2f03426c, 0x105c8dd9, -0xf29ae732, 0x60c76ecc, 0x98fd61db, 0x16dc87a0, -0x1b52c261, 0xd009d82f, 0x010e8bb3, 0x8af67360, -0x2e1cef38, 0x13116c0d, 0x1f073622, 0x96a6ba29, -0x01780d72, 0x38124c59, 0xbb16e284, 0xdaf07549, -0x58c6bdeb, 0x7d05820a, 0xb05742b8, 0x1e10691d, -0x0249d039, 0xc6c0f040, 0xd5192458, 0xef790206, -0x12205e16, 0x2e472560, 0x69a1e789, 0x36f1b669, -0xaa3da3a6, 0x528ca541, 0xfe42768e, 0xa6e74805, -0x704d72d8, 0x85b19c0f, 0x7c0ac919, 0xb9c14188, -0x9ae9885b, 0x0ec1bef1, 0x59950bc7, 0x8b832115, -0xb4771aea, 0x4f72537e, 0x416dc50d, 0xce7d8a06, -0x2038fece, 0x098461dc, 0x6c057363, 0x86d26e08, -0xe0e8f197, 0x21c00d1a, 0x12107e42, 0xbf1e17c6, -0x7878b64d, 0xfc18306c, 0x87c49d38, 0x063c36e8, -0x7fd7e92d, 0xb1a58055, 0x5010da17, 0x26e857c5, -0x9a1819ee, 0x14afd885, 0xb4e997ab, 0x202520ae, -0xbd5285c2, 0x1a25522e, 0x809a9c1f, 0x531df08b, -0x28cc7569, 0x1ffd84fe, 0x63e9018b, 0x6a1c6efd, -0x35f65e80, 0x10a18a34, 0x0c040fb9, 0xd2c1c245, -0x428258a3, 0xad74d3ed, 0xd05ba841, 0xeefbae5a, -0xa3d84f63, 0xd703e535, 0x7e1adb31, 0xaf747df3, -0xcc22a31a, 0x257d2097, 0x8291a12f, 0x6c21209f, -0xfbf4fc8b, 0x8c24bce3, 0x8024b42f, 0xa4249c06, -0xdfffff83, 0x981583c6, 0x1e1e2c8d, 0xd8841a9f, -0x24d14f06, 0x44740b84, 0x7d3e0abc, 0x1801db04, -0xd02ce380, 0xd2711a04, 0x9ebe945f, 0x0d020886, -0xdb90a148, 0x44afc83d, 0x011f28a1, 0x520a9b4a, -0x816c7d17, 0x511868a5, 0x0c553089, 0xec3e4153, -0xc140ef61, 0x0131ec09, 0xc9f525c4, 0x47e83988, -0x8eb7cb1f, 0xf9b16b94, 0xbc9da004, 0x2fc5a874, -0xea0e8edb, 0x1b88b6f4, 0x0b73ee39, 0x3edd93bd, -0x0a467786, 0x89b8f572, 0x2854a82d, 0x8e05afc5, -0x20524c75, 0x2e186a15, 0xbd5744c2, 0x6c34e840, -0xb8c868b8, 0x2c6c50be, 0x2e0452f4, 0x5c1ebb64, -0x0141b67e, 0xbab60dbf, 0xf130047b, 0xd178225e, -0x44de1bdd, 0x687700dd, 0x423a49a8, 0x15fffffe, -0xd4c362c6, 0xa180d988, 0x27badf7e, 0x6a30a090, -0x804bac84, 0x75d8313d, 0x56c33042, 0x541a7f02, -0xe1b61135, 0x0330e5ff, 0x568a2b75, 0x03fa8001, -0x8d131776, 0x8b9b8346, 0xba68c4fd, 0xee1e37e8, -0xb3c2851b, 0xff0be027, 0x22e90230, 0xaf5c12c1, -0x576a580b, 0x156e837b, 0xcaab9b49, 0x75d284f6, -0xfb351a7f, 0x55bb3608, 0x08c050ac, 0x0801841d, -0x196465df, 0xb3810e2b, 0xfd308001, 0xa02361db, -0x961a9789, 0xff6a9275, 0xdfd805c6, 0x7318ee85, -0x006a1246, 0xfdd0e88e, 0xaa1c05e6, 0x560019b3, -0xc1f0ccdb, 0x8ee9b656, 0x01c18202, 0xdfb1eadf, -0x08954e74, 0xeb948f01, 0x5256ed89, 0xad1f6fe8, -0xa1791d0e, 0xff9ca47a, 0xbd287c22, 0x86cf0ba3, -0xc735c589, 0x32d84461, 0x891a483d, 0x54d7e0cb, -0xec04e96c, 0xfbad8a6e, 0x88609d09, 0x108b0e66, -0x5eb70310, 0x1409c218, 0xfedae78c, 0x48aa5edb, -0x311a7a86, 0x99ec8ec9, 0x95bfc1da, 0x73d13830, -0x3200b817, 0xed1839e8, 0xaf1616df, 0x1144dd41, -0xf980f372, 0x08487405, 0x09b68380, 0x31d14817, -0x0bad7607, 0xc9148db5, 0xf23db92a, 0x4b4535df, -0x4cd2c047, 0x3c02416c, 0x63db763c, 0xb002ebb5, -0x5051a13c, 0x5003c08d, 0x54309ad4, 0xd51c8091, -0x16e81964, 0x10bf3cd4, 0x510dd503, 0xa8cf4388, -0xafa3e916, 0xfe1d1f83, 0xc9fef7c8, 0xabd3fd80, -0x7e803e05, 0xea86a301, 0x9d981e00, 0x008680f0, -0x9a4f6b62, 0x1b724762, 0x150625c6, 0x1346fe58, -0x9c3df6e9, 0x285347b6, 0xa39a16a3, 0x3a31493d, -0xe8476915, 0xaf4b1c27, 0x3b1f24b6, 0x8323db93, -0xfb3e4e1e, 0x5ae904eb, 0x93143bfc, 0xa4b8e400, -0xead1a16e, 0xce6f803b, 0x060af009, 0xf80f2479, -0x31fbd731, 0x46e0dc37, 0x8d7d2771, 0x0180027e, -0x55c139f8, 0x76c7aa3f, 0x758e5d83, 0x042c241d, -0x25781f80, 0xbab83034, 0xef6e7408, 0x4b731c77, -0x7b472843, 0x6f2d40ca, 0x7552385f, 0xb6641b44, -0x877c5147, 0x175d3b03, 0x5e7cb7c0, 0xfae9a572, -0x44c0b61e, 0x0f7520dd, 0x570dec09, 0xe871e827, -0xbbe90d4f, 0xd3e9340f, 0x3dfffffc, 0xc425e80b, -0x1af9dd36, 0x8842bd15, 0xbe01e998, 0xf8838952, -0x6181e99c, 0x8db76f64, 0xa2d1f041, 0x2f5c1e21, -0xadc518c0, 0x74c9ed20, 0x75631326, 0x85813316, -0x0ed03115, 0x2a5ff899, 0xf8b41176, 0x1ba81d3c, -0x2c3baf1b, 0x04290674, 0x036ff77c, 0x75022a7f, -0x1a38a1f4, 0x75044339, 0x1456c3ea, 0x0fab816e, -0xb000f269, 0xc3edc549, 0x3e47f7ec, 0x2e1a73f1, -0x81a0b96d, 0xb49fc558, 0xe3260756, 0x1a599819, -0x7d7ff511, 0x9d16ba82, 0xbfac1422, 0xa0c3636e, -0xc03104de, 0x1a7a06b9, 0x85db6874, 0x4053783c, -0xaa7076d2, 0x48570990, 0xd9a2fa3b, 0xf0a3e44b, -0xc108afbe, 0x945bddc4, 0xba7f6b48, 0x107e21ff, -0x55a83a3d, 0xba6630fb, 0x00c58ef7, 0xa5805829, -0x5306c0bc, 0x118ab587, 0xa1573fda, 0x85e2acb6, -0xf9b14800, 0xf01ddfe8, 0x13fd2ac4, 0xc1011a87, -0xf8f602ef, 0xea848f44, 0xba0f49ec, 0x43aa8570, -0x6e72685a, 0x2b6c388c, 0x44671396, 0x4e275718, -0x244a66b8, 0x09210547, 0x0656558f, 0x27194be8, -0xd385df0f, 0xe91a996e, 0xa314f2eb, 0xcf82f57e, -0x047316ba, 0x52f5d7f3, 0x056c4359, 0x5660d02b, -0xbba0c5ed, 0x57b1386e, 0x81d7c25c, 0x680078ec, -0xe06dba9c, 0x1608d403, 0x0492a8ac, 0xe16e20a2, -0xa1fa1f7c, 0x1e210aa4, 0x47803408, 0x22a2d8cf, -0x3723a616, 0x2d7eedca, 0x24a21ab6, 0x4740b90c, -0xeb95dba7, 0xc279ef82, 0x3d04013c, 0xf8184d0c, -0x96e8063e, 0x51d02ab6, 0xd1ed91f3, 0x6e010c96, -0x7818ff10, 0x1554c107, 0x18050385, 0x03958378, -0x0fa3f7d3, 0x0261b669, 0x2d2f2295, 0x0d0c9ae6, -0x73ce8d06, 0x3232182b, 0x5416c1f2, 0x3887e068, -0x4dfbf201, 0x800f1037, 0x680d6a52, 0xe917931c, -0xcd006017, 0xff8dc632, 0xf4e010dc, 0xe814bec7, -0x713df15c, 0xed9b70e9, 0x89ba2e1c, 0x284b5ff7, -0x31cba13b, 0x8f50fe9c, 0x7d581f9a, 0x242cfbfb, -0x436afb68, 0xe8ffb66a, 0xcafaf2dc, 0x7ea26bbd, -0x246a28ff, 0x6a561ce8, 0xc91bd175, 0xb58ee8c7, -0x6c4838f2, 0x687f04f8, 0x5728eb00, 0x0c4ece0c, -0xc4ddee51, 0x09cf587b, 0x1adc8ca1, 0xd8225ee8, -0x892fde0d, 0x2dc729df, 0xd615d47f, 0x638455ab, -0x5a7f0424, 0x85ee8484, 0x13570c03, 0x6384e32b, -0xfa2b1cf1, 0x71611d16, 0x420760d6, 0x0416e31d, -0x9192643a, 0xcc3d162e, 0x64109bf0, 0x43b543e4, -0x66c27316, 0x319e99a4, 0x409a4cdb, 0xebff8b38, -0x13fb8309, 0xf9858f0f, 0x0c581455, 0x02c7e118, -0xf69f5f18, 0x010ec612, 0x0750f5f0, 0x4a11ed49, -0x43c2767c, 0x05e5b108, 0x2426a875, 0xde3f65b6, -0xf939f685, 0x4ae4bd81, 0x7548423c, 0x6c348143, -0x025d0f82, 0x38ec3d8c, 0x16b70513, 0x970a6d45, -0x20641d8e, 0x4ced9df3, 0x9a941d1a, 0xbb08ece7, -0x5d1ab323, 0x3b703102, 0x5d008316, 0xffe53374, -0x27536fb3, 0x838d993e, 0x00831f1b, 0xb6050807, -0x2e7768df, 0x470412d3, 0xd78ed23c, 0xc36cbfad, -0xcf483944, 0x42c8daa1, 0x50ba8110, 0x77024c03, -0xc64784fb, 0x155abd51, 0xa068495a, 0xbc0dc22f, -0x41575a92, 0xad86a7a3, 0x03841af0, 0xbe681535, -0x03418df0, 0x02756dd2, 0x0267682e, 0x6899fa78, -0x7342c5bc, 0x0d3411ae, 0x0e6aa3eb, 0x8158f796, -0xa91f30c1, 0x78048368, 0xff3bf840, 0x28e82835, -0x6ce89ef0, 0xf24c21ee, 0xebb49448, 0x307b6a8a, -0xd0533642, 0x1482e8d9, 0x303d82d7, 0x0068453e, -0xc9146b77, 0xc1c8c23b, 0xfffe3cbc, 0xbddc68de, -0xfd848d67, 0x00001184, 0xe81e3fa7, 0xd81e48e4, -0xc7a4ef83, 0xedaa0fed, 0xe9a2be88, 0xb21f69e2, -0xf809a804, 0x39ba09bb, 0xf738e38e, 0x01029be2, -0xc211eeb7, 0x20e7e944, 0xc0310090, 0x182144d1, -0x3867f292, 0x3aa9044b, 0xd1d2ccca, 0x548c04f1, -0xf6fb040f, 0x1d102d02, 0x132703a3, 0x7f16aaa9, -0xd3518be1, 0x5c418bf2, 0x2ce50e77, 0x771806e8, -0xc1ad8665, 0x451d51de, 0x8b150c7f, 0x80835457, -0x0c8dfc5b, 0xd5891c76, 0xf78dd889, 0x51a96df5, -0x07df57db, 0x1119cf32, 0xba69ba97, 0x446c277c, -0x9f396868, 0xfdd86478, 0x7877c442, 0x7277df03, -0x4213548b, 0x5008b758, 0x68e28a21, 0x316b5e72, -0x1977b788, 0xa35876d8, 0x9788d44d, 0x6110ae80, -0x4703e41c, 0x6ac1536c, 0xfe10786b, 0x2ce2d913, -0xc77bdb15, 0x22ff5378, 0x04ac3860, 0x44f43c14, -0x33906c38, 0x608207fc, 0xc3299b90, 0x4ae9d619, -0x00db6f60, 0x04e1a37c, 0x77034651, 0x20c0336c, -0x4e481197, 0x46528879, 0x79f858fc, 0x7b5650ad, -0x0fe0f281, 0x3109e0c5, 0x89da486c, 0x751721c7, -0xed31879b, 0xbd3bd62e, 0x7860d168, 0xe200aa8d, -0xeb0e2034, 0xe86d16c6, 0x1f75d829, 0xecd65c07, -0x07b7a0bb, 0xd875c289, 0xf7de75eb, 0x20a11889, -0x3f505420, 0x18954bee, 0x0341ed50, 0x104c40ff, -0x6e2b187c, 0x30c12a36, 0x1c42928b, 0x0038005f, -0x8948dcde, 0x82277842, 0x4257001b, 0x41db6774, -0x688b6774, 0x68b57c3e, 0x7360b19b, 0xa22ee4c0, -0x0aa77838, 0x3642856d, 0x84358fe0, 0x40dc2076, -0x3f45038b, 0x86eebb71, 0x4cf3a753, 0x4819db31, -0x6f394c31, 0xd3c7ff86, 0x06720fb9, 0xc1396f77, -0x441a6b77, 0xabb87451, 0xa7403609, 0xd17ee281, -0xaafa5ac7, 0x4428d06e, 0x18131ca9, 0xc41d6c70, -0xb32c2655, 0xec3ecf78, 0x66602558, 0xc3f6ae9c, -0xb59d4b74, 0xfebddf6b, 0x2b514674, 0x86502826, -0x9dc2a74c, 0x5a582bdd, 0x2c8f0c53, 0xee1bec78, -0x8b5c46fe, 0xc8296056, 0xda194876, 0xc8014c56, -0xd7a5da11, 0xe93e0f04, 0x36b3ff6e, 0x47588250, -0x525470fc, 0x40ba4a50, 0x6efdd0c7, 0x280fc7bd, -0xcd880f0c, 0xb717c3a6, 0x849ff1e0, 0xb18d71dd, -0x203dfbec, 0xba50415e, 0x3a3db8d4, 0x28712360, -0x4124b3fe, 0x3e4d8f84, 0x686e831c, 0x0dda53b3, -0xe20e1da0, 0xbd392ba3, 0x0a025120, 0xbb36c1b1, -0xd5781639, 0x02964ca0, 0xda8aa7e8, 0xfca5287b, -0xdd6e5a83, 0x9b6a9d05, 0xd374a3e9, 0x9e9ace01, -0x11625fa7, 0x0afa53df, 0x0a3df007, 0x29f137db, -0xdad719c6, 0x4655cf01, 0xd29c1702, 0xbddc8b50, -0x2fc217be, 0x41a279c9, 0x6c93100a, 0x2a41614e, -0xfd4bdce0, 0x4041b458, 0x2c5b284b, 0x44f59ac4, -0x961bd8f7, 0x300040c5, 0x55165763, 0xd76274bf, -0x31de98b0, 0x7c887ff8, 0xdcaf8946, 0x855d202c, -0x7bb1bec0, 0x94c60222, 0x50047a83, 0x0fb1c03d, -0x25502823, 0x309cdd02, 0x46ddc8ee, 0x3c2d02ae, -0x1b84bd2b, 0x76e80206, 0x072d3cdb, 0x3a800d89, -0xa4c5ac3e, 0x7b8de78b, 0x41387c74, 0x0f200aec, -0x3f6b0740, 0x5202c3b8, 0x89980954, 0x9b18502d, -0x49a97c55, 0x36bab62d, 0x296bc043, 0x5c7c20a3, -0xfc5330c0, 0x3a1da3be, 0x2715d772, 0xfbb7e203, -0x05b83589, 0xc232b4a3, 0xed83adfc, 0x57be26f8, -0x57206142, 0x4efc52c3, 0x41e8e11a, 0x481834dc, -0x5484ab20, 0x19ad8ff6, 0x12c5987e, 0x00000bc7, -0xf43c2141, 0x844a1c60, 0x9061e423, 0x7d0e91ea, -0x8e061a42, 0xe7272470, 0xe54802db, 0x1d8376fe, -0x71e952a4, 0xeb66e3db, 0xe82cd197, 0x8df909f9, -0x108631b8, 0x842b66d0, 0x0ad871e3, 0xdb241e5a, -0xdd1074dc, 0x7a80890d, 0xbefe4e1b, 0xaef17df7, -0x72071111, 0x41d1e915, 0x87dfbb7c, 0x2b7838dd, -0xfb813b43, 0x118779fe, 0x66c3f634, 0x07eeb7f4, -0x2ba4df75, 0x57530eab, 0x5223d9e8, 0x8986bb18, -0xb910cd8a, 0xe055ec24, 0x8d34f05f, 0xfdf8fd46, -0xaddcb877, 0x1d56fa23, 0x10edc124, 0xba040899, -0xec110a8d, 0x8d2b087b, 0x7954da0b, 0x18ba2d44, -0xa805c1b7, 0xfa68bf15, 0xb678a030, 0x042c0c13, -0x230a2706, 0x177384ed, 0x345c02a0, 0x051acf01, -0xe9722468, 0x7f62cf04, 0x4274d2c4, 0x35731440, -0xdf64ece0, 0x08e9c16e, 0x73280beb, 0xee753f21, -0x8758235d, 0x3943dbed, 0x1ee175d5, 0x02b06105, -0x21df4998, 0x1e2f014b, 0x5a303f4d, 0xe2980bba, -0x2d428819, 0x066602c3, 0x7ba91d0a, 0x04428ddc, -0x45060727, 0xf6dc306a, 0xc7c5d91a, 0xc9693023, -0xee93c40a, 0x42b21758, 0x146ae814, 0x61d5a71f, -0x643c9a01, 0xfb52be05, 0x24d6f04d, 0xeb0c2418, -0x24fe8608, 0x56552e7f, 0xe089ff29, 0x45287da4, -0x74fce283, 0xe1cda8e1, 0x7401ee4e, 0x268622dd, -0xb0383579, 0x1050f0d0, 0x174fd27e, 0xd4873d42, -0x612ddd02, 0x1a045019, 0x43424d55, 0x8a47236c, -0xdd6a172c, 0x688446f5, 0xc418c30b, 0xdb5b547c, -0xf758d488, 0x3bdbbc1a, 0xedafd76b, 0xd0b5e9fd, -0x58456110, 0xb708ad0a, 0x1a700319, 0x1adf2ddd, -0x0f0d837b, 0xf6e8def8, 0x5d544721, 0x74a68a7b, -0x6dc6f842, 0xbc571903, 0xfb008af1, 0xbee9474f, -0x468295b4, 0x18e44241, 0x52a3601a, 0x805b56db, -0x7457c272, 0x410adfdf, 0x4c0e0c39, 0xc3ca44f7, -0xe7ab7516, 0x44aece04, 0xb7b6d0d9, 0xce443970, -0xd277e08d, 0xb1ae3c1c, 0xc8da76f0, 0x0816ae04, -0xc8b62fd8, 0x3e39886d, 0xfd093b84, 0x6dec3e14, -0x2fb5630d, 0xeb042f54, 0x4b090ed2, 0x3c15a7e1, -0x01214705, 0x704901f0, 0x5e094053, 0xae06f58c, -0xf9a6145e, 0x4329114a, 0x1b55de95, 0xca6f140e, -0xd0398605, 0x4d9b1874, 0x26368b98, 0x8a4350ac, -0x05ad901c, 0x20dd0d18, 0x6e08441a, 0x761f052d, -0xd88273b8, 0xf821c264, 0x87178b1a, 0x6a8d3627, -0xf9ac0849, 0x5350b05a, 0x824629b8, 0xc2e8a564, -0xf6f48bee, 0x891af4c2, 0x6730a6a3, 0x1dd1fca6, -0x034421dc, 0x3124a8d0, 0x013f0643, 0x075b1d7f, -0xdaebf023, 0x04538d76, 0xb01905cb, 0x1a334e52, -0x6717c15c, 0x2d560baf, 0x4614d0ac, 0x18b002f5, -0x2de86100, 0x34d6f907, 0x9da40d97, 0xc756745c, -0x0326ad60, 0x321419e4, 0x0c709361, 0xb72c0c17, -0x68784aee, 0xf62d5634, 0x45e35463, 0x9913df6c, -0xa341bee1, 0x980d9768, 0xc35ed021, 0xce40d082, -0x0642f012, 0x62ebc0cc, 0x503b970a, 0x3145fcd6, -0x1018f281, 0xeae60875, 0x2d7e0182, 0x05299c09, -0x340326d7, 0x7e3c190c, 0x7f8026d2, 0x858b84e0, -0x346a5508, 0xc064c77d, 0x083c0a29, 0x2fbe3f3c, -0xdaad011d, 0x235b7623, 0xd80e88fa, 0x57137452, -0xdb2e50e9, 0xdb70091e, 0xef3c0743, 0xec0f1d31, -0x247bfb01, 0x08693e74, 0x4e2a5540, 0x042bafe8, -0xc6d2b6cf, 0x775f0828, 0x2cc408a9, 0x338a2709, -0xb1001ea6, 0xac8bee3d, 0x53d78e02, 0x84c39dbb, -0xf89682c7, 0x731a1e6a, 0xc7596d67, 0x6c54e885, -0x5fc38337, 0x57021d10, 0xe272e325, 0xdc85526a, -0x689abfab, 0x29ff8c0e, 0x1eda1434, 0xff921481, -0x4fa35e8d, 0xa0155c3f, 0x1574915b, 0xc1171a43, -0xc2e99637, 0x46c7131f, 0xa0fae70c, 0x1113c09d, -0x73651ac7, 0x5c0bbbb0, 0x3810466c, 0x483e3874, -0x041bcf75, 0x729f1885, 0x405b5ae4, 0x16d8b3aa, -0x4663f87b, 0xdb4d2224, 0x97076178, 0x05f0147e, -0x135646ff, 0xbee100bb, 0x912172e5, 0xe0092fb0, -0x023abe8d, 0xcb8b5859, 0x21560c70, 0x070563a1, -0xea701775, 0x41eaa8d5, 0x37501734, 0x4112da62, -0x527ec76b, 0xc26a892b, 0x76d688a5, 0x18bbd40d, -0xe7922e1b, 0x18045015, 0x21636e26, 0x042689fc, -0xc9ab1c1b, 0x0b2dd54a, 0x8f20071c, 0x7d8ce262, -0xdf06d6d1, 0xce784d20, 0xc3023e03, 0x6601bcce, -0x67048c3f, 0x09eb98db, 0x060c7e06, 0xcbe40884, -0x44ae6d97, 0x5340e0ce, 0xea0e3fdf, 0xeb0a2724, -0x49735694, 0x76ffd5b8, 0x371df7ae, 0x12422e33, -0x7577160e, 0x68076988, 0x200326c1, 0x508b0623, -0x439d139a, 0x4e4b8a43, 0xe91c669d, 0xa74a4b30, -0x28137705, 0xe8510e84, 0xa84d5b04, 0xa3f35259, -0xe0dff18a, 0xee8416d4, 0x1b74c784, 0x7425fa80, -0xc006bb2f, 0xffed9914, 0x6b178829, 0x47df83c7, -0xe5752046, 0xc60339a7, 0x06d13a43, 0xa0282540, -0xb170ab1b, 0xf6a91ff6, 0x58a3583d, 0x0b432e61, -0x62d815bc, 0x85731c01, 0x41bd2308, 0x30f5e800, -0x11bcb94e, 0x19b9edcf, 0x086c0112, 0xdb6800b8, -0x010af5be, 0x20c8f477, 0xb20c783c, 0x6465cf15, -0xfa08641b, 0x2101bd40, 0x2c8cba47, 0x017763f9, -0xe88830da, 0x3c43542f, 0x3930b345, 0x45830feb, -0x0462b800, 0xb3f2280e, 0xa6dffa8f, 0x0788038a, -0xe4eb4743, 0x83dd848b, 0xda26d806, 0x18188106, -0x2e16843c, 0x0dccc0f0, 0x902c4f46, 0x6c576ebe, -0x4ee81e6f, 0x30461dd3, 0x8608fef0, 0xda6b954c, -0xe64d87a7, 0xc60a0a96, 0xb112042f, 0x1ef64602, -0x64494e85, 0x65a00fa8, 0xaff9eb35, 0xec1b8225, -0x84ebc980, 0x4149d3d8, 0x0ff1dffc, 0x3839808a, -0x4588d009, 0xe9834500, 0x76e87904, 0xe5ee0e84, -0xdef52750, 0x440850fe, 0xedf256a8, 0xab400dbf, -0xeb89bfd2, 0x4ab9990d, 0x0abb176e, 0x38f9f71e, -0xe6038a1c, 0x1605db00, 0x67f25514, 0x5ff70066, -0x1e0c3a30, 0x2e0c8904, 0x6f5536c1, 0x0502fac0, -0x02c22945, 0x6c37be75, 0xbd478d4b, 0x2a0aef0b, -0xb60b8802, 0x4aff7343, 0x77da3943, 0x7dace9f1, -0x58df5edb, 0x0a351d6b, 0x5430649b, 0x2d8b2604, -0x37e9317b, 0x459b1ee8, 0xee231406, 0x73e9301e, -0x63b03069, 0x0e3f85c1, 0x8fe995d2, 0xa980c1cb, -0xc86a2c86, 0x1a0d86ba, 0x1e76d878, 0x4ab10341, -0xedd67f16, 0x39e855e2, 0x3ac50169, 0xe2771d43, -0xd419e94d, 0x44600ab7, 0x390653ff, 0xae91d9d3, -0xde73aafd, 0x4e3f7351, 0xda79fcf9, 0x43b60e5a, -0x3dbf503b, 0x776bfbdb, 0x45af3d86, 0xcdf45cf7, -0xaabfe92d, 0x0e5c83b1, 0xb7d16303, 0x9c1314fd, -0x4e450470, 0x16acf17b, 0x1ec5a12a, 0x50d890c3, -0x1858018d, 0x52db85ba, 0xb808cfe1, 0x8a307414, -0x6d32b907, 0x84d2d2f1, 0x74342628, 0x1b5f3822, -0x0ba5e26f, 0x36c188d2, 0xe720488d, 0xd188c888, -0x776fd10a, 0x38204a0b, 0x0375ca08, 0xe817754b, -0x430d6d05, 0x7a15d202, 0x5eba27e1, 0xcb891508, -0x4201808a, 0x88244541, 0x81f62ead, 0x4f09f452, -0x89b94c1b, 0x8bb64ade, 0x74c2b7ba, 0x41034ea6, -0x66f02343, 0x9d34d577, 0xd34c543d, 0x4204eb94, -0x76eec06c, 0x24fa7505, 0x48424102, 0x43f6ce4c, -0xc93746c1, 0x1b74d63f, 0x2cdfa52c, 0x74430307, -0xf3754906, 0x5dda34c6, 0x955760b0, 0x1a2ac34a, -0x15f4161e, 0xf0993a02, 0x0efdc2d3, 0x20da51b5, -0xa8ef05eb, 0x025ed8a9, 0xd738108a, 0xa05728f5, -0xa92db300, 0xbac1b05c, 0xa01ff144, 0xf7aef2df, -0x38d849d1, 0x836d1510, 0x3b4827da, 0xab9d19f7, -0xb8ab1cf8, 0x89d6384a, 0xe9501bbe, 0x111174c8, -0xe4404a17, 0xdf868a05, 0xf4758002, 0x6ec3c829, -0x6ed03a56, 0x31a2ba06, 0x60cf7cff, 0x752169a8, -0x8e03f116, 0x2f6c3510, 0x74f18974, 0x106e161a, -0xabb58d7f, 0x5bf5ae38, 0x74bbc39d, 0xcd3843f3, -0x47356dde, 0xe9ebd5b1, 0x64f39556, 0xaf46c2e4, -0x140d4323, 0x1bf02744, 0xe3752643, 0x30a35a73, -0x8981384c, 0xbbaa79f0, 0x8130a025, 0xc301d864, -0xba82ff59, 0x74584c17, 0x169b0f3c, 0x09745a5e, -0x74117ea9, 0xa3e574b9, 0x552fa7f4, 0x8b3d58ef, -0xdb540a1d, 0xbf7ef174, 0x282b7597, 0x64c4753b, -0x001f05c7, 0x410b6200, 0x1ef21280, 0xb6c7672c, -0x2f10bb0f, 0x595a5b3f, 0x447e8956, 0x5306b178, -0xeba4f690, 0x8f0a9e06, 0x4301c21b, 0xe2362041, -0x462c9d5b, 0x203520ca, 0x61855b08, 0xa46a986c, -0x8265f685, 0x1b6d742b, 0x13020192, 0x4eecd018, -0x7b170c61, 0x69ef754e, 0xb10c371a, 0xf6c2b636, -0x02210b74, 0x2c428cc4, 0x06209ff5, 0x318e27d1, -0xd0885c8b, 0x4e4e7854, 0x60f21815, 0xf502dfb4, -0x74da89cd, 0xa8031227, 0x89fc4edb, 0x5514ebce, -0x307ed490, 0x7ade944e, 0x71951761, 0x4fe87dee, -0x008360b1, 0x7808daf9, 0xefbdbf4b, 0x58f98349, -0x8d9fb30c, 0x428aff50, 0xa39e3821, 0x0a7e6df8, -0xc2f27518, 0x1158c484, 0xb8b2f30f, 0x53803e36, -0xf27753d0, 0x654b110d, 0x10b84080, 0x48822fa2, -0x42d07989, 0xc81b8206, 0xfddf3d80, 0x8a5f88c3, -0xe03d83f7, 0x01c84c08, 0x2a92b4a3, 0xe34500fe, -0xffd2088b, 0x63b23dff, 0xb25c37c3, 0x05c74601, -0xea07b21d, 0x82c79032, 0x88f10977, 0xaa004182, -0x1aee2812, 0x12e84f54, 0x4b245bd2, 0x297c4456, -0x788ac455, 0x45fa7ca8, 0xfe5d7064, 0x7c167457, -0x3f0b608b, 0x1176c42c, 0xd8e013e8, 0x2138368a, -0x07111dc3, 0xdb042f7b, 0x1085e89e, 0xab41e8ac, -0xe56f170a, 0xe6eb7e88, 0xdbaa91e8, 0xc8eb010a, -0x105820b7, 0x016a6cce, 0x447f0108, 0x92c4bf6f, -0x556d4149, 0x0f75fb3c, 0x60126a0a, 0xb0a79e0a, -0xdd63e401, 0xc2c287f0, 0xc1661639, 0xc5c508ea, -0x15464075, 0xe89b51ac, 0x888c9c91, 0xf9b592d9, -0xd8dee889, 0x909b5822, 0x1a53681b, 0x155e8c88, -0xf860972d, 0xbeefbfa2, 0x35de1538, 0x0538b875, -0xebb007dd, 0x5d4108df, 0x0693e630, 0x6f157bb1, -0x360c753b, 0x0ba28c03, 0xa7d14921, 0x14c03100, -0x056db047, 0x2dfed8b6, 0x112daa5b, 0x7c89902c, -0x6361ec21, 0x741c5fd7, 0x6d853ee3, 0x6c3db081, -0xb06c0f4f, 0x4a6dc548, 0x6832cffa, 0x2f254843, -0x69f6fdd4, 0x7c99b648, 0xef30a36b, 0xf006b707, -0x47b70f03, 0x5706f50a, 0x68a0c608, 0x2957f850, -0x2a961774, 0x74bf7973, 0x056c2b12, 0x03446122, -0xeffedf68, 0x02512b76, 0x10348d32, 0x7f80de29, -0xf5890103, 0x34ba0911, 0x74980088, 0x4e10a91d, -0xc04c2806, 0xda1fa4d6, 0xaa386ac8, 0x7e13691b, -0xd1c51638, 0x29817d30, 0x8035b8a9, 0x97604831, -0x553a4762, 0xcec25e51, 0x07bb43ed, 0xb83407c6, -0xdeeb1f06, 0x4e8dc43e, 0xe71c73c4, 0x9b83f289, -0x6ea94b88, 0x0ee9890e, 0x308187eb, 0x003416e9, -0x4f5c4103, 0xb2e10250, 0x02ff21fc, 0x102d3ec3, -0xf8e2fcde, 0x8d0124fa, 0x3a0a8430, 0xae400344, -0x62b125b0, 0x01c8894f, 0x2908a1bc, 0x2d9b9578, -0x0b0c1995, 0x06e82f41, 0x87dc37b1, 0xa23d0843, -0x0a857336, 0x8f85895c, 0x5b1b2e59, 0x0c894dde, -0xdd391c13, 0xa1b4f876, 0x008b86f8, 0x3a2c461c, -0xc206c82e, 0x01304063, 0x71a4ec00, 0x0e5916c0, -0x58fb8cc2, 0xef9038ca, 0x4982cd77, 0x57205d78, -0x092ca142, 0xff787adb, 0x1f69fd15, 0xedb6b702, -0x260f705d, 0xdde3c8a1, 0x56ca0903, 0x054f5e2b, -0x482fa1a1, 0xd8c28558, 0x37880a07, 0x52ba424c, -0xdd5487bf, 0x3d08e21c, 0x78aa0b2a, 0x0942dae8, -0x0d140a76, 0xf142eeb6, 0x9beb3b72, 0x030a0358, -0x011ba6bd, 0x08030728, 0xbe222409, 0xbba602a2, -0x9e439157, 0x85bce01d, 0x54770bfa, 0xbbfb12b4, -0x54680809, 0xa2138037, 0xdaa7418c, 0x2c547b8d, -0x3f1ab7c0, 0x98968012, 0x50e01683, 0x976f882d, -0x22f44620, 0xd8d70466, 0x04143aab, 0xe30ae3a0, -0xa503f060, 0x76164774, 0x1180bb3e, 0x0c4f5a19, -0x045b7543, 0x0ea069a0, 0x35d70f03, 0x752bbc05, -0x4908257e, 0x8b1c0216, 0x03e13819, 0xef596f6c, -0x3c50a408, 0xf0eb1f83, 0x5add7548, 0x8c18cb6d, -0x22d587b1, 0x1f024e01, 0x59dc8859, 0xa752c5b1, -0xb0f67b25, 0x313b0e41, 0xeb653a75, 0x046324d0, -0x18223b0f, 0xeae6ca74, 0x05bb0582, 0x76247652, -0x5e33b38f, 0x26c1b2d0, 0x36303150, 0xb7ebde8a, -0xf204151e, 0x5877b533, 0xd9dd0608, 0x8d041073, -0xff19c230, 0x20b10513, 0x59fec171, 0x0f12f752, -0x41080d91, 0xbc160c86, 0xe78a8f0a, 0x885508eb, -0xfb8d5488, 0xffbe1d13, 0x7f547423, 0x08003d45, -0x0b7c4420, 0x8d2ff087, 0xf717e856, 0xe9589518, -0x047384b0, 0xde131f85, 0x9e305f8a, 0xe0ca9636, -0xbbcce9d6, 0xa7265fbb, 0x24bb7598, 0x05b9eb03, -0xc607eb02, 0x79b38301, 0x04e3f85e, 0x02018fba, -0x2e305575, 0xc9a4183c, 0x2e2f181a, 0xa024120d, -0x57c6d746, 0x48136e8b, 0x77001156, 0xcc0844eb, -0x9be08a83, 0xb87da237, 0x66260d0c, 0x75088f20, -0xa28462b1, 0xdc02b444, 0xeb6c3991, 0xd7575018, -0x154254d1, 0x43be00ec, 0x053ba9eb, 0x57b074eb, -0x1291efc5, 0xeb18a302, 0x3da00597, 0x7041b2e4, -0x4c6dbe74, 0xac5d8a00, 0x0e718966, 0x3f54d63d, -0x7854666b, 0x8912184f, 0x0c3e9490, 0x1c600636, -0xffb4980e, 0x50761174, 0x05a50fc1, 0xd6d6c79c, -0xf58ad606, 0x5f8aea2e, 0x89003b20, 0x1bf72107, -0x5ea02d24, 0xf32ca6c8, 0xf601b0f6, 0x2b7427b0, -0xa6ba811c, 0x68d71f74, 0x08786d87, 0xd0979e50, -0x752e3833, 0x1c4fbc55, 0x9c828dca, 0xd9c582af, -0xe4c7e8af, 0x0c099882, 0x47087ecd, 0x90825113, -0x4c2a0000, 0xbadf6206, 0x5e0e6ca3, 0x06539cdd, -0x4b12cde3, 0x41bb8556, 0xed515216, 0x96c0e1d0, -0xeef4f20a, 0x2778fc18, 0x53561d00, 0xfb509a9d, -0x200f56f7, 0xb28b2eb0, 0x3e048d7a, 0xd518793b, -0x7315100f, 0x8dc65128, 0x04ed9366, 0x3b504a33, -0x250068bb, 0xe3632d7a, 0xa8dababc, 0xc8d1c132, -0x621f5853, 0xd7498e50, 0x392cadf5, 0x5bbb0a1a, -0x4551e355, 0xf1158f23, 0xfb53025e, 0x2fba88b0, -0x868b5873, 0x8b5a1486, 0x422c7843, 0x968becc1, -0x1841f482, 0xffd20984, 0xae8c0894, 0xf968c01a, -0x2bd3e751, 0x3ba658b5, 0x08016a0e, 0xc522126d, -0x9e5bde08, 0x6058cbe3, 0x04f53df0, 0xde82cd5b, -0x756a00b2, 0x69906d50, 0x911e7c80, 0xa46b38d2, -0xc7197f87, 0x01fd0026, 0x90163236, 0x898b3ca0, -0x421d8123, 0xf4a06e28, 0x1fd8479c, 0x05748d29, -0x013960a3, 0x42446639, 0x19f7205a, 0x2559201a, -0x78bc8b07, 0x3b016ad7, 0x3b0b5afb, 0x516a1047, -0x98138b04, 0xda8065aa, 0x12bed6b9, 0x256a6f4b, -0x39f62ed2, 0x87e275d0, 0xeb342a0c, 0x018b3017, -0x077062de, 0x8ddec7b6, 0x1018f870, 0xaf0a2b41, -0x960f1c77, 0x73f0390e, 0x8e8e7e4e, 0x533cd66e, -0x10ab1214, 0xa178c3a7, 0x51498568, 0x4da35208, -0xf7d45d15, 0x377367f1, 0xb11207be, 0xff302c08, -0xc8aa13f3, 0x0711d961, 0xec5aa961, 0xded08908, -0x8f6aec0d, 0x707608b0, 0xab3276f4, 0x8ec1bbc8, -0xd993558d, 0x2dd230fe, 0x460a811a, 0x517c1d6e, -0x6789ee92, 0xba2b6014, 0x779e8905, 0xd3bf01b0, -0x6d150a5f, 0xe7d18940, 0xbf005d2b, 0x0e0ebb2d, -0x698d0c77, 0x61819d1c, 0xfd83fdd4, 0x7ec68973, -0x7e063219, 0x7a3e8e74, 0xce1215bb, 0x6857f365, -0x97e9d837, 0x83738bef, 0x7286a2c0, 0xf0ff396c, -0xba5501fb, 0x8a11512d, 0x3e8b7791, 0x343803cc, -0x4eed1e23, 0x551fa310, 0x74c0316e, 0x01e92d11, -0x51bb6410, 0xefb4a264, 0xbfa724d7, 0x3d3b6909, -0x960075db, 0x11ed0059, 0xfb59910f, 0x0ef02a7c, -0x8ba08476, 0xf6f234cb, 0xd03e9e8d, 0xa8f53d3c, -0xc6fe5e07, 0xa362ec86, 0x470212fa, 0xc606a501, -0xc8934408, 0xa3057055, 0x80cd62da, 0xc8f2313a, -0xa1100783, 0x74a1146a, 0x1e046018, 0xac86ab12, -0x58ac0c7d, 0x0cc6afb7, 0x08002c4d, 0x2391dc04, -0xeffc1c5b, 0x660068ef, 0x2876e798, 0x017c18b0, -0x5122a8d6, 0x9c08041d, 0x5fb7505e, 0x04ec0a44, -0x57113f74, 0xa6525806, 0xd2c6a680, 0xaff1cbd0, -0x816184fb, 0xb941ecfa, 0x89027304, 0xadd497d1, -0x9342bf14, 0x415bbaef, 0x5e81de3b, 0x75e23ef4, -0x1b5056bc, 0xa764a758, 0x388a7736, 0x22c9da89, -0x1603046d, 0xeb49dd18, 0x875eacc6, 0xa9866023, -0xf10be4a4, 0x254054ac, 0x6d8fe840, 0xe1bbb7e8, -0x76a433d8, 0xe831b7e8, 0xc911bd76, 0x9afb049d, -0x8fcf66cd, 0xbed6a56f, 0x2a080965, 0xba2841d3, -0x4ec00fe8, 0x0146d329, 0xdcb836dc, 0xc0d029b0, -0x2f589865, 0xd42763a1, 0xf0741ef0, 0x883236c8, -0x9111ff16, 0x9c022ce0, 0xd85bdd10, 0x60c0c581, -0x291416c8, 0x3ac0c149, 0x86f43f14, 0xf6a1629b, -0x840f3a12, 0xf4570b0b, 0x417fdb6c, 0xd70a080e, -0xd48b6d78, 0xafa0d01d, 0x5201368f, 0xe0ab160e, -0x0f3f036e, 0x4ddef58e, 0xa1bb3552, 0xd3e852f3, -0x56be80b9, 0xf8562dc1, 0x7a406430, 0xd96c645d, -0x4072200a, 0x469c6553, 0xa0151f63, 0x3b150ede, -0xd84c4db6, 0xb003495c, 0x0d18b4eb, 0xdb103b65, -0x5b361727, 0xb6fd0a0e, 0x3678b191, 0x100e0bcb, -0x040cf8c6, 0x3fb2138a, 0xf3f2d21c, 0xdb73191b, -0x42d0711b, 0xdf0e32ab, 0x0f6c646d, 0x0e339942, -0x700802ba, 0x6e40f30a, 0x6b00d942, 0xd839acfc, -0x8912810c, 0xb6551bf3, 0x0f6db191, 0x30464b37, -0x8c600e10, 0x46c65a45, 0x304d9211, 0x936efb49, -0x050e5ad0, 0x3301f324, 0x1ecb89d6, 0x84e611bb, -0x75073319, 0x6e8a6362, 0xf093cd9d, 0x84b6feb7, -0x65bb53d6, 0x0a7b64eb, 0x3d2b5d76, 0xd236ef4d, -0x34756cbc, 0x89fd572d, 0xdb632222, 0x5d82d8c8, -0x050e23d3, 0x1ec3255d, 0x44f066a4, 0x8f000302, -0x64dfb03d, 0x44724e44, 0xf941e9fe, 0xd63d9772, -0x73573112, 0xe917c475, 0x1d65ee45, 0xad9d0c27, -0x2eee1516, 0xb09a6ec0, 0x9a234102, 0x12fdefe9, -0xf3551c10, 0xe6dcf306, 0xdec9cfa4, 0xe95a2141, -0xaa10fedd, 0xac27ccf0, 0xf147613b, 0x47a734f8, -0x2361f623, 0x94127597, 0x36957b47, 0x37d84ee9, -0x36709176, 0x5d12f4dd, 0x09cd2137, 0x5b4afabe, -0x4e6909f9, 0xa81237d8, 0x776424f2, 0xf00fcd61, -0x12ed2511, 0xb09bfcfe, 0xe992245d, 0x974b12eb, -0xf65cf65c, 0xfbbbfcd8, 0xd8ccccd9, 0x03236137, -0x34445ac8, 0x139a47a3, 0x80b44df6, 0xf8f61290, -0xdf21307d, 0xefbf5acb, 0x97317e49, 0x3af6137d, -0x12b93659, 0x90f83646, 0xfa9d1430, 0x6850ab5a, -0xebe01c85, 0xea21b61c, 0xc6b80641, 0xba87268c, -0x092dde00, 0x43e5831d, 0xc112f800, 0xfb9ce823, -0x6ada8381, 0xc96fb78b, 0xb3d89746, 0x719056e8, -0x8bd3bdeb, 0xb344de8f, 0x08e3c11c, 0xd6c20bb3, -0x35f5dc44, 0x08b8b348, 0x2d870fb1, 0xff72df54, -0xfad6ff0e, 0x094de8fc, 0x88e43044, 0xec160e0a, -0xc4b62d1b, 0x383cc35f, 0x3e434c8a, 0x3c43d603, -0x0286eb0b, 0x1090585b, 0x726d773a, 0x3a09ef92, -0xb186d5b0, 0x605c85df, 0x3d0c8b78, 0xc82c0072, -0x16789724, 0x0aef9264, 0x775c373a, 0x0177e43b, -0x85fa3c0d, 0x2189771f, 0xd5700b15, 0x5e0b5417, -0x15fb1f2d, 0x8e02ad5b, 0x1db633b0, 0x6b205ea2, -0x80480e02, 0x5a8d837e, 0x29f3a80f, 0xfad839f0, -0xf754519f, 0x811a7212, 0x32335f3b, 0x7d9bbd5f, -0xf9b04cd8, 0x232510c3, 0x358be673, 0xeaae802e, -0x9a0d5b25, 0xff64ddb6, 0x5024b8db, 0x70e84943, -0x89099589, 0xdbd085d6, 0x9725edbe, 0x6f33348d, -0x2fc02504, 0xabd6b789, 0x99931110, 0xac9d989f, -0x32c2b1d4, 0xa1bc8562, 0xfe02e110, 0x703abd83, -0x0c15542f, 0x4857fa81, 0x93dda808, 0x90205322, -0x0be4ccf0, 0x34a4ec10, 0x2058a948, 0xc1561ee0, -0xe9fd8c5e, 0xfaa920ab, 0x091f42c5, 0x8c438451, -0xc156ff6f, 0x107dc24c, 0x42130c02, 0x84f87c07, -0xb501350a, 0x8a4d92c9, 0xeaabd800, 0x8189d30a, -0x027dddd1, 0x271218ba, 0x00433d04, 0xb9102177, -0xa3f7d7a5, 0xd2fee719, 0x70661a51, 0xd6684463, -0x1237c984, 0x3596542a, 0x91dfea6b, 0x95d3751d, -0x80c21f15, 0xdfb94374, 0x528c9787, 0x68316850, -0xe3fc3884, 0x7c0038a1, 0xf4d9c000, 0x23b7cc08, -0x19ac680e, 0x27bf88e2, 0xe9ac8944, 0xebf08479, -0x3726e2a0, 0xf4402be6, 0x61e45326, 0x7ff75188, -0x83fd7b29, 0xd08801ca, 0xb0b261e6, 0xf11a4305, -0xe67c4362, 0xdad9df42, 0x08df735c, 0xd6e9c3c3, -0x105e29d9, 0xc454fd05, 0x8ddf6da8, 0xb682d504, -0xd08f457d, 0xac028208, 0xc9adb82d, 0x033b0880, -0x7a150410, 0xad0218a9, 0x864b83ba, 0x008eefb3, -0x538907d8, 0x0002b0e9, 0xd9c83d00, 0x37d2b17f, -0x4dd3ba3a, 0x06241062, 0xcd51083a, 0xbf10578b, -0xc7442360, 0x03c46182, 0x06bf0add, 0x68ee11f8, -0x1b058c78, 0xd54bb007, 0x0e1fdb33, 0x45226409, -0xba642a68, 0x6a08e008, 0x57003979, 0x7c0739a8, -0x542ba462, 0x74040939, 0x190f8ac5, 0xe57845b4, -0x284514d4, 0x4ca7579a, 0xfddbb636, 0xa3219468, -0x40886684, 0x75f2128c, 0x06099093, 0x1db13740, -0x68fe84f0, 0xa01db3b0, 0x6eb8513d, 0x09a8a492, -0x0c11dc8c, 0x9a2dac54, 0xa8edffff, 0x160c1afa, -0xbc680368, 0x4fb036df, 0x54e4e29b, 0x48482e04, -0xaa30761d, 0x2e4c6b2e, 0x2a5b5052, 0x0209d7d8, -0x7131b048, 0x9d98317c, 0x606ce464, 0xf3ae2e64, -0x1e675f20, 0x7e310309, 0x48826807, 0x80c8c937, -0x07097874, 0xcd7d82a4, 0x4c31017c, 0x649bbbac, -0x342490ac, 0xc1098c88, 0x80a13906, 0x66172e1f, -0xd15725bf, 0x8ce26801, 0x2f14312f, 0x21d5461e, -0x2f1cbc18, 0x13c72b61, 0xc0e5e85b, 0x87ce68b5, -0x68e1d6c1, 0x18b0a2e1, 0x1072b575, 0x7be01284, -0x6bd920e5, 0xa3ca1cea, 0xf8090e10, 0x20968b1b, -0x8021e803, 0x075f5d12, 0x27e9903f, 0x0481be88, -0x6e90f0ee, 0x5e18a380, 0x891afbcc, 0x88f46ba8, -0x607a4b91, 0x2e95d880, 0x4b6eab96, 0x050f4475, -0xf2573ec3, 0x88805bb7, 0x208a0f4a, 0xb70ee8e8, -0x903a87b2, 0x000023f2, 0x6dd95ffb, 0x33224d57, -0x866c0349, 0x7445e41e, 0xd8c813f8, 0x0000ff68, -0x2b030135, 0xc0d04706, 0x617107fe, 0xadde0011, -0xff03efbe, 0xe3fc4bff, 0x8701035e, 0x5850203c, -0x696c4345, 0x3a746e65, 0x68637241, 0xeeb7613a, -0x3a0030bf, 0x49444e55, 0x3102320a, 0x82585f00, -0x02394fb0, 0x5f5bdc05, 0x36362caa, 0x0532bd36, -0xfffd916b, 0x510e37f6, 0x3c112b0c, 0x83828180, -0x87868584, 0x00670000, 0x017f6db0, 0xffff0d73, -0xaf726484, 0x41544146, 0x4e203a4c, 0x6572206f, -0x6ebb6c61, 0x6d2dffe9, 0x2065646f, 0x63617473, -0x5021906b, 0x564e0300, 0xff736573, 0x6143002b, -0x746f6e6e, 0x14762023, 0x7fd6fd24, 0x6e25213b, -0x64006369, 0xa26b7369, 0x70706f6c, 0xfdbfed79, -0x277230b6, 0x6c6f636f, 0x48445473, 0x54205043, -0xd9045446, 0x266ff12e, 0x384c5452, 0x51393331, -0x32076c74, 0x05b6ffdb, 0x663b620f, 0x38333565, -0x636d7300, 0xed633116, 0x2d31ec36, 0x65180931, -0x6133626c, 0xedb177ed, 0x55746464, 0x362e0b6e, -0x78743039, 0xeb1f6f64, 0xd465bbb6, 0x1e787630, -0x1d64f56c, 0x33776e66, 0xed63cd6f, 0x1e333036, -0x30303809, 0x656e9763, 0xfb6d4a2d, 0x20006f60, -0x751b202d, 0xe6fd8b31, 0x6636d816, 0x03023089, -0x65207872, 0x6ff6f672, 0x207261bf, 0xaa586825, -0x70746674, 0x756f4c00, 0x11676e69, 0xfb7b2ddd, -0x73253a40, 0x2f2f3a32, 0x613c0f12, 0x6e6b5b62, -0x3e742ebb, 0x1298572c, 0xe678ad16, 0x0c6ead0a, -0x03366e55, 0x6edf8e18, 0x4120f12f, 0x2522b450, -0x0a220163, 0x656c6970, 0x56b6e673, 0x3e207af8, -0x073f6d20, 0x0591640f, 0xc35a2a94, 0x05294628, -0x6c3fe1ff, 0x002e771b, 0x72673a20, 0x68206d61, -0xd0a17b89, 0x468c4e5a, 0x67696294, 0x6c042f28, -0x49424eb9, 0x72837f0a, 0x75bb6973, 0x3a446dcd, -0x42401e0b, 0xc200742a, 0x1687b5b6, 0x2161a712, -0x6f8469de, 0x69fbb6ee, 0x6967616d, 0x657f733c, -0x693ead70, 0xff6d5f74, 0x705e7422, 0x662008f1, -0x2ebc756f, 0xbddc22c1, 0x654d0a1a, 0x2c00404e, -0xad6b0ab6, 0x0abc0ec5, 0x9243f0d9, 0xb75ee73d, -0x20856c20, 0x094333d0, 0xb7376f67, 0x2d646d1b, -0x77f86147, 0x523a7961, 0x0ad63dd8, 0x203b0abe, -0x29062628, 0x6c68d800, 0x444d9fc9, 0x5a65a112, -0x3fd0b09b, 0x3e796d2e, 0x16856e21, 0xbc73addb, -0x614427a4, 0xc7342872, 0x74749bdb, 0xf046e563, -0x53d6dad6, 0x1006745c, 0x657a6934, 0xc3582371, -0x5b0b0158, 0xc4204346, 0x38dcbb38, 0x70004932, -0xdd985dce, 0x3b28a9b6, 0x75130a29, 0xb5bd6e77, -0x4bbd8b76, 0x4e57706d, 0x747562a4, 0x8da386ec, -0x641d49c5, 0x0e7373dd, 0x6d0c130c, 0x1a613e53, -0xd8c61819, 0x656317de, 0xf7641069, 0x3b696a62, -0x6ec73774, 0x64973a75, 0x010ab98c, 0x14f6085f, -0x09796441, 0x25783020, 0x8e6b5a1f, 0xc94b136c, -0x6f66b7eb, 0x84c3464b, 0x0aec9072, 0xdb7b114d, -0x6d4a2ed6, 0x27502743, 0xf7b4603d, 0x6f4a5bd8, -0x75572066, 0x14966c72, 0x0ae6c2b5, 0x6e2f1964, -0xb9baab1d, 0xac90ce0b, 0xd66e6b97, 0xd676650f, -0x8750d861, 0x8970799f, 0x645a6247, 0x733b98db, -0x5b5b9f61, 0x85175d07, 0x70f21adf, 0x32156963, -0x36353433, 0xeb69633d, 0x424139fe, 0x46454443, -0x68032ed2, 0x1e563a06, 0x6d5ad7dd, 0x2f00edcb, -0xdc14395f, 0x205b3e37, 0x33534f8a, 0xf53f7032, -0x91306fb6, 0x342e351e, 0x435b322e, 0x9b10be18, -0x2037abec, 0x50478119, 0x3587294c, 0x746b3695, -0x1c654454, 0x36f1ad2e, 0x44d90c0a, 0x0e57c9c5, -0x377c2877, 0x0d0a8520, 0x08b74fee, 0x6ed4208e, -0x51784500, 0x46c3b673, 0xc30e3ab0, 0x23c0aa6f, -0xd0bc36ce, 0x7269c0a4, 0x202ce571, 0x37862112, -0x7dd6e42c, 0x2d739270, 0x85e37564, 0x7f0d8c47, -0x58b94300, 0xc61af1f7, 0x20b4c45a, 0x0a896f89, -0xcdad0b8d, 0x61665fd7, 0xb70d63c4, 0x4938186e, -0x65d84d4f, 0x9b74de67, 0x607dadb5, 0x67091f78, -0x18210b28, 0x3d46dce6, 0x23540a63, 0x5b9cdb86, -0x04846c56, 0xf1c96fe0, 0xb992c045, 0x6c1de27b, -0xddf612c4, 0x9133340a, 0x94621d65, 0xf645f266, -0x6ea67bd9, 0x799d2273, 0x37e0676c, 0xd22c2d6b, -0x9966c120, 0x67a11492, 0x12825f46, 0xbbd8c6f6, -0x75f53d21, 0xeac119fc, 0x17a03c36, 0x70736164, -0x2dd0cb7f, 0x0e747b6c, 0xde25296e, 0x1a50b05e, -0x870f91d6, 0x42b61b69, 0xb4ae2073, 0x6b0e6290, -0xb521ac0a, 0x61621f63, 0xd38041a5, 0x76e18223, -0xa5f57853, 0xb9f656bb, 0x2f004da0, 0x6b6e67a9, -0xe26360b4, 0xd3893c69, 0xc1c1c66e, 0x3932ffc6, -0x19aef776, 0x5fb88fb6, 0xa62c78be, 0x36bd92bb, -0x4578f574, 0x0c942978, 0xe06c1adb, 0x6c45ce61, -0x8348671f, 0x2b16c22e, 0x70cc3d61, 0x06bdb0af, -0x72ffd89a, 0x7d67c2f0, 0xf2db5c91, 0x9ed27920, -0x854f9cee, 0x07c0e876, 0x0a8c77c7, 0x5b56ed15, -0x7419bb70, 0x66662746, 0x03b92319, 0xf5415e1b, -0xe6003b89, 0x00a49eb6, 0x4f4f42c4, 0x339c2d60, -0x81c08813, 0x509c1597, 0x00ac859a, 0xdb146b00, -0x64381c62, 0x632c17f5, 0x88d1aedf, 0x010a3511, -0x062db9d0, 0x1420af4b, 0xde88531f, 0x1de9b122, -0x537978be, 0x657571b8, 0x19cb5eb5, 0x447cf981, -0x6ee3bb06, 0x6c24196b, 0x623436e5, 0x5241424b, -0xe1e37419, 0x7838307d, 0x52c3043a, 0x073a52d9, -0xbb86b614, 0x54687916, 0x3c08a761, 0x10d8040f, -0xdcf4cdd2, 0xf5b7003f, 0xf9736f4a, 0x0861c19b, -0xc9162143, 0x168dbd67, 0x3aa4688c, 0x5e9976a3, -0x6a2b9e09, 0xe02a2c30, 0xb80b0b18, 0x9964778a, -0x606e4a3a, 0x58230ec1, 0x42215758, 0x7589016b, -0x3f3a2d33, 0x206a71d1, 0xd7816158, 0x81b1736d, -0x58ee48cb, 0x8c265440, 0x6f42edb0, 0x75292e6f, -0x73822e6f, 0x55703e7c, 0x3300a0ae, 0xa2a9b741, -0x031ac0a7, 0xc700e691, 0x3702fde8, 0x07914000, -0x36cf9fbf, 0x076720d8, 0x93179b93, 0xc026db1f, -0x02100056, 0x17fb837b, 0x037faed8, 0xec228884, -0xaa812910, 0xd42e0788, 0x8139fcfd, 0x81388922, -0xf0860fb2, 0x6bfdbb13, 0x1307ef9a, 0xc2121111, -0x1543cc12, 0xbed41360, 0x07d96c7b, 0x27de4033, -0x07ea1340, 0xab0613d1, 0x9b6efef4, 0x1712596f, -0x14eafda1, 0x0789080f, 0x5712ab07, 0xfc6452f6, -0x7f891c81, 0x0889b601, 0xd39dc265, 0x0b0d033c, -0x50a5ee04, 0x0b40ac5b, 0xd74cc83f, 0x031d57a8, -0x2d580f7a, 0x054fdfb2, 0x962d6704, 0x0056c2bd, -0x1b033cd0, 0x00f511ca, 0xc15292bf, 0x65601bfd, -0x82639f2b, 0x0b966353, 0xc81605af, 0xb1778f76, -0x07390302, 0xf09f5f45, 0xa8547b2a, 0x07403755, -0x85800000, 0x0002406d, 0xffffff00, 0xffffffff, +0x44070c03, 0xeb3be850, 0x5dfdbc2e, 0x050ced81, +0x98ad8906, 0x168b00a5, 0xdbffbca9, 0x7400bfb7, +0x90b58d21, 0xbd8d073d, 0x39054d90, 0x390472f4, +0x890d76fc, 0xeeff1dbf, 0x3248b9e6, 0xfc89cf29, +0xe3e8a4f3, 0x362d8b51, 0x6cf66c29, 0xe8686f73, +0x3f450caf, 0xb70f1220, 0xfddb6d0a, 0x5c0424db, +0x8d502624, 0x50608085, 0x7c548ffa, 0xfedb7edf, +0xec01d38e, 0x936158cb, 0x66a102a9, 0xe61f6607, +0x648b9d0c, 0xf73428df, 0xf79cd424, 0xbe852696, +0xca9dcb9d, 0x6ffd8b6d, 0x57565507, 0x10247c8b, +0x61983d2b, 0xe0cda810, 0x68af7eee, 0xe8550e48, +0x5b217cba, 0xbb758df7, 0x42a30e40, 0xbe778904, +0xdeb4b923, 0x29edb6fd, 0x732ea3f1, 0xf8ea2015, +0xb8000881, 0xffdb7710, 0xd88e1cef, 0xd08ec08e, +0xe88ee08e, 0xc35d5e5f, 0x89e64035, 0xddfb4435, +0x3d057e7c, 0x584c1d48, 0x250b50a3, 0xfeeb0554, +0xbb59b85e, 0x0300e968, 0x68535f1d, 0xe4514328, +0x3ddc3efd, 0x890bb1e8, 0xa5282ca5, 0x6ca52f20, +0xd737a5de, 0xe4cf6129, 0x8100768d, 0x858fbcfc, +0xa8dd35ee, 0xed0c6020, 0x02341b22, 0x6edec646, +0x17072db7, 0x7e8bd0ff, 0x3c8e8b8b, 0x8b8b4647, +0x3ca18b15, 0xef0a342e, 0x8be2ff04, 0x68d6da4c, +0x6e3f5189, 0x5902dffc, 0x08618904, 0x890c6989, +0x14796071, 0xdbc3006f, 0x1b7342f6, 0x8b08431f, +0x095a374a, 0xfafd3d62, 0x0c6a086f, 0x8b10728b, +0x051c147a, 0x0b89ffb8, 0x43ada567, 0xbea29c28, +0xe10c5401, 0xce62d992, 0xb8bb188d, 0xfbc61f30, +0x21a225a1, 0x2e9d5d58, 0xf0f0b928, 0x2b07351e, +0x38815080, 0xc3c34800, 0x82858901, 0x75956ffa, +0x68e486c4, 0x284f2907, 0x9a352f0c, 0x535053fb, +0x2c1d9da9, 0xcb024389, 0x03752fb7, 0x88101f0a, +0x0c020443, 0x0f076388, 0xf6e35b7f, 0x90c3585b, +0xc6535600, 0xb8ab1525, 0x67a6046c, 0xc66577ff, +0x70b0d629, 0xd329c389, 0xb801006a, 0x847132e8, +0xe42dddbf, 0x05685004, 0x6e09e5e8, 0x6f0b3b80, +0x0dc2bd6f, 0x057703c6, 0xb01097c0, 0x06131800, +0xb1032e6d, 0x0a230b03, 0xa6d81457, 0x1881d6b7, +0x6a100479, 0x50160d02, 0xe4679b06, 0xb8501cfb, +0xe8e851ef, 0xe3c28993, 0x537046df, 0x0a23f666, +0x0f037401, 0xc5b8c6b6, 0xa39ec1b6, 0x12038849, +0xcf233d92, 0xfc1e45f2, 0xd24defef, 0x978dec9d, +0x04bb782c, 0xc8fc2303, 0xfc33cc96, 0x26c03229, +0xe77b5ed6, 0x05262b0c, 0x0b642694, 0x0631617c, +0xb901f083, 0xcfb22f01, 0x0c1573c8, 0x5608d20c, +0x59b26791, 0x151729af, 0x9e4b6f0c, 0x3426a815, +0x9616c766, 0xc7b708b1, 0xd8170a6a, 0xe60c2422, +0x1733f919, 0xe61c7417, 0x171a5bfa, 0x0e333518, +0x367d8800, 0x50d8dde9, 0x39d06a3d, 0x836630eb, +0xbbe5b4e7, 0x19755741, 0x17111607, 0x6faffbe4, +0xe2c112ca, 0x01104306, 0x100febc2, 0x77e3f016, +0xd0891419, 0x1e5755a1, 0x6fdebb3c, 0xa995ef7c, +0x54513b07, 0x46b87d7d, 0xf48ba46c, 0xbdea71f5, +0x7f1e9081, 0x06df835b, 0x04665024, 0xb3e82268, +0x6c1f8407, 0x7b81c063, 0x07740e12, 0xd87956e7, +0xf639eb7b, 0x8b2b0d7c, 0xdbeefdc8, 0x8d457cd6, +0xb9fc1a37, 0xa5f31305, 0x14c58343, 0x8fd9f6c6, +0xdb850b71, 0x96bc9d74, 0x3c4cd889, 0xb106c361, +0x9f5a5fd6, 0x4bda1bfe, 0xb20df02f, 0xfffe84e8, +0x3360a3fe, 0xfbf3e886, 0x0aa0bb73, 0x950964a3, +0x136c6820, 0xfbefff2e, 0xc4684ffe, 0x75c08510, +0x0c05c773, 0x2005db02, 0x63b042df, 0x097005e5, +0xc1490508, 0xf77b9b73, 0x74a30ae0, 0x15899907, +0x7c1f0678, 0x75832105, 0x8009db63, 0x84091029, +0x6c9ba133, 0x3164b06c, 0x548c2a88, 0xbdbb3490, +0x28bf0611, 0x8660773d, 0x5ee9055d, 0xa089a983, +0x0b18145a, 0x19a04508, 0x1c180ca4, 0x88977b6b, +0x79b9358d, 0x0c011740, 0xedf0d8a6, 0x0a870f1e, +0xbdb98105, 0x4f7730ff, 0x587df08d, 0x2b0a064a, +0xafba1299, 0x7dfd8e91, 0x77a4b7eb, 0xc8993b08, +0x078b0676, 0x61b181c7, 0x2ef3c5cd, 0xe430f309, +0x29b1b164, 0x6736191e, 0x67de00a2, 0x09ff9dd3, +0x818b920f, 0x6822918b, 0x72dec738, 0x3803d689, +0x10cbb113, 0x1bf06f02, 0xd639142d, 0xd8776a72, +0x376476c3, 0x2dd8fd8e, 0x2f390c11, 0x08722c77, +0x22773f39, 0x9ddb1b3b, 0x2b1c19db, 0x814f1b0f, +0xec39194b, 0xeb9189f3, 0x89892128, 0x19108ec1, +0x78815ec7, 0x08b63809, 0xc18347ed, 0xcca15d71, +0xeebb1201, 0xc3267370, 0x2bd813b8, 0x42ee3305, +0x7a9f61d3, 0x97d0850c, 0x230ac632, 0x084a75db, +0x08a60acc, 0xc1fc607c, 0xff0cca3f, 0x727d9c35, +0xec2e0000, 0x12dddd91, 0x8c2f6814, 0xeb5d5513, +0x075203fe, 0xa36f6df6, 0x6efd2835, 0x3935590c, +0x7420fd86, 0x97cca12c, 0xedcc8f80, 0xf15a9816, +0x3ae81b9f, 0x8e077837, 0x446a166f, 0x8068d557, +0x10f4ffb9, 0xc361ff05, 0xe80aebc1, 0xf4c81ee7, +0xaa8450be, 0x3172189d, 0xb8b114ba, 0x16afacd0, +0x2ea118a7, 0xb7f6c674, 0xc13ae9c2, 0xfa890ae7, +0xcbceb809, 0x362da702, 0x55d78923, 0x7aa0dbaa, +0x1ea19da6, 0x144ce88b, 0xe4db93ee, 0xe81c735e, +0xa7460b85, 0x836206fc, 0x187b0c1d, 0x8856c35b, +0x26661447, 0x35bbfbd0, 0x96e2811c, 0x061a8c8d, +0xc0fc2e99, 0xf289336e, 0xa4227423, 0x0bff817e, +0x74c98504, 0x2102c714, 0xfb455246, 0xc281044a, +0xe0c05e00, 0x49669fef, 0x24e8ec75, 0x57711b00, +0x75c66c32, 0xadc5e898, 0xf58b78a0, 0x1c1f369e, +0x77d4bed5, 0x6c37fe74, 0x29f1893f, 0xbb01c2d1, +0xd729c789, 0x80398166, 0xa85e7402, 0x3f4fb6fd, +0x98187564, 0x044703e0, 0xd4bdf361, 0x4fb71d6d, +0xebd8e604, 0xd23efbc5, 0x43c1d9b1, 0xc358828d, +0xe300e381, 0x68ed8f08, 0xde0d0d8b, 0x2955ce29, +0xb1bd1ad0, 0xc8393ffd, 0xd8392977, 0xfb812577, +0x1d9c0a13, 0x61e9c889, 0x2719a1a1, 0x1d48ae56, +0xb312211d, 0x04351c21, 0x2240ccab, 0xf48950b6, +0xec56e13b, 0x4a4d81ef, 0x34053b52, 0x71393277, +0x760d8b6e, 0xff522a75, 0xfaf05745, 0xd186d904, +0x096705c7, 0x83838904, 0xa84f0b60, 0x23631bc8, +0xc454c8c2, 0x86d7245d, 0xa3975c05, 0x5cef2e8c, +0xc736ed88, 0x987fed46, 0xb81ec8a1, 0x811d9601, +0x5b084087, 0x3a01b8c5, 0xb63d9bc6, 0x4c4b8c42, +0xbbf0a12d, 0x8b7eec54, 0xe9815c36, 0x9654bf4a, +0x78f23d4c, 0xf529fd35, 0x478979aa, 0xf21e11dd, +0xf7813386, 0x3800b80b, 0x2dd9ccdd, 0x54f8fb0f, +0xd6dd9b37, 0xa113fd0c, 0x18e44e8c, 0x30019d03, +0xf38d0da3, 0x025d9bbe, 0xefd82066, 0xe507be6d, +0xa9000189, 0x46c070a3, 0x74a2bacb, 0x85e59e56, +0x8817ab5b, 0x0242e798, 0x2dacef48, 0x0112ee76, +0x05d6c8e5, 0x436bf7b0, 0xb82e75fa, 0x81120054, +0xc1ea8112, 0xefd9ac6f, 0x89af928b, 0x01db6810, +0x060850aa, 0xd74fd087, 0x3575a9b5, 0x57204e6c, +0x19285a24, 0xff8b74cd, 0x77df3d3a, 0x1a048d11, +0xed152b90, 0xa8f6f587, 0xeb081d89, 0xe8052523, +0xd622fbc0, 0xd048083a, 0x283a08ff, 0x3fed86d2, +0x89dd29c5, 0x0c7f83ee, 0xff9c15be, 0xba395577, +0xc4748150, 0xeed85be9, 0x0ba1c239, 0x01bfb18d, +0xfc334c8f, 0xe856ee60, 0x01121bcd, 0xf45e8dc6, +0x8dce33f0, 0x37395b6d, 0x0435b319, 0x4dfe1f10, +0x02c3df9e, 0x9a01c132, 0x06548d12, 0x178054e0, +0x818b56eb, 0x30ac018b, 0x03e833fb, 0x12e88906, +0x7b6bd906, 0x081436c2, 0xa0107ff3, 0xd8172508, +0xdb3414a8, 0x14475942, 0x6ddb3704, 0x47301c05, +0x9174290c, 0x5b7c73ac, 0x03990d66, 0x750803dc, +0x3fc4da97, 0x8303014c, 0x04e2fce1, 0xcc297155, +0xc6c08db4, 0xabc35154, 0xf57e0c6c, 0xdddc5c24, +0x2ce8d024, 0x5dec8906, 0xbd4ea1e7, 0x6140e194, +0x94249c10, 0x77036308, 0x335437d8, 0xec40ec07, +0x180d6f0d, 0x745836f7, 0x898f8d48, 0xa97c5b22, +0x83d67778, 0x060018c2, 0x2f85aea5, 0x2c7630b0, +0x12c7c2b4, 0x00adb6df, 0xc07c7964, 0xfec1c6d3, +0x6f6e1602, 0xf1393ec1, 0x551b107d, 0x0f41108c, +0xb00df07c, 0x52671b75, 0x98145f53, 0x62c631f9, +0x240cc1b0, 0x264f2e63, 0xf43c58d1, 0xaa10a117, +0x45f81eb8, 0xd02dd8f8, 0x01e80566, 0xc783c416, +0x4b8dd6eb, 0x2d4640c4, 0x36241dce, 0x74d285bc, +0x02c50610, 0xa1d03994, 0xd6284523, 0x8ba3bf49, +0x05b72c06, 0x4a21041b, 0x6ae30f08, 0xe570f7b9, +0x150db459, 0x52c9008b, 0xc3d84f86, 0xa7d10abe, +0x93e8da74, 0x3982b9c4, 0xfe0b73d9, 0xf6f18304, +0x42c11937, 0xf572da39, 0x5e5bc10a, 0x1bbe1cb4, +0x3086746e, 0x982f408c, 0x07a10a74, 0x9b831de9, +0x7599e509, 0x1325b620, 0xd86b822d, 0x80fa21be, +0x1bf16ac2, 0xee6217fd, 0x23a6840f, 0x0f0264a9, +0x29f0e783, 0x301989c7, 0x20448b1c, 0x326c80b9, +0x6bfef0d0, 0x738d1205, 0x11838d60, 0xbefe18a6, +0x816e2f0d, 0x81a58eef, 0x042d05c7, 0xfb049605, +0x1bc6eb31, 0x0ad0e714, 0x07011883, 0x9b783fb7, +0x32e42d12, 0x68056c8d, 0xd478f0e5, 0xe4a35828, +0xafdb1b28, 0x046a1c6f, 0xad8c4a68, 0xc60558d1, +0xd0ce58ac, 0x07c695d5, 0x0e431807, 0x91844605, +0x0c0e0891, 0xfb16ac30, 0x9c05778c, 0x2b6612e2, +0xb1060abd, 0x107beeb1, 0x142b1625, 0x6edd9405, +0x05ffdd2b, 0x571c5318, 0x1e0d071d, 0x7690eeb1, +0x1f97ccfb, 0x0f200328, 0x6dba775d, 0x22022a07, +0x2e13bca1, 0x02d82603, 0x306a6536, 0xea320d11, +0x54066c9e, 0x3643057c, 0xb6c6405c, 0x43ceec48, +0x46078e42, 0xc6f94805, 0x4a12f906, 0x1250054e, +0xdc2d3752, 0x6a055606, 0x35010158, 0x77054328, +0xc7e3f0c9, 0x68eb2404, 0xbadf164f, 0x07742257, +0x0646ffb0, 0x46c60201, 0x46fc2c08, 0x6014830c, +0x4693b6cf, 0x570e2c0a, 0xd7e71246, 0x467bac1d, +0xdc140320, 0x16032246, 0xd8c8f622, 0x1a281858, +0x001e1c05, 0x38956200, 0xe6245361, 0x7b502646, +0x60603824, 0x83a72a46, 0x8f0c0fe3, 0x5e7dbbb1, +0xb42c6a28, 0x46c9fd37, 0x80c78e09, 0x08c36c8c, +0xdf1fc106, 0xbf703a68, 0xe80f377a, 0x6a95fbdb, +0x938bedf6, 0x2c6aa517, 0xfff91a15, 0xb1063cff, +0x1cb320c6, 0x7adbf57d, 0xa9e81f6b, 0xdb4a1cf6, +0x1d19e3c1, 0x060831dd, 0x3c55c7ed, 0x914823de, +0x1434164c, 0x436762ea, 0x51ed9960, 0x89628eb8, +0xfdf40d13, 0x7e0ff86c, 0xcba2708f, 0x95eb81d3, +0x6deb68be, 0x6d063ffa, 0xcf29f789, 0x8389078b, +0x04260b48, 0xe0bbad0a, 0x4e83ec8e, 0x4c83250c, +0x60156006, 0x94d3ee83, 0xeac1180a, 0x35d05719, +0xcd8d2285, 0x1bd04e76, 0xed84067f, 0xa9bad0e3, +0x0620d0ee, 0x82c0010e, 0x4e810cb5, 0x53dfecb3, +0xaf5274f6, 0x98ba3f74, 0x9598152b, 0x3bfdcc18, +0x808b5f16, 0xe802899c, 0xb042c8ce, 0x7650d090, +0x46687714, 0x8e519c2f, 0x3be86a18, 0x57b5c557, +0x23740e2c, 0x88052378, 0x34e8d0d0, 0xe7c75cb7, +0xb060e46c, 0xe8a6eb73, 0xb257ea56, 0x85526cf8, +0x0b8d147a, 0x9fe662cc, 0x323a1bed, 0xe8d0de38, +0x00c18960, 0x83024b0c, 0x27dd0de0, 0x01d30db5, +0x063979f2, 0x5312e283, 0x810e2d80, 0x85086a04, +0x0f78364d, 0xa24635e8, 0x77f9cc05, 0xda1d1dee, +0xaee8206b, 0x1409b322, 0x74085e5b, 0x8b6d672d, +0xdd24ec20, 0xe01bc777, 0x76a83881, 0x4d028b1f, +0x6904428b, 0x35b62060, 0x72080762, 0x37ed1040, +0x06a0fe28, 0x138b1beb, 0x362d4314, 0x82438fb0, +0x93310640, 0x35bb51b0, 0xc109365f, 0x92c81315, +0xff5a2c7a, 0xd001d144, 0x8370498b, 0xc60e506d, +0x9466ce25, 0xdc09bddb, 0x18bf7c24, 0x9e908068, +0x7c04516b, 0x0eb3639b, 0x774c094d, 0x5515b879, +0xcecd9187, 0x27000a0b, 0xee2e7022, 0x3dce8c47, +0xbeb7be51, 0x6f7d1486, 0x9f83aded, 0x900a7702, +0xa0853493, 0x0fc07b72, 0x75f81bae, 0x8d6f9f17, +0xadd1247b, 0x247e9e45, 0x75161c00, 0x6e0b0e1c, +0xcc1b6deb, 0x7e144270, 0x17743b64, 0x310775e9, +0x02219f02, 0x3c91a916, 0x062e4baa, 0xdb99ae68, +0x76010f48, 0x580f0069, 0x506a4988, 0xb4834c5f, +0xd190b90f, 0xff53e06f, 0x0003c713, 0x07dff724, +0x3023d0de, 0x468b2c4e, 0x9768e15c, 0x5dbf64d8, +0x5750bdba, 0xfbfce027, 0x88608a68, 0x1c896c46, +0x4b8b18de, 0x2a4820b4, 0x568bf4b0, 0x865b6768, +0xee52a317, 0xe20be76a, 0xd8373d55, 0x8129c360, +0xbcc09454, 0x062d09e8, 0x018816c4, 0x8555fef9, +0x1df6d78b, 0x478d021e, 0xb42d5007, 0x3c68a4b9, +0x47305dfb, 0x7e02ff83, 0xec584bdd, 0xcfbb7657, +0x0c0863b6, 0xbded6662, 0xf68a9bba, 0xbbb95ac4, +0xba052017, 0xb85209a0, 0xb56a05a5, 0x75296ef6, +0xff5008a8, 0x97695c76, 0xdc3efaeb, 0xe0686807, +0x864fafa5, 0x8f019b14, 0x161f8fdd, 0x7404a858, +0x9110e117, 0xaff88a24, 0xf8b83461, 0x00c720f4, +0x3f521f43, 0x46d26f7f, 0x061db948, 0x501c9b4c, +0x85541ef5, 0x1b4a1309, 0x82e6d62f, 0x2c761b04, +0xd1423eb2, 0x78db1681, 0xcf4ec764, 0xbe8dffff, +0x0be5d30e, 0x80b0596c, 0xb0eefa89, 0x89edee88, +0x04c683ce, 0x68973878, 0x81ed68b4, 0xd3f10ec5, +0x88e0bc6e, 0x19ab59f8, 0xe0e2f7c0, 0x152fb402, +0x1c8ad23e, 0x8888cb2e, 0x76f6add8, 0x02f96db7, +0x83138a32, 0x4e088cc8, 0x6c42cd79, 0x47bbbb0d, +0x5a10beed, 0xb1d98cbd, 0xdddbe80f, 0x0c4ea1bd, +0x49ece3d1, 0x0b89c309, 0x112cc888, 0x85bf7a7b, +0xb0e37ff6, 0x10512ef7, 0x1f7f84b0, 0x13b96767, +0x0eb804bb, 0x06b90084, 0x441d9d2b, 0x230807ef, +0xe8360c09, 0xef37da61, 0xb01fc90a, 0x1aed6eac, +0x3715573c, 0x97d429ee, 0x821b4fa7, 0x4c97d83c, +0x6b0b2e9a, 0x082c42f1, 0x10682b68, 0xb8470974, +0x1323ae04, 0x20b9eb3c, 0xfec35c77, 0x5f8bc6ff, +0x8d0e0440, 0x41ee0b14, 0x7e05f983, 0x5a0cb0f3, +0x0ac645ab, 0x0c578f86, 0xf427b0eb, 0x400c036c, +0x9dc860ef, 0x10ec3f1e, 0x35ef30f6, 0x4c0bb866, +0x9ee857ef, 0x0ba11845, 0x15de04c2, 0xba31663c, +0x5fd4ea33, 0x24d81492, 0xd30af8ed, 0x862c620b, +0x06a7fdc4, 0x3b826c22, 0xdc682c96, 0xed5031d1, +0xe6ef9068, 0xe268b612, 0xdd021f11, 0x5bc77c9d, +0x0b13e868, 0x68383753, 0xb4fe8dea, 0x4ff911f9, +0xfb580ec3, 0x7c0d773b, 0x78d76cde, 0x760c554d, +0xe110caf3, 0x47050ff7, 0x02e2c13f, 0x209a0366, +0x91fc71ef, 0x081e406d, 0xe8ef1017, 0x9d28ea5a, +0x45234cdd, 0x3ec412c6, 0xbf61d10d, 0x252d3119, +0xffff800c, 0x05bbef12, 0x0edead57, 0x2d2c709d, +0x1a2df039, 0xd372d91f, 0xc3f6ed47, 0xdf864bf8, +0x40147d46, 0xeb08a38a, 0x3300bb0c, 0x16280b9e, +0x282810fe, 0x1b86d8cc, 0xc90b20cf, 0x3188dc18, +0x127aa867, 0x6c615c01, 0x3c8330c2, 0x42010269, +0xb11b6d87, 0x5ae8d395, 0x9bef10ae, 0x8268f05a, +0x8b502c2c, 0x8df03f82, 0xc14cbf0e, 0x922510ef, +0x68753ea8, 0x0da50bea, 0x810811ef, 0x763beeff, +0x3c2d7d7d, 0x6dac5197, 0x6034d7f6, 0x5e6e0c17, +0x98e1fd7f, 0x97dd98e9, 0x472e7ae8, 0x3a98647f, +0x3220003d, 0xae52ee38, 0x58fcbbdd, 0xec54d329, +0x345ecc82, 0xfc4de11e, 0x4e7ae860, 0x29f88990, +0xd7f02dfa, 0x7753861a, 0x2f605e03, 0x5806d861, +0x18e6188a, 0x3264769b, 0x0d9b6315, 0x03321947, +0x75fb1ade, 0xea075f6d, 0xa1660aa3, 0x7c92e810, +0xbb3dc14b, 0x9851e2ef, 0x6924b486, 0x86818263, +0xbe0c1761, 0x87e18e53, 0x9bd02e31, 0x26740204, +0x81538b80, 0x0c37eef6, 0xf7f26926, 0x1dd021d2, +0xf0090275, 0x2ece9918, 0xb18def1c, 0xc4360c01, +0x30906da1, 0xba1c047d, 0x81a92674, 0x10b0b669, +0x6f6f841c, 0x1c8325e4, 0xb05367b7, 0x869dcd67, +0x8fbe19d0, 0xd4b53547, 0x0f18ce0b, 0x7396debe, +0xeff68b05, 0xd1ef05e0, 0x486948b8, 0x05fa816f, +0xf5776a6e, 0x77075aac, 0xeb0ce206, 0x70780d2f, +0x7422a6f6, 0x2e25eb18, 0x6cfc7301, 0x3d2ad810, +0x540e2c2a, 0xd8fffff8, 0x1df57ab6, 0x0350a4f4, +0x3a3b48c5, 0x8d42705d, 0xffb8fd3c, 0x47b40681, +0x768810ec, 0xd431005b, 0x3abb00aa, 0x9ba3e483, +0x5d54cad8, 0xed023d2b, 0x2ad17ec6, 0xed0a96e6, +0x410c75a1, 0x02df660b, 0x699ce808, 0x2afba5e0, +0x74fcfd18, 0xf0556822, 0xdb1e0750, 0x70169edc, +0x49c0913c, 0x66a1e82b, 0xedd7236e, 0x041a620c, +0xe96e9c36, 0x741d8b04, 0xa5051ed6, 0xe6180544, +0x61836ff0, 0x41bdf4f4, 0x1c5bffa8, 0x13b842b0, +0x7512e320, 0xddbaf8ed, 0x29f84f03, 0xa1892ee8, +0xa975c909, 0x3ee0a45e, 0x98fe7445, 0xe87deebd, +0x68b518a3, 0x310a6435, 0x64f915a2, 0x6c877779, +0x3d589763, 0x766b2efc, 0xffbf3dfc, 0x12e0bf02, +0x7ea95874, 0x02fe8354, 0x10a14f7f, 0x9f7740c7, +0x1d14bf78, 0xa50c1d8b, 0xff08e4a1, 0x71760450, +0x23e7126c, 0x05417883, 0x8dfa3abe, 0x41fe5b11, +0x68016a16, 0xd46a18d4, 0x79ddf126, 0x33de384c, +0xeb7653d3, 0x469eb01c, 0x651a5c6e, 0xb1033974, +0x0ff636dd, 0xfd10598f, 0xe9087219, 0xa0eb0d81, +0x94049767, 0x8a8c0800, 0x47a1fe4d, 0x14db7ce1, +0x975e2248, 0x350fa02f, 0xe81b74fc, 0xd10a19ac, +0x621b12b7, 0xd5f7a26f, 0xe812ba17, 0x31b003bb, +0x6b8eac16, 0x710c4ddc, 0x36fdeec1, 0xd9e8a33d, +0x00c9f005, 0x9b6404be, 0xff3d8b10, 0xc1dc0c6d, +0x541073ae, 0xe9c23009, 0x9859f610, 0x55658535, +0x1cace884, 0x35a394da, 0x338d3b61, 0xcfd8fbe9, +0x894157b8, 0x02e1c106, 0xa3d340a1, 0xa036a5dc, +0xcbe2fe0f, 0xb60fec15, 0x4081ad78, 0x61223603, +0xc22f0b0a, 0x031364d7, 0x16981285, 0x6b1d9d82, +0x0d751208, 0x75c219b5, 0x15c5b7a9, 0x71151731, +0x86bd168c, 0x8ffa59af, 0x1ea12371, 0x1dc3343a, +0x60908d51, 0x84ab6a08, 0x9f95f082, 0x80cca30b, +0x5884709f, 0x5089ba82, 0x1c5889c2, 0x08308c21, +0x0c3e20ee, 0xfe10f0fc, 0x99be0dbe, 0x4f0111e9, +0x430c1b2e, 0x15428233, 0xb08e1478, 0x55142384, +0xeccce964, 0xe3c423b0, 0xec33745c, 0x74f4302a, +0x7a8b6d84, 0x1a74763b, 0xf7cf5a19, 0x7db3fb05, +0x90e03846, 0xd8860245, 0x0978c43b, 0x803c896e, +0x3563c7ec, 0x69785208, 0x62ebb3be, 0xcd74231e, +0x1e340c8e, 0x17eb3647, 0x408cde10, 0x7d83df04, +0x4f92c20e, 0x7945ff67, 0x4434097f, 0x05b410ec, +0xd8048d41, 0x9659a1c1, 0x6aa1a17a, 0x0390d6db, +0x0c897f11, 0xb7f85408, 0x35c637ed, 0x2dbb6301, +0x12dc3e80, 0x68743a04, 0x0dfb6ef1, 0x1e3c8043, +0x3a05060b, 0x80bff375, 0xedca5a33, 0x0570ffe4, +0x0194d808, 0xbd12c4de, 0xe814bf37, 0xb2274863, +0x8205bb3f, 0x722408c7, 0x00b2e9df, 0xfdc0da31, +0x036aa6e4, 0x8cb57568, 0x0c6dfa1e, 0x352d34db, +0xd8a58892, 0x47386f03, 0x06a493b8, 0x2f388085, +0xd70b1e1a, 0x331d4774, 0xe4cfe852, 0x9ce6b701, +0x3403ce8b, 0x4020921d, 0x7beed8e1, 0x240a5429, +0x318a5010, 0x3760f615, 0xe0cf9e29, 0x1f2d7546, +0x959af03e, 0x687ef2a3, 0x44c83679, 0x04fd18ed, +0x36a66806, 0x3e401480, 0xc3dd0afd, 0x25740457, +0x2d905650, 0xa5f18568, 0x9e29f202, 0x001f2015, +0x86e1e900, 0xe885f425, 0xfc971a13, 0x07759c97, +0x6a143c24, 0xab02d0fe, 0x480288c1, 0x3e227c80, +0x34180b7c, 0x3d80382f, 0x29749945, 0x0d631186, +0xc2b80825, 0xb8775f7e, 0x860f3d46, 0x0bee52f9, +0x6033c781, 0x8605f5ab, 0x97fabdbc, 0x31785bbb, +0xf6218b33, 0x8a0c4405, 0x466b46c6, 0x0fd4129a, +0x8c520a07, 0x26240df8, 0x6abc5c79, 0xa9ba6b6e, +0x94808dce, 0x30dc5264, 0xee8b9c1a, 0x2c35ef6e, +0xdf96e806, 0x62dbe0bc, 0x64100d9f, 0x593f43af, +0xdd821d25, 0xbb3595d4, 0xdb85ffd4, 0xcf7ef608, +0xd953401a, 0x040de028, 0xb14a5868, 0x28dcc180, +0xfe47502c, 0x087725c1, 0xcb270001, 0xc695be3c, +0x89932080, 0x40bc855a, 0x8bb24d85, 0x8b20e84a, +0x996a0c42, 0x0d8b637a, 0xbb73bad9, 0x6816f895, +0x9184d8a2, 0x09481d20, 0xb0af6a5b, 0x113248eb, +0x0738b890, 0x876c64fa, 0x18a3042a, 0x1875022f, +0xac1b81ca, 0xb91b2b45, 0x567dec3b, 0xa10e20f0, +0xa1307c34, 0x636c1604, 0x4334a3f6, 0x6f723815, +0x22b6bf86, 0x0fff243b, 0x543bf025, 0xc1d1bd8a, +0x9014b0f8, 0x8203bb01, 0xb72fb261, 0xec830f75, +0x8a3629d6, 0x1e1837f7, 0xa01a7584, 0x74ed8504, +0x141d8b3a, 0xf6d88241, 0xe776f339, 0x63336bf3, +0x2d4b1b4d, 0xad14f357, 0x19012129, 0xd763ebee, +0xdf01de29, 0x04411d36, 0x62105a01, 0x1d5b34ca, +0x28a09d4c, 0x38246eab, 0x07d419c4, 0x4ec29730, +0x03416705, 0x6010428f, 0x2df48d13, 0xccb8300c, +0x7d084d2d, 0x0531bdfd, 0x53e968e8, 0x8c591c3c, +0xa7b3850f, 0x4cad5f2e, 0xd461e075, 0x614b5650, +0xf08631f8, 0xbb05bb48, 0x0f1bf3ff, 0x93c22307, +0x2601da41, 0xb4bc02de, 0xc28f89fb, 0x39d021c8, +0x720cc405, 0xfa5bc015, 0x730b4fec, 0xc01a6609, +0xa436c821, 0x14250562, 0x05b974bc, 0x03ad0e8e, +0x7403df5c, 0x1fb86012, 0x34a5c728, 0x0b5e0508, +0x73fbd00f, 0xd8bd1baa, 0x8dda8391, 0x62c2fb53, +0xf12e348d, 0x0baa2e60, 0x9839302c, 0xa5a68587, +0x3b351fd7, 0x0e767508, 0xd5b894ab, 0x335b19ba, +0x5fc8cacc, 0x51aec02f, 0x50ce28a1, 0xf1077704, +0x3b6a176f, 0x064bebf2, 0xeb287403, 0x7d148b44, +0x180de160, 0xff307c80, 0xeb0f37e1, 0xcdd9bd31, +0x04241281, 0xc3b11eeb, 0x1bde051d, 0xa3660637, +0x205456d3, 0xbf761eed, 0xeb89e7a3, 0x2c568284, +0x1f74b97c, 0xcda9173b, 0x3274c806, 0x68100351, +0xafc46082, 0x40514c9c, 0x80305d1a, 0xc81c0d4b, +0x1b111007, 0xa4e349dd, 0xc558ff54, 0xd7772343, +0x0b0bb4dd, 0x6d05b005, 0x418dff5a, 0x1075345d, +0x721a15ee, 0x39087728, 0x63909b1b, 0x291e721e, +0xac241914, 0xe91c4efb, 0x010f7888, 0xd819c71e, +0x39459d82, 0xb87309b4, 0x4417361a, 0x5c4368c9, +0x8a5c1dcd, 0xd810f46d, 0xa0c2078b, 0x3dd4d0c2, +0x3869cb86, 0xf6301840, 0x409a363d, 0x291ecd42, +0x2b77012a, 0x81d2cb16, 0x010da850, 0x702f4767, +0xd000d1b1, 0x627b0c9a, 0x253a8c52, 0x3a68b18b, +0xa88b6ddc, 0xac151325, 0xeb548a52, 0xac8ebc59, +0xbe40292d, 0x47ea02a0, 0x084a1b60, 0x8b413eb0, +0x6fbea48e, 0xefb0573b, 0xd3392f55, 0x392972b1, +0xe107bd6f, 0x442572c1, 0x07a11674, 0x968b0517, +0x7efec41b, 0x05903b2c, 0x1e890673, 0x125fc661, +0x1020a97e, 0x7ff839c5, 0x8b5a74a2, 0xb1975ef6, +0x86e63435, 0x6cdd2fac, 0x06c03f5a, 0x19c129b1, +0x76cec3d3, 0xb3591d68, 0xdab03a55, 0x3d110d44, +0x82e63997, 0x759d8f21, 0x3458e865, 0xf02d3546, +0xf7e70025, 0xa8157847, 0xd311c101, 0x11540d01, +0xb3f11c1d, 0x0f1ab308, 0x5c09d0ac, 0xed60d8b1, +0x2901ff2f, 0x721e40a3, 0x721d0d0f, 0xe8265038, +0x9d207878, 0xeb2df535, 0xa9080a72, 0xb608ceb3, +0x3473de20, 0x22a38306, 0xe90b63d4, 0x1f7269a6, +0x3228865a, 0x1949e867, 0xa78a76ec, 0x30edc047, +0x142b7ee8, 0x0c5b7eef, 0xd0892815, 0x34688d2a, +0xa958e1bf, 0x00fa0e83, 0xbb83d693, 0x020297a7, +0x838b373f, 0xb30600ac, 0xf6135ab4, 0xf0e87807, +0x4955580a, 0xc7788fd8, 0x1eab0357, 0x8d20c3d1, +0x21bd3a55, 0x3966b198, 0xb5ab6e35, 0x221ed73d, +0xa50f1a2f, 0x309d0884, 0x3cff93f8, 0x70d9916e, +0x89a31bb6, 0x7cdef608, 0x22004044, 0x22f163a1, +0xfaf8231f, 0xe042505f, 0x146ea615, 0x1e92815d, +0xbf8d4bac, 0x4378b635, 0x04e316aa, 0x53505033, +0x91c184e8, 0x8530d088, 0x024d0ac0, 0x721edc2d, +0xc356e6bc, 0x63c9786b, 0x3f2ae816, 0x1b473502, +0x85b68cef, 0x57c0189b, 0x41985d99, 0xad1afd5d, +0xf05fe879, 0x9eb341a3, 0x021085ed, 0xc05e20c8, +0x07a283c0, 0xeab8bae8, 0x3bfc428d, 0x339456f0, +0x62e8059e, 0xa0c27cc8, 0xb804a4d4, 0x48f5fd38, +0x681858c0, 0x3be36db5, 0xab55b800, 0x6cba7d82, +0x4186f74e, 0xf41b4c4d, 0x8ed1a15b, 0x2c82b386, +0x44a1480c, 0xf30a4176, 0x3dbbd78d, 0x51e9e4a5, +0x78e9ea90, 0x45e10701, 0x52f16803, 0x3073486a, +0x3aebcc50, 0x363bade0, 0x07247640, 0x035cfa52, +0xb87b2f15, 0x9ab46858, 0xe9204064, 0xc3bddaee, +0x3b48f84e, 0x760a540d, 0x3b406634, 0xe865331d, +0xd873f000, 0x36f90a02, 0x1c05daf8, 0x3fe86051, +0x81308c24, 0x361ff703, 0x81d268be, 0x90920e15, +0xf0561bf0, 0x8969120d, 0x4ad78c4c, 0x2c451656, +0xaff053aa, 0x7510bfe0, 0x87878b56, 0xc14ff053, +0x89c13797, 0x878f03d3, 0xef6c5d05, 0x3b0f789f, +0xe61ca118, 0x93c0865b, 0x267256c3, 0x437d0477, +0x8f208290, 0x12771c01, 0x47520672, 0x18fdddea, +0xce990a77, 0x19014608, 0x2db7887c, 0xea9977f5, +0x25011f75, 0x4cddddd0, 0x18684803, 0x3a4fe8a9, +0xb789403a, 0x445b25dd, 0x76480339, 0x7a0d0016, +0xb8e748d8, 0xdad929be, 0x409c1808, 0xe02d2c3b, +0x0696df03, 0x458d596c, 0x854dbaff, 0x60849cc5, +0x00f05f5d, 0x00d91195, 0x20801d03, 0xe2205eac, +0x0d3103f5, 0xd8f7e852, 0x260ac20d, 0x95991a04, +0xf0882b14, 0xca098103, 0xba25dac6, 0x297c77d6, +0x211b7777, 0x305817b9, 0xd7011bfc, 0x47f80f07, +0x0b16d039, 0xc7e91778, 0xe424348b, 0x153bf80e, +0x090c73ed, 0x3bc21899, 0xbdb62c3d, 0x3b0eee47, +0x8b2e0715, 0x63fb0d0f, 0x8c15df91, 0x548d0f3d, +0x5423ff2a, 0x46c3789c, 0x72d7397c, 0x5ad0870a, +0x43157320, 0x2ba47b3c, 0xff4a1d9c, 0xd089f7ff, +0x4908683f, 0xb9301442, 0x5827ef89, 0xde89c278, +0x0833fb5e, 0x3a4f08ab, 0x341116eb, 0x1095ec55, +0xd75d3d81, 0x7f0d7fe8, 0x75464c45, 0x250a3549, +0xfaf50052, 0x00896b42, 0xa16638b1, 0x2d638670, +0x70ba2a7c, 0x74542977, 0x4b8320cc, 0x88346dd1, +0x75433408, 0xd61fbf14, 0x3f5780e2, 0x0a740609, +0x6382474f, 0x7a39e975, 0x6341cb68, 0xa46f99c0, +0x0bd0e938, 0x7e027a57, 0xc33c415d, 0xd0af068a, +0xe5fa4e3e, 0xf039a466, 0x2a24507a, 0xcfbaaf0a, +0x25c4b82c, 0x8504e652, 0x86677d81, 0x4ed62118, +0x30202108, 0x02c4ec7b, 0xf88952e6, 0x5f0bc04b, +0x3aa7e230, 0xe703d107, 0x61c6294b, 0x184301a4, +0xcc2e0141, 0x01f12188, 0x43259e00, 0x7708f4e2, +0x4f687dc1, 0x9896073b, 0xd2b883c0, 0xf7d29071, +0xfc1dee61, 0x89047318, 0x90032005, 0x7b8436b4, +0xf3cac358, 0x6c0513d1, 0x05f83e12, 0x763ccd1e, +0x50408b07, 0xbf03ffbd, 0x2e6ac519, 0x879c7c09, +0xee048c3e, 0x53048548, 0x37290070, 0xc06e03d2, +0xb8a2e5de, 0x2bd0152b, 0x981cd378, 0xf2e85110, +0x1ee6bff1, 0x75ffd2dc, 0xf21c5832, 0x9236f137, +0xad203333, 0xdccaa309, 0x3b99622e, 0xf3b92bc2, +0xd8ec3b16, 0xbe237d10, 0x89afea01, 0x226c2756, +0x6114dd7c, 0xd196c21e, 0x8d0f4bc5, 0x838ffae9, +0x8d4f899d, 0x7a837590, 0xd8750440, 0xa817c5e0, +0x888b5052, 0x8b11594e, 0xf95c3fc1, 0x51bd0e77, +0xf4dde857, 0xb61c7399, 0x63b900ec, 0x51b78c5c, +0xeca38061, 0xe3feb8b8, 0x8d62bb81, 0x0504170c, +0x50488be2, 0xad81f901, 0x040def56, 0xd640708b, +0x43b1146e, 0x52f86b70, 0x203b5156, 0xb7f9f678, +0x825c0325, 0xe7ca848b, 0xc3b73cce, 0x580cc607, +0x14f4171c, 0xf3b2bee4, 0x8c0f9db7, 0x93641774, +0xc7e425f0, 0xac19a805, 0x2b6c8309, 0xb80974a3, +0xf84609b8, 0xf029eec1, 0xeea0850f, 0xdba4e30b, +0x36007d1f, 0x131b0313, 0xee540160, 0x261facf9, +0x21350ef1, 0xfffb81ce, 0xe041d5f0, 0xbf053f6e, +0xb93dbe20, 0x9a57f62c, 0x10f91766, 0x379be817, +0x622e80b2, 0x46e12a31, 0x09b0e215, 0xd001b1ee, +0x3ca30aa3, 0xd07ba1cc, 0x6a469164, 0x3d5207e0, +0x78458bc0, 0x14f8e1e8, 0x3005fc69, 0xbf56f7c1, +0x245ba11c, 0x85e0315b, 0x9d5c83e3, 0x012f2c00, +0xa01bbfdc, 0x8d5fdac3, 0xd8392285, 0x9eb25576, +0x91995bab, 0xae575079, 0xa5d98907, 0x3aff06c1, +0xe25b85e8, 0xbf8df01e, 0x087b033b, 0x140343f6, +0x03b60f25, 0x030f7f7d, 0x80939e16, 0x0a54021c, +0x7fb1868d, 0xab7727b1, 0x4d742f8d, 0x1b0c07eb, +0xc256e030, 0x68673ca1, 0xa4d9802a, 0xa8be56ed, +0x4163ac0b, 0xe8d5c992, 0x0785017d, 0xd3badcb7, +0xd2858745, 0x9c5165ae, 0xa8f49f15, 0x35406333, +0x239f4216, 0x292d7cb8, 0x89900c48, 0x221f245c, +0x36dc21d9, 0x082a4e75, 0x090cd5be, 0x3208011a, +0x484f7b10, 0x791b8041, 0x96be00a3, 0x30b262ef, +0x396efadf, 0x0637c96b, 0xa8b33db1, 0x4d15b109, +0xe2a563b2, 0x61883572, 0xa41b2b72, 0x8bf3f63e, +0x33d1310d, 0x75c10919, 0x96f81c53, 0x783b1b18, +0x07355b77, 0xf142f773, 0x071d6db6, 0xc181d90d, +0x3b1b1d1f, 0x42c889ec, 0x64193a29, 0x5f63e181, +0x01884fa9, 0x292dc5d9, 0x6385eb3b, 0xa139de37, +0x03093420, 0xe7c62953, 0x1276efbe, 0xffd020d4, +0x20a3cc15, 0x80e24189, 0xc4f041c5, 0x7d9abc10, +0x909243d5, 0x86b41046, 0xeb2d1023, 0xf373f205, +0xf412b628, 0xc1f60b04, 0x680860b6, 0x21d0c060, +0x1afde61f, 0x0a0b6350, 0x5c859d10, 0x98205db7, +0xf70edb72, 0xb147c00b, 0x4d0605dd, 0xd2f70c0a, +0x9ae6f611, 0x3881336a, 0x1dd28402, 0x7b04013d, +0xea81064f, 0x3fda3407, 0x09c2e8b5, 0xe8197567, +0x991bcf44, 0xc8d89bdc, 0xbf0f7564, 0x03066815, +0xe15ffd0b, 0xb805491b, 0x1389c755, 0xc10be9f7, +0xc37dad82, 0xf8220cfb, 0x8dc3291f, 0xad8302be, +0x6cddadb6, 0x092a07e2, 0xe802a7c3, 0x1b6f57db, +0x030f8941, 0x0903ca29, 0xc05bd178, 0x18e2b6e6, +0x800225db, 0xda15e1d7, 0xc83902db, 0xc2294309, +0xb637141d, 0x5855e37d, 0xab050a79, 0xa1697f77, +0x70da8704, 0x80fd67a8, 0xe0ff543d, 0x3c74fa31, +0xf00273e8, 0xcc3be833, 0x0c741bf8, 0x68d04b1b, +0x03abe304, 0xf058eb95, 0xf40a8917, 0xfdba050b, +0x83156292, 0xcdff52d1, 0x54b6a53f, 0xce209132, +0xc54d3611, 0x348e6f52, 0x992deb58, 0xa92f5024, +0xdb1172a5, 0x8e141df2, 0x1d84417d, 0x9d30c573, +0x1a0fbdf5, 0x1c7203d8, 0x8511d492, 0xe82ef524, +0xc22a017d, 0xc1b6d3f4, 0x3980bdac, 0x28972d1e, +0xe377118a, 0xdf57b82d, 0x38df888a, 0x4341cec2, +0x207eef19, 0x740e13cf, 0x08018ae6, 0x8ac0be0f, +0xb9b16d08, 0xd2071513, 0x60ce5bdc, 0x200ed49c, +0xbf3c0389, 0xcbab1d20, 0x3053d68a, 0x50f4c189, +0x3984d705, 0x76651218, 0x127012e3, 0x7ffd3cfd, +0x3fb01617, 0x0122d5b4, 0x2e3a80d9, 0xa51b1b74, +0xc1207fb7, 0xce0908e6, 0x7e032147, 0xc12717ac, +0xda08fa3f, 0x1a0410c8, 0xe829c502, 0x421b2714, +0x00bad843, 0x61abab5d, 0x920a33e1, 0x6858e8b7, +0x3c30f85b, 0xd0147709, 0xa111b692, 0x0e2ad142, +0x761391d6, 0x03e2b5ec, 0x0bed2ee4, 0xe912ca89, +0xfc6eb7cc, 0x12c349bf, 0x60e402eb, 0xc0d964e4, +0xa80416a8, 0xaa5b96e1, 0x1ace5e02, 0xf6e872bc, +0x042d4d84, 0xe8c70180, 0x1ff7bb12, 0x17365076, +0xd1b0e0e8, 0xb1e864e6, 0xb09bda08, 0x60e6dff5, +0x5bd9ff81, 0xa06d164b, 0x1d89d91b, 0x0afbd7f0, +0xa1042d6f, 0xe2e80d3e, 0x102332ff, 0x8d9c436e, +0xbb8a184b, 0x1253e8a8, 0x00fbf7db, 0x98cd2342, +0x7415fb81, 0xd0acfb83, 0x750dfe30, 0x890ab302, +0x286d83d8, 0x7b8024d5, 0xb2c0950f, 0x54fe0c12, +0xa8ee9c3c, 0x89b58d0d, 0xf4eb29fb, 0xded8170d, +0x81f0f60f, 0x76fff082, 0x90e0bf05, 0x7b66164a, +0xe011a9e2, 0x910cd79d, 0x059c63ba, 0x0cbe06c5, +0x22d6b116, 0xbadd1f44, 0xc90f473c, 0xa1d8c9c8, +0x7494781c, 0x37d04e28, 0xc1825184, 0xebee6db1, +0x831982b1, 0x04648809, 0x387bb1f0, 0xe0f057b5, +0x730739d0, 0xb477b108, 0x2c384348, 0xf74b7204, +0xbd9ea70d, 0x810afe00, 0x1deb1764, 0x54b66cba, +0xa9d829ec, 0x206c0b16, 0x1ecd4a1e, 0x10724836, +0xbe85e326, 0x8950b741, 0x4104bcc5, 0x58c9c283, +0xceb61827, 0x1b76298f, 0x1013c598, 0x90ebda03, +0x78311508, 0xaf5546e8, 0x6789d068, 0x1fe1812e, +0xd9e820f0, 0xe85574e8, 0xed85c8c7, 0xfe1b8a40, +0x90024d0a, 0x080cb000, 0x945ec252, 0x75af47d5, +0xdc00aa4f, 0xc0763900, 0xfc3d4820, 0x1c22ac0a, +0x6f1c2ee8, 0x4425d8d3, 0xee00de2f, 0xb2210cd1, +0x0c86a21d, 0xce016cc4, 0x0cb706c6, 0x07aa1974, +0x0d1e0111, 0x704605a9, 0xf9a5426d, 0x9b105c07, +0x8abe17a9, 0x7614353b, 0x4613064c, 0x741d7762, +0x6c9c1405, 0x2eeb6c0b, 0x6e813a07, 0x29109b88, +0xcd14b0e8, 0xed57615d, 0x47720c3d, 0x8916eb35, +0xb1bdf7eb, 0x0a0510b1, 0x3117043b, 0xd1bb2b2b, +0x0c4f00fb, 0x7c392505, 0x31476c65, 0x561918ac, +0xe1297c8b, 0xf5de01ed, 0x09b5de18, 0x0bb5ffff, +0xa3184422, 0xaf6f190e, 0xf0c15c25, 0x2dea1d5e, +0xdac588f0, 0x6851e02b, 0x118061e2, 0xa33c3522, +0xa89a8076, 0xa1c5d421, 0xf81702f1, 0x83d9c28c, +0xf0e2ceea, 0xfd1083b8, 0x72528026, 0x59892b19, +0x08c023b3, 0x0442ae89, 0xa0dd3f10, 0x5d3e6c94, +0xb2c2217c, 0x44b60725, 0x3b244108, 0x761d9a51, +0x084c1889, 0xa2c79210, 0xb777e9ad, 0x31034727, +0x0d01fc40, 0x9a83a51c, 0x58a868e7, 0x762f8cac, +0xb56e39eb, 0x7d5dbc04, 0x0d03782a, 0xc746daff, +0xfbfc422f, 0x01812cf8, 0x8d0d3bd1, 0x3260c8c8, +0x08730d0d, 0x985162b8, 0x1cb6fe8a, 0xd981e431, +0x4fc09e21, 0x010e12d4, 0x1c9308db, 0x0160dd7d, +0x281a2050, 0x1aea5303, 0x2304ec19, 0x085c200c, +0x03ea4560, 0xe548bbe5, 0xbf604c82, 0x5bb9e822, +0xdbb42110, 0x930026fc, 0x6d042a37, 0xb8471a0b, +0x38bb8467, 0x35e0181e, 0xff419e21, 0xf0c6b0f0, +0x19f51d7e, 0x6035ff69, 0xf32a49aa, 0x1c4dbe29, +0xec35e823, 0x12516862, 0x02dc96e0, 0x257e8c45, +0xef9016ee, 0x0bc722f7, 0xc11e5c68, 0x5f3cf61e, +0xab646a15, 0x0e377834, 0x0b4b7ef9, 0x8c1e6f68, +0x5fbec374, 0x680b53c0, 0x536d1e7b, 0x02f148ee, +0x3ee80aa3, 0x3dccb86b, 0x12bd50c2, 0x57f00559, +0xdd3380bf, 0xe3653c27, 0xbecc0530, 0x3b889c0d, +0x77ccc131, 0xc01297ac, 0x9e683fc5, 0xc203121e, +0x34292907, 0x17fffff8, 0xb2d14898, 0xe53ac580, +0xd378a338, 0x08060581, 0x24326375, 0x6a951b0f, +0x0a952972, 0x40c37b20, 0x0eb0751b, 0x3c067b24, +0xfedc523f, 0x8d0b6138, 0x92920e43, 0xd528852b, +0x217503be, 0xba19061d, 0x9702a1c0, 0x8f8db606, +0x0520e83e, 0xd52bf45b, 0x183110c4, 0x6c1bac50, +0x4f01db3c, 0x8b54d337, 0xa30ca545, 0x4759551c, +0x54b1fdd8, 0x84682268, 0xfdaabb8a, 0x8d5be915, +0x5514d827, 0x0c25c538, 0xc5b087ad, 0xcb0523c3, +0x5b122f39, 0xe2c5f609, 0x4707a1bd, 0x23b8261e, +0x36d2f12c, 0x15461a10, 0xdbfe830a, 0xab4120f3, +0x062b8305, 0xc3ea4060, 0x27ea27ab, 0xeba2fb4e, +0xbc424365, 0x061e3c80, 0x05ed8168, 0xf47e055b, +0xb52d0604, 0x0745d7db, 0x06017e08, 0x7cc6a912, +0x715d76a8, 0x04150406, 0xf101006c, 0x03237a09, +0xe8fa3d68, 0x5ece5949, 0x04e39788, 0x2a136068, +0x2d8e0135, 0x788d101c, 0xd9897e22, 0x8f75b386, +0x0495043a, 0x49102434, 0xb36f17f8, 0x6ade2601, +0x1706681c, 0x82441b0f, 0xb442d792, 0xfa36bde1, +0x33cb002b, 0xa956503c, 0x020ddf41, 0x0d9f10ed, +0x14bb087f, 0x22ebbe7e, 0x096103b1, 0x474a9a59, +0x521d580c, 0x54b33c80, 0x53c72df5, 0x8d2420d3, +0x4506c6f3, 0x7eb6017c, 0x7d0379f6, 0x03006c03, +0xaa7e43c6, 0xc86c350a, 0x43c7fa24, 0xf8031804, +0x21067580, 0x53e82488, 0x434dfe55, 0x1c2d7109, +0xf6a16f68, 0x43e8e027, 0x3b5b1a09, 0x56e24542, +0x2a442da3, 0x9236555c, 0x518b100e, 0x9b026fd4, +0xa1a96e88, 0x2f34b211, 0x0a1969e8, 0x8db90377, +0x4229147e, 0xf867ff2c, 0x5b8b0776, 0x83024708, +0xdf8614eb, 0xcd8ad75f, 0x82477f35, 0x18c92c58, +0x44306bda, 0x0602d206, 0x7dee3f17, 0x87aca041, +0x1a6e661c, 0x28f1defb, 0x5440a366, 0x3c6a5653, +0x726c5067, 0x11b718bc, 0xe814182d, 0x3c9d7d57, +0x05087552, 0x6e68750c, 0x560ba244, 0xf60c8b03, +0x11631849, 0xe854450d, 0x6d158927, 0xf4787f15, +0x10503b0d, 0x47433475, 0x7e58c1d1, 0xb308aec0, +0xc2d8c01e, 0x8e5b3dc8, 0x182dea24, 0xb3acab51, +0xbd0b55ad, 0x450440e1, 0x9806404e, 0x93eb8c05, +0x1c22ab05, 0x51d60375, 0xfd58e0ec, 0x1cc0337e, +0x7e812e00, 0xd0c7708c, 0x15352519, 0x02c6a6a8, +0x0d1a1816, 0xb0e2ac44, 0x0585af67, 0x8649622e, +0x3ee55aa9, 0x9e84bd2e, 0x8bfd184b, 0xdc62decf, +0xca0000d5, 0x500646b4, 0x2536fff5, 0x68ddbb47, +0x1e6863e4, 0x9894e81b, 0x99da0b57, 0x1e401f85, +0x23c52030, 0x1d8b67bb, 0x07082205, 0xff120224, +0x3b0b8105, 0x8be93488, 0x36a3a046, 0xb702d7cd, +0x42007c14, 0x9c093b65, 0x0750dd93, 0x60349736, +0xab5508ac, 0x6c5a5f8c, 0x9d16e890, 0x3dbb0307, +0x7609375a, 0x5df5115b, 0x3d3407c7, 0x3f6bc51a, +0x1e665079, 0xa85bf48a, 0x7e0825b6, 0x120636a0, +0x1e1f4816, 0x5e006ab6, 0x7dbb8b68, 0xab9a210a, +0x66727857, 0x9f1639ac, 0xf6e2dbd8, 0x14fa4108, +0x4bba8f2c, 0x3b1db787, 0x83c1a166, 0x09a303d0, +0x0388c16d, 0xfd8ec160, 0x1d11d02b, 0x023885ec, +0xbd40e9bc, 0xb71bdd0d, 0x0ec15923, 0x1718417a, +0x08f6588d, 0x6125d114, 0x1fc486c2, 0x001c1443, +0x358817bb, 0x1d74051a, 0x060e7f04, 0xd9ad4cd8, +0x9e477bf7, 0xc64c2f6e, 0x7406f8fe, 0x0194e92d, +0x8db11e2a, 0x45862051, 0xe552b63f, 0x230b0dfb, +0xeb47b6ef, 0x27c6deb6, 0x2867268d, 0x70bad4eb, +0x056c2aa1, 0xbac3b7f4, 0x2b0edb87, 0xa900e9a8, +0xc00c2546, 0x3ede251b, 0x7783ad55, 0xfdda395b, +0x73742e04, 0x68103755, 0x1a588f0f, 0x700dd1f2, +0x297591b0, 0x077a8052, 0x22013170, 0x8ca48ac2, +0x775ba1e0, 0xaaa323cf, 0x6dd28aff, 0x2e7b4020, +0xf16939f0, 0xabe11bb1, 0x6bffcb81, 0x3b69107e, +0x8f198c6e, 0xc08d0f36, 0x0805854b, 0x9a227bb1, +0x1703081e, 0x7020687e, 0x81f9e4c4, 0x95212212, +0x46108f14, 0x008dc091, 0xef11affc, 0xe920ee21, +0xf6f3db08, 0x42849f6e, 0x75d0393b, 0xa1d3064b, +0x5ad15882, 0x5e02c1b8, 0x202f3c77, 0x73d6856a, +0x4f28c1cf, 0x80615806, 0x42da1ac1, 0xc04405fe, +0xd1829cae, 0x111066c4, 0xf80aa90c, 0xc046de1d, +0x37a1f6bf, 0x7464ecde, 0x0ecdc6ef, 0x206a4520, +0xc638e8b1, 0x3ffb4e21, 0x1aeb3f83, 0xf7006a24, +0xd07b084b, 0x120e16d4, 0x3b807694, 0x2f0c329b, +0x3c04d83c, 0x680984de, 0xd21f2525, 0x02862585, +0xf723f184, 0x3701b004, 0x2802b46e, 0xd8013c3c, +0xaa800270, 0x78c4b583, 0x29ce6e02, 0x871e5b08, +0x2011b0f4, 0xa8026fb9, 0x2c1b10ce, 0xac152a02, +0x1bfb640d, 0xe45c15ab, 0x0250b705, 0x463740db, +0xaa0c4308, 0x01c842c2, 0x009b6d13, 0x0d0290eb, +0x562167f9, 0x2f10cf8a, 0x37f14d3c, 0x5ca685c6, +0x0fab3a3d, 0x628dff75, 0x838a66c0, 0xaa2baf73, +0xc98af12d, 0x3ad17c85, 0xc14f87c0, 0x4353a142, +0xf3f7f9e8, 0xff6f7c6d, 0xe3008068, 0x15ccea6c, +0x83b313e3, 0xe964b945, 0x97723546, 0x8c6fb6c5, +0x5814248a, 0x235835e8, 0x608b7893, 0x1c7bad22, +0x63125457, 0x22c5b30d, 0x571920c5, 0x0ba0e4c4, +0x39aee83b, 0x36d8aa85, 0xd9664288, 0xa2a3588b, +0xa97ea0c1, 0xe83d6ebf, 0xd8f3c906, 0x181f6910, +0xc17874a3, 0x105cb416, 0x82a3f36b, 0x278bb120, +0x29c2f007, 0xce05dfe0, 0xba89c17e, 0x7ff869ff, +0xa09b117e, 0xc9f49451, 0x25057e44, 0x0005ca6c, +0x18c538d1, 0x3e2842f1, 0x000021e0, 0xa7096aad, +0xef8efbe4, 0x7eaa33eb, 0x04ec828a, 0x090ecc55, +0xf021984a, 0xf000883f, 0x2ecbc87b, 0xdb82ec81, +0x136c8ed4, 0xa297c8a0, 0x19fb04ac, 0xc4df3b7b, +0x08aead0a, 0xc613aea2, 0xe43b950c, 0x7608b0af, +0xcf2286dd, 0x2d024072, 0x3d04013c, 0x3f829544, +0xd8e8063e, 0x538fd83e, 0x2066bd93, 0x880fe827, +0x8b108318, 0x40031538, 0xdeea12e8, 0x443004a3, +0x3be06467, 0x20853684, 0x8474a467, 0x8147d822, +0x16ca51a3, 0xdd8c8cdf, 0x168aa0fc, 0x9c8db338, +0xba019024, 0x1d67dc25, 0x34a8680d, 0xc6169c27, +0xda861420, 0x8c499d23, 0xea7425a0, 0xd54104e8, +0x1ecf0932, 0xbf567332, 0x50284f60, 0x256d8cec, +0x21513753, 0xf0afedf1, 0xf9582cd0, 0xb16a436a, +0xf777e8ff, 0x63faa3b8, 0x6a46565f, 0x3e03e824, +0xf4d7e8c3, 0xd46ff120, 0xdf01c789, 0xc2e805c6, +0x2c7edba8, 0x3a8961b1, 0x0949b503, 0xd78103ce, +0xb29a8622, 0x76183f72, 0xe82b7bfb, 0x29fb35a1, +0xd47f2bc3, 0x01681f15, 0xa245f298, 0x86e81d0f, +0x050b49df, 0x31483d3a, 0xd60a7402, 0xe8446b96, +0x488512c0, 0x4c2138a7, 0x96337508, 0xb6101b1f, +0xa061154e, 0x167f338b, 0x05bb1919, 0x16c2ec2d, +0x4660683d, 0x43f0264e, 0x43919e51, 0x3a9d61d2, +0x1dbbaa1f, 0x8a4106d5, 0xec555c24, 0x26081d41, +0xe2a43850, 0x90943519, 0x0acfed43, 0x4421e241, +0x02b31acf, 0x5874bbc9, 0xea011017, 0x01e8a605, +0x0088abe4, 0xf68bd709, 0x661086ca, 0xac1e9df8, +0x74ac0fd8, 0x86f81245, 0xab00001e, 0x6032603b, +0xa88e2018, 0xb156dd1b, 0x242cc10d, 0xbe0f53b9, +0xf6032144, 0x8fe81e67, 0xb6fffff5, 0xb0ea5f18, +0x8001fc78, 0x7e13a105, 0x427080a9, 0x933db16d, +0x3ec329a0, 0xf80a41d8, 0xd31b4ac4, 0xb72110c4, +0x743a33e3, 0x40b31136, 0x02838b36, 0xb7ef9805, +0x00833803, 0x34586807, 0x8c0ac415, 0xef441d11, +0xb81d35ea, 0xa1cf1d11, 0xd050340a, 0x03d52602, +0x4dca934c, 0x03803846, 0x3cb71d99, 0x2bc1f0de, +0xe7bc59d0, 0x68496a11, 0x16b95be0, 0x243106e4, +0x389d4904, 0xbec10930, 0x45ce9f02, 0x688ff87d, +0x1a8e1944, 0x808e0e58, 0x6aa3d613, 0x23f78973, +0x081b1dfc, 0x35ff0432, 0xf459e82b, 0x213909c8, +0xc608e235, 0x62b5dc00, 0xddcf8e4c, 0xbb8e0f0b, +0x4dda237f, 0xb78de822, 0xba0c0304, 0x38e38e39, +0xd1755ebb, 0x021fe2f7, 0xfe832c26, 0x760b3d7a, +0x15fc3024, 0x2cccc481, 0xf0b26af0, 0x0c240d1c, +0x53c07ae0, 0x9b904325, 0x2d5b6d49, 0x88c58aa4, +0x82c01107, 0x83f67117, 0x124b14e8, 0x14e2553d, +0xe74e925d, 0x1616413b, 0x23e124ba, 0x21147850, +0x13c15833, 0x0cf31ae5, 0xb0d49615, 0x11270cd2, +0xc3e0af7f, 0xd4e8d120, 0xc0d8efb6, 0xc8750b15, +0x1fb68ba5, 0x9e290742, 0x206aee91, 0x3a80f3e8, +0xf141729a, 0x245a263c, 0xbfebaef8, 0x2e3b259f, +0x4ae9cf76, 0x1385ba02, 0x760d1e8d, 0xfcb7d1c1, +0xb7b5de09, 0xc1c3cf42, 0x0d099ce3, 0xc7bdc309, +0x110a9609, 0xe9d61d81, 0x0e2551df, 0x8d47cc21, +0x428a0e6a, 0xb7edc52d, 0x3c45bd0e, 0x2f81770a, +0x14770e52, 0x028b6ea1, 0x04c13238, 0x89c4fd02, +0x551c3fb1, 0x8ee65ce8, 0xdb460966, 0x66c74df6, +0x3f0645f7, 0x284c2c1a, 0x02205140, 0x03c94174, +0xfa7d1087, 0x84188a03, 0xe90cc528, 0xbf09f777, +0x458b3322, 0x05dc3d2c, 0xff0e8f32, 0xa837dffb, +0xef6e7c5d, 0x7410bb14, 0x8dbea13c, 0xd11df7fa, +0x8d592250, 0xa10e0174, 0x29c189a8, 0x80aeedf9, +0x6307098d, 0x170eeba4, 0x68581ad8, 0x370a8436, +0x8afc0efd, 0x47afbc08, 0x1eb52605, 0x6037f82c, +0x097d8063, 0xce5d7511, 0xf5358b54, 0xcb2c7452, +0x045c22c6, 0x15c2d686, 0x860b1ac9, 0xec6e8134, +0x8687b8ee, 0x7e839bfe, 0x892674a4, 0xf61c08d3, +0x74ebfde3, 0x475d6257, 0xb7eceaf5, 0x9f59c817, +0x601cce79, 0x4555566a, 0x9a54033a, 0x8e559e13, +0x066ebc8f, 0x6177582c, 0x6e892cf6, 0x2deefe1f, +0xd1620de2, 0x4c664dc2, 0xd88627c3, 0x2675e0b1, +0x1a183056, 0xdb921161, 0x81b90bb6, 0x3f018d7f, +0x00b389ec, 0xef22b9b3, 0x360ddd0e, 0x02edfb38, +0x56905d3a, 0x336fdbff, 0x494f19a8, 0xc5835616, +0xd8cfbf20, 0x1982c046, 0x21bf9279, 0x60c5b741, +0x0faf31a0, 0xdd18f157, 0x3e2d5766, 0x80e96eec, +0x6ab015fd, 0xfec43848, 0xfb30a146, 0xdf864fd1, +0x0d3a00b1, 0xbfded4c0, 0x8a187355, 0xb82c0715, +0x837a97fa, 0x4108742a, 0xd1384436, 0xf980f372, +0xb6cf52ef, 0x752445b0, 0xa201431a, 0x54d55709, +0x06d1541b, 0xd97dba04, 0x851c6f67, 0x0346bc33, +0x048d1a50, 0x5c102585, 0x13040678, 0x96400119, +0x5657f61f, 0x86c17f53, 0x5e1db3cd, 0x0819679a, +0x6efbd343, 0xe4991d3a, 0xd3434190, 0xf3feb00c, +0x89fb1116, 0x3c8df8f8, 0xa4360285, 0xe24ffe8a, +0x468ac83d, 0x763c3c02, 0x2e3cb002, 0x7cf56b39, +0x02d3a857, 0x4722a0c9, 0x62da186a, 0x5caeba23, +0x78ae704a, 0xad0a7cdc, 0x60570416, 0x1b6957a4, +0xe0b696a3, 0x53977432, 0x243d8717, 0x44dde460, +0x08ec09c5, 0x35c83c49, 0x013d8801, 0x5202369f, +0x1822c15c, 0x7bb9086f, 0xdc27ddb0, 0xe95d04c3, +0x75015986, 0x5c9f3126, 0x17f003c8, 0x04ee8387, +0xd0b74407, 0x304df089, 0x6ed23d77, 0x7663f357, +0x93a0e022, 0x2ca190d6, 0xa8926018, 0x501f6c02, +0xac400b78, 0x3335c920, 0x15cc3bc7, 0xa34056ff, +0xf4adb004, 0x351dde96, 0x81b7ba8f, 0x916e34ec, +0x84e31b82, 0xad52f355, 0x460d54c2, 0x6fa99a1b, +0x9caedd40, 0x10038aab, 0x4306b80a, 0xd4bf87e9, +0x800f84ba, 0x0d75cbba, 0x1d89df89, 0x87db2316, +0x1370e9df, 0x7517343d, 0x22350869, 0x7b633576, +0x381be025, 0xc83868df, 0x8cfd9d80, 0x34a416e7, +0x4bec3533, 0x032c73ff, 0x7b802575, 0x117b0301, +0x3d000002, 0xb53ec1d9, 0x3da9e89c, 0x488501f6, +0x12f54776, 0xe9e80975, 0xc04d01e6, 0x365f61df, +0x00000081, 0x35251551, 0xd97b0e75, 0x024c2e2f, +0xbbe960a3, 0xac5a752a, 0x09903438, 0x60323536, +0x6effb583, 0xc3263387, 0x1d1cf4ae, 0xa32ebf0c, +0x3ec3bfa0, 0xa3af006c, 0x01580fe0, 0xffb7f080, +0x2573ff6d, 0x8d2e7508, 0x6b200273, 0x39f50101, +0x66960eee, 0x373754b1, 0x87e24dd5, 0xaa556c0b, +0x03862002, 0x019e4870, 0xe872eefb, 0x353d1ae9, +0x0c932409, 0x9100f972, 0xb90efe30, 0xaa00dcec, +0x2b46363f, 0x50ac2f75, 0x0b06e801, 0xb95d53e0, +0x6a77e031, 0x6a50b2ff, 0x834ceb7d, 0x189b1b25, +0x854794f2, 0x6e33c080, 0x76059628, 0x8a80b128, +0x67906db4, 0x0e153bb5, 0xc36b061f, 0x7b1a91df, +0x3456eb21, 0x1e137581, 0xa708a7d8, 0xeb271e28, +0xfdb69f3c, 0x2a33721d, 0x2375962b, 0xbd98347f, +0x52572320, 0xd7631934, 0x03d54b8e, 0x64829b02, +0xd13d89fd, 0xdba43b81, 0xacc52c05, 0x22eb064f, +0x487612d0, 0x4a423019, 0x412daace, 0x0d4ac085, +0x033c5b65, 0x18323399, 0xa7d10437, 0xfd20a091, +0x11874ed0, 0x23a7811a, 0x8e5494a9, 0x24106409, +0xd7a10e09, 0xe804c65c, 0x86eb1c17, 0xb9057e07, +0x885f3807, 0xd36bc0be, 0x3f66e8e3, 0x1c71c7ba, +0x06fc01c0, 0xf799d1f6, 0x8a3629f9, 0x9104d420, +0x178ad49b, 0xbfc0c941, 0xd04dfb50, 0x83c8f541, +0x76015478, 0xb4102b19, 0xc6c53247, 0x715471f7, +0x8f7fffbb, 0xd519c7ca, 0x68703922, 0x05722a77, +0x77645839, 0x8b20bd23, 0xc1186efc, 0x35305842, +0x13644103, 0xa5e86851, 0x72724be0, 0x51227706, +0x8107e81e, 0xca8c5a81, 0x6da82770, 0xff270761, +0xa7c41152, 0x0a416cc2, 0x5028a516, 0xb13f2971, +0x09530d74, 0x136c2840, 0x6446e830, 0x1388c911, +0x0d059187, 0xbb0c38a3, 0x84fd51a9, 0x00bdcd83, +0xc5393001, 0x460b1f73, 0x0e2461d0, 0x11eb01e0, +0xddeffdd6, 0x7239ad7f, 0xbd117760, 0x0a775c5a, +0x5c582bcd, 0xa860701b, 0x52ac780f, 0xfee6e89d, +0x58aa1853, 0x144331d1, 0xfd631d45, 0x3074de82, +0x797bb172, 0x0168cf12, 0x7689f59a, 0xc10fe2d4, +0x58a39dff, 0x82449d98, 0x59c5b828, 0x5a2c7d74, +0xb58d20ff, 0x23e1be88, 0x89b6fbff, 0x50d829e8, +0xeb78224c, 0xe8060174, 0xb216d698, 0x6f437a07, +0xdd75f339, 0xc5f218d8, 0x8b9d9a2b, 0x33eaca6c, +0x8c0a3c2c, 0x36e838fe, 0x85dc224c, 0x48483039, +0xb21ce989, 0xeb80fecd, 0xa1df11ce, 0xad6378f8, +0x7070721c, 0x1abd2912, 0x01a2b05a, 0x3c0668df, +0xfe2b3f00, 0xfe94e803, 0xb8977987, 0x68911200, +0x620b6259, 0x851bea3f, 0xff03e01d, 0x9f644c40, +0x8aaee8bd, 0x832c8554, 0x80b01c7a, 0x02471edf, +0xc7784288, 0x46f47442, 0xc3ef7808, 0x90c4a8c5, +0x1f260a66, 0x780e9f42, 0x95b4aa2d, 0xe0371282, +0x0ced8c20, 0xde30497a, 0x5f741734, 0x3751de82, +0x3c61380e, 0xdf0010b9, 0x2ac9ba2a, 0x413c3c38, +0x76c13928, 0x801e25db, 0x4c412a24, 0xf0456051, +0xd4ed0aa6, 0x1f1cd283, 0xb763202b, 0xda11d86d, +0x38408c3d, 0x512ae8d1, 0x800d051d, 0xd0e70974, +0x77058351, 0xd0293445, 0xf70a1850, 0x37f6e223, +0x116dbee8, 0x29d54fa8, 0xcfaa7007, 0x04dfb144, +0xf8832754, 0x2d2274fe, 0xf63a2901, 0x9021682f, +0xabaec510, 0xaa60d498, 0x6248d891, 0xa05c1067, +0xcb40644c, 0x8bc43175, 0x91ea408a, 0xda8c513a, +0x83a18865, 0x688e7ad8, 0xe1945935, 0xed7b1e58, +0x3a3f439d, 0x93e83fb9, 0x5ed0c2fd, 0xe1d588cd, +0xb20e4326, 0x323479af, 0xdf87c060, 0x2d747060, +0x1886a868, 0x1a86ba0d, 0x442c2f16, 0x7aba4885, +0x6aa9dd97, 0x3c78ab20, 0x423520b3, 0xa0efc8f5, +0xa854020f, 0x9e64c586, 0xc52ebe10, 0xa1827036, +0x5e448c8b, 0xcc770f99, 0x0ca10438, 0xeb048773, +0x8d872040, 0x25902510, 0x0f7cfa73, 0xeb060232, +0x6bbaac1a, 0xb8a4ee0c, 0x910c7ea4, 0x0ea2920a, +0x5028d8ef, 0xe7dc8c3f, 0xd8347b44, 0x742bcafe, +0x722d0405, 0x1b6f08f4, 0xf00c903c, 0x442436a8, +0xa0cd2024, 0x513a6433, 0x1454cd78, 0x01bd2e88, +0x203546ea, 0xf278cfbf, 0xc526930b, 0xed77c80f, +0x7cebd819, 0x289740bf, 0x2b083466, 0xd114157c, +0xe2a75005, 0x230ee40b, 0x54ab7fe0, 0xe021ac09, +0x502d6e03, 0xc15149a2, 0x3d17e0eb, 0xa36b95e8, +0x3effc620, 0x94744902, 0x72381d39, 0xb83589d9, +0x6a91f797, 0xa3083ec0, 0x9f3097b4, 0x767a4e94, +0x1718a649, 0x909aba98, 0x1e1e3a20, 0x7cdf8b9c, +0x4bdd6c1a, 0xba6331c0, 0xfa81d10c, 0x12730524, +0x56fa8da5, 0x47753239, 0xaf4b0b8b, 0xa47b18dd, +0xb938eb5c, 0x7ed27ad3, 0xaa5f6f2d, 0x3c2d4645, +0x051e75c8, 0xb002c86c, 0x75d44fb9, 0x1c503a17, +0x00c80916, 0xdf7b7ff1, 0xeb08420d, 0x4a39416b, +0x36d37f10, 0x2aacf442, 0x9caa7255, 0xee906953, +0x7a46074d, 0x08e9c118, 0x71043070, 0x212864fb, +0x74945439, 0xa2564b1b, 0xcd1459b4, 0x015f63b1, +0x0b26cb81, 0x4d1bc159, 0x2c825c18, 0x13002b76, +0xd6c00b10, 0xa9441e60, 0x11808d1c, 0x78db70dc, +0x4640851b, 0x1d1c52db, 0x1dcf1bb7, 0x1a58081a, +0x00197003, 0x1da8dd2b, 0xc60eed1b, 0xdbf6f8e0, +0x5b7f7423, 0xbc548723, 0x42c6441c, 0x8b19031a, +0x8618c158, 0x3efae7df, 0xb1622ef4, 0xfe81f3e6, +0x9187e8fe, 0xa8ef6083, 0x7507c32d, 0x6f4e4913, +0xe878ce2e, 0x0b0d2396, 0x890f9a51, 0xc0180a59, +0xb3a94850, 0xe9341729, 0xdfc6f31d, 0xb0118741, +0x32bc013d, 0xc0e0340f, 0xe8d73df8, 0x6bd30406, +0x0466bace, 0xba08380a, 0x2a6ae89b, 0x18262057, +0xdb6054d6, 0x209f7144, 0xf5055022, 0x7bb811bc, +0x64032cc0, 0x28c00ce8, 0xebb12ef2, 0xd75a920c, +0xdc5a88aa, 0x6d4b88f8, 0xe5d0d117, 0x9d5b0289, +0xba59a68b, 0x06426363, 0x57302062, 0x8381f0ed, +0x3026f2c1, 0xd6771d07, 0x8f148afd, 0x391d146a, +0xb1183c80, 0x644b875c, 0x1667be0c, 0x4e247f11, +0x191f56ba, 0xe283e228, 0xa81174fc, 0xe80eded6, +0xcc0d7401, 0x338bd089, 0xbe86f0f5, 0xfe24c6c1, +0x05cc7e24, 0x3d6a5317, 0x3a1b740b, 0x50190216, +0x5d6e1a04, 0x4488685b, 0xb1173639, 0x4f2b1f19, +0x3d3c6486, 0x284f448a, 0xccdbe10c, 0x4327eb18, +0xc7849ef0, 0x86904770, 0x4709fc6f, 0x06b0ff81, +0x82708d42, 0x002c0e4f, 0xeb402df3, 0xa7d506b4, +0x6b435c43, 0x1d4d7782, 0x8316be66, 0x39c405c8, +0x1cc26c21, 0x201874b5, 0xec83ac26, 0x3fdd6c80, +0xa00d1805, 0xb09bbc21, 0x1f053f02, 0x1c401677, +0x82a0353b, 0xea053014, 0x0e410c23, 0x1c5717f8, +0x4167cd66, 0x47d3462a, 0x00dc18a6, 0x0d073e35, +0xf25bebfc, 0x60dc50be, 0xbf06e0a2, 0x578d4175, +0x8396d80c, 0x3a529f29, 0xa1045498, 0x47e02a9a, +0x104cf54f, 0x2d59f484, 0x27678907, 0x1beb0329, +0xd609f04c, 0xd9c30b40, 0x48bf783e, 0x024828c9, +0x6036f584, 0xa774b185, 0x2bd2e510, 0x5607266c, +0xc914276a, 0xc581e45e, 0x20fe17d4, 0xecc5428b, +0x2e9a16c0, 0x36dbe376, 0xea0c3d62, 0xa5f00605, +0x1f8e6c04, 0x21daf7c2, 0xd0093fc2, 0x861e4fa4, +0xbe5c3af4, 0xcc580030, 0x0e616c06, 0x54540688, +0x20d4bb6b, 0x7d0eba55, 0xa928d384, 0x0d3a6603, +0x1fee289f, 0xc16a8ecd, 0x7f091905, 0xd80c9ec7, +0x6ab925b1, 0xebc82534, 0xcdd20323, 0xe90c27fe, +0x14244a88, 0x1ad8efa3, 0xe2dc4e27, 0x3f0c0264, +0x77605d76, 0xce80bdae, 0x0b2fbe1e, 0xb72e5250, +0x74326019, 0x58342f0a, 0x817b1ddb, 0x9e74f809, +0x318d4061, 0x1c2d5052, 0x4601b019, 0xa377075c, +0x1861c503, 0x888fa772, 0xbbc0e940, 0x03650319, +0xb323e25a, 0x01817d73, 0xb19ecf18, 0xc3140537, +0xe2721d10, 0x9044b885, 0x5ed0cd80, 0xba418024, +0x036832bf, 0x7e0a2c90, 0x85821c14, 0x5aa715be, +0x6d75ed8c, 0x0c063724, 0x52fb1a3b, 0x20aa15b5, +0x830a857b, 0x8f151003, 0x2a05c27d, 0x7f3b81d5, +0x37038b61, 0x8ba97d8a, 0x7510463a, 0x462b2dd2, +0xdb6fb820, 0x7007764e, 0xa3661693, 0x6dcfc058, +0x89024d41, 0x80560c15, 0xbc420ed6, 0x50311474, +0xbf68a918, 0x5389c0f1, 0x148c176e, 0x4cf12b1c, +0x017adbd5, 0x2c1470cd, 0x7211c8c6, 0xff9001f6, +0xc8c9040c, 0x1b183245, 0xef833904, 0x20d41d76, +0x0b43ff01, 0x081cb143, 0x1c0743a5, 0x285d6c20, +0x763fa702, 0xcb209f10, 0x2625ec16, 0x223e10c4, +0x044a691c, 0xf608092e, 0x1dba4655, 0x4618dad4, +0x06060904, 0xc613a87b, 0x841e08b2, 0x131b08bd, +0x1c708432, 0x32201953, 0x93921127, 0x6c2168d4, +0xe28fd530, 0xea24b48b, 0xeab724bc, 0x8608d4bb, +0x0802e810, 0x661bf125, 0xcc14fa85, 0x0788068a, +0xa051e947, 0x101115eb, 0xd68a1dbe, 0xd30c2d9d, +0x4613b156, 0xb0f6f61e, 0x090ab0b1, 0x2e40f676, +0xcc180175, 0x7305fe9e, 0x848b4575, 0x06832b24, +0x1bdd7b0f, 0x3b80186c, 0x735f6578, 0x14ac8a07, +0xeb039b63, 0x1a03700f, 0xfa607070, 0x752943ee, +0x023ae9da, 0x6c7b8c69, 0x28e01a84, 0x23bd1c51, +0xf6110975, 0x5ac3dbd8, 0x756c0d46, 0xeb461708, +0x7bfe0c13, 0x7568fd9b, 0x170cb90e, 0x04b1030a, +0x3c20c891, 0x4eca7578, 0xf97e17d9, 0x91137e1c, +0xef1211eb, 0x875a1636, 0x7cade2cd, 0xc60e7472, +0x76f52c45, 0x453000fb, 0x5843d088, 0x85450988, +0xc379a7c9, 0xfb4f040f, 0x808acfd8, 0x7fbdab2e, +0xd0096fff, 0x04e9831a, 0x5ce9e879, 0x0f649f01, +0xfd52a485, 0x71d64620, 0xeb705e17, 0x20bf7715, +0x79311681, 0x452d7309, 0xb81f70f7, 0xeb894f11, +0x210ab903, 0x25036e05, 0x8a1c05c8, 0xb7b77003, +0x55886d5b, 0x6667b870, 0x256cf700, 0x2644b777, +0x038b79f7, 0x3202fac1, 0xa0b808ff, 0xbe75355d, +0x39ff558d, 0xc4f86fda, 0x18c31212, 0x026d0abe, +0x80430b88, 0x4ab7c23d, 0xe9f17712, 0x75404caf, +0x55fd8c46, 0x9f2c7133, 0x76d88b03, 0xa1e17722, +0xb6db0fc2, 0xf23f68a1, 0x40a03a1d, 0xc5631255, +0xbfb784a9, 0x77240b00, 0x64eb4de2, 0x3d75214a, +0xba854f4d, 0x06538da7, 0x92e52088, 0xb1926004, +0x4368e30f, 0x563b8641, 0xcc6ba5c2, 0x63224172, +0xe6f13075, 0xeb5d1fde, 0x07068a06, 0x73eb9094, +0x3936f125, 0xd12a3f85, 0x46db7224, 0xf80661f6, +0x671885e7, 0x07c6032e, 0x2d80c1dc, 0x842bf8f6, +0xd46c270e, 0x17b80424, 0x13aa9ec0, 0xc4e82c31, +0x585eb4fc, 0x1b304447, 0x0a19aab8, 0x732b4146, +0xde206dcb, 0x1b5c569e, 0xcdb200b0, 0xfa378a30, +0x1693be97, 0xae844647, 0x74d28426, 0xd1d03822, +0xef97c188, 0x03c6137f, 0x8820488d, 0xf6d188c8, +0xca4a0bc2, 0xfa66a038, 0x4b034f52, 0x02cdd075, +0xbb15260f, 0xed5f5eb5, 0x2b6360ee, 0x028acbfe, +0x41018842, 0x5b6df6ed, 0xa92c3fda, 0xde89e6c6, +0x8ffa834a, 0x15bdd46e, 0x038820ce, 0xbdf02343, +0x82975e5b, 0x543de9a6, 0x742ed34c, 0x9af6b006, +0xfa344282, 0xea484b24, 0x5e1722be, 0xd6484c5f, +0x005b036b, 0x4e2c2719, 0xd2ec3d2c, 0x4912741f, +0x7ec60575, 0x75110aeb, 0xc16fb6ee, 0x56a16382, +0x1a2ac388, 0xc558db18, 0xa527d7c2, 0x5fc37ef0, +0xbf068055, 0x20103884, 0x246d683f, 0x40fb7928, +0x3008200f, 0x5c30233b, 0xfbb121c2, 0xdf00807f, +0xd1f7aef2, 0x19048d49, 0x5c480a35, 0x6fb83040, +0x45daf773, 0x806dec68, 0x53c88939, 0xb1bf11f2, +0x20058e12, 0xf461050b, 0x2c684929, 0x1047c888, +0xdc11371f, 0x8925b800, 0x8a136cf2, 0x3dedfb08, +0x740a3af6, 0xebf6db08, 0xd84d0605, 0x404309eb, +0x10e0833b, 0xd889dbfb, 0xaccf59d1, 0x72d1da23, +0x0c62da89, 0xd8d8d837, 0xe72b1164, 0xb36b5b93, +0x322fb7e8, 0x8b0ff985, 0x0335f41d, 0x0d502dc8, +0x708640fa, 0xb57778d1, 0x4dc4c5ad, 0x05c711c1, +0x3dd0231f, 0x1eeb0484, 0x089d8c21, 0x0133e0ab, +0x67047198, 0xaf622a13, 0x7b8d26a3, 0xb0e876c9, +0x3019531e, 0x48445734, 0x892f2c76, 0xc2f0ba06, +0x61570461, 0xf0ae0c13, 0xbc287b02, 0x5b0c1a0b, +0x2c9b0424, 0x08243746, 0x30c152d6, 0xa1689426, +0xc6db4570, 0x02139811, 0x98c56e01, 0x43e55f84, +0xef754e41, 0x1a40542f, 0x90a36e0a, 0xb4210fe2, +0x8b80c857, 0x78a595b8, 0xa1a6f175, 0x6e7c2069, +0x1829e55c, 0xa3b0f1e7, 0xbacd891d, 0x88eb3a74, +0xffa74034, 0xce890694, 0x187ce939, 0x4b85554e, +0x24a88c5d, 0xd2d2f6a8, 0x68a458ee, 0x84e87dc2, +0x631fa657, 0x6649302b, 0x8a20172b, 0x41420142, +0x38bfbc68, 0x0bebd089, 0x19b4b216, 0x3f140d14, +0xaf8acf0c, 0x77010fe8, 0xc03d8372, 0x07e2168f, +0x02ad0cb9, 0x3d8053eb, 0xa08160ff, 0x53756703, +0x06dc45d4, 0x331157ab, 0x26409700, 0xc82c8f78, +0x8416a301, 0x7d662ac1, 0xd97b0a8d, 0xb00c5120, +0x5d025414, 0x8db2baae, 0x305f4076, 0x76e14480, +0x041ae845, 0x105524aa, 0x51600c28, 0xbbe80924, +0xedb63801, 0x2db8230d, 0x79e807b8, 0x682141a7, +0x7dbbc1fe, 0xe80957df, 0xeb0bfeff, 0x08ff8414, +0x12b73e80, 0xa80d0a4e, 0xbb75d889, 0x185b4062, +0xcbe4bb60, 0x0dc822bf, 0x9549d0e0, 0xb441b1ff, +0x9d0699a5, 0x0dfc5710, 0x7c964280, 0x08eac166, +0xda17c589, 0x0ad958f8, 0x1e1a5338, 0x31741838, +0xc03b6c62, 0x068847c7, 0x0ac7ad18, 0x4c830942, +0xb5bcae0e, 0x3b1b4216, 0x88e88932, 0x60620b55, +0x620000c5, 0xd2072362, 0x03177d05, 0x2765850a, +0x08300873, 0xc2382d5b, 0xe9d815b6, 0xbb5b2dfe, +0x4ae2012d, 0x82248d26, 0x1b089b08, 0x2d454773, +0x16d95a11, 0xee2d175b, 0x6fb03b23, 0xffcf0b47, +0x681037ff, 0xc9520105, 0x8848fddc, 0x69f64c83, +0xe90c2ead, 0x553d1bcd, 0x0a43efbf, 0xd0b153d2, +0xe88fe00d, 0x032bc189, 0xee798366, 0xba08b1d8, +0x796c270f, 0x462aa2e9, 0x41e47345, 0xc6025104, +0xe3b83687, 0xba090d2d, 0x7b80c029, 0x1515f403, +0x4de93bb9, 0xc2220406, 0xbaec152b, 0x34114a08, +0x067f0417, 0x5472d00c, 0xda86140e, 0xb728e06e, +0xaf28eb43, 0xff340a08, 0xb82d756e, 0xb8260606, +0xdc1f8035, 0x3a0846df, 0xc63c0c84, 0xeb0ee929, +0xf8225c0c, 0x16eb8e65, 0xa23a5156, 0x23c17fcd, +0xf1e92225, 0x070300c7, 0x34050984, 0x9cfca96d, +0x32094d05, 0xb0029c2c, 0x5f50b14d, 0xfad54f1c, +0x422c1023, 0x545b07ec, 0x0ae4af4b, 0x4a5e548b, +0x04c0a174, 0xbc288a99, 0xb3705810, 0x0b2c75a5, +0x07dc263e, 0xc1a36150, 0x12807343, 0x06ec59b5, +0x8b818500, 0xd972cd70, 0x0c852ad8, 0xa1161c13, +0xa01df758, 0x2c453518, 0x163f2e39, 0x30f195b2, +0xa6290001, 0xb01c600e, 0xfb85c445, 0x7d952391, +0xcc79195b, 0x7267ffff, 0x26b16e32, 0x35355fbe, +0xa37d77fb, 0x3e879be2, 0x8d4e757e, 0x6bae244e, +0x022a6c2c, 0xd1598b1b, 0x23560703, 0x05069a16, +0x3bff24f9, 0xdd0a17e1, 0x24880807, 0xc11a5139, +0xae4108e2, 0x41b52bad, 0x0b208a19, 0xdd630934, +0x0abe809e, 0x0f790dfc, 0x2329eb05, 0x53ddd6c0, +0x501f7502, 0xcd031003, 0xd7c35c07, 0x09080374, +0x04cd0b2a, 0x9017a41e, 0x27492d10, 0x07653057, +0x37fffa85, 0xb3c137c2, 0x8690496a, 0x1209f5b0, +0x83079680, 0x349880d8, 0x1a7bab16, 0x02726c45, +0x04611007, 0xde980049, 0x041830ed, 0x0ec36b62, +0x149fa2a7, 0x6b6b0f9b, 0x000001c0, 0x1014058b, +0xbbb79c3e, 0x0e6ea7a7, 0x02b00f03, 0x7f04513d, +0xd00e800a, 0xe913574f, 0x210ff672, 0x3704d9a2, +0xca6bc564, 0x5460d9cc, 0xb6101822, 0xe4118ecf, +0x4de9104e, 0xc3010268, 0x336c82b6, 0x33375642, +0x6c548714, 0xeadee94d, 0x4d66e906, 0xa939152d, +0x30581606, 0xeb40c16e, 0x08da24a1, 0x77c78d7d, +0xd70eb506, 0xf1ff12c1, 0xfc8b1c54, 0xd49005f3, +0xd9682b47, 0x1210f117, 0xb231004d, 0x7e160c01, +0xa5e1564d, 0x2d3d14f1, 0xebc21f74, 0x7f06c7df, +0x0d003d09, 0x3d1beb0b, 0xdd4a5b3d, 0x12ebe182, +0x0510b82e, 0x28b5c002, 0x0305e876, 0x76898ef8, +0xaf7fb0e1, 0xf6ece856, 0xeb5695e8, 0xb070fd44, +0xc9957e08, 0x2d5dffff, 0x49d984c9, 0x000d3d87, +0x1c061078, 0x62da1256, 0x710a950e, 0x576460c0, +0x63f82eba, 0x5681c080, 0x4a85ad04, 0xf8d535da, +0xf7ff6a3c, 0xbe8eb735, 0x0266dd60, 0x3b778bf8, +0x362aca05, 0x1a743e11, 0x78d88364, 0x1ba31c5d, +0x62b60aab, 0x3082ee10, 0xa1188a83, 0xadb11e83, +0x731154e8, 0x49b74413, 0x00080891, 0xa0ac7602, +0xf4c01460, 0x0376adcd, 0x613b073d, 0x89660e36, +0xc10fe83c, 0x669eb822, 0x1b507854, 0x9a6b1ea3, +0x90891218, 0x0e1ce394, 0x0608c402, 0x6574aa98, +0x246cf09d, 0xf5ff9c05, 0x6078904e, 0x5f5b243d, +0x4af6fa8a, 0x034535d2, 0xcc2d2cb2, 0x4849d042, +0x2800a032, 0x0ec3f788, 0x75abba81, 0x80828d31, +0x86bc44fb, 0xdcad8247, 0x7e099882, 0x0c3aa984, +0x90820fff, 0x80b30684, 0x681b8bd7, 0x08f0d84a, +0xccdbc650, 0xa7403e18, 0x7661910a, 0x0e1a242c, +0xf9fd935a, 0x09260204, 0x04f306e8, 0xb905bb29, +0xf451ff2a, 0x0980e6f5, 0xac607600, 0x72216229, +0xd438dd83, 0x58a91b1c, 0xa33b3da2, 0x87623973, +0x7439457d, 0xe0a78b2b, 0x26cdba4b, 0x53f3f35d, +0x08949801, 0xfca47456, 0x425c001c, 0x14b01847, +0xf5986174, 0x4021f2fc, 0x5efa7953, 0xd1165302, +0x559d362d, 0xf58686a0, 0x58458f18, 0x968b7cdf, +0x83081282, 0x1df06131, 0xda434094, 0xb8683c05, +0xcb24e478, 0x1525c84e, 0x33199f0c, 0x1a4a6306, +0x76f4ff16, 0xb2ec2d79, 0x986a0001, 0x077a600e, +0x7cb77986, 0x24e9140b, 0x0ca41bb0, 0x8c13c716, +0x8e42361d, 0x3c1b8903, 0x8a10ae8b, 0xb620898d, +0xe91a7960, 0x9b1899ca, 0x6b607e08, 0x3b985725, +0xea240924, 0x6a762905, 0x40280b18, 0x45c96162, +0x9016b143, 0x119a029f, 0x6b1a9450, 0x8d3b1551, +0x222b40c2, 0x261863ff, 0x942f011a, 0xc40148f7, +0x24c41162, 0xbe2fc098, 0x478b686b, 0x018b840c, +0xfdb81d45, 0xf01e6f95, 0x47b0ee83, 0xde9ead10, +0x7630c071, 0xf0390ebb, 0xa3064173, 0x6aa9142b, +0xcf121398, 0x3901f85d, 0x518d5610, 0x81555208, +0xdd587df1, 0x0e73af44, 0x5bf0bbbe, 0x3a42c05e, +0xf335c421, 0x08aa5196, 0x782a7823, 0xea23a02a, +0x7ac7c352, 0x5304d5fb, 0x3102a494, 0x09eac011, +0x4f00ba70, 0x20bf5b08, 0x26c508bb, 0xb7f2d95b, +0xbe231c23, 0x460b8de9, 0xc789de0a, 0x5fec43aa, +0x15bf05de, 0x0f1d1108, 0x6a66d1be, 0xc34e5ec6, +0xd3fb811c, 0xbc183142, 0xebcd377e, 0xc81ba0b1, +0x56e846d9, 0x6d100e0e, 0x450c8b68, 0x40f09481, +0x387d534b, 0xc71e8d53, 0x0adc109a, 0xc7bc85c8, +0x10559149, 0xd0014446, 0xb450aef4, 0xb72876a4, +0x412ece46, 0xbea8fce0, 0x928a05db, 0x3911908d, +0x11c7bb25, 0xfcc38128, 0xa1f1dbfd, 0x532185ba, +0x88020324, 0x62eb42a2, 0x0306e701, 0x1161a144, +0x34e1df4d, 0x6a84160f, 0x10077b80, 0xd0596aa1, +0xa11423c8, 0x75d51874, 0x7768fd11, 0x2cd6ef9e, +0x1486b144, 0xe644145e, 0xe81876e7, 0x00151984, +0xab1b9104, 0x3a8d5a75, 0x9e186b87, 0xe412da0a, +0x7e41480a, 0xdc54f444, 0x432d757a, 0xd8624775, +0x0e08d485, 0xc10646df, 0x3474aadd, 0xecb91f04, +0x37778f52, 0x0608a4e4, 0xfa81040b, 0x5281ed1c, +0x562a73c1, 0xb0a76d53, 0xeefdc482, 0xf0b04997, +0x18075b7c, 0x86073d84, 0xd2d67c2e, 0x4e7f76db, +0x092d218e, 0x673982fa, 0x9a637c15, 0x012be823, +0x7c60d076, 0x0d4b1f6c, 0x03ed99d7, 0x40b05297, +0x6312586a, 0xbb0211f6, 0x1d03f389, 0x05bb89c0, +0x974a510b, 0x94a16401, 0x1686eeb8, 0x25e89807, +0x5ef911bc, 0x2dd9afbe, 0xe1048b6e, 0xd713b2a6, +0x90543909, 0xe82aeea0, 0xa0e8be13, 0x3f16dd0c, +0x1c0e48d6, 0x99d8e405, 0x945550d4, 0xb2f02551, +0xf016beb8, 0xdcefbbbf, 0x345091d8, 0x11127358, +0x084c19f0, 0xc0833d83, 0xd85b3860, 0x1416a781, +0x598a1429, 0x3b7148c1, 0x66dd88ad, 0x2f021afc, +0x231012f8, 0x02d8f3db, 0xc48f0800, 0x14110800, +0x8d19c408, 0xb3567fd1, 0xb77fbcb1, 0x66a8d6c8, +0x08810dcb, 0xa3f7898f, 0x9201a811, 0x039cd25f, +0x56d9ea15, 0x015005d1, 0x2d8c8c08, 0xe92c5b63, +0x0708a511, 0x36d8f6ad, 0x0d7328f2, 0x0d16ff0d, +0x2304297f, 0xf2a5d8b7, 0x080dc184, 0xf20baa8c, +0x116d8add, 0x84ef08c0, 0x2a3c36c5, 0x0f36ecf2, +0x0801e40d, 0xa15fcd8c, 0xe055b6c6, 0x284d1108, +0x731edb13, 0xc3a73023, 0x04577f30, 0x6dce0d20, +0x201e647b, 0x1404207f, 0xd801ee0d, 0x08dc8db7, +0x1115d48c, 0x24d73bed, 0xdb60f3db, 0x08120d22, +0x2301f88c, 0xeb1a1111, 0x0825236e, 0xae280219, +0xfb64710d, 0x084784da, 0x2d0d32c4, 0x5b91a235, +0x33168c08, 0xb7d8cb15, 0x2e70088c, 0x750d7736, +0xa8eb064a, 0x73180866, 0xb5735b1b, 0x7612c6db, +0x3d08390d, 0xa80aa54d, 0xf8352c8f, 0xdce85202, +0xc3c9c8ed, 0x103b07c6, 0x202aee56, 0x73720c87, +0x0e419019, 0xad08c872, 0x3c9c01f7, 0xe6e49064, +0x72d5ef01, 0x2b8720c8, 0xa47b48c4, 0x0db30ccd, +0xe904b830, 0x23201ea5, 0xf02e0f27, 0x0c8c7094, +0x6e86c872, 0x20c8f875, 0x0d678363, 0x1c8359f9, +0x4bfac836, 0xf23af83a, 0x1e639390, 0x232cf125, +0x1c8321f1, 0xc7101b76, 0xf20e4e0a, 0xf9f213e4, +0xe8f3fd00, 0x43c9c879, 0x0fd7f41a, 0x0e4190f5, +0xb52cc639, 0xf2721c83, 0xdca4f64e, 0xe4e43993, +0x82f76521, 0x8e4e4690, 0x0d74eb3d, 0xb666f871, +0x4191c9c8, 0x4af96858, 0xc832393b, 0xfabe3c94, +0x0b6c0a2e, 0xc219609c, 0x1d0a2395, 0x83639307, +0xfb1e2318, 0x8288c5b2, 0xdc000240, 0x5520c512, +0xdfa804e3, 0x44743aee, 0x59e81959, 0xff0e3183, +0x802dfad6, 0xe8fceead, 0xc589097e, 0x07f841b6, +0xfa5d044b, 0xeb077458, 0xdd118820, 0x38eb2ba0, +0xd4322357, 0x5b8b6828, 0xc4087412, 0x14761d7b, +0x1e6c6790, 0x0d043d38, 0x8a17164a, 0xc88da0ed, +0xa30be672, 0xdb0eb108, 0x4885f455, 0x8182d77a, +0x57eda2fc, 0x027209ef, 0x88aee430, 0x97c4550a, +0xa624d91c, 0x159a093c, 0xbf24c808, 0x325c930a, +0x5c0a3d90, 0x2c8fd881, 0x4c8a3c20, 0xc8401c24, +0x0b1c9724, 0x90c9401b, 0x3a772c85, 0x0e40260c, +0x0581e079, 0x9272120d, 0x81caa54b, 0x0c7e3454, +0x502468dc, 0x6bc84943, 0x58dbd49c, 0x632fa3c6, +0x20410d47, 0xe8b64c82, 0xa88e3b69, 0xa9142c15, +0x46fcd82f, 0x9e03b744, 0x203cfa81, 0xfa89d4b9, +0x6fcd6030, 0x9250dfe4, 0xca180648, 0x42d82a83, +0xed164468, 0x36d50bc1, 0x29260e02, 0x05f5b8d3, +0xf7e642aa, 0x820fd839, 0x3ff8ad89, 0x5f3b8109, +0x755f3233, 0x2009766a, 0xba88cf5b, 0xdeb16174, +0x0ca87dc2, 0xdbff1558, 0x7c074213, 0x75c984f8, +0x087b804a, 0x22dbf163, 0x022953dc, 0xe3ef7f94, +0x9a2b58fe, 0x756db9d1, 0x047b8123, 0xf7c860ff, +0x12765fed, 0xcb23dca3, 0x25bc10ac, 0x7525a3e0, +0x9bb41c83, 0x8387a245, 0x3e02d678, 0x7441cfd0, +0xe4d4e805, 0x2a055b08, 0x83303276, 0x02bce23d, +0x22b166c6, 0x53620d29, 0xeb06a04d, 0x1362681b, +0xe22c1f61, 0xd8f1b057, 0x61e4c301, 0x2c01df88, +0xb5fd7b10, 0xb261e601, 0x8a9b15b0, 0x43e6086e, +0xc942e6b5, 0xa1322575, 0x254210b7, 0xc0018e2a, +0x4d056982, 0xc51bc3c3, 0x0445ee02, 0x7d39c1e8, +0x8b87a5de, 0x83460870, 0x3edb6275, 0xd002d5a0, +0xc2028208, 0x035c16d6, 0x033c0889, 0xda150410, +0xa2020c54, 0xb0774b83, 0x3d448c15, 0xc5020407, +0x824486ce, 0xdb3bd241, 0x3eff6602, 0x624dd3ba, +0xa0602810, 0xed452128, 0xbfdd5706, 0xdfedfc60, +0x03c4e284, 0xb0071239, 0x61090e1f, 0x6499e009, +0xea680c16, 0x174c1400, 0x00a76a08, 0x2a0ae013, +0x23052507, 0x092a015d, 0xa7c77404, 0x0b4cca78, +0x78689d0a, 0x061448ad, 0x2241f0c7, 0x06c076c0, +0x84a30180, 0xb0880513, 0x40c9926e, 0x0609908c, +0xe4c05340, 0xa6af9419, 0x2aa4ec64, 0xa440a06a, +0x9bb114ec, 0x028c09a8, 0xc9de9d9d, 0xb0405973, +0xe322686e, 0xd53454bb, 0x16bc6843, 0x0761da57, +0xc9323a29, 0x3b4f324c, 0x50dd566c, 0x482a0209, +0x649d1254, 0x318381ac, 0x2a326460, 0xae986758, +0x3103091e, 0x5be7cf24, 0x6c3171a9, 0xba74e3f3, +0x78dd1548, 0x09c90709, 0xe79e4601, 0x680731c1, +0x88c18077, 0x49ba1360, 0x1c80098c, 0x090af96d, +0x3422f6a9, 0x8700068c, 0x1833141c, 0x137ea09d, +0x5b331c1e, 0xc3680166, 0x8bbbba31, 0x31332068, +0x6808d05a, 0xf00130de, 0xe8f168c3, 0x2036ae29, +0xe770409c, 0x28f60991, 0xce819ee8, 0x045f2d20, +0xf54ef16c, 0x7c290320, 0x87d5560d, 0x849ce8af, +0xf10118f7, 0xef1a23b2, 0x82f01b84, 0x920f5dd5, +0x1b8c73f9, 0xa8eb588d, 0xe8c33e9a, 0x114b5b03, +0x24367dbf, 0x4b779d88, 0xdb475475, 0xda3a4d2d, +0x9eb377fc, 0x0ed8e820, 0x9d7d887b, 0x004ef299, +0x02841000, 0x603776c2, 0x44c46670, 0x00008a07, +0x7e46409e, 0x687445e4, 0x013500ff, 0xffb03801, +0xdc057585, 0xde001161, 0x03efbead, 0xa5ffff5d, +0x035e00ee, 0x203c3401, 0x43455850, 0x6e65696c, +0x72413a74, 0x5bff6863, 0x303adff7, 0x4e553a00, +0x320a4944, 0x0d373102, 0x2b0c0301, 0x85e0803c, +0x834406fd, 0x87868584, 0x0336035f, 0xee1ec580, +0x0e6b0532, 0x3d812c09, 0x5fdf6c11, 0x03b2ab64, +0x062b5f73, 0xca2c2747, 0xa463db62, 0xfff06e46, +0x415441ff, 0x4e203a4c, 0x6572206f, 0x6d2d6c61, +0x2065646f, 0x6b633073, 0x96ebbff7, 0x00412197, +0x2b564e03, 0x6e614300, 0x23746f6e, 0x365733b7, +0x24147620, 0x72502521, 0x6fdbfed6, 0x6f636f17, +0x4444736c, 0x20504348, 0x04544654, 0xadffb716, +0x63696eff, 0x73696400, 0x6f6cc06b, 0x00797070, +0x0a202d20, 0xb9bf6c75, 0xfa6c8d6f, 0x31006665, +0x72030230, 0x72652078, 0x6fdbfd9f, 0x2520723f, +0x72325868, 0x31386c74, 0x33073932, 0xbec36239, +0x663f6ffd, 0x38333565, 0x636d7300, 0x2d313116, +0x85ed0931, 0x65186ed7, 0x02237d6c, 0x40746464, +0xb177edbb, 0x362e0b6e, 0x78743039, 0xe0656864, +0x6c7f7630, 0x1e78b5a1, 0x1d640170, 0x33776e66, +0x35bd3036, 0x1e33b58f, 0x30303809, 0x656e9b63, +0x8dd8fb2d, 0x54f16f82, 0x6e55074c, 0xf6b27573, +0x955b6f12, 0x41203974, 0x25229b50, 0xb6de0163, +0x9f22db77, 0x20676857, 0x787d6e69, 0x62613c0c, +0xeb7ffb6e, 0x74083e21, 0x00707466, 0x002f2f3a, +0x698c6f4c, 0xbde2ab20, 0x207325ec, 0x0e3a400b, +0xab580827, 0x266f4270, 0x9b7523eb, 0x72465edb, +0x3a506973, 0x8764440b, 0xf0ad6d0a, 0x6c6998bf, +0x207a7365, 0x666d203e, 0xff280f07, 0x37c0db61, +0x20002e90, 0x61726765, 0x4268206d, 0xa40ad0a1, +0xaf712f7e, 0xf77b4334, 0x22676962, 0x2949424e, +0xb6059005, 0x4a22d0f6, 0x5e61a74f, 0x5dcd69fa, +0x69bedf76, 0x5867616d, 0x7065733c, 0x5fed7bac, +0x7469ee84, 0xf170435f, 0x6f662008, 0xb99bd175, +0x1a2eb5d6, 0x9541530f, 0x458f1011, 0x4d0a7bb8, +0x00409c65, 0x200ad72c, 0xd8302628, 0x290675c1, +0x521de512, 0xbb070b6b, 0x0b79618c, 0x77346147, +0x6bb70c0d, 0x2145c285, 0x6c20a975, 0xcdedb9f4, +0x65db205e, 0x966d1b09, 0xadb16b5b, 0xaf73a025, +0x6135f397, 0xb6f1c310, 0x35748e72, 0xbb5a4656, +0x7716bb11, 0x6d5f3d6e, 0xad5b1670, 0x61dee851, +0x38747562, 0x0e739073, 0xb5b0b86b, 0x6b2d0674, +0xa2657a46, 0xdb6d3364, 0x33503182, 0x2a292528, +0x6085d2ec, 0x4346dc1f, 0x1e3238c9, 0xe925f68e, +0x49901b00, 0x6f864634, 0x73da1b0d, 0x63060a88, +0xf9766965, 0x1f0c1bba, 0x8cb462e3, 0x733a756e, +0xadda9564, 0x09b2b51d, 0x50304455, 0xadd9c629, +0x6d755827, 0x41ea0a4f, 0xec10bf1c, 0x20077f64, +0x6c257830, 0xad0fc228, 0x2dd65415, 0x726f66f4, +0xa3259690, 0x220ad161, 0x7374a111, 0x6e6b3117, +0x7665f5f0, 0xadb6393c, 0x7079b0d0, 0x588b4a23, +0xe1277927, 0x52f6b7b1, 0x666f5f89, 0x72756c20, +0x73614e6c, 0x6e14da05, 0x3f6e4419, 0x5ae70eb1, +0x2cc4b9c3, 0xdb275a62, 0x6173dcc6, 0x075b5bb3, +0x6370175d, 0x90d6fc2f, 0x33320669, 0x19363534, +0x1a424139, 0x43f75b4b, 0xe6464544, 0x8e68032e, +0xba3cb43a, 0xcb58d687, 0x5f2f0001, 0x6fb82839, +0x6f205b7c, 0x3233534f, 0x6dfb7ea4, 0x278161df, +0x2e342e35, 0x18435b32, 0x8d360000, 0x202ec42f, +0x50478618, 0xc26a294c, 0x74a54d61, 0x1c652425, +0x2b570b2e, 0x44bd8dbd, 0xcc5605af, 0xc28770e8, +0x0d098720, 0x74fb20d2, 0x81f9e08b, 0x8a784500, +0x6d0e3a73, 0xc2046c3b, 0x23bfac6f, 0xc36ceea3, +0x72690d1b, 0x202cea71, 0xe0d52112, 0x7642c378, +0x2d73a570, 0xd5307564, 0x7ed8c478, 0x64864300, +0x61af1a32, 0x20b3c3ac, 0x9a896f88, 0xd0b8d0a1, +0x616649d6, 0xd76b4d91, 0x2486eb70, 0x65d74d4f, +0x6074f167, 0xdadb59b4, 0x67091f78, 0x42210b28, +0x8a6dc117, 0x4bd30a63, 0x16dbd764, 0x707285a4, +0x42741c97, 0x5d62326e, 0x478d5a73, 0xde24ca0a, +0x1c533b18, 0xc63d213f, 0xc30b8075, 0x3019c25a, +0x826ca573, 0xd4738281, 0xe0663004, 0xdc12580a, +0x1d32cb61, 0x1d906916, 0x2ed83333, 0x16d612c5, +0x222f3093, 0x5e2d2695, 0x82927e65, 0x3d75cdae, +0xd76f7a43, 0x6a9c67cf, 0x38787583, 0xbb6f7589, +0x507342b6, 0xb42e1f4b, 0xb5216230, 0x6b0e1b63, +0x61621f0a, 0xc520435c, 0x5407b42e, 0xdc696e67, +0x8d0b78db, 0x3e77c184, 0x042f32b9, 0x220058c3, +0x8ca88376, 0x2453a775, 0xb764b8b0, 0xd1f0b752, +0xb7e17638, 0xac783a5f, 0x050ce9a5, 0x78c53772, +0x7a486b78, 0x0c6f74d9, 0x736f000a, 0xf03866d2, +0x49c2283a, 0xb0622007, 0x786ed229, 0xb279780d, +0xdee72578, 0x65757186, 0x24df49d1, 0x66d88442, +0x73638a2b, 0x58111e79, 0x64158572, 0xd88c2042, +0x008960d6, 0x832c4531, 0x0d13dc67, 0x618fb611, +0x1270d658, 0x05074785, 0x2072eaaf, 0xc2b0df26, +0x2056678e, 0xd0873679, 0x9a1ee74f, 0x77130770, +0xa48a7670, 0x0db56ed1, 0xd8467449, 0x3a196666, +0xc2b07b92, 0x9e795741, 0x619a0000, 0x4227c9eb, +0x2ddd4f4f, 0x20ce3300, 0x46370f02, 0x6ee1003c, +0x0339b96b, 0x36816c49, 0x6ecb6234, 0x42bb7dee, +0x30195241, 0x043a7838, 0x736f1320, 0x035eb80b, +0x18598410, 0x0ce19d64, 0x7027350a, 0xf70aba81, +0x00b08465, 0x5823d623, 0x7586003f, 0xf92839a9, +0x063a5225, 0xb614073c, 0xc0c17961, 0xaf61b00f, +0x10239d08, 0xbd62e832, 0x445e4057, 0xb5887555, +0x61609016, 0x7472cf6e, 0x615f1a9c, 0x0c6db375, +0xe06c5cd6, 0x574049cc, 0x5b5cff26, 0x2e6fedd8, +0x470a7529, 0x5c60b846, 0x46a93830, 0xb86867ed, +0xb46c3b42, 0x2e76b73c, 0xb6e03d60, 0x3a002da3, +0x0319b0a7, 0x7dca95c0, 0x002c9995, 0x29400037, +0x0e76ce41, 0xcf9f04b5, 0xad809307, 0x179bb06c, +0xdb001f93, 0x104db575, 0x8b108702, 0x228c9003, +0x02ff7f9f, 0x812910ec, 0x39078cba, 0x388d3281, +0x85ddf381, 0x860fc2ba, 0x07cb13ec, 0x12111113, +0x7fbb2dd2, 0x43dc124d, 0xe4136015, 0xee403307, +0x8f77ddf7, 0xfa134027, 0x0613d107, 0x593f04ab, +0x0da11712, 0xb1e6db07, 0x0f14ea6d, 0xab070718, +0x5fffff22, 0xbb28412c, 0x017f8db2, 0x445b75c2, +0x9a6ed31d, 0xa22e03f0, 0x7850aa26, 0x66464381, +0x600d2dba, 0xbf0f7e03, 0x4ffd9601, 0x103f0405, +0x63538263, 0x916a0b96, 0x05afd8fd, 0x0302b16b, +0xec870000, 0x4dc2b615, 0x033f6800, 0xb7aa0e50, +0xec0ab200, 0x52cfdb2b, 0x07d02bc5, 0x78427f45, +0x59049d95, 0x6d0b4037, 0xc0000000, 0x00012000, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, @@ -2053,10 +2047,7 @@ 0xffffffff, 0x72ffffff, 0x31386c74, 0x7a 0xffffffff, 0x72ffffff, 0x31386c74, 0x7a2e3933, 0x206d6f72, 0x2e342e35, 0x47282032, 0x20294c50, 0x65687465, 0x6f6f6272, 0x726f2e74, 0xffff0067, - -}; -unsigned etherboot_eepro100[] = { -0xeb40aa55, 0xbfe9a865, 0x68744500, 0x6f627265, +0xeb40aa55, 0xbfe9ab65, 0x68744500, 0x6f627265, 0x0000746f, 0x00540000, 0x0034001c, 0x52494350, 0x12298086, 0x00180000, 0x00000200, 0x00010040, 0x00008000, 0x506e5024, 0x00000201, 0x00008b00, @@ -2075,7 +2066,7 @@ 0x55506650, 0x468be589, 0x02468910, 0x89 0x55506650, 0x468be589, 0x02468910, 0x8912468b, 0x685d0446, 0x5066104d, 0x0f2e0e50, 0x000206b6, 0x5009e0c1, 0xe6e8146a, 0x8f2e5800, 0x2e064a06, -0x0648068f, 0xc72e6658, 0x00038406, 0x66000000, +0x0648068f, 0xc72e6658, 0x00038006, 0x66000000, 0x00020168, 0x50686600, 0xe8000178, 0xc4830010, 0x89175b12, 0x3ce85bdc, 0x0002ca01, 0x6650006a, 0xc0200f50, 0x586601a8, 0x832d7458, 0x0000247c, @@ -2090,18 +2081,18 @@ 0x1f07a10f, 0x8cc03166, 0x66d88ec8, 0x66 0x1f07a10f, 0x8cc03166, 0x66d88ec8, 0x6604e0c1, 0x00038005, 0x0ba36600, 0x1f586604, 0x500179e9, 0xbb061e60, 0xc38e0040, 0x131e8b26, 0x06e3c100, -0x146beb81, 0x2606ebc1, 0x00131e89, 0x8c06e3c1, -0x89d88ed0, 0x4c8b36e6, 0x78c98518, 0x33878d15, +0x14b9eb81, 0x2606ebc1, 0x00131e89, 0x8c06e3c1, +0x89d88ed0, 0x4c8b36e6, 0x78c98518, 0x81878d15, 0xbfc08e13, 0xc1831000, 0x8ecf291a, 0xfcfc89d0, -0x6066a4f3, 0x1f0ec38e, 0x61dfb966, 0x89660000, +0x6066a4f3, 0x1f0ec38e, 0x5dafb966, 0x89660000, 0xcf8966ce, 0xf3fd4166, 0x66fca467, 0x66506661, -0xd889c031, 0x04e0c166, 0x84a32666, 0xc7266603, -0xb0038006, 0x66000146, 0x87e58958, 0x5e89165e, +0xd889c031, 0x04e0c166, 0x80a32666, 0xc7266603, +0x90038406, 0x6600014b, 0x87e58958, 0x5e89165e, 0x611f0714, 0xb80650cb, 0xc08e0040, 0x0013a126, -0x0506e0c1, 0xe8c114aa, 0x13a32606, 0xc3580700, -0x0000e860, 0x815d0000, 0x0002b6ed, 0x89b9fd00, -0x8d00005b, 0x06530db4, 0xbc8d0000, 0x0056060d, -0xfca4f300, 0x5607b58d, 0xbd8d0000, 0x00000650, +0x0506e0c1, 0xe8c114f8, 0x13a32606, 0xc3580700, +0x0000e860, 0x815d0000, 0x0002b6ed, 0x5fb9fd00, +0x8d000057, 0x06530db4, 0xbc8d0000, 0x005fac0d, +0xfca4f300, 0x5fadb58d, 0xbd8d0000, 0x00000650, 0xffffffbd, 0xa405ebff, 0x0775db01, 0xee831e8b, 0x72db11fc, 0x40c031f2, 0x0775db01, 0xee831e8b, 0x11db11fc, 0x75db01c0, 0x831e8b07, 0xdb11fcee, @@ -2157,7 +2148,7 @@ 0x00000000, 0x00000000, 0x00000000, 0x00 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, 0x0002bd01, 0x00000000, 0x90909090, -0x000097cc, 0xffedffff, 0xf8835858, 0xcb017500, +0x00009cac, 0xffedffff, 0xf8835858, 0xcb017500, 0x0804c483, 0xcd027502, 0xfb18cd19, 0xfbfa9090, 0x15cdf958, 0xbbf6edfd, 0x0eb4069c, 0x0001bb66, 0x0c10cd00, 0x16cdc031, 0x4bffe430, 0xb407b973, @@ -2190,1438 +2181,1438 @@ 0xdda17d03, 0xec837eee, 0x08010f08, 0x02 0xdda17d03, 0xec837eee, 0x08010f08, 0x02a80f66, 0x435c66a0, 0x7eddb777, 0x600e6616, 0x8938128d, 0x44070c03, 0xae3be850, 0x5dfdbedb, 0x050ced81, -0xd8ad8906, 0x168b0597, 0x6fffbca9, 0x7400fedf, -0x30b58d21, 0xbd8d0733, 0x39054330, 0x390472f4, +0x98ad8906, 0x168b059c, 0x6fffbca9, 0x7400fedf, +0x10b58d21, 0xbd8d0738, 0x39054810, 0x390472f4, 0x890d76fc, 0x76fdb9e6, 0x3248bbfc, 0xfc89cf29, 0xe3e8a4f3, 0x362d8b51, 0xb3db6c29, 0xe868bdcd, -0x3f450c4f, 0xb70f1220, 0x6db7240a, 0x5c046ff7, +0x3f450caf, 0xb70f1220, 0x6db7240a, 0x5c046ff7, 0x8d502624, 0x50608085, 0x7c548ffa, 0xfb7fd38e, 0xec01fb6d, 0x936158cb, 0x66a102a9, 0xe61f6607, 0x648b9d0c, 0xa37dd424, 0xf79cdcd0, 0xbe852696, 0xca9dcb9d, 0xbff62db5, 0x57565507, 0x10247c8b, -0x61983d2b, 0x8339a810, 0x68affbbb, 0xe8550e88, -0x5b217cba, 0xdbac6fbf, 0x0482a30e, 0x23be7789, -0xf129b4b9, 0x6db7eef7, 0x15732ea3, 0x81f8ea20, -0x10b80008, 0xfedc361c, 0x8ed88e7f, 0x8ed08ec0, -0x5fe88ee0, 0x35c35d5e, 0x35b832e0, 0xf9bbf7e4, -0xe83d05fc, 0xa358ec1d, 0xf4250bf0, 0xbdfdd605, -0x68bb5970, 0x1d0300e9, 0x2868535f, 0xf7e45143, -0xe87bbbbb, 0xa5890bb1, 0xa58d23cc, 0x6ca52fc0, -0xde977b29, 0xe4cf615c, 0x8100768d, 0xa88fbcfc, -0x74d7ba15, 0xed0c6020, 0x02341b22, 0xbb7b1919, -0x17072db7, 0x7e8bd0ff, 0xf23b8b8b, 0x8b8b191c, -0xdca18b15, 0x28d0bb04, 0x8be2ffbc, 0x68d6da4c, -0xfd025189, 0x597ff1b8, 0x08618904, 0x890c6989, -0x14796071, 0x6dc3006f, 0x1bcd0bdb, 0x8b08431f, -0x095a374a, 0xebf4f662, 0x0c6a08bf, 0x8b10728b, -0x051c147a, 0x4389ffb8, 0xb6959c2d, 0xbea29c28, -0x840c5401, 0xce8b664b, 0xb8bb188d, 0xef181f30, -0x21a29687, 0x2e9d5d58, 0xc3c2e428, 0x2b07357b, -0x38815080, 0x0f0d2300, 0x82858907, 0x68956ffa, -0x921b11d7, 0x284f2907, 0xd4bd530c, 0x5350ee68, -0x2c1d9da9, 0x2f024389, 0x03d4bedf, 0x88101f0a, -0x0c020443, 0x0f076388, 0xc231585b, 0x90c3db8d, -0xc6535600, 0x6cd6a10c, 0xbddaddfa, 0x70bb0010, -0x29c62904, 0xb801006a, 0xe6dfc2e8, 0x2d062e66, -0x056850e4, 0x6c0986e8, 0x38de176f, 0x18c03b80, -0xa03903c6, 0xb0050f9a, 0x7f5d6500, 0x0921188d, -0x055a0603, 0x5bd30aa1, 0x145db6eb, 0x047f1887, -0x13026a10, 0x6c7dd7b6, 0x1c065016, 0x4eefb850, -0xe859602d, 0x793d2dbf, 0x66c2892c, 0x010a20f6, -0xb10f0374, 0xb6c730ed, 0x8843bbc6, 0xce961203, -0x3f7cb3c8, 0xefeffc1e, 0x95f7b072, 0x2e2c3f8e, -0x250304bd, 0x282f6cf3, 0x32c8fc23, 0xb0b937b5, -0x2d0c26c0, 0x30be0526, 0xa1e805fb, 0x83063126, -0x19b901f0, 0x01b0b939, 0x0c0c152f, 0xecb0ccb9, -0x29535671, 0x19e4b817, 0x47151539, 0x196d2f57, -0x66287b7e, 0x8dca13c7, 0x0a6a1887, 0xbbeeef4a, -0x2474db57, 0x2a24bb22, 0x3eeb8156, 0x2b186f0d, -0xdcd805f0, 0x01181820, 0x35fb3975, 0x14881dfc, -0x74d28566, 0x16186617, 0x0506e0a9, 0x6e0bad62, -0x017220d2, 0xbd16f9d0, 0x20debec5, 0x24e475c0, -0x10321d12, 0x1b07deeb, 0x0e6dfd73, 0x6cba8800, -0x07b15d56, 0x22c5cdb1, 0x55404d3f, 0x636e8f9c, -0x3b2c2c83, 0x06334440, 0xc36c619e, 0x31657df7, -0x7f1e39ed, 0x1406500c, 0x3dafd986, 0xb0034673, -0x65e805e1, 0x03fdb74b, 0x02d081db, 0xf63a75fb, -0x34b22404, 0xb5deef91, 0x23e4405a, 0xb9fc0adf, -0xa5f34e05, 0xae868343, 0x14c5dffb, 0x850c7d60, -0x21a574db, 0x1b9db206, 0xdb5ae70d, 0x5f87d889, -0x0e070939, 0xb07c08fc, 0xe81c8f5d, 0x140101ed, -0xfffe98e8, 0x0b1addcf, 0x0faaa3ea, 0x960ab4e8, -0x8576fcdb, 0xa30e8b20, 0xff3c1304, 0xf04e10c4, -0x7041b736, 0x05d33284, 0xed9f702a, 0x990a07be, -0xa10814a3, 0x05c70d04, 0x7b640808, 0x09249daf, -0x1009003c, 0x1e66dcf6, 0x0f181589, 0x0911051c, -0xd8dd60ec, 0x09101920, 0x28a32324, 0x9b06fb22, -0x303c2c6c, 0x3159a12c, 0xdc9a2584, 0x867cf86d, -0x14890ff9, 0x1afff6fc, 0x080589b6, 0xeb2b0c4e, -0xc183470c, 0x1ff83914, 0xd3d8fbf6, 0x66b9e7d9, -0x918beb75, 0x31fa837f, 0xdfe1bc36, 0x52779281, -0x772dff3d, 0x8400bd4b, 0xdafef631, 0x941ed7ef, -0x391ba92b, 0x72ce23d6, 0xc4b6770c, 0xc53c0dfb, -0xa98b0676, 0x0729c30d, 0x362f6b0e, 0x09353fc7, -0xcb4b19d2, 0x623dc591, 0x777cff4b, 0xfbfdf0bf, -0x03c38944, 0xd6893999, 0x3b27b113, 0x2e720cab, -0x5bb60677, 0x08a30de3, 0x413b2676, 0x0d724367, -0xcd02bb44, 0xcf3b775d, 0x192111e1, 0x62c583d6, -0x333589b3, 0xf087d8f7, 0x2784611b, 0xa3cc1c86, -0xbee5e918, 0xacceb5ec, 0x792c1434, 0x1481c798, -0xc99074ba, 0xb3eb1809, 0x4f13b84b, 0x90ec1987, -0xb2ef052b, 0xffd6be36, 0x9b1478df, 0x3f811beb, -0x45524621, 0x03662e75, 0x89620457, 0x11db8b86, -0x09044f21, 0x5a953b3d, 0xd3aa6b1c, 0x0bb7f189, -0xdffa16eb, 0xe7c1fa17, 0x66c7290a, 0xbb80fa81, -0x44c38eca, 0x75bbf8ee, 0x0369d389, 0xe2812515, -0x8c8db8ff, 0xd8b86e1a, 0xfc8906fa, 0x893942d6, -0xd4bdbef2, 0x2096a6d1, 0x12ebc946, 0xc7044a5c, -0xef6ee502, 0xc2816cfe, 0x49667c00, 0xe946ec75, -0xb877df70, 0x42e48816, 0x09bdf2ac, 0xcc1bb0a1, -0x0408675e, 0xdc69b8b9, 0x07ddda35, 0xe82c89c9, -0x2404fd33, 0xe0cdbdf7, 0x5723b523, 0xbf770553, -0xeef7f7d3, 0xe88151c2, 0xf989261c, 0xc1390d2b, -0x16be0aeb, 0x760b90ba, 0x83247291, 0x2d6f2dda, -0xcad7e3e6, 0xe2c117d2, 0xbe6428c2, 0x1ecb07b6, -0x1ea7d7f3, 0x7216c0e4, 0x742a8d5f, 0x6c6fa125, -0x9082c6e7, 0x032f0d5b, 0x2c1ca397, 0x82770ed6, -0xa6fc9ee9, 0x779d248a, 0x7c1ba477, 0xd175612e, -0x8d1a6851, 0x5b4ddc10, 0x305d936f, 0x088cfe47, -0x341e05e8, 0xb49bbdb6, 0xb239e810, 0x084657b9, -0xcf7afc37, 0xa71983bc, 0xe8f291e8, 0x7051fed9, -0xc9626285, 0x23c27b23, 0x781d2844, 0x8dd029dc, -0xc1b7050d, 0x00e3813d, 0x0d8be41b, 0xa36d8715, -0xecde86ff, 0xc839ce29, 0xd8390c77, 0x12fb6477, -0xf847fa4c, 0x0476000a, 0x56086e58, 0xe851d129, -0xef7be497, 0x2f4d5afd, 0x1e443529, 0x7899599b, -0x438b1847, 0x0753c829, 0xcdb274dd, 0x6904764f, -0xda34d039, 0xa97b0574, 0xafb1cfd8, 0x0540ff08, -0x573fe852, 0x30af49a3, 0x06d52c08, 0x0d8bdb70, -0xa849602c, 0x2bd835b5, 0x5a847a50, 0x607e5045, -0x8c67d701, 0xb95c0934, 0x165f28e8, 0x2e116c23, -0x0868a4a0, 0x5ad7c620, 0x99cc262d, 0xbe59563d, -0x53d8adaf, 0x2185a412, 0xf530262d, 0x52dfbc23, -0xbe7974ed, 0x89241054, 0x89d729f7, 0xb06bf8fa, -0x540e0715, 0xab898389, 0x750f7b82, 0xf7839fc7, -0x2d89b80b, 0xf4b4550f, 0x2cf474db, 0x21fb8386, -0x2c8a1554, 0x737b6ec7, 0xeac1fe5e, 0x96031304, -0x6e688b89, 0x438df783, 0x352b0257, 0x3e060c59, -0x59bd8a71, 0xaa9d8fd9, 0x6de358a5, 0xfd0f1d3a, -0x95b8061c, 0xbb7318de, 0x53e2f192, 0x6ad1a102, -0x060479db, 0x007e1d0b, 0x77eddf9d, 0x74b5153b, -0xea81d602, 0x52828ba0, 0x03b60284, 0xcb3c585b, -0x81046a16, 0x282219c5, 0xcfac51d0, 0x11048ddb, -0x5a207b7a, 0x47c8defa, 0x00cd87cd, 0x2b9a1915, -0x46346d5a, 0x4f408934, 0x16a72bc7, 0xdf2cb69a, -0xd328fe91, 0x9eee3187, 0x01bf660d, 0xe8560d8f, -0xd74995c1, 0xff0cf60e, 0x01180475, 0xa9170bc6, -0xbb776b73, 0x5502c314, 0x2103f45e, 0x1701c133, -0x8ddcc10c, 0x2da1181b, 0xd5c8e006, 0x17d843a4, -0xf66d4a48, 0x06032f67, 0xcf12f889, 0x85c0a95b, -0xfb4309c1, 0x46c91045, 0x9b8c56da, 0x6203c199, -0xb813181c, 0xd2b78377, 0xc9031c42, 0x76113d03, -0x2b432438, 0x814b3c49, 0x162c0733, 0x6189e7db, -0x2d84d2d6, 0x1db7e86d, 0xb150526e, 0xf7e85708, -0x0c75375c, 0xdaf8e09b, 0x2d17e991, 0x4629a731, -0x1607b6f8, 0xbebbeb42, 0xdf03ec0d, 0x4d5b05c8, -0x2c0ac910, 0x8303014c, 0xc4da97d1, 0x049bfce1, -0xcc291055, 0x96eb5154, 0x845bb498, 0x54f59a7c, -0xc142fbd0, 0x89065dc4, 0x94e85dec, 0x0edc0292, -0x9c8b4c7f, 0x3579a424, 0xbcc4f764, 0x4bb535f0, -0x8d6c60b9, 0x65740899, 0x5c8502b6, 0x05e6979d, -0x91d0b60c, 0x8306ba25, 0x0f83d3c2, 0xa370b6e2, -0x194f75cd, 0x04c2ef8b, 0x6c7f8506, 0x958e886b, -0x02fec1c6, 0xbfd1dd1f, 0x4217bdbb, 0x411b108c, -0xf07cf139, 0x76535250, 0xd2b8477b, 0x817016b0, -0x752a64e3, 0x22c60c27, 0x5b4cf8fd, 0xc775f089, -0x89266f45, 0x42f60c4f, 0xd16cd974, 0x735000e8, -0xa86abf8b, 0x7c106a20, 0x5fd002e4, 0xdf8cf636, -0x20e9e8d0, 0x03c08354, 0xdc911301, 0xb3f56ae9, -0x9a36d182, 0x153490db, 0xbeff2cc5, 0x5f1ac1c9, -0x0e765bb7, 0x16bfc8b3, 0x18a47b10, 0x8ba3f0ec, -0x45bb2500, 0x6841bba9, 0x08ff0908, 0x985b5580, -0x10cf60a1, 0xf3392b7b, 0xb1c15782, 0x4ae20abe, -0x3fa37e0c, 0x3917e261, 0xc109ebd9, 0x01421604, -0xdb8b0fc1, 0x5bf5be06, 0xc85ec10b, 0x1a36e0a1, -0xba24850a, 0xd3306531, 0xa36c309c, 0x084749e5, -0xef4b7d9c, 0x026ebf02, 0xf0e7830f, 0x273d89e5, -0x257eb964, 0x75808603, 0x8d0f97e0, 0xdc36fd83, -0x189d0ef0, 0x8d328e2d, 0x960505b8, 0x3a187667, -0xd00b1ae1, 0xf7851e04, 0x82894098, 0xa2cbad1e, -0x096f5830, 0xa4f0e583, 0xed8d6401, 0x5188efd7, -0x3568046a, 0x5a7bac8d, 0x9df5c605, 0x58caeaeb, -0x1d0707c6, 0x0805d343, 0x2323608d, 0x83a10c0e, -0x7a4c4b62, 0x2b1c2888, 0xd63622a6, 0x107b0add, -0x14281622, 0xa56ddb05, 0x05ff515b, 0x541c5018, -0xd60d071d, 0x1ea3059d, 0x03283ccc, 0x0c5d0f20, -0x2a072db6, 0x13822202, 0x94d8862e, 0x6a260375, -0xb27f1130, 0x1466dabd, 0x7fe43210, 0xaba09905, -0x5f36437b, 0xae437540, 0xf637c836, 0x48054680, -0x054e4a12, 0x37c83534, 0x56521250, 0xfa3158a5, -0x3d012c77, 0x60738d3c, 0xc7054328, 0xdffef104, -0x3a68c32d, 0x59612b19, 0x01064625, 0x0846c602, -0xe9dd242c, 0xae4694c8, 0xd81e1486, 0x0a46edb3, -0x465a0e2c, 0x2046ed12, 0xeb0775d6, 0x46e21403, -0x22160322, 0x30952818, 0x051a3632, 0xac651e1c, -0x46ec2712, 0x2646e924, 0x8f6fac65, 0x2a460704, -0x0fe3833a, 0x6a285e0c, 0xb62ee31e, 0x6870b42c, -0x68094628, 0x6c8c80c7, 0xbf0c1183, 0x68df891c, -0x78ef1363, 0xe824d234, 0x5a375882, 0xbb58df6a, -0x71d43aed, 0x18142c89, 0x613b07f9, 0xdcb90860, -0xd709bac1, 0xf0242ddd, 0xf7fde8d1, 0x001ac225, -0xc6dda705, 0xeb6b47c0, 0xbaf062d9, 0x688ec25f, -0xe9e804e3, 0xf91d21f6, 0x6c182244, 0x235bac02, -0x1b7df836, 0x565615fb, 0x0b745339, 0xbe87dd9a, -0xb0959af4, 0x97047401, 0xe80e68be, 0xdd66241a, -0xf73df8da, 0x6ecfc529, 0xaf144ef0, 0x48cdb503, -0xf4e1810b, 0x8d0a250f, 0x02090a94, 0xcde0cd9a, -0x4e83f8e3, 0xa338de0b, 0x7fd48a17, 0xbad0361e, -0x177544a9, 0x01f3c18e, 0x4c835fd0, 0x83306027, -0x0629d080, 0x5981fc1d, 0x42b46284, 0xd4a0e743, -0xa4d2ae91, 0x9eb1c082, 0xda1c1afb, 0xeb29c811, -0x0bacb85a, 0xe3d0837d, 0x0b899392, 0x31b168c0, -0xd61dba70, 0x178c325c, 0xeb7c4bba, 0xe8671857, -0xdac358c7, 0x235d1621, 0x05527722, 0xfc34222c, -0x36c4e82d, 0x306de3c7, 0x1cefd0fb, 0x7b41688a, -0x02105417, 0x66d08211, 0x0af31910, 0xc0a0de18, -0xdad4a91a, 0x36fbe083, 0xb10cd46c, 0x1204bef6, -0xf6a9e283, 0x100fe06d, 0x040e140a, 0x7c0233bc, -0xb5089480, 0x3430184d, 0xaf46464f, 0x59a138ef, -0xd8bf2d0b, 0xc6d824aa, 0x97d75a06, 0x244114ab, -0xef8ec554, 0x3881c032, 0x7620e22a, 0x43028b46, -0xee0adb15, 0x5c04428b, 0x7a080779, 0xd130605a, -0x23dc04f5, 0x1615c16b, 0x71d14ada, 0x22e26f04, -0x31341bbf, 0xc38bc6b6, 0x5b245d67, 0x07017136, -0x438b0d7d, 0xd40640b2, 0x27d02dae, 0x5b7fe1e9, -0x37760913, 0x72afdb7c, 0xeb0a0310, 0x682d90ba, -0x1c9c9220, 0xd8e6df53, 0x4ea604ec, 0x78504d85, -0x73061558, 0x0b33b364, 0x2454000a, 0x13688d6b, -0x52ee6138, 0x638e5728, 0xdf77e9f1, 0xbe02f8c0, -0x07771a81, 0xe085348b, 0xee147b27, 0xedb6ca36, -0x77181940, 0x1b741e54, 0x703ad848, 0x07760aed, -0x19ff2cb8, 0xd0e8e514, 0x02ba8cf5, 0x1bbb6f86, -0x3e1db75a, 0xb817897a, 0x3a397440, 0x06c9cdeb, -0xa71e707e, 0xa1247b8d, 0xe4b90024, 0x7553b1d9, -0x4e2633ac, 0x70c60cb2, 0x352994ed, 0xc3928e0c, -0xa016d4c8, 0x32866303, 0x0cc4a8fa, 0x037ba053, -0x32b4346d, 0x4b17a344, 0x85e6d315, 0x0b1ef856, -0xd01d244c, 0x0bc78553, 0x23c9816e, 0xbe10c3e7, -0x858e74bd, 0xda89ee12, 0x2a1640ef, 0xfea5f66e, -0x23231af4, 0xed10c2be, 0x85a99e4e, 0x0e78e03b, -0xdc74bba9, 0x45c3725a, 0x30b0fa93, 0xbd4880fb, -0xc0e4d551, 0x56e6ec3e, 0x09566753, 0xec0864c1, -0x41019225, 0x31266463, 0x58a839e4, 0xb1c1ea01, -0x392d3085, 0x77b30ec5, 0xbdd04b7f, 0xb8f21014, -0xea654802, 0x10c1ef66, 0x026afba4, 0x0f6ddfe8, -0xfe8bdd03, 0x89fec50f, 0x6dc8e8ee, 0xf989af49, -0x01a8f8d3, 0xd8f006bb, 0x7523ee37, 0xd892b302, -0x9e66f289, 0x16cb8302, 0xdf6ddb01, 0xd889289f, -0xd8d4f93c, 0xd111bb75, 0x40f26f64, 0x2ca5ed66, -0x2a2f1dd9, 0xc20901e0, 0x79b0794f, 0xd820703f, -0x7c62e877, 0x1bde1200, 0x0521bc37, 0x00b9e277, -0x8f7427ac, 0x1afc25ed, 0x00b81273, 0x02c20801, -0xc04fc32c, 0x0fd96176, 0xeb3412c3, 0x16ae25e9, -0x23d6616c, 0x2cf4fad8, 0x81a2831d, 0x8b25d5ee, -0x2c7e06ee, 0x16058c5b, 0xf1ba0c1c, 0xd50684c0, -0x6a77a6a5, 0x5c70ff28, 0xdb3812b1, 0x8fe3b752, -0x82b01186, 0x8a799b50, 0xa3450540, 0xdf867a56, -0x537ed601, 0x826ef77a, 0x48a34ddb, 0x2c3db911, -0x0f581589, 0x6e5b7b19, 0xf7045ca3, 0x42082d05, -0xbee6dfb6, 0x0d89400c, 0x4c0d0744, 0xa7208016, -0xdc0fd235, 0x540f54f6, 0x538dbf05, 0xa96254de, -0xb0efc8f6, 0x17eef16c, 0x305ffc6c, 0x06eb36d3, -0x64f98341, 0x84ec3c7f, 0xe1b6f5b2, 0xbe0a6b57, -0x5a2e9a9e, 0x73986be0, 0x663bc477, 0x097a64a1, -0x0812d2e8, 0xac96a6b6, 0x561febec, 0x7eec45c3, -0x0a85bbfb, 0x097441d8, 0x10f98141, 0xf27e1927, -0xd8535150, 0xc0851f84, 0xdc4f3126, 0x7bbab6c1, -0x2f9debe1, 0x09cca156, 0x7440148d, 0x9ae1b409, -0x608248dd, 0x1164655d, 0x26047b99, 0x7275b3d0, -0x28365a5a, 0x97bc28d0, 0x601002da, 0x895d2eb7, -0x2450770c, 0x00009585, 0x87901676, 0x4eba561c, -0x4d2fbc71, 0x6d400478, 0x848d0910, 0xda957710, -0x0d0f3059, 0x6ac76b01, 0x6da37777, 0x166c82e3, -0x5d3fff25, 0xb7296441, 0x38c3561b, 0x19700532, -0x1d9cc1d4, 0xe860717e, 0x19b75123, 0x3c367e52, -0x628070f7, 0x5508c070, 0x1d688071, 0x07e5ee84, -0xa36c1277, 0xecc06e80, 0xf808de05, 0x96428d05, -0x544203e0, 0xb61ec5d7, 0x003d03d2, 0xb8b35289, -0x3c022d39, 0x5aef6284, 0x8ef69c77, 0x5cb0085c, -0xbabc04b0, 0xecd95711, 0x7e6203ba, 0x873f4305, -0x794a3edd, 0x0f0a4dd3, 0x4e29b08f, 0x513fb824, -0x09d0e9f1, 0xd84d60d0, 0x59101d49, 0x148a7ae9, -0x4b0b1baf, 0x081e8a2d, 0x14fe0253, 0x1b01cf48, -0x15c169f5, 0xb0ad1f51, 0x4a518de9, 0x05c9ca89, -0x1b8b1838, 0x3a5ba906, 0x8b54f43c, 0x22ad7953, -0x88751a5d, 0x9c943cc4, 0x1de3868c, 0xe68350ed, -0x04c68ffc, 0x702ee574, 0x977f6870, 0x8ac95344, -0x0bfbeded, 0x6c428873, 0x5c001bba, 0x77e8d300, -0x7a9687fb, 0x00794bdd, 0x3d9a0ffe, 0xff287d07, -0x141b0e29, 0x9f0f40bd, 0xdb310180, 0xed8aff31, -0xeb39f14a, 0x11732b7d, 0x833ef009, 0x2435dc5b, -0x0ffb8339, 0xf3057ffd, 0xbf8bdbb5, 0x0143105c, -0x3ec681d7, 0x32d77c2a, 0xfd68d85f, 0x5c508b86, -0xb41f8076, 0xd1d98903, 0xf40b42eb, 0x01e183f8, -0xe1164485, 0x0edfad03, 0x04887dbc, 0x053e431a, -0x99fcd77e, 0x5c72ff58, 0xeed27fa1, 0x578eb468, -0x813f4c38, 0x74babaff, 0xe9364a14, 0x77c71aba, -0x5c1d1a93, 0xac9132f8, 0x68a69c52, 0x78bec57e, -0x8b85e86b, 0x045618f3, 0xec3cd879, 0x4106b81b, -0xb85e8d56, 0x0608c0da, 0xb806f00e, 0x1ed0b78b, -0x878da67f, 0x833397e0, 0x87e12e40, 0x2dee590c, -0x60978df1, 0x6023ada1, 0x38bbe3fc, 0x9b649089, -0x1e3c913e, 0x81472464, 0x915b48c2, 0x4b4d63da, -0xc676be79, 0xfd836069, 0x90adac1b, 0xa3c00862, -0x018dad64, 0x200c86d6, 0x60238798, 0x603200c8, -0xac9812a3, 0xee99c513, 0x4de30001, 0xf6a3ebc3, -0x5c4254aa, 0x341b048a, 0x8360708c, 0xc0ea9735, -0x2f16d01c, 0x6ad4cd6d, 0x9cfa833f, 0x966ebd84, -0x0a0889ed, 0x98eca11b, 0xbb77110f, 0xe805781b, -0x5d09a208, 0xdf9ac4a1, 0x6883bb13, 0xa00f0ca2, -0x68c133c0, 0x7b3bb783, 0x9680c0c2, 0x02860da2, -0x08400206, 0x3c36eeeb, 0x040d4796, 0x1705c607, -0x70064805, 0x1b669668, 0xc5051d80, 0x22caf208, -0x0105e179, 0x12725393, 0x58666679, 0xd5b54c66, -0x3f1cfd44, 0xc2e6ca1f, 0x9a47391c, 0x0ff00b11, -0xe5a8b843, 0x00c7b947, 0x7ef41e1b, 0x40c8defe, -0x061c4748, 0x501b174c, 0x21611ada, 0x69eb14bd, -0x00bd6e5c, 0x33a72701, 0xe9d285c5, 0x1752f7d3, -0xabc0b87e, 0x15881ab8, 0x22cb07c8, 0x842dd404, -0xc329da03, 0x3f57050b, 0x174a22b6, 0x4948d460, -0xeb398175, 0x3a288d3e, 0x9e133b53, 0xfb7513b6, -0xc7ded194, 0x8d4d1f18, 0x5f28e89a, 0x7a3a5c1c, -0xafae9031, 0x0520c0be, 0xf075daa5, 0xbe4f08f6, -0xea565155, 0xd7e91348, 0x726128fe, 0xc15005c8, -0x947606a8, 0x57e6e93d, 0x43212e92, 0xe94393d8, -0xb95734df, 0x5dd84ec0, 0x2efd3e63, 0xc1ba8153, -0x39bb2e0e, 0xc1cd9028, 0x7cf11f40, 0x52fe42b3, -0x1da2db41, 0x9bff68b0, 0x80ec28e4, 0x408b4219, -0xe365e8bb, 0x26621b28, 0xf14a09ad, 0xf50aa120, -0x6b0c89da, 0x088de91c, 0x012b986b, 0xf1068a93, -0x58d8ee6f, 0x3a3c0cb8, 0x1ef3438d, 0x38bff442, -0x265b7712, 0x05407017, 0x28501f73, 0xc3017561, -0x93886637, 0x4aad9e4a, 0x8331fb3c, 0x721e08c7, -0xc1a288e1, 0x597e1f6f, 0x8a94e868, 0x595a0447, -0xec394468, 0x1f36a1d4, 0x31f129ef, 0xdd68b64c, -0x6a51d21f, 0x28f76803, 0x42b9688d, 0xc3d355a0, -0x73ba7550, 0xd5bbaa08, 0x03d4dabf, 0x037a802e, -0x2574b92f, 0x8f82c3d2, 0xe8519495, 0x3ab817c2, -0x18bbbbf0, 0x3a388031, 0x3980311f, 0x8380752f, -0x9f75fbb2, 0x56fb6854, 0x05e889a3, 0x7b585e84, -0xa02871a1, 0xe90405a7, 0x16dbeb73, 0x408dbbfc, -0x6a525f01, 0x52fd8d0a, 0x87c33381, 0x811784ed, -0x10a3144c, 0x2456aceb, 0xe8717e89, 0x84ed1d36, -0xc3558bb3, 0x47315286, 0xb84af0e4, 0x7606eec0, -0xda04ebc3, 0x6d303d40, 0xfa11f572, 0x75ab3456, -0xbbe80865, 0x9a23f165, 0x02c8d260, 0x7d6e0278, -0xb766c52e, 0x9a0462db, 0xbdf34117, 0x1f8ce547, -0x9304ec66, 0xe8aecbff, 0x07e0e19b, 0x3d61db32, -0x607c79c0, 0xb5ed14b6, 0x47854b68, 0x0b0b2110, -0x68c8b363, 0x3a0d1f99, 0xa37afb7e, 0x0f55fc12, -0xfe8eb58e, 0x7b609b08, 0x6f358477, 0xf6854a7f, -0x8ed68609, 0x267eef7a, 0x3c9f1878, 0xff046ca1, -0x62be0c50, 0xffa24ec7, 0x7571f021, 0xfe162198, -0x023331ba, 0x8d09a1c2, 0xc9b8f865, 0x36bb7689, -0x0d06fe66, 0xa28c4a02, 0xdfbb5222, 0x7479feaf, -0x8f07b927, 0xe645992f, 0x7bbbaddf, 0x0233743d, -0x7f2304be, 0x0d783d92, 0x5b896b7e, 0x62229f89, -0x70e39beb, 0xada7dcbc, 0xd5489090, 0x041805cd, -0x9fbf082a, 0x1943e8ca, 0x689970ee, 0x66d731dc, -0x537a185f, 0x4370a346, 0xc5af7b61, 0xb34e22a4, -0xc1956809, 0x0905b24c, 0x998a6064, 0x4253426e, -0x3445532e, 0xbb07b040, 0x46b36876, 0xfb241c89, -0xb84dfdbb, 0x4914433f, 0xff147ab5, 0xf200ee94, -0x9e3a057e, 0xb22bd94d, 0xfbc9856b, 0x6f17e245, -0x74204239, 0xb1e74c1c, 0xeab19644, 0xe991058e, -0x77bebec4, 0x6dfb0f59, 0xc4cab80b, 0xfc637afd, -0x8d43b3ac, 0xfe8c2ddf, 0xc20a02fd, 0xb1b077f6, -0x0974ae03, 0x4218b7e9, 0xc3fb0114, 0xae6cec06, -0xa6a1a753, 0x9e11b6ef, 0x01e25e78, 0x6a36144f, -0x67d46801, 0x8d7378ed, 0x2dec686e, 0x1a26fa3f, -0x427827f9, 0xcf688574, 0x9c5a02ca, 0xc28b607d, -0xf057982c, 0x136f2243, 0xc8cc425e, 0x372be94b, -0x184d2231, 0x29990824, 0xefb3cdb0, 0x34d3880f, -0xfdc9ee01, 0x6031fcd5, 0x5d43e198, 0xacc746e8, -0x06a2f7a3, 0xf1a4a55a, 0xc3e051a0, 0x62950c77, -0xe8d3a3a1, 0x05f12aee, 0x07d7891a, 0x3c03ebc1, -0xb58c3e12, 0x0fa32257, 0x67170a7e, 0xbfd0d19c, -0xc5034f0d, 0xed0a8ba1, 0x7fe60b78, 0xd9625d68, -0xe355b1d7, 0xa6a33140, 0x09d80a8b, 0x8e7abc1a, -0x8fb386a1, 0x317bb5fd, 0x0d105089, 0xa11c5889, -0x67784521, 0xbe8a20bf, 0xd301c703, 0x9ec70691, -0xeb7839a0, 0x6498e9ec, 0x60170030, 0x58153bea, -0x7849c9dc, 0x85dd3634, 0xd12a68fa, 0x480ba81b, -0x81d1584c, 0xeeb748fa, 0x7ca5f81f, 0x0f186924, -0x96201dbe, 0x6f4813b8, 0xf07502c2, 0x30772874, -0x56e455e8, 0x8e12bd8d, 0x1dc5b6e5, 0x8820ce4e, -0x4dbb920d, 0x8c26425b, 0x9d853488, 0xfa2c11ec, -0x74237850, 0x7d9c3a2d, 0x27e8ec3d, 0xf7caeb33, -0x74012757, 0xdb4b748f, 0xe8b712fb, 0xab0bee5c, -0x05d59ed5, 0x5a60fe6f, 0x42fd10dd, 0x502725fc, -0xc589da39, 0x870f34f9, 0x3e060107, 0x885b060c, -0x20d93904, 0xf5187e0d, 0xc4820f24, 0x76cb3936, -0x60aea10e, 0x393151db, 0x780f17f5, 0x803396e1, -0xf4fec235, 0xa268b128, 0xf56c8675, 0x32be1cf6, -0xba05ae80, 0x3cca140b, 0xfeed8030, 0x81cacc27, -0x868bc00c, 0x3db96d01, 0xe40e23bb, 0x1891138a, -0x4d8b2c09, 0x0dd6ddf7, 0x1f1c0339, 0x76b97228, -0x142c0f7c, 0xf01d0776, 0x0a72ad77, 0x77f339ff, -0x106c3ba1, 0x34f0dbad, 0x34781376, 0x072b092b, -0xaa510a2c, 0x906f5b72, 0x7c40f6ac, 0xb08d3eeb, -0x1b80ee44, 0x100bd3e0, 0xc06855d9, 0xd340df10, -0xdb2ce02c, 0x55eb4b3c, 0x35c3dc2c, 0x4f19c561, -0x86099c16, 0xd86fda45, 0x75d36c82, 0x71e9d49f, -0xf4465004, 0x8954d1eb, 0x2c3dd2de, 0x24a90d94, -0x88f0c09d, 0xff448018, 0x4c278a41, 0x7fd07971, -0x04b75166, 0x10e566b9, 0xa9b14fb3, 0x500c07de, -0x4d2d25b8, 0x29a94d7a, 0xe634363e, 0x14d83c17, -0xd8a58838, 0x9a456877, 0xdb64b42a, 0xcf8c3aac, -0xf94ce818, 0xe8544899, 0x16588213, 0xb844a1a6, -0x4611178e, 0x2497248e, 0x08dc96a1, 0xdda24a5d, -0x50291c54, 0xef8d1068, 0x09cf8905, 0x811874d7, -0xdbb6e36e, 0x392e2bee, 0x0e726ff1, 0x0686821c, -0x39d2ec31, 0x037ab0c2, 0x43b04729, 0xa924d2e0, -0x547ab850, 0x01a3a109, 0x0858a177, 0x445d4b3f, -0xa5e1b08a, 0x77d8429b, 0x5352c3df, 0x26034808, -0xbac8d745, 0xf0522084, 0x3163c36f, 0xd82932c3, -0x1d01b701, 0xdeb6ab1d, 0x15a33c58, 0x2b901841, -0xa29ba701, 0x6981b42c, 0xac456d69, 0xbb43ca5e, -0x442fbb16, 0x0269c2ba, 0x03edee6f, 0x131a483d, -0xb923a32d, 0x31054cbb, 0x1ce5c7d2, 0xbb44460d, -0x16fffb95, 0x3920c283, 0x83637ef0, 0x3d4a40ba, -0xdf060082, 0x75b8b5d6, 0xac138be4, 0x60040edd, -0x346ffedb, 0x95393b11, 0x06774048, 0xf939c872, -0xea5fc472, 0x742711d0, 0x05d65716, 0xf444808b, -0x267266fe, 0x404124ea, 0x3589a773, 0x8d8e108b, -0x61104535, 0x9d7f6246, 0x76dcd75b, 0xc11bc267, -0x4c8637e6, 0x6d8bdba3, 0xa48bd8b8, 0x4c8e1d4f, -0x7fd30dae, 0x01b0db3b, 0x29ea11f8, 0x42d319c1, -0x6116db1f, 0x1d8d0d84, 0x40440f99, 0xbb613c50, -0x09392b75, 0x085c8924, 0xf738821a, 0x2910d63d, -0x25f02835, 0x294c0c00, 0x5edf8bb7, 0x014f333d, -0x01fb11c1, 0x4d5c11cd, 0x7dd43b5e, 0xf8ac0ff0, -0x5d0c1d09, 0x7453715b, 0x489e1a85, 0xb4ff383a, -0x5ed1b637, 0x4d829415, 0x43154ea3, 0xb69f706b, -0x0de31dc1, 0x1c6a7918, 0xee0ae409, 0xb7155c6f, -0x8810123d, 0x1ca9b088, 0x468406b0, 0x68683471, -0x4ff88baa, 0xc77fa3e8, 0xa1d105b5, 0x5ab07861, -0x406fc232, 0x0eb05663, 0xbdded50c, 0xb6737705, -0x11b9e82f, 0xd7272dd8, 0x11b68a35, 0xf94234d5, -0x46ff3226, 0x7b690110, 0x7e34688d, 0x38db3169, -0xc00933f2, 0xbb8358c3, 0xf448ea75, 0x831f2687, -0x54b3ff57, 0x2fb165b4, 0x2051236c, 0x50e85569, -0x2f4f6793, 0x726cff56, 0xbb035116, 0xabbd8e86, -0xa87f5738, 0x66df60ae, 0x893a6e39, 0x3474faee, -0x5c315538, 0x3cbee8cb, 0x0702e142, 0x6deb418e, -0x5e0af15d, 0xe9e021b5, 0xd58e4816, 0x897eec2a, -0x671a39c8, 0x20ad59e8, 0x0d0e24c2, 0x08d43017, -0xde400574, 0x8650ab59, 0x50f7013a, 0xc14bab54, -0x5b7e58f8, 0x1b7420ec, 0xe652c0f9, 0x4e6f8c1b, -0xc7d2533b, 0xa9b09ed8, 0xc8bb51d7, 0x19da29de, -0xd2318c8f, 0xa1b3a7a4, 0x0370154a, 0xd7ce3a27, -0xfdebe928, 0x21f89d4b, 0x3d802cdf, 0x813ed7e5, -0x6d130358, 0x209844af, 0x687b3810, 0xc0e00281, -0x1881146c, 0x7681513f, 0xb3e02db5, 0x02ba9f16, -0x825344d7, 0xed85ce48, 0x4b77746f, 0x8a07be82, -0xeb1de41d, 0x4c8ac832, 0x6e27a3fb, 0xaee8a3fc, -0xa3f87dd4, 0xdde206d8, 0x1a9981c2, 0x25231588, -0x995c0eb6, 0xdce2f025, 0xbbf0a8c1, 0x148de9b1, -0x840cf390, 0x26dc152d, 0x4b6d2284, 0x9325c8dc, -0x04fd6e75, 0x4c04dc58, 0x172f7bc0, 0x5f8e22cc, -0x02a211b5, 0x73044a94, 0x42da26f6, 0x47d572a0, -0x8a0c7a8b, 0xd8606d46, 0x366213da, 0xf50a7c03, -0x2bdb0d1b, 0x6c4fad7a, 0x74e88018, 0xb7dff086, -0x74020474, 0x2992a17b, 0xff58e9c8, 0x0e9ae89b, -0x869bbd05, 0xf7087544, 0xf4f002ee, 0xfb3be4df, -0x0476eb89, 0x6f0d18ed, 0xcda1b181, 0x2342488f, -0x927b9eb6, 0x945f973d, 0xab5e4b29, 0x50985744, -0xf6269a25, 0xad1afc35, 0xd3e919a3, 0x01faa1fe, -0x20cda06e, 0x300be9de, 0xdb86717d, 0x1f10c436, -0x461213d5, 0x725a31c6, 0x4cc43b28, 0xfd522a78, -0xda81402e, 0x73c8356f, 0x0344cc35, 0xd2340f03, -0x3f125bb9, 0xb9a08788, 0xefebacd5, 0xdb32148c, -0x522e9077, 0x9b18d029, 0xdf4d60e0, 0xd4c73550, -0xfd5a5846, 0x33183b1e, 0xf69c3a1a, 0x7493c505, -0xe0db9e0a, 0x5106e6d1, 0x5189bb88, 0xd8f50c17, -0x83169e0a, 0x58e00d50, 0x6b77da0a, 0x5031048d, -0x51c8528d, 0x5fc12201, 0x895233a8, 0x5fe2e8d8, -0xd8337b88, 0x92d50f69, 0x2b565026, 0x120f901d, -0x1827c37d, 0x3c70e853, 0x35011861, 0x7bb87db8, -0x5e08314a, 0xc35e6d5b, 0xa752e805, 0x8c326aea, -0x44a3d02d, 0x449e231b, 0xab3deb61, 0x77ff32d2, -0x8d1cbe89, 0x2a66fc42, 0x046d0777, 0xfce890eb, -0x4028ffe4, 0x0bffb383, 0x161df684, 0x19dc0582, -0xf881dbeb, 0xc0da4e64, 0x33ff8c26, 0x34776010, -0x51166b2f, 0x530ac702, 0xab3c058d, 0x3bd38455, -0xdbfc3d1a, 0x7f0dffef, 0x74464c45, 0x2ec0313e, -0x8175d175, 0x1336007d, 0xfa781b03, 0xd6396d18, -0x75d38960, 0xc74bafbc, 0x539e2a5e, 0x74bb4ed6, -0x05c73d31, 0x78b1c1f0, 0xa19bbad6, 0xdada251c, -0x0045dda0, 0x3500013d, 0x581049b1, 0x38fd8d1b, -0xa2bc02e8, 0xa09214a3, 0x99db776c, 0x34082872, -0x8d232000, 0x7742ba36, 0x8c032027, 0x77ee0605, -0x013be60d, 0x6a6b51e8, 0x68115612, 0x5e0b7cc0, -0xf00a2a32, 0x15811c2a, 0xa2d0af11, 0xb844d43d, -0x298cff46, 0x5a7804d3, 0x0414abe0, 0x0dcb6fbf, -0x9d56be64, 0x6ce5203d, 0x04bd9df2, 0xfee6e964, -0x06197463, 0x76baf6dd, 0xba2f1281, 0x84093a1f, -0xc5e226bf, 0xb923c08e, 0x18080a2c, 0x53fbfab3, -0x6855106a, 0x3a99e812, 0x53a0e830, 0x8b0cdc3d, -0x5c7da3a5, 0x8d169f78, 0x52d40590, 0xf4a38da3, -0xb93f182c, 0x31f5b0e8, 0xb5a9845f, 0x0be3c00a, -0x7802fdec, 0x0a62897b, 0x95548d69, 0x80021c3d, -0x5be36ffe, 0x7442be99, 0x3907bd76, 0x514676df, -0xfdde4b8b, 0x439236a5, 0x010814cb, 0x0c5651f1, -0x51044b03, 0x0561fffa, 0x7c745647, 0x0303438a, -0x04a80873, 0x5f671e75, 0x0365db01, 0x54935d55, -0xac19ac75, 0x2124b6b9, 0xb0522682, 0x563487fa, -0xbbd6555c, 0xa1000039, 0xe7ac5dc4, 0x01e8a2c2, -0xccba6e9c, 0x5bc087c0, 0xe901252f, 0x065149df, -0xcb52bb0b, 0x8a525009, 0x10a3cc29, 0x39720e09, -0x1606f7d6, 0x9bd5d50f, 0xa435e0dc, 0x32c6d083, -0x5c3cf6db, 0x817f750e, 0xe913ea1a, 0xe15a28d4, -0x0fc339c6, 0xc250198d, 0xd86e13c1, 0xadf8dce5, -0x8d4a7e3f, 0x7983a488, 0x75daee40, 0xfd988bd9, -0x12b185c2, 0x0b041e49, 0x8dc977f3, 0x60681d5c, -0x0c21b6d9, 0x1550cb0a, 0x8470ff30, 0x75289c1a, -0x00c42444, 0x60eb1572, 0x12db811a, 0x3987082f, -0xfc24c103, 0x0c9be217, 0x8b277330, 0xe0834613, -0x0c4b8dfc, 0x4e9b348d, 0x83633efd, 0xf0010ec0, -0x3930bad9, 0x762eadc5, 0x17c67607, 0x1e74992c, -0xd5741f70, 0x16a0281b, 0xcc032c9e, 0xd2963f66, -0x35c1447a, 0x577adeec, 0xb56d1afb, 0x66dd1fe9, -0x4d00002b, 0x8e12db46, 0x4c0c4809, 0x928cadb2, -0x58092009, 0x0e241dd0, 0xac2c39e9, 0x28340c94, -0x64c11f6d, 0xeb0e753c, 0xae01b8a4, 0x4752e104, -0xc5987d31, 0xd52de1c1, 0x232e11d2, 0x7b2f998d, -0xdbdb6d40, 0x3ca27d3f, 0x9dc181fd, 0x8b505b8b, -0x97490271, 0x408586a2, 0x202203ce, 0x0604ec87, -0x53e378a9, 0xe851c601, 0x84e9f30e, 0x350e1dbe, -0x664a31ed, 0x64a11874, 0xe146f46e, 0x7220ab08, -0x0973a40d, 0x83a7612a, 0x4eeab86d, 0xe37092c4, -0x5a1b92db, 0xf1c54c10, 0x0d8e8626, 0xfd2ae86f, -0xeb3c5853, 0x3c7e4307, 0xdacfa307, 0xb4ac467d, -0x7405e2c1, 0x8d77e575, 0x078da15e, 0x48763c59, -0xb1df0473, 0x132f7297, 0x86b45482, 0x440f7644, -0x6ddcdee8, 0x400c501c, 0xeb40b976, 0x48058bb3, -0x6eeada11, 0xc18540a2, 0xf5451c10, 0xca7bb194, -0x2ba67800, 0x85f98341, 0x383dd182, 0x21348638, -0x20889398, 0xceaf86c0, 0x371561f3, 0x244c4300, -0xed8d5a10, 0xff17ee76, 0x8334572e, 0x33391411, -0x9a011a7b, 0xb8455ae2, 0x01a0dc9e, 0xf120351a, -0xd1560390, 0x92a61300, 0x312d1a13, 0xbd770edb, -0xa7860c10, 0xf8bff789, 0x590526f7, 0xc839d101, -0x3906738d, 0x410276d0, 0x398b7620, 0x730e181e, -0x6ec50c13, 0xd0881ef7, 0x3bc21f23, 0xfc0a7695, -0x3a5b0b73, 0x0b8b0f10, 0x3b0c7609, 0x39c80f15, -0x0d116807, 0x1dfd1b18, 0x490254c5, 0x21d0f71c, -0xfbd139c2, 0xbad81c3e, 0xd1297f0d, 0x320b383b, -0x16086557, 0xbbde644a, 0xc468416c, 0xc0466670, -0xf621067e, 0x0105e3f1, 0x0e8b2893, 0xa3f143ca, -0x7cc911a5, 0xe9de15b8, 0xde396e46, 0x084018c0, -0x7cf19368, 0x3f0035b3, 0xaec00b0e, 0xc1084331, -0xb037b647, 0x481e7749, 0x80049d10, 0x64d8307c, -0x0d0dada0, 0xe92ed98f, 0x2b6e4986, 0x11eacaf0, -0x8bad087d, 0x128f6fc7, 0xee29066d, 0xb157a366, -0x47ec264e, 0x3f5de96e, 0x896d284f, 0x9b80c44e, -0xf4032962, 0x4ca6e999, 0xcc684c7e, 0x17e9c316, -0x9730a1fa, 0x12fc299d, 0x944d2e04, 0x60703570, -0x45b82815, 0xce020b1f, 0x3dbae800, 0xc36ec2ac, -0x09e8ba1f, 0x3582fb39, 0x4d730ca8, 0xadda2d01, -0xdf07b0dc, 0xda222e73, 0xa91ffd58, 0xc1c2f905, -0xc93109ea, 0xcf19d629, 0x3637a542, 0x89d801f6, -0xa33f892c, 0x888b882f, 0xeb29ec45, 0xb8cf3989, -0xc4c2a5e3, 0x72f01b6f, 0xd9dee4ad, 0xfafd91bf, -0xc209f031, 0xa15e4074, 0x5b4daf3e, 0x01498aab, -0x4ec5295a, 0xd63a1058, 0x15535530, 0x6d6141a0, -0x15cfbc63, 0x913305c7, 0x362594a1, 0x92ec1f8b, -0xb577d8a5, 0x3db951e9, 0x3c521d92, 0xe7a805c7, -0x877809ac, 0xe83dc3c5, 0x64a3b9d7, 0x58906bf0, -0x9b08f759, 0x2430fdc3, 0xc749c7e2, 0x909037e9, -0x25889b86, 0xdaddd2e2, 0x37257388, 0xf6c0bf68, -0x04b6a0c1, 0xb903740e, 0x9a81c287, 0x5b0cd1a0, -0x10a69531, 0x0d1bfb46, 0x41d02bfc, 0xdb72d939, -0x827a7e0e, 0x54968233, 0xbb7d0ccb, 0x1c6d2144, -0x7416d2f7, 0xecc48602, 0x5f10ae02, 0x3d02ba1c, -0xdd15633d, 0x062d0577, 0x10c03df7, 0x02f56f0d, -0x697868af, 0xed55b85f, 0xd2e9f713, 0x5f406c1b, -0xc11fc5c8, 0x475a45fb, 0x35c3db6c, 0xd583025b, -0xd0be6f07, 0xc309db7a, 0xc1290286, 0x03e2bbcb, -0xdcdbca29, 0x4f86e0d6, 0x23db16c2, 0xbd158002, -0x1140c8dd, 0x0be2d177, 0x59d18943, 0x27b1ac44, -0x6c5bea78, 0xf6ab69bd, 0x79cc49e8, 0x0f40046d, -0xb60815bf, 0x4141de05, 0x8aeb100c, 0x7f16ab28, -0xc244700d, 0xd6a1b729, 0x8ae346f8, 0x4330841e, -0x8a1c7414, 0x06ff9f41, 0x8818fc4b, 0x1cc888da, -0x38df2bdf, 0x460a75c2, 0xd52ff047, 0xe4751f7e, -0x0fdf7d1b, 0xe183c3be, 0x41321adf, 0xd1be04bf, -0x24d0295e, 0xeef7dbf2, 0x147f3b01, 0x744c5e0a, -0xce5e5b0e, 0x5b06c2f6, 0xbed2229b, 0x118a3842, -0xb438058d, 0x093cfa64, 0xee92ec76, 0xe20dad0e, -0x51952f8e, 0xea8918b0, 0x4a184a4a, 0x31f631f4, -0x644a88ff, 0x170532b8, 0x5ea8e813, 0x8de83e34, -0xd19d6870, 0x779a3b74, 0xb7eb7ffd, 0x7f02ffa8, -0x24684209, 0x752e3980, 0x08e6c126, 0xafc60947, -0x13bf0bdb, 0x89c47e03, 0xc8c17bf0, 0xc6890410, -0x1c371a22, 0xe53089d0, 0xa4e829a2, 0xf10c80fd, -0x328dd107, 0xffb75bcb, 0x1258f812, 0x60e402eb, -0xc09e64e4, 0x8204e1a8, 0xa8a5ee1b, 0x19e809d7, -0xe8726f18, 0x93f1da90, 0x01681861, 0xcb633424, -0x4fbbf70b, 0xb8e8a9d0, 0xe6d1b097, 0x08afe864, -0xf7620f8e, 0x1560e6df, 0xb6d3a6eb, 0xe8b7bd4d, -0x2efb83c6, 0x743a901d, 0x120e890d, 0x4bdbd4dd, -0x064264e9, 0x67d5e80d, 0x6c393c53, 0x3d804a19, -0x7f26c1da, 0x2e2961b3, 0xef10abe8, 0xe8dcbadd, -0x95882877, 0x13c0b602, 0xa039de6f, 0xeb5bbbaf, -0x187507f1, 0xb3b753e8, 0x7423c7dd, 0x0823e8ef, -0x7417c389, 0x240dfbce, 0x74c409e8, 0x0ab3a707, -0x12827777, 0x3c237496, 0x77fb70ab, 0x78a2e8f3, -0x11741bf8, 0x7d740404, 0x9bba0fcc, 0xbadf7578, -0x0aebff93, 0x15f0ba0b, 0x616baacf, 0x1213527c, -0xd0b6b9c9, 0x84103221, 0x110fe0db, 0x07bf1576, -0xe805eb58, 0xc9c6979a, 0x906ee952, 0x140ef2a0, -0xb5681c27, 0x5f01368c, 0x1a2d70f1, 0xb9e9b220, -0x91402088, 0x83c0f68f, 0x8d809f4f, 0xbe8dd086, -0x1dc51d26, 0xe4f8d67c, 0x99688d08, 0x8346a281, -0xfff00a1d, 0xf8873036, 0x3b453d14, 0x83b900b0, -0xc1bb8daf, 0x4914c3a7, 0xbba4a0c0, 0x88c19fc1, -0x938bed3e, 0x3ddc83c8, 0x7ed90e79, 0x17d57740, -0xdfc41418, 0xbd3b3442, 0x1693f726, 0x96978883, -0xf004750a, 0xc239f00a, 0x381b07fc, 0xc7916ac6, -0xf79672ea, 0x6346dec2, 0x1175e403, 0x0aa96569, -0x177efdf8, 0x07ea8130, 0x3b47e281, 0xff6d2c54, -0x67229afb, 0x61c0208d, 0x29ced70b, 0xe9f51d7a, -0xe39e7f56, 0x40335f35, 0xf83974b7, 0xf1f75557, -0xd8afe850, 0x2c6853f0, 0x2c4a2595, 0xe575e894, -0x9154dbbe, 0xc66e775f, 0xe8241c44, 0x277f4b62, -0x89e02930, 0x65e972ba, 0x1c0608ff, 0x391c0f06, -0x3ed6bc21, 0x0937540b, 0x1ed83058, 0x5e018b84, -0xd3f8c993, 0x67fca713, 0x9c2dbb89, 0x267f012b, -0x91484264, 0x75ff85bb, 0xa1ad12e3, 0x3ab38bc3, -0xff09d9a7, 0x30e05db0, 0x39052abb, 0xb7a4f2f7, -0x1ffebbb9, 0x393276f2, 0x392c7311, 0x139a66b4, -0xc2df407a, 0x8ea148fa, 0xb9b7a1f8, 0xd338850d, -0x33093914, 0xd0341789, 0x19d6ddbb, 0x779a3bf0, -0xa581750a, 0x95302579, 0xe8868d7b, 0x0b4463ee, -0xd3a07cb4, 0x58184e6f, 0x1d5e016c, 0xb6ba15cf, -0xd43c7e01, 0x5ebe9f75, 0xbe582b11, 0x7ac13e91, -0xa14be2e1, 0x20d1a328, 0xa2068710, 0xcf87debf, -0x0452e03d, 0xd69c0d99, 0x3aa172e9, 0xb4060745, -0xf8e417e9, 0x2932a1af, 0xfc508dc8, 0xace3c802, -0x726a3f0a, 0x8951d319, 0x5b7b3894, 0x2415de44, -0xb16ec310, 0xea4e131d, 0xe6168b0c, 0x9181da29, -0x8db12fee, 0x0d3ef84a, 0x760a7823, 0xf13e5821, -0xe10afc42, 0xb2ed960a, 0xa8480d89, 0xc980be33, -0xc2d9966f, 0x87fc408b, 0x4188358e, 0x39ce0746, -0x66a8f5c2, 0x767d3c87, 0x3295a05e, 0x3050f1ba, -0x42f8528b, 0x23d7a0b1, 0x828f7a75, 0x2fb3a1d9, -0xd4648cc1, 0xa155e2a7, 0xd6f8cee6, 0x0ea2e1fa, -0x6884bc80, 0x2e28c380, 0xc8a81ae1, 0xf7b04a99, -0x20b94f75, 0x5303281a, 0xa6112304, 0x20cc646b, -0x1ecf086d, 0xdb9e66bf, 0x4ab2fb24, 0x417a38e8, -0x5fd7b00e, 0xd0f015d0, 0x346c1401, 0x7955bbd9, -0x6d0bb796, 0x88115a58, 0x43e100b8, 0xbd0869c5, -0x01331ea1, 0x07bfec8f, 0x0a124f7c, 0x22ffec34, -0x9d032d18, 0x7b7520fb, 0x081a14a1, 0xadb94f5f, -0xe80af508, 0x6cf4a75b, 0xefe86122, 0x282aa7b1, -0xe0ebe80a, 0xc02e02a9, 0x43f728b7, 0x58594fdc, -0x49e2ce9b, 0xc433e836, 0xe8450d3e, 0x61dc80be, -0xbe0028c1, 0x45f7dc30, 0x150b502c, 0x1f1ab9d7, -0xcc22eb19, 0x128eb99e, 0xe3d8cf27, 0xb2e98be4, -0xd0753315, 0x3a20cc8a, 0xa29789e3, 0x189a4b04, -0x0d370806, 0x061e3617, 0x5e055b59, 0x1ce43d12, -0x4a08ef29, 0xcaf176d0, 0x147b8115, 0x46c3ff00, -0x9d7502a5, 0x438daf04, 0x13e8501c, 0x936db02b, -0x18ca4210, 0xe0161406, 0x311be276, 0x00848db6, -0x2ad21ff3, 0x9509b604, 0xa994abee, 0x280e45a5, -0xc1183f54, 0x8c68056f, 0x03c6661c, 0x80597845, -0x4128df5c, 0x03884558, 0x2e891dc6, 0x04e3dde8, -0xc8370500, 0x5ca7c54a, 0x88ac1255, 0xd048c343, -0x0618e7f6, 0xaca1ed09, 0xb540ed01, 0x8906bb1b, -0x6b70dade, 0xe8b314c4, 0x1b90f6aa, 0x219a2070, -0x16eb7687, 0xa28e54ce, 0x51a41363, 0xd40fef42, -0x1040ea0f, 0x643e0539, 0xb445b423, 0x3241fc80, -0x602ee7c0, 0x2df6206a, 0xaa14c294, 0x836a341a, -0xed2d8abf, 0xd46897ed, 0x02ad4194, 0x3c02408a, -0x7866dbf8, 0x3c3c23fb, 0x09e9ec75, 0xee463b68, -0x180fe302, 0xf0304e3b, 0x01b074d4, 0x5588b57b, -0x039173b4, 0xba8768ae, 0x700c407b, 0x51cd54a3, -0xbf8ab6dc, 0xc6110688, 0x55d57943, 0x83439bbd, -0x31e514e8, 0xe88ed90c, 0xe7e8ad47, 0x1e58c6f4, -0xbae0b6ee, 0x56225a98, 0xcde80343, 0x87689619, -0x86c65241, 0x59a1fc95, 0xa39e0bc5, 0x7153a845, -0xd427243a, 0x582647e8, 0xb53f11ca, 0xec707ee8, -0x4b6f8c43, 0x46727e8d, 0xb6edc214, 0xeb8351fb, -0x0edf860c, 0x5f030247, 0x1ceb5d04, 0x7947c3f0, -0x6e3de8f0, 0xf1110ad5, 0x3bd45dba, 0x0623c35f, -0x8e9f4307, 0x00892520, 0x9ce5c263, 0x4f28c7c5, -0xc256e804, 0x1c070169, 0xfcb96c06, 0x782a06ee, -0x4e8ff42c, 0x760df983, 0x5b5015e2, 0x595d1d6f, -0x66e40c42, 0x090d5a07, 0xc855ed09, 0xc066a76c, -0x4988002b, 0x5906fdb4, 0x097d800a, 0xd8640f11, -0xf152a9ec, 0xa9555600, 0x7b0340c4, 0x546573b5, -0xc68f5dce, 0x46083cdf, 0xb0bd4681, 0x07bc2fb3, -0x3974b516, 0x0405663d, 0xf19b778d, 0x5626c10f, -0x0e6f8db6, 0x30fa3ee8, 0x6d006c09, 0x4bbae77d, -0x6d883eca, 0x0f1108c6, 0x8e45143b, 0x1bdddfb1, -0x5f385102, 0xe856531c, 0xde0c310c, 0xffd9ef1b, -0x83561677, 0xe85720c7, 0x041127fa, 0xea743468, -0x60f336ec, 0x0468060f, 0x550fda31, 0xd6b7086a, -0x0792665a, 0x79fb402d, 0xe026c08e, 0x0595e0e9, -0x852cdbf7, 0xdab6d188, 0xc1fb0fc4, 0x430b740c, -0x1b815762, 0x2548c031, 0xbff1bf21, 0x8d38126a, -0x528a0e6a, 0x3cbbc60e, 0x53870f0a, 0xa0c4e28d, -0x932bc6fe, 0x42a7005a, 0xfacd7b89, 0x0b10cdcd, -0x7fbba954, 0x89c5f7fe, 0x823f2c06, 0x5edab074, -0x6194c6b0, 0x70846519, 0x5c627c56, 0x582478d1, -0xef087594, 0x46e91c19, 0x938f3a1e, 0xcd0e1f8d, -0x22c6833a, 0xae544584, 0x56086f6e, 0x86742b04, -0xa02d5cd6, 0x8780bbf0, 0x7e836b13, 0x62db0627, -0xe8977c2c, 0x0f30fd26, 0x277b6c4e, 0x694506bf, -0x1de3240b, 0x86ddb74c, 0x05dc3d0f, 0x13cf8fff, -0xeac8148b, 0x533ff614, 0xae09346c, 0x240c8b74, -0xf308748d, 0xe33c4b80, 0x29312278, 0x0e73cfd1, -0x8dde15cd, 0x0e152962, 0x3b203445, 0x0eb7dbd0, -0xff0f7c03, 0xebfc15fd, 0x3501dfe7, 0x68f8ae81, -0xfdc443e0, 0x60bf10e8, 0x4cf86e8a, 0xb9057e07, -0x97f14b07, 0xc3843762, 0xf6e8e3d3, 0x96c751f2, -0x71e0df4e, 0x99a4071c, 0xb129f9f7, 0x976b125f, -0x44b72849, 0xd6381048, 0x45de2ec1, 0xa173748f, -0xca89d9d4, 0xb18b54a0, 0xfe2423c8, 0x8db196aa, -0xaa4fdb43, 0x460813b8, 0xb56d5b04, 0x07fe76c4, -0x0616fcf3, 0x6274a16e, 0xe0d1c307, 0x7b18bc80, -0x1378b622, 0xf0b40618, 0xebdd0704, 0x61740678, -0x230354c0, 0x132eb468, 0xeb30810f, 0xee031917, -0x2b028fb1, 0x681b54e7, 0x00d48b64, 0xfcc22033, -0x42f8e6f8, 0x0362ee1f, 0x596851df, 0x8722a664, -0x08030680, 0x5dba6638, 0x01a4fbed, 0x6d431206, -0x15040614, 0x9946b630, 0x57176ddd, 0x56e303a9, -0x55241453, 0x51cd252c, 0x1374b22a, 0xd250182a, -0xa9b00669, 0x430ebe22, 0x35a3613d, 0xf876506c, -0xe001b3d6, 0x21c05b82, 0xc3db0ada, 0x2ce6638f, -0xf6812e18, 0xf0c345b6, 0xb41945d5, 0xb1e26b27, -0x6d0f498b, 0xb8a56556, 0x9ad85914, 0xe9c3bb94, -0xb97718ed, 0x5e975f28, 0x78c53906, 0x50b83c6a, -0x7f0db1a6, 0xdca36604, 0x341be882, 0x13789318, -0xcd52ac60, 0x7c3ac214, 0x4f83415d, 0xea699e63, -0x7001a296, 0x4a24e702, 0x1c6f19bc, 0x42748008, -0xb8255006, 0xfff8642b, 0x34756832, 0x2be818a4, -0xe8e85b1e, 0x1b0a1f81, 0x671fbe42, 0x665ac447, -0xec10e7be, 0x3ae7dd22, 0xec11c040, 0x74c20b14, -0x07d9efc7, 0x713a02c4, 0xa068cf04, 0x6a9859b8, -0x13ab3446, 0xb7376227, 0xe80c3544, 0x23e8ff23, -0x6d18bc1e, 0x3de9d99d, 0x46782b8e, 0x2495e303, -0xb1406ec7, 0x634a3152, 0xafeb76c2, 0x500176d1, -0x7ee01319, 0xf1913698, 0x2dd0335c, 0x9b20bdfb, -0x2c3e414b, 0x7245e3c7, 0x6d88e2fa, 0x00b178ad, -0x40b43dc9, 0xa5d92bfa, 0x0ca3afb7, 0x5002efaa, -0x5b053be0, 0xf100f4b6, 0xc0c1ace8, 0x5bdcfb9e, -0xba0750fe, 0x0f0386cc, 0xfe5de87b, 0xcc458468, -0x731d665b, 0x0d028bdf, 0x95dbde48, 0x6058bdc2, -0x5da1b702, 0x0e3d79c3, 0x3a97bab3, 0x8df118c3, -0x1408f668, 0x24835d47, 0x4a5aa3bc, 0x201c19e7, -0x1222adb6, 0xf6204e05, 0x2ce88ed8, 0xe984c060, -0xbac00da8, 0x1309b3a0, 0x63206a5e, 0xb0ee9a02, -0xcd86c21d, 0x0dce04e4, 0x13a00fd4, 0x20c67db8, -0x79fda7b5, 0x7e03ff4d, 0xe9357731, 0x75065d0f, -0x2c578da4, 0x6823a976, 0x1a087349, 0x1a6aff10, -0xd9180978, 0x32105c8d, 0x63063be7, 0xdbf29a13, -0xa098fd61, 0x7660da96, 0x2f16dc87, 0x80d009d8, -0xb3130b4f, 0x38848c8b, 0x384c45ef, 0x222ec884, -0xb03002e5, 0x231f0736, 0x2d4d7576, 0x4c590178, -0x75493812, 0x584428f0, 0x2fbd6888, 0x820a583b, -0xb87d3145, 0x1db05742, 0x391e1069, 0x400249d0, -0x58c6c0f0, 0x06d519c4, 0x16ef7902, 0x6012205e, -0x892e4725, 0x6969a1e7, 0xa636f1b6, 0x41aa3da3, -0x8e528ca5, 0x05fe4276, 0xd8a6e748, 0x0f704d72, -0x1985b19c, 0x887c0ac9, 0x5bb9c141, 0xf19ae988, -0xc70ec1be, 0x1559950b, 0xeaab8321, 0x7eb4771a, -0x0d4f72ff, 0x06416dc5, 0xcece7d8a, 0xdcc03894, -0x63098461, 0x086c0573, 0x97153693, 0x7ae0e8f1, -0x484221c0, 0x7e70bb18, 0x4db8a01e, 0x40c1b1e1, -0x38fc18b6, 0xf0c2a79d, 0x2d06c4e0, 0x7da17b02, -0x10805588, 0xe857c550, 0xfd19ee26, 0x181a514a, -0xe997ab9a, 0x585c22b4, 0x5220ae88, 0x25522ebd, -0x167d383f, 0x1da3a27d, 0xfd756953, 0x09fc5198, -0xe9018b1f, 0x386efd63, 0xf6be0a64, 0x428a9330, -0x041f7283, 0x6dc2450c, 0x04b147d2, 0x74d3ed85, -0x175083ad, 0xfbae06a8, 0x941235ee, 0x03e547b0, -0xd7ba3e33, 0x1a7e1ab1, 0x97cc22a3, 0xc148d0b6, -0x9f257df9, 0xf1fdfa20, 0x8b6c2197, 0x2f8c24bc, -0x068024b4, 0xc1e3249c, 0x83a47e0a, 0x8d98ffff, -0x831e1e2c, 0x9f6fea27, 0x8424841a, 0x3e4474b7, -0xbc6c6d82, 0x8018010a, 0x1774cce3, 0x04d09f4b, -0x9e32be1a, 0xe4020886, 0x0d9c4f76, 0x44afc898, -0x821fc8a1, 0x012845d4, 0x816c7d4a, 0xa6d342d1, -0x83f868a5, 0x41809e56, 0xef61ec3e, 0x8c09bae0, -0x25c4012b, 0x3328c9f5, 0xcb1f47e8, 0x6b948eb7, -0xa004f9b1, 0xa874bc9d, 0x8edb2fc5, 0xb6f4ea0e, -0xee391b88, 0x93bd0b73, 0x77863edd, 0xf5720a46, -0xa82d89b8, 0xafc52854, 0x4c758e05, 0x6a152052, -0x44c22e18, 0xe840bd57, 0x68b86c34, 0x50beb8c8, -0x52f42c6c, 0xbb642e04, 0xb67e5c1e, 0x0dbf0141, -0x047bbab6, 0x225ef130, 0x1bddd1c8, 0x00dd54de, -0x4e546877, 0xfffe42e6, 0x62c615ff, 0xd988d4c3, -0xdf7ea180, 0xa09027ba, 0xac846ad0, 0xd13d804b, -0x304275d8, 0x7f0256c3, 0x1135541a, 0xe5ffe1b6, -0x2b750330, 0x8001568a, 0x177603fa, 0x83468d13, -0xc4fd8b9b, 0x37e8ba68, 0x851bee1e, 0xe027b3c2, -0x0230ff0b, 0x12c122e9, 0x580baf5c, 0x837b576a, -0x9b49156e, 0x84f6caab, 0x1a7f75d2, 0x3608fb35, -0x50ac55bb, 0x841d08c0, 0x65df0801, 0x0e2b1964, -0x8001b381, 0x61dbfdd0, 0x9789a023, 0x9275961a, -0x05c6ff6a, 0xee85dfd8, 0x12467318, 0xe88e006a, -0x01e6fdd0, 0x19b3800f, 0x33360200, 0xb656707c, -0x82028ee9, 0xec7ab7c1, 0x4e7401f7, 0x8f010895, -0xed89eb94, 0xab475256, 0x6fe8c743, 0xa47aa179, -0x4a1f089c, 0x0ba3ffef, 0xc58986cf, 0x11187135, -0x483d32b6, 0x35f8891a, 0xe9cbdb15, 0x8a6eec04, -0x2709fbad, 0x0e19a218, 0x0310108b, 0x708617ad, -0xe78c1409, 0xd22a97b6, 0x7a86feda, 0x8ec9311a, -0x6fe3ba8c, 0x383099e5, 0xb81773d1, 0x396647a0, -0x16dfed18, 0xdd41af16, 0xf3721144, 0x7405f980, -0x83800848, 0x481709b6, 0xc0e931d1, 0x8db50bee, -0x2aa28514, 0x47f23db9, 0x6a2ebbfd, 0x6c4c7ec0, -0x3c3c0241, 0x3cb00276, 0x76ac7b70, 0x8d5051a1, -0xd45003c0, 0x03861c9a, 0x10d51220, 0x85d0323c, -0x03104482, 0x10a21ad5, 0x16a8cf87, 0x075f46e9, -0xc8fe1d3f, 0x80c9fef7, 0x0b57a7fd, 0x017e807c, -0x00ea86a3, 0xe13b303d, 0x62008b60, 0x629a4f6b, -0x8c36e48e, 0x58150625, 0xe91346fe, 0x6d387af6, -0xa328538f, 0x7aa39a16, 0x15746292, 0x27e84769, -0x6d5e971c, 0x933b1f49, 0xeb8323db, 0xf67c9c3d, -0xfc5ae904, 0x0099f43b, 0xdca4b884, 0x3bd5a342, -0x09ce6f80, 0xf20c0af0, 0xd1f81e48, 0x6fd1fbd7, -0x718dc1b8, 0x7e8d7d27, 0xf8018002, 0xaae0c739, -0x8322004f, 0x120e8e5d, 0x80758216, 0x1a25781f, -0x08dd5c18, 0x77ef6e74, 0x21a5b91c, 0xca7b4714, -0x0bb02de0, 0x446fb4c0, 0x47b6105c, 0xbf6f80ae, -0x03877c51, 0x725e7c3b, 0xcafae9a5, 0xba1eea41, -0x09e4c0b6, 0x27570dec, 0x05db910e, 0x340fe8fc, -0xd4fdd336, 0xe80b3d90, 0xbd151af9, 0x6c425895, -0xe9988842, 0xe01b7683, 0xe99cf82b, 0xf0418d81, -0x1c51a2d1, 0x1e21f646, 0x02f1675c, 0xed20ad8c, -0x332674c9, 0x313f8981, 0x31158556, 0x11762a5f, -0xed01b1b4, 0xaf3cf890, 0x0875bf3b, 0x06742cb8, -0x2a7f032b, 0xb8f47502, 0xa1ddf044, 0x43391ad8, -0x2dea7504, 0x0f0f0fab, 0xf269515b, 0xf7ccb000, -0x15260647, 0x73f13eb7, 0x67582e1a, 0xc582e5b4, -0x9856b49f, 0x981c5a59, 0xf5111a8c, 0xf72a9d7f, -0x1422ea09, 0x040ebfac, 0x9643633c, 0x141a0626, -0xdb680918, 0xd2405385, 0x704b5776, 0x3b4890aa, -0xfa94a3e4, 0xb890d9a2, 0x48c108af, 0x5bdde27b, -0xffba7f6b, 0x3d107e21, 0xf7ba77bf, 0x55a83aa5, -0xbc00c58e, 0x805829da, 0x875306c0, 0x8ab5003f, -0xb6a15711, 0x85e2acc4, 0xe8f9b148, 0xf01ddf44, -0x8713fd2a, 0xefc1011a, 0xf8f60285, 0xecea848f, -0x0f6caa49, 0x5a4370ba, 0x962b7268, 0x388c6eb8, -0x18446713, 0x57554a66, 0x47244e27, 0x216e5605, -0xe8068f09, 0x0f27194b, 0xdf731a99, 0xebe9d385, -0x1ea314f2, 0xf30422f5, 0x16bacf60, 0x5952f5d7, -0xb1566c43, 0xedd02b05, 0x5c57a0c5, 0x386eb9a0, -0xec81d7c2, 0xa1c10078, 0xd47c0d0d, 0x88ac1608, -0xfa00a2d6, 0xf7ce16ed, 0x010a84a1, 0xa234081e, -0xf5034602, 0x0386168c, 0x75136ce4, 0x1abf76e5, -0xb90c04a2, 0xef824740, 0xcaedd3e0, 0x013cc279, -0x063e3d04, 0xd8184d0d, 0xd02ab193, 0x2206f351, -0x8614c3db, 0xf018ff10, 0x15a9820e, 0x18050385, -0x072b06f0, 0x0fa3f7d3, 0x15c36cd2, 0x2d2f2241, -0x1b040ce6, 0x34ce8d0c, 0x830b63ae, 0x5416b615, -0x38168c59, 0x232374df, 0x800f1001, 0x680d6a52, -0x232cd0fc, 0xe91799bf, 0xff8dc617, 0x060c7f4e, -0xe814bedc, 0xb73df15c, 0x71010ed9, 0x89ba2e1c, -0x1cba5ff7, 0x284b0e93, 0xb750fe9c, 0x8f13bfbf, -0x242c1f9a, 0x436afb68, 0xe8ffb66a, 0xd58a26bb, -0x7efaf2dc, 0x246a28ff, 0xdca1bd17, 0xc9561ce8, -0xb0e2e8c7, 0xa7f04ff2, 0x68483856, 0x5728eb00, -0x87bc7a0c, 0x0c5386c5, 0x09cfee51, 0xe0dd8ca1, -0x1adc4ddd, 0x892fb2e8, 0x2dc729df, 0x475ed47f, -0x63158228, 0x22043d83, 0x7fb77424, 0x570c0385, -0x8b1c2713, 0x2b1c2bd7, 0x611d16fa, 0x6840ec1a, -0x16e31da1, 0xd2324c04, 0x3d163ac5, 0x821390cc, -0xb5439c8c, 0x8cd84e43, 0x9e991674, 0x9a4cdb31, -0x7ff16708, 0xfb8309eb, 0x858f0f13, 0x8b1455f9, -0xc71c2301, 0x9f5f1802, 0x01d8c25e, 0x50f5f001, -0x89ed4907, 0x11d84ecf, 0xe5b10843, 0x26a87505, -0x47ecb6c4, 0x39f685de, 0x895c81f9, 0x48bd8847, -0x34814375, 0x4ba9186c, 0xe8d38c80, 0x516b7013, -0x970a6d24, 0x32061d8e, 0xe2ed59df, 0x79941d1a, -0xbb408ece, 0xf31aae77, 0x3163b702, 0x5d0031a8, -0xffe53374, 0xe27536b3, 0x838d9903, 0xa0831f1b, -0xfd16f6c0, 0xef0d6807, 0x0412d3e8, 0x17f5ba47, -0x6cd23ca1, 0x483944c3, 0x5022a1cf, 0xc8daf1d7, -0x024c0350, 0x0858c8f0, 0x5abd5177, 0x2b92bc15, -0xaa495a9d, 0x84575a2f, 0x410dc203, 0xad8b87a3, -0x03681535, 0xbe1af0d2, 0x02756df0, 0x418dfdd0, -0x6899682e, 0x4290960c, 0x15cfd61a, 0x0aa3ae1f, -0x2a61830e, 0xcbf79668, 0x77f068a9, 0x048302b0, -0xe82835ff, 0x91e4f028, 0xe89e80f0, 0xb494ee6c, -0x426c84eb, 0x536a8a98, 0xf67d81d0, 0x82e8d960, -0x6845d714, 0x0e46c9e0, 0x146be416, 0xfffe3cbc, -0x11dfec24, 0xbd2c68de, 0x00001184, 0x3ec0f2a7, -0xe81e3f6b, 0xc7a4ef83, 0x25f447ed, 0xe9a20f47, -0xdfc069e2, 0xad736d55, 0x39ba0904, 0xf738e38e, -0x408f51e2, 0xc2029b4d, 0x82e7e944, 0x09337044, -0x3ec03100, 0x144d1380, 0xca3867f2, 0x2c112d52, -0x0fd1d237, 0x3013c474, 0xa3f6fb04, 0xb40bff03, -0xa9132740, 0x3960518b, 0x5c418bf2, 0x6a3a2d77, -0xb5e50e8b, 0x75cdd8ae, 0xada0b114, 0xf10c7fc1, -0x15477a37, 0x8354578b, 0x891c760c, 0x46d889d5, -0x8d6e036d, 0xdf57f5f7, 0xe9a63207, 0x19cfa5b6, -0x6c277c11, 0x5f140b44, 0x396868ea, 0x7764789f, -0x40dfaf78, 0x77f76085, 0x13548b72, 0x208a5842, -0xe222dede, 0x775e7268, 0x5876d819, 0xc5aeba02, -0x10d44da3, 0xadab1c61, 0x03e45e21, 0x10786c47, -0x6cd913fe, 0xe2054def, 0xff5378c7, 0xd0386022, -0xac54b113, 0x0a6c3804, 0x90f10482, 0x036d3c33, -0x29473ff0, 0xe9d619c3, 0xe1a37c4a, 0x8300cd04, -0x034651bd, 0x43119720, 0x48b1dfc4, 0x5288794e, -0xda50ad79, 0x0fc466c3, 0xc50fe0f2, 0x9e09b748, -0xc789da10, 0x2eed3187, 0x51721786, 0x8dbd3bd6, -0xd1e200aa, 0x340d1686, 0x29e80e20, 0x6eb07bd8, -0x071f756c, 0x89ecd65c, 0x59d875c2, 0xeb7a0bb0, -0x89f7de75, 0x06259718, 0x50eb2201, 0xfb9b8aed, -0xff034152, 0x36104c40, 0x1428bc7e, 0x8b30c61f, -0x491c4292, 0x86f80a5c, 0x89480275, 0x42037842, -0x7b3ba274, 0x688b1315, 0x26037c3e, 0x68b50edf, -0xa22eb131, 0x9b042b68, 0x36427838, 0x3ee103e0, -0x40358f55, 0x3445038b, 0x3fb4229c, 0x4cf3a771, -0x003dde3f, 0x4c314877, 0x0fb9d339, 0x71b10672, -0x6f77fc33, 0x6b77c139, 0x7451441a, 0xab6e40e7, -0xd8e604e3, 0x28d0c7d1, 0xaafa5ac4, 0x131ca944, -0x70255518, 0x2c261d6c, 0x60cf78b3, 0x58ec3edf, -0xf6a9f066, 0xbd4b74c3, 0x514674fe, 0x6bb59ddd, -0x5028262b, 0x582b4c86, 0xa7fe535a, 0xe30c9dc2, -0x5c46782c, 0x2960568b, 0x1bec3ec8, 0x194876ee, -0x014c56da, 0xa5da11c8, 0x70ff6ee9, 0xb30f04d7, -0x54825036, 0x58285052, 0xba4afc47, 0xfdd0c0e0, -0xc7bde06e, 0x880f0c0f, 0x20f1a6cd, 0x9fb717c3, -0x8d71dd84, 0xfbec71b1, 0x50415e3d, 0x3db8d4ba, -0x2aa7fe28, 0x24b32360, 0xe4ded341, 0x492703c3, -0xa30dda53, 0x20e1da0b, 0x20bd392b, 0xa0251dc1, -0xa0bb3610, 0x8163924c, 0xe8029657, 0xa8a6a5a7, -0x83fc87bd, 0x6f9b6e5a, 0xe9800f41, 0x01d3747e, -0xe9e7a6ce, 0xdf116257, 0x070afa53, 0x8df6c28f, -0xc629f1f0, 0x01dad719, 0xc09155cf, 0x50d26705, -0x85efdc8b, 0xc9bd8bf0, 0x0a41a279, 0x58539310, -0xe06c8a90, 0x6d164bdc, 0x4bfd9010, 0xb1045b28, -0xf7443d66, 0x19961bd8, 0x281b7633, 0xbaa92a9a, -0xd7625774, 0xf80e8890, 0x467c8d5f, 0x2cdcaf89, -0xc0855d20, 0x227bb1be, 0x8394c602, 0x3d50047a, -0x230fb1c0, 0x02255028, 0x80309cdd, 0xae46ddc8, -0x2b3c2d02, 0xda00edbd, 0x2d3c050f, 0x3a80d507, -0xd75e2e93, 0xbf08ac3e, 0xd67c747b, 0x0805aea2, -0x0904e00f, 0xe0b06e0f, 0x341c9a6c, 0xc6899809, -0x2ddf1566, 0x2d49a930, 0x41cdbab6, 0xa3291af0, -0x155c2820, 0xf472dbf0, 0x723a1d02, 0x1eedf8d7, -0x89276dec, 0xa3059835, 0xfcc23294, 0x8a49be3b, -0x4257be59, 0x93572061, 0xc360f846, 0xdc41e852, -0x63481834, 0x20bf066b, 0x7e5484ab, 0x0f125b98, -0xc7fd983d, 0x4100000b, 0x18644a1c, 0x23087aa4, -0x427d0e91, 0x7909c91c, 0xdbe7061a, 0xa9076002, -0xfee54823, 0xdb71e952, 0xddbe7a0b, 0x97eb6679, -0xb88d8f09, 0x34760431, 0xb7002b66, 0x8ad056c3, -0xdb241ee3, 0x6ee883dc, 0x7a808988, 0xbefe4e1b, -0xa08d778b, 0x720711f7, 0x41d1e915, 0xeeec3efd, -0x2b78387c, 0xfb813b43, 0x118779fe, 0xdf75bfa3, -0x07c3f634, 0x2ba4df75, 0x57530eab, 0x5223d9e8, -0x344c35d8, 0xb910cd8a, 0x82ff0224, 0x8d34ecc7, -0xfdf8fd46, 0x1ddcb877, 0x1daab7d1, 0x10edc124, -0xd46d0899, 0x980468a0, 0xa6d0087b, 0x8d2bd3ca, -0x68ba2d44, 0x58ad402e, 0xfa68bfb7, 0x9db3c580, -0x042cb80a, 0x69185106, 0x17733053, 0x785c02a0, -0x34388256, 0xe9722414, 0x0bfb1678, 0x4274d2c4, -0x35731440, 0x26fb2767, 0x08e9c16e, 0x73280beb, -0xef753f21, 0x8702c11a, 0x3943dbed, 0x08e175d5, -0x1e701583, 0x21df4998, 0x28f17817, 0x88c33f4d, -0x980bba5a, 0x428819e2, 0x6602c32d, 0xa91d0a06, -0x428ddc7b, 0x06072704, 0xdc306a45, 0xc5d91af6, -0x693023c7, 0x93c40ac9, 0xb21758ee, 0x6ae81442, -0xd5a71f14, 0x3c9a0161, 0x52be0564, 0xd6f04dfb, -0x0c241824, 0xfe8608eb, 0x552e7f24, 0xa9ff2956, -0x287da4e0, 0xfce283f1, 0xcda8e174, 0x01ee4ee1, -0x8622dd74, 0x38357926, 0x50f0d0b0, 0x4fd27e10, -0x873d4217, 0x2ddd02d4, 0x04501961, 0x424d551a, -0x47236c43, 0x6a172c8a, 0x8446f5dd, 0x18c30b68, -0x5b547cc4, 0x58d488db, 0xdbbc1af7, 0xafd76b3b, -0xb5e9fded, 0x456110d0, 0x08ad0a58, 0x700319b7, -0xdf2ddd1a, 0xb60dec6a, 0xe8def898, 0x544721f6, -0x9a29ed76, 0xc6f84274, 0x0019036d, 0x2bc6f15d, -0xe9474ffb, 0x5542b4be, 0x90104a0a, 0x8d806b18, -0x5b56db4a, 0x0bdf7280, 0x0a7dd15f, 0x0e0c3941, -0xca44f74c, 0x2d86e166, 0xce0439ea, 0x39d944ae, -0xed8dce44, 0xe06f6da0, 0x3c1cd277, 0x1004c8da, -0xaee1635d, 0x2fd80816, 0x916c1a39, 0x3b843edb, -0x6314fd09, 0xdbd87dc2, 0x2f542fb5, 0xa7d2eb04, -0x96121c92, 0x47053c15, 0xe0031821, 0xf5537003, -0x12809506, 0x115eaebc, 0xf34c2a1c, 0xc0954329, -0x36abbd17, 0x8605ca6f, 0x1874d039, 0x9b375b36, -0x50ac2630, 0x0d180543, 0x203914dc, 0x052d20dd, -0x3584761f, 0x73b81088, 0xb1054f21, 0xe21af8c9, -0x2f17608d, 0x08496a0e, 0x59dd5350, 0x29b8b5f3, -0x8b648246, 0x4b4cf6f4, 0xf4c285d1, 0xfca3891a, -0x614d04d1, 0x21dc1dce, 0x00588324, 0x0643d54c, -0xe027045b, 0xf02307af, 0x0b76daeb, 0x324b6032, -0x1a334e52, 0x975ece2f, 0x2d560b5c, 0xfd51d0ac, -0x18148368, 0x072d5650, 0x8365cd35, 0x5c9da4f9, -0xab585674, 0xe4c780c9, 0xd84c1419, 0x170c1c24, -0xbbb72c0c, 0x349a1e12, 0x63f62d56, 0x9b1178d5, -0xe19913df, 0x1a28d06f, 0x21980d97, 0x34205ed0, -0x12c3b390, 0x330142f0, 0x0a62baf0, 0x7f503b97, -0xd6a04c55, 0x7510c4f2, 0x60bab908, 0x092d7e00, -0xc9b5c19c, 0x0c342980, 0xb49f3c19, 0xe07f6009, -0x08858b84, 0x31df6a55, 0x2934b019, 0x3c083c0a, -0x252fbe3f, 0x2376ab68, 0x07235b76, 0x296c07ef, -0x571388ba, 0xdb2e50e9, 0xedb8041e, 0xef3c0721, -0x80f61d31, 0x240fbdfd, 0x08693e74, 0x4e2a5540, -0xb32bafe8, 0xc6695b67, 0x775f0828, 0x1022b2a9, -0x8a1607b3, 0x007a9b33, 0x8bee3dc4, 0x0ab1bb53, -0xc39d5e38, 0x5829c784, 0x1a1eabe2, 0x6f036773, -0xa029a3ac, 0x5fc3e96c, 0xab811d10, 0xe272f192, -0xee42526a, 0x689a5f83, 0x294284a4, 0x8f6d0a34, -0xff9214c0, 0x4fa35e8d, 0xd00aae3f, 0x1574912d, -0xe2011a43, 0xc2e94b1b, 0x46c7131f, 0xd07d930c, -0x1113e04e, 0x73651ac7, 0x2e05ddd8, 0x3810466c, -0x483e3874, 0x821bcf75, 0x724f8c42, 0x405b5ae4, -0x8b6c59aa, 0x4663f83d, 0x6d4d2224, 0x9783b0bc, -0x05f0147e, 0x135646ff, 0xf2df7088, 0x91b772bb, -0xf0042fb0, 0x02e65f46, 0xcb8b5859, 0xd0560c70, -0x218382b1, 0xea701775, 0x9a20f5d5, 0x3750a88b, -0xba35a062, 0x527ec735, 0x6a28940f, 0xa310b215, -0xfc681b17, 0x50e7922e, 0x89bc1804, 0x6e0b0426, -0x1c1b2163, 0x071cc9ab, 0x2dd54ad6, 0xe2628f20, -0x8ccedf06, 0x4d20d17d, 0xbc03ce78, 0xc3023eeb, -0x8c3f6601, 0x7e060904, 0x98db6744, 0x0884060c, -0x9727cbe4, 0xe0ceae6d, 0x3fdf5340, 0xea0ed50a, -0x5694eb24, 0x731676ff, 0xf7aeb849, 0x2e33371d, -0x12420377, 0x6988750e, 0x68132007, 0x062326c1, -0x508b1c9d, 0x8a43439a, 0x2a30e94b, 0x4b669d4e, -0x1059a74a, 0x0e303377, 0xfe04e851, 0xa84d5bd4, -0x168aa3f3, 0xdff14584, 0xc784eee0, 0xfa801b74, -0xdf2f7425, 0x45c006bb, 0x8829ffed, 0x20464717, -0xc76b4075, 0x39a7e583, 0xb143c603, 0x2506d13a, -0x61f6a028, 0x1f70ab1b, 0x2e3df6a9, 0xa3581c43, -0x15bc0b58, 0x62d8e873, 0x23088501, 0xbdb930f5, -0xb94e0041, 0x011219bc, 0xedcf140a, 0x00b8086c, -0xdb1bad68, 0xf477f5be, 0x783c20c8, 0x6415b20c, -0x65cf2c08, 0xbd40fa64, 0x43f92101, 0x638cba47, -0x30da0177, 0xe8043c88, 0xb345542f, 0x0feb3930, -0xdf0e4583, 0x2862b800, 0x038aa6f2, 0x06430788, -0x47fa8fb3, 0x848be4eb, 0x810683dd, 0xda26d80d, -0x843c1818, 0x6f462e16, 0x4fccc0f0, 0x1ebe902c, -0x6bd34ee8, 0x1d6c576e, 0xfef03046, 0xbba7da08, -0x87954c86, 0xb137534d, 0x0f7b2304, 0x85b11273, -0x0764494e, 0x350132d0, 0x0de0f9eb, 0x80afd476, -0xd884ebc9, 0xbff8e8d3, 0x8a1da5e3, 0x0938cf80, -0x004588d0, 0x04e98345, 0x1d08e879, 0x50e583dc, -0x5088f527, 0xfedeecad, 0x801bf250, 0xd2ed1156, -0xdceb89bf, 0x0d7f762e, 0x1e0ab999, 0x1c38f9f7, -0x0bb6038a, 0x14e6942c, 0x6667f255, 0x7460f700, -0x041e0018, 0xdeaa0c89, 0xc12ebf80, 0x450502fa, -0x96d8c229, 0x75026d1a, 0x0bbd47be, 0xe6870aef, -0x022a6ffe, 0x434a0b88, 0xf177da39, 0xdb7dace9, -0xa3ad6f5e, 0x8358df6f, 0x306402c5, 0xe9310454, -0xb164dd37, 0x9b1ee865, 0xd0301e45, 0xe9c46280, -0x10306973, 0x3fb82c76, 0xe995d20e, 0x182fcb8f, -0x6a2cd530, 0x76d8bac8, 0x41b0d81e, 0xb1034103, -0xe85516e0, 0x226dd67f, 0x3ac501ab, 0xe2771d43, -0xd419e94d, 0x44600ab7, 0x390653ff, 0xae91d9d3, -0xde73aafd, 0xe43f7351, 0xda79fcf9, 0x43b60e5a, -0x3dbf503b, 0x776bfbdb, 0x45af3d86, 0xcdf45cf7, -0xaabfe92d, 0x0e5c83b1, 0xb7d16303, 0x9c1314fd, -0x4e450470, 0x16acf17b, 0x1ec5a12a, 0x50d890c3, -0x1804148d, 0x52db85ba, 0xb808cfe1, 0x8a307414, -0x6d32b907, 0x84d2d2f1, 0x74342628, 0x1b5f3822, -0x0ba5e26f, 0x36c188d2, 0xe720488d, 0xd188c888, -0x776fd10a, 0x38204a0b, 0x0375ca08, 0xe817754b, -0x430d6d05, 0x7a15d202, 0x5eba27e1, 0xcb891508, -0x4201808a, 0x88ac4541, 0x2df62ead, 0x4f09f452, -0x89b94c1b, 0x8bb64ade, 0x74c2b7ba, 0x41034ea6, -0x66f02343, 0x9d34d577, 0xd34c543d, 0x4204eb94, -0x76eec06c, 0x24fa7505, 0x48424102, 0xe976ce4c, -0xc93746d0, 0x1b74fd1f, 0x2cdfa52c, 0x74430307, -0xf3754906, 0x5dda34c6, 0x955760b0, 0x1a2ac34a, -0x15f4161e, 0xf0993a02, 0x0efdc2d3, 0x20da51b5, -0xa8ef05eb, 0x025ed8a9, 0xd738108a, 0xa05728f5, -0xa92db300, 0xbac1b05c, 0xa01ff155, 0xf7aef2df, -0x388449d1, 0x836d4010, 0x3b4827da, 0xab9d19f7, -0xb8574cf8, 0x89d6384a, 0xfa0377c0, 0x801174c8, -0x404a1739, 0xd10505e4, 0x75805bf0, 0xc3c829f4, -0x0744566e, 0xa295cdda, 0xcf7cff31, 0x2d350c05, -0x03f11675, 0xa215748e, 0xf189ed86, 0x6e161a74, -0xafed3810, 0xf5ae76b1, 0xbbc39d5b, 0x3543f374, -0xbbd9a708, 0xebd5b147, 0xf39556e9, 0x5c8c83af, -0x0d4323d8, 0xe8874314, 0x75267e04, 0x815a73e3, -0x09861474, 0x3079f089, 0x04b77542, 0x01d86481, -0xee4c59c3, 0x58f7505f, 0x9b0f3c74, 0x745a5e16, -0xc56bb909, 0xe574822f, 0x3d5d94a3, 0x1deaa5ee, -0x540a1d8b, 0x2bf174db, 0xb2f7efd0, 0xc4753b28, -0x1f05c764, 0x6c410000, 0xf2120821, 0xecf62c1e, -0x10bbf6d8, 0x5a5b3f2f, 0x06895659, 0x088fc353, -0xa4f6902f, 0xd9c206eb, 0x0171e153, 0x36204143, -0xb3205be2, 0x3548c593, 0x6a5b0820, 0x0d8c30a3, -0x65f685a4, 0x856f9282, 0x02016dae, 0xecd01813, -0xef754e4e, 0x62e18c3e, 0x0c371a69, 0xda0b74b1, -0x21d856c6, 0x428cc402, 0xef27f52c, 0x8e20c413, -0x4e5c8b31, 0x0a9a1100, 0xf218154e, 0x5bf68c1f, -0xda89cdf5, 0x03122774, 0x14ebce89, 0x89db750c, -0x7ed49055, 0x80174e30, 0x952f5bd2, 0xe87dee71, -0x6c163d4f, 0x08daf910, 0xf9834978, 0xf7b7e96d, -0x9fb30c58, 0x8aff508d, 0x7e382142, 0xbf1473c1, -0xf275180a, 0x18a284c2, 0x5ef3e2a1, 0x07c6d0b8, -0x77537cf0, 0x628b0df2, 0xb8400ca9, 0xf4433510, -0xd0791045, 0x40c850c8, 0xbf3d8070, 0x52e1c3fd, -0x087256bc, 0xb201c84c, 0x6211403f, 0x088be399, -0xd8ecffd2, 0x37ff8ab0, 0x4601b25c, 0x8c30284f, -0xc7eb85ba, 0x643a8305, 0x00097782, 0x11e235dc, -0xe84f54aa, 0x8a84d212, 0x28075464, 0x9648f150, -0x60caa829, 0x09288a08, 0xf416c1fe, 0x16740301, -0x6d152c3f, 0x76c416f8, 0x3813e811, 0xb608c321, -0x111db1c1, 0x85e89e07, 0x6dedfa10, 0xa6e9ac55, -0xe6eb170a, 0x50a5e5e8, 0xdb2395bc, 0xc8eb010a, -0x6082dd11, 0x016a6c20, 0xfc0420f4, 0x99a4bf6f, -0x0f75fb49, 0x05b50678, 0xb0a76ab6, 0x804bc301, -0xc263e429, 0x04160d8b, 0x66f86ed9, 0xc508eac1, -0xe84075c5, 0x2d98a290, 0xb5990240, 0x49c5822d, -0x9be889a5, 0xe2d41090, 0x53681b8d, 0xfb97881a, -0x0ce8cbee, 0xbe1538f8, 0x38b87535, 0xd407bd05, -0xb0fa2305, 0x93e6dfeb, 0x83b6f106, 0x0c755d41, -0x148c0336, 0xa257ba7d, 0xc031000b, 0x921b6056, -0xfed84714, 0x0899022d, 0x2daa5bdb, 0x16361e7c, -0x1c5fd7c1, 0x0816e374, 0x3d3ec21b, 0xdc544f6c, -0x6c0fd856, 0x54cffa4a, 0x328b02f2, 0x64fdd468, -0xf684399b, 0x30a36b7c, 0x86903f00, 0xb70f07ef, -0x068a0a47, 0x06f56b75, 0x61f80857, 0x03a4680b, -0xbf791f29, 0x7748220b, 0x6c2b1274, 0x02bb77aa, -0x512b6831, 0x348d3202, 0x6f8eba10, 0x80de29ff, -0x8901037f, 0xba0911f5, 0x10a98d14, 0x6b60064e, -0x1fa44c00, 0x151dd5da, 0x1315c826, 0x40bc387e, -0xc5161c35, 0x35b8a929, 0x4c0d8a3b, 0x3ab83bbe, -0x06305155, 0xc25e14bb, 0x3407edce, 0x3dda1e22, -0xeb1f06b8, 0x5c733ede, 0x1c746e22, 0xa9f289e7, -0x18b70e6e, 0xe98944dc, 0x3487eb0e, 0x0f080300, -0x5c414984, 0x8121fcb2, 0xff128278, 0x1c21de02, -0xe2dc69f6, 0x0a24faf8, 0x682b2d3a, 0x5d034484, -0x857205e9, 0xe8a14f62, 0x572a5b39, 0xec1924d1, -0x2b620d0b, 0xdc374137, 0x5f0ae687, 0x3d0843d0, -0x85895c0a, 0x6d44b636, 0x894dde8f, 0x6fc3130c, -0x391c5cb3, 0x8b40d8a1, 0x1e101c00, 0x2c46b6eb, -0x30402e3a, 0xb6ec0001, 0xa43642c8, 0x81c6c20e, -0xfb8c038c, 0x82cd77ef, 0x52c2b902, 0xc3d64249, -0x2ca1ebc3, 0x69fd15ff, 0x4b82e11f, 0x0fb702d8, -0x24a8a126, 0x3b64f5e2, 0x05aa0903, 0x8c28a1a1, -0x482fb56d, 0x37880a07, 0x55887bf5, 0xbd54424c, -0x8708e21c, 0x3d2badae, 0x09420b2a, 0x2e140a76, -0x0da08714, 0x9beb3b1e, 0xeb6011ba, 0x030a0358, -0x08030728, 0x6bd02a2b, 0xbba62409, 0xe221d9e4, -0x85bce057, 0x112b50fa, 0xbbfb0b39, 0x077a2138, -0xea6808b5, 0x02a74191, 0xda037b7c, 0x3f1a7b8d, -0x98968012, 0x4882d583, 0x976f16c5, 0x0e06622f, -0xd8d70420, 0x446a08c1, 0x3f068fab, 0xa50a43a0, -0x91164774, 0x760e35a1, 0x0c4fbb3e, 0x180a08c5, -0xc0531543, 0x0ea0b75b, 0x752b0f03, 0x8108257e, -0x495d7e13, 0x031c0216, 0xef596f6c, 0x98b1f833, -0xf0eba408, 0x5add7548, 0xc5087b18, 0x22d5cb6d, -0x9d024e01, 0x1fc18b15, 0xa752c559, 0xc8841d87, -0xcb3b0e25, 0xb0f03af1, 0xeb6567b3, 0x182224d0, -0x5bb0ca74, 0xeae64630, 0x76247652, 0x582d05e3, -0x26c1b28f, 0x3b3dea03, 0xb7eb3150, 0x877bc11e, -0xf2e46305, 0xd9dd0608, 0x533c2308, 0xff191073, -0x54371213, 0xe8845283, 0x8012f752, 0x0f0b1441, -0x1a027032, 0x93160cd9, 0xabc54888, 0xe18d08eb, -0xfb855ffb, 0x7f547423, 0x08003d45, 0xff084420, -0x8d7cd132, 0xf717e856, 0xb0473818, 0xe9589570, -0xe3051f85, 0xde134b09, 0xe0ca9636, 0xfbabf777, -0x1dcce9d6, 0xbb75983d, 0xb9eb0324, 0x6038c005, -0xb3eb0270, 0xe3f85e79, 0xe04031f7, 0x30557504, -0x5934832e, 0x2f183c43, 0x24120d2e, 0x18dae8d4, -0x136e8b57, 0xe0025648, 0x08441d6e, 0xe08a83cc, -0x0fb4469b, 0x260d0c37, 0x568f2066, 0x08f5018c, -0x02604475, 0x6d8732dc, 0x5750183d, 0x4254d1d7, -0x37c01d82, 0x3ba9eb43, 0xb074eb05, 0xb23dfa02, -0x18a30212, 0x87b497eb, 0x41b1f65c, 0x6dbe7470, -0x0bb14109, 0x718966ac, 0xea9ac7ba, 0x54666b87, -0x12184f78, 0xc1879089, 0x6094a0c6, 0xb4980e1c, -0xd82a0ec2, 0xa50f74ff, 0xdac79c05, 0x8a3ac0da, -0x8aea2ef5, 0xf120065f, 0xf72120c0, 0xe07ec21b, -0xf3af178a, 0x74272df6, 0x2b2adaa0, 0x786d811c, -0xa6bab0f6, 0x08d71f74, 0xd0979e50, 0x87684fbd, -0x1c2e3833, 0x9c828dca, 0x0435e8af, 0xe4c7825b, -0xd9c308ff, 0x0c099882, 0x82c7df5b, 0x03260090, -0xdf0066b1, 0xaf07a3ba, 0x539c156e, 0xc8cde306, -0x123620dd, 0x5152164b, 0x054b60ed, 0xf4f27c21, -0x8e8233ee, 0x56fc1870, 0xab7b4953, 0x509abc07, -0x8b2eb020, 0x07ea7ab2, 0x048dfd88, 0x15793b3e, -0xb3512873, 0xc68c76c9, 0x504a3304, 0xbd12803b, -0x632dbb46, 0x37d5d5e2, 0x940f00e3, 0x53c8d1c1, -0x8310fac0, 0xf5d7498e, 0xd1c960ad, 0x555bbb50, -0x1a2951e3, 0x5ef1ac79, 0x73fb5302, 0x7dd50082, -0x86868b58, 0x18375a14, 0xc11163c2, 0x82968bec, -0x20c20ff4, 0x94ffd24c, 0x79a56808, 0x147630ee, -0x2bd364dd, 0x26846a0e, 0x0e019900, 0x910978de, -0xe39e5b62, 0x65d9f53d, 0x5b04302c, 0x66c06a00, -0x50756f41, 0xc836c37c, 0xd2911e34, 0x359c487f, -0x26c719d2, 0xa001fd00, 0x0b191b14, 0x23898b3c, -0x210ec094, 0x9cf4a06e, 0x8fec2390, 0xa305748d, -0x39013300, 0x21222c66, 0x8225f72d, 0x07900d0c, -0xbc45bc8b, 0xfbe7b56b, 0x473b0b5a, 0x96b6a210, -0x53701382, 0x895ad6b9, 0x126a396a, 0xc5fa2ed2, -0x39f69bd2, 0x87e275d0, 0x018b300c, 0xcd0ab1ed, -0x8dde62de, 0x1d18f870, 0x1081dc07, 0x960f2b41, -0xc2b59b0e, 0x73f039eb, 0x533c7e4e, 0xa39a2814, -0x10ab12a3, 0xf51785a7, 0x51495e30, 0xf7a35208, -0x08b167f1, 0x0e7360a6, 0xc8302c3f, 0xff120761, -0x5a11d9f3, 0x07aa13ec, 0xded08908, 0x6170760d, -0x8f6aeca9, 0xab327ba0, 0xb0558dc8, 0xd993bb08, -0x8ec1460a, 0x2dd230fe, 0x1a89ee6e, 0x677c1d81, -0x9e896014, 0x772b9251, 0x40bf01b0, 0xd305ba89, -0xbfd10a5f, 0xe76d416d, 0x0e0e672b, 0x698d0c77, -0x5d83fd1c, 0xfd819d00, 0x7ec68973, 0x617a3e19, -0x7e0632d4, 0xce1215bb, 0x8e74e9d8, 0x9757f365, -0x23e86cef, 0x39c05628, 0xa211f0ff, 0x01fb7286, -0xba238a55, 0x7791512d, 0x1ecc3e8b, 0x34388a55, -0xc400c0ed, 0x316e47e8, 0x446874c0, 0x64107a4b, -0x412ecfb4, 0x2483ef99, 0x75dbbfa7, 0x4eda4264, -0x00599600, 0xc47b6859, 0x2a7cfb43, 0x838f8bf0, -0x3477831d, 0x9e8df6f2, 0x340fbef5, 0x5e07a84f, -0x1286c6fe, 0xd8bb3202, 0xa50147a8, 0x4618c606, -0x1c5524d1, 0xb6a8c160, 0x073a80cd, 0xf23c8c44, -0x140aa110, 0x2b1814a1, 0xab878118, 0x0c7dac86, -0xd62b16c6, 0x2c4d0ced, 0x1c040800, 0xc8e4776c, -0x68efeffc, 0xec686600, 0xcc0ea818, 0xd6017c73, -0x2fdb0804, 0x449c9154, 0x7404ec0a, 0x4057113f, -0x06aa0753, 0x7dd2c604, 0xd0532942, 0xfa8161cb, -0xf88a56ec, 0x04b941d7, 0xd1890273, 0xc0ef42bf, -0xef93ea4b, 0xf45e5bba, 0xa2840d3e, 0xbc75e21d, -0xa11c4553, 0x895364a8, 0x9b6e8cda, 0x6d22c93b, -0xc6eb4904, 0x01c330ac, 0x56a95e0b, 0xa411c3aa, -0x402540e4, 0x7d44358e, 0xf896e3e8, 0xb7e876a4, -0x1bbb766c, 0xbd76e831, 0x04991d11, 0xa56f8b23, -0xd9afbba8, 0x0965bed6, 0x0fe82a08, 0x1d3b83c0, -0xd329fa04, 0x3ab0dc46, 0x296dc016, 0x93b9c0d0, -0x68f0d427, 0x1e12f581, 0x22c8f074, 0xaba92360, -0x091c5811, 0xdd109cce, 0xacc860c0, 0x161d85b3, -0x3f142914, 0x0c149a16, 0xb612f6f4, 0x3a29b86d, -0x0b0b840f, 0x080e417f, 0x457d010a, 0x6d78d7cf, -0x48b6eea0, 0x368fafdd, 0x030e5201, 0xf58e0f3f, -0x0ab16a1b, 0x52f34dde, 0x55236ce8, 0x80b9d3b3, -0x963026c3, 0x64156bed, 0x200a7a40, 0x45d15172, -0x655340c6, 0x346d849c, 0x0edea0f6, 0x495c3b15, -0xc4db6db1, 0xb4ebb003, 0x17270d18, 0xb65b1936, -0x0a0e5b03, 0x21cb3678, 0x0b1b6fdb, 0xf8c6100e, -0xb71c3f0c, 0xd238a04d, 0x711bf3f2, 0x91b6c6d0, -0x32ab4231, 0x99420f0e, 0x46ddf6e4, 0x02ba0e33, -0xd9427008, 0x30a0cd00, 0x81fc6b0f, 0x839ac6db, -0x1bf38912, 0x4b370f55, 0x1b6c6546, 0x0e103019, -0x09114660, 0x92a458cd, 0x5a49304d, 0xefb11b0e, -0xf3240536, 0x89d63301, 0xbcd984e6, 0x3319b1ec, -0x63627507, 0xfeb7f093, 0xd6e8aeb6, 0x64d684b6, -0xcb760a7b, 0x5d5bb536, 0xef4d3d2b, 0x8c2d3475, -0x57cd236d, 0x222289fd, 0x6ad35d82, 0x238db636, -0x255d050e, 0xec364df0, 0x03024441, 0x4e448f00, -0xfb03dd63, 0xe9fe4472, 0x3112f941, 0x22717357, -0xc475d977, 0x0c45e917, 0xd65eeb09, 0x1516ad9d, -0x41022eee, 0xa6ec0f35, 0xefe99a23, 0xf30612fd, -0xc1041ddc, 0x21a4e651, 0x9cf6135a, 0xfedde9ec, -0xccf0aa10, 0x7759f147, 0x34f8bac2, 0xf62347a7, -0x7d479412, 0x7b723613, 0x91763695, 0xee909c70, -0xf4dd3684, 0xfabe5d12, 0xd2137d84, 0x37f95b4a, -0x909cd612, 0x24f2a8e6, 0x2511f00f, 0x17764245, -0xfcfe12ed, 0xdb09bf65, 0x12ebe992, 0xfcd8974b, -0x65c236bb, 0xccd9fbcf, 0x5ac803cc, 0x137d84df, -0x47a33444, 0xbd9080b4, 0x126139ac, 0x5a7df8f6, -0x0f61efbf, 0x7e49f213, 0x36593a31, 0x37d979d4, -0x364612b9, 0x01c8faf8, 0xab060709, 0x041eebe0, -0x061c5685, 0xa83b6de0, 0x26881a64, 0x712f092d, -0x831d0ba8, 0xe823c1e5, 0x0438b69c, 0xb781fb80, -0x085ac96f, 0xf4073570, 0x344d8950, 0xbde6b68b, -0x5d1cb3d3, 0xc1e8f8bf, 0x0bb308e3, 0xb3e835c2, -0xb7fb96b8, 0x53b108dd, 0x0e2d827c, 0xfcfad6ff, -0x4409a1e8, 0xfaa8df60, 0x0a88e430, 0x5fc4b6d9, -0xb0193cc3, 0x8a38b076, 0x0b3c434c, 0xe4990585, -0x263a643f, 0x77b02ef9, 0x29043a09, 0x416b02e4, -0xb08b78b1, 0x0c2efc87, 0xeb81c63d, 0x49907881, -0x3a0a2bbe, 0xdf24b08b, 0x0d775805, 0xa90c4e3c, -0x7773d858, 0xf05aa870, 0x1f2dd54a, 0x18156ad5, -0x68b08ea7, 0xe0070224, 0x60dfbbd0, 0xb82ca3a3, -0xf3a80f5a, 0x6739f029, 0xd8a01540, 0x6672bef7, -0x1afeb61f, 0x335f3b81, 0xb04c5f32, 0x2510c3f9, -0xef7aaba0, 0x8be67323, 0x0d5b2535, 0x0bbfec3b, -0x24b8db9a, 0xe8494350, 0xe98980c4, 0xc4bdb709, -0x85d689b6, 0x348d97d0, 0x25046f33, 0xdb622215, -0xb7892fc0, 0xdec9d993, 0xb19f997a, 0xb63291e8, -0x444dbc80, 0x7ffe802e, 0xbdc0e810, 0x810c1550, -0x084857fa, 0x8a4f76a8, 0xf0967053, 0x402fe4cc, -0xe8e093b0, 0xf42058a9, 0x587b8191, 0xabe9fd05, -0x17eaa720, 0x51091f0b, 0xbe8c4384, 0x4c055bfd, -0x02107dc2, 0x0742130c, 0xc984f87c, 0xd404d428, -0x008a4d92, 0x2baaaf62, 0xd18189d3, 0xe809f777, -0x04271218, 0x7700433d, 0xe0d0f721, 0x19a35e96, -0x3cd2fee7, 0x34a22489, 0xd66844cc, 0x93083b2a, -0x3596a46f, 0x95d3756b, 0x23bfd52f, 0x80c21f15, -0x528c4374, 0x72006850, 0x68310fbf, 0xe3fc38d4, -0x007047a1, 0xf4d9c0f8, 0x9810880e, 0x19fc686f, -0x11cc89e2, 0xe9ac4f7f, 0xebf08479, 0xf1402ba0, -0x446a8392, 0x61e4534b, 0xbffba088, 0x83fd7b14, -0xd08801ca, 0xb0b261e6, 0xf11a4305, 0x040e8de2, -0xd9df42e6, 0xdf735cd8, 0xe9c3c308, 0x5e29d9d6, -0x153f0510, 0xdf190091, 0xa0d5048d, 0x3b550f6d, -0x028208d0, 0xab6e0b6b, 0x3b0880c9, 0x85041003, -0x02062a5e, 0x4b83baad, 0x23bbec86, 0x8907d840, -0x02b0e953, 0x723d0000, 0xd2ec5ff6, 0xd3ba3a37, -0x2410624d, 0x55020f06, 0xbc578b33, 0x182500bf, -0x3105fa21, 0x0add03c4, 0x8fddbfd5, 0x151868ee, -0x071b05c7, 0xa50e1fb0, 0xb642b9ea, 0x28452209, -0x08c19ee4, 0x0a05c225, 0xc00e7908, 0x07e50015, -0x02ba467c, 0x0409e500, 0x1f158b14, 0x7845056a, -0x3b57d4e5, 0x4234459a, 0x9234687d, 0x2176c6c9, -0x286624a3, 0x42502c40, 0x09306ebe, 0x49374006, -0xfe9eeec6, 0x891d5068, 0x443d401d, 0xbae114ac, -0xdc8c0948, 0x111a9a4e, 0xffff540c, 0x6dd7050c, -0x29fa16f4, 0xc31a5c77, 0xb03efd51, 0xf46854e4, -0x27e84827, 0x83b0eebe, 0x5227ec6b, 0x480209f0, -0x52eec2b0, 0x127131c1, 0x280c3192, 0x1ecc331f, -0x04312836, 0x091eae28, 0xaf90615f, 0x077e3103, -0x2320314c, 0x142324dd, 0x1c070918, 0x35f60a92, -0xac4c3101, 0xb1926ebb, 0x28342442, 0x1b07092c, -0x1f8084e4, 0x01661728, 0x0db19268, 0xc0688e51, -0x00b0b431, 0x5cb86c10, 0x5b0f2806, 0xe85b9e39, -0x68b5c0e5, 0x878468ce, 0xe8e10fc1, 0x7518b01f, -0xb5eae012, 0xe57b1072, 0xd9208b1c, 0x10a3ca6b, -0x093d960e, 0x03201bf8, 0x127b75e8, 0xbe06e990, -0xbe1c0a0e, 0xa64204d5, 0x8c51c037, 0xfbcc5e90, -0x3515891a, 0x4b91447a, 0x720bb638, 0xb2ab96b9, -0x0f754b6e, 0x3e80c305, 0x2ddbf257, 0xeb4a448c, -0xe8208a87, 0x824d0ee8, 0xf2909d43, 0xecf2f423, -0xdeefd046, 0x031d813a, 0x37ed1cde, 0x071f05b0, -0x89038ee3, 0xdfa805ec, 0x008b4032, 0x1605fe00, -0x7445e4f9, 0x351fff68, 0x062b0301, 0xf6f60647, -0x1161a501, 0xefbead5d, 0xe25fff03, 0x035e178f, -0x203cbb01, 0x43455850, 0x6e65696c, 0x75bb3a74, -0x7241fdff, 0x303a6863, 0x4e553a00, 0x320a4944, -0x5f003102, 0x0a7d8412, 0xdc050239, 0xb1b1655b, -0xbd365fc1, 0xc26b0532, 0x3757b7ff, 0x2b0c510e, -0x81803c11, 0x85848382, 0x015e8786, 0x7f45bac0, -0x13ff7301, 0x720d9d92, 0x544146af, 0x203a4c41, -0x5ffd2d4e, 0x72206ffa, 0x6d386165, 0x2065646f, -0x63617473, 0x6c21c46b, 0x50d77fee, 0x564e0300, -0x6143002b, 0x746f6e6e, 0xfa762023, 0x14ae676f, -0x6e252124, 0x64006369, 0xb76b7369, 0xd6dfb6df, -0x70706f6c, 0x27723079, 0x6c6f636f, 0x48445473, -0xfdadfdbd, 0x54205043, 0x26045446, 0x52504545, -0x0085314f, 0x7b7f6469, 0x3205bb1b, 0x0d330639, -0x98383238, 0x006d6163, 0x584c6565, 0x3870b5d7, -0x32162d1f, 0x4c84330d, 0x353484c8, 0xc84d9cdf, -0x38633736, 0x65323635, 0x21d84d74, 0x62610e67, -0x4ee6632c, 0x640d84c8, 0xf50b0065, 0xbfd8f7ec, -0x71313538, 0x6539076d, 0x3536bb72, 0x6c1b360d, -0x6d5d7859, 0x1b033d07, 0x3207b06c, 0x84587a17, -0x4c6b2e19, 0x0da0350d, 0xb5336df8, 0x6e64521b, -0x646120a8, 0x56db7264, 0x254c5868, 0xc4a1566b, -0x6d6e0320, 0x6bc3c35b, 0x83658d20, 0x27730d62, -0xdadb7f64, 0x66741bbf, 0x4c007074, 0x671d2c6f, -0x253a402c, 0xed002073, 0x3aecb75b, 0x0f122f2f, -0x726f2e3c, 0x6f2c3e74, 0x57b5cd0b, 0xec161267, -0x6e550c78, 0x7378b773, 0x18b97585, 0x50412046, -0xfd25229e, 0x63b6a376, 0x69122201, 0x207a616c, -0xc36d203e, 0xcfad6db6, 0x33640f07, 0xfc280565, -0x5a2ab41b, 0x13e90529, 0x3e16d62e, 0xf020006c, -0x20c17267, 0x6f776885, 0x20b0b614, 0x69624afc, -0x424e2867, 0x8085ed49, 0x437f0a2d, 0x44697372, -0x74736d0a, 0x401073cb, 0xb1952a42, 0x13d6b9f6, -0x61cfde3f, 0x0ae6e021, 0x6d69f76d, 0x3c696761, -0xad117f73, 0x462ff63e, 0x5f7469f7, 0x08a7705e, -0x756f6620, 0xddc62cbc, 0x0a1a2edb, 0x404e654d, -0x0a6c2c00, 0x11ec5a1a, 0x1fd90a72, 0xaebdce65, -0x853392e0, 0x4333d020, 0x7b6e6ede, 0x646d1b09, -0xf861472d, 0x36796177, 0x3acfb588, 0x0a6c6552, -0x3526743b, 0x06ed24b6, 0x4d550029, 0x56b1c844, -0x65572c68, 0xb6ed2ef5, 0x6b5b62d0, 0x73ad213e, -0x1e19a4bc, 0x4427adda, 0x949b7261, 0xb6d6ad65, -0x46e5a152, 0x06745c09, 0x861ac110, 0x7a6934b7, -0x0b5a5865, 0x56e946b3, 0x924346a7, 0xb5b64916, -0x2600a458, 0x28a9750a, 0xc2ec5b3b, 0x130a29ec, -0xbd6e7775, 0xec716d4b, 0x5770b5ad, 0x7562a44e, -0x5049c574, 0x885b1b43, 0x0e73a41b, 0xb6613e53, -0x1a04c337, 0x65631719, 0xdd641069, 0xad91860d, -0x6ec76a62, 0x64973a75, 0x0eda453d, 0xb70ab98c, -0xe39a64f7, 0x09798217, 0x25783020, 0x304b136c, -0xc9d687e1, 0x6f66b7eb, 0xcbb59072, 0x0aecd192, -0x6d4a114d, 0xb6ded6f6, 0x27502743, 0x6f4a603d, -0xe6572066, 0x753ded1a, 0x14966c72, 0x0b2f19c7, -0x6ec2b5ce, 0xac90ab1d, 0xadc36b97, 0xd66eb9bd, -0x6976650f, 0x707920a4, 0xb1dcc689, 0x5a62470e, -0x5b9f6173, 0x2790d25b, 0x175d07db, 0x1d696370, -0xd6a50bfd, 0x3d4f0832, 0x43424139, 0xf7464544, -0xd2d6fa4d, 0x6868032e, 0xed353a58, 0x8dd62f00, -0x395f478f, 0x4f8a205b, 0x60de5753, 0x3f70b828, -0x2e351e91, 0xfb2e2e34, 0x7295951a, 0x20350018, -0xc42f8da5, 0x50477f17, 0x7469294c, 0x61c28d52, -0x1c65424d, 0xf0d70a2e, 0x44bc6b40, 0x9755c7c3, -0xdc3a3820, 0x0d0883a1, 0xc1d220ec, 0x6c22dd3e, -0x4f784500, 0x6d0e3a73, 0x276c2f6b, 0x5f6f126d, -0x287b3a77, 0x0c15b657, 0x963d7485, 0x10776da6, -0xc7edec10, 0x3d20f468, 0x0a2e58da, 0x89028d27, -0x8e2691ec, 0x1adb630b, 0x32c7500c, 0x611e78ac, -0xe8e8e882, 0x69306d06, 0x63886cce, 0x5ba3da38, -0x2ce97058, 0x93b4494e, 0x9172c96e, 0x6e499861, -0x3197856b, 0xd74d9702, 0xa1452325, 0x2cb302b5, -0x39f9e20e, 0x8eb9ad79, 0x65625c5b, 0x0e536505, -0x6c20bd35, 0x69d31278, 0xa157be73, 0xe2a9605d, -0x346a381b, 0x6dca3330, 0x7742a5bd, 0x553c635e, -0x3ad68d2c, 0x67654386, 0x174b8f31, 0xb90a9c2b, -0x7ac7ac8f, 0xb63af6a6, 0x74986721, 0xe196ca79, -0x67ecda36, 0x320b6874, 0x380a63f7, 0x8ecc31b7, -0x9d6c1023, 0x186ad604, 0x60911d28, 0x028f8509, -0x1d9e8496, 0x96296181, 0x33340ab0, 0xae29654b, -0xa036a447, 0xb2dc93b0, 0xdb6d8ad7, 0x379a9f79, -0x62c2da6b, 0x67667b0d, 0x31093737, 0xdb3a4102, -0x253d21bb, 0xaf48c0ec, 0x02195375, 0x5a3b42dd, -0x7361ba19, 0x81833970, 0x2a7b0b42, 0x810ccee9, -0x18980e03, 0xd133464b, 0x902afb32, 0x630b70ae, -0x6290b61b, 0x1f0a6b0e, 0x2e65f162, 0xfb48604c, -0x6c69973a, 0xb14ebdcf, 0xa05fafec, 0xb0db1b4d, -0xf72f00b2, 0x69e26e67, 0xa95e963c, 0x6e8d8905, -0x9db032b9, 0x5232d870, 0xbe5fe576, 0x73a1b078, -0xbba62ccd, 0x784578f5, 0x970b7b29, 0x610cbeec, -0x5452453e, 0x5b08ba1f, 0x2b48676c, 0x70cc3d61, -0x2e075ce6, 0xde2dbd1f, 0x5cb1c2f0, 0xe367dadb, -0x9ed27983, 0xc2e876a8, 0x074f9c7d, 0x0a8c7737, -0x85705b56, 0x7419bb15, 0x41eee146, 0x6666ed83, -0xaf8e2119, 0xeb278189, 0x0000f548, 0x4f4f427e, -0x683c081a, 0x339c2d6e, 0xc859cf51, 0x0056833a, -0x83c66bba, 0x1ed0a507, 0x18a617af, 0x632c2db1, -0xb69335df, 0x6db96c18, 0xce2069d0, 0xc58b531f, -0x1d88e7ae, 0xc3797878, 0x30c6f5b8, 0x6c757171, -0xdd4440b8, 0xc0b4d771, 0xe56c7e68, 0x4b623436, -0xba524142, 0x19bef0f1, 0x3a783830, 0xd952c304, -0x0a093a52, 0xd075c35b, 0xb0f86879, 0x0f9e0457, -0xeb1092be, 0x3fee7ae6, 0x4aafb700, 0xcdb3736f, -0x430430e0, 0xdec91621, 0x67c60b46, 0xa33aa468, -0x05af9976, 0x305895cf, 0x8ce0ce2c, 0x854c0d85, -0x3a996431, 0x60b0374a, 0x58582307, 0xb5a12157, -0xed754480, 0xa33f3a2d, 0x2315d4e3, 0x6dd78161, -0xc25a1948, 0x4012a880, 0x76d846c4, 0x6f6f26a1, -0x6f75292e, 0x3e39c117, 0xae55703e, 0xb6c100a0, -0x8d8261ae, 0x98081e83, 0x3b131d02, 0x8b42ef56, -0x1f079780, 0xb207cf9f, 0x933906c1, 0x1f93179b, -0xb6012836, 0x1f5b5000, 0x73eba660, 0x0064035f, -0x1e298086, 0x10efe479, 0x30078d8b, 0x10319210, -0xa2103299, 0x4791e479, 0x34b01033, 0x1035be10, -0x4791e4cc, 0xda10361e, 0x38e81037, 0x3f23f610, -0x1039791f, 0x05103afd, 0x0c103b8e, 0xf23c8f3c, -0x3d1510c8, 0x103e2310, 0x3f105131, 0x23c8f23c, -0x09451059, 0x12274d12, 0x23c8f655, 0x5b12288f, -0x49611229, 0xb02f6a24, 0x247b1e47, 0x245d0772, -0x8210507a, 0x52d8f34f, 0xae078a6c, 0x52010798, -0xd8477ba6, 0x0300086c, 0xf31c1600, 0x5568dffc, -0x0060c399, 0x400048f2, 0x053f80f2, 0x458b20c5, -0x2d82008f, 0x7fd10da0, 0x7255ae41, 0x83d81945, -0x328def42, 0x4f28ddb3, 0x26035c09, 0xecad810f, -0x04054f37, 0x96156747, 0x002d80c2, 0xecb7a8ae, -0x0003417c, 0xdb2b04f3, 0xbaf2c654, 0xec68b72b, -0x8263d3df, 0x0b966353, 0xb17705af, 0x8fd00039, -0x07d902ca, 0x549f5f45, 0x5c24205a, 0x6de03765, -0x00000000, 0x00900000, 0xffffffff, 0xffffffff, +0x61983d2b, 0x8336a810, 0x68affbbb, 0xe8550e48, +0x5b217cba, 0xd637df40, 0x42a30eed, 0xbe778904, +0x29b4b923, 0xb6dbf77b, 0x732ea3f1, 0xf8ea2015, +0xb8000881, 0x6e1b1c10, 0xd88ebfff, 0xd08ec08e, +0xe88ee08e, 0xc35d5e5f, 0xb837c035, 0xddfbc435, +0x3d057e7c, 0x58cc1dc8, 0x250bd0a3, 0xfeeb05d4, +0xbb59b85e, 0x0300e968, 0x68535f1d, 0xe4514328, +0x3dddddfb, 0x890bb1e8, 0x8d23aca5, 0xa52fa0a5, +0x4bbd296c, 0xcf61ae6f, 0x00768de4, 0x8fbcfc81, +0xba6bdd0a, 0x0c6020a8, 0x341b22ed, 0xbd8c8c02, +0x072db7dd, 0x8bd0ff17, 0x1d8b8b7e, 0x8b8c8e79, +0xa18b158b, 0x14685dbc, 0xe2ff04de, 0xd6da4c8b, +0x7e518968, 0x02bff8dc, 0x61890459, 0x0c698908, +0x79607189, 0xc3006f14, 0xe685edb6, 0x08431f1b, +0x5a374a8b, 0xfa7b6209, 0x6a08dff5, 0x10728b0c, +0x1c147a8b, 0x89ffb805, 0x4ace1643, 0xa29c285b, +0x0c5401be, 0xc5b325c2, 0xbb188dce, 0x8c1f30b8, +0xa24b43f7, 0x9d5d5821, 0xe172282e, 0x07353de1, +0x8150802b, 0x86910038, 0x85890387, 0x956ffa82, +0xc90d88eb, 0x4f290768, 0x5e530c28, 0x50f7346a, +0x1d9da953, 0x0243892c, 0xea5f6f97, 0x101f0a03, +0x02044388, 0x0763880c, 0xb6fe5b0f, 0xc358edc6, +0x53560090, 0xab1525c6, 0x4d046cb8, 0x65effecf, +0xb0d629c6, 0x29c38970, 0x01006ad3, 0x2d32e8b8, +0xbb7f08e3, 0x685004e4, 0x09e5e805, 0xc23b806e, +0x7adede17, 0x7703c60d, 0x109f8005, 0x131800b0, +0x5cdb0306, 0x230b6206, 0x8114570a, 0xad6f4db1, +0x10047918, 0x160d026a, 0xcf360650, 0x501cf7c8, +0xe851efb8, 0xc28993e8, 0xe08dbfc7, 0x23f66653, +0x0374010a, 0xb8c6b60f, 0x3d836d8b, 0x038849a3, +0x7b459212, 0x1ee59e46, 0x4defeffc, 0xd93ba497, +0xbb782c1b, 0xfc230304, 0x67992d91, 0xc03229fc, +0xf6bdac26, 0x262b0cce, 0xc8269405, 0x31c2f816, +0x01f08306, 0x642f01b9, 0x15e7919f, 0x08d20c0c, +0x64cf2356, 0x1729afb3, 0xde191515, 0x26a83c96, +0x16c76634, 0x6e11632d, 0x170a6ac7, 0x182422d8, +0x33f233cc, 0x1c741717, 0x34b7f5cc, 0x33351817, +0x7d88000e, 0xb1bbd236, 0xd06a3da1, 0x6630eb39, +0xcb68e783, 0x75578377, 0x11160719, 0x5ff7c817, +0xc112cadf, 0x104306e2, 0x0febc201, 0xc7e11610, +0x891432ef, 0x5755a1d0, 0x95bb3c1e, 0xdef8dfbd, +0x513b07a9, 0xb87d7d54, 0x17496c46, 0xea71ebe9, +0x1e9081bd, 0xbf06b6fe, 0x66502406, 0xe8226804, +0x3f0807b3, 0x81c0c6d8, 0x740e127b, 0xf2ade707, +0x39ebf7b0, 0x2b0d7cf6, 0xddfbc88b, 0x457cadb7, +0xfc1a378d, 0xf31305b9, 0xc58343a5, 0xed8d7114, +0x850b1fb3, 0xbc9d74db, 0x4cd88996, 0x0d86613c, +0x5a5fad62, 0xda1bfe9f, 0x1be05e97, 0xfe84e8b2, +0xe0a3feff, 0xa0e8862d, 0x76e7f7e6, 0x09e4a30a, +0xec682095, 0xdeff2e13, 0xe89ffdf7, 0xc08510c4, +0x05c77375, 0x05db020c, 0x6085bf20, 0xf005e5c7, +0x49050809, 0x36e7e0c1, 0xa30aeef7, 0x899907f4, +0x1f06f815, 0x2d2105fc, 0x09b77dd2, 0x10072e00, +0x1e000409, 0xa1d83bf6, 0x2e0831e4, 0x542e0c2a, +0xbdbb2e10, 0xbf34ce11, 0x60773d28, 0xe9055d86, +0x89a9835e, 0x18145aa0, 0xa045080b, 0x180ca419, +0x977b6b1c, 0xb9358d88, 0x01174079, 0xf0d8a60c, +0x870f1eed, 0xb981050a, 0x7730ffbd, 0x7df08d4f, +0x0a064a58, 0xba12992b, 0xfd8e91af, 0xa4b7eb7d, +0x993b0877, 0x8b0676c8, 0xb181c707, 0xf3c5cd61, +0x30f3092e, 0xb1b164e4, 0x36191e29, 0xde00a267, +0xff9dd367, 0x8b920f09, 0x22918b81, 0xdec73868, +0x03d68972, 0xcbb11338, 0xf06f0210, 0x39142d1b, +0x776a72d6, 0x6476c3d8, 0xd8fd8e37, 0x390c112d, +0x722c772f, 0x773f3908, 0xdb1b3b22, 0x1c19db9d, +0x4f1b0f2b, 0x39194b81, 0x9189f3ec, 0x892128eb, +0x108ec189, 0x815ec719, 0xb63809f8, 0x8347ed08, +0xa15d71c1, 0xbb1201cc, 0x267370ee, 0xd813b8c3, +0xee33052b, 0x9f61d342, 0x90850c7a, 0x0ac6329f, +0x4a75db23, 0xa60a8c08, 0xfc607c08, 0x0cca3fc1, +0x7d9c35ff, 0x2e000072, 0xdddd91ec, 0xcf681412, +0x62a51391, 0x5203feeb, 0x6f6df607, 0xfd2835a3, +0x35590c6e, 0x20fd8639, 0x8ca12c74, 0x988f809f, +0x5a9815fb, 0x3ae81bf1, 0x1c0f7837, 0x446a2cdf, +0x0168d557, 0x10e9ff73, 0xc361ff05, 0xe80aebc1, +0xe9c81ee7, 0xaa08a17d, 0x3172189d, 0x63af14ba, +0x1659a171, 0x2ea118a7, 0xed8ce8c2, 0xc13ae96f, +0xfa890ae7, 0xcbceb809, 0x6c5b4e05, 0x55d78923, +0xf4a0dbaa, 0x1e433b4c, 0x144ce88b, 0xc9b726ee, +0xe81c73bd, 0xa7460b85, 0x066206fc, 0x18f6183b, +0x8856c35b, 0x26661447, 0x6b77f7a1, 0x96e2811c, +0x061a8c8d, 0xf85d326e, 0xf2893381, 0xa4227423, +0x17ff02fd, 0x74c98504, 0x2102c714, 0xfb455246, +0xc281044a, 0xc180bd00, 0x49669fdf, 0x24e8ec75, +0xae711b00, 0x758cd864, 0xadc5e898, 0xeb1678a0, +0x1c1f6d3d, 0x77d4bed5, 0xd86ffd74, 0x29f1897e, +0xbb01c2d1, 0xd729c789, 0x80398166, 0x50bd7402, +0x3f4f6dfb, 0x98187564, 0x044703e0, 0xa97be6c3, +0x4fb71d6d, 0xebd8e604, 0xa47dfbc5, 0x43c1b363, +0xc358828d, 0xc600e381, 0x68db1e11, 0xde0d0d8b, +0x2955ce29, 0x637b1ad0, 0xc8397ffb, 0xd8392977, +0xfb812577, 0x1d9c0a13, 0xd219c889, 0x274342c3, +0x1d48ae56, 0x6625211d, 0x04353843, 0x4440ccab, +0xf412a16c, 0xd856e13b, 0x4a9b03df, 0x34053b52, +0x71393277, 0xec1b16dd, 0xff522a75, 0xfaf05745, +0x0fc612c7, 0xc76705a3, 0x0b000405, 0x0e0e2708, +0xc8c8a84f, 0x8d8c6e5d, 0x245d8454, 0x1b8ca3d7, +0x2e701619, 0xed885cef, 0xdbb61ecf, 0x88a1981c, +0x4001b81e, 0x5ad85b08, 0xb8c50476, 0x8c423a01, +0xf66f1bb1, 0xa12d4c4b, 0xc8368b7e, 0x5c52efc3, +0xbf4ae981, 0x78357854, 0xfdf53258, 0x79aaf529, +0x6786f289, 0x3347751f, 0xb80bf781, 0xfb0f2d00, +0x3374e3f4, 0x9b31d4f8, 0x340ca113, 0xd7735b76, +0x9d0318e4, 0xb7bef301, 0x9b368cc1, 0xbe66025d, +0x811be507, 0x0189bf60, 0xbacba900, 0xc28c5ea2, +0x9e567401, 0x15d888e5, 0xe798ad6e, 0xee480242, +0xbfe90112, 0xc8e5b6b3, 0x75b005d6, 0x0054b82e, +0xafdfbf12, 0x8112810d, 0x928bc1ea, 0x1c1089af, +0x6866b1be, 0xd0aa01db, 0x2141b04f, 0x4eb5d718, +0xd6a4eb20, 0x5a2457d5, 0x3dcd1928, 0x2dd3dbdf, +0x8d1177fe, 0x2b901a04, 0x1d89a815, 0x18376a08, +0x2523ebd6, 0x22fbc033, 0x4041d6b1, 0x3a08ffd0, +0x6c369428, 0xdd29c5ff, 0x7f83ee89, 0x9c15be0c, +0xcd5577ff, 0x740a85d1, 0xd86139c4, 0x11cf770b, +0xbfb18d0e, 0x564c8f01, 0xe19a1de8, 0x121b7307, +0x5e8dc601, 0x7633f0f4, 0x39db6c6e, 0x35031937, +0xc31f1004, 0xf917fb02, 0x01c132fc, 0x8d1260ea, +0x56e00654, 0xac5e0150, 0x018b818b, 0xcfecc2b0, +0x890603e8, 0xd90612e8, 0xdb09edac, 0x7ff30814, +0x2508a010, 0x52a3605d, 0x5942db34, 0xdc111447, +0x1c05b76c, 0x290c4730, 0xceb09174, 0x0d666df1, +0x03dc0399, 0x6a5f7508, 0x014cff13, 0xfce18303, +0x715504e2, 0x5154cc29, 0x1b0236d3, 0x0c6cabc3, +0x9324f57e, 0xd0777170, 0x89062ce8, 0xa1e75dec, +0x8652f53b, 0x9c106140, 0x37089424, 0x61dc0d8c, +0xec073354, 0xbc36ec40, 0x36f76035, 0x8d487458, +0x8878898f, 0x77a5f16c, 0x18c283d6, 0xba960600, +0x30b0be16, 0xc2b42c76, 0x7c4800c7, 0x7964b6db, +0xc6d3c07c, 0x1602fec1, 0xfb05bdb8, 0x107df139, +0x108c551b, 0xf07c0f41, 0x6dd6e8f0, 0x5f535267, +0x12499814, 0x1b062fd2, 0x2e6324cc, 0x1f17264f, +0xa143c58d, 0xd8b8aa10, 0x5f81ed2d, 0x0566d084, +0xc41601e8, 0xbc783b8d, 0x40c44b6e, 0x85ce2d46, +0x6241d2d2, 0x061074c3, 0x399402c5, 0x3a11d6d0, +0xbf498452, 0xc7068ba3, 0x04b05b72, 0x0f084a21, +0xa45f35e3, 0xb40f7b96, 0x008b150d, 0x652c9cd8, +0x0abec3f8, 0xb974a7d1, 0x493e8da3, 0x73d93982, +0x1904fe0b, 0x7f6f1837, 0xda3942c1, 0xc10af572, +0x1cb45e5b, 0xe1bbe086, 0xc08c3046, 0x0a749829, +0xdde907a1, 0xe599b831, 0xb6207599, 0x21be1325, +0x86b822de, 0x6ac280fa, 0x840f1bf1, 0x217fd8a6, +0x64a923e6, 0xe7830f02, 0x89c729f0, 0xc3019644, +0x80b920b1, 0x0205326c, 0x12bfef0d, 0x8d60738d, +0x18a61183, 0xdbefec6e, 0x8eef81f0, 0x05c781a5, +0x9605042d, 0x1fb91b04, 0xe7146eb3, 0x18830ad0, +0xfb750701, 0x2d12b783, 0x6c8d32e4, 0xf0e56805, +0x828d4786, 0x1c28e4a3, 0xfafdb1b9, 0xea68046a, +0x5e21ad91, 0x58acc605, 0x5d0ce9c6, 0x1807075d, +0x08050e43, 0x19184467, 0xac300c0e, 0xcfb16e05, +0x12e29c78, 0x0abd2b66, 0x106d107b, 0x1625eb1b, +0x9405142b, 0xb6edd7ff, 0x531805d2, 0x071d571c, +0x16fb1e0d, 0x8c690eeb, 0x03281f9f, 0xd6070f20, +0x2adba775, 0xbca12202, 0x26032e13, 0x602d806a, +0x0d113053, 0xc9eeae32, 0x057c5466, 0x405c3643, +0x8b6c6fce, 0x8e4243c4, 0x48054607, 0x6c6f9012, +0x054e4a90, 0x7e521250, 0x566dc2d3, 0x01586a05, +0x43283501, 0x2404c705, 0x3d5a192e, 0xdf16c4eb, +0x00ee5d0a, 0x4622fff6, 0xc6020106, 0xfc2c0846, +0xec830c46, 0x149276d9, 0x0e2c0a46, 0xe7124657, +0x0f7583ba, 0x14032046, 0x032246dc, 0x1b191e16, +0x281822eb, 0x1e1c051a, 0x27120000, 0x2462ca6c, +0x502646e6, 0xac07048f, 0xa72a4660, 0x310fe383, +0x0c6fb776, 0x2c6a285e, 0xc9fd37b4, 0x6d8e0946, +0xc7e0c118, 0x1fc18c80, 0x57f01fdf, 0x0f37688f, +0xd25c2be8, 0xc5f6fb6a, 0x6aa51749, 0xf91a152c, +0x833cffff, 0xb3106358, 0x6df57d1c, 0xe80fb5bd, +0x4a1cf6a9, 0x19e3c1db, 0x5830411d, 0x90d3dde0, +0x648a413c, 0x3416de8a, 0x021b3b14, 0xed99ea1b, +0x4b8eb851, 0xf410689c, 0xf0f86cfd, 0xa213847b, +0xeb81d3cb, 0xd368be95, 0xeb7831ff, 0x29f7896d, +0x89078bcf, 0x260b4883, 0x6c7705dd, 0x83ec0a04, +0x83250c4e, 0x1b60064c, 0x156e9f74, 0xc1180a94, +0xd05719ea, 0x6c691435, 0xd04e7606, 0x1f6c201b, +0xbad07f2f, 0x20d0eea9, 0xac160e06, 0x81013065, +0x9effb34e, 0x527407b2, 0xba3f74af, 0x98152b98, +0xb1dfee9c, 0x8b5f1860, 0x02899c80, 0x85c8cee8, +0x42628684, 0x70771476, 0x68828ce1, 0xe86a188e, +0xd162bd8b, 0x2a10748d, 0x84237823, 0x05af4686, +0xc75cb734, 0x830723e7, 0xa6eb7345, 0xc592bfe8, +0x57bcf667, 0x8d147a85, 0x57331660, 0xf11bed9f, +0x3a5f4686, 0xc1896032, 0x024b0c00, 0xa93ee083, +0xd30dc06d, 0x3979f201, 0x6ce28306, 0x12ec0871, +0x086a0453, 0x7bf84d85, 0x46350740, 0x9ae805a2, +0x77b9ddf9, 0x206bda74, 0xb327fee8, 0x5e5b1409, +0x9cb5d023, 0xec208b6d, 0xdc81dd24, 0x38806f1d, +0x8b1f76a8, 0x428b4d02, 0x81806904, 0x0762d6d8, +0x42407208, 0xfea0dfb4, 0x1beb06a0, 0x8f14138b, +0xc0d8b50c, 0x06408243, 0x46c19331, 0x365fd6ed, +0x1315c109, 0xb1ea49c8, 0xd144ff68, 0x278bd001, +0x50b60dc1, 0x1e25c60e, 0x5324946c, 0x7c7026f7, +0xd46818bf, 0xa8bb9e96, 0x69b8e6ea, 0xe8b55ee8, +0x79775159, 0xd91c970c, 0x56ff7b1c, 0x77000a0b, +0x7e921027, 0x8dd72304, 0xbeb7be17, 0xded6f726, +0x9f8314ea, 0x900a7702, 0xa0853493, 0xbae0fc72, +0x75f87bd1, 0x8d6f9f17, 0x5add247b, 0x247e09e4, +0x75161c00, 0xb6e0b01c, 0x1c1b6d1e, 0xb6144275, +0x7ee17743, 0x310775e9, 0x02219f02, 0x43c91a91, +0xe62e50fa, 0x066db99a, 0x76010f48, 0x850f0069, +0x5086a498, 0xb4834c5f, 0x86fd180a, 0xff53e00f, +0x0003c713, 0x8f5e1824, 0xa7be2791, 0x81913a5d, +0x2e7a305f, 0xd00915e2, 0xbb84da0b, 0x6fb9e1bb, +0x319fb015, 0x41ef10c2, 0xbd8b2ea5, 0x72dbe839, +0x5ced173f, 0xe1f0f8cf, 0x5613794e, 0x7b293468, +0xa9075255, 0x04d85a93, 0x63c97428, 0xe4a632c3, +0x696d615b, 0xe4237108, 0x115c4819, 0x127cb08d, +0x7c8b1835, 0x961d1fbd, 0x418f81be, 0x02b80ec3, +0x66da89a5, 0x124c6aef, 0xed82183f, 0x0f03b85e, +0xfde86ace, 0xe16fdd71, 0x06a05262, 0xbef8d3f9, +0xeda81f06, 0x9f0bb1bd, 0xf038be05, 0xc83d9c2a, +0xd4dfd81d, 0xc8830f71, 0x14bf3d01, 0x58916c68, +0x16ee2d29, 0xd8b07bed, 0xe0b6b6df, 0xc509cd20, +0x7aad794f, 0x1ac1423d, 0x052896ee, 0xc868847b, +0x10fdac30, 0x955dacae, 0xfa85bbdd, 0x041d7401, +0xc3f30672, 0x870936d8, 0x020835b8, 0xc20cc333, +0x804f612c, 0xfd0f02cc, 0x2dabddf9, 0x8a152cd8, +0x06f6a625, 0x0345d1b1, 0x0cfd2c81, 0xf74b96ff, +0x8db98b6e, 0xff28ec06, 0x12155c70, 0xd2b41a80, +0xdf861023, 0xb00d3f64, 0x25b7067b, 0x0567a020, +0x400c0822, 0x082fdcdb, 0x24a31655, 0x212c1804, +0xfb67b80b, 0x14022080, 0x48042830, 0xb703e214, +0x1c0ca3bd, 0x03a90534, 0xef08f830, 0x381589c1, +0xa32cfca0, 0x4b80a03c, 0x5f58b278, 0xb0ef04bc, +0x1a130bef, 0xb7ee02c2, 0x2dec2bf5, 0x84adfee4, +0x83412ccc, 0xf57e64f9, 0xf1f0210c, 0x10ff4d8e, +0xf9814109, 0xf27e9110, 0x6856515e, 0xc0dabf84, +0x52f61af8, 0x9adeff3b, 0x4ec4122e, 0x6fc71876, +0x59e277a1, 0x09f73acb, 0x0812c1e8, 0x7b8f2cec, +0x04364572, 0x04b07481, 0xc02085cf, 0x8300ba01, +0x2d993b4f, 0x584080c2, 0x12b44807, 0xa1077788, +0x4e806b4c, 0x4205f808, 0xbd915e05, 0x0301a961, +0xec87d07e, 0xee0b4b51, 0x3fa04d84, 0x09764096, +0x083c2436, 0x401084c2, 0x60aa017a, 0xe5020327, +0x4b3c2454, 0x226d6218, 0xb87339b8, 0x00822bdb, +0xcd0f67ca, 0x07b2d2b1, 0xd08e2ace, 0xeedd603b, +0xb13fff25, 0x50936442, 0x1b50051d, 0xbf89d9de, +0x6072ff50, 0x4f540de8, 0x24625219, 0x1b10dd3c, +0x24c04208, 0x1e9760b0, 0xe02d428d, 0x8a309c03, +0x00706ab5, 0x522e8542, 0x917841b1, 0xefdc380e, +0x4a5078b0, 0xec25ebc2, 0x7805c5a4, 0x0c3d1601, +0xc48524b9, 0x180222a2, 0x35a2106a, 0x4c2610e1, +0x081bb14c, 0x07fa4a28, 0x6a0c026c, 0x6dc8e814, +0x40a10000, 0x60592e1d, 0x941c510a, 0x57829a2b, +0xb0f45496, 0x19ecc1a1, 0x8b3b2d64, 0xbbc53005, +0x8a10c63d, 0x3436a3fc, 0x581d6db0, 0x93b46833, +0xf18a0f47, 0xe1283bd0, 0x41881cec, 0x7b1b476c, +0x257f01a9, 0x9415e806, 0x0ffe00d8, 0xef15b7e4, +0x75073daf, 0x4286bd0f, 0xe2b02008, 0x0debfd87, +0x0e0040bd, 0x00bb0180, 0x8106b68c, 0x7deb397e, +0x1bbebe32, 0xc3f80bc6, 0xc63601ea, 0x0ffb833f, +0xbdb8057f, 0x5c649bf8, 0x43d70110, 0x31c8c681, +0x7625d37c, 0x5f998451, 0x6db45c50, 0x370b0bd0, +0xd103741f, 0x5f443bf8, 0xed6f56e0, 0xb7e183d9, +0x883103e1, 0x50431a04, 0x3f6f0780, 0x7bd77e05, +0x4fa4e23c, 0x685ce0bc, 0x4f642837, 0x53608178, +0xbac1d8b5, 0xc7b746bc, 0x58fb3091, 0x49a2bcc7, +0xd802661a, 0xceb3a71f, 0x1f6c68e8, 0x37090a48, +0x7206b8af, 0x565a1624, 0x724ec7af, 0xc0099f17, +0x401690ba, 0x1197eb91, 0xde6264b3, 0xa640c281, +0x1923200e, 0x63f2c123, 0x89fbab1d, 0x43074490, +0x23c2811d, 0x0d8106fb, 0x40a3bb2c, 0x9642acb2, +0x08fb37fd, 0xa359cfc0, 0x0000b244, 0x8d915e0e, +0x85def590, 0x2760044d, 0x60b0a310, 0x8307065d, +0x018527c9, 0x183c9700, 0xe0d24b3c, 0x28ba8c9c, +0x0c77c6a0, 0xa74c4156, 0x048a5c41, 0x5a349118, +0xbeed1e32, 0xe9c56aff, 0x5e4ba5ed, 0x04f53fe0, +0x0a040574, 0x5d084f75, 0x17ea1ada, 0x1f162806, +0xc4f7510a, 0x14037a13, 0x0422cb81, 0xaca43d2c, +0xa07fbbdd, 0x01cf8003, 0x14685329, 0x4c929498, +0x0ea65321, 0xaa38536c, 0xb4377459, 0x74f6f70b, +0xe020be37, 0xc0199820, 0xf16353f7, 0x8159d0a5, +0x342000e2, 0xb93794e0, 0xce4bb7ec, 0x006a5201, +0x89da6f3a, 0xe25dbb65, 0x084002ce, 0x70e39ce0, +0x1ab100c8, 0x6e9317e4, 0xd3deedf7, 0x08c4050a, +0xac12e9a2, 0x09eca29e, 0xc3fabedb, 0xc061a8a0, +0xdaeda280, 0x7e0258f8, 0x16f3bd9d, 0xf7a24911, +0x5be0117c, 0x02bec1b0, 0xfba240e8, 0x0a140126, +0x2145e1c0, 0xfda20df1, 0x4b599c9c, 0x21e4a755, +0x68339331, 0x12f3682d, 0x0197261e, 0xbff5b923, +0x12b0991f, 0x04a810a6, 0x4a502375, 0x83c5de92, +0x734af836, 0x3ce85ceb, 0x946c77fa, 0x2829cc04, +0x01c75016, 0xd67f4def, 0xc7c81ed4, 0x1dd14840, +0x884c406b, 0x3518061b, 0x4050cc81, 0xe0256b46, +0xd817ab54, 0x5ddb052e, 0x72143875, 0x30be0f18, +0x86ff689e, 0x0505c3b7, 0x48b8d1bd, 0x816f4869, +0x46f605fa, 0x5a1feb3c, 0x32067707, 0x0d2feb0c, +0x80bb06b3, 0x6d187472, 0xec1b3d2e, 0x57563b1f, +0x2c8c3de8, 0xedf3040e, 0xc08c688d, 0xb64490eb, +0xd80350c1, 0xc581774d, 0xc6939817, 0xffffb831, +0xa9da291e, 0xd57688d8, 0x94008100, 0x833a5dda, +0x7005f0e4, 0xd017606b, 0x73523d7b, 0x0a40a90b, +0x1c036df0, 0x75f1f572, 0xe808020c, 0xf824699c, +0xc35c98dc, 0x682202c8, 0x75cf6ea5, 0x075040c4, +0x984c7016, 0x61ac7bb7, 0xa1e82b25, 0x1a620c66, +0x9776a104, 0xa2f2e668, 0x1e04e48b, 0x80ec2205, +0xc468f54d, 0x40e0c855, 0x36fbb85c, 0x7e911208, +0x20135bff, 0x912b01a1, 0x79751233, 0xfbb75f50, +0x296035ff, 0xa1892ee8, 0x5b88c909, 0x3e308bc0, +0x39fe7495, 0x38ebdd7b, 0x68b518a3, 0xd6836435, +0x84909854, 0x2e648277, 0x36c87bf4, 0x3d64766b, +0x58741248, 0xbfef0b78, 0x83547e6d, 0x4f7f02fe, +0x14c610a1, 0x89f7701d, 0x400c9ed7, 0xff084ca1, +0xc02a0450, 0x233708b1, 0xc6917883, 0xd4942352, +0x16defe5b, 0x92f76350, 0xead468e9, 0x32cc688e, +0xa0331879, 0x3689773a, 0x02469853, 0xdb1a5c0b, +0xd39adec6, 0x8f0f0339, 0x19fd1059, 0xecf50872, +0x81e9b632, 0x0094040d, 0x9f8a8c08, 0x9d4d7b6f, +0x4814a1fe, 0x503d5e22, 0x1ff0d04d, 0xe81b742f, +0xd10a19ac, 0x2ff61207, 0x05731f62, 0xe8129217, +0xb3b003bb, 0xbb209708, 0x0cf4fedc, 0xd35fbddd, +0x50f91c71, 0xc95805d9, 0x0004be00, 0xec426d90, +0x0c6dff0e, 0xcebbba44, 0x30090541, 0x0210e9c2, +0xfac16566, 0x8455cc2c, 0xd11cac50, 0x638e10af, +0x33850f3b, 0x77c35708, 0x8941d889, 0xa102c506, +0xe57fd340, 0x0f45da16, 0x4807e20e, 0xfb5f0f54, +0x03901d6b, 0x7e022236, 0x0313640a, 0x08bc2dac, +0x16981285, 0x0b161208, 0x0d757676, 0x15c219b5, +0x9e08cd31, 0x8cf817d5, 0xd7704a16, 0xe91ad86b, +0x1ea12371, 0x20908dcd, 0xcd0e8d7c, 0x62ab6a08, +0xf621a30b, 0xd0cc2080, 0xc20cba82, 0x50891c27, +0x1c5889c2, 0x6fbf20ee, 0x0c3e2308, 0x99be0dfc, +0x208c11e9, 0x4f01843c, 0x15421b2e, 0xf8c2384b, +0x14241c89, 0x423b5514, 0xe96408ec, 0x745ce3cc, +0xd847ec33, 0x302a0ec6, 0x763b7a8b, 0xb05f1a74, +0xb0194f4f, 0x38467db3, 0x8c4390e0, 0x02457cf7, +0x896e0986, 0xbd8310fe, 0xa208803c, 0x01be6978, +0xfb23b35d, 0x0c1e62c4, 0x84471e34, 0x3608e337, +0xdf0440eb, 0xd3e4b083, 0xffbd7d05, 0x843b1d45, +0x097f7983, 0x894105b4, 0xa31a6ef0, 0x108dda49, +0xeaa1205a, 0x0a6035b6, 0x0c890e61, 0x91db5408, +0x3078f188, 0x80466301, 0xf512dc3e, 0x046ff6dd, +0x430d743a, 0x0b1e3c80, 0x753a0506, 0x6df8bff3, +0x273216e4, 0x7ce000c9, 0x3c0ca5d8, 0xff530012, +0x670d7037, 0x63c460b7, 0xc7827748, 0xb9722408, +0xdff65c9f, 0x3100b2e9, 0x68036aa6, 0x618db5cb, +0x1e461b5b, 0x92352d34, 0xbf472267, 0x03d8a588, +0x4f06f4b5, 0x850dfae4, 0x742f3880, 0x52df1d47, +0xc3401ce7, 0x01e4cfe8, 0x7634031e, 0x1d35bbdf, +0x29402092, 0x10240a54, 0x0cf50950, 0x15318ac7, +0x0730cff6, 0x46bb03de, 0xa3f82d75, 0xbf827ef2, +0xcf68c3e2, 0x5644c836, 0xd03bf668, 0x9bc6dc3d, +0x04573e40, 0x56502574, 0xafdf203e, 0xdb682d90, +0xe8569e29, 0xa4f81f20, 0x104b2138, 0x1a13e8df, +0x7a4957f5, 0x3f976497, 0x08fe6a14, 0xd09e1512, +0xd055dbb2, 0x2d0d102f, 0x7f347b9a, 0x343d8038, +0xc58c60d6, 0x0825295d, 0x6b8775b8, 0x3d461258, +0xb6f9860f, 0x52f7ef5a, 0xc7810bee, 0xbdbc8605, +0x2b349dd1, 0x218bc64a, 0x97466bf6, 0x8a0c106b, +0xfdd4129a, 0x0f46c586, 0x7926bf07, 0x3aa5e95c, +0xe0900c16, 0x54808db4, 0xb9bafc64, 0xb0dc52ad, +0xac35ef1a, 0xfbda461d, 0xf75ee06c, 0xaf7410e0, +0xeda63f43, 0xa55916c0, 0xd4bb7473, 0xec1422c7, +0x08db85ff, 0xdad8d90a, 0x7ef6c7b3, 0x5868040d, +0x50baa84a, 0x88310877, 0xb0014e47, 0xc5608a27, +0xb8bccb25, 0x962961e3, 0x855ad946, 0xe84acc5c, +0x546f18df, 0x0c428b70, 0x8ad90d8b, 0x6885de2d, +0xa2034209, 0x15ed4dd8, 0x2075b776, 0xeb09c81d, +0x90113248, 0x4b4f6d8c, 0x4402b8b8, 0x2f18a33d, +0x9f0420dc, 0x95187502, 0xf7b01b2b, 0x10b90ed9, +0xa10e2000, 0xb0307cb4, 0xa1efd98d, 0x43b4a304, +0xfe72b815, 0x6f58a85a, 0x0fff248b, 0x14b5f025, +0xc13b1bfb, 0x148d02f8, 0x03bb0190, 0x93e10f24, +0x830f02bd, 0xd9d9d6ec, 0x848affff, 0x1bfbfb75, +0x04a01a0c, 0x3a74ed85, 0x39141d8b, 0xa5e776f3, +0xf36c4560, 0xb12d836b, 0x578da6b1, 0x29ad14f3, +0x31d70121, 0x29f5f018, 0x36df01de, 0x89ba7f1d, +0x44988c5a, 0x87a0341c, 0x28a2bc42, 0x1e2442fb, +0x07755274, 0x9ec2e730, 0x0a5409d0, 0x361092df, +0x7d3d2300, 0x1cb8300c, 0x0daf4d2d, 0x058181de, +0x2353e4df, 0x3c8ae851, 0x9bb31420, 0xb380905f, +0x504cad18, 0x382110a6, 0xf8614bf0, 0x18c7080b, +0x1bfff3b2, 0x7eda4193, 0x018c1c3c, 0x3c02d8d6, +0xa7217495, 0xd027815d, 0x720c1939, 0xc6284f15, +0x730b67ab, 0xd9b7a109, 0x63440082, 0x2e3c1491, +0x0e11c817, 0xdf5c03fd, 0x0d018603, 0xc7281f97, +0x0bbf00a5, 0x461a16bc, 0x1baa73fb, 0x025d8dbd, +0xfb53b557, 0x348d2e12, 0x03307897, 0x302c0bfa, +0x85879839, 0x0febd2d3, 0x75083b35, 0xeaab0e76, +0x8cdd6ab8, 0xcacc332d, 0x722f5fc8, 0x28d0bbb4, +0x042674ce, 0x1df80777, 0xa5376ff4, 0x03064beb, +0x44eb2874, 0x8068148b, 0xd6e07d81, 0x75a9307c, +0x31eb0f37, 0xd9bd4b12, 0xeb0424cd, 0x0fc3b11e, +0x051dbf06, 0xd3a366de, 0xa3205456, 0xcdeb89e7, +0x84761eed, 0x7c2c5682, 0x061f74b9, 0x8039cec8, +0x511e0646, 0xf4482103, 0xf26810eb, 0x6a40514c, +0x820ac1e0, 0x6d181a15, 0x07752774, 0x5424e310, +0x34c558ff, 0x0b5f7772, 0x050b0b34, 0xdf6d0530, +0x5a35d558, 0x3e107534, 0xb1721a15, 0x28f63909, +0x1e390877, 0x14291e72, 0xb1c4efba, 0x88e92419, +0x1e010f78, 0x59d82dc7, 0x343919c4, 0x9b0d7309, +0xc9388461, 0x5c439155, 0xc52e1dcd, 0xd8107a36, +0x20c2078b, 0x1eea68bd, 0x3869cb43, 0xfb181840, +0x409a1b1e, 0x291ecd42, 0x15bb012a, 0x81d2658b, +0x010da850, 0xb803a367, 0x8d00d1d8, 0x889ec39a, +0x3ab90cb4, 0x9ab18b25, 0x8b1b770e, 0x15132528, +0x548a522c, 0x89af167b, 0x40292dfc, 0xe00a20be, +0x0296db7f, 0x3d30084a, 0x8e8b4174, 0x3b6fb924, +0x55fd1057, 0xb1d3392f, 0x6f392972, 0xc1e107bd, +0x74442572, 0x1707a116, 0x1b968b05, 0x2c7efec4, +0x7305903b, 0x611e8906, 0x7e125fc6, 0xc51020a9, +0xa27ff839, 0xec8b6b74, 0x35b19775, 0x2c86e634, +0x6cdda32e, 0x0d807eb4, 0x19c129b1, 0xed9cc3d3, +0xb3593ad0, 0x6d303a55, 0x3d221a00, 0x82363997, +0xbacec721, 0x3458e832, 0xf02d3546, 0x23fbf325, +0xa81500bc, 0xd311c101, 0x11540d01, 0x59f8011d, +0x0f1ab384, 0x8e09d0ac, 0x9dac1b16, 0x2901ff2f, +0xe21e40a3, 0x7223a1a1, 0xe8265038, 0xca6b3af8, +0xeb2df1f5, 0x75080af2, 0xa9416c46, 0x3404de20, +0x9e0246e0, 0x390b6306, 0x87dc2b08, 0x2869e196, +0x49e86732, 0xfa876e19, 0x3dc09702, 0xf47ee830, +0x2bc5b7ee, 0x8928150c, 0x688d2ad0, 0x958ebf34, +0xfa5e583a, 0x83d69300, 0xf88101bb, 0x8b37a713, +0x10b92c83, 0xdc0a5b09, 0x090e34b3, 0xb82c580a, +0xe855ec77, 0xab035726, 0xc394491e, 0xcc437a74, +0x66b1988d, 0x9e6e3539, 0xaba0276b, 0x0f1a2f72, +0xdafc184e, 0xff9394a5, 0xd4416e3c, 0x8444d18d, +0xdef60870, 0x1178b1fc, 0x0040e3db, 0x21231f22, +0xf8d08af0, 0x6ea65ffa, 0x284951ae, 0x1a4bfc1e, +0x8da09c5b, 0xe316aa93, 0xdfc558e0, 0x50503304, +0x80d0e853, 0x0301c085, 0xce0ac271, 0x35e647d3, +0x5626e4bc, 0x2ae81663, 0x4635023f, 0x47e1c2db, +0xc0189b1b, 0x7eae9957, 0x985d778d, 0x0fe879ad, +0x7459d6f0, 0x4fd5a3aa, 0x781820c8, 0x07f26a90, +0x5ab86ae8, 0xea0bd2a8, 0x33fc428d, 0xe93905ee, +0xc842b40e, 0x4751047c, 0x388181a0, 0x8d6818c2, +0x0bddd820, 0x3be34c94, 0xea0a7d00, 0x6c56e136, +0x181bf74e, 0x70d15b96, 0x82f190d6, 0x60480c2c, +0xa1da31be, 0x11d77644, 0x0582a53d, 0xe946483c, +0x8b570178, 0xe18f4a97, 0x73486a45, 0x6f015030, +0x3b1c415d, 0x24764036, 0xd04ceb43, 0x037e5207, +0x439a9b58, 0x64d97a18, 0x4fe92040, 0x576bb8a1, +0x0d3b4870, 0x6634763f, 0xcf1d3b40, 0x402ba194, +0x0a02d873, 0x6be0dbe4, 0x60511c05, 0x31243ff8, +0xf70e04c2, 0xa3be361f, 0x5e420749, 0xc50d9092, +0x62c5086f, 0x334c8969, 0x66092b5e, 0x5faa2c45, +0xbf8a1fc4, 0x8b567560, 0x5f97d787, 0x87117fc4, +0x03d389c1, 0x409fd78f, 0xf8bdb174, 0xa1183b0f, +0x265be61c, 0x5613f0c2, 0x04772672, 0x88b0437d, +0x1c01df20, 0x06721277, 0xddea4752, 0x0a7718fd, +0x4608ce99, 0x86174101, 0x77f52db7, 0x1f327499, +0x9ddeec25, 0x48034c01, 0xd4992868, 0x89553a4f, +0x6ca35db7, 0x0339445b, 0x00167648, 0x4408d87a, +0x29beb837, 0x059c18d9, 0x2c992aad, 0x96df032d, +0x596c0608, 0xbaff458d, 0x5d60844d, 0x5fc585e0, +0x119500f0, 0x988c3522, 0xebfe42d9, 0x54266207, +0xf7e8520d, 0x4c500dd8, 0x996ac518, 0x85e11146, +0x098103e5, 0x755bb51a, 0x7c77d629, 0x1b777779, +0x8df860b0, 0x011bb921, 0xf80f07d7, 0x2e2ef106, +0xe9d03947, 0x24348bc7, 0xda82f734, 0x0c730e2d, +0x6c18e909, 0xc2f08f7b, 0x0eee3d3b, 0x2e07153b, +0x22c70f8b, 0x150d59bf, 0x8d0f380c, 0xff86f154, +0x23ff2af6, 0xd7399c54, 0xf8890a72, 0x205ad029, +0x78431573, 0xec4348f6, 0xffff4a1d, 0x7fd089f7, +0x429210d0, 0x89b93014, 0xb04e89ef, 0x5ede84f0, +0xab0833fb, 0xd6749e08, 0x5534112d, 0x811095ec, +0xd1aebb3d, 0x457f0dff, 0x4975464c, 0x52250a35, +0x80ed3d00, 0x0001b42f, 0xa16638b1, 0x02e819f0, +0x3e168c6d, 0x54297770, 0x342077f4, 0x0f14b838, +0x75d03435, 0x61f6bf14, 0x3f570e2d, 0x0a740609, +0x2474fa75, 0x7a39e938, 0x63412168, 0xf99c0438, +0x0b26e946, 0x063c7a57, 0xc315d7e2, 0xd0af060a, +0xa4e3ecb6, 0xf039a45f, 0x2a24607a, 0xaaf0a82c, +0x2b14b8fb, 0x8504e652, 0x6677d81e, 0x4e2c2118, +0x02c42108, 0xc6159810, 0x4b3452e6, 0x182f85c0, +0x073aa771, 0x62e703d1, 0x4ba2c61c, 0x01411829, +0x9f12188c, 0x9e00012e, 0x8f4e2425, 0x7dc177c0, +0x603b4f68, 0x833c0989, 0x9071d2b8, 0x71dee61f, +0x7318fcd2, 0x20058904, 0x82349003, 0x367c3587, +0x13d1f3ca, 0x017dec05, 0x1d316157, 0x8b07763c, +0x0158a340, 0x6a810043, 0xe07dc02e, 0x9c7c0937, +0x04854887, 0x9187d80d, 0x29008053, 0x4de5de37, +0xa2c07a85, 0x980e2bb8, 0x8f437010, 0xf2e851e2, +0x75ffd241, 0xb7e40632, 0x681c587b, 0x36f137b0, +0x724d00ad, 0x99a30966, 0xdb995b1d, 0xb92bc28b, +0x237d10f3, 0x8762cd84, 0xafea01be, 0xd13a3222, +0x14dd7cea, 0xd3b0c561, 0x0f4bd843, 0x4f89e98d, +0x71ff42f8, 0x8375908d, 0x7504407a, 0x8b5052a8, +0x1b0b8788, 0x11594ebc, 0xbd0e77f9, 0xf831601d, +0xdde85751, 0xb97399f4, 0x96c3900c, 0x708c5c63, +0xa32a36f7, 0x62b8b8ec, 0xea170c8d, 0x043c7fdd, +0x488be205, 0x0df90150, 0x40708b04, 0xd5b03f0d, +0xb1146ed6, 0x3b515652, 0x22754d20, 0xf9f6786e, +0xf0cae207, 0xe700c941, 0xec0cc6ce, 0x58edcf3c, +0x14f4171c, 0x097c9db7, 0x8c0fafb9, 0xc7e41774, +0x28ca2805, 0x2c1924d9, 0xf07e7409, 0x3809db20, +0xf02f3eb8, 0x23fd850f, 0x36a01100, 0x36007d81, +0x121b0313, 0x13ba4e3f, 0x44540160, 0x21350ef9, +0x61fac6ee, 0xfffb81ce, 0xbf053ff0, 0x109ab8a0, +0xb93d041c, 0xd8c4672c, 0x10f96967, 0xb2379ba0, +0x980770aa, 0xb1857a62, 0x26a3d001, 0x0a4d8713, +0x91ccbca3, 0xdd0bc246, 0x07e06a83, 0xe1e83d52, +0x07be14f8, 0xfc692c5e, 0xa11cbf56, 0x09802c2f, +0x83e3245b, 0x14009d5c, 0x2c018add, 0xcac3012f, +0x2addfee4, 0x22858d5f, 0x5576d839, 0xf60d91b2, +0x5079dd5c, 0x0607ae57, 0xcc4dfcff, 0x85e83a2e, +0x033be25b, 0x43f6087b, 0x80f0b003, 0x0f25146f, +0x9e7d03b6, 0x7bf93d93, 0x021c8018, 0x868d0a54, +0x8ab7ab77, 0x2f8d8bfd, 0x07eb4d74, 0xbca1c20c, +0x0180df6d, 0x562a6867, 0x064ca8be, 0xac0b26cc, +0x1ee5e8d5, 0x017d920b, 0x874523ba, 0x87b83d12, +0x4faed285, 0x67412765, 0x6333a8c5, 0x57b873c0, +0xccd0858d, 0x24482932, 0x2260070d, 0xc9750a1f, +0x4eb62b0e, 0x8c8e882a, 0x41047d09, 0xcb179088, +0xc020a44f, 0x80a3790d, 0x31ef96b8, 0x506f9859, +0xc96b396e, 0x1ed8ab1b, 0x0109a8b3, 0xb1d94d15, +0x3572f416, 0x2b7261d8, 0xfb1f521b, 0x310d8b79, +0x091933d1, 0x1c5375c1, 0x0d8c4b7c, 0x5b77783b, +0x7b730735, 0x6d5b7a03, 0xd95d071d, 0x8e1fc181, +0x89f61d8d, 0x3a2942c8, 0xe1816419, 0xa7d4afb1, +0xc5d90188, 0x8e3b292d, 0xebef006d, 0x6a20a139, +0xc6295303, 0x1449dbbe, 0xd020d4e7, 0xa3cc15ff, +0xfb160389, 0xf0418920, 0x3dbc10c4, 0x92050f14, +0xe110fe90, 0xb49eac42, 0xcefc245c, 0xa0f373f2, +0x04bd40ad, 0x06c1f60b, 0x181a0860, 0x1f719430, +0xd452fde6, 0x105a2058, 0x6dd7d59d, 0x72e88a37, +0x0bf70edb, 0x476d47c0, 0xcd2e0238, 0x7311d2f7, +0xf6899bdb, 0x86023881, 0x1dd21ac4, 0xbd820a3d, +0xea810627, 0x9fed3407, 0xfb12f40a, 0xe8197567, +0x4c1bc9f4, 0xc86d0dee, 0xbf0f8de4, 0x0306e815, +0xf0affe85, 0xb805491b, 0x1389c755, 0xc10be9f7, +0xc1e1bed6, 0xf8220cfb, 0x8dc3291f, 0x568302be, +0x6c6ed6db, 0x092a07e2, 0xe802a7c3, 0x8db7abed, +0x030f8941, 0x0903ca29, 0x73620d78, 0x18e2d1db, +0x800225db, 0x6ded0a27, 0xc839e181, 0xc2294309, +0xdb1b141d, 0x5855f1be, 0xab050a79, 0xa1697f77, +0x5e1b5004, 0x80fd8bc1, 0x463c1f3d, 0x3c7454ff, +0xf00273e8, 0xcc3be833, 0x9812c6f8, 0x0c741bea, +0x9503abaa, 0xe245fc16, 0x0bf40aeb, 0x92fdba05, +0x3460d108, 0x8fc8ff52, 0x8c952b92, 0x36e12091, +0xb7a9682e, 0xeb58348e, 0x2e74992d, 0x00b80ba9, +0xf2726411, 0x83d06a1d, 0xc5733f51, 0xe81c3230, +0x81a0ffbd, 0x921c723d, 0x7de82ed4, 0x48511c01, +0xacc22a52, 0x1b6d3f4b, 0x1e3980bd, 0x8a28972d, +0x7cdf5711, 0x8a82de37, 0xc238df88, 0x194341ce, +0x07eefb13, 0xe6740ef2, 0x0f08018a, 0x138ac0be, +0x16d08015, 0xdcd2079b, 0xc9c5ce5b, 0x8920edaa, +0x8bab0803, 0x3562155c, 0x3053d660, 0x0550f557, +0x183984d7, 0x56766512, 0x4d027f8f, 0x02ff833c, +0x2216177f, 0xd0fec1fe, 0x3a80d901, 0x201b742e, +0x0908e6c1, 0x6f6847ce, 0x0321de94, 0x2717ac7e, +0x0410c8c1, 0x89e8fd08, 0x29c5026a, 0x464a43e8, +0xadd86c90, 0xbeb5df85, 0xb7920a33, 0x093c30e8, +0x60d01477, 0x92b6858d, 0x42a111b6, 0x12ee1391, +0xec76e88d, 0x890bed05, 0x7e2bffca, 0xc7996244, +0xeb12c349, 0xfd60e402, 0xe4c6c40b, 0x46c0d964, +0x7402a804, 0x177ee809, 0x1acb7082, 0xf6e872bc, +0xc3240180, 0xc235c831, 0xe8173615, 0xfeb613e0, +0xe6d1b0fe, 0x08b1e864, 0x8160e6df, 0x740dd9ff, +0x4b5b7b43, 0x701d89d9, 0xd420fbd7, 0x6f0aa2c7, +0xffe2e80d, 0xb1b38832, 0x4bc02385, 0xb1bb8a18, +0xa86c7007, 0x421a03e8, 0xf8c398d3, 0xfb81df6f, +0xfb837415, 0xb302750d, 0x83d8890a, 0xefee0093, +0x28c7dae8, 0xb2c0950f, 0xf4430c12, 0xa8ee5670, +0x37058d0d, 0x89fb605c, 0xdeeb29fb, 0x81f0f60f, +0x76fff082, 0xd4092a43, 0x7bb6bf05, 0x82778046, +0x910cd7e2, 0x1b1502ba, 0x0cbe63a4, 0x7d418b66, +0xbaddb170, 0x2723478c, 0xa10f5b63, 0xf494f81c, +0x24df503a, 0x11825184, 0x0bafb9b6, 0x83198201, +0x04648809, 0x8016a70f, 0xd0e0f0dd, 0x29168e39, +0x08730776, 0xb32c3843, 0x04f62017, 0x0df74b72, +0x64810afe, 0xfd8a9617, 0xba1debd4, 0x16a9d829, +0xc3d96c0b, 0x1e20cd86, 0x26107248, 0xa956e837, +0xc58950e3, 0x044104bc, 0x83d0b6c3, 0x8fcec9c2, +0x801b7629, 0x98e08c52, 0x354ab459, 0x3308c436, +0x6aaf5557, 0x87c03f01, 0xb72d6789, 0x90e8d9e8, +0x74fe1be2, 0xc377e855, 0xe8241c85, 0x03024d0a, +0x903b5482, 0xf55ec200, 0x752c2bd1, 0x8e00aa4f, +0xdc65301d, 0x7c3d4820, 0x7a07080a, 0x6f1c7e44, +0xab0bd449, 0x3e00ded3, 0x762a0f6c, 0x0cd60cd1, +0x41b1b3c4, 0x0cb76c88, 0x478019f4, 0x07aa8043, +0x019b5ca9, 0xf9f50545, 0xaf85ea07, 0x8a105c11, +0x7614353b, 0xdd075d4c, 0x46130666, 0x6c9c1405, +0x3ba06c0b, 0x2eebd8a8, 0x2910eb07, 0x95d857e8, +0xed14b04e, 0x47720c3d, 0x6c6c6f35, 0x8916eb73, +0x0a0510eb, 0xf417043b, 0x317dc03e, 0x0c4f2b2b, +0xeb0d0405, 0x7c39256e, 0x7b191865, 0xa6db3780, +0xf5297c8b, 0x08b5de18, 0x09784611, 0xa3b5ffff, +0x4709190e, 0x406f82f1, 0xf1623c5e, 0xdaea736b, +0x6051e02b, 0x680b4884, 0xa33c35e2, 0x1845868e, +0xc01c8a76, 0xa1a29e05, 0x83d9c2dc, 0x49bf50ea, +0xf0e2cebc, 0x725280b8, 0xf008ec19, 0x08897b60, +0x0442ae89, 0x5b252810, 0x5d3e3fd6, 0x376d81c9, +0x44c2217c, 0x66244108, 0x3b6c9d87, 0x084c1889, +0x7a6b6810, 0xb7779294, 0x03034727, 0x31b1e947, +0x9a83fc40, 0x2b1668e7, 0x762f4063, 0xc04b39eb, +0x7dad2001, 0xec746d2a, 0x0d037856, 0xfbfc422f, +0xf60c8cf8, 0x01812caf, 0x320d3bd1, 0xaf020d0d, +0xa5908c49, 0x472dfe8a, 0xd431390c, 0xb73c9e21, +0x01808384, 0x1505c8db, 0x5582ebef, 0x03281aa5, +0xd7510453, 0xcc2360c8, 0x05085c20, 0x355f522b, +0x17e548bb, 0x22fb0264, 0xd05b69e8, 0xdda10c26, +0x379a10e6, 0x0b6d042a, 0x3dc23a1a, 0x1e8ebb23, +0x06ffe018, 0xf00cf106, 0x88a9c160, 0x53dd475f, +0x9faae035, 0x9129f32a, 0xe8c7136f, 0x68626c35, +0xa0e012a7, 0x8c40b10d, 0x167480fe, 0x3dfbe417, +0xb2680b17, 0x9215c11e, 0xeacf3d87, 0xf834abba, +0xbe43b031, 0xc5680bdf, 0x53f48c1e, 0x17efb0c0, +0x1ed1680b, 0x3da2536d, 0x0aa3bc52, 0xb86b3ee8, +0x111e324c, 0x59578026, 0xfab84005, 0x27dd9c05, +0x30e3653c, 0x6df6602c, 0x313bde9c, 0xbe6112c1, +0xc070bd63, 0x1ef4683f, 0x35221212, 0x41342948, +0x165aa117, 0x3ac04870, 0x6f412735, 0x0605811a, +0x82637508, 0x52a361e4, 0x9529720d, 0x687be00a, +0xc3f60ea3, 0x067b240e, 0xdb8a3f3c, 0x0bb18f1f, +0x920e438d, 0xdaa52b92, 0x75854077, 0x19061d21, +0xe0543dba, 0x8db60612, 0xa6503e8f, 0x71b41262, +0x9bfb822b, 0xd08ab018, 0x54d33c86, 0x80edd88b, +0x0ca545a7, 0x59551ca3, 0x238a6854, 0x6822feec, +0xaabb9024, 0x5be915fd, 0x6c4488dc, 0xfcbfb855, +0x7b0523ad, 0xcb3c5b08, 0x5b122f39, 0x6307a109, +0x47de2c5f, 0x23b8261e, 0x2f12c010, 0x15461a6d, +0xdbfe830a, 0xb4120ef3, 0x062b835a, 0x0c089501, +0xea5fed48, 0x42fb4e27, 0x6cbd7440, 0x1e3c80bc, +0xc0b10706, 0x04f423f6, 0x43b52d06, 0xa2ebedae, +0x1206017e, 0x8471c6a9, 0x06bb001f, 0xbc041504, +0x31030100, 0x686f503e, 0x49e84a3d, 0xd9cb2397, +0x6804e30b, 0x352a13e0, 0xb1c02710, 0x22788d85, +0x86d9897e, 0xeeb66d04, 0x34049551, 0x01b31024, +0xe2ff0930, 0x1c6ade26, 0x92170668, 0x488361e0, +0xe1b442d7, 0x7feed0bd, 0x3c33cb05, 0x8d685650, +0x0d9f1046, 0x20ddf096, 0x14bb087f, 0x22ebbe7e, +0x3b182959, 0x474a9a10, 0xc53cd710, 0x541c0319, +0x57eb20d3, 0x8d2472df, 0x4506c6f3, 0x7d0379f6, +0x6017c350, 0x03006c03, 0xc86c43c6, 0xa021fa29, +0x43c74a24, 0x6140c504, 0x2106e00c, 0xac6ffe88, +0x439d17e8, 0xf6a1c109, 0x681c2d3b, 0x43e8e027, +0x09404542, 0x56e25b1a, 0xb1412da3, 0x5286430a, +0x62c403aa, 0x5a026f24, 0xa15ba806, 0x9434b211, +0xee40731a, 0x7e8db906, 0x767d2914, 0xee9ff961, +0x47240807, 0x14eb8302, 0x7f5fdf86, 0xae6c56ba, +0x2c588247, 0xd50618c9, 0xd221835e, 0x3f170602, +0x460bef77, 0x661c87fc, 0xa366286e, 0x8ef7d8d0, +0x565354c0, 0x50673c6a, 0xc5e0726c, 0x182d8db8, +0x7d57e814, 0x802c789d, 0xc50c0543, 0x4449be68, +0x8b06ac17, 0x1849f60c, 0x8a1ac40a, 0x0827e854, +0xfe885a77, 0x3b0df4f0, 0x84751050, 0x8385b443, +0xaec07eb1, 0x8c01948e, 0xc83f342d, 0x248e5b3d, +0xeab54582, 0xb803acea, 0xadde1bd0, 0x4e450440, +0x05980640, 0x263ceb8c, 0x91c5560b, 0xb4d60375, +0xfdb1c1d1, 0x1cc0337e, 0x04b817fd, 0x1df8f1fa, +0x352519d0, 0x1a9a0015, 0x1a18160b, 0xe884540d, +0xd5afb710, 0x86899028, 0x8e81c554, 0xbd296a78, +0xf3e8cd84, 0x55b00c3d, 0xca069c8b, 0xbd9fbb76, +0x500646b4, 0x6836fff5, 0x9e68633a, 0x3394e81b, +0x988e4b0b, 0x9e401f57, 0x316c8b30, 0x08afa0aa, +0xb82c07a2, 0x02a467bb, 0xf405ff12, 0xc4460259, +0xa02e0452, 0x7ccdf6a3, 0xfbb27380, 0x503b1822, +0xf49ef607, 0x813c0062, 0xaf50e860, 0xb05ba241, +0x03079d5a, 0x6dd824bb, 0x115a3db1, 0x07c75df5, +0xfdaf1134, 0x50793ddc, 0xb78a1e66, 0xb13db001, +0x5636a07e, 0x3e901612, 0x006a6c3c, 0xbbdb685e, +0x35210a7d, 0x72f0af57, 0x1639ac66, 0xc5b7b09f, +0xfa4108ed, 0xba8f2c14, 0x3b6f144b, 0xc1a16676, +0xa303d083, 0xabc46009, 0x8ec17dec, 0xa2e82bfd, +0x3885f60e, 0x40e9bc02, 0x8dee0d0d, 0xc15911db, +0x18417a0e, 0xf6588d17, 0x3092e808, 0xc48614e1, +0x1c14431f, 0xc40bdd80, 0x74051a35, 0x0e7f041d, +0x56a66c03, 0x477bf7d9, 0x26176e9e, 0x06f87f63, +0x94e92d74, 0xb11e2a01, 0x4586518d, 0x5220db9b, +0x0b9551e5, 0x47b6ef23, 0xc6deb6eb, 0x67268d27, +0x446aeb28, 0x6c2aa16d, 0x0edb16b5, 0xa8bad42b, +0x46a900e9, 0xde251b25, 0x553e0c87, 0xfb7783ad, +0x5bc02e04, 0x55737439, 0x65681037, 0x60e01b58, +0x91f21af5, 0x80522975, 0x4402627a, 0x8ac207a2, +0xe0b743c1, 0x23cf77a4, 0xdbffaaa3, 0x8a188040, +0x63f02e7b, 0x39a5c237, 0xcb81ab69, 0x107e6bff, +0x1e331869, 0x0f363be3, 0x854bc08d, 0xdd3444f1, +0x089e0805, 0x93076d03, 0xa081f3e7, 0xec212212, +0x04e108f5, 0x008dc091, 0x6a19e2fc, 0x08242006, +0x35f093ed, 0x3b42f3db, 0x4b75d039, 0xd8370b06, +0x82a1d3de, 0x775e0258, 0x7a202f3c, 0x6a5a39ee, +0x064f28c1, 0xd0bb4358, 0xfe426158, 0xaec04405, +0x300cd89a, 0x0c11109c, 0x08db0aa9, 0xbff83058, +0x8c37a1f6, 0xdec3bdee, 0x200ecdc6, 0x8438c745, +0xb1206a9d, 0x833ffb4e, 0x1ee00d3f, 0x4b1aeb1d, +0xc1d07b08, 0xd444928a, 0xdb0785c6, 0x9b3b80c2, +0xde3c0432, 0x84b0ba84, 0x7b6809e1, 0x84028625, +0x568d23f1, 0x04f743e0, 0x3c2801b0, 0xf896b03c, +0x70d801c6, 0x02788002, 0xa429ce6e, 0x08701087, +0xb920615b, 0xf160d86f, 0x02a80238, 0x58df152a, +0x1981c58d, 0x05e45c15, 0x221842b7, 0xdb0250db, +0xdbaa0cc0, 0xc231b804, 0xeb01c842, 0x52b10290, +0xf90d689c, 0x31bf10cf, 0xbc2f0b3e, 0x3d5ca685, +0x360fab3a, 0x758a6c53, 0x73838dff, 0x4c572baf, +0x85aa0316, 0x160ad17c, 0xc03a896a, 0x42df53a1, +0xe8437c3b, 0x3bfff7f9, 0xc16ce300, 0x50d0fba2, +0xe3e82c68, 0xdb64b915, 0xe9d989b7, 0x2c723546, +0x58142490, 0xcbb045e8, 0x23583562, 0x49d98622, +0x1c7badbc, 0x22c55457, 0x891d85c5, 0x571920b1, +0x39aee8c4, 0xd0728344, 0x55b6aa85, 0xd91b6c3f, +0xa9a3588b, 0x6c37eebf, 0x3860d418, 0x5a1fb906, +0x1879e4ae, 0x10f8f4a3, 0x60c5d86b, 0x27a3d40b, +0x02bd7007, 0x29904167, 0x2889c17e, 0xbaeff04a, +0x7ff869ff, 0x53f4117e, 0xc9d1f82e, 0x00057e57, +0x29f142d1, 0x18bfb861, 0x000021e0, 0x8c77dfad, +0xef096a17, 0xfeaa33eb, 0x243b028a, 0xec38923c, +0x21984a04, 0x43c052f0, 0x1bc83535, 0x20fe3b1d, +0x6cec812e, 0x0488a013, 0xdf3b7ba2, 0xa1a86caf, +0xae6d0a84, 0x136ea208, 0x19e43b80, 0x08706f86, +0x0733c8a1, 0x024072c6, 0x4ffc002d, 0x04013cb7, +0xe8063e3d, 0xffffb688, 0x24d4e3f6, 0x2720e60d, +0xc6880fe8, 0x3822c420, 0xba400315, 0xa337ba84, +0x67443004, 0xa10ef864, 0x6720850d, 0x08847464, +0xf328d1f6, 0x3616ca51, 0xfcb76323, 0x38169040, +0x4b9c8db3, 0xf716cfb8, 0x680d1d01, 0x9c273468, +0x75b50c28, 0x9d23c616, 0xd4e84b49, 0x04e88c41, +0xb3c2d541, 0x28ee55ad, 0xe0bf5673, 0x26d8ceda, +0x254f284c, 0xfe513753, 0x21c50f0a, 0xf9582cd0, +0xc16a436a, 0xb1df163f, 0xf777e8ff, 0x6a46565f, +0x0c03e824, 0x13e1bf89, 0x00b587a8, 0xc6df01c7, +0xa8bd6805, 0x07a1d5d0, 0x032c7edb, 0x116b4eb0, +0xce09d8c3, 0x72b29a03, 0xc0b6bfb7, 0x35602b3f, +0x2bc329fb, 0xc0fad47f, 0x151561d7, 0x0fa28555, +0xfc37421d, 0x3a050b4e, 0x0231c83d, 0xb0e80a74, +0xc0235cb6, 0xa7c88512, 0x426109c2, 0x1f963375, +0x2840ec15, 0x33696170, 0x6464167f, 0x6c2d16ec, +0x683d16bd, 0x99391983, 0x61514370, 0x490e4679, +0xaa1f3a9d, 0x1b004dbb, 0xac248a04, 0x1d54ec55, +0x88502608, 0x3519e2a4, 0xed439094, 0xe2410acf, +0x1acf4421, 0xbbc902b3, 0x10175874, 0xa605ea01, +0xabe401e8, 0xd7090088, 0x86caf68b, 0x9df86610, +0x7d86ac1e, 0x68457ec0, 0x86f89120, 0xab00001e, +0x032603b0, 0xa88e3018, 0x1ad7591b, 0x242cc1db, +0xbecc68b9, 0xc85e1e44, 0x8fe8fd80, 0xb6fffff5, +0xec01fc18, 0x802c3a97, 0x7e13a105, 0x933d80a9, +0x5b509c3e, 0x94c329a0, 0x0e1b4ac4, 0x230a1076, +0x742110c4, 0xf8edc036, 0xc0b3118c, 0x82838b30, +0xfbe60405, 0x808338ed, 0x34ae6807, 0x02b10415, +0xef441d63, 0x07a811ea, 0xa1cf1d6e, 0x845d890a, +0x4ca93016, 0x6903ca93, 0x9901c232, 0xd03cb71d, +0x5e0f86d6, 0x1187bc59, 0x842b496a, 0x91c3dcad, +0x042474c5, 0x4efcc149, 0x02be981c, 0x54688f9f, +0x3e88676b, 0x901a8e19, 0xfeeaa30e, 0x09c11304, +0x3273f789, 0x0d8efe10, 0x2b35ff04, 0x35f459e8, +0x9c84e426, 0x00c608e2, 0xc6ee268e, 0x0b33b1a0, +0x22bb8e0f, 0xed11bfe8, 0x04b23de8, 0x39ba0c03, +0xf738e38e, 0xaf5dbbe2, 0x26021fba, 0x24fe832c, +0xbd59fc30, 0x8115059e, 0x29f0ccc4, 0x1c357816, +0x250c240d, 0xe03d7016, 0xa49b9043, 0xb6a4fb8a, +0x0788c5ad, 0xe883c011, 0xc12e4b14, 0x3d12388b, +0x49e74e92, 0x829815ca, 0x2dc0e114, 0x5023742c, +0x33211478, 0xe0ac691a, 0x150c4301, 0x4b10270c, +0x7f11586a, 0x61f05785, 0xb184e8d1, 0x0a4175ef, +0xa5c88aee, 0x9eb175e8, 0xd087dca6, 0x206aee91, +0xf141f3e8, 0x8ea03aeb, 0xbf5a263c, 0x2e3b254f, +0xbe0907ab, 0x4ae9cf76, 0x760dba02, 0xded77ec1, +0xfc089c16, 0xc1c3cf42, 0x2a099ce3, 0x0d782444, +0xc7bdc309, 0x24389581, 0xe9d61d58, 0xdfb7cc21, +0x8d47477e, 0x428a0e6a, 0x3c45bd0e, 0x2f81770a, +0x0a2d0e52, 0x147714b4, 0xfe8a3238, 0x04c1ba84, +0x551cfd02, 0x6fe65ce8, 0x8a444e22, 0xf766c709, +0x33a00645, 0x1a3fb6da, 0x40a84c2c, 0xc7e9f441, +0x7468c911, 0x84188a03, 0xa2f8bfa8, 0xe90c421e, +0xee457022, 0x2c4fbbba, 0x3205dc3d, 0xfbff0e8f, +0x14ef6e7c, 0x7bfa2389, 0x3c744e89, 0x508dbea1, +0x51b05922, 0x748dbeff, 0xa8a10e01, 0xf929c189, +0xad0b0709, 0xa4b350dd, 0x36170eeb, 0x15f70a84, +0xfd37035b, 0x0547fc0e, 0x1146ff26, 0x6360b581, +0x11097d80, 0xc58e5d75, 0x54ce0583, 0xc6cb358b, +0x51ac9122, 0x04567ddf, 0x860bd686, 0x5c2eeec6, +0x8687b834, 0x7e839bfe, 0x1f61c0a4, 0x892674e8, +0x74ebfde3, 0x8d3eceaf, 0xb75db857, 0x9f59c817, +0x004da980, 0x455556c9, 0x73395678, 0x8e54033a, +0xd985bc8f, 0x066e4e6b, 0x6e892c2c, 0xdd630b45, +0x2deefe1f, 0x4c664de2, 0x883782c7, 0x267527c3, +0x1a183056, 0x00088a15, 0x72442168, 0x7f3eb6db, +0xec3f018d, 0x601fb389, 0x0eef5736, 0xb502eddd, +0x3a6706c1, 0xff56905d, 0x6dfb7019, 0x1649b456, +0x20c58356, 0x0c19cfbf, 0x795808db, 0x2c21bf92, +0xa018b6e8, 0x570faf31, 0xa31e2957, 0xec3e2ddb, +0xfd80e96e, 0x5602a638, 0xd7fbc40d, 0xd11428df, +0xb1df864f, 0x550d3a00, 0xfbebc152, 0x158a1873, +0x7a21b807, 0xf52ff56d, 0x36410874, 0x72d13844, +0xb0f980f3, 0xa5de3645, 0x1a75249e, 0x09a20143, +0x23b7d154, 0x0406a9a0, 0x33851c0a, 0xb3ecbebc, +0x500346bc, 0x85048d1a, 0x0a32fb06, 0x1913042e, +0x53565751, 0xcb200c7f, 0xcd86c10f, 0x20081db3, +0x43b3cd2f, 0x3a6efbd3, 0x724c8b1d, 0x0cd343c8, +0xff587111, 0xf889fb79, 0x853c8df8, 0x3da43082, +0x27ff457a, 0x02468ac8, 0x02763c3c, 0x237c3cb0, +0x57b59c97, 0x6a82d3a8, 0x91e906ba, 0x5f5e5b18, +0x704a5cd3, 0xe88d8810, 0x7cdc78ae, 0xb42a5a57, +0x57a4605a, 0xa094e0b6, 0x74328c6d, 0xf90b5397, +0xdd0487b0, 0x6c09bfc4, 0x210b0130, 0x38080789, +0x22c19f01, 0x8a4046c4, 0xb9086f18, 0xfbb60f60, +0x5d04c3dc, 0x015986e9, 0xd4312675, 0xf0790b93, +0xee838717, 0x4a85bb1d, 0x77b04d81, 0x760ca03d, +0xa21d3d76, 0xd6b3a622, 0x1caca190, 0x18e02c06, +0x503cff6c, 0x1588016f, 0x3335c920, 0x02b98778, +0xa34056ff, 0xd2de9504, 0x351db0fb, 0x81b7ba8f, +0xb0522da8, 0x84e31bec, 0x0d54c255, 0x1b46c714, +0xaedd409a, 0xab9ca9ad, 0x0a10038a, 0x6fbad4bf, +0xe94306b8, 0xba800f84, 0x890d75cb, 0x87db89df, +0x161d87df, 0x3d1370e9, 0x697517b4, 0x6335b508, +0x2522237b, 0x80381be0, 0xdf76fd9d, 0xe78cb868, +0x3334a416, 0xc873ff4b, 0x75032c35, 0x017b8025, +0xc1117b03, 0x02ecb53e, 0x9c3d0000, 0xdd3da9e8, +0xf6d9f004, 0x75128501, 0xe6e9df09, 0x17d87701, +0x81364d92, 0x51000000, 0x8bf62515, 0x7535f00b, +0xa3024c0e, 0x2abbe960, 0x5ec2640d, 0x36ac5a75, +0x0e2d60d8, 0x876eff35, 0x873d2b33, 0x0c1d260c, +0x35a12ebf, 0x60a3b022, 0x0f08bcc2, 0xf61b6ffd, +0xff800158, 0x75082573, 0x02738d2e, 0xbf858b34, +0x01016b20, 0x54ee39f5, 0x46813737, 0x4dd5b073, +0x20bc16e2, 0x70ff6033, 0xee700386, 0x1ae9e872, +0x4192353d, 0xf909c90e, 0x97219100, 0xdc30649d, +0x2a3faa00, 0x36dfdd00, 0x2f752b46, 0x06e00b06, +0x53158efc, 0xb2ff6a5d, 0x647d6a50, 0xeb373363, +0x94f2184c, 0x650dc647, 0x968085b0, 0xb1287605, +0x780cf20d, 0x3bb59020, 0x523b0e15, 0x061fb683, +0xeb217b6b, 0xe1143456, 0x7581f874, 0x1e281e13, +0xfb0e43bf, 0x9f3ceb27, 0x962b2a33, 0xcae46475, +0xb47f23b6, 0xdab45298, 0x1917a971, 0x9b0203d5, +0x74876482, 0x89fdec7b, 0xac05d13d, 0x044facbf, +0x06702ada, 0xb51948c6, 0x305d6825, 0xc0854a42, +0xd320674a, 0x33650d59, 0x12341832, 0x04378b74, +0xf0e0fd20, 0x4efa2474, 0xe4a91187, 0x70098e59, +0x64230418, 0xbf5c9110, 0xc64920e0, 0x7e0786eb, +0xf807b905, 0x38402605, 0xe8e3d36b, 0xdf80df66, +0xc7b62de0, 0xd1f61c71, 0x29f9f799, 0x38009a84, +0xf19b9136, 0xc9114822, 0x9a09bfc0, 0xf541bf5a, +0x547883c8, 0xf6197601, 0x2b6a0648, 0x71f7c6c5, +0xefff7154, 0xc7ca8211, 0x3922d519, 0x2a776870, +0x0d390572, 0x58f77823, 0xbd237764, 0x58428b20, +0x897c1430, 0x410335df, 0x68511364, 0x77067272, +0x01db7022, 0xe81e51be, 0x7007e007, 0x2db567ff, +0xff772a6c, 0xa7c41152, 0xc1482dc2, 0x5028a502, +0xae962771, 0x09532981, 0x136c2840, 0xf119222c, +0x1346e830, 0x61a09187, 0xbb0c8714, 0x709faaa9, +0x00bdcdb0, 0xc5393001, 0x08c16373, 0x0e24613a, +0xbdff01e0, 0x11ebeffb, 0x7239add6, 0xbd117760, +0x0a775c5a, 0x5c582bcd, 0x01f5701b, 0x5260b58f, +0xfee6e89d, 0x2b151853, 0x1443063a, 0x5fac1d45, +0x30745bd0, 0x797bb172, 0x02b0cf12, 0xcc68713e, +0xdb0fe2d4, 0x6c8451ce, 0x82449d08, 0x6da2ce2d, +0x5a545c79, 0x0df420ff, 0xb58dc11f, 0x89b6fbff, +0x50d829e8, 0x475bc016, 0xe8060174, 0x3d26d698, +0x6f621bd0, 0xdd75f339, 0xd15e18d8, 0x8bf294ec, +0x61eaca6c, 0x8c2851e1, 0x36e838fe, 0x99cc2ee1, +0x4848304c, 0x401ce989, 0xeb1407f0, 0x95df11ce, +0x7d9ece43, 0x70f87839, 0x74560b70, 0xbd2912ac, +0x6768df01, 0x06435fc5, 0x94e8033c, 0x267987fe, +0x97aa4145, 0x46fa3510, 0x835a09e1, 0xff03e01d, +0x22ab4c40, 0x4f648fd5, 0xe02c85b8, 0x83ba07b7, +0x02471c7a, 0xc7784288, 0xdf007442, 0xc3f42c3b, +0x0a5ca8c5, 0xff361f26, 0x9f42e668, 0x8295b40e, +0x122d7866, 0x0cede037, 0x4920aa7a, 0x1734de30, +0x8c3751de, 0x380e5f74, 0x10b93c61, 0xc9ba2a00, +0x3c382a82, 0x801e253c, 0x392841df, 0x2a2476c1, +0xed0a4c41, 0x6051dbd4, 0xd283f045, 0xb72b1f1c, +0x20a6d86d, 0x8c3dda11, 0xe8d13840, 0x63e2b84a, +0x8174512a, 0xa39a48e2, 0x45ee0b06, 0x50d02934, +0xee15f618, 0xe887c513, 0x50226dbe, 0x0729aa9f, +0x89cfa520, 0x5409bf62, 0xfef88327, 0x2f2d2274, +0xec745203, 0x10902168, 0x575d10c5, 0x91a5a931, +0x4c6248d8, 0xb70549d0, 0xc5c02652, 0xf13631c5, +0x91ea22a2, 0x8da18865, 0x83a3144e, 0x9ea759d8, +0xe1945a23, 0xc7b34358, 0x3a3f7b5e, 0x93e83fb9, +0x30ab88fd, 0xe1d557b4, 0x90d87926, 0x3234ec83, +0xea1e7060, 0x2d7437e1, 0x1886fe68, 0x0d750cfa, +0x2c7a0065, 0x75488544, 0xa9bb2ef5, 0x78ab206a, +0x6a20b33c, 0xef91ea84, 0x54020fa0, 0xc98b0d50, +0x5cbe109e, 0x82e06d8a, 0x44922ba1, 0xee0f995e, +0xa1087198, 0x0487730c, 0x0e4040eb, 0x3025211b, +0x41fb7325, 0x0602641c, 0x9610cdeb, 0x497149ac, +0x7e0c6bb5, 0xde1d910c, 0x920addb1, 0x8c3f5028, +0x6844e7dc, 0xca45fdb0, 0x0405742b, 0x7836722d, +0x08f4f720, 0x36a8f00c, 0xdec86741, 0x20244424, +0x28a9513a, 0x2e789b10, 0x406a01bd, 0x25ea9b7e, +0x930bf278, 0x8cef901c, 0xd8194326, 0x20d17ceb, +0x9f001b14, 0xd8a27c2b, 0xa1159a19, 0x2005c012, +0xcfed0877, 0x14b59f4c, 0x141d6009, 0x102d6e1f, +0x0a5149fc, 0x3dbf075e, 0xa36b95e8, 0xf7fe3120, +0x94749931, 0x72381d39, 0x783589d9, 0x548af79f, +0xa308f603, 0x9f309f74, 0xb3d27094, 0x1718a64b, +0x909ab548, 0xf0f1d114, 0x7cdf8b9c, 0x9b776c1a, +0xbab38e02, 0x34fa361c, 0x39567305, 0xea36944a, +0x8b477532, 0x75af4b0b, 0x5c91ec63, 0xd3b938eb, +0x2d7ed27a, 0x16a97dbf, 0xc83c2d46, 0x6c051e75, +0x177502c8, 0x513ee6c1, 0x161c503a, 0xc446c809, +0x0ddfedff, 0x6beb0842, 0x104a3941, 0xd87ad37f, +0x55b3d108, 0x539caa72, 0x37ba4169, 0x187a461d, +0x7008e9c1, 0xedc45630, 0x39212893, 0x1b749454, +0x89592ca9, 0xb1cd14d2, 0x04065f63, 0x590b9b2e, +0x352c1bc1, 0x76097061, 0x1013002b, 0x835b002f, +0x1ca9441e, 0x1b78808d, 0x6dc37047, 0xdb464085, +0x741d1c52, 0x1a3c6edc, 0x031a5808, 0x2b001970, +0x6c043546, 0xf8cc0eed, 0x1adbfbf6, 0x8723dbe9, +0x441cbc54, 0x031a42c6, 0xa0c60ac4, 0xe7df8619, +0x5b1177a1, 0xf3e6b1fa, 0xe8fefe81, 0xf5477b04, +0xc32d9187, 0x49137507, 0x1bc67173, 0x2396e84e, +0x9a510b0d, 0x7a8600c0, 0x4859890f, 0x49a0b9a9, +0xf31db357, 0x1e82e6c6, 0xc43ddf4d, 0x1e060ad1, +0x3dc28098, 0xf759cdd7, 0x0406e881, 0x380a0466, +0x0ae5ba08, 0xe89b7a64, 0x021b1826, 0x54d64d4e, +0x5022be9f, 0x6c0f7702, 0x2cc0f505, 0x0ce86403, +0x819d76c0, 0x92f22837, 0x88aad75a, 0xda22ed5a, +0x88f8dc25, 0x0289e5d0, 0xa96c774b, 0x638b9d5b, +0x20620642, 0xd0703e30, 0xf2c15734, 0x5fba3026, +0x1d071db1, 0x146a8f14, 0x6071391d, 0x3c80cee9, +0x1c0c6418, 0x0cb1ba4e, 0x1f56115c, 0xe80e2819, +0x83e2247f, 0x1174fce2, 0x0d7401a8, 0xd6c1becc, +0x8bd089de, 0x24c6f533, 0xcc7e24fe, 0x86f03a1b, +0x6a531705, 0x1902163d, 0x0b448850, 0x6e1a0474, +0x6486395d, 0x1736685b, 0x3c1f19b1, 0x2bdbe13d, +0x4f448a4f, 0x27eb18cc, 0x4770f043, 0x909e0c28, +0x8dfc6f86, 0x09c78470, 0xb0ff8147, 0x2c0e4f82, +0x4206eb40, 0xd506b400, 0x2df34d77, 0x435c43a7, +0x16be661d, 0xb51cc883, 0xc405826b, 0x18742139, +0x6cdd6c20, 0x83ac26c2, 0x0d18053f, 0x80ec3f02, +0x05bc21a0, 0x4016771f, 0xb09b3110, 0x0c353b1c, +0x6f82a041, 0x67cdf80e, 0x571723ea, 0xd3462a41, +0x661c3500, 0x073ea647, 0xdc11618d, 0x5bebfc0d, +0xd072a730, 0xbf068a17, 0x578d4175, 0x01935429, +0x3a529fdb, 0x8a9ea998, 0x104c2a20, 0xd80a4984, +0x0f9b04f5, 0x7003072d, 0xebd9e276, 0x09f04c1b, +0x10783ed6, 0xbfd80049, 0xac84d801, 0x45593630, +0xe510a774, 0xcd4ac0d2, 0x276c2b06, 0xd8b03c14, +0x17d4c9e4, 0x1d9a20fe, 0x168b8bd8, 0x46db2e9a, +0x3dc600cc, 0xcd05ea0c, 0x067c63f1, 0xf7c2a5f0, +0x3fc221da, 0x90c3c909, 0x3af4d080, 0x8c2d805c, +0x0030bef4, 0x06880e58, 0xa0841a54, 0x0a6b54d9, +0x674cc00e, 0xd3847d97, 0x289f0d28, 0x7520b82d, +0x19cd1fee, 0x3b017f09, 0x25c751d6, 0x25346ab9, +0x93dfd9ba, 0x2723ebc8, 0x4a88e90c, 0xe35b1424, +0x4ea34064, 0xce64e2dc, 0x021df7b5, 0x5d763f0c, +0xbe1ece80, 0x064c032f, 0x52500bec, 0x630a742e, +0x2f36f02f, 0xf8095834, 0x40619e74, 0xbb603603, +0x5052318d, 0x075c462d, 0x23830c38, 0xa772a377, +0xa8f81d28, 0x0319bbdf, 0x11047c4b, 0x7d73b365, +0x3633d9d7, 0x05371955, 0x1d10c314, 0xe20b0c04, +0x83afe272, 0xcdc25c5f, 0x32245ed0, 0x58cd5968, +0x0aec1808, 0x15be7e2c, 0x21c0dbdb, 0x244651a7, +0x6a0c0637, 0x3b18b42b, 0x7b20aa1a, 0xa5f60b84, +0x03830a85, 0xfb2a1510, 0xd5fb1f52, 0x617f3b81, +0x3a8b038b, 0xd2751046, 0x6e9db42d, 0x20462b14, +0x02700776, 0x095afb85, 0x9d58a366, 0xdcfc0420, +0x0c158902, 0x0bf6bc56, 0x1474ed68, 0xc0f15031, +0x82b15389, 0x176e8a91, 0x48dc30f1, 0xdbd54cc1, +0x21c66f7a, 0x01501f67, 0x5c1cff90, 0x041c8324, +0x6ef87118, 0x1d048c97, 0xff0120d4, 0x9a508143, +0x43430b33, 0x10228507, 0xa7201ccb, 0xc25ec13f, +0x9f1076d6, 0x10c42620, 0xb092e03e, 0x691c226c, +0x41dbf608, 0xda2551ad, 0x09044618, 0xa46c613a, +0x08b20606, 0x0843841e, 0x08bd87b7, 0x19531c1b, +0x39392120, 0x68d43221, 0x127e28fd, 0xb48b6c21, +0x24bcea24, 0x53008d4b, 0xe81086b7, 0xbea85661, +0xfa250802, 0x0ebacc14, 0x068abf15, 0xe9470788, +0xddbe1061, 0x1d0512d9, 0xb156d30c, 0x1b0f4613, +0xb01e68ab, 0xf676090a, 0x6f605fe9, 0x01752e40, +0x45757318, 0x2b24848b, 0xecc1bdd7, 0x186c0683, +0x65783b80, 0xf9b6315f, 0x8a0773b0, 0x700feb03, +0xceefa603, 0x43701a4a, 0xe9da7529, 0x4669023a, +0x8c0701a8, 0x1c5128e0, 0xc7bc3dbd, 0x097523bd, +0x0d465a11, 0xb708756c, 0x178f6fd9, 0x0c13eb46, +0xb90e7568, 0x030a170c, 0xe17d94b1, 0xc89104bf, +0x75783c20, 0x7e1cf97e, 0xa1639113, 0x11ebeca5, +0xe2cd8712, 0xffb76fad, 0x74727c6e, 0x0045c60e, +0xd0884530, 0x09885843, 0x40c98545, 0xa752c4f0, +0xf7d8fb79, 0xcffc36ff, 0xab84808a, 0x831ad009, +0xe87904e9, 0x9f015ce9, 0xfbdd6462, 0xa4850f64, +0x5e177152, 0x0fd8120b, 0x1615eb70, 0x711b8131, +0x730979f7, 0x4ff7452d, 0x3603eb89, 0xb9f70250, +0x05c8210a, 0x6f6e8a1c, 0x0403e42f, 0x70558830, +0x006667b8, 0x896e6cf7, 0xf725e04c, 0x11038b79, +0xc1ef4170, 0x5d3202fa, 0x2589f035, 0x8dbe75fe, +0xda39ff55, 0xbe18c312, 0x6f847b0a, 0x88026ddf, +0x124a430b, 0xafe9f177, 0x4675404c, 0xe261118c, +0x049f2c00, 0xdacadee4, 0x2276d88b, 0xbba0500f, +0xa1b62bf0, 0x55f29568, 0x0e805f12, 0xa9c5631d, +0xe277240b, 0xc253dd4d, 0x4a64ebdb, 0x4d3d7521, +0x8806538d, 0xa787d820, 0x0492e542, 0x419968e3, +0xc93035d2, 0x72cc3b86, 0x0fef2241, 0x7563e12b, +0x06eb5d30, 0x9c07068a, 0x947378c2, 0x2573eb90, +0x03d12a3f, 0x249b78fc, 0xe746db72, 0x17671885, +0x2e30f12a, 0x0200c603, 0x0c11842b, 0x270e62d8, +0x6010d46c, 0x51c07888, 0x87a0b0c4, 0xb4fcc4aa, +0x4cc1145d, 0xaa081b5e, 0x60828c95, 0x40dbcb19, +0x5c563dbc, 0xb200b01b, 0x938a30cd, 0x7d2ff46e, +0x84464716, 0xd28426ae, 0xd0382274, 0x2ec188d1, +0xc626ffdf, 0x20488d03, 0xd188c888, 0x4a0bc2f6, +0xcd4138ca, 0x034fa5f4, 0xcdd0754b, 0x2a4c1f02, +0x5f5eb576, 0xafcbeeed, 0x8afc56c6, 0x01884202, +0x6df6ed41, 0x72a9c3ab, 0xe6320315, 0x7da15bdd, +0x834ade89, 0x20ce8ffa, 0x23430388, 0xa6827bf0, +0x53edbd46, 0xa63d4c49, 0xd3a0a5e0, 0x4206742e, +0xac05c834, 0x4b24fabd, 0x82365e48, 0x4c5fafba, +0x2769d648, 0xc0dac7f4, 0x742c4e2c, 0x05754912, +0x0f60b0c6, 0x0aeb7ebb, 0x63ee7511, 0xedb5f0a1, +0xc388565b, 0xdb181a2a, 0xc1f0a527, 0x7eb1562f, +0x38845fc3, 0x154a0910, 0x793f20a0, 0x5a08cefb, +0x200f401b, 0x201f5c30, 0x21c2cc02, 0x0cf2df00, +0xaefeec6e, 0x8d49d1f7, 0x0a351904, 0xf7736f48, +0x17201bda, 0x89394510, 0x1a2384c8, 0x11f2537b, +0x6fefe805, 0x050b20ac, 0xc829f461, 0x102474d3, +0x4900dc11, 0x8925b81f, 0xf63dedf2, 0x8a136c37, +0x740a3a08, 0xebf6db08, 0xe04d0605, 0xd8fbfb10, +0x404309eb, 0xd889db3b, 0xda2359d1, 0x72cf83d1, +0xd862da89, 0x0cac64d8, 0xe72b1137, 0x2fb7d193, +0x326b5bd8, 0x8b0ff985, 0xa816741d, 0xfa036086, +0xbb708640, 0xd1e456da, 0xc14dc4c5, 0x1ee8c711, +0x1f05bc42, 0x211eeb04, 0x8099f08c, 0x98089d11, +0xb1400471, 0xa36755d7, 0x743b8d26, 0x1ecb19d8, +0x34301953, 0x64963b24, 0x06892f57, 0x2b8230ba, +0x1361f022, 0x5e143d0c, 0x0bf0aee1, 0x4d5b0c1a, +0x24812316, 0x60082437, 0xd6821318, 0x6da26894, +0x11a1a963, 0x01021398, 0xb82fc24c, 0x4143e56e, +0x2fef754e, 0xd1b70554, 0xe2904062, 0x45b4210f, +0x570d4adc, 0x7578a5c8, 0x3e1034f1, 0x5c6ea6c0, +0x8ed1d8e5, 0xe71829d0, 0x74bacd89, 0x7fd3eb3a, +0x348878ca, 0x39ce8906, 0x4e187ce9, 0x462e8555, +0xa824a054, 0xe13452f6, 0xeed2d2a5, 0x5784e87d, +0x2c1815b1, 0x2b6649a6, 0xdfde3417, 0x428a208f, +0x89384201, 0x160bebd0, 0x8a8e8ab2, 0x0c8fb420, +0xac87f457, 0x7277011f, 0x8f803d83, 0xc5525c83, +0xeb02fd16, 0xf101d858, 0xbf3d8053, 0xc60c7567, +0xc1820d94, 0x9911572a, 0x788def10, 0x01c8e414, +0xab3116a3, 0x8d943a03, 0x80627b0a, 0x14d9560d, +0x0595d554, 0x768d52ab, 0x72ebb70a, 0x45305f40, +0x82041ae8, 0xfaac0140, 0x2741590c, 0x01bb60a9, +0x01186f88, 0xb82d0828, 0xa229e807, 0x6db6fbed, +0xfe682141, 0xffe80957, 0x14eb0bfe, 0xde0895b9, +0x4e08ff84, 0x80a2bd0a, 0x89f15084, 0x8037e2d8, +0xbb3eddd7, 0xd0bfcba4, 0xd1ff9549, 0x99208a96, +0x0a009d06, 0x571006c5, 0xf163e396, 0xc1667c37, +0xc58908ea, 0x53380ad9, 0x00ed1e1a, 0x1838685f, +0x47c73174, 0xa4250688, 0xad18b18a, 0x5ad69cc7, +0x420e0828, 0x81323b1b, 0x89f2bb15, 0x005588e8, +0xe9036200, 0x1c71ab06, 0x93b2177d, 0x0a0391b9, +0x5b083008, 0xec0adb2d, 0xfee938c2, 0x71bb5b2d, +0x2d611325, 0x844d248d, 0x7382008d, 0x6cad4547, +0x5b2d840b, 0xd81d2d17, 0x47ee08b7, 0xffffcf0b, +0xa9001037, 0xdc6891e4, 0xfb2641fd, 0xad694882, +0xaa9e0c2e, 0xcde9c45f, 0xd20a43ef, 0xf447f053, +0x89d0b18d, 0x66032bc1, 0x04587983, 0x0fee06dd, +0xa8796c27, 0xe9ec7239, 0x04412aa2, 0x42c60251, +0xd70916f0, 0xc9ba090d, 0x6dd277fc, 0x037b80f0, +0x064d15f4, 0x94112204, 0x2bc2722a, 0x02651115, +0x173475da, 0x5e067f04, 0xa01851c0, 0xfeb78614, +0x43ddb4dd, 0x08af28eb, 0x06b82d75, 0x35b82606, +0x14741080, 0x84dc1f68, 0xbecbf00c, 0x29c63c8d, +0x0ceb0ee9, 0x5616eb8e, 0xb84a4751, 0xcda23a44, +0x0a13e922, 0xc7f182fe, 0x9a340300, 0x6d080e12, +0x2c32fca9, 0x0b38a169, 0xdc5f029c, 0x1d8845e2, +0x23fad5f6, 0x5c545b07, 0x4b821161, 0x204a5e54, +0x7495f107, 0x6ef4e8a1, 0x109814b6, 0x3e0bec75, +0x0b146c2a, 0x43c1dc26, 0x7d8b3673, 0x0006d00a, +0x2e8b8185, 0x70a25b1b, 0x130c852a, 0xb403be1c, +0xd8a11659, 0xb62c4535, 0x39eb1e32, 0x01303f2e, +0x03a62900, 0x0e42c8b6, 0x6fb285c4, 0x91fb8c0b, +0xffcc7919, 0xd62d67ff, 0xbe72a464, 0x7d01355f, +0xfb35c653, 0x7e3e8777, 0x2fad8a8d, 0x4e8d4ec5, +0x1d022a24, 0x1aeba685, 0x0703d159, 0x42f90506, +0x2488d5b7, 0x08073bff, 0x6d4a2488, 0x513985f8, +0x08e2c11a, 0x8a194141, 0xeb6bafa0, 0x09340b20, +0x0dfc0a63, 0xafb77775, 0xeb050fc9, 0x75025329, +0x3503501f, 0x10b008dd, 0x0307cd03, 0x04240908, +0x0b2af0d7, 0x2d1e04cd, 0x05e901d9, 0xfa852749, +0x15daacff, 0x9fc2374c, 0xe0368696, 0xf5b0f04d, +0x96801209, 0x9c163498, 0xab20c1c0, 0x10071a7b, +0x9b116600, 0x1881de61, 0x6bed1241, 0x0c26c5c3, +0x0fa70e06, 0xe884056b, 0x01c06b27, 0xa93e0000, +0xec1022db, 0x0f030eb7, 0xeed3f4b0, 0x513d02e9, +0x570a7f04, 0x6872e913, 0xf603a036, 0x18643704, +0xc58843d5, 0x1122ca6b, 0x18367339, 0xd94eb610, +0x6023b34a, 0xcd684de9, 0x86d84233, 0x3756056d, +0x76e94d33, 0xdea90e0b, 0x157631ea, 0x906c1639, +0x1606a96e, 0x877ceb40, 0xe4a1e305, 0xb50608da, +0xd7d8b10e, 0x12c1d778, 0x7df3fcff, 0x05c54f11, +0xf147d490, 0x8a101b10, 0x0c9d1296, 0x100e1516, +0x7df1a523, 0x1464d7ec, 0x1f742d3d, 0x3d097f06, +0xbc2e1800, 0xeb0b0dfe, 0x5b3d3d1b, 0x872e12eb, +0xb82dd4ae, 0xc0020510, 0xfbf80305, 0x8e628b57, +0xe856af89, 0xe0e8f6ec, 0x950e1767, 0xfd44eb56, +0xffffc995, 0x8b070874, 0x3dc92d5d, 0x984da10d, +0x1078009d, 0x460e6206, 0x952561c6, 0x181c570a, +0x2eba0c07, 0x530456f8, 0xad08063d, 0xa60bf885, +0x6a3c5da4, 0xdd35f7ff, 0xeb786c66, 0x8bf802e8, +0xea053b77, 0xf11a74eb, 0x645594ba, 0xdc1ba31c, +0xabb10705, 0x8330b60a, 0x5b62188a, 0xe8a120c5, +0x22931154, 0x13733d07, 0x88c14508, 0x0200086e, +0xec0e7a14, 0xcdf41018, 0x82613bad, 0x3606ec45, +0x3c89660e, 0xd0d63db8, 0x54669e1f, 0x189a5078, +0x94908912, 0x46360c11, 0x980e1ce3, 0x8804d9e1, +0x052474aa, 0x7ac0ff9c, 0x4ef53aca, 0x8a5f5b24, +0xf120068a, 0x934af6fa, 0xb26ba490, 0x32cc2d2c, +0x0c1d87a0, 0x817800a2, 0x7875abba, 0x31ef110d, +0x4780828d, 0x7553ad82, 0x82dc89f6, 0xff0c0998, +0x08fd1066, 0x2790820f, 0x0d09e1b0, 0x50081b8b, +0x15ccdbc6, 0x1894d122, 0x1c76613e, 0x2c4e8814, +0xd102fde3, 0x04f93449, 0x720b4306, 0x2a044c05, +0x520013ff, 0xf5f45176, 0xcce44276, 0x83ac6001, +0x52b152dd, 0xa2d438c4, 0x388afb3d, 0x73a33b36, +0x2b743939, 0x0ec59b74, 0x5d26a78b, 0x48e8f3f3, +0x015397c1, 0x1cfc9498, 0x11603000, 0x74145cac, +0x8e84a680, 0xfcf59861, 0xe46c5b79, 0x025efa43, +0xa0559d53, 0x0cb08b86, 0xdf4586a8, 0x30c2637c, +0x82968b1e, 0x0b1df012, 0x94061078, 0x7e086840, +0x861b49e4, 0x4ecb24b4, 0x3301069f, 0x72058692, +0xbbf4ff06, 0x7698c06c, 0x986a0079, 0x6181de0e, +0x7cb7790b, 0x982c093a, 0x0ca41b0b, 0x8d87c716, +0x8e134510, 0x841b8903, 0x3c632362, 0xb620898b, +0x2bb2ba46, 0x9b189960, 0x6615c908, 0x3be07e9e, +0xca417a24, 0x0276095a, 0x6a89100a, 0x504ed962, +0x0fc961c7, 0x4a0666a4, 0x1162b58d, 0x8d3b1551, +0x281115a0, 0x808d63ff, 0x94186117, 0x08b162f7, +0x24c44813, 0x00df17e0, 0x478b686b, 0x018b840c, +0x4c4afedc, 0xf01e6f45, 0x47b0ee83, 0xe038ef10, +0x7630ad0e, 0xf0390ebb, 0x548a1573, 0x6a06414f, +0x9c80fc98, 0xcf1213d1, 0x518d5610, 0x6eac5208, +0x81552ea2, 0x0e73aff1, 0x9d21bbbe, 0x5bf03e90, +0xf335c45e, 0x11845596, 0x782a7860, 0x28a963b8, +0x6d17c32a, 0xc1d502e8, 0x02292514, 0x7ab01131, +0x00ba1c02, 0xbf5b084f, 0x31422ec8, 0xf2d95b26, +0x08c708ed, 0x0b8de9be, 0xeade0a46, 0x89d7fb10, +0xbf05dec7, 0x1d110815, 0x99b46f83, 0x4e5ec66a, +0xfb811cc3, 0x060c50d3, 0xcd377eef, 0x7206e8eb, +0xe846b1b6, 0x450e0e56, 0x0c22da1b, 0xf0948145, +0x4f54d2d1, 0x1e8d5388, 0xe084d2c7, 0x857634b6, +0x4449c7bc, 0x3082ac8d, 0x72f4d001, 0x7625a80d, +0x7234b778, 0xfce00976, 0x05dbbea8, 0x846c9501, +0xd9293911, 0x81788e3d, 0xdbfdfcc3, 0x2dd50bf1, +0x0324530c, 0x12018802, 0xe7175a15, 0xdf440306, +0x6a030d0b, 0x79803431, 0x7b5420b0, 0xeaa11007, +0x1e4682cb, 0x18f4a114, 0xea03a8d5, 0xef9e7747, +0x8a232c26, 0x145ea435, 0x3f34ed18, 0x1984e8b7, +0xcc040015, 0xdca0163a, 0x186b8758, 0xf6e20a34, +0x4148d054, 0x2d757a7e, 0xa7a8042e, 0x08247543, +0xc3123ba5, 0x0646df0e, 0x0d270434, 0xb91f56ee, +0x088f52ec, 0xbbbe0a06, 0x81040b21, 0x24731cfa, +0x2a940f6e, 0xfd6d5356, 0x38c097ee, 0xb0491585, +0xe3b684f0, 0x073d3adb, 0x7f7c2e86, 0x1b2188fe, +0x2dde96b3, 0x3982fa09, 0x38ff239a, 0x2be8e0ab, +0x4bd07601, 0x941be80d, 0x1f181a90, 0x589703ed, +0x2c148084, 0xd50bbb12, 0xf3897d98, 0x89c01d03, +0x168692ec, 0x640105bb, 0x980794a1, 0xeebbbb35, +0x11bc25e8, 0x4ee85ea9, 0xa6e10486, 0xddd502b2, +0x09d713f7, 0x13e82a39, 0x5ba138be, 0xd68f0aa0, +0x1d1c0e48, 0x2495033b, 0x518f0550, 0x62cbc034, +0xf02324ab, 0x47efbbbf, 0xdc94d406, 0x6712c358, +0x11602130, 0x6c833d83, 0xc0c20761, 0x1416a760, +0x23056629, 0x3b7114e1, 0x299b7622, 0x2f021afc, +0xcf6c12f8, 0x0210b763, 0xc48f0800, 0x14110800, +0x8f463467, 0xb3567f08, 0x227fbcb1, 0x6612a35b, +0x8f810dcb, 0x08dea046, 0x9201898f, 0x0b67d25f, +0x039cdf51, 0x01a00515, 0x6d8c8c08, 0xe98ca8b1, +0x0708a511, 0xb7c8db63, 0x0d7328ad, 0x0d16ff0d, +0xab69762d, 0xf2f8147f, 0x080dc184, 0xc8db62b7, +0x110baa8c, 0x84ef08c0, 0x8dbb3cc5, 0x0f3c367c, +0x0801e40d, 0xb1a8cd8c, 0xe0558aad, 0xdcc71108, +0x284d57c8, 0xc3a73013, 0x1edb7f30, 0x0457b6d9, +0x201e0d20, 0x1404207f, 0xb7236d0d, 0x0801ee73, +0x1115d48c, 0x36d83ced, 0x24d73bf6, 0x08120d22, +0xba01f88c, 0x23f6c8db, 0x08251111, 0xae280219, +0xc6a136be, 0x0847710d, 0xe46832c4, 0x2d0dd916, +0x33168c08, 0x8d632df6, 0x2e700815, 0x3a0d7736, +0x7532d9aa, 0x7318084a, 0xc1b1b6ed, 0x76125b1b, +0x3d08390d, 0xcd4b234d, 0xf80aa55c, 0xb0f25202, +0xdce8ea31, 0x103b07ed, 0x8321ee56, 0x732a721c, +0x321c8319, 0xad0890c8, 0x64190ff7, 0xe6e40190, +0xc832ef01, 0x2bd52721, 0x833369c4, 0x0db3481c, +0xc9c8b830, 0xe9041ec3, 0xf02e1ea5, 0x321c8394, +0x6e8670c8, 0x20d8c875, 0x0d67f823, 0x320d87f9, +0x4bfa5932, 0xe4e4f83a, 0x1e3a20d8, 0x202cf125, +0x233c9d87, 0xc7101bf1, 0xc8793c83, 0xf9f2130a, +0xf272fd00, 0xe8f39390, 0x90d7f41a, 0x0f1e4e43, +0x872cc6f5, 0xb5643c9c, 0xdca4f64e, 0x20c87939, +0x82f76593, 0x0e4f6393, 0x0d74eb90, 0x6472f871, +0xb6669190, 0x8ef96858, 0x4a72320c, 0xfabe3c94, +0x4ed82702, 0xc2190a2e, 0x20d8e495, 0x1d0a23db, +0xfb1e2318, 0xc1d020a2, 0x0c0002b2, 0xdc310042, +0x43ae0433, 0xc4a85127, 0x57561959, 0x09e8edf8, +0xff0e317e, 0xc8fcfad6, 0x25c58909, 0xb6c01682, +0x506e5d41, 0x58fa83fc, 0x20eb0774, 0xbb38eb2b, +0x5788c780, 0xd0246818, 0x7412e65c, 0x1d8f4159, +0x67901476, 0x3d481e6c, 0x164a0d04, 0xa0ed8a17, +0xe672c88d, 0xb108a30b, 0xf510db0e, 0x87cac885, +0x8bac817d, 0x09ef57ed, 0xe4300272, 0x550a88ae, +0x25c9b9c4, 0x093cd803, 0x0205644a, 0x3d0a6f32, +0x0c9724c8, 0x07310c0a, 0x3c0b23f6, 0x1c244c8a, +0x3c9b0b40, 0x7ccb25e4, 0x5c777cf0, 0x3a216432, +0x1325900c, 0x0db59320, 0xc932160c, 0xa6dc7a55, +0xa442f1a2, 0xc8494350, 0xa4e35c58, 0x2fa3c6de, +0x410d4763, 0x35932088, 0x963e3b3a, 0xa9050a8a, +0x44100c2f, 0x9e803b74, 0x203cfa81, 0x630fa89d, +0x6fcd70b9, 0x8925dfe4, 0xca684524, 0x042d82aa, +0x0016c468, 0x3db3504c, 0x82855527, 0xe6b882a6, +0x4bea7ff1, 0x0fd83947, 0x3b810982, 0x5f32335f, +0x75456a75, 0x09765b13, 0xb1617420, 0x9eb7b7fe, +0xa87dc22e, 0x0742130c, 0xc984f87c, 0x7b804a75, +0xb1b84508, 0x2953632a, 0xb7e33456, 0xef7fa402, +0xefb9d1e3, 0x6db1fddb, 0x7b812375, 0x765fff04, +0x23eca312, 0x90c04b78, 0x25a3e0cb, 0x21588b37, +0x87a28375, 0x68399fa0, 0x41d67883, 0xd4e80574, +0x7c0464ec, 0x305b08e4, 0xcde23d83, 0xbc540b62, +0x0d0d2922, 0x628c05d6, 0x62681ba9, 0x9aafc413, +0xf1b06140, 0x3e2058d8, 0xe4c30158, 0xfd7b8861, +0x03bedc40, 0x61e601b5, 0xe608b0b2, 0x54c89543, +0xe60430bc, 0x00b7a142, 0x10d7260b, 0x692a2542, +0x3bb80b05, 0xc3c39d52, 0xc1e80445, 0x6dc22e39, +0x08de7d14, 0x9680fb46, 0xd575831e, 0x7008d002, +0x826d880d, 0x0889c202, 0x5b583153, 0x0410033c, +0x1230a202, 0x4b836855, 0x1b073d77, 0x0456c112, +0x98418202, 0xd23b17fd, 0xd3ba3e3b, 0x2810624d, +0x0b6c1bb5, 0x5728a060, 0x13e0bfdd, 0x4c50878a, +0x803903c4, 0x127fb667, 0x0e1fb007, 0x3016e409, +0x0c25845d, 0xea08eae8, 0x50046b80, 0x74077aa7, +0x254c008d, 0xe204097a, 0xf48c1729, 0x4f0a0b4c, +0x9d9f1f40, 0xf0adf868, 0x80050caa, 0x01e74519, +0xe286d879, 0x962a04a3, 0x0c402a08, 0xeb01cd2a, +0x0609100e, 0xaf2a1440, 0x26029800, 0xd8c937a6, +0x4020ba59, 0x65092824, 0x8c6229ef, 0x9d2a9d02, +0x277c0140, 0x686e30cf, 0x33a26822, 0x681d4dbe, +0xda57163c, 0x761dd52c, 0x2cccc990, 0x0209d04f, +0x66c3b81a, 0x12d4482a, 0x49d98683, 0xe4e031c6, +0xbe1eae2c, 0x097582a5, 0xc7a93103, 0x4dd1ec31, +0xe3f37cf2, 0x0709f8f4, 0x548bac1e, 0x310109c9, +0x0ecd6807, 0x007cd239, 0x2d08c12d, 0x4ecd480c, +0x1c8009e8, 0xc9f66d2d, 0x224857c8, 0xe1948c34, +0x98300521, 0x5b2d9ced, 0x37ea81b7, 0xdb680166, +0x7031a068, 0x5ac63878, 0xde6808d0, 0x7070f168, +0xaee0b005, 0x2081e786, 0x0991409c, 0x284ecef6, +0x2d209ee8, 0x8720f55f, 0x03f56c04, 0xe8af76ee, +0xc0118348, 0x18477f4c, 0xbc40641a, 0x1b7f9fec, +0x4ff97da0, 0x7383d775, 0x588d1b8c, 0x3ae7e8c3, +0x5b03a6aa, 0x7dbf114b, 0x090d8e77, 0x54754b62, +0x9dfcda47, 0x77936ddb, 0xe8209e88, 0xf2990ed8, +0x7d8121aa, 0x2000004e, 0xb06421cb, 0x03c606ad, +0x6c44dbcb, 0xbd0b1f60, 0x8b3f4a14, 0x90b644fc, +0x45e40000, 0x1fff6874, 0x02fa17fe, 0xc5010135, +0x1161dc05, 0xbeadde00, 0xe3ba97ef, 0x505d03c0, +0x8401035e, 0x7fdd203c, 0x5850ffff, 0x696c4345, +0x3a746e65, 0x68637241, 0x3a00303a, 0x49444e55, +0xfb0b320a, 0x31026fff, 0x03010d37, 0x803c2b0c, +0x84838281, 0x5f878685, 0xc07d8b00, 0x323e3603, +0x02586b05, 0x110e067b, 0x56c8df6c, 0x73031365, +0xc594585f, 0x47062bbe, 0xffe063db, 0x46a44fff, +0x4c415441, 0x6f4e203a, 0x61657220, 0x6f6d2d6c, +0x73206564, 0xdd2dd77f, 0xe76b6380, 0x03004121, +0x002b564e, 0x676e6143, 0x6eee6cae, 0x2023746f, +0x21241476, 0x6edfb7fd, 0x17725025, 0x6c6f636f, +0x48444473, 0x54205043, 0x02fe5446, 0x1604adff, +0x0063696e, 0x6b736964, 0x706f6c10, 0xba007970, +0x153bdbed, 0x656e7265, 0x64646142, 0x39252a72, +0xdefbad56, 0x64696fde, 0x6b6e0320, 0x51655b20, +0xdb630d62, 0x2773b6d6, 0x31181b64, 0x330639a4, +0xfb7fb5bb, 0x32380030, 0x6163af38, 0x6565006d, +0x30126e70, 0x4264162d, 0x0d32ac26, 0x64263433, +0x36352642, 0x6ed67237, 0x353863ce, 0x0e9f3236, +0x84d84c61, 0x632c621d, 0x0aff640d, 0x006584ee, +0x35381b0b, 0x2c6d7131, 0x07636bf6, 0x36bbf239, +0x58780d35, 0x5db60d9b, 0x073d076d, 0x360d81b5, +0x587a1732, 0x0cc25b4c, 0xb7350d97, 0x17451b0d, +0x45f7f85e, 0x524f5250, 0x75736e55, 0x74726f68, +0x6d41203e, 0x508b7b61, 0x632522a1, 0x57492201, +0x42db0a2c, 0x20676ee1, 0x0c78d764, 0xf85b613c, +0x3e21eb7f, 0x74667408, 0x2f3a0070, 0x6f4c002f, +0x00206990, 0x25bb2f7a, 0x400b2073, 0x15800e3a, +0x422d5c28, 0x23f1986f, 0xb7b435b6, 0x697372e0, +0x4473c050, 0x17ed0864, 0xd065d46e, 0x7aba6c69, +0x6d203e20, 0x6e12dbd0, 0x280f076b, 0x002e9637, +0x85856b20, 0x72671b1f, 0x40d220b6, 0xadf77b38, +0x204d3450, 0x22676962, 0x2949424e, 0x35ad1c05, +0x17054647, 0x8fbb1024, 0x61013ed1, 0x6d69125e, +0x3c586761, 0x5cdee873, 0x7baceb2b, 0x435f7469, +0xfedb5d70, 0x2008a7c5, 0xd1756f66, 0x530f1a2e, +0x6b99b7bb, 0x10119541, 0x9c654d0a, 0xf75c0040, +0x8d2c8c58, 0x2628200a, 0x0e122906, 0x9b3d83f6, +0x6c65521d, 0x470b7961, 0xd7851d61, 0x0d773416, +0x6583450c, 0x70d75ecd, 0x20f497a9, 0xadb165db, +0x1b09edb9, 0xa025966d, 0xb47caf73, 0xf3976b5b, +0x8e726135, 0x2ec565b9, 0xfcd270c4, 0x3d6e7716, +0x2ed6b7ba, 0x16706d15, 0x7562615b, 0x6c733874, +0x90152b6d, 0x06740e29, 0xcc226b2d, 0x7a462e1a, +0x3364a265, 0xdb6b0705, 0x283380d6, 0x1f2a2925, +0x67495200, 0x4346d68d, 0x001e147f, 0xd22143d1, +0x5049902f, 0xc3887a4a, 0x0a5be193, 0x69656306, +0x6299f976, 0xee876bb4, 0x756e8c06, 0xb564733a, +0x6b7609b2, 0x445576ad, 0x58270630, 0x044f6d75, +0x0a748a7b, 0x7f64f7a0, 0x2fc7056b, 0x78302007, +0x54286c25, 0x98682dd6, 0x66f443f0, 0xd190726f, +0x6585dc0a, 0x311122c9, 0x34f06e6b, 0xf5dd286c, +0x39f27665, 0x4a237079, 0x2b6dbdad, 0x7927588b, +0x5f895227, 0xec7876ad, 0x6c20666f, 0x4e6c7275, +0x5ae70e14, 0x44197361, 0xb9c33f6e, 0xb1dcc6c4, +0x5a622c0e, 0x5bb36173, 0x2790c65b, 0x175d07db, +0xf7696370, 0xd2a50bfd, 0x1929e232, 0x43424139, +0x3d464544, 0xe6d6facc, 0x6868032e, 0x01673a58, +0xe3e37500, 0x395f2fd1, 0x4f6f205b, 0x0a187753, +0x7ea431ae, 0x2e352781, 0x52bd9734, 0xca6f2ea5, +0xd2203418, 0x166217c6, 0x4c504784, 0x23746829, +0xa6b0e146, 0x2e1c6522, 0xa078bb09, 0xad44de95, +0x20805403, 0x50ee1d1c, 0xd00d0785, 0x9f60f720, +0x007f116e, 0x73887845, 0xd6db0e3a, 0x6d27b6de, +0x775f6ffc, 0x57287a3a, 0x186b6d74, 0xaea93c0a, +0x2110776d, 0x688fdbd8, 0xd93d20f3, 0x270a2e58, +0x12051a90, 0x588d26d9, 0x1835b6c6, 0xac32da3a, +0x8e611e78, 0x0dd1d1d0, 0xcb69306d, 0x3063946c, +0x8bb747b4, 0x532ce870, 0xdd26f549, 0x3a9de592, +0x6a6e4998, 0xb18cbc2d, 0x25184d3e, 0x0a2c4423, +0x0e9815ad, 0x7839f9e1, 0xdc75cd6b, 0x0465625c, +0x350e5365, 0x6105ed12, 0x7369bdc3, 0x0ae257f1, +0x5c1b02ed, 0x30344338, 0xeb6cfd33, 0x2b76152d, +0x2c8e3c63, 0xd6b46843, 0x31676431, 0x58bd4a8f, +0x5cb854e1, 0x377ac7ab, 0x21b1d7b5, 0x7974ab67, +0x746763ca, 0xd4b70c68, 0x44320b66, 0x6b8d0a63, +0x3852b46b, 0x70d791ee, 0xe0706051, 0x4e5e7206, +0x422c9402, 0x86ffcbc3, 0xd2303bc5, 0x213fd6ce, +0x1075803d, 0x6b0c6d19, 0x5f733009, 0x0a061a6c, +0x6d04edce, 0x25809aba, 0xd558b5a1, 0x06b11dee, +0x33f3a3d9, 0x6d612c92, 0x30932e61, 0xc261562f, +0xa9651856, 0xd7073c20, 0x34fd23c0, 0x041fd76f, +0xe26bc781, 0x462f4538, 0xfb32d133, 0x702e8f05, +0xb61b630b, 0x6b0e6230, 0xf1621f0a, 0x6d0bb165, +0xc707fd48, 0xde696e67, 0x96582946, 0x3e777d3e, +0x96c01621, 0x222f3273, 0x8a75eec7, 0xe96c6975, +0xc2b86ade, 0x64b18709, 0xe57652b7, 0x33a63a5f, +0xac78dc14, 0x78c53772, 0xc3b27590, 0x0cbe2978, +0x0f29000a, 0x73c09c0e, 0x037c288c, 0x0cdac536, +0x326e2007, 0x3e7978c7, 0x222c5bdc, 0x65757186, +0x084008d1, 0x24f0cdb1, 0x73638a2b, 0xb92c1879, +0x646d27a6, 0x2d4620fc, 0x00c5bdb6, 0x545245a1, +0x8fdc6783, 0x844345c2, 0x70d65861, 0x8705c782, +0x512d52eb, 0x75672620, 0xb0df70a6, 0x87367942, +0x0d074fd0, 0x83ba1ee7, 0x8a767077, 0xb62549a4, +0x4674b40b, 0x19666692, 0x63ac2b21, 0x791113b9, +0xe1000058, 0x9e058668, 0x974f4f42, 0x3a33002d, +0xf13c1883, 0x6e00f600, 0xf3ea6bb8, 0x816c7e68, +0xcb623436, 0x82524142, 0x19df7b9b, 0x3a783830, +0x6f132004, 0xa602c273, 0x2184d057, 0x6c3564d2, +0xe1833867, 0x0aba8170, 0x7dce2300, 0x23d62119, +0x28003f58, 0x6a5d6181, 0x3a5225f9, 0x73c11bc0, +0xc1796141, 0x1b050f80, 0xdd578af6, 0x2e8b3210, +0x5efa7bd6, 0x1a7555fe, 0x016b58ae, 0x17cf6e61, +0xa71d1c06, 0x6db37561, 0xcd6e860c, 0x400312d0, +0x6fff26c7, 0x85b5c32e, 0x0a7529dd, 0xa9b84647, +0x8305c60b, 0x6867ed46, 0xb4223cb8, 0x76b746c3, +0xc83d602e, 0x00dabb75, 0x1f1d278f, 0x51079d08, +0xbfc0142d, 0xd9c84070, 0x1ff17ab1, 0x9307cf9f, +0x360d95b0, 0x1f93179b, 0xb6016e00, 0x27021009, +0xb2032bc0, 0x30d81760, 0x03082292, 0xfd468d00, +0x8024168e, 0xfb9f9e32, 0x60f6f04b, 0xb648f200, +0xba3f80f2, 0x10298086, 0x91079266, 0x30f91e47, +0x10316d10, 0x7d103274, 0xe4791e47, 0x348b1033, +0x10359910, 0x1e1036a7, 0xb591e479, 0x38c31037, +0x1039d110, 0x91e479d8, 0xe0103a47, 0x3ce7103b, +0xcfc8f010, 0x103d1e47, 0x0c103efe, 0x1a105193, +0xf23c8f23, 0x09201059, 0x12272812, 0x3d9e2830, +0x3612c8f2, 0x493c1229, 0x242f4524, 0x91ec1b4d, +0x245d07c7, 0x5d105055, 0x1007654f, 0xfa14b63e, +0x52010773, 0x40179381, 0x01ae1284, 0x14b50537, +0x41be43d5, 0x2a1a0240, 0x037ef8b7, 0x664693f1, +0xb0daadba, 0xbf0fce03, 0x4ffd9609, 0x803f0405, +0x63538263, 0x51800b96, 0x05afd8f6, 0x0302b16b, +0x9615ec87, 0xb8006dc2, 0x86550344, 0x2200b7aa, +0xdb2bec0a, 0x2bbfd23f, 0x7f4507d0, 0x9d957842, +0xc0375e54, 0x00006d05, 0x2000c000, 0xffff0001, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/etherboot/make-eb-rom-list --- a/tools/firmware/etherboot/make-eb-rom-list Mon Apr 14 14:04:58 2008 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -#!/bin/bash -set -e -roms=$1; shift -echo "/* autogenerated - do not edit */" -echo "#define ETHERBOOT_ROM_LIST \\" -for nic in "$@"; do - makerom=`grep "^MAKEROM_ID_$nic *= *-p *" <$roms` - echo " ETHERBOOT_ROM($nic,${makerom#*-p}) \\" -done -echo -echo "/*end.*/" diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/extboot/Makefile --- a/tools/firmware/extboot/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/extboot/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -1,15 +1,7 @@ +XEN_ROOT = ../../.. +include $(XEN_ROOT)/tools/firmware/Rules.mk -override XEN_TARGET_ARCH = x86_32 -XEN_ROOT = ../../.. -CFLAGS := -I$(XEN_ROOT)/tools/libxc -I. -include $(XEN_ROOT)/tools/Rules.mk - -# Disable PIE/SSP if GCC supports them. They can break us. -CFLAGS += $(call cc-option,$(CC),-nopie,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) - -CFLAGS += -fno-builtin -O2 -msoft-float +CFLAGS += -I$(XEN_ROOT)/tools/libxc -I. .PHONY: all all: extboot.bin diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/hvmloader/Makefile --- a/tools/firmware/hvmloader/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/hvmloader/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -18,33 +18,26 @@ # Place - Suite 330, Boston, MA 02111-1307 USA. # -override XEN_TARGET_ARCH = x86_32 XEN_ROOT = ../../.. -CFLAGS := -include $(XEN_ROOT)/tools/Rules.mk +include $(XEN_ROOT)/tools/firmware/Rules.mk SUBDIRS := acpi # The HVM loader is started in 32-bit mode at the address below: LOADADDR = 0x100000 -# Disable PIE/SSP if GCC supports them. They can break us. -CFLAGS += $(call cc-option,$(CC),-nopie,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) +CFLAGS += $(CFLAGS_include) -I. -CFLAGS += -fno-builtin -O2 -msoft-float -CFLAGS += $(CFLAGS_include) -I. - -SRCS = hvmloader.c mp_tables.c util.c smbios.c 32bitbios_support.c +SRCS = hvmloader.c mp_tables.c util.c smbios.c 32bitbios_support.c smp.c OBJS = $(patsubst %.c,%.o,$(SRCS)) .PHONY: all all: hvmloader +hvmloader.o: roms.h smbios.o: CFLAGS += -D__SMBIOS_DATE__="\"$(shell date +%m/%d/%Y)\"" -hvmloader: roms.h subdirs-all $(OBJS) +hvmloader: subdirs-all $(OBJS) $(LD) $(LDFLAGS_DIRECT) -N -Ttext $(LOADADDR) \ -o hvmloader.tmp $(OBJS) acpi/acpi.a $(OBJCOPY) hvmloader.tmp hvmloader diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/hvmloader/acpi/Makefile --- a/tools/firmware/hvmloader/acpi/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/hvmloader/acpi/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -15,10 +15,8 @@ # Place - Suite 330, Boston, MA 02111-1307 USA. # -override XEN_TARGET_ARCH = x86_32 XEN_ROOT = ../../../.. -CFLAGS := -include $(XEN_ROOT)/tools/Rules.mk +include $(XEN_ROOT)/tools/firmware/Rules.mk C_SRC = build.c dsdt.c static_tables.c H_SRC = $(wildcard *.h) @@ -27,13 +25,7 @@ IASL_VER = acpica-unix-20060707 IASL_VER = acpica-unix-20060707 IASL_URL = http://developer.intel.com/technology/iapc/acpi/downloads/$(IASL_VER).tar.gz -# Disable PIE/SSP if GCC supports them. They can break us. -CFLAGS += $(call cc-option,$(CC),-nopie,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) - -CFLAGS += -fno-builtin -O2 -msoft-float -CFLAGS += -I. -I.. $(CFLAGS_include) +CFLAGS += -I. -I.. $(CFLAGS_include) vpath iasl $(PATH) all: acpi.a diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/hvmloader/hvmloader.c --- a/tools/firmware/hvmloader/hvmloader.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/hvmloader/hvmloader.c Tue Apr 15 11:09:46 2008 -0600 @@ -28,10 +28,11 @@ #include "apic_regs.h" #include "pci_regs.h" #include "e820.h" +#include "option_rom.h" #include <xen/version.h> #include <xen/hvm/params.h> -asm( +asm ( " .text \n" " .globl _start \n" "_start: \n" @@ -97,6 +98,7 @@ asm( "stack_top: \n" ); +void smp_initialise(void); void create_mp_tables(void); int hvm_write_smbios_tables(void); @@ -105,14 +107,6 @@ cirrus_check(void) { outw(0x3C4, 0x9206); return inb(0x3C5) == 0x12; -} - -static void -wrmsr(uint32_t idx, uint64_t v) -{ - __asm__ __volatile__ ( - "wrmsr" - : : "c" (idx), "a" ((uint32_t)v), "d" ((uint32_t)(v>>32)) ); } static void @@ -130,11 +124,7 @@ init_hypercalls(void) *(uint32_t *)(signature + 8) = edx; signature[12] = '\0'; - if ( strcmp("XenVMMXenVMM", signature) || (eax < 0x40000002) ) - { - printf("FATAL: Xen hypervisor not detected\n"); - __asm__ __volatile__( "ud2" ); - } + BUG_ON(strcmp("XenVMMXenVMM", signature) || (eax < 0x40000002)); /* Fill in hypercall transfer pages. */ cpuid(0x40000002, &eax, &ebx, &ecx, &edx); @@ -334,21 +324,13 @@ static int must_load_extboot(void) */ static int scan_etherboot_nic(void *copy_rom_dest) { - static struct etherboots_table_entry { - char *name; - void *etherboot_rom; - int etherboot_sz; - uint16_t vendor, device; - } etherboots_table[] = { -#define ETHERBOOT_ROM(name, vendor, device) \ - { #name, etherboot_##name, sizeof(etherboot_##name), vendor, device }, - ETHERBOOT_ROM_LIST - { 0 } - }; - + struct option_rom_header *rom; + struct option_rom_pnp_header *pnph; + struct option_rom_pci_header *pcih; uint32_t devfn; uint16_t class, vendor_id, device_id; - struct etherboots_table_entry *eb; + uint8_t csum; + int i; for ( devfn = 0; devfn < 128; devfn++ ) { @@ -359,21 +341,62 @@ static int scan_etherboot_nic(void *copy if ( (vendor_id == 0xffff) && (device_id == 0xffff) ) continue; - if ( class != 0x0200 ) /* Not a NIC */ + /* We're only interested in NICs. */ + if ( class != 0x0200 ) continue; - for ( eb = etherboots_table; eb->name; eb++ ) - if (eb->vendor == vendor_id && - eb->device == device_id) + rom = (struct option_rom_header *)etherboot; + for ( ; ; ) + { + /* Invalid signature means we're out of option ROMs. */ + if ( strncmp((char *)rom->signature, "\x55\xaa", 2) || + (rom->rom_size == 0) ) + break; + + /* Invalid checksum means we're out of option ROMs. */ + csum = 0; + for ( i = 0; i < (rom->rom_size * 512); i++ ) + csum += ((uint8_t *)rom)[i]; + if ( csum != 0 ) + break; + + /* Check the PCI PnP header (if any) for a match. */ + pcih = (struct option_rom_pci_header *) + ((char *)rom + rom->pci_header_offset); + if ( (rom->pci_header_offset != 0) && + !strncmp((char *)pcih->signature, "PCIR", 4) && + (pcih->vendor_id == vendor_id) && + (pcih->device_id == device_id) ) goto found; + + rom = (struct option_rom_header *) + ((char *)rom + rom->rom_size * 512); + } } return 0; found: - printf("Loading %s Etherboot PXE ROM ...\n", eb->name); - memcpy(copy_rom_dest, eb->etherboot_rom, eb->etherboot_sz); - return eb->etherboot_sz; + /* Find the PnP expansion header (if any). */ + pnph = ((rom->expansion_header_offset != 0) + ? ((struct option_rom_pnp_header *) + ((char *)rom + rom->expansion_header_offset)) + : ((struct option_rom_pnp_header *)NULL)); + while ( (pnph != NULL) && strncmp((char *)pnph->signature, "$PnP", 4) ) + pnph = ((pnph->next_header_offset != 0) + ? ((struct option_rom_pnp_header *) + ((char *)rom + pnph->next_header_offset)) + : ((struct option_rom_pnp_header *)NULL)); + + printf("Loading PXE ROM ...\n"); + if ( (pnph != NULL) && (pnph->manufacturer_name_offset != 0) ) + printf(" - Manufacturer: %s\n", + (char *)rom + pnph->manufacturer_name_offset); + if ( (pnph != NULL) && (pnph->product_name_offset != 0) ) + printf(" - Product name: %s\n", + (char *)rom + pnph->product_name_offset); + memcpy(copy_rom_dest, rom, rom->rom_size * 512); + return rom->rom_size * 512; } /* Replace possibly erroneous memory-size CMOS fields with correct values. */ @@ -421,6 +444,8 @@ int main(void) init_hypercalls(); printf("CPU speed is %u MHz\n", get_cpu_mhz()); + + smp_initialise(); printf("Writing SMBIOS tables ...\n"); smbios_sz = hvm_write_smbios_tables(); diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/hvmloader/option_rom.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/option_rom.h Tue Apr 15 11:09:46 2008 -0600 @@ -0,0 +1,50 @@ +#ifndef __HVMLOADER_OPTION_ROM_H__ +#define __HVMLOADER_OPTION_ROM_H__ + +#include <stdint.h> + +struct option_rom_header { + uint8_t signature[2]; /* "\x55\xaa" */ + uint8_t rom_size; /* 512-byte increments */ + uint32_t entry_point; + uint8_t reserved[17]; + uint16_t pci_header_offset; + uint16_t expansion_header_offset; +} __attribute__ ((packed)); + +struct option_rom_pnp_header { + uint8_t signature[4]; /* "$PnP" */ + uint8_t structure_revision; + uint8_t structure_length; /* 16-byte increments */ + uint16_t next_header_offset; + uint8_t reserved; + uint8_t checksum; + uint32_t device_id; + uint16_t manufacturer_name_offset; + uint16_t product_name_offset; + uint8_t device_type_code[3]; + uint8_t device_indicators; + uint16_t boot_connection_vector; + uint16_t disconnect_vector; + uint16_t bootstap_entry_vector; + uint16_t reserved2; + uint16_t static_resource_information_vector; +} __attribute__ ((packed)); + + +struct option_rom_pci_header { + uint8_t signature[4]; /* "PCIR" */ + uint16_t vendor_id; + uint16_t device_id; + uint16_t vital_product_data_offset; + uint16_t structure_length; + uint8_t structure_revision; + uint8_t class_code[3]; + uint16_t image_length; + uint16_t image_revision; + uint8_t code_type; + uint8_t indicator; + uint16_t reserved; +} __attribute__ ((packed)); + +#endif /* __HVMLOADER_OPTION_ROM_H__ */ diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/hvmloader/smp.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/smp.c Tue Apr 15 11:09:46 2008 -0600 @@ -0,0 +1,132 @@ +/* + * smp.c: Secondary processor bringup and initialisation. + * + * Copyright (c) 2008, Citrix Systems, Inc. + * + * Authors: + * Keir Fraser <keir.fraser@xxxxxxxxxx> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307 USA. + */ + +#include "util.h" +#include "config.h" +#include "apic_regs.h" + +#define AP_BOOT_EIP 0x1000 +extern char ap_boot_start[], ap_boot_end[]; + +static int ap_callin, ap_cpuid; + +asm ( + " .text \n" + " .code16 \n" + "ap_boot_start: .code16 \n" + " mov %cs,%ax \n" + " mov %ax,%ds \n" + " lgdt gdt_desr-ap_boot_start\n" + " xor %ax, %ax \n" + " inc %ax \n" + " lmsw %ax \n" + " ljmpl $0x08,$1f \n" + "gdt_desr: \n" + " .word gdt_end - gdt - 1 \n" + " .long gdt \n" + "ap_boot_end: .code32 \n" + "1: mov $0x10,%eax \n" + " mov %eax,%ds \n" + " mov %eax,%es \n" + " mov %eax,%ss \n" + " movl $stack_top,%esp \n" + " movl %esp,%ebp \n" + " call ap_start \n" + "1: hlt \n" + " jmp 1b \n" + " \n" + " .align 8 \n" + "gdt: \n" + " .quad 0x0000000000000000 \n" + " .quad 0x00cf9a000000ffff \n" /* 0x08: Flat code segment */ + " .quad 0x00cf92000000ffff \n" /* 0x10: Flat data segment */ + "gdt_end: \n" + " \n" + " .bss \n" + " .align 8 \n" + "stack: \n" + " .skip 0x4000 \n" + "stack_top: \n" + ); + +/*static*/ void ap_start(void) +{ + printf(" - CPU%d ... ", ap_cpuid); + + printf("done.\n"); + wmb(); + ap_callin = 1; +} + +static void lapic_wait_ready(void) +{ + while ( lapic_read(APIC_ICR) & APIC_ICR_BUSY ) + cpu_relax(); +} + +static void boot_cpu(unsigned int cpu) +{ + unsigned int icr2 = SET_APIC_DEST_FIELD(LAPIC_ID(cpu)); + + /* Initialise shared variables. */ + ap_cpuid = cpu; + ap_callin = 0; + wmb(); + + /* Wake up the secondary processor: INIT-SIPI-SIPI... */ + lapic_wait_ready(); + lapic_write(APIC_ICR2, icr2); + lapic_write(APIC_ICR, APIC_DM_INIT); + lapic_wait_ready(); + lapic_write(APIC_ICR2, icr2); + lapic_write(APIC_ICR, APIC_DM_STARTUP | (AP_BOOT_EIP >> 12)); + lapic_wait_ready(); + lapic_write(APIC_ICR2, icr2); + lapic_write(APIC_ICR, APIC_DM_STARTUP | (AP_BOOT_EIP >> 12)); + lapic_wait_ready(); + + /* + * Wait for the secondary processor to complete initialisation. + * Do not touch shared resources meanwhile. + */ + while ( !ap_callin ) + cpu_relax(); + + /* Take the secondary processor offline. */ + lapic_write(APIC_ICR2, icr2); + lapic_write(APIC_ICR, APIC_DM_INIT); + lapic_wait_ready(); +} + +void smp_initialise(void) +{ + unsigned int i, nr_cpus = get_vcpu_nr(); + + if ( nr_cpus <= 1 ) + return; + + memcpy((void *)AP_BOOT_EIP, ap_boot_start, ap_boot_end - ap_boot_start); + + printf("Multiprocessor initialisation:\n"); + for ( i = 1; i < nr_cpus; i++ ) + boot_cpu(i); +} diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/hvmloader/util.c --- a/tools/firmware/hvmloader/util.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/hvmloader/util.c Tue Apr 15 11:09:46 2008 -0600 @@ -27,39 +27,57 @@ #include <xen/memory.h> #include <xen/hvm/hvm_info_table.h> +void wrmsr(uint32_t idx, uint64_t v) +{ + asm volatile ( + "wrmsr" + : : "c" (idx), "a" ((uint32_t)v), "d" ((uint32_t)(v>>32)) ); +} + +uint64_t rdmsr(uint32_t idx) +{ + uint32_t lo, hi; + + asm volatile ( + "rdmsr" + : "=a" (lo), "=d" (hi) : "c" (idx) ); + + return (lo | ((uint64_t)hi << 32)); +} + void outb(uint16_t addr, uint8_t val) { - __asm__ __volatile__ ( "outb %%al, %%dx" : : "d" (addr), "a" (val) ); + asm volatile ( "outb %%al, %%dx" : : "d" (addr), "a" (val) ); } void outw(uint16_t addr, uint16_t val) { - __asm__ __volatile__ ( "outw %%ax, %%dx" : : "d" (addr), "a" (val) ); + asm volatile ( "outw %%ax, %%dx" : : "d" (addr), "a" (val) ); } void outl(uint16_t addr, uint32_t val) { - __asm__ __volatile__ ( "outl %%eax, %%dx" : : "d" (addr), "a" (val) ); + asm volatile ( "outl %%eax, %%dx" : : "d" (addr), "a" (val) ); } uint8_t inb(uint16_t addr) { uint8_t val; - __asm__ __volatile__ ( "inb %%dx,%%al" : "=a" (val) : "d" (addr) ); + asm volatile ( "inb %%dx,%%al" : "=a" (val) : "d" (addr) ); return val; } uint16_t inw(uint16_t addr) { uint16_t val; - __asm__ __volatile__ ( "inw %%dx,%%ax" : "=a" (val) : "d" (addr) ); + asm volatile ( "inw %%dx,%%ax" : "=a" (val) : "d" (addr) ); return val; } uint32_t inl(uint16_t addr) { uint32_t val; - __asm__ __volatile__ ( "inl %%dx,%%eax" : "=a" (val) : "d" (addr) ); + asm volatile ( "inl %%dx,%%eax" : "=a" (val) : "d" (addr) ); return val; } @@ -118,7 +136,7 @@ void *memcpy(void *dest, const void *src { int t0, t1, t2; - __asm__ __volatile__ ( + asm volatile ( "cld\n" "rep; movsl\n" "testb $2,%b4\n" @@ -219,7 +237,7 @@ void void cpuid(uint32_t idx, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { - __asm__ __volatile__ ( + asm volatile ( "cpuid" : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (idx) ); @@ -516,14 +534,14 @@ void __assert_failed(char *assertion, ch printf("HVMLoader assertion '%s' failed at %s:%d\n", assertion, file, line); for ( ; ; ) - __asm__ __volatile__ ( "ud2" ); + asm volatile ( "ud2" ); } void __bug(char *file, int line) { printf("HVMLoader bug at %s:%d\n", file, line); for ( ; ; ) - __asm__ __volatile__ ( "ud2" ); + asm volatile ( "ud2" ); } static int validate_hvm_info(struct hvm_info_table *t) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/hvmloader/util.h --- a/tools/firmware/hvmloader/util.h Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/hvmloader/util.h Tue Apr 15 11:09:46 2008 -0600 @@ -18,6 +18,10 @@ void __bug(char *file, int line) __attri #define BUG() __bug(__FILE__, __LINE__) #define BUG_ON(p) do { if (p) BUG(); } while (0) #define BUILD_BUG_ON(p) ((void)sizeof(char[1 - 2 * !!(p)])) + +/* MSR access */ +void wrmsr(uint32_t idx, uint64_t v); +uint64_t rdmsr(uint32_t idx); /* I/O output */ void outb(uint16_t addr, uint8_t val); @@ -74,6 +78,7 @@ static inline void cpu_relax(void) #define barrier() asm volatile ( "" : : : "memory" ) #define rmb() barrier() #define wmb() barrier() +#define mb() asm volatile ( "lock; addl $0,0(%%esp)" : : : "memory" ) /* * Divide a 64-bit dividend by a 32-bit divisor. diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/rombios/32bit/Makefile --- a/tools/firmware/rombios/32bit/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/rombios/32bit/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -1,16 +1,10 @@ - -override XEN_TARGET_ARCH = x86_32 XEN_ROOT = ../../../.. -CFLAGS := -include $(XEN_ROOT)/tools/Rules.mk +include $(XEN_ROOT)/tools/firmware/Rules.mk SOURCES = util.c TARGET = 32bitbios_flat.h -CFLAGS += -fno-builtin -O2 -msoft-float -nostdlib CFLAGS += -I../ -DGCC_PROTOS -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) SUBDIRS = tcgbios diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/rombios/32bit/tcgbios/Makefile --- a/tools/firmware/rombios/32bit/tcgbios/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/rombios/32bit/tcgbios/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -1,16 +1,10 @@ - -override XEN_TARGET_ARCH = x86_32 XEN_ROOT = ../../../../.. -CFLAGS := -include $(XEN_ROOT)/tools/Rules.mk +include $(XEN_ROOT)/tools/firmware/Rules.mk TARGET = tcgbiosext.o FILES = tcgbios tpm_drivers OBJECTS = $(foreach f,$(FILES),$(f).o) -CFLAGS += -fno-builtin -O2 -msoft-float -nostdlib -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) CFLAGS += -I../ -I../../ -DGCC_PROTOS .PHONY: all clean diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/firmware/rombios/32bit/tcgbios/tcgbios.c --- a/tools/firmware/rombios/32bit/tcgbios/tcgbios.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/firmware/rombios/32bit/tcgbios/tcgbios.c Tue Apr 15 11:09:46 2008 -0600 @@ -923,7 +923,7 @@ uint32_t HashLogExtendEvent32(struct hle struct hlei hlei ; /* HashLogEventInput block */ struct hleo hleo; /* HashLogEventOutput block */ struct hleei_long *hleei_l = (struct hleei_long *)hleei_s; - int sh; + int sh = 0; uint32_t logdataptr; if (TCG_IsShutdownPreBootInterface() != 0) { diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/Makefile --- a/tools/ioemu/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -35,7 +35,7 @@ endif endif endif -TOOLS= +TOOLS=tapdisk-ioemu all: $(TOOLS) $(DOCS) recurse-all @@ -43,6 +43,13 @@ subdir-%: $(MAKE) -C $(subst subdir-,,$@) all recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS)) + +tapdisk-ioemu: CPPFLAGS += -I$(XEN_ROOT)/tools/libxc +tapdisk-ioemu: CPPFLAGS += -I$(XEN_ROOT)/tools/blktap/lib +tapdisk-ioemu: CPPFLAGS += -I$(XEN_ROOT)/tools/xenstore +tapdisk-ioemu: CPPFLAGS += -I$(XEN_ROOT)/tools/include +tapdisk-ioemu: tapdisk-ioemu.c cutils.c block.c block-raw.c block-cow.c block-qcow.c aes.c block-vmdk.c block-cloop.c block-dmg.c block-bochs.c block-vpc.c block-vvfat.c block-qcow2.c hw/xen_blktap.c osdep.c + $(CC) -DQEMU_TOOL $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS) qemu-img$(EXESUF): qemu-img.c cutils.c block.c block-raw.c block-cow.c block-qcow.c aes.c block-vmdk.c block-cloop.c block-dmg.c block-bochs.c block-vpc.c block-vvfat.c block-qcow2.c $(CC) -DQEMU_TOOL $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS) @@ -80,7 +87,7 @@ endif install: all $(if $(BUILD_DOCS),install-doc) mkdir -p "$(DESTDIR)$(bindir)" -# $(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)" + $(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(prefix)/sbin" # mkdir -p "$(DESTDIR)$(datadir)" # for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \ # video.x openbios-sparc32 linux_boot.bin pxe-ne2k_pci.bin \ diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/block-cow.c --- a/tools/ioemu/block-cow.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/block-cow.c Tue Apr 15 11:09:46 2008 -0600 @@ -246,10 +246,11 @@ static int cow_create(const char *filena return 0; } -static void cow_flush(BlockDriverState *bs) +static int cow_flush(BlockDriverState *bs) { BDRVCowState *s = bs->opaque; fsync(s->fd); + return 0; } BlockDriver bdrv_cow = { diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/block-vbd.c --- a/tools/ioemu/block-vbd.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/block-vbd.c Tue Apr 15 11:09:46 2008 -0600 @@ -49,11 +49,7 @@ typedef struct BDRVVbdState { typedef struct BDRVVbdState { struct blkfront_dev *dev; int fd; - int type; - int mode; - int info; - uint64_t sectors; - unsigned sector_size; + struct blkfront_info info; QEMU_LIST_ENTRY(BDRVVbdState) list; } BDRVVbdState; @@ -81,13 +77,13 @@ static int vbd_open(BlockDriverState *bs //handy to test posix access //return -EIO; - s->dev = init_blkfront((char *) filename, &s->sectors, &s->sector_size, &s->mode, &s->info); + s->dev = init_blkfront((char *) filename, &s->info); if (!s->dev) return -EIO; - if (SECTOR_SIZE % s->sector_size) { - printf("sector size is %d, we only support sector sizes that divide %d\n", s->sector_size, SECTOR_SIZE); + if (SECTOR_SIZE % s->info.sector_size) { + printf("sector size is %d, we only support sector sizes that divide %d\n", s->info.sector_size, SECTOR_SIZE); return -EIO; } @@ -267,6 +263,32 @@ static void vbd_aio_cancel(BlockDriverAI // Try to cancel. If can't, wait for it, drop the callback and call qemu_aio_release(acb) } +static void vbd_nop_cb(void *opaque, int ret) +{ +} + +static BlockDriverAIOCB *vbd_aio_flush(BlockDriverState *bs, + BlockDriverCompletionFunc *cb, void *opaque) +{ + BDRVVbdState *s = bs->opaque; + VbdAIOCB *acb = NULL; + + if (s->info.barrier == 1) { + acb = vbd_aio_setup(bs, 0, NULL, 0, + s->info.flush == 1 ? vbd_nop_cb : cb, opaque); + if (!acb) + return NULL; + blkfront_aio_push_operation(&acb->aiocb, BLKIF_OP_WRITE_BARRIER); + } + if (s->info.flush == 1) { + acb = vbd_aio_setup(bs, 0, NULL, 0, cb, opaque); + if (!acb) + return NULL; + blkfront_aio_push_operation(&acb->aiocb, BLKIF_OP_FLUSH_DISKCACHE); + } + return &acb->common; +} + static void vbd_close(BlockDriverState *bs) { BDRVVbdState *s = bs->opaque; @@ -282,13 +304,14 @@ static int64_t vbd_getlength(BlockDrive static int64_t vbd_getlength(BlockDriverState *bs) { BDRVVbdState *s = bs->opaque; - return s->sectors * s->sector_size; -} - -static void vbd_flush(BlockDriverState *bs) + return s->info.sectors * s->info.sector_size; +} + +static int vbd_flush(BlockDriverState *bs) { BDRVVbdState *s = bs->opaque; blkfront_sync(s->dev); + return 0; } /***********************************************/ @@ -333,6 +356,7 @@ BlockDriver bdrv_vbd = { .bdrv_aio_read = vbd_aio_read, .bdrv_aio_write = vbd_aio_write, .bdrv_aio_cancel = vbd_aio_cancel, + .bdrv_aio_flush = vbd_aio_flush, .aiocb_size = sizeof(VbdAIOCB), .bdrv_read = vbd_read, .bdrv_write = vbd_write, diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/block.c --- a/tools/ioemu/block.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/block.c Tue Apr 15 11:09:46 2008 -0600 @@ -347,8 +347,8 @@ int bdrv_open2(BlockDriverState *bs, con BlockDriver *drv) { int ret, open_flags; - char tmp_filename[1024]; - char backing_filename[1024]; + char tmp_filename[PATH_MAX]; + char backing_filename[PATH_MAX]; bs->read_only = 0; bs->is_temporary = 0; diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/hw/ide.c --- a/tools/ioemu/hw/ide.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/hw/ide.c Tue Apr 15 11:09:46 2008 -0600 @@ -655,12 +655,13 @@ static void ide_identify(IDEState *s) put_le16(p + 68, 120); put_le16(p + 80, 0xf0); /* ata3 -> ata6 supported */ put_le16(p + 81, 0x16); /* conforms to ata5 */ - put_le16(p + 82, (1 << 14)); + /* 14=nop 5=write_cache */ + put_le16(p + 82, (1 << 14) | (1 << 5)); /* 13=flush_cache_ext,12=flush_cache,10=lba48 */ put_le16(p + 83, (1 << 14) | (1 << 13) | (1 <<12) | (1 << 10)); put_le16(p + 84, (1 << 14)); /* 14=nop 5=write_cache */ - put_le16(p + 85, (1 << 14) | (1 << 5)); + put_le16(p + 85, (1 << 14) | (s->write_cache << 5)); /* 13=flush_cache_ext,12=flush_cache,10=lba48 */ put_le16(p + 86, (1 << 14) | (1 << 13) | (1 <<12) | (1 << 10)); put_le16(p + 87, (1 << 14)); diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/hw/rtl8139.c --- a/tools/ioemu/hw/rtl8139.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/hw/rtl8139.c Tue Apr 15 11:09:46 2008 -0600 @@ -1416,12 +1416,28 @@ static uint32_t rtl8139_ChipCmd_read(RTL static void rtl8139_CpCmd_write(RTL8139State *s, uint32_t val) { + int i; + val &= 0xffff; DEBUG_PRINT(("RTL8139C+ command register write(w) val=0x%04x\n", val)); /* mask unwriteable bits */ val = SET_MASKED(val, 0xff84, s->CpCmd); + + if ( (s->CpCmd & CPlusTxEnb) && + !(val & CPlusTxEnb) ) + { + /* Reset TX status when the transmitter drops from C+ to + non-C+ mode. Windows has a habit of turning off C+ and + then waiting for the TX requests to clear as part of shut + down, and you get stuck forever if there are old DTCRs in + the registers. */ + for (i = 0; i < 4; i++) + { + s->TxStatus[i] = TxHostOwns; + } + } s->CpCmd = val; } @@ -1765,6 +1781,7 @@ static int rtl8139_transmit_one(RTL8139S { DEBUG_PRINT(("RTL8139: +++ cannot transmit from descriptor %d: transmitter disabled\n", descriptor)); + s->TxStatus[descriptor] = TxAborted | TxHostOwns; return 0; } @@ -1772,6 +1789,7 @@ static int rtl8139_transmit_one(RTL8139S { DEBUG_PRINT(("RTL8139: +++ cannot transmit from descriptor %d: owned by host (%08x)\n", descriptor, s->TxStatus[descriptor])); + s->TxStatus[descriptor] = TxAborted | TxHostOwns; return 0; } diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/hw/xen_machine_fv.c --- a/tools/ioemu/hw/xen_machine_fv.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/hw/xen_machine_fv.c Tue Apr 15 11:09:46 2008 -0600 @@ -205,6 +205,7 @@ static void xen_init_fv(uint64_t ram_siz } #endif + xc_set_hvm_param(xc_handle, domid, HVM_PARAM_DM_DOMAIN, DOMID_SELF); xc_get_hvm_param(xc_handle, domid, HVM_PARAM_IOREQ_PFN, &ioreq_pfn); fprintf(logfile, "shared page at pfn %lx\n", ioreq_pfn); shared_page = xc_map_foreign_range(xc_handle, domid, XC_PAGE_SIZE, diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/osdep.c --- a/tools/ioemu/osdep.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/osdep.c Tue Apr 15 11:09:46 2008 -0600 @@ -21,6 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + +#include "config-host.h" #include <stdlib.h> #include <stdio.h> #include <stdarg.h> @@ -32,7 +34,6 @@ #include <sys/statvfs.h> #endif -#include "cpu.h" #if defined(USE_KQEMU) #include "vl.h" #endif diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/qemu-img.c --- a/tools/ioemu/qemu-img.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/qemu-img.c Tue Apr 15 11:09:46 2008 -0600 @@ -594,8 +594,8 @@ static int img_info(int argc, char **arg BlockDriverState *bs; char fmt_name[128], size_buf[128], dsize_buf[128]; int64_t total_sectors, allocated_size; - char backing_filename[1024]; - char backing_filename2[1024]; + char backing_filename[PATH_MAX]; + char backing_filename2[PATH_MAX]; BlockDriverInfo bdi; fmt = NULL; diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/tapdisk-ioemu.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/ioemu/tapdisk-ioemu.c Tue Apr 15 11:09:46 2008 -0600 @@ -0,0 +1,142 @@ +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#include <string.h> +#include <stdint.h> +#include <signal.h> +#include <sys/time.h> + +#include <assert.h> + +extern int init_blktap(void); +extern void qemu_aio_init(void); +extern void qemu_aio_poll(void); +extern void bdrv_init(void); + +extern void *qemu_mallocz(size_t size); +extern void qemu_free(void *ptr); + +int domid = 0; +FILE* logfile; + +void term_printf(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vprintf(fmt, ap); + va_end(ap); +} + +void term_print_filename(const char *filename) +{ + term_printf(filename); +} + + +typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size); +typedef int IOCanRWHandler(void *opaque); +typedef void IOHandler(void *opaque); + +typedef struct IOHandlerRecord { + int fd; + IOCanRWHandler *fd_read_poll; + IOHandler *fd_read; + IOHandler *fd_write; + int deleted; + void *opaque; + /* temporary data */ + struct pollfd *ufd; + struct IOHandlerRecord *next; +} IOHandlerRecord; + +static IOHandlerRecord *first_io_handler; + +int qemu_set_fd_handler2(int fd, + IOCanRWHandler *fd_read_poll, + IOHandler *fd_read, + IOHandler *fd_write, + void *opaque) +{ + IOHandlerRecord *ioh; + + /* This is a stripped down version of fd handling */ + assert(fd_read_poll == NULL); + assert(fd_write == NULL); + + for(ioh = first_io_handler; ioh != NULL; ioh = ioh->next) + if (ioh->fd == fd) + goto found; + + if (!fd_read && !fd_write) + return 0; + + ioh = qemu_mallocz(sizeof(IOHandlerRecord)); + if (!ioh) + return -1; + ioh->next = first_io_handler; + first_io_handler = ioh; + +found: + if (!fd_read && !fd_write) { + ioh->deleted = 1; + } else { + ioh->fd = fd; + ioh->fd_read = fd_read; + ioh->opaque = opaque; + ioh->deleted = 0; + } + + return 0; +} + +int main(void) +{ + IOHandlerRecord *ioh, **pioh; + int max_fd; + fd_set rfds; + struct timeval tv; + + logfile = stderr; + + bdrv_init(); + qemu_aio_init(); + init_blktap(); + + /* + * Main loop: Pass events to the corrsponding handlers and check for + * completed aio operations. + */ + while (1) { + qemu_aio_poll(); + + max_fd = -1; + FD_ZERO(&rfds); + for(ioh = first_io_handler; ioh != NULL; ioh = ioh->next) + if (!ioh->deleted) { + FD_SET(ioh->fd, &rfds); + max_fd = max_fd > ioh->fd ? max_fd : ioh->fd; + } + + tv.tv_sec = 0; + tv.tv_usec = 10000; + if (select(max_fd + 1, &rfds, NULL, NULL, &tv) <= 0) + continue; + + /* Call handlers */ + for(ioh = first_io_handler; ioh != NULL; ioh = ioh->next) + if (FD_ISSET(ioh->fd, &rfds)) + ioh->fd_read(ioh->opaque); + + /* Remove deleted IO handlers */ + pioh = &first_io_handler; + while (*pioh) { + ioh = *pioh; + if (ioh->deleted) { + *pioh = ioh->next; + qemu_free(ioh); + } else + pioh = &ioh->next; + } + } + return 0; +} diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/target-i386-dm/helper2.c --- a/tools/ioemu/target-i386-dm/helper2.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/target-i386-dm/helper2.c Tue Apr 15 11:09:46 2008 -0600 @@ -391,8 +391,6 @@ void timeoffset_get(void) fprintf(logfile, "Time offset set %ld\n", time_offset); else time_offset = 0; - - xc_domain_set_time_offset(xc_handle, domid, time_offset); free(p); } diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/vl.c --- a/tools/ioemu/vl.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/vl.c Tue Apr 15 11:09:46 2008 -0600 @@ -1762,7 +1762,8 @@ static int store_dev_info(char *devName, CharDriverState *cState, char *storeString) { #ifdef CONFIG_STUBDOM - return 0; + fprintf(logfile, "can't store dev %s name for domid %d in %s from a stub domain\n", devName, domid, storeString); + return ENOSYS; #else int xc_handle; struct xs_handle *xs; @@ -7017,26 +7018,12 @@ int unset_mm_mapping(int xc_handle, uint xen_pfn_t *extent_start) { int err = 0; - xc_dominfo_t info; - - xc_domain_getinfo(xc_handle, domid, 1, &info); - if ((info.nr_pages - nr_pages) <= 0) { - fprintf(stderr, "unset_mm_mapping: error nr_pages\n"); - err = -1; - } err = xc_domain_memory_decrease_reservation(xc_handle, domid, nr_pages, 0, extent_start); if (err) fprintf(stderr, "Failed to decrease physmap\n"); - - if (xc_domain_setmaxmem(xc_handle, domid, (info.nr_pages - nr_pages) * - PAGE_SIZE/1024) != 0) { - fprintf(logfile, "set maxmem returned error %d\n", errno); - err = -1; - } - return err; } @@ -7044,16 +7031,7 @@ int set_mm_mapping(int xc_handle, uint32 unsigned long nr_pages, unsigned int address_bits, xen_pfn_t *extent_start) { - xc_dominfo_t info; int err = 0; - - xc_domain_getinfo(xc_handle, domid, 1, &info); - - if (xc_domain_setmaxmem(xc_handle, domid, info.max_memkb + - nr_pages * PAGE_SIZE/1024) != 0) { - fprintf(logfile, "set maxmem returned error %d\n", errno); - return -1; - } err = xc_domain_memory_populate_physmap(xc_handle, domid, nr_pages, 0, address_bits, extent_start); @@ -7688,11 +7666,13 @@ int main(int argc, char **argv) bdrv_init(); xc_handle = xc_interface_open(); #ifdef CONFIG_STUBDOM - char *domid_s, *msg; - if ((msg = xenbus_read(XBT_NIL, "domid", &domid_s))) - fprintf(stderr,"Can not read our own domid\n", msg); - else - xenstore_parse_domain_config(atoi(domid_s)); + { + char *domid_s, *msg; + if ((msg = xenbus_read(XBT_NIL, "domid", &domid_s))) + fprintf(stderr,"Can not read our own domid: %s\n", msg); + else + xenstore_parse_domain_config(atoi(domid_s)); + } #else /* CONFIG_STUBDOM */ xenstore_parse_domain_config(domid); #endif /* CONFIG_STUBDOM */ diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/vl.h --- a/tools/ioemu/vl.h Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/vl.h Tue Apr 15 11:09:46 2008 -0600 @@ -159,7 +159,7 @@ extern FILE *logfile; extern FILE *logfile; -#if defined(__i386__) || defined(__x86_64__) +#if (defined(__i386__) || defined(__x86_64__)) && !defined(QEMU_TOOL) #define MAPCACHE uint8_t *qemu_map_cache(target_phys_addr_t phys_addr); void qemu_invalidate_map_cache(void); @@ -1553,7 +1553,9 @@ void timeoffset_get(void); void timeoffset_get(void); /* xen_platform.c */ +#ifndef QEMU_TOOL void pci_xen_platform_init(PCIBus *bus); +#endif void kqemu_record_dump(void); diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/ioemu/xenstore.c --- a/tools/ioemu/xenstore.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/ioemu/xenstore.c Tue Apr 15 11:09:46 2008 -0600 @@ -347,10 +347,6 @@ extern int vga_ram_size, bios_size; void xenstore_process_logdirty_event(void) { -#ifdef CONFIG_STUBDOM - /* XXX we just can't use shm. */ - return; -#else char *act; static char *active_path = NULL; static char *next_active_path = NULL; @@ -392,6 +388,12 @@ void xenstore_process_logdirty_event(voi /* Map the shared-memory segment */ fprintf(logfile, "%s: key=%16.16llx size=%lu\n", __FUNCTION__, (unsigned long long)key, logdirty_bitmap_size); + +#ifdef CONFIG_STUBDOM + /* XXX we just can't use shm. */ + fprintf(logfile, "Log dirty is not implemented in stub domains!\n"); + return; +#else shmid = shmget(key, 2 * logdirty_bitmap_size, S_IRUSR|S_IWUSR); if (shmid == -1) { fprintf(logfile, "Log-dirty: shmget failed: segment %16.16llx " @@ -417,6 +419,7 @@ void xenstore_process_logdirty_event(voi seg = NULL; return; } +#endif /* Remember the paths for the next-active and active entries */ if (pasprintf(&active_path, @@ -453,7 +456,6 @@ void xenstore_process_logdirty_event(voi /* Ack that we've switched */ xs_write(xsh, XBT_NULL, active_path, act, len); free(act); -#endif } diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/libxc/xc_domain.c --- a/tools/libxc/xc_domain.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/libxc/xc_domain.c Tue Apr 15 11:09:46 2008 -0600 @@ -7,6 +7,7 @@ */ #include "xc_private.h" +#include "xg_save_restore.h" #include <xen/memory.h> #include <xen/hvm/hvm_op.h> @@ -301,18 +302,27 @@ int xc_vcpu_getcontext(int xc_handle, { int rc; DECLARE_DOMCTL; + size_t sz = sizeof(vcpu_guest_context_either_t); domctl.cmd = XEN_DOMCTL_getvcpucontext; domctl.domain = (domid_t)domid; domctl.u.vcpucontext.vcpu = (uint16_t)vcpu; set_xen_guest_handle(domctl.u.vcpucontext.ctxt, ctxt); - if ( (rc = lock_pages(ctxt, sizeof(*ctxt))) != 0 ) - return rc; + /* + * We may be asked to lock either a 32-bit or a 64-bit context. Lock the + * larger of the two if possible, otherwise fall back to native size. + */ + if ( (rc = lock_pages(ctxt, sz)) != 0 ) + { + sz = sizeof(*ctxt); + if ( (rc = lock_pages(ctxt, sz)) != 0 ) + return rc; + } rc = do_domctl(xc_handle, &domctl); - unlock_pages(ctxt, sizeof(*ctxt)); + unlock_pages(ctxt, sz); return rc; } @@ -620,19 +630,28 @@ int xc_vcpu_setcontext(int xc_handle, { DECLARE_DOMCTL; int rc; + size_t sz = sizeof(vcpu_guest_context_either_t); domctl.cmd = XEN_DOMCTL_setvcpucontext; domctl.domain = domid; domctl.u.vcpucontext.vcpu = vcpu; set_xen_guest_handle(domctl.u.vcpucontext.ctxt, ctxt); - if ( (ctxt != NULL) && ((rc = lock_pages(ctxt, sizeof(*ctxt))) != 0) ) - return rc; + /* + * We may be asked to lock either a 32-bit or a 64-bit context. Lock the + * larger of the two if possible, otherwise fall back to native size. + */ + if ( (ctxt != NULL) && (rc = lock_pages(ctxt, sz)) != 0 ) + { + sz = sizeof(*ctxt); + if ( (rc = lock_pages(ctxt, sz)) != 0 ) + return rc; + } rc = do_domctl(xc_handle, &domctl); if ( ctxt != NULL ) - unlock_pages(ctxt, sizeof(*ctxt)); + unlock_pages(ctxt, sz); return rc; } diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/libxc/xc_domain_restore.c --- a/tools/libxc/xc_domain_restore.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/libxc/xc_domain_restore.c Tue Apr 15 11:09:46 2008 -0600 @@ -284,7 +284,8 @@ int xc_domain_restore(int xc_handle, int /* The new domain's shared-info frame number. */ unsigned long shared_info_frame; unsigned char shared_info_page[PAGE_SIZE]; /* saved contents from file */ - shared_info_either_t *old_shared_info = (shared_info_either_t *)shared_info_page; + shared_info_either_t *old_shared_info = + (shared_info_either_t *)shared_info_page; shared_info_either_t *new_shared_info; /* A copy of the CPU context of the guest. */ @@ -349,13 +350,6 @@ int xc_domain_restore(int xc_handle, int guest_width = sizeof(unsigned long); pt_levels = (guest_width == 8) ? 4 : (pt_levels == 2) ? 2 : 3; - if ( lock_pages(&ctxt, sizeof(ctxt)) ) - { - /* needed for build domctl, but might as well do early */ - ERROR("Unable to lock ctxt"); - return 1; - } - if ( !hvm ) { /* Load the p2m frame list, plus potential extended info chunk */ @@ -380,8 +374,11 @@ int xc_domain_restore(int xc_handle, int /* We want zeroed memory so use calloc rather than malloc. */ p2m = calloc(p2m_size, MAX(guest_width, sizeof (xen_pfn_t))); pfn_type = calloc(p2m_size, sizeof(unsigned long)); - region_mfn = calloc(MAX_BATCH_SIZE, sizeof(xen_pfn_t)); - p2m_batch = calloc(MAX_BATCH_SIZE, sizeof(xen_pfn_t)); + + region_mfn = xg_memalign(PAGE_SIZE, ROUNDUP( + MAX_BATCH_SIZE * sizeof(xen_pfn_t), PAGE_SHIFT)); + p2m_batch = xg_memalign(PAGE_SIZE, ROUNDUP( + MAX_BATCH_SIZE * sizeof(xen_pfn_t), PAGE_SHIFT)); if ( (p2m == NULL) || (pfn_type == NULL) || (region_mfn == NULL) || (p2m_batch == NULL) ) @@ -390,6 +387,11 @@ int xc_domain_restore(int xc_handle, int errno = ENOMEM; goto out; } + + memset(region_mfn, 0, + ROUNDUP(MAX_BATCH_SIZE * sizeof(xen_pfn_t), PAGE_SHIFT)); + memset(p2m_batch, 0, + ROUNDUP(MAX_BATCH_SIZE * sizeof(xen_pfn_t), PAGE_SHIFT)); if ( lock_pages(region_mfn, sizeof(xen_pfn_t) * MAX_BATCH_SIZE) ) { @@ -974,6 +976,12 @@ int xc_domain_restore(int xc_handle, int else DPRINTF("Decreased reservation by %d pages\n", count); } + } + + if ( lock_pages(&ctxt, sizeof(ctxt)) ) + { + ERROR("Unable to lock ctxt"); + return 1; } for ( i = 0; i <= max_vcpu_id; i++ ) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/libxc/xc_domain_save.c --- a/tools/libxc/xc_domain_save.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/libxc/xc_domain_save.c Tue Apr 15 11:09:46 2008 -0600 @@ -223,7 +223,7 @@ static int ratewrite(int io_fd, int live { budget += BURST_BUDGET; last_put.tv_usec += burst_time_us; - if ( last_put.tv_usec > 1000000 + if ( last_put.tv_usec > 1000000 ) { last_put.tv_usec -= 1000000; last_put.tv_sec++; @@ -939,9 +939,9 @@ int xc_domain_save(int xc_handle, int io sent_last_iter = p2m_size; /* Setup to_send / to_fix and to_skip bitmaps */ - to_send = malloc(BITMAP_SIZE); + to_send = xg_memalign(PAGE_SIZE, ROUNDUP(BITMAP_SIZE, PAGE_SHIFT)); to_fix = calloc(1, BITMAP_SIZE); - to_skip = malloc(BITMAP_SIZE); + to_skip = xg_memalign(PAGE_SIZE, ROUNDUP(BITMAP_SIZE, PAGE_SHIFT)); if ( !to_send || !to_fix || !to_skip ) { @@ -983,8 +983,8 @@ int xc_domain_save(int xc_handle, int io analysis_phase(xc_handle, dom, p2m_size, to_skip, 0); - /* We want zeroed memory so use calloc rather than malloc. */ - pfn_type = calloc(MAX_BATCH_SIZE, sizeof(*pfn_type)); + pfn_type = xg_memalign(PAGE_SIZE, ROUNDUP( + MAX_BATCH_SIZE * sizeof(*pfn_type), PAGE_SHIFT)); pfn_batch = calloc(MAX_BATCH_SIZE, sizeof(*pfn_batch)); if ( (pfn_type == NULL) || (pfn_batch == NULL) ) { @@ -992,10 +992,12 @@ int xc_domain_save(int xc_handle, int io errno = ENOMEM; goto out; } + memset(pfn_type, 0, + ROUNDUP(MAX_BATCH_SIZE * sizeof(*pfn_type), PAGE_SHIFT)); if ( lock_pages(pfn_type, MAX_BATCH_SIZE * sizeof(*pfn_type)) ) { - ERROR("Unable to lock"); + ERROR("Unable to lock pfn_type array"); goto out; } @@ -1048,7 +1050,7 @@ int xc_domain_save(int xc_handle, int io /* Now write out each data page, canonicalising page tables as we go... */ for ( ; ; ) { - unsigned int prev_pc, sent_this_iter, N, batch; + unsigned int prev_pc, sent_this_iter, N, batch, run; iter++; sent_this_iter = 0; @@ -1225,6 +1227,7 @@ int xc_domain_save(int xc_handle, int io } /* entering this loop, pfn_type is now in pfns (Not mfns) */ + run = 0; for ( j = 0; j < batch; j++ ) { unsigned long pfn, pagetype; @@ -1233,7 +1236,25 @@ int xc_domain_save(int xc_handle, int io pfn = pfn_type[j] & ~XEN_DOMCTL_PFINFO_LTAB_MASK; pagetype = pfn_type[j] & XEN_DOMCTL_PFINFO_LTAB_MASK; - /* write out pages in batch */ + if ( pagetype != 0 ) + { + /* If the page is not a normal data page, write out any + run of pages we may have previously acumulated */ + if ( run ) + { + if ( ratewrite(io_fd, live, + (char*)region_base+(PAGE_SIZE*(j-run)), + PAGE_SIZE*run) != PAGE_SIZE*run ) + { + ERROR("Error when writing to state file (4a)" + " (errno %d)", errno); + goto out; + } + run = 0; + } + } + + /* skip pages that aren't present */ if ( pagetype == XEN_DOMCTL_PFINFO_XTAB ) continue; @@ -1255,23 +1276,30 @@ int xc_domain_save(int xc_handle, int io if ( ratewrite(io_fd, live, page, PAGE_SIZE) != PAGE_SIZE ) { - ERROR("Error when writing to state file (4)" + ERROR("Error when writing to state file (4b)" " (errno %d)", errno); goto out; } } else { - /* We have a normal page: just write it directly. */ - if ( ratewrite(io_fd, live, spage, PAGE_SIZE) != - PAGE_SIZE ) - { - ERROR("Error when writing to state file (5)" - " (errno %d)", errno); - goto out; - } + /* We have a normal page: accumulate it for writing. */ + run++; } } /* end of the write out for this batch */ + + if ( run ) + { + /* write out the last accumulated run of pages */ + if ( ratewrite(io_fd, live, + (char*)region_base+(PAGE_SIZE*(j-run)), + PAGE_SIZE*run) != PAGE_SIZE*run ) + { + ERROR("Error when writing to state file (4c)" + " (errno %d)", errno); + goto out; + } + } sent_this_iter += batch; diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/libxc/xc_evtchn.c --- a/tools/libxc/xc_evtchn.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/libxc/xc_evtchn.c Tue Apr 15 11:09:46 2008 -0600 @@ -9,7 +9,8 @@ #include "xc_private.h" -static int do_evtchn_op(int xc_handle, int cmd, void *arg, size_t arg_size) +static int do_evtchn_op(int xc_handle, int cmd, void *arg, + size_t arg_size, int silently_fail) { int ret = -1; DECLARE_HYPERCALL; @@ -24,7 +25,7 @@ static int do_evtchn_op(int xc_handle, i goto out; } - if ((ret = do_xen_hypercall(xc_handle, &hypercall)) < 0) + if ((ret = do_xen_hypercall(xc_handle, &hypercall)) < 0 && !silently_fail) ERROR("do_evtchn_op: HYPERVISOR_event_channel_op failed: %d", ret); unlock_pages(arg, arg_size); @@ -44,7 +45,7 @@ xc_evtchn_alloc_unbound(int xc_handle, .remote_dom = (domid_t)remote_dom }; - rc = do_evtchn_op(xc_handle, EVTCHNOP_alloc_unbound, &arg, sizeof(arg)); + rc = do_evtchn_op(xc_handle, EVTCHNOP_alloc_unbound, &arg, sizeof(arg), 0); if ( rc == 0 ) rc = arg.port; @@ -55,5 +56,20 @@ int xc_evtchn_reset(int xc_handle, uint32_t dom) { struct evtchn_reset arg = { .dom = (domid_t)dom }; - return do_evtchn_op(xc_handle, EVTCHNOP_reset, &arg, sizeof(arg)); + return do_evtchn_op(xc_handle, EVTCHNOP_reset, &arg, sizeof(arg), 0); } + +int xc_evtchn_status(int xc_handle, + uint32_t dom, + uint32_t port) +{ + int rc; + struct evtchn_status arg = { .dom = (domid_t)dom, + .port = (evtchn_port_t)port }; + + rc = do_evtchn_op(xc_handle, EVTCHNOP_status, &arg, sizeof(arg), 1); + if ( rc == 0 ) + rc = arg.status; + + return rc; +} diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/libxc/xc_hvm_build.c --- a/tools/libxc/xc_hvm_build.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/libxc/xc_hvm_build.c Tue Apr 15 11:09:46 2008 -0600 @@ -20,6 +20,13 @@ #include <xen/libelf.h> #define SCRATCH_PFN 0xFFFFF + +#define SPECIALPAGE_GUARD 0 +#define SPECIALPAGE_BUFIOREQ 1 +#define SPECIALPAGE_XENSTORE 2 +#define SPECIALPAGE_IOREQ 3 +#define SPECIALPAGE_IDENT_PT 4 +#define NR_SPECIAL_PAGES 5 static void build_e820map(void *e820_page, unsigned long long mem_size) { @@ -77,21 +84,16 @@ static void build_e820map(void *e820_pag e820entry[nr_map].type = E820_RESERVED; nr_map++; - /* - * Low RAM goes here. Remove 4 pages for: ioreq, bufioreq, and xenstore. - * 1. Guard page. - * 2. Buffered ioreq. - * 3. Xenstore. - * 4. Normal ioreq. - */ + /* Low RAM goes here. Reserve space for special pages. */ e820entry[nr_map].addr = 0x100000; - e820entry[nr_map].size = mem_size - 0x100000 - PAGE_SIZE * 4; + e820entry[nr_map].size = (mem_size - 0x100000 - + PAGE_SIZE * NR_SPECIAL_PAGES); e820entry[nr_map].type = E820_RAM; nr_map++; - /* Explicitly reserve space for special pages. */ - e820entry[nr_map].addr = mem_size - PAGE_SIZE * 3; - e820entry[nr_map].size = PAGE_SIZE * 3; + /* Explicitly reserve space for special pages (excluding guard page). */ + e820entry[nr_map].addr = mem_size - PAGE_SIZE * (NR_SPECIAL_PAGES - 1); + e820entry[nr_map].size = PAGE_SIZE * (NR_SPECIAL_PAGES - 1); e820entry[nr_map].type = E820_RESERVED; nr_map++; @@ -156,10 +158,11 @@ static int setup_guest(int xc_handle, { xen_pfn_t *page_array = NULL; unsigned long i, nr_pages = (unsigned long)memsize << (20 - PAGE_SHIFT); - unsigned long shared_page_nr, entry_eip; + unsigned long special_page_nr, entry_eip, cur_pages; struct xen_add_to_physmap xatp; struct shared_info *shared_info; void *e820_page; + uint32_t *ident_pt; struct elf_binary elf; uint64_t v_start, v_end; int rc; @@ -206,12 +209,23 @@ static int setup_guest(int xc_handle, for ( i = HVM_BELOW_4G_RAM_END >> PAGE_SHIFT; i < nr_pages; i++ ) page_array[i] += HVM_BELOW_4G_MMIO_LENGTH >> PAGE_SHIFT; - /* Allocate memory for HVM guest, skipping VGA hole 0xA0000-0xC0000. */ + /* + * Allocate memory for HVM guest, skipping VGA hole 0xA0000-0xC0000. + * We allocate pages in batches of no more than 2048 to ensure that + * we can be preempted and hence dom0 remains responsive. + */ rc = xc_domain_memory_populate_physmap( xc_handle, dom, 0xa0, 0, 0, &page_array[0x00]); - if ( rc == 0 ) + cur_pages = 0xc0; + while ( (rc == 0) && (nr_pages > cur_pages) ) + { + unsigned long count = nr_pages - cur_pages; + if ( count > 2048 ) + count = 2048; rc = xc_domain_memory_populate_physmap( - xc_handle, dom, nr_pages - 0xc0, 0, 0, &page_array[0xc0]); + xc_handle, dom, count, 0, 0, &page_array[cur_pages]); + cur_pages += count; + } if ( rc != 0 ) { PERROR("Could not allocate memory for HVM guest.\n"); @@ -245,29 +259,46 @@ static int setup_guest(int xc_handle, sizeof(shared_info->evtchn_mask)); munmap(shared_info, PAGE_SIZE); - if ( v_end > HVM_BELOW_4G_RAM_END ) - shared_page_nr = (HVM_BELOW_4G_RAM_END >> PAGE_SHIFT) - 1; - else - shared_page_nr = (v_end >> PAGE_SHIFT) - 1; + special_page_nr = (((v_end > HVM_BELOW_4G_RAM_END) + ? (HVM_BELOW_4G_RAM_END >> PAGE_SHIFT) + : (v_end >> PAGE_SHIFT)) + - NR_SPECIAL_PAGES); + + /* Paranoia: clean special pages. */ + for ( i = 0; i < NR_SPECIAL_PAGES; i++ ) + if ( xc_clear_domain_page(xc_handle, dom, special_page_nr + i) ) + goto error_out; /* Free the guard page that separates low RAM from special pages. */ rc = xc_domain_memory_decrease_reservation( - xc_handle, dom, 1, 0, &page_array[shared_page_nr-3]); + xc_handle, dom, 1, 0, &page_array[special_page_nr]); if ( rc != 0 ) { PERROR("Could not deallocate guard page for HVM guest.\n"); goto error_out; } - /* Paranoia: clean pages. */ - if ( xc_clear_domain_page(xc_handle, dom, shared_page_nr) || - xc_clear_domain_page(xc_handle, dom, shared_page_nr-1) || - xc_clear_domain_page(xc_handle, dom, shared_page_nr-2) ) - goto error_out; - - xc_set_hvm_param(xc_handle, dom, HVM_PARAM_STORE_PFN, shared_page_nr-1); - xc_set_hvm_param(xc_handle, dom, HVM_PARAM_BUFIOREQ_PFN, shared_page_nr-2); - xc_set_hvm_param(xc_handle, dom, HVM_PARAM_IOREQ_PFN, shared_page_nr); + xc_set_hvm_param(xc_handle, dom, HVM_PARAM_STORE_PFN, + special_page_nr + SPECIALPAGE_XENSTORE); + xc_set_hvm_param(xc_handle, dom, HVM_PARAM_BUFIOREQ_PFN, + special_page_nr + SPECIALPAGE_BUFIOREQ); + xc_set_hvm_param(xc_handle, dom, HVM_PARAM_IOREQ_PFN, + special_page_nr + SPECIALPAGE_IOREQ); + + /* + * Identity-map page table is required for running with CR0.PG=0 when + * using Intel EPT. Create a 32-bit non-PAE page directory of superpages. + */ + if ( (ident_pt = xc_map_foreign_range( + xc_handle, dom, PAGE_SIZE, PROT_READ | PROT_WRITE, + special_page_nr + SPECIALPAGE_IDENT_PT)) == NULL ) + goto error_out; + for ( i = 0; i < PAGE_SIZE / sizeof(*ident_pt); i++ ) + ident_pt[i] = ((i << 22) | _PAGE_PRESENT | _PAGE_RW | _PAGE_USER | + _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_PSE); + munmap(ident_pt, PAGE_SIZE); + xc_set_hvm_param(xc_handle, dom, HVM_PARAM_IDENT_PT, + special_page_nr + SPECIALPAGE_IDENT_PT); /* Insert JMP <rel32> instruction at address 0x0 to reach entry point. */ entry_eip = elf_uval(&elf, elf.ehdr, e_entry); diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/libxc/xenctrl.h --- a/tools/libxc/xenctrl.h Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/libxc/xenctrl.h Tue Apr 15 11:09:46 2008 -0600 @@ -470,6 +470,9 @@ xc_evtchn_alloc_unbound(int xc_handle, int xc_evtchn_reset(int xc_handle, uint32_t dom); +int xc_evtchn_status(int xc_handle, + uint32_t dom, + uint32_t port); /* * Return a handle to the event channel driver, or -1 on failure, in which case diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/libxc/xg_private.c --- a/tools/libxc/xg_private.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/libxc/xg_private.c Tue Apr 15 11:09:46 2008 -0600 @@ -8,6 +8,7 @@ #include <unistd.h> #include <zlib.h> #include <strings.h> +#include <malloc.h> #include "xg_private.h" @@ -196,6 +197,22 @@ __attribute__((weak)) { errno = ENOSYS; return -1; +} + +void *xg_memalign(size_t alignment, size_t size) +{ +#if defined(_POSIX_C_SOURCE) && !defined(__sun__) + int ret; + void *ptr; + ret = posix_memalign(&ptr, alignment, size); + if (ret != 0) + return NULL; + return ptr; +#elif defined(__NetBSD__) || defined(__OpenBSD__) + return valloc(size); +#else + return memalign(alignment, size); +#endif } /* diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/libxc/xg_private.h --- a/tools/libxc/xg_private.h Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/libxc/xg_private.h Tue Apr 15 11:09:46 2008 -0600 @@ -176,4 +176,6 @@ int pin_table(int xc_handle, unsigned in int pin_table(int xc_handle, unsigned int type, unsigned long mfn, domid_t dom); +void *xg_memalign(size_t alignment, size_t size); + #endif /* XG_PRIVATE_H */ diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/util/acmpolicy.py --- a/tools/python/xen/util/acmpolicy.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/util/acmpolicy.py Tue Apr 15 11:09:46 2008 -0600 @@ -76,6 +76,7 @@ DEFAULT_policy = \ " <SimpleTypeEnforcement>\n" +\ " <SimpleTypeEnforcementTypes>\n" +\ " <Type>SystemManagement</Type>\n" +\ +" <Type>__UNLABELED__</Type>\n" +\ " </SimpleTypeEnforcementTypes>\n" +\ " </SimpleTypeEnforcement>\n" +\ " <ChineseWall>\n" +\ @@ -89,12 +90,30 @@ DEFAULT_policy = \ " <Name%s>SystemManagement</Name>\n" +\ " <SimpleTypeEnforcementTypes>\n" +\ " <Type>SystemManagement</Type>\n" +\ +" <Type>__UNLABELED__</Type>\n" +\ +" </SimpleTypeEnforcementTypes>\n" +\ +" <ChineseWallTypes>\n" +\ +" <Type/>\n" +\ +" </ChineseWallTypes>\n" +\ +" </VirtualMachineLabel>\n" +\ +" <VirtualMachineLabel>\n" +\ +" <Name>__UNLABELED__</Name>\n" +\ +" <SimpleTypeEnforcementTypes>\n" +\ +" <Type>__UNLABELED__</Type>\n" +\ " </SimpleTypeEnforcementTypes>\n" +\ " <ChineseWallTypes>\n" +\ " <Type/>\n" +\ " </ChineseWallTypes>\n" +\ " </VirtualMachineLabel>\n" +\ " </SubjectLabels>\n" +\ +" <ObjectLabels>\n" +\ +" <ResourceLabel>\n" +\ +" <Name>__UNLABELED__</Name>\n" +\ +" <SimpleTypeEnforcementTypes>\n" +\ +" <Type>__UNLABELED__</Type>\n" +\ +" </SimpleTypeEnforcementTypes>\n" +\ +" </ResourceLabel>\n" +\ +" </ObjectLabels>\n" +\ " </SecurityLabelTemplate>\n" +\ "</SecurityPolicyDefinition>\n" @@ -231,13 +250,14 @@ class ACMPolicy(XSPolicy): """ Determine whether this is the default policy """ - default = ['SystemManagement'] + default = ['SystemManagement', ACM_LABEL_UNLABELED ] if self.policy_get_virtualmachinelabel_names() == default and \ self.policy_get_bootstrap_vmlabel() == default[0] and \ self.policy_get_stetypes_types() == default and \ self.policy_get_stes_of_vmlabel(default[0]) == default and \ - self.policy_get_resourcelabel_names() == [] and \ - self.policy_get_chwall_types() == default and \ + self.policy_get_stes_of_vmlabel(default[1]) == [default[1]] and \ + self.policy_get_resourcelabel_names() == [default[1]] and \ + self.policy_get_chwall_types() == [ default[0] ] and \ self.get_name() == "DEFAULT": return True return False diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/util/xsm/acm/acm.py --- a/tools/python/xen/util/xsm/acm/acm.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/util/xsm/acm/acm.py Tue Apr 15 11:09:46 2008 -0600 @@ -1146,11 +1146,13 @@ def __resources_compatible_with_vmlabel( for key, value in resources.items(): if key in [ 'vbd', 'tap' ]: for res in resources[key]: - try: + if not res in access_control: + label = [xsconstants.ACM_POLICY_ID, + xspol.get_name(), + ACM_LABEL_UNLABELED] + else: label = access_control[res] - if not collect_labels(reslabels, label, polname): - return False - except: + if not collect_labels(reslabels, label, polname): return False elif key in [ 'vif' ]: for xapi_label in value: @@ -1220,6 +1222,11 @@ def set_resource_label(resource, policyt return -xsconstants.XSERR_BAD_LABEL if tmp[2] != oreslabel: return -xsconstants.XSERR_BAD_LABEL + if resource.startswith('vlan:'): + for key, value in access_control.items(): + if value == tuple([policytype, policyref, reslabel]) and \ + key.startswith('vlan:'): + return -xsconstants.XSERR_BAD_LABEL if reslabel != "": new_entry = { resource : tuple([policytype, policyref, reslabel])} access_control.update(new_entry) @@ -1402,6 +1409,8 @@ def change_acm_policy(bin_pol, del_array dominfos = XendDomain.instance().list('all') log.info("----------------------------------------------") + + label_changes = [] # relabel resources access_control = {} @@ -1433,7 +1442,7 @@ def change_acm_policy(bin_pol, del_array elif label not in polnew_reslabels: # label been removed policytype = xsconstants.INVALID_POLICY_PREFIX + policytype - run_resource_label_change_script(key, "", "remove") + label_changes.append(key) polname = policy else: # no change to label @@ -1501,6 +1510,8 @@ def change_acm_policy(bin_pol, del_array rc, errors = hv_chg_policy(bin_pol, del_array, chg_array) if rc == 0: + for key in label_changes: + run_resource_label_change_script(key, "", "remove") # Write the relabeled resources back into the file dictio.dict_write(access_control, "resources", res_label_filename) # Properly update all VMs to their new labels diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/xend/XendConstants.py --- a/tools/python/xen/xend/XendConstants.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/xend/XendConstants.py Tue Apr 15 11:09:46 2008 -0600 @@ -96,6 +96,7 @@ MINIMUM_RESTART_TIME = 20 MINIMUM_RESTART_TIME = 20 RESTART_IN_PROGRESS = 'xend/restart_in_progress' +DUMPCORE_IN_PROGRESS = 'xend/dumpcore_in_progress' LAST_SHUTDOWN_REASON = 'xend/last_shutdown_reason' TRIGGER_NMI = 0 diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/xend/XendDomainInfo.py Tue Apr 15 11:09:46 2008 -0600 @@ -986,6 +986,13 @@ class XendDomainInfo: self.info['name_label'], str(self.domid), target) MiB = 1024 * 1024 + + if self.domid == 0: + dom0_min_mem = xoptions.get_dom0_min_mem() + memory_cur = self.get_memory_dynamic_max() / MiB + if target < memory_cur and dom0_min_mem > target: + raise XendError("memory_dynamic_max too small") + self._safe_set_memory('memory_dynamic_min', target * MiB) self._safe_set_memory('memory_dynamic_max', target * MiB) @@ -1792,10 +1799,13 @@ class XendDomainInfo: raise XendError("Cannot dump core in a directory: %s" % corefile) + self._writeVm(DUMPCORE_IN_PROGRESS, 'True') xc.domain_dumpcore(self.domid, corefile) + self._removeVm(DUMPCORE_IN_PROGRESS) except RuntimeError, ex: corefile_incomp = corefile+'-incomplete' os.rename(corefile, corefile_incomp) + self._removeVm(DUMPCORE_IN_PROGRESS) log.exception("XendDomainInfo.dumpCore failed: id = %s name = %s", self.domid, self.info['name_label']) raise XendError("Failed to dump core: %s" % str(ex)) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/xend/XendOptions.py --- a/tools/python/xen/xend/XendOptions.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/xend/XendOptions.py Tue Apr 15 11:09:46 2008 -0600 @@ -278,6 +278,13 @@ class XendOptions: def get_dom0_min_mem(self): return self.get_config_int('dom0-min-mem', self.dom0_min_mem_default) + + def get_enable_dom0_ballooning(self): + enable_dom0_ballooning_default = 'yes' + if self.get_dom0_min_mem() == 0: + enable_dom0_ballooning_default = 'no' + return self.get_config_bool('enable-dom0-ballooning', + enable_dom0_ballooning_default) def get_dom0_vcpus(self): return self.get_config_int('dom0-cpus', self.dom0_vcpus_default) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/xend/balloon.py --- a/tools/python/xen/xend/balloon.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/xend/balloon.py Tue Apr 15 11:09:46 2008 -0600 @@ -81,8 +81,8 @@ def free(need_mem): # needs to balloon. No matter where we expect the free memory to come # from, we need to wait for it to become available. # - # We are not allowed to balloon below dom0_min_mem, or if dom0_min_mem - # is 0, we cannot balloon at all. Memory can still become available + # We are not allowed to balloon below dom0_min_mem, or if dom0_ballooning + # is False, we cannot balloon at all. Memory can still become available # through a rebooting domain, however. # # Eventually, we time out (presumably because there really isn't enough @@ -100,6 +100,7 @@ def free(need_mem): try: dom0_min_mem = xoptions.get_dom0_min_mem() * 1024 + dom0_ballooning = xoptions.get_enable_dom0_ballooning() dom0_alloc = get_dom0_current_alloc() retries = 0 @@ -115,7 +116,7 @@ def free(need_mem): free_mem = physinfo['free_memory'] scrub_mem = physinfo['scrub_memory'] total_mem = physinfo['total_memory'] - if dom0_min_mem > 0: + if dom0_ballooning: max_free_mem = total_mem - dom0_min_mem else: max_free_mem = total_mem - dom0_alloc @@ -137,7 +138,7 @@ def free(need_mem): log.debug("Balloon: %d KiB free; %d to scrub; need %d; retries: %d.", free_mem, scrub_mem, need_mem, rlimit) - if dom0_min_mem > 0: + if dom0_ballooning: dom0_alloc = get_dom0_current_alloc() new_alloc = dom0_alloc - (need_mem - free_mem - scrub_mem) @@ -163,10 +164,10 @@ def free(need_mem): last_free = free_mem + scrub_mem # Not enough memory; diagnose the problem. - if dom0_min_mem == 0: - raise VmError(('Not enough free memory and dom0_min_mem is 0, so ' - 'I cannot release any more. I need %d KiB but ' - 'only have %d.') % + if not dom0_ballooning: + raise VmError(('Not enough free memory and enable-dom0-ballooning ' + 'is False, so I cannot release any more. ' + 'I need %d KiB but only have %d.') % (need_mem, free_mem)) elif new_alloc < dom0_min_mem: raise VmError( diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/xend/image.py Tue Apr 15 11:09:46 2008 -0600 @@ -99,7 +99,9 @@ class ImageHandler: self.vncconsole = vmConfig['platform'].get('vncconsole') self.dmargs = self.parseDeviceModelArgs(vmConfig) self.pid = None - + rtc_timeoffset = vmConfig['platform'].get('rtc_timeoffset') + if rtc_timeoffset is not None: + xc.domain_set_time_offset(self.vm.getDomid(), int(rtc_timeoffset)) def cleanupBootloading(self): @@ -419,9 +421,6 @@ class LinuxImageHandler(ImageHandler): def configure(self, vmConfig): ImageHandler.configure(self, vmConfig) - rtc_timeoffset = vmConfig['platform'].get('rtc_timeoffset') - if rtc_timeoffset is not None: - xc.domain_set_time_offset(self.vm.getDomid(), int(rtc_timeoffset)) def buildDomain(self): store_evtchn = self.vm.getStorePort() diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/xm/main.py Tue Apr 15 11:09:46 2008 -0600 @@ -1294,13 +1294,13 @@ def xm_dump_core(args): try: print "Dumping core of domain: %s ..." % str(dom) server.xend.domain.dump(dom, filename, live, crash) + + if crash: + print "Destroying domain: %s ..." % str(dom) + server.xend.domain.destroy(dom) finally: - if not live and ds == DOM_STATE_RUNNING: + if not live and not crash and ds == DOM_STATE_RUNNING: server.xend.domain.unpause(dom) - - if crash: - print "Destroying domain: %s ..." % str(dom) - server.xend.domain.destroy(dom) def xm_rename(args): arg_check(args, "rename", 2) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/python/xen/xm/shutdown.py --- a/tools/python/xen/xm/shutdown.py Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/python/xen/xm/shutdown.py Tue Apr 15 11:09:46 2008 -0600 @@ -144,7 +144,7 @@ def main_dom(opts, args): def main_dom(opts, args): if len(args) == 0: opts.err('No domain parameter given') if len(args) > 1: opts.err('No multiple domain parameters allowed') - dom = args[0] + dom = sxp.child_value(server.xend.domain(args[0]), 'name') if serverType == SERVER_XEN_API: dom = get_single_vm(dom) mode = shutdown_mode(opts) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/security/Makefile --- a/tools/security/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/security/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -32,7 +32,7 @@ ACM_SECGEN_CGIDIR = $(ACM_SECGEN_HTMLDIR ACM_SCHEMA = security_policy.xsd ACM_EXAMPLES = client_v1 test -ACM_DEF_POLICIES = DEFAULT-UL +ACM_DEF_POLICIES = ACM_POLICY_SUFFIX = security_policy.xml ifeq ($(ACM_SECURITY),y) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/security/policies/DEFAULT-UL-security_policy.xml --- a/tools/security/policies/DEFAULT-UL-security_policy.xml Mon Apr 14 14:04:58 2008 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -<?xml version="1.0" ?> -<SecurityPolicyDefinition xmlns="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com ../../security_policy.xsd"> - <PolicyHeader> - <PolicyName>DEFAULT-UL</PolicyName> - <Version>1.0</Version> - </PolicyHeader> - <SimpleTypeEnforcement> - <SimpleTypeEnforcementTypes> - <Type>SystemManagement</Type> - <Type>__UNLABELED__</Type> - </SimpleTypeEnforcementTypes> - </SimpleTypeEnforcement> - <ChineseWall> - <ChineseWallTypes> - <Type>SystemManagement</Type> - </ChineseWallTypes> - </ChineseWall> - <SecurityLabelTemplate> - <SubjectLabels bootstrap="SystemManagement"> - <VirtualMachineLabel> - <Name>SystemManagement</Name> - <SimpleTypeEnforcementTypes> - <Type>SystemManagement</Type> - <Type>__UNLABELED__</Type> - </SimpleTypeEnforcementTypes> - <ChineseWallTypes> - <Type/> - </ChineseWallTypes> - </VirtualMachineLabel> - <VirtualMachineLabel> - <Name>__UNLABELED__</Name> - <SimpleTypeEnforcementTypes> - <Type>__UNLABELED__</Type> - </SimpleTypeEnforcementTypes> - <ChineseWallTypes> - <Type/> - </ChineseWallTypes> - </VirtualMachineLabel> - </SubjectLabels> - </SecurityLabelTemplate> -</SecurityPolicyDefinition> diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/tests/blowfish.mk --- a/tools/tests/blowfish.mk Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/tests/blowfish.mk Tue Apr 15 11:09:46 2008 -0600 @@ -5,11 +5,11 @@ include $(XEN_ROOT)/tools/Rules.mk include $(XEN_ROOT)/tools/Rules.mk # Disable PIE/SSP if GCC supports them. They can break us. -CFLAGS += $(call cc-option,$(CC),-nopie,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) +CFLAGS += $(call cc-option,$(CC),-nopie,) +CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) +CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) -CFLAGS += -fno-builtin -O2 -msoft-float +CFLAGS += -fno-builtin -msoft-float .PHONY: all all: blowfish.bin diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/xcutils/Makefile --- a/tools/xcutils/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/xcutils/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -18,7 +18,7 @@ CFLAGS += -Wp,-MD,.$(@F).d CFLAGS += -Wp,-MD,.$(@F).d PROG_DEP = .*.d -PROGRAMS = xc_restore xc_save readnotes +PROGRAMS = xc_restore xc_save readnotes lsevtchn LDLIBS = $(LDFLAGS_libxenctrl) $(LDFLAGS_libxenguest) $(LDFLAGS_libxenstore) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/xcutils/lsevtchn.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/xcutils/lsevtchn.c Tue Apr 15 11:09:46 2008 -0600 @@ -0,0 +1,59 @@ +#include <err.h> +#include <stdlib.h> +#include <stdint.h> +#include <string.h> +#include <stdio.h> + +#include <xs.h> +#include <xenctrl.h> +#include <xenguest.h> + +int +main(int argc, char **argv) +{ + int xc_fd; + int domid = 0, port = 0, status; + const char *msg; + + if ( argc > 1 ) + domid = strtol(argv[1], NULL, 10); + + xc_fd = xc_interface_open(); + if ( xc_fd < 0 ) + errx(1, "failed to open control interface"); + + while ( (status = xc_evtchn_status(xc_fd, domid, port)) >= 0 ) + { + switch ( status ) + { + case EVTCHNSTAT_closed: + msg = "Channel is not in use."; + break; + case EVTCHNSTAT_unbound: + msg = "Channel is waiting interdom connection."; + break; + case EVTCHNSTAT_interdomain: + msg = "Channel is connected to remote domain."; + break; + case EVTCHNSTAT_pirq: + msg = "Channel is bound to a phys IRQ line."; + break; + case EVTCHNSTAT_virq: + msg = "Channel is bound to a virtual IRQ line."; + break; + case EVTCHNSTAT_ipi: + msg = "Channel is bound to a virtual IPI line."; + break; + default: + msg = "Unknown."; + break; + + } + printf("%03d: %d: %s\n", port, status, msg); + port++; + } + + xc_interface_close(xc_fd); + + return 0; +} diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/xenstore/Makefile --- a/tools/xenstore/Makefile Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/xenstore/Makefile Tue Apr 15 11:09:46 2008 -0600 @@ -13,8 +13,7 @@ DEP = .*.d DEP = .*.d CLIENTS := xenstore-exists xenstore-list xenstore-read xenstore-rm xenstore-chmod -CLIENTS += xenstore-write -CLIENTS_OBJS := $(patsubst xenstore-%,xenstore_%.o,$(CLIENTS)) +CLIENTS += xenstore-write xenstore-ls XENSTORED_OBJS = xenstored_core.o xenstored_watch.o xenstored_domain.o xenstored_transaction.o xs_lib.o talloc.o utils.o tdb.o hashtable.o @@ -24,8 +23,18 @@ XENSTORED_OBJS_$(CONFIG_NetBSD) = xensto XENSTORED_OBJS += $(XENSTORED_OBJS_y) +ifneq ($(XENSTORE_STATIC_CLIENTS),y) +LIBXENSTORE := libxenstore.so +else +LIBXENSTORE := libxenstore.a +xenstore xenstore-control: CFLAGS += -static +endif + .PHONY: all -all: libxenstore.so libxenstore.a xenstored $(CLIENTS) xs_tdb_dump xenstore-control xenstore-ls +all: libxenstore.so libxenstore.a xenstored clients xs_tdb_dump + +.PHONY: clients +clients: xenstore $(CLIENTS) xenstore-control ifeq ($(CONFIG_SunOS),y) xenstored_probes.h: xenstored_probes.d @@ -42,16 +51,13 @@ xenstored: $(XENSTORED_OBJS) xenstored: $(XENSTORED_OBJS) $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDFLAGS_libxenctrl) $(SOCKET_LIBS) -o $@ -$(CLIENTS): xenstore-%: xenstore_%.o libxenstore.so +$(CLIENTS): xenstore + ln -f xenstore $@ + +xenstore: xenstore_client.o $(LIBXENSTORE) $(CC) $(CFLAGS) $(LDFLAGS) $< -L. -lxenstore $(SOCKET_LIBS) -o $@ -$(CLIENTS_OBJS): xenstore_%.o: xenstore_client.c - $(COMPILE.c) -DCLIENT_$(*F) -o $@ $< - -xenstore-control: xenstore_control.o libxenstore.so - $(CC) $(CFLAGS) $(LDFLAGS) $< -L. -lxenstore $(SOCKET_LIBS) -o $@ - -xenstore-ls: xsls.o libxenstore.so +xenstore-control: xenstore_control.o $(LIBXENSTORE) $(CC) $(CFLAGS) $(LDFLAGS) $< -L. -lxenstore $(SOCKET_LIBS) -o $@ xs_tdb_dump: xs_tdb_dump.o utils.o tdb.o talloc.o @@ -61,6 +67,8 @@ libxenstore.so: libxenstore.so.$(MAJOR) ln -sf $< $@ libxenstore.so.$(MAJOR): libxenstore.so.$(MAJOR).$(MINOR) ln -sf $< $@ + +xs.opic: CFLAGS += -DUSE_PTHREAD libxenstore.so.$(MAJOR).$(MINOR): xs.opic xs_lib.opic $(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenstore.so.$(MAJOR) $(SHLIB_CFLAGS) -o $@ $^ $(SOCKET_LIBS) -lpthread @@ -72,8 +80,8 @@ clean: clean: rm -f *.a *.o *.opic *.so* xenstored_probes.h rm -f xenstored xs_random xs_stress xs_crashme - rm -f xs_tdb_dump xenstore-control xenstore-ls - rm -f $(CLIENTS) + rm -f xs_tdb_dump xenstore-control + rm -f xenstore $(CLIENTS) $(RM) $(DEP) .PHONY: TAGS @@ -92,9 +100,11 @@ install: all $(INSTALL_DIR) $(DESTDIR)$(SBINDIR) $(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR) $(INSTALL_PROG) xenstored $(DESTDIR)$(SBINDIR) - $(INSTALL_PROG) $(CLIENTS) $(DESTDIR)$(BINDIR) $(INSTALL_PROG) xenstore-control $(DESTDIR)$(BINDIR) - $(INSTALL_PROG) xenstore-ls $(DESTDIR)$(BINDIR) + $(INSTALL_PROG) xenstore $(DESTDIR)/usr/bin + set -e ; for c in $(CLIENTS) ; do \ + ln -f $(DESTDIR)/usr/bin/xenstore $(DESTDIR)/usr/bin/$${c} ; \ + done $(INSTALL_DIR) $(DESTDIR)$(LIBDIR) $(INSTALL_PROG) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR) ln -sf libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR)/libxenstore.so.$(MAJOR) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/xenstore/xenstore_client.c --- a/tools/xenstore/xenstore_client.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/xenstore/xenstore_client.c Tue Apr 15 11:09:46 2008 -0600 @@ -16,12 +16,31 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <termios.h> +#include <unistd.h> #include <xs.h> + +#include <sys/ioctl.h> + +#define PATH_SEP '/' +#define MAX_PATH_LEN 256 + +#define MAX_PERMS 16 + +enum mode { + MODE_unknown, + MODE_chmod, + MODE_exists, + MODE_list, + MODE_ls, + MODE_read, + MODE_rm, + MODE_write, +}; static char *output_buf = NULL; static int output_pos = 0; -#if defined(CLIENT_read) || defined(CLIENT_list) static int output_size = 0; static void @@ -47,26 +66,39 @@ output(const char *fmt, ...) { va_end(ap); output_pos += len; } -#endif static void -usage(const char *progname) -{ -#if defined(CLIENT_read) - errx(1, "Usage: %s [-h] [-p] [-s] key [...]", progname); -#elif defined(CLIENT_write) - errx(1, "Usage: %s [-h] [-s] key value [...]", progname); -#elif defined(CLIENT_rm) - errx(1, "Usage: %s [-h] [-s] [-t] key [...]", progname); -#elif defined(CLIENT_exists) || defined(CLIENT_list) - errx(1, "Usage: %s [-h] [-s] key [...]", progname); -#elif defined(CLIENT_chmod) - errx(1, "Usage: %s [-h] [-s] key <mode [modes...]>", progname); -#endif -} - - -#if defined(CLIENT_rm) +usage(enum mode mode, int incl_mode, const char *progname) +{ + const char *mstr = NULL; + + switch (mode) { + case MODE_unknown: + errx(1, "Usage: %s <mode> [-h] [...]", progname); + case MODE_read: + mstr = incl_mode ? "read " : ""; + errx(1, "Usage: %s %s[-h] [-p] [-s] key [...]", progname, mstr); + case MODE_write: + mstr = incl_mode ? "write " : ""; + errx(1, "Usage: %s %s[-h] [-s] key value [...]", progname, mstr); + case MODE_rm: + mstr = incl_mode ? "rm " : ""; + errx(1, "Usage: %s %s[-h] [-s] [-t] key [...]", progname, mstr); + case MODE_exists: + mstr = incl_mode ? "exists " : ""; + case MODE_list: + mstr = mstr ? : incl_mode ? "list " : ""; + errx(1, "Usage: %s %s[-h] [-s] key [...]", progname, mstr); + case MODE_ls: + mstr = mstr ? : incl_mode ? "ls " : ""; + errx(1, "Usage: %s %s[-h] [-s] [path]", progname, mstr); + case MODE_chmod: + mstr = incl_mode ? "chmod " : ""; + errx(1, "Usage: %s %s[-h] [-s] key <mode [modes...]>", progname, mstr); + } +} + + static int do_rm(char *path, struct xs_handle *xsh, xs_transaction_t xth) { @@ -78,11 +110,111 @@ do_rm(char *path, struct xs_handle *xsh, return 1; } } -#endif - -#if defined(CLIENT_chmod) -#define PATH_SEP '/' -#define MAX_PATH_LEN 256 + +#define STRING_MAX XENSTORE_ABS_PATH_MAX+1024 +static int max_width = 80; +static int desired_width = 60; +static int show_whole_path = 0; + +#define TAG " = \"...\"" +#define TAG_LEN strlen(TAG) + +#define MIN(a, b) (((a) < (b))? (a) : (b)) + +void do_ls(struct xs_handle *h, char *path, int cur_depth, int show_perms) +{ + static struct expanding_buffer ebuf; + char **e; + char newpath[STRING_MAX], *val; + int newpath_len; + int i; + unsigned int num, len; + + e = xs_directory(h, XBT_NULL, path, &num); + if (e == NULL) + err(1, "xs_directory (%s)", path); + + for (i = 0; i<num; i++) { + char buf[MAX_STRLEN(unsigned int)+1]; + struct xs_permissions *perms; + unsigned int nperms; + int linewid; + + /* Compose fullpath */ + newpath_len = snprintf(newpath, sizeof(newpath), "%s%s%s", path, + path[strlen(path)-1] == '/' ? "" : "/", + e[i]); + + /* Print indent and path basename */ + linewid = 0; + if (show_whole_path) { + fputs(newpath, stdout); + } else { + for (; linewid<cur_depth; linewid++) { + putchar(' '); + } + linewid += printf("%.*s", + (int) (max_width - TAG_LEN - linewid), e[i]); + } + + /* Fetch value */ + if ( newpath_len < sizeof(newpath) ) { + val = xs_read(h, XBT_NULL, newpath, &len); + } + else { + /* Path was truncated and thus invalid */ + val = NULL; + len = 0; + } + + /* Print value */ + if (val == NULL) { + printf(":\n"); + } + else { + if (max_width < (linewid + len + TAG_LEN)) { + printf(" = \"%.*s\\...\"", + (int)(max_width - TAG_LEN - linewid), + sanitise_value(&ebuf, val, len)); + } + else { + linewid += printf(" = \"%s\"", + sanitise_value(&ebuf, val, len)); + if (show_perms) { + putchar(' '); + for (linewid++; + linewid < MIN(desired_width, max_width); + linewid++) + putchar((linewid & 1)? '.' : ' '); + } + } + } + free(val); + + if (show_perms) { + perms = xs_get_permissions(h, XBT_NULL, newpath, &nperms); + if (perms == NULL) { + warn("\ncould not access permissions for %s", e[i]); + } + else { + int i; + fputs(" (", stdout); + for (i = 0; i < nperms; i++) { + if (i) + putchar(','); + xs_perm_to_string(perms+i, buf, sizeof(buf)); + fputs(buf, stdout); + } + putchar(')'); + } + } + + putchar('\n'); + + do_ls(h, newpath, cur_depth+1, show_perms); + } + free(e); +} static void do_chmod(char *path, struct xs_permissions *perms, int nperms, int upto, @@ -130,145 +262,197 @@ do_chmod(char *path, struct xs_permissio } } } -#endif static int -perform(int optind, int argc, char **argv, struct xs_handle *xsh, +perform(enum mode mode, int optind, int argc, char **argv, struct xs_handle *xsh, xs_transaction_t xth, int prefix, int tidy, int upto, int recurse) { + switch (mode) { + case MODE_ls: + if (optind == argc) + { + optind=0; + argc=1; + argv[0] = "/"; + } + break; + default: + break; + } + while (optind < argc) { -#if defined(CLIENT_read) - static struct expanding_buffer ebuf; - unsigned len; - char *val = xs_read(xsh, xth, argv[optind], &len); - if (val == NULL) { - warnx("couldn't read path %s", argv[optind]); - return 1; - } - if (prefix) - output("%s: ", argv[optind]); - output("%s\n", sanitise_value(&ebuf, val, len)); - free(val); - optind++; -#elif defined(CLIENT_write) - static struct expanding_buffer ebuf; - char *val_spec = argv[optind + 1]; - unsigned len; - expanding_buffer_ensure(&ebuf, strlen(val_spec)+1); - unsanitise_value(ebuf.buf, &len, val_spec); - if (!xs_write(xsh, xth, argv[optind], ebuf.buf, len)) { - warnx("could not write path %s", argv[optind]); - return 1; - } - optind += 2; -#elif defined(CLIENT_rm) - /* Remove the specified path. If the tidy flag is set, then also - remove any containing directories that are both empty and have no - value attached, and repeat, recursing all the way up to the root if - necessary. - */ - - char *slash, *path = argv[optind]; - - if (tidy) { - /* Copy path, because we can't modify argv because we will need it - again if xs_transaction_end gives us EAGAIN. */ - char *p = malloc(strlen(path) + 1); - strcpy(p, path); - path = p; - - again: - if (do_rm(path, xsh, xth)) { + switch (mode) { + case MODE_unknown: + /* CANNOT BE REACHED */ + errx(1, "invalid mode %d", mode); + case MODE_read: { + static struct expanding_buffer ebuf; + unsigned len; + char *val = xs_read(xsh, xth, argv[optind], &len); + if (val == NULL) { + warnx("couldn't read path %s", argv[optind]); return 1; } - - slash = strrchr(p, '/'); - if (slash) { - char *val; - unsigned len; - *slash = '\0'; - val = xs_read(xsh, xth, p, &len); - if (val && len == 0) { - unsigned int num; - char ** list = xs_directory(xsh, xth, p, &num); - - if (list && num == 0) { - goto again; + if (prefix) + output("%s: ", argv[optind]); + output("%s\n", sanitise_value(&ebuf, val, len)); + free(val); + optind++; + break; + } + case MODE_write: { + static struct expanding_buffer ebuf; + char *val_spec = argv[optind + 1]; + unsigned len; + expanding_buffer_ensure(&ebuf, strlen(val_spec)+1); + unsanitise_value(ebuf.buf, &len, val_spec); + if (!xs_write(xsh, xth, argv[optind], ebuf.buf, len)) { + warnx("could not write path %s", argv[optind]); + return 1; + } + optind += 2; + } break; + case MODE_rm: { + /* Remove the specified path. If the tidy flag is set, then also + remove any containing directories that are both empty and have no + value attached, and repeat, recursing all the way up to the root if + necessary. + */ + + char *slash, *path = argv[optind]; + + if (tidy) { + /* Copy path, because we can't modify argv because we will need it + again if xs_transaction_end gives us EAGAIN. */ + char *p = malloc(strlen(path) + 1); + strcpy(p, path); + path = p; + + again: + if (do_rm(path, xsh, xth)) { + return 1; + } + + slash = strrchr(p, '/'); + if (slash) { + char *val; + unsigned len; + *slash = '\0'; + val = xs_read(xsh, xth, p, &len); + if (val && len == 0) { + unsigned int num; + char ** list = xs_directory(xsh, xth, p, &num); + + if (list && num == 0) { + goto again; + } } } - } - - free(path); - } - else { - if (do_rm(path, xsh, xth)) { + + free(path); + } + else { + if (do_rm(path, xsh, xth)) { + return 1; + } + } + + optind++; + break; + } + case MODE_exists: { + char *val = xs_read(xsh, xth, argv[optind], NULL); + if (val == NULL) { return 1; } - } - - optind++; -#elif defined(CLIENT_exists) - char *val = xs_read(xsh, xth, argv[optind], NULL); - if (val == NULL) { - return 1; - } - free(val); - optind++; -#elif defined(CLIENT_list) - unsigned int i, num; - char **list = xs_directory(xsh, xth, argv[optind], &num); - if (list == NULL) { - warnx("could not list path %s", argv[optind]); - return 1; - } - for (i = 0; i < num; i++) { - if (prefix) - output("%s/", argv[optind]); - output("%s\n", list[i]); - } - free(list); - optind++; -#elif defined(CLIENT_chmod) -#define MAX_PERMS 16 - struct xs_permissions perms[MAX_PERMS]; - int nperms = 0; - /* save path pointer: */ - char *path = argv[optind++]; - for (; argv[optind]; optind++, nperms++) - { - if (MAX_PERMS <= nperms) - errx(1, "Too many permissions specified. " - "Maximum per invocation is %d.", MAX_PERMS); - - perms[nperms].id = atoi(argv[optind]+1); - - switch (argv[optind][0]) - { - case 'n': - perms[nperms].perms = XS_PERM_NONE; - break; - case 'r': - perms[nperms].perms = XS_PERM_READ; - break; - case 'w': - perms[nperms].perms = XS_PERM_WRITE; - break; - case 'b': - perms[nperms].perms = XS_PERM_READ | XS_PERM_WRITE; - break; - default: - errx(1, "Invalid permission specification: '%c'", - argv[optind][0]); - } - } - - do_chmod(path, perms, nperms, upto, recurse, xsh, xth); -#endif + free(val); + optind++; + break; + } + case MODE_list: { + unsigned int i, num; + char **list = xs_directory(xsh, xth, argv[optind], &num); + if (list == NULL) { + warnx("could not list path %s", argv[optind]); + return 1; + } + for (i = 0; i < num; i++) { + if (prefix) + output("%s/", argv[optind]); + output("%s\n", list[i]); + } + free(list); + optind++; + break; + } + case MODE_ls: { + do_ls(xsh, argv[optind], 0, prefix); + optind++; + break; + } + case MODE_chmod: { + struct xs_permissions perms[MAX_PERMS]; + int nperms = 0; + /* save path pointer: */ + char *path = argv[optind++]; + for (; argv[optind]; optind++, nperms++) + { + if (MAX_PERMS <= nperms) + errx(1, "Too many permissions specified. " + "Maximum per invocation is %d.", MAX_PERMS); + + perms[nperms].id = atoi(argv[optind]+1); + + switch (argv[optind][0]) + { + case 'n': + perms[nperms].perms = XS_PERM_NONE; + break; + case 'r': + perms[nperms].perms = XS_PERM_READ; + break; + case 'w': + perms[nperms].perms = XS_PERM_WRITE; + break; + case 'b': + perms[nperms].perms = XS_PERM_READ | XS_PERM_WRITE; + break; + default: + errx(1, "Invalid permission specification: '%c'", + argv[optind][0]); + } + } + + do_chmod(path, perms, nperms, upto, recurse, xsh, xth); + break; + } + } } return 0; } +static enum mode lookup_mode(const char *m) +{ + if (strcmp(m, "read") == 0) + return MODE_read; + else if (strcmp(m, "chmod") == 0) + return MODE_chmod; + else if (strcmp(m, "exists") == 0) + return MODE_exists; + else if (strcmp(m, "list") == 0) + return MODE_list; + else if (strcmp(m, "ls") == 0) + return MODE_ls; + else if (strcmp(m, "rm") == 0) + return MODE_rm; + else if (strcmp(m, "write") == 0) + return MODE_write; + else if (strcmp(m, "read") == 0) + return MODE_read; + else + errx(1, "unknown mode %s\n", m); +} int main(int argc, char **argv) @@ -281,92 +465,139 @@ main(int argc, char **argv) int upto = 0; int recurse = 0; int transaction; + struct winsize ws; + enum mode mode; + + const char *_command = strrchr(argv[0], '/'); + const char *command = _command ? &_command[1] : argv[0]; + int switch_argv = -1; /* which element of argv did we switch on */ + + if (strncmp(command, "xenstore-", strlen("xenstore-")) == 0) + { + switch_argv = 0; + command = command + strlen("xenstore-"); + } + else if (argc < 2) + usage(MODE_unknown, 0, argv[0]); + else + { + command = argv[1]; + switch_argv = 1; + } + + mode = lookup_mode(command); while (1) { int c, index = 0; static struct option long_options[] = { - {"help", 0, 0, 'h'}, - {"socket", 0, 0, 's'}, -#if defined(CLIENT_read) || defined(CLIENT_list) - {"prefix", 0, 0, 'p'}, -#elif defined(CLIENT_rm) - {"tidy", 0, 0, 't'}, -#elif defined(CLIENT_chmod) - {"upto", 0, 0, 'u'}, - {"recurse", 0, 0, 'r'}, -#endif + {"help", 0, 0, 'h'}, + {"socket", 0, 0, 's'}, + {"prefix", 0, 0, 'p'}, /* MODE_read || MODE_list */ + {"tidy", 0, 0, 't'}, /* MODE_rm */ + {"upto", 0, 0, 'u'}, /* MODE_chmod */ + {"recurse", 0, 0, 'r'}, /* MODE_chmod */ {0, 0, 0, 0} }; - c = getopt_long(argc, argv, "hs" -#if defined(CLIENT_read) || defined(CLIENT_list) - "p" -#elif defined(CLIENT_rm) - "t" -#elif defined(CLIENT_chmod) - "ur" -#endif - , long_options, &index); + c = getopt_long(argc - switch_argv, argv + switch_argv, "fhsptur", + long_options, &index); if (c == -1) break; switch (c) { case 'h': - usage(argv[0]); + usage(mode, switch_argv, argv[0]); /* NOTREACHED */ + case 'f': + if ( mode == MODE_read || mode == MODE_list || mode == MODE_ls ) { + max_width = INT_MAX/2; + desired_width = 0; + show_whole_path = 1; + } else { + usage(mode, switch_argv, argv[0]); + } + break; case 's': socket = 1; break; -#if defined(CLIENT_read) || defined(CLIENT_list) case 'p': - prefix = 1; + if ( mode == MODE_read || mode == MODE_list || mode == MODE_ls ) + prefix = 1; + else + usage(mode, switch_argv, argv[0]); break; -#elif defined(CLIENT_rm) case 't': - tidy = 1; + if ( mode == MODE_rm ) + tidy = 1; + else + usage(mode, switch_argv, argv[0]); break; -#elif defined(CLIENT_chmod) case 'u': - upto = 1; + if ( mode == MODE_chmod ) + upto = 1; + else + usage(mode, switch_argv, argv[0]); break; case 'r': - recurse = 1; + if ( mode == MODE_chmod ) + recurse = 1; + else + usage(mode, switch_argv, argv[0]); break; -#endif - } - } - - if (optind == argc) { - usage(argv[0]); - /* NOTREACHED */ - } -#if defined(CLIENT_write) - if ((argc - optind) % 2 == 1) { - usage(argv[0]); - /* NOTREACHED */ - } -#endif - -#if defined(CLIENT_read) - transaction = (argc - optind) > 1; -#elif defined(CLIENT_write) - transaction = (argc - optind) > 2; -#else - transaction = 1; -#endif + } + } + + switch (mode) { + case MODE_ls: + break; + case MODE_write: + if ((argc - switch_argv - optind) % 2 == 1) { + usage(mode, switch_argv, argv[0]); + /* NOTREACHED */ + } + /* DROP-THRU */ + default: + if (optind == argc - switch_argv) { + usage(mode, switch_argv, argv[0]); + /* NOTREACHED */ + } + } + + switch (mode) { + case MODE_read: + transaction = (argc - switch_argv - optind) > 1; + break; + case MODE_write: + transaction = (argc - switch_argv - optind) > 2; + break; + case MODE_ls: + transaction = 0; + break; + default: + transaction = 1; + break; + } + + if ( mode == MODE_ls ) + { + memset(&ws, 0, sizeof(ws)); + ret = ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws); + if (!ret) + max_width = ws.ws_col - 2; + } xsh = socket ? xs_daemon_open() : xs_domain_open(); if (xsh == NULL) err(1, socket ? "xs_daemon_open" : "xs_domain_open"); - again: +again: if (transaction) { xth = xs_transaction_start(xsh); if (xth == XBT_NULL) errx(1, "couldn't start transaction"); } - ret = perform(optind, argc, argv, xsh, xth, prefix, tidy, upto, recurse); + ret = perform(mode, optind, argc - switch_argv, argv + switch_argv, xsh, xth, prefix, tidy, upto, recurse); if (transaction && !xs_transaction_end(xsh, xth, ret)) { if (ret == 0 && errno == EAGAIN) { diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/xenstore/xenstored_core.c --- a/tools/xenstore/xenstored_core.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/xenstore/xenstored_core.c Tue Apr 15 11:09:46 2008 -0600 @@ -722,7 +722,7 @@ char *canonicalize(struct connection *co { const char *prefix; - if (!node || strstarts(node, "/")) + if (!node || (node[0] == '/') || (node[0] == '@')) return (char *)node; prefix = get_implicit_path(conn); if (prefix) diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/xenstore/xenstored_solaris.c --- a/tools/xenstore/xenstored_solaris.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/xenstore/xenstored_solaris.c Tue Apr 15 11:09:46 2008 -0600 @@ -14,6 +14,7 @@ #include <fcntl.h> #include <unistd.h> #include <stdlib.h> +#include <stdarg.h> #include <sys/mman.h> #include <strings.h> #include <ucred.h> diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/xenstore/xenstored_watch.c --- a/tools/xenstore/xenstored_watch.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/xenstore/xenstored_watch.c Tue Apr 15 11:09:46 2008 -0600 @@ -183,7 +183,7 @@ void do_unwatch(struct connection *conn, return; } - node = strstarts(vec[0], "@") ? vec[0] : canonicalize(conn, vec[0]); + node = canonicalize(conn, vec[0]); list_for_each_entry(watch, &conn->watches, list) { if (streq(watch->node, node) && streq(watch->token, vec[1])) { list_del(&watch->list); diff -r c0f77a657547 -r 2b3d3aaf8be4 tools/xenstore/xs.c --- a/tools/xenstore/xs.c Mon Apr 14 14:04:58 2008 -0600 +++ b/tools/xenstore/xs.c Tue Apr 15 11:09:46 2008 -0600 @@ -32,7 +32,6 @@ #include <signal.h> #include <stdint.h> #include <errno.h> -#include <pthread.h> #include "xs.h" #include "list.h" #include "utils.h" @@ -42,6 +41,10 @@ struct xs_stored_msg { struct xsd_sockmsg hdr; char *body; }; + +#ifdef USE_PTHREAD + +#include <pthread.h> struct xs_handle { /* Communications channel to xenstore daemon. */ @@ -78,14 +81,37 @@ struct xs_handle { pthread_mutex_t request_mutex; }; +#define mutex_lock(m) pthread_mutex_lock(m) +#define mutex_unlock(m) pthread_mutex_unlock(m) +#define condvar_signal(c) pthread_cond_signal(c) +#define condvar_wait(c,m,hnd) pthread_cond_wait(c,m) + +static void *read_thread(void *arg); + +#else /* !defined(USE_PTHREAD) */ + +struct xs_handle { + int fd; + struct list_head reply_list; + struct list_head watch_list; + /* Clients can select() on this pipe to wait for a watch to fire. */ + int watch_pipe[2]; +}; + +#define mutex_lock(m) ((void)0) +#define mutex_unlock(m) ((void)0) +#define condvar_signal(c) ((void)0) +#define condvar_wait(c,m,hnd) read_message(hnd) + +#endif + static int read_message(struct xs_handle *h); -static void *read_thread(void *arg); int xs_fileno(struct xs_handle *h) { char c = 0; - pthread_mutex_lock(&h->watch_mutex); + mutex_lock(&h->watch_mutex); if ((h->watch_pipe[0] == -1) && (pipe(h->watch_pipe) != -1)) { /* Kick things off if the watch list is already non-empty. */ @@ -94,7 +120,7 @@ int xs_fileno(struct xs_handle *h) continue; } - pthread_mutex_unlock(&h->watch_mutex); + mutex_unlock(&h->watch_mutex); return h->watch_pipe[0]; } @@ -163,18 +189,21 @@ static struct xs_handle *get_handle(cons h->fd = fd; + INIT_LIST_HEAD(&h->reply_list); + INIT_LIST_HEAD(&h->watch_list); + /* Watch pipe is allocated on demand in xs_fileno(). */ h->watch_pipe[0] = h->watch_pipe[1] = -1; - INIT_LIST_HEAD(&h->watch_list); +#ifdef USE_PTHREAD pthread_mutex_init(&h->watch_mutex, NULL); pthread_cond_init(&h->watch_condvar, NULL); - INIT_LIST_HEAD(&h->reply_list); pthread_mutex_init(&h->reply_mutex, NULL); pthread_cond_init(&h->reply_condvar, NULL); pthread_mutex_init(&h->request_mutex, NULL); +#endif return h; } @@ -198,15 +227,17 @@ void xs_daemon_close(struct xs_handle *h { struct xs_stored_msg *msg, *tmsg; - pthread_mutex_lock(&h->request_mutex); - pthread_mutex_lock(&h->reply_mutex); - pthread_mutex_lock(&h->watch_mutex); - + mutex_lock(&h->request_mutex); + mutex_lock(&h->reply_mutex); + mutex_lock(&h->watch_mutex); + +#ifdef USE_PTHREAD if (h->read_thr_exists) { /* XXX FIXME: May leak an unpublished message buffer. */ pthread_cancel(h->read_thr); pthread_join(h->read_thr, NULL); } +#endif list_for_each_entry_safe(msg, tmsg, &h->reply_list, list) { free(msg->body); @@ -218,9 +249,9 @@ void xs_daemon_close(struct xs_handle *h free(msg); } - pthread_mutex_unlock(&h->request_mutex); - pthread_mutex_unlock(&h->reply_mutex); - pthread_mutex_unlock(&h->watch_mutex); + mutex_unlock(&h->request_mutex); + mutex_unlock(&h->reply_mutex); + mutex_unlock(&h->watch_mutex); if (h->watch_pipe[0] != -1) { close(h->watch_pipe[0]); @@ -277,17 +308,19 @@ static void *read_reply( struct xs_stored_msg *msg; char *body; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |