<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>58448</bug_id>
          
          <creation_ts>2011-04-13 09:25:12 -0700</creation_ts>
          <short_desc>[Qt] Implement initial support to DataTransferItems</short_desc>
          <delta_ts>2011-05-03 13:30:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>58656</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Igor Trindade Oliveira">igor.oliveira</reporter>
          <assigned_to name="Igor Trindade Oliveira">igor.oliveira</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dcheng</cc>
    
    <cc>dimich</cc>
    
    <cc>kling</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384941</commentid>
    <comment_count>0</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-04-13 09:25:12 -0700</bug_when>
    <thetext>DataTransferItem and DataTransferItems are used to retrieve data from drop and paste operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384963</commentid>
    <comment_count>1</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-04-13 09:48:29 -0700</bug_when>
    <thetext>That remind me of something. Which spec is that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385079</commentid>
    <comment_count>2</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-04-13 11:48:42 -0700</bug_when>
    <thetext>http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-datatransferitems-interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386015</commentid>
    <comment_count>3</comment_count>
      <attachid>89640</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-04-14 13:58:14 -0700</bug_when>
    <thetext>Created attachment 89640
Add initial implementation of datatransferitems

Add initial implementation of datatransferitems. It is based on chrome implementation. And right now it is not supporting images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386039</commentid>
    <comment_count>4</comment_count>
      <attachid>89640</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-04-14 14:35:47 -0700</bug_when>
    <thetext>Comment on attachment 89640
Add initial implementation of datatransferitems

View in context: https://bugs.webkit.org/attachment.cgi?id=89640&amp;action=review

Interesting stuff. :)

There seems to be a lot of code duplication in the DataTransferItemsQt implementation, maybe we could share the common paths with DataTransferItemsChromium somehow? On a related note, when adding derived code like this, you should leave the original copyright (as well as adding your own if applicable.)

&gt; Source/WebCore/bindings/js/JSDataTransferItemsCustom.cpp:14
&gt; +bool JSDataTransferItems::deleteProperty(ExecState *exec, const Identifier&amp; propertyName)
&gt; +{
&gt; +    return Base::deleteProperty(exec, propertyName);
&gt; +}

This should be avoidable using a conditional in the IDL file. Though what does Chromium do in their custom deleteProperty?

&gt; Source/WebCore/platform/qt/ClipboardQt.cpp:369
&gt; +    RefPtr&lt;DataTransferItemsQt&gt; items = DataTransferItemsQt::create(this, m_frame-&gt;document()-&gt;scriptExecutionContext());

m_frame-&gt;document() is guaranteed to be non-null here?

&gt; Source/WebCore/platform/qt/ClipboardQt.h:90
&gt; +    Frame *m_frame;

Coding style, Frame* m_frame;

&gt; Source/WebCore/platform/qt/DataTransferItemQt.cpp:29
&gt; +#include &lt;QtCore/QDebug&gt;

Remove.

&gt; Source/WebCore/platform/qt/DataTransferItemQt.cpp:104
&gt; +    }

What about other MIME types?

&gt; Source/WebCore/platform/qt/DataTransferItemsQt.cpp:29
&gt; +#include &lt;QtCore/QDebug&gt;

Remove.

&gt; Source/WebCore/platform/qt/DataTransferItemsQt.cpp:55
&gt; +    qDebug() &lt;&lt; m_items.size();

Remove.

&gt; Source/WebCore/platform/qt/DataTransferItemsQt.h:55
&gt; +    friend class ClipboardQt;

Unnecessary friend declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395391</commentid>
    <comment_count>5</comment_count>
      <attachid>91710</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-04-29 11:34:57 -0700</bug_when>
    <thetext>Created attachment 91710
Patch

Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395399</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-29 11:44:29 -0700</bug_when>
    <thetext>Attachment 91710 did not build on qt:
Build output: http://queues.webkit.org/results/8524237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395404</commentid>
    <comment_count>7</comment_count>
      <attachid>91712</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-04-29 11:57:06 -0700</bug_when>
    <thetext>Created attachment 91712
Patch

Fix build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395951</commentid>
    <comment_count>8</comment_count>
      <attachid>91712</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-01 10:43:34 -0700</bug_when>
    <thetext>Comment on attachment 91712
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=91712&amp;action=review

Looks reasonable.

&gt; Source/WebCore/platform/qt/DataTransferItemQt.cpp:103
&gt; +        QByteArray rawData = mimeData-&gt;data(type());
&gt; +        data = QTextCodec::codecForName(&quot;UTF-16&quot;)-&gt;toUnicode(rawData);

I would have probably just written this as one line, but this is fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395953</commentid>
    <comment_count>9</comment_count>
      <attachid>91712</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-01 10:44:19 -0700</bug_when>
    <thetext>Comment on attachment 91712
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=91712&amp;action=review

&gt; Source/WebCore/dom/DataTransferItems.idl:38
&gt; +#if defined(V8_BINDING) &amp;&amp; V8_BINDING
&gt;          CustomDeleteProperty,
&gt; +#endif

actually... why is this needed here?  Why haven&apos;t other ports needed/wanted this idl change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396363</commentid>
    <comment_count>10</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-05-02 06:59:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 91712 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91712&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/DataTransferItems.idl:38
&gt; &gt; +#if defined(V8_BINDING) &amp;&amp; V8_BINDING
&gt; &gt;          CustomDeleteProperty,
&gt; &gt; +#endif
&gt; 
&gt; actually... why is this needed here?  Why haven&apos;t other ports needed/wanted this idl change?

The other ports haven&apos;t needed this idl change because just Chromium has implemented DataTransferItems support :). And DataTransferItems are not accessed outside event handler so IMHO i think we do not need to do safe guards for deletions from cross domain access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397238</commentid>
    <comment_count>11</comment_count>
      <attachid>91712</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-03 11:55:29 -0700</bug_when>
    <thetext>Comment on attachment 91712
Patch

OK.  Thanks for the update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397315</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-03 13:28:40 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 91712:

http/tests/xmlhttprequest/cross-origin-no-authorization.html bug 33357 (author: ap@webkit.org)
http/tests/appcache/main-resource-hash.html bug 59902 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397316</commentid>
    <comment_count>13</comment_count>
      <attachid>91712</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-03 13:30:09 -0700</bug_when>
    <thetext>Comment on attachment 91712
Patch

Clearing flags on attachment: 91712

Committed r85648: &lt;http://trac.webkit.org/changeset/85648&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397317</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-03 13:30:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89640</attachid>
            <date>2011-04-14 13:58:14 -0700</date>
            <delta_ts>2011-04-29 11:34:57 -0700</delta_ts>
            <desc>Add initial implementation of datatransferitems</desc>
            <filename>0001-WIPbug58448.patch</filename>
            <type>text/plain</type>
            <size>22520</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBjM2NjZDYzMWMwNmRlMTg1Y2FjOTk1ZDc1MTYwZjdkNzA1MTkyZDc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMTQgQXByIDIwMTEgMTY6NTU6NDggLTA0MDAKU3ViamVjdDogW1BB
