From 4090ac33f44bd24d73161032faa817eb03f2e41d Mon Sep 17 00:00:00 2001 From: Shruti Gupta Date: Tue, 20 Sep 2022 09:53:53 +0100 Subject: [PATCH] docs(spm): add design documentation Add documentation how to build EL3 SPMC, briefly describes all FF-A interfaces, SP boot flow, SP Manifest, Power Management, Boot Info Protocol, Runtime model and state transition and Interrupt Handling. Signed-off-by: Shruti Gupta Change-Id: I630df1d50a4621b344a09e462563eacc90109de4 --- docs/components/el3-spmc.rst | 597 ++++++++++++++++++++ docs/components/index.rst | 1 + docs/resources/diagrams/ff-a-lsp-at-el3.png | Bin 0 -> 39282 bytes docs/resources/diagrams/ff-a-spm-at-el3.png | Bin 0 -> 29978 bytes 4 files changed, 598 insertions(+) create mode 100644 docs/components/el3-spmc.rst create mode 100644 docs/resources/diagrams/ff-a-lsp-at-el3.png create mode 100644 docs/resources/diagrams/ff-a-spm-at-el3.png diff --git a/docs/components/el3-spmc.rst b/docs/components/el3-spmc.rst new file mode 100644 index 000000000..1a2d4273b --- /dev/null +++ b/docs/components/el3-spmc.rst @@ -0,0 +1,597 @@ +EL3 Secure Partition Manager +**************************** + +.. contents:: + +Foreword +======== + +This document describes the design of the EL3 SPMC based on the FF-A specification. +EL3 SPMC provides reference FF-A compliant implementation without S-EL2 virtualization support, +to help adopt and migrate to FF-A early. +EL3 SPMC implementation in TF-A: + +- Manages a single S-EL1 Secure Partition +- Provides a standard protocol for communication and memory sharing between FF-A endpoints. +- Provides support for EL3 Logical Partitions to support easy migration from EL3 to S-EL1. + +Sample reference stack +====================== + +The following diagram illustrates a possible configuration when the +FEAT_SEL2 architecture extension is not implemented, showing the SPMD +and SPMC at EL3, one S-EL1 secure partition, with an optional +Hypervisor: + +.. image:: ../resources/diagrams/ff-a-spm-at-el3.png + +TF-A build options +================== + +This section explains the TF-A build options involved in building +an FF-A based SPM where the SPMD and SPMC are located at EL3: + +- **SPD=spmd**: this option selects the SPMD component to relay the FF-A + protocol from NWd to SWd back and forth. It is not possible to + enable another Secure Payload Dispatcher when this option is chosen. +- **SPMC_AT_EL3**: this option adjusts the SPMC exception level to being + at EL3. +- **ARM_SPMC_MANIFEST_DTS**: this option specifies a manifest file + providing SP description. It is required when + ``SPMC_AT_EL3`` is enabled, the secure partitions are loaded + by BL2 on behalf of the SPMC. + +Notes: + +- BL32 option is re-purposed to specify the S-EL1 TEE or SP image. + BL32 option can be omitted if using TF-A Test Secure Payload as SP. +- BL33 option can specify the TFTF binary or a normal world loader + such as U-Boot or the UEFI framework payload. + +Sample TF-A build command line when the SPMC is located at EL3: + +.. code:: shell + + make \ + CROSS_COMPILE=aarch64-none-elf- \ + SPD=spmd \ + SPMD_SPM_AT_SEL2=0 \ + SPMC_AT_EL3=1 \ + BL32= (opt for TSP) \ + BL33= \ + PLAT=fvp \ + all fip + +FVP model invocation +==================== + +Sample FVP command line invocation: + +.. code:: shell + + /FVP_Base_RevC-2xAEMvA -C pctl.startup=0.0.0.0 \ + -C cluster0.NUM_CORES=4 -C cluster1.NUM_CORES=4 -C bp.secure_memory=1 \ + -C bp.secureflashloader.fname=trusted-firmware-a/build/fvp/debug/bl1.bin \ + -C bp.flashloader0.fname=trusted-firmware-a/build/fvp/debug/fip.bin \ + -C bp.pl011_uart0.out_file=fvp-uart0.log -C bp.pl011_uart1.out_file=fvp-uart1.log \ + -C bp.pl011_uart2.out_file=fvp-uart2.log -C bp.vis.disable_visualisation=1 + + +Platform Guide +============== + +- Platform Hooks See - `[4]`_ + + - plat_spmc_shmem_begin + - plat_spmc_shmem_reclaim + +SPMC provides platform hooks related to memory management interfaces. +These hooks can be used for platform specific implementations like +for managing access control, programming TZ Controller or MPUs. +These hooks are called by SPMC before the initial share request completes, +and after the final reclaim has been completed. + +- Datastore + + - plat_spmc_shmem_datastore_get + + EL3 SPMC uses datastore for tracking memory transaction descriptors. + On FVP platform datastore is allocated from TZC DRAM section. + Other platforms need to allocate a similar secure memory region + to be used as shared memory datastore. + + The accessor function is used during SPMC initialization to obtain + address and size of the datastore. + SPMC will also zero out the provided memory region. + +- Platform Defines See - `[5]`_ + + - SECURE_PARTITION_COUNT + Number of Secure Partitions supported: must be 1. + + - NS_PARTITION_COUNT + Number of NWd Partitions supported. + + - MAX_EL3_LP_DESCS_COUNT + Number of Logical Partitions supported. + +Logical Secure Partition (LSP) +============================== + +- The SPMC provides support for statically allocated EL3 Logical Secure Partitions + as per FF-A v1.1 specification. +- The DECLARE_LOGICAL_PARTITION macro can be used to add a LSP. +- For reference implementation See - `[2]`_ + +.. image:: ../resources/diagrams/ff-a-lsp-at-el3.png + +SPMC boot +========= + +The SPMD and SPMC are built into the BL31 image along with TF-A's runtime components. +BL2 loads the BL31 image as a part of (secure) boot process. + +The SPMC manifest is loaded by BL2 as the ``TOS_FW_CONFIG`` image `[9]`_. + +BL2 passes the SPMC manifest address to BL31 through a register. + +At boot time, the SPMD in BL31 runs from the primary core, initializes the core +contexts and launches the SPMC passing the following information through +registers: + +- X0 holds the SPMC manifest blob address. +- X4 holds the currently running core linear id. + +Parsing SP partition manifests +------------------------------ + +SPMC consumes the SP manifest, as defined in `[7]`_. +SP manifest fields align with Hafnium SP manifest for easy porting. + +.. code:: shell + + compatible = "arm,ffa-manifest-1.0"; + + ffa-version = <0x00010001>; /* 31:16 - Major, 15:0 - Minor */ + id = <0x8001>; + uuid = <0x6b43b460 0x74a24b78 0xade24502 0x40682886>; + messaging-method = <0x3>; /* Direct Messaging Only */ + exception-level = <0x2>; /* S-EL1 */ + execution-state = <0>; + execution-ctx-count = <8>; + gp-register-num = <0>; + power-management-messages = <0x7>; + + +Passing boot data to the SP +--------------------------- + +In `[1]`_ , the section "Boot information protocol" defines a method for passing +data to the SPs at boot time. It specifies the format for the boot information +descriptor and boot information header structures, which describe the data to be +exchanged between SPMC and SP. +The specification also defines the types of data that can be passed. +The aggregate of both the boot info structures and the data itself is designated +the boot information blob, and is passed to a Partition as a contiguous memory +region. + +Currently, the SPM implementation supports the FDT type which is used to pass the +partition's DTB manifest. + +The region for the boot information blob is statically allocated (4K) by SPMC. +BLOB contains Boot Info Header, followed by SP Manifest contents. + +The configuration of the boot protocol is done in the SP manifest. As defined by +the specification, the manifest field 'gp-register-num' configures the GP register +which shall be used to pass the address to the partitions boot information blob when +booting the partition. + +Supported interfaces +==================== + +The following interfaces are exposed to SPs only: + +- ``FFA_MSG_WAIT`` +- ``FFA_MEM_RETRIEVE_REQ`` +- ``FFA_MEM_RETRIEVE_RESP`` +- ``FFA_MEM_RELINQUISH`` +- ``FFA_SECONDARY_EP_REGISTER`` + +The following interfaces are exposed to both NS Client and SPs: + +- ``FFA_VERSION`` +- ``FFA_FEATURES`` +- ``FFA_RX_RELEASE`` +- ``FFA_RXTX_MAP`` +- ``FFA_RXTX_UNMAP`` +- ``FFA_PARTITION_INFO_GET`` +- ``FFA_ID_GET`` +- ``FFA_MSG_SEND_DIRECT_REQ`` +- ``FFA_MSG_SEND_DIRECT_RESP`` +- ``FFA_MEM_FRAG_TX`` +- ``FFA_SPM_ID_GET`` + +The following additional interfaces are forwarded from SPMD to support NS Client: + +- ``FFA_RUN`` +- ``FFA_MEM_LEND`` +- ``FFA_MEM_SHARE`` +- ``FFA_MEM_FRAG_RX`` +- ``FFA_MEM_RECLAIM`` + + +FFA_VERSION +----------- + +``FFA_VERSION`` requires a *requested_version* parameter from the caller. +SPMD forwards call to SPMC, the SPMC returns its own implemented version. +SPMC asserts SP and SPMC are at same FF-A Version. + +FFA_FEATURES +------------ + +FF-A features supported by the SPMC may be discovered by secure partitions at +boot (that is prior to NWd is booted) or run-time. + +The SPMC calling FFA_FEATURES at secure physical FF-A instance always get +FFA_SUCCESS from the SPMD. + +The request made by an Hypervisor or OS kernel is forwarded to the SPMC and +the response relayed back to the NWd. + + +FFA_RXTX_MAP +------------ + +FFA_RXTX_UNMAP +-------------- + +When invoked from a secure partition FFA_RXTX_MAP maps the provided send and +receive buffers described by their PAs to the EL3 translation regime +as secure buffers in the MMU descriptors. + +When invoked from the Hypervisor or OS kernel, the buffers are mapped into the +SPMC EL3 translation regime and marked as NS buffers in the MMU +descriptors. + +The FFA_RXTX_UNMAP unmaps the RX/TX pair from the translation regime of the +caller, either it being the Hypervisor or OS kernel, as well as a secure +partition. + +FFA_PARTITION_INFO_GET +---------------------- + +Partition info get call can originate: + +- from SP to SPMC +- from Hypervisor or OS kernel to SPMC. The request is relayed by the SPMD. + +The format (v1.0 or v1.1) of the populated data structure returned is based upon the +FFA version of the calling entity. + +EL3 SPMC also supports returning only the count of partitions deployed. + +All LSPs and SP are discoverable from FFA_PARTITION_INFO_GET call made by +either SP or NWd entities. + +FFA_ID_GET +---------- + +The FF-A ID space is split into a non-secure space and secure space: + +- FF-A ID with bit 15 clear relates to VMs. +- FF-A ID with bit 15 set related to SPs or LSPs. +- FF-A IDs 0, 0xffff, 0x8000 are assigned respectively to the Hypervisor + (or OS Kernel if Hyp is absent), SPMD and SPMC. + +This convention helps the SPM to determine the origin and destination worlds in +an FF-A ABI invocation. In particular the SPM shall filter unauthorized +transactions in its world switch routine. It must not be permitted for a VM to +use a secure FF-A ID as origin world by spoofing: + +- A VM-to-SP direct request/response shall set the origin world to be non-secure + (FF-A ID bit 15 clear) and destination world to be secure (FF-A ID bit 15 + set). +- Similarly, an SP-to-LSP direct request/response shall set the FF-A ID bit 15 + for both origin and destination IDs. + +An incoming direct message request arriving at SPMD from NWd is forwarded to +SPMC without a specific check. The SPMC is resumed through eret and "knows" the +message is coming from normal world in this specific code path. Thus the origin +endpoint ID must be checked by SPMC for being a normal world ID. + +An SP sending a direct message request must have bit 15 set in its origin +endpoint ID and this can be checked by the SPMC when the SP invokes the ABI. + +The SPMC shall reject the direct message if the claimed world in origin endpoint +ID is not consistent: + +- It is either forwarded by SPMD and thus origin endpoint ID must be a "normal + world ID", +- or initiated by an SP and thus origin endpoint ID must be a "secure world ID". + + +FFA_MSG_SEND_DIRECT_REQ +----------------------- + +FFA_MSG_SEND_DIRECT_RESP +------------------------ + +This is a mandatory interface for secure partitions participating in direct request +and responses with the following rules: + +- An SP can send a direct request to LSP. +- An LSP can send a direct response to SP. +- An SP cannot send a direct request to an Hypervisor or OS kernel. +- An Hypervisor or OS kernel can send a direct request to an SP or LSP. +- An SP and LSP can send a direct response to an Hypervisor or OS kernel. +- SPMD can send direct request to SPMC. + +FFA_SPM_ID_GET +-------------- + +Returns the FF-A ID allocated to an SPM component which can be one of SPMD +or SPMC. + +At initialization, the SPMC queries the SPMD for the SPMC ID, using the +FFA_ID_GET interface, and records it. The SPMC can also query the SPMD ID using +the FFA_SPM_ID_GET interface at the secure physical FF-A instance. + +Secure partitions call this interface at the virtual FF-A instance, to which +the SPMC returns the SPMC ID. + +The Hypervisor or OS kernel can issue the FFA_SPM_ID_GET call handled by the +SPMD, which returns the SPMC ID. + +FFA_ID_GET +---------- + +Returns the FF-A ID of the calling endpoint. + +FFA_MEM_SHARE +------------- + +FFA_MEM_LEND +------------ + +- If SP is borrower in the memory transaction, these calls are forwarded to SPMC. + SPMC performs Relayer responsibilities, caches the memory descriptors in the datastore, + and allocates FF-A memory handle. +- If format of descriptor was v1.0, SPMC converts the descriptor to v1.1 before caching. + In case of fragmented sharing, conversion of memory descriptors happens after last + fragment has been received. +- Multiple borrowers (including NWd endpoint) and fragmented memory sharing are supported. + +FFA_MEM_RETRIEVE_REQ +-------------------- + +FFA_MEM_RETRIEVE_RESP +--------------------- + +- Memory retrieve is supported only from SP. +- SPMC fetches the cached memory descriptor from the datastore, +- Performs Relayer responsiilities and sends FFA_MEM_RETRIEVE_RESP back to SP. +- If descriptor size is more than RX buffer size, SPMC will send the descriptor in fragments. +- SPMC will set NS Bit to 1 in memory descriptor response. + +FFA_MEM_FRAG_RX +--------------- + +FFA_MEM_FRAG_TX +--------------- + +FFA_MEM_FRAG_RX is to be used by: + +- SP if FFA_MEM_RETRIEVE_RESP returned descriptor with fragment length less than total length. +- or by SPMC if FFA_MEM_SHARE/FFA_MEM_LEND is called with fragment length less than total length. + +SPMC validates handle and Endpoint ID and returns response with FFA_MEM_FRAG_TX. + +FFA_SECONDARY_EP_REGISTER +------------------------- + +When the SPMC boots, secure partition is initialized on its primary +Execution Context. + +The FFA_SECONDARY_EP_REGISTER interface is to be used by a secure partition +from its first execution context, to provide the entry point address for +secondary execution contexts. + +A secondary EC is first resumed either upon invocation of PSCI_CPU_ON from +the NWd or by invocation of FFA_RUN. + +Power management +================ + +In platforms with or without secure virtualization: + +- The NWd owns the platform PM policy. +- The Hypervisor or OS kernel is the component initiating PSCI service calls. +- The EL3 PSCI library is in charge of the PM coordination and control + (eventually writing to platform registers). +- While coordinating PM events, the PSCI library calls backs into the Secure + Payload Dispatcher for events the latter has statically registered to. + +When using the SPMD as a Secure Payload Dispatcher: + +- A power management event is relayed through the SPD hook to the SPMC. +- In the current implementation CPU_ON (svc_on_finish), CPU_OFF + (svc_off), CPU_SUSPEND (svc_suspend) and CPU_SUSPEND_RESUME (svc_suspend_finish) + hooks are registered. + +Secure partitions scheduling +============================ + +The FF-A specification `[1]`_ provides two ways to relinquinsh CPU time to +secure partitions. For this a VM (Hypervisor or OS kernel), or SP invokes one of: + +- the FFA_MSG_SEND_DIRECT_REQ interface. +- the FFA_RUN interface. + +Additionally a secure interrupt can pre-empt the normal world execution and give +CPU cycles by transitioning to EL3. + +Partition Runtime State and Model +================================= + +EL3 SPMC implements Partition runtime states are described in v1.1 FF-A specification `[1]`_ + +An SP can be in one of the following state: + +- RT_STATE_WAITING +- RT_STATE_RUNNING +- RT_STATE_PREEMPTED +- RT_STATE_BLOCKED + +An SP will transition to one of the following runtime model when not in waiting state: + +- RT_MODEL_DIR_REQ +- RT_MODEL_RUN +- RT_MODEL_INIT +- RT_MODEL_INTR + +Platform topology +================= + +SPMC only supports a single Pinned MP S-EL1 SP. The *execution-ctx-count* +SP manifest field should match the number of physical PE. + +Interrupt handling +================== + +Secure Interrupt handling +------------------------- + +- SPMC is capable of forwarding Secure interrupt to S-EL1 SP + which has preempted the normal world. +- Interrupt is forwarded to SP using FFA_INTERRUPT interface. +- Interrupt Number is not passed, S-EL1 SP can access the GIC registers directly. +- Upon completion of Interrupt handling SP is expected to return to + SPMC using FFA_MSG_WAIT interface. +- SPMC returns to normal world after interrupt handling is completed. + +In the scenario when secure interrupt occurs while the secure partition is running, +the SPMC is not involved and the handling is implementation defined in the TOS. + +Non-Secure Interrupt handling +----------------------------- + +The 'managed exit' scenario is the responsibility of the TOS and the SPMC is not involved. + +Test Secure Payload (TSP) +========================= + +- TSP provides reference implementation of FF-A programming model. +- TSP has the following support: + + - SP initialization on all CPUs. + - Consuming Power Messages including CPU_ON, CPU_OFF, CPU_SUSPEND, CPU_SUSPEND_RESUME. + - Event Loop to receive Direct Requests. + - Sending Direct Response. + - Memory Sharing helper library. + - Ability to handle secure interrupt (timer). + +TSP Tests in CI +--------------- + +- TSP Tests are exercised in the TF-A CI using prebuilt FF-A Linux Test driver in NWd. +- Expected output: + +.. code:: shell + + #ioctl 255 + Test: Echo Message to SP. + Status: Completed Test Case: 1 + Test Executed Successfully + + Test: Message Relay vis SP to EL3 LSP. + Status: Completed Test Case: 2 + Test Executed Successfully + + Test: Memory Send. + Verified 1 constituents successfully + Status: Completed Test Case: 3 + Test Executed Successfully + + Test: Memory Send in Fragments. + Verified 256 constituents successfully + Status: Completed Test Case: 4 + Test Executed Successfully + + Test: Memory Lend. + Verified 1 constituents successfully + Status: Completed Test Case: 5 + Test Executed Successfully + + Test: Memory Lend in Fragments. + Verified 256 constituents successfully + Status: Completed Test Case: 6 + Test Executed Successfully + + Test: Memory Send with Multiple Endpoints. + random: fast init done + Verified 256 constituents successfully + Status: Completed Test Case: 7 + Test Executed Successfully + + Test: Memory Lend with Multiple Endpoints. + Verified 256 constituents successfully + Status: Completed Test Case: 8 + Test Executed Successfully + + Test: Ensure Duplicate Memory Send Requests are Rejected. + Status: Completed Test Case: 9 + Test Executed Successfully + + Test: Ensure Duplicate Memory Lend Requests are Rejected. + Status: Completed Test Case: 10 + Test Executed Successfully + + 0 Tests Failed + + Exiting Test Application - Total Failures: 0 + + +References +========== + +.. _[1]: + +[1] `Arm Firmware Framework for Arm A-profile `__ + +.. _[2]: + +[2] https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tree/plat/arm/board/fvp/fvp_el3_spmc_logical_sp.c + +.. _[3]: + +[3] `Trusted Boot Board Requirements +Client `__ + +.. _[4]: + +[4] https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tree/plat/arm/board/fvp/fvp_el3_spmc.c + +.. _[5]: + +[5] https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tree/plat/arm/board/fvp/include/platform_def.h + +.. _[6]: + +[6] https://trustedfirmware-a.readthedocs.io/en/latest/components/ffa-manifest-binding.html + +.. _[7]: + +[7] https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tree/plat/arm/board/fvp/fdts/fvp_tsp_sp_manifest.dts + +.. _[8]: + +[8] https://lists.trustedfirmware.org/archives/list/tf-a@lists.trustedfirmware.org/thread/CFQFGU6H2D5GZYMUYGTGUSXIU3OYZP6U/ + +.. _[9]: + +[9] https://trustedfirmware-a.readthedocs.io/en/latest/design/firmware-design.html#dynamic-configuration-during-cold-boot + +-------------- + +*Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.* diff --git a/docs/components/index.rst b/docs/components/index.rst index 192773fc5..0972a68e0 100644 --- a/docs/components/index.rst +++ b/docs/components/index.rst @@ -20,6 +20,7 @@ Components romlib-design sdei secure-partition-manager + el3-spmc secure-partition-manager-mm xlat-tables-lib-v2-design cot-binding diff --git a/docs/resources/diagrams/ff-a-lsp-at-el3.png b/docs/resources/diagrams/ff-a-lsp-at-el3.png new file mode 100644 index 0000000000000000000000000000000000000000..7cff34f295af6e9327fb16e4f29791e407427a2d GIT binary patch literal 39282 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 eOXQ#YIUAMj1^%9)$u)0%zNwiF97#+5yw71_ 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 literal 0 HcmV?d00001 diff --git a/docs/resources/diagrams/ff-a-spm-at-el3.png b/docs/resources/diagrams/ff-a-spm-at-el3.png new file mode 100644 index 0000000000000000000000000000000000000000..3b263b052b8942ad0155106926772d98924c93f2 GIT binary patch literal 29978 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

