From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3825704507623936872==" MIME-Version: 1.0 From: Harris, James R Subject: Re: [SPDK] BDEV-IO Lifecycle - Need your input. Date: Fri, 22 Jun 2018 01:11:20 +0000 Message-ID: <17807346-A730-4DEC-ADC8-F68B471BDC07@intel.com> In-Reply-To: DM6PR06MB3881D28A9700F6B1394017ABEB750@DM6PR06MB3881.namprd06.prod.outlook.com List-ID: To: spdk@lists.01.org --===============3825704507623936872== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Thanks Srikanth. Sounds like the spdk_bdev_io pool sizing along with spdk_= bdev_queue_io_wait() meets your needs then regarding the spdk_bdev_io memor= y. Regarding zcopy_start/zcopy_end =E2=80=93 it looks like you=E2=80=99ve alre= ady added a bunch of comments to Ben=E2=80=99s patch on GerritHub. For now= I=E2=80=99d say let=E2=80=99s continue our discussion there. I=E2=80=99ve= responded to a couple of similar questions there and I=E2=80=99m sure Ben = will have more replies tomorrow. -Jim From: "Kaligotla, Srikanth" Date: Thursday, June 21, 2018 at 5:01 PM To: James Harris , "Walker, Benjamin" , Daniel Verkamp Cc: "raju.gottumukkala(a)broadcom.com" , = "Meneghini, John" , "Rodriguez, Edwin" , "Pai, Madhu" , "NGC-john= .barnard-broadcom.com" , "spdk(a)lists.01.org"= Subject: RE: BDEV-IO Lifecycle - Need your input. Hi Jim, I wish I joined the community meeting, I also missed the spdk_bdev_queue_io= _wait(). So, there are 2 issues I am intending to solve, 1. We want to ensure that an instance of bdev-io is acquired prior to= or along with I/O data buffer. This allows for better error handling when = bdev_io pool is exhausted. Yes, we can solve it via sizing the pool right. = The changes queue-io-wait also addresses the problem. 2. Most importantly, by extending the life of bdev-io (Same life span= as nvmf_request structure), abort use case and other use cases that involv= e cleaning up of IO data buffer are accomplished effectively. Let me elabor= ate; bdev-io is the fabric that connects the nvme command and operation wit= h the backend. The driver context and data buffer context is stored in bdev= -io. The freeing up of bdev_io resource is pushed to the end so the I/O cle= anup can happen after controller has transmitted the data to the host. In a= bsence of bdev_io, we will have end up adding more and more void context in= request structure. Hence the push to extend the life of bdev_io. I see Ben=E2=80=99s recent patch =E2=80=9Czcopy_start=E2=80=9D and =E2=80= =9Czcopy_end=E2=80=9D; We can make that work as long as the bdev-io allocat= ed/acquired stays till the end. One of the challenges I see with that patch= is defining a callback for the I/O submission. For instance, zopy_start wi= ll allocate bdev_io and submits the I/O to the bdev device. Underlying impl= ementation can be synchronous or can be asynchronous. The callback for this= submission should check to see if it is a BUFFER-READY or PENDING and acco= rdingly relay it back to transport. Next phase is actual I/O submission. Le= t=E2=80=99s say, it reuses the bdev-io obtained in ZCOPY-START, now the cal= lback should determine if it is a success or failure. Finally when ZCOPY-EN= D is invoked the supplied bdev_io will have all necessary data to release t= he WRITE buffer or unlock the read buffer based on the operation performed. I hope I=E2=80=99m making sense. I guess, my effort is to extend the lifesp= an of bdev-io and let it continue to host the driver context and buffer con= text populated during the BEGIN phase. Regards, Srikanth From: Harris, James R Sent: Thursday, June 21, 2018 2:21 PM To: Kaligotla, Srikanth ; Walker, Benjamin= ; Verkamp, Daniel Cc: raju.gottumukkala(a)broadcom.com; Meneghini, John ; Rodriguez, Edwin ; Pai, Madhu ; NGC-john.barnard-broadcom.com ; spdk(a)lists.01.org Subject: Re: BDEV-IO Lifecycle - Need your input. Hi Srikanth, Following up on this thread and the discussion in yesterday=E2=80=99s commu= nity meeting. The recent spdk_bdev_queue_io_wait() changes allow an SPDK application to w= ork better in general when the spdk_bdev_io buffer pool is exhausted. We s= till need to make changes to the NVMe-oF target to use this new API but tha= t should be done soon-ish. With that in place, the spdk_bdev_io buffer pool itself can be configured u= p or down when the application starts. Currently the default is 64K spdk_b= dev_io buffers. sizeof(struct spdk_bdev_io) =3D=3D 216 plus the per-IO con= text size allocated for the bdev module. This can be up to 192 bytes (virt= io bdev module) but is likely much smaller for you depending on the context= size for your ontap bdev module. Let=E2=80=99s assume your per-IO context size is 64 bytes. 64K x (192 + 64= ) =3D 16MB. I=E2=80=99m not sure how many spdk_bdev_io you need in flight at any given = time. 64K seems like a lot but I=E2=80=99d be curious to hear your thought= s on this. If this is the right number, then worst case, there would be ab= out 16MB of DRAM that would sit unused if the NVMe-oF target in your system= was not active. Is that too burdensome for your application? Thanks, -Jim From: "Kaligotla, Srikanth" > Date: Wednesday, June 20, 2018 at 12:47 PM To: "Walker, Benjamin" >, James Harris >, Daniel Verkamp > Cc: "raju.gottumukkala(a)broadcom.com" >, "Meneghini, John" >, "Rodriguez, Edwin" >, "Pai, Madhu" >, "NGC-john.barnard-broadcom.com" >, "spdk(a)lists.01.org" > Subject: RE: BDEV-IO Lifecycle - Need your input. Hello, First revision of changes to extend the lifecycle of bdev_io are available = for review. I would like to solicit your input on the proposed API/Code flo= w changes. https://review.gerrithub.io/c/spdk/spdk/+/415860 Thanks, Srikanth From: "Kaligotla, Srikanth" > Date: Friday, May 11, 2018 at 2:27 PM To: "Walker, Benjamin" >, "Harris, James R" > Cc: "raju.gottumukkala(a)broadcom.com" >, "Meneghini, John" >, "Rodriguez, Edwin" >, "Pai, Madhu" >, "NGC-john.barnard-broadcom.com" >, "spdk(a)lists.01.org" > Subject: RE: BDEV-IO Lifecycle - Need your input. CC: List Hi Ben, Your proposal to inter= face with the backend to acquire and release buffers is good. You have accu= rately stated that the challenge is in developing intuitive semantics. And = that has been my struggle. To me, there are two problem statements; 1. It is expected that bdev_io pool is sized correctly so the call to= get bdev_io succeeds. Failure to acquire bdev_io will result in DEVICE-ERR= OR. The transport is already capable of handling temporary memory failures = by moving the request to PENDING-Queue. Hence the proposal to change the bd= ev_io lifecycle and perhaps connect it with the spdk_nvmf_request object. T= hus all buffer needs are addressed at the beginning of I/O request. 2. I/O Data buffers are sourced and managed by the backend. One of th= e challenges I see with your proposed interface is the lack of details like= if resource is being acquired for a READ operation or WRITE operation. The= handling is quite different in each case. Since bdev_io->type is overloade= d the type of I/O operation is lost. I suppose one can cast the cb_arg (nvm= f_request) and then proceed. Also, the bdev_io should be present to RELEASE= the buffer. Zero copy semantics warrants that data buffer stays until cont= roller-to-host has occurred. In other words, bdev_io lives till REQUEST com= e to COMPLETE state. What are your thoughts in introducing spdk_bdev_init() and spdk_bdev_fini()= as an alternative approach to extend the lifecyle of bdev_io and allow dat= a buffer management via bdev fn_table ? I hope I=E2=80=99m making sense=E2=80=A6 Thanks, Srikanth From: Walker, Benjamin > Sent: Friday, May 11, 2018 12:28 PM To: Harris, James R >; Kaligotla, Srikanth > Cc: raju.gottumukkala(a)broadcom.com; Meneghini, John >; Rodriguez, Edwin >; Pai, Madhu >; NGC-john.barnard-broadcom.com > Subject: Re: BDEV-IO Lifecycle - Need your input. Hi Srikanth, Yes - we'll need to introduce some way to acquire and release buffers from = the bdev layer earlier on in the state machine that processes an NVMe-oF re= quest. I've had this patch out for review for several months as a proposal = for this scenario: https://review.gerrithub.io/#/c/spdk/spdk/+/386166/ It doesn't pass the tests - it's just a proposal for the interface. 90% of = the challenge here is in developing intuitive semantics. Thanks, Ben P.S. This is the kind of discussion that would fit perfectly on the mailing= list. On Wed, 2018-05-09 at 20:35 +0000, Kaligotla, Srikanth wrote: Hi Ben, Hi James, I would like to solicit opinions on the lifecycle for bdev-io resource obje= ct. Attached is the image of RDMA state machine in its current implementati= on. When the REQUEST enters the NEED-BUFFER state, the buffers necessary fo= r carrying out I/O operation are allocated/acquired from the memory pool. A= n instance of BDEV-IO comes into existence after REQUEST reaches READY-TO-E= XECUTE state. The BDEV-IO is teared down as soon the backend returns. From = a BDEV perspective, BDEV-IO is simply a translation unit that facilitates I= /O buffers from the backend. The driver context embedded within bdev_io hol= ds great deal of information pertaining to the I/O under execution. It assi= sts in error handling, dereferencing the buffers upon I/O completion and in= abort handling. In summary, the bdev_io stays alive until request has come= to COMPLETE state. I=E2=80=99d like to hear peoples thoughts in introducin= g the plumbing to acquire BDEV-IO resource in REQUEST-NEED-BUFFER state and= release it in REQUEST-COMPLETE state. I will shortly have patch available= for review that introduces spdk_bdev_init and spdk_bdev_fini which in turn= invokes the corresponding bdev fn_table to initialize/cleanup. I wanted to use this email to communicate our intent and solicit your feedb= ack. We have a working implementation of the above proposal and prior to pu= shing it upstream for review would like to hear your thoughts. These propos= ed changes to upstream are a result of FC transport work in collaboration w= ith the Broadcom team who are also copied to this mail. Myself and John wil= l be at SPDK Dev conference and if required we can elaborate further on thi= s proposal. Thanks, Srikanth --===============3825704507623936872== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4 bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l dGEgbmFtZT0iVGl0bGUiIGNvbnRlbnQ9IiI+DQo8bWV0YSBuYW1lPSJLZXl3b3JkcyIgY29udGVu dD0iIj4NCjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUg KGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxlPjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8N CkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0 IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OkRlbmdYaWFuOw0K CXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWls eTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMgMiA0O30NCi8qIFN0eWxlIERl ZmluaXRpb25zICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsDQoJ e21hcmdpbjowaW47DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZToxMS4wcHQ7 DQoJZm9udC1mYW1pbHk6Q2FsaWJyaTt9DQphOmxpbmssIHNwYW4uTXNvSHlwZXJsaW5rDQoJe21z by1zdHlsZS1wcmlvcml0eTo5OTsNCgljb2xvcjpibHVlOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRl cmxpbmU7fQ0KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2VkDQoJe21zby1zdHls ZS1wcmlvcml0eTo5OTsNCgljb2xvcjpwdXJwbGU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu ZTt9DQpwLk1zb0xpc3RQYXJhZ3JhcGgsIGxpLk1zb0xpc3RQYXJhZ3JhcGgsIGRpdi5Nc29MaXN0 UGFyYWdyYXBoDQoJe21zby1zdHlsZS1wcmlvcml0eTozNDsNCgltYXJnaW4tdG9wOjBpbjsNCglt YXJnaW4tcmlnaHQ6MGluOw0KCW1hcmdpbi1ib3R0b206MGluOw0KCW1hcmdpbi1sZWZ0Oi41aW47 DQoJbWFyZ2luLWJvdHRvbTouMDAwMXB0Ow0KCWZvbnQtc2l6ZToxMi4wcHQ7DQoJZm9udC1mYW1p bHk6Q2FsaWJyaTt9DQpwLm1zb25vcm1hbDAsIGxpLm1zb25vcm1hbDAsIGRpdi5tc29ub3JtYWww DQoJe21zby1zdHlsZS1uYW1lOm1zb25vcm1hbDsNCgltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsN CgltYXJnaW4tcmlnaHQ6MGluOw0KCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOw0KCW1hcmdp bi1sZWZ0OjBpbjsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OkNhbGlicmk7fQ0K c3Bhbi5FbWFpbFN0eWxlMTkNCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWw7DQoJZm9udC1mYW1p bHk6Q2FsaWJyaTsNCgljb2xvcjp3aW5kb3d0ZXh0O30NCnNwYW4uRW1haWxTdHlsZTIwDQoJe21z by1zdHlsZS10eXBlOnBlcnNvbmFsOw0KCWZvbnQtZmFtaWx5OkNhbGlicmk7DQoJY29sb3I6d2lu ZG93dGV4dDt9DQpzcGFuLkVtYWlsU3R5bGUyMQ0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsN Cglmb250LWZhbWlseTpDYWxpYnJpOw0KCWNvbG9yOndpbmRvd3RleHQ7fQ0Kc3Bhbi5FbWFpbFN0 eWxlMjINCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWw7DQoJZm9udC1mYW1pbHk6Q2FsaWJyaTsN Cgljb2xvcjp3aW5kb3d0ZXh0O30NCnNwYW4uRW1haWxTdHlsZTIzDQoJe21zby1zdHlsZS10eXBl OnBlcnNvbmFsOw0KCWZvbnQtZmFtaWx5OkNhbGlicmk7DQoJY29sb3I6d2luZG93dGV4dDt9DQpz cGFuLkVtYWlsU3R5bGUyNA0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsNCglmb250LWZhbWls eTpDYWxpYnJpOw0KCWNvbG9yOndpbmRvd3RleHQ7fQ0Kc3Bhbi5FbWFpbFN0eWxlMjUNCgl7bXNv LXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6Q2FsaWJyaTsNCgljb2xv cjp3aW5kb3d0ZXh0O30NCnNwYW4ubXNvSW5zDQoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5 Ow0KCW1zby1zdHlsZS1uYW1lOiIiOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQoJY29s b3I6dGVhbDt9DQouTXNvQ2hwRGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsN Cglmb250LXNpemU6MTAuMHB0O30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWluIDEx LjBpbjsNCgltYXJnaW46MS4waW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0aW9u MQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQovKiBMaXN0IERlZmluaXRpb25zICovDQpAbGlzdCBs MA0KCXttc28tbGlzdC1pZDo3MjA3ODk0Mzg7DQoJbXNvLWxpc3QtdHlwZTpoeWJyaWQ7DQoJbXNv LWxpc3QtdGVtcGxhdGUtaWRzOi03NzI1MjkwMTIgNjc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTUg Njc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTUgNjc2OTg3MDMgNjc2OTg3MTMgNjc2OTg3MTU7fQ0K QGxpc3QgbDA6bGV2ZWwxDQoJe21zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1u dW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWluZGVudDotLjI1aW47fQ0KQGxpc3QgbDA6bGV2 ZWwyDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmFscGhhLWxvd2VyOw0KCW1zby1sZXZlbC10 YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgl0ZXh0LWlu ZGVudDotLjI1aW47fQ0KQGxpc3QgbDA6bGV2ZWwzDQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0 OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZlbC10YWItc3RvcDpub25lOw0KCW1zby1sZXZlbC1udW1i ZXItcG9zaXRpb246cmlnaHQ7DQoJdGV4dC1pbmRlbnQ6LTkuMHB0O30NCkBsaXN0IGwwOmxldmVs NA0KCXttc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9u OmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluO30NCkBsaXN0IGwwOmxldmVsNQ0KCXttc28tbGV2 ZWwtbnVtYmVyLWZvcm1hdDphbHBoYS1sb3dlcjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsN Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJdGV4dC1pbmRlbnQ6LS4yNWluO30N CkBsaXN0IGwwOmxldmVsNg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpyb21hbi1sb3dlcjsN Cgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOnJp Z2h0Ow0KCXRleHQtaW5kZW50Oi05LjBwdDt9DQpAbGlzdCBsMDpsZXZlbDcNCgl7bXNvLWxldmVs LXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQt aW5kZW50Oi0uMjVpbjt9DQpAbGlzdCBsMDpsZXZlbDgNCgl7bXNvLWxldmVsLW51bWJlci1mb3Jt YXQ6YWxwaGEtbG93ZXI7DQoJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51 bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCXRleHQtaW5kZW50Oi0uMjVpbjt9DQpAbGlzdCBsMDpsZXZl bDkNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6cm9tYW4tbG93ZXI7DQoJbXNvLWxldmVsLXRh Yi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpyaWdodDsNCgl0ZXh0LWlu ZGVudDotOS4wcHQ7fQ0KQGxpc3QgbDENCgl7bXNvLWxpc3QtaWQ6MTM2MTg1ODQ2NDsNCgltc28t bGlzdC10ZW1wbGF0ZS1pZHM6LTc1ODE5ODg5ODt9DQpAbGlzdCBsMg0KCXttc28tbGlzdC1pZDox MzcwNzYwOTQxOw0KCW1zby1saXN0LXR5cGU6aHlicmlkOw0KCW1zby1saXN0LXRlbXBsYXRlLWlk czotMTU3OTE3NjEyIDY3Njk4NzAzIDY3Njk4NzEzIDY3Njk4NzE1IDY3Njk4NzAzIDY3Njk4NzEz IDY3Njk4NzE1IDY3Njk4NzAzIDY3Njk4NzEzIDY3Njk4NzE1O30NCkBsaXN0IGwyOmxldmVsMQ0K CXttc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxl ZnQ7DQoJbWFyZ2luLWxlZnQ6Ljc1aW47DQoJdGV4dC1pbmRlbnQ6LS4yNWluO30NCkBsaXN0IGwy OmxldmVsMg0KCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDphbHBoYS1sb3dlcjsNCgltc28tbGV2 ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJbWFy Z2luLWxlZnQ6MS4yNWluOw0KCXRleHQtaW5kZW50Oi0uMjVpbjt9DQpAbGlzdCBsMjpsZXZlbDMN Cgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6cm9tYW4tbG93ZXI7DQoJbXNvLWxldmVsLXRhYi1z dG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpyaWdodDsNCgltYXJnaW4tbGVm dDoxLjc1aW47DQoJdGV4dC1pbmRlbnQ6LTkuMHB0O30NCkBsaXN0IGwyOmxldmVsNA0KCXttc28t bGV2ZWwtdGFiLXN0b3A6bm9uZTsNCgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7DQoJ bWFyZ2luLWxlZnQ6Mi4yNWluOw0KCXRleHQtaW5kZW50Oi0uMjVpbjt9DQpAbGlzdCBsMjpsZXZl bDUNCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YWxwaGEtbG93ZXI7DQoJbXNvLWxldmVsLXRh Yi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdpbi1s ZWZ0OjIuNzVpbjsNCgl0ZXh0LWluZGVudDotLjI1aW47fQ0KQGxpc3QgbDI6bGV2ZWw2DQoJe21z by1sZXZlbC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOw0KCW1zby1sZXZlbC10YWItc3RvcDpu b25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7DQoJbWFyZ2luLWxlZnQ6My4y NWluOw0KCXRleHQtaW5kZW50Oi05LjBwdDt9DQpAbGlzdCBsMjpsZXZlbDcNCgl7bXNvLWxldmVs LXRhYi1zdG9wOm5vbmU7DQoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0Ow0KCW1hcmdp bi1sZWZ0OjMuNzVpbjsNCgl0ZXh0LWluZGVudDotLjI1aW47fQ0KQGxpc3QgbDI6bGV2ZWw4DQoJ e21zby1sZXZlbC1udW1iZXItZm9ybWF0OmFscGhhLWxvd2VyOw0KCW1zby1sZXZlbC10YWItc3Rv cDpub25lOw0KCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsNCgltYXJnaW4tbGVmdDo0 LjI1aW47DQoJdGV4dC1pbmRlbnQ6LS4yNWluO30NCkBsaXN0IGwyOmxldmVsOQ0KCXttc28tbGV2 ZWwtbnVtYmVyLWZvcm1hdDpyb21hbi1sb3dlcjsNCgltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsN Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOnJpZ2h0Ow0KCW1hcmdpbi1sZWZ0OjQuNzVpbjsN Cgl0ZXh0LWluZGVudDotOS4wcHQ7fQ0Kb2wNCgl7bWFyZ2luLWJvdHRvbTowaW47fQ0KdWwNCgl7 bWFyZ2luLWJvdHRvbTowaW47fQ0KLS0+PC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5IGJnY29sb3I9 IndoaXRlIiBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+DQo8ZGl2IGNs YXNzPSJXb3JkU2VjdGlvbjEiPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhhbmtzIFNyaWthbnRo LiZuYnNwOyBTb3VuZHMgbGlrZSB0aGUgc3Bka19iZGV2X2lvIHBvb2wgc2l6aW5nIGFsb25nIHdp dGggc3Bka19iZGV2X3F1ZXVlX2lvX3dhaXQoKSBtZWV0cyB5b3VyIG5lZWRzIHRoZW4gcmVnYXJk aW5nIHRoZSBzcGRrX2JkZXZfaW8gbWVtb3J5LjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5SZWdh cmRpbmcgemNvcHlfc3RhcnQvemNvcHlfZW5kIOKAkyBpdCBsb29rcyBsaWtlIHlvdeKAmXZlIGFs cmVhZHkgYWRkZWQgYSBidW5jaCBvZiBjb21tZW50cyB0byBCZW7igJlzIHBhdGNoIG9uIEdlcnJp dEh1Yi4mbmJzcDsgRm9yIG5vdyBJ4oCZZCBzYXkgbGV04oCZcyBjb250aW51ZSBvdXIgZGlzY3Vz c2lvbiB0aGVyZS4mbmJzcDsgSeKAmXZlIHJlc3BvbmRlZCB0byBhIGNvdXBsZSBvZiBzaW1pbGFy IHF1ZXN0aW9ucyB0aGVyZSBhbmQgSeKAmW0gc3VyZQ0KIEJlbiB3aWxsIGhhdmUgbW9yZSByZXBs aWVzIHRvbW9ycm93LjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4m bmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4tSmltPG86cD48L286cD48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7 Ym9yZGVyLXRvcDpzb2xpZCAjQjVDNERGIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4i Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxiPjxzcGFu IHN0eWxlPSJjb2xvcjpibGFjayI+RnJvbTogPC9zcGFuPg0KPC9iPjxzcGFuIHN0eWxlPSJjb2xv cjpibGFjayI+JnF1b3Q7S2FsaWdvdGxhLCBTcmlrYW50aCZxdW90OyAmbHQ7U3Jpa2FudGguS2Fs aWdvdGxhQG5ldGFwcC5jb20mZ3Q7PGJyPg0KPGI+RGF0ZTogPC9iPlRodXJzZGF5LCBKdW5lIDIx LCAyMDE4IGF0IDU6MDEgUE08YnI+DQo8Yj5UbzogPC9iPkphbWVzIEhhcnJpcyAmbHQ7amFtZXMu ci5oYXJyaXNAaW50ZWwuY29tJmd0OywgJnF1b3Q7V2Fsa2VyLCBCZW5qYW1pbiZxdW90OyAmbHQ7 YmVuamFtaW4ud2Fsa2VyQGludGVsLmNvbSZndDssIERhbmllbCBWZXJrYW1wICZsdDtkYW5pZWwu dmVya2FtcEBpbnRlbC5jb20mZ3Q7PGJyPg0KPGI+Q2M6IDwvYj4mcXVvdDtyYWp1LmdvdHR1bXVr a2FsYUBicm9hZGNvbS5jb20mcXVvdDsgJmx0O3JhanUuZ290dHVtdWtrYWxhQGJyb2FkY29tLmNv bSZndDssICZxdW90O01lbmVnaGluaSwgSm9obiZxdW90OyAmbHQ7Sm9obi5NZW5lZ2hpbmlAbmV0 YXBwLmNvbSZndDssICZxdW90O1JvZHJpZ3VleiwgRWR3aW4mcXVvdDsgJmx0O0VkLlJvZHJpZ3Vl ekBuZXRhcHAuY29tJmd0OywgJnF1b3Q7UGFpLCBNYWRodSZxdW90OyAmbHQ7TWFkaHVzdWRhbi5Q YWlAbmV0YXBwLmNvbSZndDssICZxdW90O05HQy1qb2huLmJhcm5hcmQtYnJvYWRjb20uY29tJnF1 b3Q7ICZsdDtqb2huLmJhcm5hcmRAYnJvYWRjb20uY29tJmd0OywNCiAmcXVvdDtzcGRrQGxpc3Rz LjAxLm9yZyZxdW90OyAmbHQ7c3Bka0BsaXN0cy4wMS5vcmcmZ3Q7PGJyPg0KPGI+U3ViamVjdDog PC9iPlJFOiBCREVWLUlPIExpZmVjeWNsZSAtIE5lZWQgeW91ciBpbnB1dC48L3NwYW4+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQ7Y29sb3I6YmxhY2siPjxvOnA+PC9vOnA+PC9zcGFuPjwv cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVm dDouNWluIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1 b3Q7Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj5IaSBKaW0sPG86cD48L286cD48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+Jm5ic3A7PG86cD48 L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+ SSB3aXNoIEkgam9pbmVkIHRoZSBjb21tdW5pdHkgbWVldGluZywgSSBhbHNvIG1pc3NlZCB0aGUg c3Bka19iZGV2X3F1ZXVlX2lvX3dhaXQoKS48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj5TbywgdGhlcmUgYXJl IDIgaXNzdWVzIEkgYW0gaW50ZW5kaW5nIHRvIHNvbHZlLDxvOnA+PC9vOnA+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPiZuYnNwOzxvOnA+PC9vOnA+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluO3RleHQt aW5kZW50Oi0uMjVpbjttc28tbGlzdDpsMCBsZXZlbDEgbGZvMyI+DQo8IVtpZiAhc3VwcG9ydExp c3RzXT48c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj4xLjxzcGFuIHN0eWxlPSJmb250Ojcu MHB0ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT48c3BhbiBzdHlsZT0iZm9udC1z aXplOjEyLjBwdCI+V2Ugd2FudCB0byBlbnN1cmUgdGhhdCBhbiBpbnN0YW5jZSBvZiBiZGV2LWlv IGlzIGFjcXVpcmVkIHByaW9yIHRvIG9yIGFsb25nIHdpdGggSS9PIGRhdGEgYnVmZmVyLiBUaGlz IGFsbG93cyBmb3IgYmV0dGVyIGVycm9yIGhhbmRsaW5nIHdoZW4gYmRldl9pbyBwb29sIGlzIGV4 aGF1c3RlZC4gWWVzLCB3ZSBjYW4gc29sdmUgaXQgdmlhIHNpemluZyB0aGUNCiBwb29sIHJpZ2h0 LiBUaGUgY2hhbmdlcyBxdWV1ZS1pby13YWl0IGFsc28gYWRkcmVzc2VzIHRoZSBwcm9ibGVtLjwv c3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4t bGVmdDoxLjBpbjt0ZXh0LWluZGVudDotLjI1aW47bXNvLWxpc3Q6bDAgbGV2ZWwxIGxmbzMiPg0K PCFbaWYgIXN1cHBvcnRMaXN0c10+PHNwYW4gc3R5bGU9Im1zby1saXN0Oklnbm9yZSI+Mi48c3Bh biBzdHlsZT0iZm9udDo3LjBwdCAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KPC9zcGFuPjwvc3Bhbj48IVtlbmRpZl0+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQiPk1vc3QgaW1wb3J0YW50bHksIGJ5IGV4dGVuZGlu ZyB0aGUgbGlmZSBvZiBiZGV2LWlvIChTYW1lIGxpZmUgc3BhbiBhcyBudm1mX3JlcXVlc3Qgc3Ry dWN0dXJlKSwgYWJvcnQgdXNlIGNhc2UgYW5kIG90aGVyIHVzZSBjYXNlcyB0aGF0IGludm9sdmUg Y2xlYW5pbmcgdXAgb2YgSU8gZGF0YSBidWZmZXIgYXJlIGFjY29tcGxpc2hlZCBlZmZlY3RpdmVs eS4NCiBMZXQgbWUgZWxhYm9yYXRlOyBiZGV2LWlvIGlzIHRoZSBmYWJyaWMgdGhhdCBjb25uZWN0 cyB0aGUgbnZtZSBjb21tYW5kIGFuZCBvcGVyYXRpb24gd2l0aCB0aGUgYmFja2VuZC4gVGhlIGRy aXZlciBjb250ZXh0IGFuZCBkYXRhIGJ1ZmZlciBjb250ZXh0IGlzIHN0b3JlZCBpbiBiZGV2LWlv LiBUaGUgZnJlZWluZyB1cCBvZiBiZGV2X2lvIHJlc291cmNlIGlzIHB1c2hlZCB0byB0aGUgZW5k IHNvIHRoZSBJL08gY2xlYW51cCBjYW4gaGFwcGVuIGFmdGVyDQogY29udHJvbGxlciBoYXMgdHJh bnNtaXR0ZWQgdGhlIGRhdGEgdG8gdGhlIGhvc3QuIEluIGFic2VuY2Ugb2YgYmRldl9pbywgd2Ug d2lsbCBoYXZlIGVuZCB1cCBhZGRpbmcgbW9yZSBhbmQgbW9yZSB2b2lkIGNvbnRleHQgaW4gcmVx dWVzdCBzdHJ1Y3R1cmUuIEhlbmNlIHRoZSBwdXNoIHRvIGV4dGVuZCB0aGUgbGlmZSBvZiBiZGV2 X2lvLjwvc3Bhbj48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdCI+Jm5ic3A7PC9z cGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1s ZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0Ij5JIHNlZSBCZW7igJlzIHJl Y2VudCBwYXRjaCDigJx6Y29weV9zdGFydOKAnSBhbmQg4oCcemNvcHlfZW5k4oCdOyBXZSBjYW4g bWFrZSB0aGF0IHdvcmsgYXMgbG9uZyBhcyB0aGUgYmRldi1pbyBhbGxvY2F0ZWQvYWNxdWlyZWQg c3RheXMgdGlsbCB0aGUgZW5kLiBPbmUgb2YgdGhlIGNoYWxsZW5nZXMgSSBzZWUgd2l0aCB0aGF0 IHBhdGNoDQogaXMgZGVmaW5pbmcgYSBjYWxsYmFjayBmb3IgdGhlIEkvTyBzdWJtaXNzaW9uLiBG b3IgaW5zdGFuY2UsIHpvcHlfc3RhcnQgd2lsbCBhbGxvY2F0ZSBiZGV2X2lvIGFuZCBzdWJtaXRz IHRoZSBJL08gdG8gdGhlIGJkZXYgZGV2aWNlLiBVbmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGNh biBiZSBzeW5jaHJvbm91cyBvciBjYW4gYmUgYXN5bmNocm9ub3VzLiBUaGUgY2FsbGJhY2sgZm9y IHRoaXMgc3VibWlzc2lvbiBzaG91bGQgY2hlY2sgdG8gc2VlDQogaWYgaXQgaXMgYSBCVUZGRVIt UkVBRFkgb3IgUEVORElORyBhbmQgYWNjb3JkaW5nbHkgcmVsYXkgaXQgYmFjayB0byB0cmFuc3Bv cnQuIE5leHQgcGhhc2UgaXMgYWN0dWFsIEkvTyBzdWJtaXNzaW9uLiBMZXTigJlzIHNheSwgaXQg cmV1c2VzIHRoZSBiZGV2LWlvIG9idGFpbmVkIGluIFpDT1BZLVNUQVJULCBub3cgdGhlIGNhbGxi YWNrIHNob3VsZCBkZXRlcm1pbmUgaWYgaXQgaXMgYSBzdWNjZXNzIG9yIGZhaWx1cmUuIEZpbmFs bHkgd2hlbiBaQ09QWS1FTkQNCiBpcyBpbnZva2VkIHRoZSBzdXBwbGllZCBiZGV2X2lvIHdpbGwg aGF2ZSBhbGwgbmVjZXNzYXJ5IGRhdGEgdG8gcmVsZWFzZSB0aGUgV1JJVEUgYnVmZmVyIG9yIHVu bG9jayB0aGUgcmVhZCBidWZmZXIgYmFzZWQgb24gdGhlIG9wZXJhdGlvbiBwZXJmb3JtZWQuPC9z cGFuPjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1s ZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTIuMHB0Ij4mbmJzcDs8L3NwYW4+PG86 cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVp biI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQiPkkgaG9wZSBJ4oCZbSBtYWtpbmcgc2Vu c2UuIEkgZ3Vlc3MsIG15IGVmZm9ydCBpcyB0byBleHRlbmQgdGhlIGxpZmVzcGFuIG9mIGJkZXYt aW8gYW5kIGxldCBpdCBjb250aW51ZSB0byBob3N0IHRoZSBkcml2ZXIgY29udGV4dCBhbmQgYnVm ZmVyIGNvbnRleHQgcG9wdWxhdGVkIGR1cmluZyB0aGUgQkVHSU4gcGhhc2UuPC9zcGFuPjxvOnA+ PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4i PiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1sZWZ0Oi41aW4iPlJlZ2FyZHMsPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+U3Jpa2FudGg8bzpwPjwvbzpwPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4mbmJzcDs8bzpwPjwvbzpw PjwvcD4NCjxkaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNF MUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PGI+RnJvbTo8L2I+IEhhcnJpcywgSmFtZXMg UiAmbHQ7amFtZXMuci5oYXJyaXNAaW50ZWwuY29tJmd0Ow0KPGJyPg0KPGI+U2VudDo8L2I+IFRo dXJzZGF5LCBKdW5lIDIxLCAyMDE4IDI6MjEgUE08YnI+DQo8Yj5Ubzo8L2I+IEthbGlnb3RsYSwg U3Jpa2FudGggJmx0O1NyaWthbnRoLkthbGlnb3RsYUBuZXRhcHAuY29tJmd0OzsgV2Fsa2VyLCBC ZW5qYW1pbiAmbHQ7YmVuamFtaW4ud2Fsa2VyQGludGVsLmNvbSZndDs7IFZlcmthbXAsIERhbmll bCAmbHQ7ZGFuaWVsLnZlcmthbXBAaW50ZWwuY29tJmd0Ozxicj4NCjxiPkNjOjwvYj4gcmFqdS5n b3R0dW11a2thbGFAYnJvYWRjb20uY29tOyBNZW5lZ2hpbmksIEpvaG4gJmx0O0pvaG4uTWVuZWdo aW5pQG5ldGFwcC5jb20mZ3Q7OyBSb2RyaWd1ZXosIEVkd2luICZsdDtFZC5Sb2RyaWd1ZXpAbmV0 YXBwLmNvbSZndDs7IFBhaSwgTWFkaHUgJmx0O01hZGh1c3VkYW4uUGFpQG5ldGFwcC5jb20mZ3Q7 OyBOR0Mtam9obi5iYXJuYXJkLWJyb2FkY29tLmNvbSAmbHQ7am9obi5iYXJuYXJkQGJyb2FkY29t LmNvbSZndDs7IHNwZGtAbGlzdHMuMDEub3JnPGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBCREVW LUlPIExpZmVjeWNsZSAtIE5lZWQgeW91ciBpbnB1dC48bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0K PC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+Jm5i c3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6LjVpbiI+SGkgU3Jpa2FudGgsPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+Rm9sbG93aW5nIHVwIG9uIHRo aXMgdGhyZWFkIGFuZCB0aGUgZGlzY3Vzc2lvbiBpbiB5ZXN0ZXJkYXnigJlzIGNvbW11bml0eSBt ZWV0aW5nLjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1sZWZ0Oi41aW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPlRoZSByZWNlbnQgc3Bka19iZGV2X3F1ZXVlX2lvX3dh aXQoKSBjaGFuZ2VzIGFsbG93IGFuIFNQREsgYXBwbGljYXRpb24gdG8gd29yayBiZXR0ZXIgaW4g Z2VuZXJhbCB3aGVuIHRoZSBzcGRrX2JkZXZfaW8gYnVmZmVyIHBvb2wgaXMgZXhoYXVzdGVkLiZu YnNwOyBXZSBzdGlsbCBuZWVkIHRvIG1ha2UgY2hhbmdlcyB0byB0aGUgTlZNZS1vRiB0YXJnZXQg dG8gdXNlIHRoaXMgbmV3DQogQVBJIGJ1dCB0aGF0IHNob3VsZCBiZSBkb25lIHNvb24taXNoLjxv OnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41 aW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0Oi41aW4iPldpdGggdGhhdCBpbiBwbGFjZSwgdGhlIHNwZGtfYmRldl9pbyBidWZm ZXIgcG9vbCBpdHNlbGYgY2FuIGJlIGNvbmZpZ3VyZWQgdXAgb3IgZG93biB3aGVuIHRoZSBhcHBs aWNhdGlvbiBzdGFydHMuJm5ic3A7IEN1cnJlbnRseSB0aGUgZGVmYXVsdCBpcyA2NEsgc3Bka19i ZGV2X2lvIGJ1ZmZlcnMuJm5ic3A7IHNpemVvZihzdHJ1Y3Qgc3Bka19iZGV2X2lvKSA9PSAyMTYg cGx1cyB0aGUNCiBwZXItSU8gY29udGV4dCBzaXplIGFsbG9jYXRlZCBmb3IgdGhlIGJkZXYgbW9k dWxlLiZuYnNwOyBUaGlzIGNhbiBiZSB1cCB0byAxOTIgYnl0ZXMgKHZpcnRpbyBiZGV2IG1vZHVs ZSkgYnV0IGlzIGxpa2VseSBtdWNoIHNtYWxsZXIgZm9yIHlvdSBkZXBlbmRpbmcgb24gdGhlIGNv bnRleHQgc2l6ZSBmb3IgeW91ciBvbnRhcCBiZGV2IG1vZHVsZS48bzpwPjwvbzpwPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4mbmJzcDs8bzpwPjwv bzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj5M ZXTigJlzIGFzc3VtZSB5b3VyIHBlci1JTyBjb250ZXh0IHNpemUgaXMgNjQgYnl0ZXMuJm5ic3A7 IDY0SyB4ICgxOTIgJiM0MzsgNjQpID0gMTZNQi48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj5J4oCZbSBub3Qg c3VyZSBob3cgbWFueSBzcGRrX2JkZXZfaW8geW91IG5lZWQgaW4gZmxpZ2h0IGF0IGFueSBnaXZl biB0aW1lLiZuYnNwOyA2NEsgc2VlbXMgbGlrZSBhIGxvdCBidXQgSeKAmWQgYmUgY3VyaW91cyB0 byBoZWFyIHlvdXIgdGhvdWdodHMgb24gdGhpcy4mbmJzcDsgSWYgdGhpcyBpcyB0aGUgcmlnaHQg bnVtYmVyLCB0aGVuIHdvcnN0IGNhc2UsIHRoZXJlIHdvdWxkIGJlIGFib3V0DQogMTZNQiBvZiBE UkFNIHRoYXQgd291bGQgc2l0IHVudXNlZCBpZiB0aGUgTlZNZS1vRiB0YXJnZXQgaW4geW91ciBz eXN0ZW0gd2FzIG5vdCBhY3RpdmUuJm5ic3A7IElzIHRoYXQgdG9vIGJ1cmRlbnNvbWUgZm9yIHlv dXIgYXBwbGljYXRpb24/PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWxlZnQ6LjVpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+VGhhbmtzLDxvOnA+PC9vOnA+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPiZuYnNwOzxvOnA+ PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4i Pi1KaW08bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4t bGVmdDouNWluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDouNWluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4N CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0I1QzRERiAxLjBwdDtw YWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tbGVmdDoxLjBpbiI+PGI+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj5Gcm9tOg0KPC9z cGFuPjwvYj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiZxdW90O0thbGlnb3RsYSwgU3Jpa2Fu dGgmcXVvdDsgJmx0Ozwvc3Bhbj48YSBocmVmPSJtYWlsdG86U3Jpa2FudGguS2FsaWdvdGxhQG5l dGFwcC5jb20iPlNyaWthbnRoLkthbGlnb3RsYUBuZXRhcHAuY29tPC9hPjxzcGFuIHN0eWxlPSJj b2xvcjpibGFjayI+Jmd0Ozxicj4NCjxiPkRhdGU6IDwvYj5XZWRuZXNkYXksIEp1bmUgMjAsIDIw MTggYXQgMTI6NDcgUE08YnI+DQo8Yj5UbzogPC9iPiZxdW90O1dhbGtlciwgQmVuamFtaW4mcXVv dDsgJmx0Ozwvc3Bhbj48YSBocmVmPSJtYWlsdG86YmVuamFtaW4ud2Fsa2VyQGludGVsLmNvbSI+ YmVuamFtaW4ud2Fsa2VyQGludGVsLmNvbTwvYT48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiZn dDssIEphbWVzIEhhcnJpcyAmbHQ7PC9zcGFuPjxhIGhyZWY9Im1haWx0bzpqYW1lcy5yLmhhcnJp c0BpbnRlbC5jb20iPmphbWVzLnIuaGFycmlzQGludGVsLmNvbTwvYT48c3BhbiBzdHlsZT0iY29s b3I6YmxhY2siPiZndDssDQogRGFuaWVsIFZlcmthbXAgJmx0Ozwvc3Bhbj48YSBocmVmPSJtYWls dG86ZGFuaWVsLnZlcmthbXBAaW50ZWwuY29tIj5kYW5pZWwudmVya2FtcEBpbnRlbC5jb208L2E+ PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4mZ3Q7PGJyPg0KPGI+Q2M6IDwvYj4mcXVvdDs8L3Nw YW4+PGEgaHJlZj0ibWFpbHRvOnJhanUuZ290dHVtdWtrYWxhQGJyb2FkY29tLmNvbSI+cmFqdS5n b3R0dW11a2thbGFAYnJvYWRjb20uY29tPC9hPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+JnF1 b3Q7ICZsdDs8L3NwYW4+PGEgaHJlZj0ibWFpbHRvOnJhanUuZ290dHVtdWtrYWxhQGJyb2FkY29t LmNvbSI+cmFqdS5nb3R0dW11a2thbGFAYnJvYWRjb20uY29tPC9hPjxzcGFuIHN0eWxlPSJjb2xv cjpibGFjayI+Jmd0OywgJnF1b3Q7TWVuZWdoaW5pLA0KIEpvaG4mcXVvdDsgJmx0Ozwvc3Bhbj48 YSBocmVmPSJtYWlsdG86Sm9obi5NZW5lZ2hpbmlAbmV0YXBwLmNvbSI+Sm9obi5NZW5lZ2hpbmlA bmV0YXBwLmNvbTwvYT48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiZndDssICZxdW90O1JvZHJp Z3VleiwgRWR3aW4mcXVvdDsgJmx0Ozwvc3Bhbj48YSBocmVmPSJtYWlsdG86RWQuUm9kcmlndWV6 QG5ldGFwcC5jb20iPkVkLlJvZHJpZ3VlekBuZXRhcHAuY29tPC9hPjxzcGFuIHN0eWxlPSJjb2xv cjpibGFjayI+Jmd0OywgJnF1b3Q7UGFpLCBNYWRodSZxdW90OyAmbHQ7PC9zcGFuPjxhIGhyZWY9 Im1haWx0bzpNYWRodXN1ZGFuLlBhaUBuZXRhcHAuY29tIj5NYWRodXN1ZGFuLlBhaUBuZXRhcHAu Y29tPC9hPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+Jmd0OywNCiAmcXVvdDtOR0Mtam9obi5i YXJuYXJkLWJyb2FkY29tLmNvbSZxdW90OyAmbHQ7PC9zcGFuPjxhIGhyZWY9Im1haWx0bzpqb2hu LmJhcm5hcmRAYnJvYWRjb20uY29tIj5qb2huLmJhcm5hcmRAYnJvYWRjb20uY29tPC9hPjxzcGFu IHN0eWxlPSJjb2xvcjpibGFjayI+Jmd0OywgJnF1b3Q7PC9zcGFuPjxhIGhyZWY9Im1haWx0bzpz cGRrQGxpc3RzLjAxLm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+PHNwYW4gc3R5bGU9ImNvbG9y OmJsYWNrIj4mcXVvdDsgJmx0Ozwvc3Bhbj48YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5v cmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+Jmd0Ozxi cj4NCjxiPlN1YmplY3Q6IDwvYj5SRTogQkRFVi1JTyBMaWZlY3ljbGUgLSBOZWVkIHlvdXIgaW5w dXQuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v cm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDs8L3NwYW4+PG86cD48L286cD48L3A+ DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+ SGVsbG8sPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2lu LWxlZnQ6MS4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5GaXJzdCByZXZpc2lvbiBvZiBjaGFuZ2VzIHRvIGV4 dGVuZCB0aGUgbGlmZWN5Y2xlIG9mIGJkZXZfaW8gYXJlIGF2YWlsYWJsZSBmb3IgcmV2aWV3LiBJ IHdvdWxkIGxpa2UgdG8gc29saWNpdCB5b3VyIGlucHV0IG9uIHRoZSBwcm9wb3NlZCBBUEkvQ29k ZSBmbG93IGNoYW5nZXMuDQo8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxhIGhyZWY9Imh0dHBzOi8vcmV2 aWV3LmdlcnJpdGh1Yi5pby9jL3NwZGsvc3Bkay8mIzQzOy80MTU4NjAiPmh0dHBzOi8vcmV2aWV3 LmdlcnJpdGh1Yi5pby9jL3NwZGsvc3Bkay8mIzQzOy80MTU4NjA8L2E+PG86cD48L286cD48L3A+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPiZuYnNwOzxv OnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEu MGluIj5UaGFua3MsPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0i bWFyZ2luLWxlZnQ6MS4waW4iPlNyaWthbnRoPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj4mbmJzcDs8bzpw PjwvbzpwPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0I1 QzRERiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PGI+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNr Ij5Gcm9tOg0KPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiZxdW90O0thbGln b3RsYSwgU3Jpa2FudGgmcXVvdDsgJmx0Ozwvc3Bhbj48YSBocmVmPSJtYWlsdG86U3Jpa2FudGgu S2FsaWdvdGxhQG5ldGFwcC5jb20iPlNyaWthbnRoLkthbGlnb3RsYUBuZXRhcHAuY29tPC9hPjxz cGFuIHN0eWxlPSJjb2xvcjpibGFjayI+Jmd0Ozxicj4NCjxiPkRhdGU6IDwvYj5GcmlkYXksIE1h eSAxMSwgMjAxOCBhdCAyOjI3IFBNPGJyPg0KPGI+VG86IDwvYj4mcXVvdDtXYWxrZXIsIEJlbmph bWluJnF1b3Q7ICZsdDs8L3NwYW4+PGEgaHJlZj0ibWFpbHRvOmJlbmphbWluLndhbGtlckBpbnRl bC5jb20iPmJlbmphbWluLndhbGtlckBpbnRlbC5jb208L2E+PHNwYW4gc3R5bGU9ImNvbG9yOmJs YWNrIj4mZ3Q7LCAmcXVvdDtIYXJyaXMsIEphbWVzIFImcXVvdDsgJmx0Ozwvc3Bhbj48YSBocmVm PSJtYWlsdG86amFtZXMuci5oYXJyaXNAaW50ZWwuY29tIj5qYW1lcy5yLmhhcnJpc0BpbnRlbC5j b208L2E+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj4mZ3Q7PGJyPg0KPGI+Q2M6IDwvYj4mcXVv dDs8L3NwYW4+PGEgaHJlZj0ibWFpbHRvOnJhanUuZ290dHVtdWtrYWxhQGJyb2FkY29tLmNvbSI+ cmFqdS5nb3R0dW11a2thbGFAYnJvYWRjb20uY29tPC9hPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFj ayI+JnF1b3Q7ICZsdDs8L3NwYW4+PGEgaHJlZj0ibWFpbHRvOnJhanUuZ290dHVtdWtrYWxhQGJy b2FkY29tLmNvbSI+cmFqdS5nb3R0dW11a2thbGFAYnJvYWRjb20uY29tPC9hPjxzcGFuIHN0eWxl PSJjb2xvcjpibGFjayI+Jmd0OywgJnF1b3Q7TWVuZWdoaW5pLA0KIEpvaG4mcXVvdDsgJmx0Ozwv c3Bhbj48YSBocmVmPSJtYWlsdG86Sm9obi5NZW5lZ2hpbmlAbmV0YXBwLmNvbSI+Sm9obi5NZW5l Z2hpbmlAbmV0YXBwLmNvbTwvYT48c3BhbiBzdHlsZT0iY29sb3I6YmxhY2siPiZndDssICZxdW90 O1JvZHJpZ3VleiwgRWR3aW4mcXVvdDsgJmx0Ozwvc3Bhbj48YSBocmVmPSJtYWlsdG86RWQuUm9k cmlndWV6QG5ldGFwcC5jb20iPkVkLlJvZHJpZ3VlekBuZXRhcHAuY29tPC9hPjxzcGFuIHN0eWxl PSJjb2xvcjpibGFjayI+Jmd0OywgJnF1b3Q7UGFpLCBNYWRodSZxdW90OyAmbHQ7PC9zcGFuPjxh IGhyZWY9Im1haWx0bzpNYWRodXN1ZGFuLlBhaUBuZXRhcHAuY29tIj5NYWRodXN1ZGFuLlBhaUBu ZXRhcHAuY29tPC9hPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+Jmd0OywNCiAmcXVvdDtOR0Mt am9obi5iYXJuYXJkLWJyb2FkY29tLmNvbSZxdW90OyAmbHQ7PC9zcGFuPjxhIGhyZWY9Im1haWx0 bzpqb2huLmJhcm5hcmRAYnJvYWRjb20uY29tIj5qb2huLmJhcm5hcmRAYnJvYWRjb20uY29tPC9h PjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+Jmd0OywgJnF1b3Q7PC9zcGFuPjxhIGhyZWY9Im1h aWx0bzpzcGRrQGxpc3RzLjAxLm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+PHNwYW4gc3R5bGU9 ImNvbG9yOmJsYWNrIj4mcXVvdDsgJmx0Ozwvc3Bhbj48YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0 cy4wMS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+ Jmd0Ozxicj4NCjxiPlN1YmplY3Q6IDwvYj5SRTogQkRFVi1JTyBMaWZlY3ljbGUgLSBOZWVkIHlv dXIgaW5wdXQuPC9zcGFuPjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iZm9udC1m YW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij4mbmJzcDs8L3NwYW4+PG86cD48L286 cD48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDox LjBpbiI+Q0M6IExpc3Q8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPkhpIEJlbiw8bzpwPjwvbzpwPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86 cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4w aW4iPllvdXIgPGEgaHJlZj0iaHR0cHM6Ly9yZXZpZXcuZ2Vycml0aHViLmlvLyMvYy9zcGRrL3Nw ZGsvJiM0MzsvMzg2MTY2LyI+DQpwcm9wb3NhbDwvYT4gdG8gaW50ZXJmYWNlIHdpdGggdGhlIGJh Y2tlbmQgdG8gYWNxdWlyZSBhbmQgcmVsZWFzZSBidWZmZXJzIGlzIGdvb2QuIFlvdSBoYXZlIGFj Y3VyYXRlbHkgc3RhdGVkIHRoYXQgdGhlIGNoYWxsZW5nZSBpcyBpbiBkZXZlbG9waW5nIGludHVp dGl2ZSBzZW1hbnRpY3MuIEFuZCB0aGF0IGhhcyBiZWVuIG15IHN0cnVnZ2xlLiBUbyBtZSwgdGhl cmUgYXJlIHR3byBwcm9ibGVtIHN0YXRlbWVudHM7DQo8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86cD48L286cD48 L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS43NWluO3RleHQt aW5kZW50Oi0uMjVpbjttc28tbGlzdDpsMiBsZXZlbDEgbGZvNSI+DQo8IVtpZiAhc3VwcG9ydExp c3RzXT48c3BhbiBzdHlsZT0ibXNvLWxpc3Q6SWdub3JlIj4xLjxzcGFuIHN0eWxlPSJmb250Ojcu MHB0ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7DQo8L3NwYW4+PC9zcGFuPjwhW2VuZGlmXT5JdCBpcyBleHBlY3RlZCB0aGF0 IGJkZXZfaW8gcG9vbCBpcyBzaXplZCBjb3JyZWN0bHkgc28gdGhlIGNhbGwgdG8gZ2V0IGJkZXZf aW8gc3VjY2VlZHMuIEZhaWx1cmUgdG8gYWNxdWlyZSBiZGV2X2lvIHdpbGwgcmVzdWx0IGluIERF VklDRS1FUlJPUi4gVGhlIHRyYW5zcG9ydCBpcyBhbHJlYWR5IGNhcGFibGUgb2YgaGFuZGxpbmcg dGVtcG9yYXJ5IG1lbW9yeSBmYWlsdXJlcyBieSBtb3ZpbmcgdGhlIHJlcXVlc3QNCiB0byBQRU5E SU5HLVF1ZXVlLiBIZW5jZSB0aGUgcHJvcG9zYWwgdG8gY2hhbmdlIHRoZSBiZGV2X2lvIGxpZmVj eWNsZSBhbmQgcGVyaGFwcyBjb25uZWN0IGl0IHdpdGggdGhlIHNwZGtfbnZtZl9yZXF1ZXN0IG9i amVjdC4gVGh1cyBhbGwgYnVmZmVyIG5lZWRzIGFyZSBhZGRyZXNzZWQgYXQgdGhlIGJlZ2lubmlu ZyBvZiBJL08gcmVxdWVzdC48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDoxLjc1aW47dGV4dC1pbmRlbnQ6LS4yNWluO21zby1saXN0OmwyIGxl dmVsMSBsZm81Ij4NCjwhW2lmICFzdXBwb3J0TGlzdHNdPjxzcGFuIHN0eWxlPSJtc28tbGlzdDpJ Z25vcmUiPjIuPHNwYW4gc3R5bGU9ImZvbnQ6Ny4wcHQgJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1 b3Q7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCjwvc3Bhbj48L3NwYW4+ PCFbZW5kaWZdPkkvTyBEYXRhIGJ1ZmZlcnMgYXJlIHNvdXJjZWQgYW5kIG1hbmFnZWQgYnkgdGhl IGJhY2tlbmQuIE9uZSBvZiB0aGUgY2hhbGxlbmdlcyBJIHNlZSB3aXRoIHlvdXIgcHJvcG9zZWQg aW50ZXJmYWNlIGlzIHRoZSBsYWNrIG9mIGRldGFpbHMgbGlrZSBpZiByZXNvdXJjZSBpcyBiZWlu ZyBhY3F1aXJlZCBmb3IgYSBSRUFEIG9wZXJhdGlvbiBvciBXUklURSBvcGVyYXRpb24uIFRoZSBo YW5kbGluZyBpcyBxdWl0ZQ0KIGRpZmZlcmVudCBpbiBlYWNoIGNhc2UuIFNpbmNlIGJkZXZfaW8t Jmd0O3R5cGUgaXMgb3ZlcmxvYWRlZCB0aGUgdHlwZSBvZiBJL08gb3BlcmF0aW9uIGlzIGxvc3Qu IEkgc3VwcG9zZSBvbmUgY2FuIGNhc3QgdGhlIGNiX2FyZyAobnZtZl9yZXF1ZXN0KSBhbmQgdGhl biBwcm9jZWVkLiBBbHNvLCB0aGUgYmRldl9pbyBzaG91bGQgYmUgcHJlc2VudCB0byBSRUxFQVNF IHRoZSBidWZmZXIuIFplcm8gY29weSBzZW1hbnRpY3Mgd2FycmFudHMgdGhhdCBkYXRhDQogYnVm ZmVyIHN0YXlzIHVudGlsIGNvbnRyb2xsZXItdG8taG9zdCBoYXMgb2NjdXJyZWQuIEluIG90aGVy IHdvcmRzLCBiZGV2X2lvIGxpdmVzIHRpbGwgUkVRVUVTVCBjb21lIHRvIENPTVBMRVRFIHN0YXRl Lg0KPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6MS4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5 bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5XaGF0IGFyZSB5b3VyIHRob3VnaHRzIGluIGludHJvZHVj aW5nIHNwZGtfYmRldl9pbml0KCkgYW5kIHNwZGtfYmRldl9maW5pKCkgYXMgYW4gYWx0ZXJuYXRp dmUgYXBwcm9hY2ggdG8gZXh0ZW5kIHRoZSBsaWZlY3lsZSBvZiBiZGV2X2lvIGFuZCBhbGxvdyBk YXRhIGJ1ZmZlciBtYW5hZ2VtZW50IHZpYSBiZGV2IGZuX3RhYmxlID88bzpwPjwvbzpwPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86 cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4w aW4iPkkgaG9wZSBJ4oCZbSBtYWtpbmcgc2Vuc2XigKY8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86cD48L286cD48 L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlRoYW5r cyw8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVm dDoxLjBpbiI+U3Jpa2FudGg8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8ZGl2Pg0KPGRp diBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAjRTFFMUUxIDEuMHB0O3BhZGRp bmc6My4wcHQgMGluIDBpbiAwaW4iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1sZWZ0OjEuMGluIj48Yj5Gcm9tOjwvYj4gV2Fsa2VyLCBCZW5qYW1pbiAmbHQ7PGEgaHJlZj0i bWFpbHRvOmJlbmphbWluLndhbGtlckBpbnRlbC5jb20iPmJlbmphbWluLndhbGtlckBpbnRlbC5j b208L2E+Jmd0Ow0KPGJyPg0KPGI+U2VudDo8L2I+IEZyaWRheSwgTWF5IDExLCAyMDE4IDEyOjI4 IFBNPGJyPg0KPGI+VG86PC9iPiBIYXJyaXMsIEphbWVzIFIgJmx0OzxhIGhyZWY9Im1haWx0bzpq YW1lcy5yLmhhcnJpc0BpbnRlbC5jb20iPmphbWVzLnIuaGFycmlzQGludGVsLmNvbTwvYT4mZ3Q7 OyBLYWxpZ290bGEsIFNyaWthbnRoICZsdDs8YSBocmVmPSJtYWlsdG86U3Jpa2FudGguS2FsaWdv dGxhQG5ldGFwcC5jb20iPlNyaWthbnRoLkthbGlnb3RsYUBuZXRhcHAuY29tPC9hPiZndDs8YnI+ DQo8Yj5DYzo8L2I+IDxhIGhyZWY9Im1haWx0bzpyYWp1LmdvdHR1bXVra2FsYUBicm9hZGNvbS5j b20iPnJhanUuZ290dHVtdWtrYWxhQGJyb2FkY29tLmNvbTwvYT47IE1lbmVnaGluaSwgSm9obiAm bHQ7PGEgaHJlZj0ibWFpbHRvOkpvaG4uTWVuZWdoaW5pQG5ldGFwcC5jb20iPkpvaG4uTWVuZWdo aW5pQG5ldGFwcC5jb208L2E+Jmd0OzsgUm9kcmlndWV6LCBFZHdpbiAmbHQ7PGEgaHJlZj0ibWFp bHRvOkVkLlJvZHJpZ3VlekBuZXRhcHAuY29tIj5FZC5Sb2RyaWd1ZXpAbmV0YXBwLmNvbTwvYT4m Z3Q7Ow0KIFBhaSwgTWFkaHUgJmx0OzxhIGhyZWY9Im1haWx0bzpNYWRodXN1ZGFuLlBhaUBuZXRh cHAuY29tIj5NYWRodXN1ZGFuLlBhaUBuZXRhcHAuY29tPC9hPiZndDs7IE5HQy1qb2huLmJhcm5h cmQtYnJvYWRjb20uY29tICZsdDs8YSBocmVmPSJtYWlsdG86am9obi5iYXJuYXJkQGJyb2FkY29t LmNvbSI+am9obi5iYXJuYXJkQGJyb2FkY29tLmNvbTwvYT4mZ3Q7PGJyPg0KPGI+U3ViamVjdDo8 L2I+IFJlOiBCREVWLUlPIExpZmVjeWNsZSAtIE5lZWQgeW91ciBpbnB1dC48bzpwPjwvbzpwPjwv cD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6MS4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+SGkgU3Jpa2FudGgsPG86cD48L286cD48L3A+ DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6 MS4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z b05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5ZZXMgLSB3ZSdsbCBuZWVkIHRvIGlu dHJvZHVjZSBzb21lIHdheSB0byBhY3F1aXJlIGFuZCByZWxlYXNlIGJ1ZmZlcnMgZnJvbSB0aGUg YmRldiBsYXllciBlYXJsaWVyIG9uIGluIHRoZSBzdGF0ZSBtYWNoaW5lIHRoYXQgcHJvY2Vzc2Vz IGFuIE5WTWUtb0YgcmVxdWVzdC4gSSd2ZSBoYWQgdGhpcyBwYXRjaCBvdXQgZm9yIHJldmlldyBm b3Igc2V2ZXJhbCBtb250aHMNCiBhcyBhIHByb3Bvc2FsIGZvciB0aGlzIHNjZW5hcmlvOjxvOnA+ PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0OjEuMGluIj4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PGEgaHJlZj0iaHR0 cHM6Ly9yZXZpZXcuZ2Vycml0aHViLmlvLyMvYy9zcGRrL3NwZGsvJiM0MzsvMzg2MTY2LyI+aHR0 cHM6Ly9yZXZpZXcuZ2Vycml0aHViLmlvLyMvYy9zcGRrL3NwZGsvJiM0MzsvMzg2MTY2LzwvYT48 bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJtYXJnaW4tbGVmdDoxLjBpbiI+Jm5ic3A7PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPkl0IGRvZXNu J3QgcGFzcyB0aGUgdGVzdHMgLSBpdCdzIGp1c3QgYSBwcm9wb3NhbCBmb3IgdGhlIGludGVyZmFj ZS4gOTAlIG9mIHRoZSBjaGFsbGVuZ2UgaGVyZSBpcyBpbiBkZXZlbG9waW5nIGludHVpdGl2ZSBz ZW1hbnRpY3MuPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9k aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGlu Ij5UaGFua3MsPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPkJlbjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj4m bmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi IHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+UC5TLiBUaGlzIGlzIHRoZSBraW5kIG9mIGRpc2N1 c3Npb24gdGhhdCB3b3VsZCBmaXQgcGVyZmVjdGx5IG9uIHRoZSBtYWlsaW5nIGxpc3QuPG86cD48 L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy Z2luLWxlZnQ6MS4waW4iPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5PbiBXZWQsIDIwMTgt MDUtMDkgYXQgMjA6MzUgJiM0MzswMDAwLCBLYWxpZ290bGEsIFNyaWthbnRoIHdyb3RlOjxvOnA+ PC9vOnA+PC9wPg0KPC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVy LWxlZnQ6c29saWQgIzcyOUZDRiAxLjVwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdp bi1sZWZ0OjQuOHB0O21hcmdpbi10b3A6NS4wcHQ7bWFyZ2luLXJpZ2h0OjBpbjttYXJnaW4tYm90 dG9tOjUuMHB0Ij4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6MS4waW4iPkhpIEJlbiwgSGkgSmFtZXMsPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPiZuYnNwOzxv OnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9 Im1hcmdpbi1sZWZ0OjEuMGluIj5JIHdvdWxkIGxpa2UgdG8gc29saWNpdCBvcGluaW9ucyBvbiB0 aGUgbGlmZWN5Y2xlIGZvciBiZGV2LWlvIHJlc291cmNlIG9iamVjdC4gQXR0YWNoZWQgaXMgdGhl IGltYWdlIG9mIFJETUEgc3RhdGUgbWFjaGluZSBpbiBpdHMgY3VycmVudCBpbXBsZW1lbnRhdGlv bi4gV2hlbiB0aGUgUkVRVUVTVCBlbnRlcnMgdGhlIE5FRUQtQlVGRkVSIHN0YXRlLCB0aGUgYnVm ZmVycw0KIG5lY2Vzc2FyeSBmb3IgY2Fycnlpbmcgb3V0IEkvTyBvcGVyYXRpb24gYXJlIGFsbG9j YXRlZC9hY3F1aXJlZCBmcm9tIHRoZSBtZW1vcnkgcG9vbC4gQW4gaW5zdGFuY2Ugb2YgQkRFVi1J TyBjb21lcyBpbnRvIGV4aXN0ZW5jZSBhZnRlciBSRVFVRVNUIHJlYWNoZXMgUkVBRFktVE8tRVhF Q1VURSBzdGF0ZS4gVGhlIEJERVYtSU8gaXMgdGVhcmVkIGRvd24gYXMgc29vbiB0aGUgYmFja2Vu ZCByZXR1cm5zLiBGcm9tIGEgQkRFViBwZXJzcGVjdGl2ZSwNCiBCREVWLUlPIGlzIHNpbXBseSBh IHRyYW5zbGF0aW9uIHVuaXQgdGhhdCBmYWNpbGl0YXRlcyBJL08gYnVmZmVycyBmcm9tIHRoZSBi YWNrZW5kLiBUaGUgZHJpdmVyIGNvbnRleHQgZW1iZWRkZWQgd2l0aGluIGJkZXZfaW8gaG9sZHMg Z3JlYXQgZGVhbCBvZiBpbmZvcm1hdGlvbiBwZXJ0YWluaW5nIHRvIHRoZSBJL08gdW5kZXIgZXhl Y3V0aW9uLiBJdCBhc3Npc3RzIGluIGVycm9yIGhhbmRsaW5nLCBkZXJlZmVyZW5jaW5nIHRoZSBi dWZmZXJzIHVwb24NCiBJL08gY29tcGxldGlvbiBhbmQgaW4gYWJvcnQgaGFuZGxpbmcuIEluIHN1 bW1hcnksIHRoZSBiZGV2X2lvIHN0YXlzIGFsaXZlIHVudGlsIHJlcXVlc3QgaGFzIGNvbWUgdG8g Q09NUExFVEUgc3RhdGUuIEnigJlkIGxpa2UgdG8gaGVhciBwZW9wbGVzIHRob3VnaHRzIGluIGlu dHJvZHVjaW5nIHRoZSBwbHVtYmluZyB0byBhY3F1aXJlIEJERVYtSU8gcmVzb3VyY2UgaW4gUkVR VUVTVC1ORUVELUJVRkZFUiBzdGF0ZSBhbmQgcmVsZWFzZSBpdCBpbiBSRVFVRVNULUNPTVBMRVRF DQogc3RhdGUuJm5ic3A7IEkgd2lsbCBzaG9ydGx5IGhhdmUgcGF0Y2ggYXZhaWxhYmxlIGZvciBy ZXZpZXcgdGhhdCBpbnRyb2R1Y2VzIHNwZGtfYmRldl9pbml0IGFuZCBzcGRrX2JkZXZfZmluaSB3 aGljaCBpbiB0dXJuIGludm9rZXMgdGhlIGNvcnJlc3BvbmRpbmcgYmRldiBmbl90YWJsZSB0byAm bmJzcDtpbml0aWFsaXplL2NsZWFudXAuICZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8 ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj4mbmJz cDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+SSB3YW50ZWQgdG8gdXNlIHRoaXMgZW1haWwgdG8gY29t bXVuaWNhdGUgb3VyIGludGVudCBhbmQgc29saWNpdCB5b3VyIGZlZWRiYWNrLiBXZSBoYXZlIGEg d29ya2luZyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWJvdmUgcHJvcG9zYWwgYW5kIHByaW9yIHRv IHB1c2hpbmcgaXQgdXBzdHJlYW0gZm9yIHJldmlldyB3b3VsZCBsaWtlIHRvIGhlYXIgeW91ciB0 aG91Z2h0cy4NCiBUaGVzZSBwcm9wb3NlZCBjaGFuZ2VzIHRvIHVwc3RyZWFtIGFyZSBhIHJlc3Vs dCBvZiBGQyB0cmFuc3BvcnQgd29yayBpbiBjb2xsYWJvcmF0aW9uIHdpdGggdGhlIEJyb2FkY29t IHRlYW0gd2hvIGFyZSBhbHNvIGNvcGllZCB0byB0aGlzIG1haWwuIE15c2VsZiBhbmQgSm9obiB3 aWxsIGJlIGF0IFNQREsgRGV2IGNvbmZlcmVuY2UgYW5kIGlmIHJlcXVpcmVkIHdlIGNhbiBlbGFi b3JhdGUgZnVydGhlciBvbiB0aGlzIHByb3Bvc2FsLjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8 ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj4mbmJz cDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+VGhhbmtzLDxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8 ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5Tcmlr YW50aDxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Jsb2NrcXVvdGU+DQo8ZGl2Pg0KPHAgY2xh c3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj4mbmJzcDs8bzpwPjwvbzpw PjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --===============3825704507623936872==--