VENIXSBXSVBidWc1ODQ0OAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTAgKysKIC4uLi9iaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2Zl
ckl0ZW1zQ3VzdG9tLmNwcCAgICAgIHwgICAxNiArKysKIC4uLi9iaW5kaW5ncy9qcy9KU0RhdGFU
cmFuc2Zlckl0ZW1zQ3VzdG9tLmggICAgICAgIHwgICAgNiArCiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL3F0L0VkaXRvclF0LmNwcCAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwICAgICAgICAgfCAgIDI1ICsrKystCiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oICAgICAgICAgICB8ICAgMTYg
KystCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwICB8
ICAxMDkgKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0
YVRyYW5zZmVySXRlbVF0LmggICAgfCAgIDc2ICsrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtc1F0LmNwcCB8ICAxMTAgKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQu
aCAgIHwgICA3MCArKysrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA0MzEgaW5zZXJ0aW9u
cygrKSwgMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJJdGVtc0N1c3RvbS5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFUcmFuc2Zlckl0ZW1zQ3VzdG9t
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJh
bnNmZXJJdGVtUXQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtc1F0LmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQuaAoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KaW5kZXggMDJmOGEyOS4uYTczMmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI1NTUs
NiArMjU1NSwxNiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQu
Y3BwIFwKICAgICBwbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKIAorY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVM9MSkgeworICAgIEhFQURFUlMgKz0gXAorICAgICAg
ICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJJdGVtc0N1c3RvbS5oIFwKKyAgICAg
ICAgICAgICAgIHBsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1RdC5oIFwKKyAgICAgICAgICAg
ICAgIHBsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQuaAorICAgIFNPVVJDRVMgKz0gXAor
ICAgICAgICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJJdGVtc0N1c3RvbS5jcHAg
XAorICAgICAgICAgICAgICAgcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmNwcCBcCisg
ICAgICAgICAgICAgICBwbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtc1F0LmNwcAorfQogCiBj
b250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX01PQklMRV9USEVNRT0xKSB7CiAgICAgSEVBREVS
UyArPSBwbGF0Zm9ybS9xdC9RdE1vYmlsZVdlYlN0eWxlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVySXRlbXNDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVHJhbnNmZXJJdGVtc0N1c3RvbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcxYWRjMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVySXRlbXNDdXN0b20uY3Bw
CkBAIC0wLDAgKzEsMTYgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RhdGFU
cmFuc2Zlckl0ZW1zQ3VzdG9tLmgiCisKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtcy5oIgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNEYXRhVHJhbnNmZXJJdGVtczo6ZGVsZXRl
UHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
Cit7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRy
YW5zZmVySXRlbXNDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YVRy
YW5zZmVySXRlbXNDdXN0b20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
MjFiZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
YXRhVHJhbnNmZXJJdGVtc0N1c3RvbS5oCkBAIC0wLDAgKzEsNiBAQAorI2lmbmRlZiBKU0RhdGFU
cmFuc2Zlckl0ZW1zQ3VzdG9tX2gKKyNkZWZpbmUgSlNEYXRhVHJhbnNmZXJJdGVtc0N1c3RvbV9o
CisKKyNpbmNsdWRlICJKU0RhdGFUcmFuc2Zlckl0ZW1zLmgiCisKKyNlbmRpZiAvL0pTRGF0YVRy
YW5zZmVySXRlbXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9xdC9FZGl0
b3JRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNwcAppbmRleCBm
ZmIyNGU3Li42OGYyYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3F0L0Vk
aXRvclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNwcApA
QCAtMzksOSArMzksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgRnJhbWUqKQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJh
bENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7
Ci0gICAgcmV0dXJuIENsaXBib2FyZFF0OjpjcmVhdGUocG9saWN5KTsKKyAgICByZXR1cm4gQ2xp
cGJvYXJkUXQ6OmNyZWF0ZShwb2xpY3ksIGZyYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAppbmRleCAwMzQz
Yzc5Li4yYjg4MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFu
ZGxlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNw
cApAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCogd2lkCiAKIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwg
Q2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CisgICAgcmV0dXJuIENsaXBib2FyZFF0OjpjcmVhdGUo
Q2xpcGJvYXJkV3JpdGFibGUsIG1fZnJhbWUsIENsaXBib2FyZDo6RHJhZ0FuZERyb3ApOwogfQog
CiBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKaW5kZXggNzIzY2RkNC4uY2E0ZDc4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkUXQuaCIK
KyNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtc1F0LmgiCiAKICNpbmNsdWRlICJDYWNoZWRJbWFn
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC03MCwyMyArNzEsMjUgQEAgc3RhdGljIGJv
b2wgaXNIdG1sTWltZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB0eXBlID09
ICJ0ZXh0L2h0bWwiIHx8IHR5cGUuc3RhcnRzV2l0aCgidGV4dC9odG1sOyIpOwogfQogCi1QYXNz
UmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgRHJhZ0RhdGEqIGRyYWdEYXRhLCBGcmFtZSopCitQYXNzUmVmUHRyPENsaXBib2Fy
ZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRHJhZ0Rh
dGEqIGRyYWdEYXRhLCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZFF0Ojpj
cmVhdGUocG9saWN5LCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCkpOworICAgIHJldHVybiBDbGlw
Ym9hcmRRdDo6Y3JlYXRlKHBvbGljeSwgZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgpLCBmcmFtZSk7
CiB9CiAKLUNsaXBib2FyZFF0OjpDbGlwYm9hcmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBjb25zdCBRTWltZURhdGEqIHJlYWRhYmxlQ2xpcGJvYXJkKQorQ2xpcGJvYXJkUXQ6OkNs
aXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGNvbnN0IFFNaW1lRGF0YSog
cmVhZGFibGVDbGlwYm9hcmQsIEZyYW1lKiBmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xpY3ks
IERyYWdBbmREcm9wKQogICAgICwgbV9yZWFkYWJsZURhdGEocmVhZGFibGVDbGlwYm9hcmQpCiAg
ICAgLCBtX3dyaXRhYmxlRGF0YSgwKQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKICAgICBRX0FT
U0VSVChwb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgcG9saWN5ID09IENsaXBib2FyZFR5
cGVzUmVhZGFibGUpOwogfQogCi1DbGlwYm9hcmRRdDo6Q2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQorQ2xpcGJvYXJk
UXQ6OkNsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lICpmcmFt
ZSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwg
Y2xpcGJvYXJkVHlwZSkKICAgICAsIG1fcmVhZGFibGVEYXRhKDApCiAgICAgLCBtX3dyaXRhYmxl
RGF0YSgwKQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKICAgICBRX0FTU0VSVChwb2xpY3kgPT0g
Q2xpcGJvYXJkUmVhZGFibGUgfHwgcG9saWN5ID09IENsaXBib2FyZFdyaXRhYmxlIHx8IHBvbGlj
eSA9PSBDbGlwYm9hcmROdW1iKTsKIApAQCAtMzYwLDQgKzM2MywxOCBAQCBib29sIENsaXBib2Fy
ZFF0OjpoYXNEYXRhKCkKICAgICByZXR1cm4gZGF0YS0+Zm9ybWF0cygpLmNvdW50KCkgPiAwOwog
fQogCisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCitQYXNzUmVmUHRyPERhdGFUcmFu
c2Zlckl0ZW1zPiBDbGlwYm9hcmRRdDo6aXRlbXMoKQoreworICAgIFJlZlB0cjxEYXRhVHJhbnNm
ZXJJdGVtc1F0PiBpdGVtcyA9IERhdGFUcmFuc2Zlckl0ZW1zUXQ6OmNyZWF0ZSh0aGlzLCBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAgaWYgKGlz
Rm9yQ29weUFuZFBhc3RlKCkgJiYgcG9saWN5KCkgPT0gQ2xpcGJvYXJkUmVhZGFibGUpIHsKKyAg
ICAgICAgY29uc3QgUVN0cmluZ0xpc3QgdHlwZXMgPSBtX3JlYWRhYmxlRGF0YS0+Zm9ybWF0cygp
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzLmNvdW50KCk7ICsraSkKKyAgICAg
ICAgICAgIGl0ZW1zLT5hZGRQYXN0ZWJvYXJkSXRlbSh0eXBlcy5hdChpKSk7CisgICAgfQorICAg
IHJldHVybiBpdGVtczsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
Q2xpcGJvYXJkUXQuaAppbmRleCA4ZDc4NjM0Li5mMTYzNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmgKQEAgLTQxLDEzICs0MSwxMyBAQCBjbGFzcyBDYWNoZWRJ
bWFnZTsKIGNsYXNzIENsaXBib2FyZFF0IDogcHVibGljIENsaXBib2FyZCwgcHVibGljIENhY2hl
ZFJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRRdD4gY3JlYXRlKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIGNvbnN0IFFNaW1lRGF0YSogcmVhZGFibGVDbGlwYm9hcmQpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkUXQ+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBjb25zdCBRTWltZURhdGEqIHJlYWRhYmxlQ2xpcGJvYXJkLCBGcmFtZSogZnJh
bWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFF0KHBvbGlj
eSwgcmVhZGFibGVDbGlwYm9hcmQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlw
Ym9hcmRRdChwb2xpY3ksIHJlYWRhYmxlQ2xpcGJvYXJkLCBmcmFtZSkpOwogICAgIH0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRRdD4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSA9IENvcHlBbmRQYXN0ZSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRRdD4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlID0g
Q29weUFuZFBhc3RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9h
cmRRdChwb2xpY3ksIGNsaXBib2FyZFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDbGlwYm9hcmRRdChwb2xpY3ksIGZyYW1lLCBjbGlwYm9hcmRUeXBlKSk7CiAgICAgfQogICAg
IHZpcnR1YWwgfkNsaXBib2FyZFF0KCk7CiAKQEAgLTc0LDE2ICs3NCwyMCBAQCBwdWJsaWM6CiAg
ICAgUU1pbWVEYXRhKiBjbGlwYm9hcmREYXRhKCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZURh
dGE7IH0KICAgICB2b2lkIGludmFsaWRhdGVXcml0YWJsZURhdGEoKSB7IG1fd3JpdGFibGVEYXRh
ID0gMDsgfQogCisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1zPiBpdGVtcygpOworI2VuZGlmCiBwcml2YXRlOgot
ICAgIENsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSwgY29uc3QgUU1pbWVEYXRhKiBy
ZWFkYWJsZUNsaXBib2FyZCk7CisgICAgQ2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LCBjb25zdCBRTWltZURhdGEqIHJlYWRhYmxlQ2xpcGJvYXJkLCBGcmFtZSogZnJhbWUpOwogCiAg
ICAgLy8gQ2xpcGJvYXJkIGlzIHdyaXRhYmxlIHNvIGl0IHdpbGwgY3JlYXRlIGl0cyBvd24gUU1p
bWVEYXRhIG9iamVjdAotICAgIENsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSwgQ2xp
cGJvYXJkVHlwZSk7CisgICAgQ2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFt
ZSosIENsaXBib2FyZFR5cGUpOwogCiAgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2Uq
LCBOb2RlKiwgY29uc3QgSW50UG9pbnQmIGxvYyk7CiAKICAgICBjb25zdCBRTWltZURhdGEqIG1f
cmVhZGFibGVEYXRhOwogICAgIFFNaW1lRGF0YSogbV93cml0YWJsZURhdGE7CisgICAgRnJhbWUg
Km1fZnJhbWU7CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0
YVRyYW5zZmVySXRlbVF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
NzVkMWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0
YVRyYW5zZmVySXRlbVF0LmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YVRyYW5zZmVySXRlbVF0Lmgi
CisKKyNpbmNsdWRlIDxRdENvcmUvUURlYnVnPgorCisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJf
SVRFTVMpCisKKyNpbmNsdWRlICJDbGlwYm9hcmQuaCIKKyNpbmNsdWRlICJTdHJpbmdDYWxsYmFj
ay5oIgorCisjaW5jbHVkZSA8UXRDb3JlL1FNaW1lRGF0YT4KKyNpbmNsdWRlIDxRdEd1aS9RQ2xp
cGJvYXJkPgorI2luY2x1ZGUgPFF0R3VpL1FBcHBsaWNhdGlvbj4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1RdD4gRGF0YVRyYW5zZmVySXRlbVF0
OjpjcmVhdGVGcm9tUGFzdGVib2FyZChQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIiB8
fCB0eXBlID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFU
cmFuc2Zlckl0ZW1RdChvd25lciwgY29udGV4dCwgUGFzdGVkU291cmNlLCBEYXRhVHJhbnNmZXJJ
dGVtOjpraW5kU3RyaW5nLCB0eXBlLCAiIikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0
YVRyYW5zZmVySXRlbVF0KG93bmVyLCBjb250ZXh0LCBQYXN0ZWRTb3VyY2UsIERhdGFUcmFuc2Zl
ckl0ZW06OmtpbmRGaWxlLCB0eXBlLCAiIikpOworfQorCitQYXNzUmVmUHRyPERhdGFUcmFuc2Zl
ckl0ZW1RdD4gRGF0YVRyYW5zZmVySXRlbVF0OjpjcmVhdGUoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+
IG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IERhdGFUcmFuc2Zlckl0ZW1RdChvd25lciwgY29udGV4dCwgSW50ZXJuYWxTb3VyY2UsIERhdGFU
cmFuc2Zlckl0ZW06OmtpbmRTdHJpbmcsIHR5cGUsIGRhdGEpKTsKK30KKworRGF0YVRyYW5zZmVy
SXRlbVF0OjpEYXRhVHJhbnNmZXJJdGVtUXQoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGF0YVNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcgJmRhdGEpCisgICAgOiBtX293bmVyKG93bmVy
KSwKKyAgICAgIG1fY29udGV4dChjb250ZXh0KSwKKyAgICAgIG1fc291cmNlKHNvdXJjZSksCisg
ICAgICBtX2tpbmQoa2luZCksCisgICAgICBtX3R5cGUodHlwZSksCisgICAgICBtX2RhdGEoZGF0
YSkKK3sKK30KKworCitTdHJpbmcgRGF0YVRyYW5zZmVySXRlbVF0OjpEYXRhVHJhbnNmZXJJdGVt
UXQ6OmtpbmQoKSBjb25zdAoreworICAgIGlmIChtX293bmVyLT5wb2xpY3koKSA9PSBDbGlwYm9h
cmROdW1iKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fa2luZDsKK30K
KworU3RyaW5nIERhdGFUcmFuc2Zlckl0ZW1RdDo6dHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKG1f
b3duZXItPnBvbGljeSgpID09IENsaXBib2FyZE51bWIpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKyAgICByZXR1cm4gbV90eXBlOworfQorCit2b2lkIERhdGFUcmFuc2Zlckl0ZW1RdDo6Z2V0
QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgY29u
c3QgUU1pbWVEYXRhKiBtaW1lRGF0YSA9IFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPm1pbWVE
YXRhKFFDbGlwYm9hcmQ6OkNsaXBib2FyZCk7CisKKyAgICBpZiAoKG1fb3duZXItPnBvbGljeSgp
ICE9IENsaXBib2FyZFJlYWRhYmxlICYmIG1fb3duZXItPnBvbGljeSgpICE9IENsaXBib2FyZFdy
aXRhYmxlKSB8fCBtX2tpbmQgIT0ga2luZFN0cmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1fc291cmNlID09IEludGVybmFsU291cmNlKSB7CisgICAgICAgIGNhbGxiYWNrLT5zY2hl
ZHVsZUNhbGxiYWNrKG1fY29udGV4dCwgbV9kYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3R5cGUgPT0gInRleHQvcGxhaW4iKSB7CisgICAgICAgIGNhbGxiYWNrLT5z
Y2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dCwgbWltZURhdGEtPnRleHQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIikgeworICAgICAgICBj
YWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhtX2NvbnRleHQsIG1pbWVEYXRhLT5odG1sKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zYWI2ODk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmgKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERhdGFUcmFuc2Zlckl0ZW1RdF9oCisjZGVmaW5l
IERhdGFUcmFuc2Zlckl0ZW1RdF9oCisKKyNpZiBFTkFCTEUoREFUQV9UUkFOU0ZFUl9JVEVNUykK
KworI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ2xpcGJvYXJkOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xh
c3MgRGF0YVRyYW5zZmVySXRlbVF0IDogcHVibGljIERhdGFUcmFuc2Zlckl0ZW0geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1RdD4gY3JlYXRlRnJvbVBh
c3RlYm9hcmQoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAorCQkJCQkJCSAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwKKwkJCQkJCQkgICAgICAgY29uc3QgU3RyaW5nICZ0eXBlKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtUXQ+IGNyZWF0ZShQYXNzUmVm
UHRyPENsaXBib2FyZD4gb3duZXIsCisJCQkJCQkgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCisJ
CQkJCQkgY29uc3QgU3RyaW5nJiBkYXRhLAorCQkJCQkJIGNvbnN0IFN0cmluZyYgdHlwZSk7CisK
KyAgICB2aXJ0dWFsIFN0cmluZyBraW5kKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdHlw
ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3Ry
aW5nQ2FsbGJhY2s+KTsKKworcHJpdmF0ZToKKyAgICBlbnVtIERhdGFTb3VyY2UgeworICAgICAg
ICBQYXN0ZWRTb3VyY2UsCisgICAgICAgIEludGVybmFsU291cmNlCisgICAgfTsKKworICAgIERh
dGFUcmFuc2Zlckl0ZW1RdChQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLAorCQkgICAgICAgRGF0YVNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcgJmRhdGEpOworCisgICAgY29u
c3QgUmVmUHRyPENsaXBib2FyZD4gbV9vd25lcjsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBtX2NvbnRleHQ7CisgICAgRGF0YVNvdXJjZSBtX3NvdXJjZTsKKyAgICBjb25zdCBTdHJpbmcg
bV9raW5kOworICAgIGNvbnN0IFN0cmluZyBtX3R5cGU7CisgICAgY29uc3QgU3RyaW5nIG1fZGF0
YTsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbXNRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtc1F0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iNWNmMjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbXNRdC5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFU
cmFuc2Zlckl0ZW1zUXQuaCIKKworI2luY2x1ZGUgPFF0Q29yZS9RRGVidWc+CisKKyNpZiBFTkFC
TEUoREFUQV9UUkFOU0ZFUl9JVEVNUykKKworI2luY2x1ZGUgIkNsaXBib2FyZC5oIgorI2luY2x1
ZGUgIkRhdGFUcmFuc2Zlckl0ZW1RdC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1zUXQ+IERh
dGFUcmFuc2Zlckl0ZW1zUXQ6OmNyZWF0ZShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEYXRhVHJhbnNmZXJJdGVtc1F0KG93bmVyLCBjb250ZXh0KSk7Cit9CisKK0RhdGFUcmFuc2Zl
ckl0ZW1zUXQ6OkRhdGFUcmFuc2Zlckl0ZW1zUXQoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV9vd25lcihvd25lcikK
KyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9pdGVtcygwKQoreworfQorCit1bnNp
Z25lZCBsb25nIERhdGFUcmFuc2Zlckl0ZW1zUXQ6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYg
KG1fb3duZXItPnBvbGljeSgpID09IENsaXBib2FyZE51bWIpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHFEZWJ1ZygpIDw8IG1faXRlbXMuc2l6ZSgpOworICAgIHJldHVybiBtX2l0ZW1zLnNpemUo
KTsKK30KKworUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPiBEYXRhVHJhbnNmZXJJdGVtc1F0
OjppdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fb3duZXItPnBv
bGljeSgpID09IENsaXBib2FyZE51bWIgfHwgaW5kZXggPj0gbGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBtX2l0ZW1zW2luZGV4XTsKK30KKwordm9pZCBEYXRhVHJhbnNm
ZXJJdGVtc1F0OjpkZWxldGVJdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmIChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkg
eworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2l0ZW1zLnJlbW92ZShpbmRleCk7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVySXRlbXNRdDo6Y2xl
YXIoKQoreworICAgIGlmIChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9pdGVtcy5jbGVhcigpOworfQorCit2b2lkIERhdGFU
cmFuc2Zlckl0ZW1zUXQ6OmFkZChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fb3duZXItPnBvbGljeSgpICE9IENs
aXBib2FyZFdyaXRhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IG9uZSAnc3Ry
aW5nJyBpdGVtIHdpdGggYSBnaXZlbiB0eXBlIGlzIGFsbG93ZWQgaW4gdGhlIGNvbGxlY3Rpb24u
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2l0ZW1zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChtX2l0ZW1zW2ldLT50eXBlKCkgPT0gdHlwZSAmJiBtX2l0ZW1zW2ldLT5raW5kKCkg
PT0gRGF0YVRyYW5zZmVySXRlbTo6a2luZFN0cmluZykgeworICAgICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIG1faXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW1RdDo6Y3JlYXRlKG1fb3duZXIsIG1f
Y29udGV4dCwgZGF0YSwgdHlwZSkpOworfQorCit2b2lkIERhdGFUcmFuc2Zlckl0ZW1zUXQ6OmFk
ZFBhc3RlYm9hcmRJdGVtKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBtX2l0ZW1zLmFwcGVu
ZChEYXRhVHJhbnNmZXJJdGVtUXQ6OmNyZWF0ZUZyb21QYXN0ZWJvYXJkKG1fb3duZXIsIG1fY29u
dGV4dCwgdHlwZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoREFUQV9UUkFOU0ZFUl9JVEVNUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45NTdlZWI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvRGF0YVRyYW5zZmVySXRlbXNRdC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBEYXRhVHJhbnNmZXJJdGVtc1F0X2gKKyNkZWZpbmUgRGF0YVRyYW5z
ZmVySXRlbXNRdF9oCisKKyNpZiBFTkFCTEUoREFUQV9UUkFOU0ZFUl9JVEVNUykKKworI2luY2x1
ZGUgIkRhdGFUcmFuc2Zlckl0ZW1zLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2luY2x1ZGUgPFF0Q29yZS9RVmVjdG9yPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENsaXBib2FyZDsKK2NsYXNzIERhdGFUcmFuc2Zlckl0ZW1R
dDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIERhdGFUcmFuc2Zlckl0
ZW1zUXQgOiBwdWJsaWMgRGF0YVRyYW5zZmVySXRlbXMgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1zUXQ+IGNyZWF0ZShQYXNzUmVmUHRyPENsaXBib2Fy
ZD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyBsZW5ndGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRl
bT4gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlSXRlbSh1bnNpZ25lZCBsb25nIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVh
bCB2b2lkIGNsZWFyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJik7CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIENsaXBib2FyZFF0OworCisgICAgRGF0YVRyYW5zZmVySXRlbXNRdChQYXNz
UmVmUHRyPENsaXBib2FyZD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZpcnR1
YWwgdm9pZCBhZGRQYXN0ZWJvYXJkSXRlbShjb25zdCBTdHJpbmcmIHR5cGUpOworCisgICAgUmVm
UHRyPENsaXBib2FyZD4gbV9vd25lcjsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2Nv
bnRleHQ7CisgICAgUVZlY3RvcjxSZWZQdHI8RGF0YVRyYW5zZmVySXRlbVF0PiA+IG1faXRlbXM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYKLS0gCjEu
Ny4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91710</attachid>
            <date>2011-04-29 11:34:57 -0700</date>
            <delta_ts>2011-04-29 11:57:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Implement-initial-support-to-DataTransferItems.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91712</attachid>
            <date>2011-04-29 11:57:06 -0700</date>
            <delta_ts>2011-05-03 13:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Implement-initial-support-to-DataTransferItems.patch</filename>
            <type>text/plain</type>
            <size>26863</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA1ZTJlYTJkNWI1NWUwOWNjMDBhNDNkZjA4ODJiYjMyYTgxNzk3YTNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IEZyaSwgMjkgQXByIDIwMTEgMTM6MTk6NDIgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBJbXBsZW1lbnQgaW5pdGlhbCBzdXBwb3J0IHRvIERhdGFUcmFuc2Zlckl0ZW1zCgotLS0K
IExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx
NyArKysKIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgICAgICAgICAgICAgICAgICAg
IHwgICAgMyAtCiAuLi4vcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4
dCAgICB8ICAgMjUgKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDM4ICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlckl0ZW1zLmlkbCAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvcXQvRWRpdG9yUXQuY3BwICAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYkNvcmUv
cGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgICAgICAgICB8ICAgMzIgKysrKystCiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oICAgICAgICAgICB8ICAgMTcg
KystCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwICB8
ICAxMTcgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Rh
dGFUcmFuc2Zlckl0ZW1RdC5oICAgIHwgICA3MiArKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQuY3BwIHwgICA1NCArKysrKysrKysKIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQuaCAgIHwgICA1NiAr
KysrKysrKysrCiAxNCBmaWxlcyBjaGFuZ2VkLCA0MjkgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFu
c2Zlckl0ZW1RdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvRGF0YVRyYW5zZmVySXRlbXNRdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtc1F0LmgKCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmE2ZDJkOC4u
NWI2YTFlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA0LTI5ICBJZ29yIE9saXZlaXJh
ICA8aWdvci5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50IGluaXRpYWwgc3VwcG9ydCB0
byBEYXRhVHJhbnNmZXJJdGVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTg0NDgKKworICAgICAgICBSZW1vdmUgZGF0YS10cmFuc2Zlci1pdGVtcy5o
dG1sIGZyb20gUXQgc2tpcHBlZCB0ZXN0cyBhbmQgY3JlYXRlIGFuIGV4cGVjdGVkCisgICAgICAg
IHJlc3VsdCBmaWxlIGZvciBkYXRhLXRyYW5zZmVyLWl0ZW1zLmh0bWwgdGVzdC4gVGhlIG5lZWQg
dG8gY3JlYXRlIGEgZXhwZWN0ZWQgcmVzdWx0CisgICAgICAgIGZpbGUgaXMgYmVjYXVzZSB0aGUg
dGVzdCBwcmVzdXBwb3NlIHRoYXQgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4KKyAg
ICAgICAgRGF0YVRyYW5zZmVySXRlbXMgbGlzdCBpcyBhIGh0bWwgYnV0IHdoZW4gUXQgc2VsZWN0
cyBhIGRhdGEsIGl0IGZpcnN0IGNvcGllcyBhIHRleHQKKyAgICAgICAgYW5kIHRoZW4gaXQgY29w
aWVzIHRoZSBodG1sLCBzbyBmb3IgUXQgZXhwZWN0ZWQgdGVzdCBmaWxlIHRoZSBmaXJzdCBlbGVt
ZW50IGlzIGEKKyAgICAgICAgdGV4dCBhbmQgdGhlIHNlY29uZCBvbmUgaXMgYSBodG1sLgorCisg
ICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
CiAyMDExLTA0LTI5ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA1OTk3
YzgwLi41NmU4NzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTExMyw5ICsxMTMsNiBA
QCBpbnNwZWN0b3IvZGVidWdnZXIvbGl2ZS1lZGl0Lmh0bWwKICMgVGhpcyBwb3J0IGRvZXNuJ3Qg
c3VwcG9ydCB2OCBpMThuIGV4dGVuc2lvbi4KIGZhc3QvanMvaTE4bi1iaW5kaW5ncy1sb2NhbGUu
aHRtbAogCi0jIERhdGFUcmFuc2Zlckl0ZW1zIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCi1lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy5odG1sCi0KICMgc2NhbGVQYWdlIGlz
IGN1cnJlbnRseSBNYWMtc3BlY2lmaWMgV2ViS2l0IEFQSS4KIGZhc3QvZG9tL0VsZW1lbnQvc2Nh
bGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVjdC5odG1sCiBmYXN0L2RvbS9FbGVtZW50L3NjYWxl
LXBhZ2UtY2xpZW50LXJlY3RzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW1zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
MTRiZDYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjUgQEAKK1RoaXMgZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQgcHJvcGVy
dGllcyBvZiBEYXRhVHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4KK1BvcHVs
YXRpbmcgRGF0YVRyYW5zZmVySXRlbXMuLi4KK0NhdWdodCBleGNlcHRpb24gIkVycm9yOiBJTlZB
TElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMSIgYXMgZXhwZWN0ZWQuCitWZXJpZnlpbmcg
Y29udGVudHMgb2YgRGF0YVRyYW5zZmVySXRlbXMuLi4KK2l0ZW1zLmxlbmd0aDogMgoraXRlbXNb
MF0ua2luZDogc3RyaW5nCitpdGVtc1swXS50eXBlOiB0ZXh0L3BsYWluCitpdGVtc1sxXS5raW5k
OiBzdHJpbmcKK2l0ZW1zWzFdLnR5cGU6IHRleHQvaHRtbAorQ2hlY2tpbmcgaWYgaXRlbXMgcGFz
dCB0aGUgZW5kIG9mIHRoZSBjb2xsZWN0aW9uIGNhbiBiZSBpbmRleGVkOgoraXRlbXNbMl0gaXMg
dW5kZWZpbmVkOiB1bmRlZmluZWQKK0NoZWNraW5nIHRoYXQgYSByZWFkLW9ubHkgRGF0YVRyYW5z
ZmVySXRlbXMgY2Fubm90IGJlIG11dGF0ZWQuLi4KK2l0ZW1zLmxlbmd0aDogMgoraXRlbXNbMF0u
a2luZDogc3RyaW5nCitpdGVtc1swXS50eXBlOiB0ZXh0L3BsYWluCitpdGVtc1sxXS5raW5kOiBz
dHJpbmcKK2l0ZW1zWzFdLnR5cGU6IHRleHQvaHRtbAoraXRlbXNbMl0gaXMgdW5kZWZpbmVkOiB1
bmRlZmluZWQKK1Rlc3RpbmcgaWYgRGF0YVRyYW5zZmVySXRlbXMgY2FuIGJlIGFjY2Vzc2VkIG91
dHNpZGUgYW4gZXZlbnQgaGFuZGxlci4uLgorRGF0YVRyYW5zZmVySXRlbSBhY2Nlc3NlZCBvdXRz
aWRlIGV2ZW50IGhhbmRsZXIhCitjb3B5OiBpdGVtc1swXSB2YWx1ZTogSGVsbG8gV29ybGQhCitj
b3B5OiBpdGVtc1sxXSB2YWx1ZTogPGI+SGVsbG8gV29ybGQhCitwYXN0ZTogaXRlbXNbMF0gdmFs
dWU6IFRoaXMgZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQgcHJvcGVydGll
cyBvZiBEYXRhVHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4KK3Bhc3RlOiBp
dGVtc1sxXSB2YWx1ZTogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJib3Jk
ZXItY29sbGFwc2U6IHNlcGFyYXRlOyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXN0eWxlOiBu
b3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXIt
c3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFs
aWduOiAtd2Via2l0LWF1dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l
OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Vi
a2l0LWJvcmRlci1ob3Jpem9udGFsLXNwYWNpbmc6IDBweDsgLXdlYmtpdC1ib3JkZXItdmVydGlj
YWwtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0OiBub25l
OyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lk
dGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07ICI+VGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBm
dW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRl
c3QgcmVxdWlyZXMgRFJULjwvc3Bhbj4KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVlNDEzNGMuLjRlYTUyNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0wNC0yOSAgSWdvciBPbGl2ZWlyYSAg
PGlnb3Iub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEltcGxlbWVudCBpbml0aWFsIHN1cHBvcnQgdG8g
RGF0YVRyYW5zZmVySXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4NDQ4CisKKyAgICAgICAgSW1wbGVtZW50IGluaXRpYWwgc3VwcG9ydCB0byBE
YXRhVHJhbnNmZXJJdGVtcy4gRGF0YVRyYW5zZmVySXRlbXMgYXJlIHVzZWQgdG8gCisgICAgICAg
IGhvbGQgZGF0YSBmb3IgZHJhZyBhbmQgZHJvcCBvcGVyYXRpb25zLiBEYXRhVHJhbnNmZXJJdGVt
cyBob2xkIGEgbGlzdCBvZiAKKyAgICAgICAgRGF0YVRyYW5zZmVySXRlbSBvYmplY3RzIGVhY2gg
b2Ygd2hpY2ggaG9sZHMgYW4gaXRlbSBiZWluZyBkcmFnZ2VkLgorCisgICAgICAgICogV2ViQ29y
ZS5wcm86CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmlkbDoKKyAgICAgICAgKiBl
ZGl0aW5nL3F0L0VkaXRvclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2Vu
ZXJhbENsaXBib2FyZCk6CisgICAgICAgICogcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmg6
CisgICAgICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OkNs
aXBib2FyZFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjppdGVtcyk6CisgICAg
ICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZFF0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1R
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1RdDo6Y3JlYXRlRnJvbVBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbVF0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbVF0OjpEYXRhVHJhbnNmZXJJdGVtUXQp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbVF0OjpnZXRBc1N0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtUXQ6OmdldEFzRmlsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0Lmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlckl0ZW1zUXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVt
c1F0OjpEYXRhVHJhbnNmZXJJdGVtc1F0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
ckl0ZW1zUXQ6OmFkZFBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9EYXRh
VHJhbnNmZXJJdGVtc1F0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvcXQv
RWRpdG9yUXQuY3BwLgorCiAyMDExLTA0LTI5ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IDNkOGZiMzYuLmRkZDkxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNzEzLDExICsyNzEzLDE1IEBA
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TPTEpIHsKICAgICBI
RUFERVJTICs9IFwKICAgICAgICAgZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaCBcCiAgICAgICAgIGRv
bS9EYXRhVHJhbnNmZXJJdGVtcy5oIFwKLSAgICAgICAgZG9tL1N0cmluZ0NhbGxiYWNrLmgKKyAg
ICAgICAgZG9tL1N0cmluZ0NhbGxiYWNrLmggXAorICAgICAgICBwbGF0Zm9ybS9xdC9EYXRhVHJh
bnNmZXJJdGVtUXQuaCBcCisgICAgICAgIHBsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQu
aAogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBkb20vRGF0YVRyYW5zZmVySXRlbS5jcHAgXAog
ICAgICAgICBkb20vRGF0YVRyYW5zZmVySXRlbXMuY3BwIFwKLSAgICAgICAgZG9tL1N0cmluZ0Nh
bGxiYWNrLmNwcAorICAgICAgICBkb20vU3RyaW5nQ2FsbGJhY2suY3BwIFwKKyAgICAgICAgcGxh
dGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmNwcCBcCisgICAgICAgIHBsYXRmb3JtL3F0L0Rh
dGFUcmFuc2Zlckl0ZW1zUXQuY3BwCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ET01f
U1RPUkFHRT0xKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbXMuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1zLmlkbAppbmRl
eCAxY2IzNmI4Li41MzA2ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVt
cy5pZGwKQEAgLTMzLDcgKzMzLDkgQEAgbW9kdWxlIGNvcmUgewogICAgIGludGVyZmFjZSBbCiAg
ICAgICAgIENvbmRpdGlvbmFsPURBVEFfVFJBTlNGRVJfSVRFTVMsCiAgICAgICAgIEhhc0luZGV4
R2V0dGVyLAorI2lmIGRlZmluZWQoVjhfQklORElORykgJiYgVjhfQklORElORwogICAgICAgICBD
dXN0b21EZWxldGVQcm9wZXJ0eSwKKyNlbmRpZgogICAgIF0gRGF0YVRyYW5zZmVySXRlbXMgewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7CiAgICAgICAgIERhdGFUcmFu
c2Zlckl0ZW0gaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KSBnZXR0ZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvcXQvRWRpdG9yUXQuY3BwCmluZGV4IGZmYjI0ZTcuLjY4ZjJjNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvcXQvRWRpdG9yUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvcXQvRWRpdG9yUXQuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJh
bENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSopCitQYXNzUmVm
UHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6
OmNyZWF0ZShwb2xpY3kpOworICAgIHJldHVybiBDbGlwYm9hcmRRdDo6Y3JlYXRlKHBvbGljeSwg
ZnJhbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
cXQvRXZlbnRIYW5kbGVyUXQuY3BwCmluZGV4IDAzNDNjNzkuLjJiODgwNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50
JiBldmVudCwgV2lkZ2V0KiB3aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxl
cjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9h
cmRRdDo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsK
KyAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgbV9mcmFt
ZSwgQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
TW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBt
ZXYsIEZyYW1lKiBzdWJmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0NsaXBib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAppbmRleCA3MjNjZGQ0Li5iZDdhYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2xpcGJv
YXJkUXQuaCIKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiRGF0YVRyYW5z
ZmVySXRlbXNRdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEu
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC03MCwyMyArNzEsMjUgQEAgc3RhdGljIGJvb2wg
aXNIdG1sTWltZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB0eXBlID09ICJ0
ZXh0L2h0bWwiIHx8IHR5cGUuc3RhcnRzV2l0aCgidGV4dC9odG1sOyIpOwogfQogCi1QYXNzUmVm
UHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBv
bGljeSwgRHJhZ0RhdGEqIGRyYWdEYXRhLCBGcmFtZSopCitQYXNzUmVmUHRyPENsaXBib2FyZD4g
Q2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRHJhZ0RhdGEq
IGRyYWdEYXRhLCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZFF0OjpjcmVh
dGUocG9saWN5LCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCkpOworICAgIHJldHVybiBDbGlwYm9h
cmRRdDo6Y3JlYXRlKHBvbGljeSwgZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgpLCBmcmFtZSk7CiB9
CiAKLUNsaXBib2FyZFF0OjpDbGlwYm9hcmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
LCBjb25zdCBRTWltZURhdGEqIHJlYWRhYmxlQ2xpcGJvYXJkKQorQ2xpcGJvYXJkUXQ6OkNsaXBi
b2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGNvbnN0IFFNaW1lRGF0YSogcmVh
ZGFibGVDbGlwYm9hcmQsIEZyYW1lKiBmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xpY3ksIERy
YWdBbmREcm9wKQogICAgICwgbV9yZWFkYWJsZURhdGEocmVhZGFibGVDbGlwYm9hcmQpCiAgICAg
LCBtX3dyaXRhYmxlRGF0YSgwKQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKICAgICBRX0FTU0VS
VChwb2xpY3kgPT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwgcG9saWN5ID09IENsaXBib2FyZFR5cGVz
UmVhZGFibGUpOwogfQogCi1DbGlwYm9hcmRRdDo6Q2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQorQ2xpcGJvYXJkUXQ6
OkNsaXBib2FyZFF0KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIENsaXBib2FyZFR5cGUg
Y2xpcGJvYXJkVHlwZSwgRnJhbWUqIGZyYW1lKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgY2xp
cGJvYXJkVHlwZSkKICAgICAsIG1fcmVhZGFibGVEYXRhKDApCiAgICAgLCBtX3dyaXRhYmxlRGF0
YSgwKQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKICAgICBRX0FTU0VSVChwb2xpY3kgPT0gQ2xp
cGJvYXJkUmVhZGFibGUgfHwgcG9saWN5ID09IENsaXBib2FyZFdyaXRhYmxlIHx8IHBvbGljeSA9
PSBDbGlwYm9hcmROdW1iKTsKIApAQCAtMzYwLDQgKzM2MywyNSBAQCBib29sIENsaXBib2FyZFF0
OjpoYXNEYXRhKCkKICAgICByZXR1cm4gZGF0YS0+Zm9ybWF0cygpLmNvdW50KCkgPiAwOwogfQog
CisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCitQYXNzUmVmUHRyPERhdGFUcmFuc2Zl
ckl0ZW1zPiBDbGlwYm9hcmRRdDo6aXRlbXMoKQoreworCisgICAgaWYgKCFtX2ZyYW1lICYmICFt
X2ZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxEYXRh
VHJhbnNmZXJJdGVtc1F0PiBpdGVtcyA9IERhdGFUcmFuc2Zlckl0ZW1zUXQ6OmNyZWF0ZSh0aGlz
LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCisgICAg
aWYgKCFtX3JlYWRhYmxlRGF0YSkKKyAgICAgICAgcmV0dXJuIGl0ZW1zOworCisgICAgaWYgKGlz
Rm9yQ29weUFuZFBhc3RlKCkgJiYgcG9saWN5KCkgPT0gQ2xpcGJvYXJkUmVhZGFibGUpIHsKKyAg
ICAgICAgY29uc3QgUVN0cmluZ0xpc3QgdHlwZXMgPSBtX3JlYWRhYmxlRGF0YS0+Zm9ybWF0cygp
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGVzLmNvdW50KCk7ICsraSkKKyAgICAg
ICAgICAgIGl0ZW1zLT5hZGRQYXN0ZWJvYXJkSXRlbSh0eXBlcy5hdChpKSk7CisgICAgfQorICAg
IHJldHVybiBpdGVtczsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
Q2xpcGJvYXJkUXQuaAppbmRleCA4ZDc4NjM0Li5iYWQwMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmgKQEAgLTQxLDEzICs0MSwxMyBAQCBjbGFzcyBDYWNoZWRJ
bWFnZTsKIGNsYXNzIENsaXBib2FyZFF0IDogcHVibGljIENsaXBib2FyZCwgcHVibGljIENhY2hl
ZFJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRRdD4gY3JlYXRlKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3ksIGNvbnN0IFFNaW1lRGF0YSogcmVhZGFibGVDbGlwYm9hcmQpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkUXQ+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBjb25zdCBRTWltZURhdGEqIHJlYWRhYmxlQ2xpcGJvYXJkLCBGcmFtZSogZnJh
bWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFF0KHBvbGlj
eSwgcmVhZGFibGVDbGlwYm9hcmQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlw
Ym9hcmRRdChwb2xpY3ksIHJlYWRhYmxlQ2xpcGJvYXJkLCBmcmFtZSkpOwogICAgIH0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRRdD4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSA9IENvcHlBbmRQYXN0ZSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRRdD4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIEZyYW1lICpmcmFtZSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlID0g
Q29weUFuZFBhc3RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9h
cmRRdChwb2xpY3ksIGNsaXBib2FyZFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDbGlwYm9hcmRRdChwb2xpY3ksIGNsaXBib2FyZFR5cGUsIGZyYW1lKSk7CiAgICAgfQogICAg
IHZpcnR1YWwgfkNsaXBib2FyZFF0KCk7CiAKQEAgLTc0LDE2ICs3NCwyMSBAQCBwdWJsaWM6CiAg
ICAgUU1pbWVEYXRhKiBjbGlwYm9hcmREYXRhKCkgY29uc3QgeyByZXR1cm4gbV93cml0YWJsZURh
dGE7IH0KICAgICB2b2lkIGludmFsaWRhdGVXcml0YWJsZURhdGEoKSB7IG1fd3JpdGFibGVEYXRh
ID0gMDsgfQogCisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1zPiBpdGVtcygpOworI2VuZGlmCisKIHByaXZhdGU6
Ci0gICAgQ2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBjb25zdCBRTWltZURhdGEq
IHJlYWRhYmxlQ2xpcGJvYXJkKTsKKyAgICBDbGlwYm9hcmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3ksIGNvbnN0IFFNaW1lRGF0YSogcmVhZGFibGVDbGlwYm9hcmQsIEZyYW1lKik7CiAKICAgICAv
LyBDbGlwYm9hcmQgaXMgd3JpdGFibGUgc28gaXQgd2lsbCBjcmVhdGUgaXRzIG93biBRTWltZURh
dGEgb2JqZWN0Ci0gICAgQ2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBDbGlwYm9h
cmRUeXBlKTsKKyAgICBDbGlwYm9hcmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIENsaXBib2Fy
ZFR5cGUsIEZyYW1lKik7CiAKICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIE5v
ZGUqLCBjb25zdCBJbnRQb2ludCYgbG9jKTsKIAogICAgIGNvbnN0IFFNaW1lRGF0YSogbV9yZWFk
YWJsZURhdGE7CiAgICAgUU1pbWVEYXRhKiBtX3dyaXRhYmxlRGF0YTsKKyAgICBGcmFtZSogbV9m
cmFtZTsKIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Rh
dGFUcmFuc2Zlckl0ZW1RdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJh
bnNmZXJJdGVtUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNzdi
ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJh
bnNmZXJJdGVtUXQuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1RdC5oIgor
CisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCisKKyNpbmNsdWRlICJCbG9iLmgiCisj
aW5jbHVkZSAiQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJTdHJpbmdDYWxsYmFjay5oIgorI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRl
IDxRQ2xpcGJvYXJkPgorI2luY2x1ZGUgPFFNaW1lRGF0YT4KKyNpbmNsdWRlIDxRVGV4dENvZGVj
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4g
RGF0YVRyYW5zZmVySXRlbTo6Y3JlYXRlKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRhdGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHR5cGUpCit7CisgICAgcmV0dXJuIERhdGFUcmFuc2Zlckl0ZW1RdDo6Y3JlYXRlKG93bmVyLCBj
b250ZXh0LCB0eXBlLCBkYXRhKTsKK30KKworUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtUXQ+
IERhdGFUcmFuc2Zlckl0ZW1RdDo6Y3JlYXRlRnJvbVBhc3RlYm9hcmQoUGFzc1JlZlB0cjxDbGlw
Ym9hcmQ+IG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBpZiAodHlw
ZSA9PSAidGV4dC9wbGFpbiIgfHwgdHlwZSA9PSAidGV4dC9odG1sIikKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEYXRhVHJhbnNmZXJJdGVtUXQob3duZXIsIGNvbnRleHQsIFBhc3RlYm9h
cmRTb3VyY2UsIERhdGFUcmFuc2Zlckl0ZW06OmtpbmRTdHJpbmcsIHR5cGUsICIiKSk7CisKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFUcmFuc2Zlckl0ZW1RdChvd25lciwgY29udGV4dCwg
UGFzdGVib2FyZFNvdXJjZSwgRGF0YVRyYW5zZmVySXRlbTo6a2luZEZpbGUsIHR5cGUsICIiKSk7
Cit9CisKK1Bhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbVF0PiBEYXRhVHJhbnNmZXJJdGVtUXQ6
OmNyZWF0ZShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRh
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YVRyYW5zZmVySXRlbVF0KG93bmVyLCBj
b250ZXh0LCBJbnRlcm5hbFNvdXJjZSwgRGF0YVRyYW5zZmVySXRlbTo6a2luZFN0cmluZywgdHlw
ZSwgZGF0YSkpOworfQorCitEYXRhVHJhbnNmZXJJdGVtUXQ6OkRhdGFUcmFuc2Zlckl0ZW1RdChQ
YXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNvdXJjZSBzb3VyY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0
cmluZyYgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgZGF0YSkKKyAgICA6IERhdGFUcmFuc2Zlckl0ZW0ob3duZXIsIGtpbmQsIHR5cGUp
CisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fZGF0YVNvdXJjZShzb3VyY2UpCisg
ICAgLCBtX2RhdGEoZGF0YSkKK3sKK30KKwordm9pZCBEYXRhVHJhbnNmZXJJdGVtUXQ6OmdldEFz
U3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrKQoreworICAgIGlmICgo
b3duZXIoKS0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYgb3duZXIoKS0+cG9saWN5
KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCisgICAgICAgIHx8IGtpbmQoKSAhPSBraW5kU3RyaW5n
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9kYXRhU291cmNlID09IEludGVybmFsU291
cmNlKSB7CisgICAgICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dCwgbV9k
YXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFFNaW1lRGF0YSogbWlt
ZURhdGEgPSBRQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5taW1lRGF0YShRQ2xpcGJvYXJkOjpD
bGlwYm9hcmQpOworICAgIGlmICghbWltZURhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIFFT
dHJpbmcgZGF0YTsKKyAgICBpZiAodHlwZSgpID09ICJ0ZXh0L3BsYWluIikKKyAgICAgICAgZGF0
YSA9IG1pbWVEYXRhLT50ZXh0KCk7CisgICAgZWxzZSBpZiAodHlwZSgpID09ICJ0ZXh0L2h0bWwi
KQorICAgICAgICBkYXRhID0gbWltZURhdGEtPmh0bWwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
UUJ5dGVBcnJheSByYXdEYXRhID0gbWltZURhdGEtPmRhdGEodHlwZSgpKTsKKyAgICAgICAgZGF0
YSA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTE2IiktPnRvVW5pY29kZShyYXdEYXRh
KTsKKyAgICB9CisKKyAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhtX2NvbnRleHQsIGRh
dGEpOworfQorCitQYXNzUmVmUHRyPEJsb2I+IERhdGFUcmFuc2Zlckl0ZW1RdDo6Z2V0QXNGaWxl
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoREFUQV9UUkFOU0ZFUl9JVEVNUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1RdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbVF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDI1YmE0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1RdC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBEYXRhVHJhbnNmZXJJdGVtUXRfaAorI2RlZmluZSBEYXRh
VHJhbnNmZXJJdGVtUXRfaAorCisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCisKKyNp
bmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENsaXBib2FyZDsKK2NsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CisKK2NsYXNzIERhdGFUcmFuc2Zlckl0ZW1RdCA6IHB1YmxpYyBEYXRhVHJh
bnNmZXJJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJ
dGVtUXQ+IGNyZWF0ZUZyb21QYXN0ZWJvYXJkKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbVF0PiBjcmVhdGUoUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4p
OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCbG9iPiBnZXRBc0ZpbGUoKTsKKworcHJpdmF0ZToK
KyAgICBlbnVtIERhdGFTb3VyY2UgeworICAgICAgICBQYXN0ZWJvYXJkU291cmNlLAorICAgICAg
ICBJbnRlcm5hbFNvdXJjZQorICAgIH07CisKKyAgICBEYXRhVHJhbnNmZXJJdGVtUXQoUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwKKyAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJik7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgY29u
c3QgRGF0YVNvdXJjZSBtX2RhdGFTb3VyY2U7CisgICAgY29uc3QgU3RyaW5nIG1fZGF0YTsKK307
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1z
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbXNRdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZlYjgzZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1zUXQu
Y3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1zUXQuaCIKKworI2lmIEVOQUJMRShE
QVRBX1RSQU5TRkVSX0lURU1TKQorCisjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAi
RGF0YVRyYW5zZmVySXRlbVF0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbXNRdD4gRGF0YVRy
YW5zZmVySXRlbXNRdDo6Y3JlYXRlKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERh
dGFUcmFuc2Zlckl0ZW1zUXQob3duZXIsIGNvbnRleHQpKTsKK30KKworRGF0YVRyYW5zZmVySXRl
bXNRdDo6RGF0YVRyYW5zZmVySXRlbXNRdChQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBEYXRhVHJhbnNmZXJJdGVtcyhv
d25lciwgIGNvbnRleHQpCit7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVySXRlbXNRdDo6YWRkUGFz
dGVib2FyZEl0ZW0oY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIG1faXRlbXMuYXBwZW5kKERh
dGFUcmFuc2Zlckl0ZW1RdDo6Y3JlYXRlRnJvbVBhc3RlYm9hcmQobV9vd25lciwgbV9jb250ZXh0
LCB0eXBlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShEQVRBX1RSQU5TRkVSX0lURU1TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvRGF0YVRyYW5zZmVySXRlbXNRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
RGF0YVRyYW5zZmVySXRlbXNRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmJlMTcyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9E
YXRhVHJhbnNmZXJJdGVtc1F0LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIERhdGFUcmFuc2Zlckl0ZW1zUXRfaAorI2RlZmluZSBEYXRhVHJhbnNmZXJJ
dGVtc1F0X2gKKworI2lmIEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQorCisjaW5jbHVkZSAi
RGF0YVRyYW5zZmVySXRlbXMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENsaXBib2FyZDsK
K2NsYXNzIERhdGFUcmFuc2Zlckl0ZW1RdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisKK2NsYXNzIERhdGFUcmFuc2Zlckl0ZW1zUXQgOiBwdWJsaWMgRGF0YVRyYW5zZmVySXRlbXMg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1zUXQ+IGNy
ZWF0ZShQYXNzUmVmUHRyPENsaXBib2FyZD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwor
ICAgIGZyaWVuZCBjbGFzcyBDbGlwYm9hcmRRdDsKK3ByaXZhdGU6CisgICAgRGF0YVRyYW5zZmVy
SXRlbXNRdChQYXNzUmVmUHRyPENsaXBib2FyZD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
KworICAgIHZpcnR1YWwgdm9pZCBhZGRQYXN0ZWJvYXJkSXRlbShjb25zdCBTdHJpbmcmIHR5cGUp
OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCisKKyNl
bmRpZgotLSAKMS43LjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>