H)2ysf zOF`cQH>zAG=z#DewF_BSQm(pIVLO}QaPG5HUY({&Qz=Ugdrup=F&C`2-yHoM-!B-AX*4+xwdM<2+UFK?ka`mQ*&LzFxD*EE-e~rIvtN zh^&#o_d8wE>S>w`yNS1a)r*-1T{ z4ZRxUiWw4E_lgiDb5b(BysuCoR?b-qa%ZGp3M&q{M4tgVK~pM25jU<9;>6?`w(V9TN7soGl9H+dEY7X`5ns8x%}JX zyNR&Wy3#7!!9YFCmR>o2Guk+`T~7S8pE)_of=m}6hLVc5cO9AhPXI;rxM>eUmR=&x z7u#Cr>q@5RIL{13cDi%N@12Qyjhb`2_0E&fDFMJ*0sC&tJR!6UIXJj8>xyrmUn8hn zO%8on)#YF?unq2_eCfrEdjk^50SNh&T`-S0S&tL9AfCydI4S&wXT-8TJ2M6;}v@*!%19#B4$~Q$2 zqbzPW;r)S5DOR-U%9m0=zu-=~*LT1NOLbL;x!rn?ymctsG&Bu_qWpUcM@B&Pd3&K0 znNUZcGIZYuu9u2&r?8oy{JR-Q5D^kIc-1)J^|GN_qfvpw znb?uq9kb)Rw1##f>~%S^4bMEa5S5!zS~NrqG65M|c;6kho8^VVfopO$e?6@CdP@B) zTWxs$RNIQ{)e}d4Vl;VSH5)*}#&~1{ZLPhNLnVi4aRglp!p3Fh%NIW>nye_`To`BQ zaYoC@(ZzOxwG%zgIl=F^Yj3njD$m5;2CLo$VH-0pEE8cZPyCJV8qK!#Xx?6S8S-?E z(yM^61OE44`FWa6hGR0E8C>M{c=jK1p*5SkYtHvEPimYq|0(DB<$Ab8?s(n^@^p{d zL`$vH^8Q&D8lkME`lxsjgcb-^Fu-L2-8Rf@)i~Aj;OC7N zYu0;r((uaJR-0L&kXR|orzlos^maVX<$mr2S+D_0$=%h50)CiV*U{U`Ko*Hp?mYLx<-UEL<7}JA=g)Z0{G2h z3m+-T7Tn=u0|DFpxsc}v^k6srH~IUsb@ z)T``Vc1JVh9vkSQNzLDH8^S;je_OEx9{sNO4tVyv$|3OV|A+fcGa-m~cMFj!^}w2> Wuv_+i;PZk7j-NRnq8vQ+-G2e-s-?UD literal 0 HcmV?d00001