<?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>181190</bug_id>
          
          <creation_ts>2017-12-29 15:38:27 -0800</creation_ts>
          <short_desc>[Attachment Support] Introduce a client object for receiving promised blob information in the UI process</short_desc>
          <delta_ts>2018-01-02 22:39:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>181189</dependson>
          <blocked>181201</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1384971</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-29 15:38:27 -0800</bug_when>
    <thetext>More work towards async drag and drop support for blobs on iOS/macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384973</commentid>
    <comment_count>1</comment_count>
      <attachid>330261</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-29 18:49:20 -0800</bug_when>
    <thetext>Created attachment 330261
Depends on https://bugs.webkit.org/show_bug.cgi?id=181189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385312</commentid>
    <comment_count>2</comment_count>
      <attachid>330352</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-02 16:49:20 -0800</bug_when>
    <thetext>Created attachment 330352
v2 (blocked by https://bugs.webkit.org/show_bug.cgi?id=181189)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385383</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-02 22:39:02 -0800</bug_when>
    <thetext>On further investigation, I don&apos;t think it&apos;s possible to implement attachment dragging support through this mechanism, given that there&apos;s no way on iOS to tell when the destination app is finished accepting data on drop.

As such, we can&apos;t cache any information any information in the UI process because it&apos;s not possible to know when it&apos;s safe to clean up the cached data.

I need to rethink this...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330261</attachid>
            <date>2017-12-29 18:49:20 -0800</date>
            <delta_ts>2018-01-02 16:49:19 -0800</delta_ts>
            <desc>Depends on https://bugs.webkit.org/show_bug.cgi?id=181189</desc>
            <filename>bug-181190-20171229184919.patch</filename>
            <type>text/plain</type>
            <size>23405</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA3YzU5NWIxZjA0NTFlYTAy
NzQ4NjUwMDUwYmVlOTc0ZjMwMmIxZmIuLjMyZWJkZDU2NGRiNmM0MTVjMzczNTg5ZTE2OTVjM2Rk
NTAxYmJmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMTctMTItMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3Vw
cG9ydF0gSW50cm9kdWNlIGEgY2xpZW50IG9iamVjdCBmb3IgcmVjZWl2aW5nIHByb21pc2VkIGJs
b2IgaW5mb3JtYXRpb24gaW4gdGhlIFVJIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgUHJvbWlzZWRCbG9iQ2xpZW50LCBh
IGhlbHBlciBjbGFzcyBmb3Iga2VlcGluZyB0cmFjayBvZiBQcm9taXNlZEJsb2JJbmZvIGFuZCBQ
cm9taXNlZEJsb2JEYXRhIGluIHRoZQorICAgICAgICBVSSBwcm9jZXNzIHRoYXQgY2FuIGJlIHVz
ZWQgYWNyb3NzIENvY29hIHBsYXRmb3Jtcy4gQSBQcm9taXNlZEJsb2JDbGllbnQgaXMgcmVzcG9u
c2libGUgZm9yIGEgdmVjdG9yIG9mCisgICAgICAgIEJsb2JTdGF0ZXMsIGVhY2ggb2Ygd2hpY2gg
cmVwcmVzZW50cyBhIEJsb2IgZGF0YSB0aGF0IGhhcyBiZWVuIHByb21pc2VkIHRvIHRoZSBVSSBw
cm9jZXNzLiBUaGUgQVBJIGZvcgorICAgICAgICBQcm9taXNlZEJsb2JDbGllbnQgaXMgcHJpbWFy
aWx5IGNvbXBvc2VkIG9mIHNldmVyYWwgYGRpZFJlY2VpdmUqYCBtZXRob2RzIChzZWUgYmVsb3cg
Zm9yIG1vcmUgZGV0YWlscykgYWxvbmcKKyAgICAgICAgd2l0aCBvdGhlciBoZWxwZXJzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Byb21pc2VkQmxvYkNsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xpZW50OjpCbG9iU3RhdGU6Omhhc0FjdGl2ZUNh
bGxiYWNrIGNvbnN0KToKKworICAgICAgICBBIEJsb2JTdGF0ZSBoYXMgYW4gYWN0aXZlIGNhbGxi
YWNrIGlmIGFuZCBvbmx5IGlmIGl0IGhhcyByZWNlaXZlZCBhIHJlcXVlc3QgdG8gZGVsaXZlciBp
dHMgYmxvYiBkYXRhIHRvIHRoZQorICAgICAgICBwbGF0Zm9ybSBieSBtZWFucyBvZiBvbmUgb2Yg
dGhlIHRocmVlIGNhbGxiYWNrIHR5cGVzIChjb29yZGluYXRlZCBmaWxlIHdyaXRpbmcgb24gbWFj
T1MsIG9yIGEgZGF0YSBibG9iL2ZpbGUgVVJMCisgICAgICAgIG9uIGlPUykgYW5kIGlzIHBlbmRp
bmcgY29tcGxldGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Qcm9taXNlZEJsb2JD
bGllbnQubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpuZXh0VW5pcXVlSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJLaXQ6OmJsb2JXcml0aW5nRXJyb3IpOgorICAgICAgICAoV2ViS2l0Ojpi
bG9iTG9hZGluZ0Vycm9yKToKKworICAgICAgICBIZWxwZXJzIHRvIGdlbmVyYXRlIE5TRXJyb3Jz
IHJlbGF0aW5nIHRvIHByb21pc2VkIGJsb2IgZGVsaXZlcnkuCisKKyAgICAgICAgKFdlYktpdDo6
UHJvbWlzZWRCbG9iQ2xpZW50OjpCbG9iU3RhdGU6OkJsb2JTdGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlByb21pc2VkQmxvYkNsaWVudDo6flByb21pc2VkQmxvYkNsaWVudCk6CisKKyAgICAgICAg
SW52b2tlIGFueSByZWNlaXZlZCBjYWxsYmFja3Mgd2l0aCBhbiBlcnJvciByZXN1bHQgaWYgdGhl
IFByb21pc2VkQmxvYkNsaWVudCBpcyBhYm91dCB0byBnbyBhd2F5LgorCisgICAgICAgIChXZWJL
aXQ6OlByb21pc2VkQmxvYkNsaWVudDo6ZGlkUmVjZWl2ZUluZm8pOgorCisgICAgICAgIEludm9r
ZWQgd2hlbiB0aGUgVUkgcHJvY2VzcyBoYXMgcmVjZWl2ZWQgYSBQcm9taXNlZEJsb2JJbmZvIGRl
c2NyaWJpbmcgYSBibG9iIHRoYXQgd2lsbCBiZSBkZWxpdmVyZWQgdG8gdGhlIFVJCisgICAgICAg
IHByb2Nlc3MgaW4gdGhlIGZ1dHVyZS4gVGhlIFByb21pc2VkQmxvYkNsaWVudCBhZGRzIGEgbmV3
IEJsb2JTdGF0ZSB0byBpdHMgbGlzdCBvZiBzdGF0ZXMgdXNpbmcgdGhpcyBpbmZvcm1hdGlvbiwK
KyAgICAgICAgYW5kIHJldHVybnMgdGhlIGlkZW50aWZpZXIgY29ycmVzcG9uZGluZyB0byB0aGlz
IG5ld2x5IGNyZWF0ZWQgc3RhdGUuCisKKyAgICAgICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisKKyAgICAgICAgSW52b2tlZCB3aGVuIHRoZSBVSSBwcm9j
ZXNzIGhhcyByZWNlaXZlZCBhIFByb21pc2VkQmxvYkRhdGEgY29ycmVzcG9uZGluZyB0byBhIFBy
b21pc2VkQmxvYkluZm8gdGhhdCB3YXMgc2VudAorICAgICAgICBlYXJsaWVyLiBVc2luZyB0aGUg
YmxvYiBVUkwgb2YgdGhlIHJlY2VpdmVkIGJsb2IgZGF0YSwgdGhlIGNsaWVudCB1cGRhdGVzIHRo
ZSBjb3JyZXNwb25kaW5nIEJsb2JTdGF0ZS4gSWYgb25lIG9mCisgICAgICAgIHRoZSBjYWxsYmFj
ayBmdW5jdGlvbnMgaGFzIGFscmVhZHkgYmVlbiByZWNlaXZlZCBieSB0aGUgUHJvbWlzZWRCbG9i
Q2xpZW50LCB0aGVuIHdlIGFkZGl0aW9uYWxseSBpbnZva2UgdGhlCisgICAgICAgIGNhbGxiYWNr
IGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdCBvZiBzdGF0ZXMuCisKKyAgICAgICAgKFdlYktp
dDo6UHJvbWlzZWRCbG9iQ2xpZW50OjpkaWRSZWNlaXZlRmlsZVdyaXRlQ2FsbGJhY2spOgorCisg
ICAgICAgIEludm9rZWQgaW4gbWFjT1Mgd2hlbiB0aGUgVUkgcHJvY2VzcyBoYXMgcmVjZWl2ZWQg
YSBjYWxsIHRvIHdyaXRlIHRoZSBwcm9taXNlZCBkYXRhIHRvIHRoZSBnaXZlbiBmaWxlIFVSTCB3
aXRoIGEKKyAgICAgICAgY29tcGxldGlvbiBibG9jay4gSWYgdGhlIGNvcnJlc3BvbmRpbmcgUHJv
bWlzZWRCbG9iRGF0YSBoYXMgYWxyZWFkeSBiZWVuIHJlY2VpdmVkLCB3ZSBzaW1wbHkgd3JpdGUg
dG8gdGhlCisgICAgICAgIGxvY2F0aW9uIHVzaW5nIHRoZSBibG9iIGRhdGEgYW5kIGludm9rZSB0
aGUgY2FsbGJhY2sgcmlnaHQgYXdheTsgb3RoZXJ3aXNlLCB3ZSBzdG9yZSB0aGUgY2FsbGJhY2sg
YW5kIHdhaXQgdW50aWwKKyAgICAgICAgUHJvbWlzZWRCbG9iQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YSBpcyBpbnZva2VkIHdpdGggdGhlIHJpZ2h0IGJsb2IgVVJMLgorCisgICAgICAgIChXZWJLaXQ6
OlByb21pc2VkQmxvYkNsaWVudDo6ZGlkUmVjZWl2ZURhdGFDYWxsYmFjayk6CisKKyAgICAgICAg
SW52b2tlZCBvbiBpT1MgaW4gdGhlIGNhc2Ugb2YgYSBkYXRhLWJhY2tlZCBCbG9iLCB3aGVuIHRo
ZSBVSSBwcm9jZXNzIGhhcyByZWNlaXZlZCBhIGNhbGwgdG8gcmV0dXJuIHRoZSBwcm9taXNlZAor
ICAgICAgICBkYXRhIGFzIGFuIE5TRGF0YSBibG9iLiBMaWtlIGJlZm9yZSwgaWYgdGhlIFByb21p
c2VkQmxvYkRhdGEgaGFzIGFscmVhZHkgYmVlbiByZWNlaXZlZCwgd2UgaW52b2tlIHRoZSBjYWxs
YmFjaworICAgICAgICBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlLCB3ZSBzdGFzaCB0aGUgY2FsbGJh
Y2sgaW4gYSBCbG9ja1B0ciBhbmQgd2FpdCB1bnRpbCB0aGUgZGF0YSBoYXMgYmVlbiByZWNlaXZl
ZC4KKworICAgICAgICAoV2ViS2l0OjpQcm9taXNlZEJsb2JDbGllbnQ6OmRpZFJlY2VpdmVGaWxl
VVJMQ2FsbGJhY2spOgorCisgICAgICAgIFNpbWlsYXIgdG8gZGlkUmVjZWl2ZURhdGFDYWxsYmFj
aywgYnV0IHRoZSBwbGF0Zm9ybSBleHBlY3RzIGEgZmlsZSBVUkwgdGhpcyB0aW1lLiBTZWUgYWJv
dmUgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgIChXZWJLaXQ6OlByb21pc2VkQmxvYkNsaWVu
dDo6aW52b2tlQW5kUmVtb3ZlUmVhZHlCbG9iU3RhdGVzKToKKworICAgICAgICBQcml2YXRlIGhl
bHBlciB0byBmaW5kIGFsbCBCbG9iU3RhdGVzIHRoYXQgYXJlIHJlYWR5IHRvIGludm9rZSB0aGVp
ciByZXNwZWN0aXZlIGNhbGxiYWNrcyAoaS5lLiBzdGF0ZXMgdGhhdCBoYXZlCisgICAgICAgIHJl
Y2VpdmVkIGJvdGggdGhlaXIgUHJvbWlzZWRCbG9iRGF0YSBhbmQgYSBjYWxsYmFjayBvZiBzb21l
IGZvcm0pLCB0aGVuIHJlbW92ZXMgdGhlc2UgY29tcGxldGVkIEJsb2JTdGF0ZXMuCisKKyAgICAg
ICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xpZW50Ojp1dGlUeXBlRm9yUHJvbWlzZWRCbG9iVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb21pc2VkQmxvYkNsaWVudDo6ZmlsZW5hbWVGb3JJZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xpZW50Ojp1dGlG
b3JJZGVudGlmaWVyIGNvbnN0KToKKworICAgICAgICBIZWxwZXJzIHRvIGZldGNoIFVUSSBhbmQg
ZmlsZW5hbWUgZm9yIHRoZSBibG9iIHN0YXRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGlk
ZW50aWZpZXIuCisKKyAgICAgICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xpZW50OjpyZW1vdmVB
bGxTdGF0ZXNXaXRob3V0QWN0aXZlQ2FsbGJhY2tzKToKKworICAgICAgICBSZW1vdmVzIGFsbCBz
dGF0ZXMgdGhhdCBhcmUgbm90IGFjdGl2ZWx5IHdhaXRpbmcgdG8gaW52b2tlIHRoZWlyIGNhbGxi
YWNrcy4gV0tDb250ZW50VmlldyBhbmQgV2ViVmlld0ltcGwgd2lsbAorICAgICAgICB1c2UgdGhp
cyB0byBjbGVhbiB1cCBhZnRlciBhIGRyYWcgaGFzIGNvbmNsdWRlZC4KKworICAgICAgICAoV2Vi
S2l0OjpQcm9taXNlZEJsb2JDbGllbnQ6OnN0YXRlRm9ySWRlbnRpZmllcik6CisKKyAgICAgICAg
SGVscGVycyB0byBmaW5kIHRoZSBCbG9iU3RhdGUgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIGlk
ZW50aWZpZXIuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAxNy0xMi0yOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBJbnRyb2R1Y2UgZGF0YSBzdHJ1Y3R1cmVzIGFu
ZCBJUEMgc3VwcG9ydCBmb3Igd3JpdGluZyBwcm9taXNlZCBibG9icwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9iQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Qcm9taXNlZEJsb2JDbGllbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NTA3MWQzZThmMTFjMDhjNDQyN2RiZDdiM2M5ZTY4YzNhZTRlNTkzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9iQ2xpZW50LmgKQEAg
LTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisKKyNpbXBvcnQgPFdlYkNvcmUvUHJvbWlzZWRCbG9iSW5mby5oPgorI2ltcG9ydCA8
d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3R5cGVkZWYgaW50IFByb21pc2Vk
QmxvYklkZW50aWZpZXI7CisKK2NsYXNzIFByb21pc2VkQmxvYkNsaWVudCB7CitwdWJsaWM6Cisg
ICAgc3RydWN0IEJsb2JTdGF0ZSB7CisgICAgICAgIGVudW0gY2xhc3MgU3RhdGUgeyBXYWl0aW5n
Rm9yQ29tcGxldGlvbiwgQ29tcGxldGUgfTsKKworICAgICAgICBCbG9iU3RhdGUoY29uc3QgV2Vi
Q29yZTo6UHJvbWlzZWRCbG9iSW5mbyYpOworCisgICAgICAgIFdlYkNvcmU6OlByb21pc2VkQmxv
YkluZm8gaW5mbzsKKyAgICAgICAgV2ViQ29yZTo6UHJvbWlzZWRCbG9iRGF0YSBkYXRhOworCisg
ICAgICAgIC8vIEZvciB3cml0aW5nIHRvIGEgZGVzaWduYXRlZCB0ZW1wb3JhcnkgVVJMLgorICAg
ICAgICBSZXRhaW5QdHI8TlNVUkw+IGRlc3RpbmF0aW9uRmlsZVVSTDsKKyAgICAgICAgQmxvY2tQ
dHI8dm9pZChOU0Vycm9yICopPiBkZXN0aW5hdGlvbldyaXRpbmdDb21wbGV0aW9uQ2FsbGJhY2s7
CisKKyAgICAgICAgLy8gRm9yIGxvYWRpbmcgYSBibG9iIGZyb20gYW4gZXhpc3RpbmcgZmlsZSBv
ciBkYXRhIGJ1ZmZlci4KKyAgICAgICAgQmxvY2tQdHI8dm9pZChOU1VSTCAqLCBOU0Vycm9yICop
PiBmaWxlTG9hZGluZ0NvbXBsZXRpb25DYWxsYmFjazsKKyAgICAgICAgQmxvY2tQdHI8dm9pZChO
U0RhdGEgKiwgTlNFcnJvciAqKT4gZGF0YUxvYWRpbmdDb21wbGV0aW9uQ2FsbGJhY2s7CisKKyAg
ICAgICAgU3RhdGUgc3RhdGUgeyBTdGF0ZTo6V2FpdGluZ0ZvckNvbXBsZXRpb24gfTsKKyAgICAg
ICAgUHJvbWlzZWRCbG9iSWRlbnRpZmllciB1bmlxdWVJZGVudGlmaWVyOworCisgICAgICAgIGNv
bnN0ZXhwciBib29sIGhhc0FjdGl2ZUNhbGxiYWNrKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHN0YXRlICE9IFN0YXRlOjpXYWl0aW5nRm9yQ29tcGxldGlvbikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbldy
aXRpbmdDb21wbGV0aW9uQ2FsbGJhY2sgfHwgZmlsZUxvYWRpbmdDb21wbGV0aW9uQ2FsbGJhY2sg
fHwgZGF0YUxvYWRpbmdDb21wbGV0aW9uQ2FsbGJhY2s7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgflByb21pc2VkQmxvYkNsaWVudCgpOworCisgICAgUHJvbWlzZWRCbG9iSWRlbnRpZmllciBk
aWRSZWNlaXZlSW5mbyhjb25zdCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpQcm9taXNlZEJsb2JEYXRhJik7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFByb21pc2VkQmxvYklkZW50aWZpZXI+IHRha2VTdGFnZWRCbG9iSWRl
bnRpZmllcigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlRmlsZVdyaXRlQ2FsbGJhY2soUHJvbWlz
ZWRCbG9iSWRlbnRpZmllciwgTlNVUkwgKmZpbGVVUkwsIHZvaWQoXmNvbXBsZXRpb25IYW5kbGVy
KShOU0Vycm9yICopKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQ2FsbGJhY2soUHJvbWlzZWRC
bG9iSWRlbnRpZmllciwgdm9pZCheZGF0YUhhbmRsZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVGaWxlVVJMQ2FsbGJhY2soUHJvbWlzZWRCbG9iSWRlbnRpZmll
ciwgdm9pZCheZmlsZUhhbmRsZXIpKE5TVVJMICosIE5TRXJyb3IgKikpOworCisgICAgTlNTdHJp
bmcgKmZpbGVuYW1lRm9ySWRlbnRpZmllcihQcm9taXNlZEJsb2JJZGVudGlmaWVyKSBjb25zdDsK
KyAgICBOU1N0cmluZyAqdXRpRm9ySWRlbnRpZmllcihQcm9taXNlZEJsb2JJZGVudGlmaWVyKSBj
b25zdDsKKworICAgIHZvaWQgcmVtb3ZlQWxsU3RhdGVzV2l0aG91dEFjdGl2ZUNhbGxiYWNrcygp
OworCisgICAgc3RhdGljIE5TU3RyaW5nICp1dGlUeXBlRm9yUHJvbWlzZWRCbG9iVHlwZShOU1N0
cmluZyAqKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2JTdGF0ZSY+IHN0YXRl
Rm9ySWRlbnRpZmllcihQcm9taXNlZEJsb2JJZGVudGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGNvbnN0IEJsb2JTdGF0ZSY+IHN0YXRlRm9ySWRlbnRpZmllcihQcm9taXNlZEJsb2JJZGVudGlm
aWVyKSBjb25zdDsKKyAgICB2b2lkIGludm9rZUFuZFJlbW92ZVJlYWR5QmxvYlN0YXRlcygpOwor
CisgICAgVmVjdG9yPEJsb2JTdGF0ZT4gbV9zdGF0ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9iQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9iQ2xpZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4OTgy
YTc2YjgxZmNmYWNmZDIwNWZmNWZmZWY3ZTc3NTc5NGNhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Qcm9taXNlZEJsb2JDbGllbnQubW0KQEAgLTAs
MCArMSwyMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UHJvbWlzZWRCbG9iQ2xpZW50LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCAi
V0tFcnJvci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZp
Y2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGlubGluZSBQcm9taXNlZEJsb2JJ
ZGVudGlmaWVyIG5leHRVbmlxdWVJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgUHJvbWlzZWRC
bG9iSWRlbnRpZmllciBjdXJyZW50VW5pcXVlSWRlbnRpZmllciA9IDE7CisgICAgcmV0dXJuIGN1
cnJlbnRVbmlxdWVJZGVudGlmaWVyKys7Cit9CisKK3N0YXRpYyBOU0Vycm9yICpibG9iV3JpdGlu
Z0Vycm9yKE5TU3RyaW5nICpkZXN0aW5hdGlvblBhdGgpCit7CisgICAgcmV0dXJuIFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlcklu
Zm86QHsgTlNGaWxlUGF0aEVycm9yS2V5IDogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJG
YWlsZWQgdG8gc2F2ZSBibG9iIHRvICVAIiwgZGVzdGluYXRpb25QYXRoXSB9XTsKK30KKworc3Rh
dGljIE5TRXJyb3IgKmJsb2JMb2FkaW5nRXJyb3IoKQoreworICAgIHJldHVybiBbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
OkB7IE5TRmlsZVBhdGhFcnJvcktleSA6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRmFp
bGVkIHRvIGxvYWQgYmxvYiBkYXRhIl0gfV07Cit9CisKK1Byb21pc2VkQmxvYkNsaWVudDo6Qmxv
YlN0YXRlOjpCbG9iU3RhdGUoY29uc3QgUHJvbWlzZWRCbG9iSW5mbyYgYmxvYkluZm8pCisgICAg
OiBpbmZvKGJsb2JJbmZvKQorICAgICwgdW5pcXVlSWRlbnRpZmllcihuZXh0VW5pcXVlSWRlbnRp
ZmllcigpKQoreworfQorCitQcm9taXNlZEJsb2JDbGllbnQ6On5Qcm9taXNlZEJsb2JDbGllbnQo
KQoreworICAgIGZvciAoYXV0byYgc3RhdGUgOiBtX3N0YXRlcykgeworICAgICAgICBpZiAoc3Rh
dGUuZGVzdGluYXRpb25Xcml0aW5nQ29tcGxldGlvbkNhbGxiYWNrKQorICAgICAgICAgICAgc3Rh
dGUuZGVzdGluYXRpb25Xcml0aW5nQ29tcGxldGlvbkNhbGxiYWNrKGJsb2JXcml0aW5nRXJyb3Io
W3N0YXRlLmRlc3RpbmF0aW9uRmlsZVVSTCBwYXRoXSkpOworICAgICAgICBpZiAoc3RhdGUuZGF0
YUxvYWRpbmdDb21wbGV0aW9uQ2FsbGJhY2spCisgICAgICAgICAgICBzdGF0ZS5kYXRhTG9hZGlu
Z0NvbXBsZXRpb25DYWxsYmFjayhuaWwsIGJsb2JMb2FkaW5nRXJyb3IoKSk7CisgICAgICAgIGlm
IChzdGF0ZS5maWxlTG9hZGluZ0NvbXBsZXRpb25DYWxsYmFjaykKKyAgICAgICAgICAgIHN0YXRl
LmZpbGVMb2FkaW5nQ29tcGxldGlvbkNhbGxiYWNrKG5pbCwgYmxvYkxvYWRpbmdFcnJvcigpKTsK
KyAgICB9Cit9CisKK1Byb21pc2VkQmxvYklkZW50aWZpZXIgUHJvbWlzZWRCbG9iQ2xpZW50Ojpk
aWRSZWNlaXZlSW5mbyhjb25zdCBQcm9taXNlZEJsb2JJbmZvJiBpbmZvKQoreworICAgIG1fc3Rh
dGVzLmFwcGVuZCh7IGluZm8gfSk7CisgICAgcmV0dXJuIG1fc3RhdGVzLmxhc3QoKS51bmlxdWVJ
ZGVudGlmaWVyOworfQorCit2b2lkIFByb21pc2VkQmxvYkNsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgUHJvbWlzZWRCbG9iRGF0YSYgZGF0YSkKK3sKKyAgICBhdXRvIGluZGV4ID0gbV9zdGF0
ZXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgc3RhdGUpIHsKKyAgICAgICAgcmV0dXJuIGRhdGEu
ZnVsZmlsbHMoc3RhdGUuaW5mbyk7CisgICAgfSk7CisKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91
bmQpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX3N0YXRlc1tpbmRleF0uZGF0YSA9IGRhdGE7CisgICAgaW52b2tlQW5kUmVt
b3ZlUmVhZHlCbG9iU3RhdGVzKCk7Cit9CisKK3ZvaWQgUHJvbWlzZWRCbG9iQ2xpZW50OjpkaWRS
ZWNlaXZlRmlsZVdyaXRlQ2FsbGJhY2soUHJvbWlzZWRCbG9iSWRlbnRpZmllciBpZGVudGlmaWVy
LCBOU1VSTCAqZmlsZVVSTCwgdm9pZCheY29tcGxldGlvbkhhbmRsZXIpKE5TRXJyb3IgKikpCit7
CisgICAgYXV0byBzdGF0ZSA9IHN0YXRlRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXN0YXRlKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIEFTU0VSVChmaWxlVVJMKTsKKyAgICBBU1NFUlQoIXN0YXRlLT5oYXNB
Y3RpdmVDYWxsYmFjaygpKTsKKyAgICBBU1NFUlQoc3RhdGUtPnN0YXRlID09IEJsb2JTdGF0ZTo6
U3RhdGU6OldhaXRpbmdGb3JDb21wbGV0aW9uKTsKKyAgICBzdGF0ZS0+ZGVzdGluYXRpb25GaWxl
VVJMID0gZmlsZVVSTDsKKyAgICBzdGF0ZS0+ZGVzdGluYXRpb25Xcml0aW5nQ29tcGxldGlvbkNh
bGxiYWNrID0gY29tcGxldGlvbkhhbmRsZXI7CisgICAgaW52b2tlQW5kUmVtb3ZlUmVhZHlCbG9i
U3RhdGVzKCk7Cit9CisKK3ZvaWQgUHJvbWlzZWRCbG9iQ2xpZW50OjpkaWRSZWNlaXZlRGF0YUNh
bGxiYWNrKFByb21pc2VkQmxvYklkZW50aWZpZXIgaWRlbnRpZmllciwgdm9pZCheZGF0YUhhbmRs
ZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopKQoreworICAgIGF1dG8gc3RhdGUgPSBzdGF0ZUZvcklk
ZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgaWYgKCFzdGF0ZSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIXN0YXRl
LT5oYXNBY3RpdmVDYWxsYmFjaygpKTsKKyAgICBBU1NFUlQoc3RhdGUtPnN0YXRlID09IEJsb2JT
dGF0ZTo6U3RhdGU6OldhaXRpbmdGb3JDb21wbGV0aW9uKTsKKyAgICBzdGF0ZS0+ZGF0YUxvYWRp
bmdDb21wbGV0aW9uQ2FsbGJhY2sgPSBkYXRhSGFuZGxlcjsKKyAgICBpbnZva2VBbmRSZW1vdmVS
ZWFkeUJsb2JTdGF0ZXMoKTsKK30KKwordm9pZCBQcm9taXNlZEJsb2JDbGllbnQ6OmRpZFJlY2Vp
dmVGaWxlVVJMQ2FsbGJhY2soUHJvbWlzZWRCbG9iSWRlbnRpZmllciBpZGVudGlmaWVyLCB2b2lk
KF5maWxlSGFuZGxlcikoTlNVUkwgKiwgTlNFcnJvciAqKSkKK3sKKyAgICBhdXRvIHN0YXRlID0g
c3RhdGVGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgIGlmICghc3RhdGUpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNT
RVJUKCFzdGF0ZS0+aGFzQWN0aXZlQ2FsbGJhY2soKSk7CisgICAgQVNTRVJUKHN0YXRlLT5zdGF0
ZSA9PSBCbG9iU3RhdGU6OlN0YXRlOjpXYWl0aW5nRm9yQ29tcGxldGlvbik7CisgICAgc3RhdGUt
PmZpbGVMb2FkaW5nQ29tcGxldGlvbkNhbGxiYWNrID0gZmlsZUhhbmRsZXI7CisgICAgaW52b2tl
QW5kUmVtb3ZlUmVhZHlCbG9iU3RhdGVzKCk7Cit9CisKK3ZvaWQgUHJvbWlzZWRCbG9iQ2xpZW50
OjppbnZva2VBbmRSZW1vdmVSZWFkeUJsb2JTdGF0ZXMoKQoreworICAgIGZvciAoYXV0byYgc3Rh
dGUgOiBtX3N0YXRlcykgeworICAgICAgICBpZiAoc3RhdGUuc3RhdGUgIT0gQmxvYlN0YXRlOjpT
dGF0ZTo6V2FpdGluZ0ZvckNvbXBsZXRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBib29sIGRpZEludm9rZUNhbGxiYWNrID0gZmFsc2U7CisgICAgICAgIGlmIChzdGF0ZS5k
ZXN0aW5hdGlvbldyaXRpbmdDb21wbGV0aW9uQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIGF1dG8m
IGRhdGEgPSBzdGF0ZS5kYXRhOworICAgICAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uRmls
ZVBhdGggPSBbc3RhdGUuZGVzdGluYXRpb25GaWxlVVJMIHBhdGhdOworICAgICAgICAgICAgTlNF
cnJvciAqZmlsZVdyaXRpbmdFcnJvciA9IG5pbDsKKyAgICAgICAgICAgIGlmIChkYXRhLmhhc0Zp
bGUoKSkKKyAgICAgICAgICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNv
cHlJdGVtQXRQYXRoOmRhdGEuZmlsZXBhdGggdG9QYXRoOmRlc3RpbmF0aW9uRmlsZVBhdGggZXJy
b3I6JmZpbGVXcml0aW5nRXJyb3JdOworICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5oYXNEYXRh
KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEuZGF0YS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgICAgICAgICAgW25zRGF0YSB3cml0ZVRvRmlsZTpkZXN0aW5hdGlvbkZp
bGVQYXRoIG9wdGlvbnM6MCBlcnJvcjomZmlsZVdyaXRpbmdFcnJvcl07CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBmaWxlV3JpdGluZ0Vycm9yID0gYmxvYldyaXRpbmdFcnJv
cihkZXN0aW5hdGlvbkZpbGVQYXRoKTsKKyAgICAgICAgICAgIHN0YXRlLmRlc3RpbmF0aW9uV3Jp
dGluZ0NvbXBsZXRpb25DYWxsYmFjayhmaWxlV3JpdGluZ0Vycm9yKTsKKyAgICAgICAgICAgIGRp
ZEludm9rZUNhbGxiYWNrID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5kYXRhTG9h
ZGluZ0NvbXBsZXRpb25DYWxsYmFjayAmJiBzdGF0ZS5pbmZvLmJsb2JUeXBlID09IFByb21pc2Vk
QmxvYlR5cGU6OkRhdGFCYWNrZWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHN0
YXRlLmRhdGEuZGF0YSkgeworICAgICAgICAgICAgICAgIGF1dG8gbnNEYXRhID0gYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5kYXRhTG9hZGluZ0NvbXBsZXRp
b25DYWxsYmFjayhuc0RhdGEuZ2V0KCksIG5pbCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBzdGF0ZS5kYXRhTG9hZGluZ0NvbXBsZXRpb25DYWxsYmFjayhuaWwsIGJsb2JM
b2FkaW5nRXJyb3IoKSk7CisgICAgICAgICAgICBkaWRJbnZva2VDYWxsYmFjayA9IHRydWU7Cisg
ICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZmlsZUxvYWRpbmdDb21wbGV0aW9uQ2FsbGJhY2sgJiYg
c3RhdGUuaW5mby5ibG9iVHlwZSA9PSBQcm9taXNlZEJsb2JUeXBlOjpGaWxlQmFja2VkKSB7Cisg
ICAgICAgICAgICBOU1VSTCAqZmlsZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RhdGUu
ZGF0YS5maWxlcGF0aF07CisgICAgICAgICAgICBpZiAoZmlsZVVSTC5pc0ZpbGVVUkwpCisgICAg
ICAgICAgICAgICAgc3RhdGUuZmlsZUxvYWRpbmdDb21wbGV0aW9uQ2FsbGJhY2soZmlsZVVSTCwg
bmlsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdGF0ZS5maWxlTG9hZGlu
Z0NvbXBsZXRpb25DYWxsYmFjayhuaWwsIGJsb2JMb2FkaW5nRXJyb3IoKSk7CisgICAgICAgICAg
ICBkaWRJbnZva2VDYWxsYmFjayA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGlk
SW52b2tlQ2FsbGJhY2spCisgICAgICAgICAgICBzdGF0ZS5zdGF0ZSA9IHN0YXRlLnN0YXRlID0g
QmxvYlN0YXRlOjpTdGF0ZTo6Q29tcGxldGU7CisgICAgfQorCisgICAgbV9zdGF0ZXMucmVtb3Zl
QWxsTWF0Y2hpbmcoWyZdIChhdXRvJiBzdGF0ZSkgeworICAgICAgICByZXR1cm4gc3RhdGUuc3Rh
dGUgPT0gQmxvYlN0YXRlOjpTdGF0ZTo6Q29tcGxldGU7CisgICAgfSk7Cit9CisKK05TU3RyaW5n
ICpQcm9taXNlZEJsb2JDbGllbnQ6OnV0aVR5cGVGb3JQcm9taXNlZEJsb2JUeXBlKE5TU3RyaW5n
ICpwcm9taXNlZEJsb2JUeXBlKQoreworICAgIC8vIFRoZSBibG9iIHR5cGUgY2FuIGJlIHNwZWNp
ZmllZCBlaXRoZXIgYXMgYSBVVEksIG9yIGFzIGEgTUlNRSB0eXBlLgorICAgIGlmIChVVFR5cGVJ
c0R5bmFtaWMoKENGU3RyaW5nUmVmKXByb21pc2VkQmxvYlR5cGUpIHx8IFVUVHlwZUlzRGVjbGFy
ZWQoKENGU3RyaW5nUmVmKXByb21pc2VkQmxvYlR5cGUpKQorICAgICAgICByZXR1cm4gcHJvbWlz
ZWRCbG9iVHlwZTsKKworICAgIHJldHVybiAoTlNTdHJpbmcgKilhZG9wdENGKFVUVHlwZUNyZWF0
ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgKENGU3RyaW5n
UmVmKXByb21pc2VkQmxvYlR5cGUsIG51bGxwdHIpKS5hdXRvcmVsZWFzZSgpOworfQorCitOU1N0
cmluZyAqUHJvbWlzZWRCbG9iQ2xpZW50OjpmaWxlbmFtZUZvcklkZW50aWZpZXIoUHJvbWlzZWRC
bG9iSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAoreworICAgIGlmIChhdXRvIGZvdW5kU3Rh
dGUgPSBzdGF0ZUZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmb3Vu
ZFN0YXRlLT5pbmZvLmZpbGVuYW1lOworICAgIHJldHVybiB7IH07Cit9CisKK05TU3RyaW5nICpQ
cm9taXNlZEJsb2JDbGllbnQ6OnV0aUZvcklkZW50aWZpZXIoUHJvbWlzZWRCbG9iSWRlbnRpZmll
ciBpZGVudGlmaWVyKSBjb25zdAoreworICAgIGlmIChhdXRvIGZvdW5kU3RhdGUgPSBzdGF0ZUZv
cklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiB1dGlUeXBlRm9yUHJvbWlz
ZWRCbG9iVHlwZShmb3VuZFN0YXRlLT5pbmZvLmNvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4geyB9
OworfQorCit2b2lkIFByb21pc2VkQmxvYkNsaWVudDo6cmVtb3ZlQWxsU3RhdGVzV2l0aG91dEFj
dGl2ZUNhbGxiYWNrcygpCit7CisgICAgbV9zdGF0ZXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdIChh
dXRvJiBzdGF0ZSkgeworICAgICAgICByZXR1cm4gIXN0YXRlLmhhc0FjdGl2ZUNhbGxiYWNrKCk7
CisgICAgfSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UHJvbWlzZWRCbG9iQ2xpZW50OjpCbG9iU3Rh
dGUmPiBQcm9taXNlZEJsb2JDbGllbnQ6OnN0YXRlRm9ySWRlbnRpZmllcihQcm9taXNlZEJsb2JJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpbmRleCA9IG1fc3RhdGVzLmZpbmRN
YXRjaGluZyhbJl0gKGF1dG8mIHN0YXRlKSB7CisgICAgICAgIHJldHVybiBzdGF0ZS51bmlxdWVJ
ZGVudGlmaWVyID09IGlkZW50aWZpZXI7CisgICAgfSk7CisgICAgcmV0dXJuIGluZGV4ID09IG5v
dEZvdW5kID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxQcm9taXNlZEJsb2JDbGllbnQ6
OkJsb2JTdGF0ZSY+IHsgbV9zdGF0ZXNbaW5kZXhdIH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8Y29u
c3QgUHJvbWlzZWRCbG9iQ2xpZW50OjpCbG9iU3RhdGUmPiBQcm9taXNlZEJsb2JDbGllbnQ6OnN0
YXRlRm9ySWRlbnRpZmllcihQcm9taXNlZEJsb2JJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0
Cit7CisgICAgYXV0byBpbmRleCA9IG1fc3RhdGVzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIHN0
YXRlKSB7CisgICAgICAgIHJldHVybiBzdGF0ZS51bmlxdWVJZGVudGlmaWVyID09IGlkZW50aWZp
ZXI7CisgICAgfSk7CisgICAgcmV0dXJuIGluZGV4ID09IG5vdEZvdW5kID8gc3RkOjpudWxsb3B0
IDogc3RkOjpvcHRpb25hbDxjb25zdCBQcm9taXNlZEJsb2JDbGllbnQ6OkJsb2JTdGF0ZSY+IHsg
bV9zdGF0ZXNbaW5kZXhdIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxZjVkZjMzYmIxMzMxZTZlNTRkY2UxYWEwZWU1ZWM5ZGViYTMy
Mjk1Li41Njg1YjM1NDAyMGJmMDllYzFhY2JiZjgxNTMyMzkxOGU0ZmRhNjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxMDgsNiAr
MjEwOCw4IEBACiAJCUY0NDI5MTk2MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAqLzsgfTsK
IAkJRjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NERGRUIwMUU5RTc1MkYw
MDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggKi87IH07CiAJCUY0NERGRUIzMUU5RTc1MkYw
MDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0REZFQjExRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25V
dGlsaXRpZXMubW0gKi87IH07CisJCUY0N0E2MzQyMUZGNzA2RTkwMDgxQjNDQyAvKiBQcm9taXNl
ZEJsb2JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0N0E2MzQwMUZGNzA2RTkwMDgxQjNDQyAvKiBQcm9taXNlZEJsb2JDbGllbnQuaCAqLzsg
fTsKKwkJRjQ3QTYzNDMxRkY3MDZFOTAwODFCM0NDIC8qIFByb21pc2VkQmxvYkNsaWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0E2MzQxMUZG
NzA2RTkwMDgxQjNDQyAvKiBQcm9taXNlZEJsb2JDbGllbnQubW0gKi87IH07CiAJCUY0OTZBNDMx
MUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTZBNDJGMUY1OEEyNzIwMDRD
MTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLzsgfTsKIAkJRjQ5NkE0MzIxRjU4
QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTZBNDMwMUY1OEEyNzIwMDRDMTc1
NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gKi87IH07CiAJCUY2MTEzRTI1MTI2Q0Ux
ODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAv
KiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgfTsKQEAgLTQ1ODEsNiArNDU4Myw4IEBA
CiAJCUY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNobWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkljb25VdGlsaXRpZXMuaDsg
cGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSWNvblV0aWxpdGllcy5tbTsg
cGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGNDdBNjM0MDFGRjcwNkU5MDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb21pc2VkQmxvYkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDdBNjM0MTFGRjcwNkU5MDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iQ2xpZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvbWlzZWRCbG9iQ2xpZW50Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oOyBwYXRoID0gaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDk2QTQzMDFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLm1tOyBwYXRoID0gaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVz
ZXJDb250ZW50VVJMUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
UElVc2VyQ29udGVudFVSTFBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTUzNzksNiArNTM4Myw4IEBACiAJCQkJQ0RBMjlBMUUxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oICovLAogCQkJCUNEQTI5QTIyMUNCRUI2MUEwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RB
MjlBMUYxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSAq
LywKKwkJCQlGNDdBNjM0MDFGRjcwNkU5MDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iQ2xpZW50Lmgg
Ki8sCisJCQkJRjQ3QTYzNDExRkY3MDZFOTAwODFCM0NDIC8qIFByb21pc2VkQmxvYkNsaWVudC5t
bSAqLywKIAkJCQkxQTAwMkQ0NzE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5n
LmggKi8sCiAJCQkJMUEwMDJENDYxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGlu
Zy5tbSAqLywKIAkJCQkxQUZFNDM2NDE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0ZS5oICov
LApAQCAtOTM3MCw2ICs5Mzc2LDcgQEAKIAkJCQkxQUJDM0RGQzE4OTlGNTFDMDA0RjA2MjYgLyog
V0tOYXZpZ2F0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTIwRDUxMThBRDUw
RTAwMDVEMUVENCAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQkMzREYxMTg5OUM2QjYwMDRGMDYyNiAvKiBXS05hdmlnYXRpb25JbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRjQ3QTYzNDIxRkY3MDZFOTAwODFCM0NDIC8qIFByb21pc2Vk
QmxvYkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDQzg3QkExOTgxQzM0MTAwM0QxQUY0
IC8qIFdLTmF2aWdhdGlvblByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEM0E2NUUzMUE3
QzNBOTMwMENBQzYzNyAvKiBXS05hdmlnYXRpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MUIwRUI2MThBNDI0OTUwMDM4NDgxQSAvKiBXS05hdmlnYXRpb25SZXNwb25zZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDUxNCw2ICsxMDUyMSw3IEBACiAJCQkJMEY1OTQ3OTIxODdCM0IzQTAwNDM3
ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY1OTQ3QTcxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0NzlBMTg3QjNCNjAwMDQz
Nzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUY0N0E2MzQzMUZGNzA2RTkwMDgxQjNDQyAvKiBQcm9taXNlZEJsb2JDbGllbnQubW0g
aW4gU291cmNlcyAqLywKIAkJCQkwRjBDMzY1QzE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0N0Ez
MTg3QjNCN0QwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0NzlDMTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1v
dGVTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330352</attachid>
            <date>2018-01-02 16:49:20 -0800</date>
            <delta_ts>2018-01-02 16:49:20 -0800</delta_ts>
            <desc>v2 (blocked by https://bugs.webkit.org/show_bug.cgi?id=181189)</desc>
            <filename>bug-181190-20180102164919.patch</filename>
            <type>text/plain</type>
            <size>23641</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5NzA3OGUyYmQ3ZWQ5NWQ3
ZWU4NzE0MjM3OTUzNzJmM2I2NGZhNDYuLjNjNTJhNWRiOTEyMThhN2FlYmNiNjIwYzZiYzliN2I5
ZWVjZWVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMTgtMDEtMDIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3Vw
cG9ydF0gSW50cm9kdWNlIGEgY2xpZW50IG9iamVjdCBmb3IgcmVjZWl2aW5nIHByb21pc2VkIGJs
b2IgaW5mb3JtYXRpb24gaW4gdGhlIFVJIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZXMgUHJvbWlzZWRCbG9iQ2xpZW50LCBh
IGhlbHBlciBjbGFzcyBmb3Iga2VlcGluZyB0cmFjayBvZiBQcm9taXNlZEJsb2JJbmZvIGFuZCBQ
cm9taXNlZEJsb2JEYXRhIGluIHRoZQorICAgICAgICBVSSBwcm9jZXNzIHRoYXQgY2FuIGJlIHVz
ZWQgYWNyb3NzIENvY29hIHBsYXRmb3Jtcy4gQSBQcm9taXNlZEJsb2JDbGllbnQgaXMgcmVzcG9u
c2libGUgZm9yIGEgdmVjdG9yIG9mCisgICAgICAgIEJsb2JTdGF0ZXMsIGVhY2ggb2Ygd2hpY2gg
cmVwcmVzZW50cyBhIEJsb2IgZGF0YSB0aGF0IGhhcyBiZWVuIHByb21pc2VkIHRvIGEgY2xpZW50
IGluIHRoZSBVSSBwcm9jZXNzLiBUaGUgQVBJCisgICAgICAgIGZvciBQcm9taXNlZEJsb2JDbGll
bnQgaXMgcHJpbWFyaWx5IGNvbXBvc2VkIG9mIHNldmVyYWwgYGRpZFJlY2VpdmUqYCBtZXRob2Rz
IChzZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscykgYWxvbmcKKyAgICAgICAgd2l0aCBvdGhlciBo
ZWxwZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Byb21pc2VkQmxvYkNsaWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xpZW50OjpCbG9iU3RhdGU6
Omhhc0FjdGl2ZUNhbGxiYWNrcyBjb25zdCk6CisKKyAgICAgICAgQSBCbG9iU3RhdGUgaGFzIGFu
IGFjdGl2ZSBjYWxsYmFjayBpZiBhbmQgb25seSBpZiBpdCBoYXMgcmVjZWl2ZWQgYSByZXF1ZXN0
IHRvIGRlbGl2ZXIgaXRzIGJsb2IgZGF0YSB0byB0aGUKKyAgICAgICAgcGxhdGZvcm0gYnkgbWVh
bnMgb2Ygb25lIG9mIHRoZSB0aHJlZSBjYWxsYmFjayB0eXBlcyAoY29vcmRpbmF0ZWQgZmlsZSB3
cml0aW5nIG9uIG1hY09TLCBvciBhIGRhdGEgYmxvYi9maWxlIFVSTAorICAgICAgICBvbiBpT1Mp
IGFuZCBpcyBwZW5kaW5nIGNvbXBsZXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6UHJvbWlzZWRC
bG9iQ2xpZW50OjpCbG9iU3RhdGU6OmNhbkludm9rZUFjdGl2ZUNhbGxiYWNrcyBjb25zdCk6CisK
KyAgICAgICAgVHJ1ZSBpZmYgdGhlcmUgYXJlIGFjdGl2ZSBjYWxsYmFja3MsIGFuZCB0aGUgcHJv
bWlzZWQgZGF0YSBoYXMgYWxyZWFkeSBiZWVuIHJlY2VpdmVkLgorCisgICAgICAgIChXZWJLaXQ6
OlByb21pc2VkQmxvYkNsaWVudDo6Y2xlYXJTdGF0ZXNJZk5vdFRyYW5zZmVycmluZ0RhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpQcm9taXNlZEJsb2JDbGllbnQ6OndpbGxCZWdpblRyYW5zZmVycmlu
Z0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm9taXNlZEJsb2JDbGllbnQ6OmRpZEVuZFRyYW5z
ZmVycmluZ0RhdGEpOgorCisgICAgICAgIFRvIGJlIHVzZWQgYnkgdGhlIGNsaWVudCAoZWl0aGVy
IFdlYlZpZXdJbXBsIG9uIG1hY09TLCBvciBXS0NvbnRlbnRWaWV3IG9uIGlPUykgdG8gaGVscCBt
YW5hZ2UgdGhlIGxpZmV0aW1lIG9mCisgICAgICAgIEJsb2JTdGF0ZXMuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9iQ2xpZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6bmV4dFVuaXF1ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpibG9iV3JpdGlu
Z0Vycm9yKToKKyAgICAgICAgKFdlYktpdDo6YmxvYkxvYWRpbmdFcnJvcik6CisKKyAgICAgICAg
SGVscGVycyB0byBnZW5lcmF0ZSBOU0Vycm9ycyByZWxhdGluZyB0byBwcm9taXNlZCBibG9iIGRl
bGl2ZXJ5LgorCisgICAgICAgIChXZWJLaXQ6Omludm9rZUFuZFJlbW92ZUNhbGxiYWNrc0ZvclN0
YXRlSWZQb3NzaWJsZSk6CisKKyAgICAgICAgU3RhdGljIGhlbHBlciB0byBpbnZva2UgdGhlIGdp
dmVuIHN0YXRlJ3MgY2FsbGJhY2tzLCBpZiBpdHMgZGF0YSBoYXMgYWxyZWFkeSBhcnJpdmVkLiBJ
bnZva2VkIGNhbGxiYWNrcyBhcmUgdGhlbgorICAgICAgICByZW1vdmVkIGZyb20gdGhlIHN0YXRl
J3MgbGlzdCBvZiBjYWxsYmFja3MsIHN1Y2ggdGhhdCB0aGUgZ2l2ZW4gc3RhdGUgd2lsbCBub3Qg
aGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MgYWZ0ZXIKKyAgICAgICAgZXhlY3V0aW5nIHRoaXMg
ZnVuY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xpZW50OjpCbG9iU3Rh
dGU6OkJsb2JTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByb21pc2VkQmxvYkNsaWVudDo6flBy
b21pc2VkQmxvYkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlByb21pc2VkQmxvYkNsaWVudDo6
ZGlkUmVjZWl2ZUluZm8pOgorCisgICAgICAgIEludm9rZWQgd2hlbiB0aGUgVUkgcHJvY2VzcyBo
YXMgcmVjZWl2ZWQgYSBQcm9taXNlZEJsb2JJbmZvIGRlc2NyaWJpbmcgYSBibG9iIHRoYXQgd2ls
bCBiZSBkZWxpdmVyZWQgdG8gdGhlIFVJCisgICAgICAgIHByb2Nlc3MgaW4gdGhlIGZ1dHVyZS4g
VGhlIFByb21pc2VkQmxvYkNsaWVudCBhZGRzIGEgbmV3IEJsb2JTdGF0ZSB0byBpdHMgbGlzdCBv
ZiBzdGF0ZXMgdXNpbmcgdGhpcyBpbmZvcm1hdGlvbiwKKyAgICAgICAgYW5kIHJldHVybnMgdGhl
IGlkZW50aWZpZXIgY29ycmVzcG9uZGluZyB0byB0aGlzIG5ld2x5IGNyZWF0ZWQgc3RhdGUuCisK
KyAgICAgICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisK
KyAgICAgICAgSW52b2tlZCB3aGVuIHRoZSBVSSBwcm9jZXNzIGhhcyByZWNlaXZlZCBhIFByb21p
c2VkQmxvYkRhdGEgY29ycmVzcG9uZGluZyB0byBhIFByb21pc2VkQmxvYkluZm8gdGhhdCB3YXMg
c2VudAorICAgICAgICBlYXJsaWVyLiBVc2luZyB0aGUgYmxvYiBVUkwgb2YgdGhlIHJlY2VpdmVk
IGJsb2IgZGF0YSwgdGhlIGNsaWVudCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nIEJsb2JTdGF0
ZS4gSWYgb25lIG9mCisgICAgICAgIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgaGFzIGFscmVhZHkg
YmVlbiByZWNlaXZlZCBieSB0aGUgUHJvbWlzZWRCbG9iQ2xpZW50LCB0aGVuIHdlIGFkZGl0aW9u
YWxseSBpbnZva2UgdGhlCisgICAgICAgIGNhbGxiYWNrIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUg
bGlzdCBvZiBzdGF0ZXMuCisKKyAgICAgICAgKFdlYktpdDo6UHJvbWlzZWRCbG9iQ2xpZW50Ojpk
aWRSZWNlaXZlRmlsZVdyaXRlQ2FsbGJhY2spOgorCisgICAgICAgIEludm9rZWQgaW4gbWFjT1Mg
d2hlbiB0aGUgVUkgcHJvY2VzcyBoYXMgcmVjZWl2ZWQgYSBjYWxsIHRvIHdyaXRlIHRoZSBwcm9t
aXNlZCBkYXRhIHRvIHRoZSBnaXZlbiBmaWxlIFVSTCB3aXRoIGEKKyAgICAgICAgY29tcGxldGlv
biBibG9jay4gSWYgdGhlIGNvcnJlc3BvbmRpbmcgUHJvbWlzZWRCbG9iRGF0YSBoYXMgYWxyZWFk
eSBiZWVuIHJlY2VpdmVkLCB3ZSBzaW1wbHkgd3JpdGUgdG8gdGhlCisgICAgICAgIGxvY2F0aW9u
IHVzaW5nIHRoZSBibG9iIGRhdGEgYW5kIGludm9rZSB0aGUgY2FsbGJhY2sgcmlnaHQgYXdheTsg
b3RoZXJ3aXNlLCB3ZSBzdG9yZSB0aGUgY2FsbGJhY2sgYW5kIHdhaXQgdW50aWwKKyAgICAgICAg
UHJvbWlzZWRCbG9iQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSBpcyBpbnZva2VkIHdpdGggdGhlIHJp
Z2h0IGJsb2IgVVJMLgorCisgICAgICAgIChXZWJLaXQ6OlByb21pc2VkQmxvYkNsaWVudDo6ZGlk
UmVjZWl2ZURhdGFDYWxsYmFjayk6CisKKyAgICAgICAgSW52b2tlZCBvbiBpT1MgaW4gdGhlIGNh
c2Ugb2YgYSBkYXRhLWJhY2tlZCBCbG9iLCB3aGVuIHRoZSBVSSBwcm9jZXNzIGhhcyByZWNlaXZl
ZCBhIGNhbGwgdG8gcmV0dXJuIHRoZSBwcm9taXNlZAorICAgICAgICBkYXRhIGFzIGFuIE5TRGF0
YSBibG9iLiBMaWtlIGJlZm9yZSwgaWYgdGhlIFByb21pc2VkQmxvYkRhdGEgaGFzIGFscmVhZHkg
YmVlbiByZWNlaXZlZCwgd2UgaW52b2tlIHRoZSBjYWxsYmFjaworICAgICAgICBpbW1lZGlhdGVs
eTsgb3RoZXJ3aXNlLCB3ZSBzdGFzaCB0aGUgY2FsbGJhY2sgaW4gYSBCbG9ja1B0ciBhbmQgd2Fp
dCB1bnRpbCB0aGUgZGF0YSBoYXMgYmVlbiByZWNlaXZlZC4KKworICAgICAgICAoV2ViS2l0OjpQ
cm9taXNlZEJsb2JDbGllbnQ6OmRpZFJlY2VpdmVGaWxlVVJMQ2FsbGJhY2spOgorCisgICAgICAg
IFNpbWlsYXIgdG8gZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywgYnV0IHRoZSBwbGF0Zm9ybSBleHBl
Y3RzIGEgZmlsZSBVUkwgdGhpcyB0aW1lLiBTZWUgYWJvdmUgZm9yIG1vcmUgZGV0YWlsLgorCisg
ICAgICAgIChXZWJLaXQ6OlByb21pc2VkQmxvYkNsaWVudDo6dXRpVHlwZUZvclByb21pc2VkQmxv
YlR5cGUpOgorICAgICAgICAoV2ViS2l0OjpQcm9taXNlZEJsb2JDbGllbnQ6OmZpbGVuYW1lRm9y
SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlByb21pc2VkQmxvYkNsaWVudDo6
dXRpRm9ySWRlbnRpZmllciBjb25zdCk6CisKKyAgICAgICAgSGVscGVycyB0byBmZXRjaCBVVEkg
YW5kIGZpbGVuYW1lIGZvciB0aGUgYmxvYiBzdGF0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZl
biBpZGVudGlmaWVyLgorCisgICAgICAgIChXZWJLaXQ6OlByb21pc2VkQmxvYkNsaWVudDo6Y2xl
YXJTdGF0ZXMpOgorCisgICAgICAgIFJlbW92ZXMgYWxsIHN0YXRlcyBvbiB0aGUgcHJvbWlzZWQg
YmxvYiwgaW52b2tpbmcgYW55IGV4aXN0aW5nIGNhbGxiYWNrcyB3aXRoIGVycm9yIHJlc3VsdHMu
CisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0x
Mi0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
QXR0YWNobWVudCBTdXBwb3J0XSBJbnRyb2R1Y2UgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBJUEMgc3Vw
cG9ydCBmb3Igd3JpdGluZyBwcm9taXNlZCBibG9icwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9iQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Qcm9taXNlZEJsb2JDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmZhZDA4Y2Jj
YTZlNzBmMDUwYzBlNzc4MTU4Mzk1MzVhYTdhY2E1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9iQ2xpZW50LmgKQEAgLTAsMCArMSwx
MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
CisjaW1wb3J0IDxXZWJDb3JlL1Byb21pc2VkQmxvYkluZm8uaD4KKyNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0eXBl
ZGVmIGludCBQcm9taXNlZEJsb2JJZGVudGlmaWVyOworCitjbGFzcyBQcm9taXNlZEJsb2JDbGll
bnQgeworcHVibGljOgorICAgIHN0cnVjdCBCbG9iU3RhdGUgeworICAgICAgICBCbG9iU3RhdGUo
Y29uc3QgV2ViQ29yZTo6UHJvbWlzZWRCbG9iSW5mbyYpOworCisgICAgICAgIFdlYkNvcmU6OlBy
b21pc2VkQmxvYkluZm8gaW5mbzsKKyAgICAgICAgV2ViQ29yZTo6UHJvbWlzZWRCbG9iRGF0YSBk
YXRhOworCisgICAgICAgIC8vIEZvciB3cml0aW5nIHRvIGEgZGVzaWduYXRlZCB0ZW1wb3Jhcnkg
VVJMLgorICAgICAgICBWZWN0b3I8UmV0YWluUHRyPE5TVVJMPj4gZGVzdGluYXRpb25GaWxlVVJM
czsKKyAgICAgICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoTlNFcnJvciAqKT4+IGRlc3RpbmF0aW9u
V3JpdGluZ0NvbXBsZXRpb25DYWxsYmFja3M7CisKKyAgICAgICAgLy8gRm9yIGxvYWRpbmcgYSBi
bG9iIGZyb20gYW4gZXhpc3RpbmcgZmlsZSBvciBkYXRhIGJ1ZmZlci4KKyAgICAgICAgVmVjdG9y
PEJsb2NrUHRyPHZvaWQoTlNVUkwgKiwgTlNFcnJvciAqKT4+IGZpbGVMb2FkaW5nQ29tcGxldGlv
bkNhbGxiYWNrczsKKyAgICAgICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoTlNEYXRhICosIE5TRXJy
b3IgKik+PiBkYXRhTG9hZGluZ0NvbXBsZXRpb25DYWxsYmFja3M7CisKKyAgICAgICAgUHJvbWlz
ZWRCbG9iSWRlbnRpZmllciB1bmlxdWVJZGVudGlmaWVyOworCisgICAgICAgIGNvbnN0ZXhwciBi
b29sIGhhc0FjdGl2ZUNhbGxiYWNrcygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBkZXN0aW5hdGlvbldyaXRpbmdDb21wbGV0aW9uQ2FsbGJhY2tzLnNpemUoKSB8fCBmaWxl
TG9hZGluZ0NvbXBsZXRpb25DYWxsYmFja3Muc2l6ZSgpIHx8IGRhdGFMb2FkaW5nQ29tcGxldGlv
bkNhbGxiYWNrcy5zaXplKCk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdGV4cHIgYm9vbCBj
YW5JbnZva2VBY3RpdmVDYWxsYmFja3MoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gaGFzQWN0aXZlQ2FsbGJhY2tzKCkgJiYgZGF0YTsKKyAgICAgICAgfQorICAgIH07CisK
KyAgICB+UHJvbWlzZWRCbG9iQ2xpZW50KCk7CisKKyAgICBQcm9taXNlZEJsb2JJZGVudGlmaWVy
IGRpZFJlY2VpdmVJbmZvKGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQmxvYkluZm8mKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlByb21pc2VkQmxvYkRhdGEmKTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUZpbGVXcml0ZUNhbGxiYWNrKFByb21pc2VkQmxvYklkZW50aWZp
ZXIsIE5TVVJMICpmaWxlVVJMLCB2b2lkKF5jb21wbGV0aW9uSGFuZGxlcikoTlNFcnJvciAqKSk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUNhbGxiYWNrKFByb21pc2VkQmxvYklkZW50aWZpZXIs
IHZvaWQoXmRhdGFIYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAqKSk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRmlsZVVSTENhbGxiYWNrKFByb21pc2VkQmxvYklkZW50aWZpZXIsIHZvaWQoXmZpbGVI
YW5kbGVyKShOU1VSTCAqLCBOU0Vycm9yICopKTsKKworICAgIE5TU3RyaW5nICpmaWxlbmFtZUZv
cklkZW50aWZpZXIoUHJvbWlzZWRCbG9iSWRlbnRpZmllcikgY29uc3Q7CisgICAgTlNTdHJpbmcg
KnV0aUZvcklkZW50aWZpZXIoUHJvbWlzZWRCbG9iSWRlbnRpZmllcikgY29uc3Q7CisKKyAgICB2
b2lkIGNsZWFyU3RhdGVzSWZOb3RUcmFuc2ZlcnJpbmdEYXRhKCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9kYXRhVHJhbnNmZXJDb3VudCkKKyAgICAgICAgICAgIGNsZWFyU3RhdGVzKCk7CisgICAg
fQorICAgIHZvaWQgd2lsbEJlZ2luVHJhbnNmZXJyaW5nRGF0YSgpIHsgbV9kYXRhVHJhbnNmZXJD
b3VudCsrOyB9CisgICAgdm9pZCBkaWRFbmRUcmFuc2ZlcnJpbmdEYXRhKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX2RhdGFUcmFuc2ZlckNvdW50KTsKKyAgICAgICAgaWYgKCFtX2RhdGFUcmFu
c2ZlckNvdW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGF0YVRyYW5zZmVy
Q291bnQtLTsKKyAgICAgICAgY2xlYXJTdGF0ZXNJZk5vdFRyYW5zZmVycmluZ0RhdGEoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgTlNTdHJpbmcgKnV0aVR5cGVGb3JQcm9taXNlZEJsb2JUeXBlKE5T
U3RyaW5nICopOworCitwcml2YXRlOgorICAgIHZvaWQgY2xlYXJTdGF0ZXMoKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEJsb2JTdGF0ZSY+IHN0YXRlRm9ySWRlbnRpZmllcihQcm9taXNlZEJsb2JJZGVu
dGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGNvbnN0IEJsb2JTdGF0ZSY+IHN0YXRlRm9ySWRl
bnRpZmllcihQcm9taXNlZEJsb2JJZGVudGlmaWVyKSBjb25zdDsKKworICAgIFZlY3RvcjxCbG9i
U3RhdGU+IG1fc3RhdGVzOworICAgIHVuc2lnbmVkIG1fZGF0YVRyYW5zZmVyQ291bnQgeyAwIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9i
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJvbWlzZWRCbG9iQ2xp
ZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM3N2Q0MDQ0OWY3YmVlYTViMzk2OWUwZjUxZDMzZGFmMTE4NDcz
YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Qcm9t
aXNlZEJsb2JDbGllbnQubW0KQEAgLTAsMCArMSwyMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJvbWlzZWRCbG9iQ2xpZW50LmgiCisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKworI2ltcG9ydCAiV0tFcnJvci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQor
I2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlm
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Rh
dGljIGlubGluZSBQcm9taXNlZEJsb2JJZGVudGlmaWVyIG5leHRVbmlxdWVJZGVudGlmaWVyKCkK
K3sKKyAgICBzdGF0aWMgUHJvbWlzZWRCbG9iSWRlbnRpZmllciBjdXJyZW50VW5pcXVlSWRlbnRp
ZmllciA9IDE7CisgICAgcmV0dXJuIGN1cnJlbnRVbmlxdWVJZGVudGlmaWVyKys7Cit9CisKK3N0
YXRpYyBOU0Vycm9yICpibG9iV3JpdGluZ0Vycm9yKE5TU3RyaW5nICpkZXN0aW5hdGlvblBhdGgp
Cit7CisgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNv
ZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNGaWxlUGF0aEVycm9yS2V5IDogW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGYWlsZWQgdG8gc2F2ZSBibG9iIHRvICVAIiwgZGVzdGlu
YXRpb25QYXRoXSB9XTsKK30KKworc3RhdGljIE5TRXJyb3IgKmJsb2JMb2FkaW5nRXJyb3IoKQor
eworICAgIHJldHVybiBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TRmlsZVBhdGhFcnJvcktleSA6IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiRmFpbGVkIHRvIGxvYWQgYmxvYiBkYXRhIl0gfV07Cit9CisK
K3N0YXRpYyB2b2lkIGludm9rZUFuZFJlbW92ZUNhbGxiYWNrc0ZvclN0YXRlSWZQb3NzaWJsZShQ
cm9taXNlZEJsb2JDbGllbnQ6OkJsb2JTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKCFzdGF0ZS5j
YW5JbnZva2VBY3RpdmVDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLmRlc3RpbmF0aW9uV3JpdGluZ0NvbXBsZXRp
b25DYWxsYmFja3Muc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGF1dG8mIGNhbGxiYWNrID0g
c3RhdGUuZGVzdGluYXRpb25Xcml0aW5nQ29tcGxldGlvbkNhbGxiYWNrc1tpbmRleF07CisgICAg
ICAgIGF1dG8mIGRlc3RpbmF0aW9uVVJMID0gc3RhdGUuZGVzdGluYXRpb25GaWxlVVJMc1tpbmRl
eF07CisgICAgICAgIGF1dG8mIGRhdGEgPSBzdGF0ZS5kYXRhOworICAgICAgICBOU1N0cmluZyAq
ZGVzdGluYXRpb25GaWxlUGF0aCA9IFtkZXN0aW5hdGlvblVSTCBwYXRoXTsKKyAgICAgICAgTlNF
cnJvciAqZmlsZVdyaXRpbmdFcnJvciA9IG5pbDsKKyAgICAgICAgaWYgKGRhdGEuaGFzRmlsZSgp
KQorICAgICAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0
UGF0aDpkYXRhLmZpbGVQYXRoIHRvUGF0aDpkZXN0aW5hdGlvbkZpbGVQYXRoIGVycm9yOiZmaWxl
V3JpdGluZ0Vycm9yXTsKKyAgICAgICAgZWxzZSBpZiAoZGF0YS5oYXNEYXRhKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS5kYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
ICAgIFtuc0RhdGEgd3JpdGVUb0ZpbGU6ZGVzdGluYXRpb25GaWxlUGF0aCBvcHRpb25zOjAgZXJy
b3I6JmZpbGVXcml0aW5nRXJyb3JdOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGZpbGVX
cml0aW5nRXJyb3IgPSBibG9iV3JpdGluZ0Vycm9yKGRlc3RpbmF0aW9uRmlsZVBhdGgpOworICAg
ICAgICBjYWxsYmFjayhmaWxlV3JpdGluZ0Vycm9yKTsKKyAgICB9CisgICAgc3RhdGUuZGVzdGlu
YXRpb25GaWxlVVJMcy5jbGVhcigpOworICAgIHN0YXRlLmRlc3RpbmF0aW9uV3JpdGluZ0NvbXBs
ZXRpb25DYWxsYmFja3MuY2xlYXIoKTsKKworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBzdGF0
ZS5kYXRhTG9hZGluZ0NvbXBsZXRpb25DYWxsYmFja3MpIHsKKyAgICAgICAgaWYgKGF1dG8mIGJ1
ZmZlciA9IHN0YXRlLmRhdGEuZGF0YSkgeworICAgICAgICAgICAgYXV0byBuc0RhdGEgPSBidWZm
ZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgY2FsbGJhY2sobnNEYXRhLmdldCgpLCBu
aWwpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrKG5pbCwgYmxvYkxvYWRp
bmdFcnJvcigpKTsKKyAgICB9CisgICAgc3RhdGUuZGF0YUxvYWRpbmdDb21wbGV0aW9uQ2FsbGJh
Y2tzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3RhdGUuZmlsZUxvYWRp
bmdDb21wbGV0aW9uQ2FsbGJhY2tzKSB7CisgICAgICAgIE5TVVJMICpmaWxlVVJMID0gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpzdGF0ZS5kYXRhLmZpbGVQYXRoXTsKKyAgICAgICAgaWYgKGZpbGVV
UkwuaXNGaWxlVVJMKQorICAgICAgICAgICAgY2FsbGJhY2soZmlsZVVSTCwgbmlsKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2sobmlsLCBibG9iTG9hZGluZ0Vycm9yKCkpOwor
ICAgIH0KKyAgICBzdGF0ZS5maWxlTG9hZGluZ0NvbXBsZXRpb25DYWxsYmFja3MuY2xlYXIoKTsK
K30KKworUHJvbWlzZWRCbG9iQ2xpZW50OjpCbG9iU3RhdGU6OkJsb2JTdGF0ZShjb25zdCBQcm9t
aXNlZEJsb2JJbmZvJiBibG9iSW5mbykKKyAgICA6IGluZm8oYmxvYkluZm8pCisgICAgLCB1bmlx
dWVJZGVudGlmaWVyKG5leHRVbmlxdWVJZGVudGlmaWVyKCkpCit7Cit9CisKK1Byb21pc2VkQmxv
YkNsaWVudDo6flByb21pc2VkQmxvYkNsaWVudCgpCit7CisgICAgY2xlYXJTdGF0ZXMoKTsKK30K
KworUHJvbWlzZWRCbG9iSWRlbnRpZmllciBQcm9taXNlZEJsb2JDbGllbnQ6OmRpZFJlY2VpdmVJ
bmZvKGNvbnN0IFByb21pc2VkQmxvYkluZm8mIGluZm8pCit7CisgICAgbV9zdGF0ZXMuYXBwZW5k
KHsgaW5mbyB9KTsKKyAgICByZXR1cm4gbV9zdGF0ZXMubGFzdCgpLnVuaXF1ZUlkZW50aWZpZXI7
Cit9CisKK3ZvaWQgUHJvbWlzZWRCbG9iQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShjb25zdCBQcm9t
aXNlZEJsb2JEYXRhJiBkYXRhKQoreworICAgIGF1dG8gaW5kZXggPSBtX3N0YXRlcy5maW5kTWF0
Y2hpbmcoWyZdIChhdXRvJiBzdGF0ZSkgeworICAgICAgICByZXR1cm4gIXN0YXRlLmRhdGEgJiYg
ZGF0YS5mdWxmaWxscyhzdGF0ZS5pbmZvKTsKKyAgICB9KTsKKworICAgIGlmIChpbmRleCA9PSBu
b3RGb3VuZCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8mIHN0YXRlID0gbV9zdGF0ZXNbaW5kZXhdOworICAgIHN0YXRl
LmRhdGEgPSBkYXRhOworICAgIGludm9rZUFuZFJlbW92ZUNhbGxiYWNrc0ZvclN0YXRlSWZQb3Nz
aWJsZShzdGF0ZSk7Cit9CisKK3ZvaWQgUHJvbWlzZWRCbG9iQ2xpZW50OjpkaWRSZWNlaXZlRmls
ZVdyaXRlQ2FsbGJhY2soUHJvbWlzZWRCbG9iSWRlbnRpZmllciBpZGVudGlmaWVyLCBOU1VSTCAq
ZmlsZVVSTCwgdm9pZCheY29tcGxldGlvbkhhbmRsZXIpKE5TRXJyb3IgKikpCit7CisgICAgYXV0
byBzdGF0ZSA9IHN0YXRlRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBpZiAoIXN0YXRl
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihibG9iV3JpdGluZ0Vycm9yKGZpbGVVUkwucGF0aCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEFTU0VSVChmaWxlVVJMKTsKKyAgICBzdGF0ZS0+ZGVzdGluYXRpb25GaWxlVVJM
cy5hcHBlbmQoZmlsZVVSTCk7CisgICAgc3RhdGUtPmRlc3RpbmF0aW9uV3JpdGluZ0NvbXBsZXRp
b25DYWxsYmFja3MuYXBwZW5kKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBpbnZva2VBbmRSZW1v
dmVDYWxsYmFja3NGb3JTdGF0ZUlmUG9zc2libGUoKnN0YXRlKTsKK30KKwordm9pZCBQcm9taXNl
ZEJsb2JDbGllbnQ6OmRpZFJlY2VpdmVEYXRhQ2FsbGJhY2soUHJvbWlzZWRCbG9iSWRlbnRpZmll
ciBpZGVudGlmaWVyLCB2b2lkKF5kYXRhSGFuZGxlcikoTlNEYXRhICosIE5TRXJyb3IgKikpCit7
CisgICAgYXV0byBzdGF0ZSA9IHN0YXRlRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXN0YXRlKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBkYXRh
SGFuZGxlcihuaWwsIGJsb2JMb2FkaW5nRXJyb3IoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgQVNTRVJUKHN0YXRlLT5pbmZvLmJsb2JUeXBlID09IFByb21pc2VkQmxvYlR5cGU6OkRh
dGFCYWNrZWQpOworICAgIHN0YXRlLT5kYXRhTG9hZGluZ0NvbXBsZXRpb25DYWxsYmFja3MuYXBw
ZW5kKGRhdGFIYW5kbGVyKTsKKyAgICBpbnZva2VBbmRSZW1vdmVDYWxsYmFja3NGb3JTdGF0ZUlm
UG9zc2libGUoKnN0YXRlKTsKK30KKwordm9pZCBQcm9taXNlZEJsb2JDbGllbnQ6OmRpZFJlY2Vp
dmVGaWxlVVJMQ2FsbGJhY2soUHJvbWlzZWRCbG9iSWRlbnRpZmllciBpZGVudGlmaWVyLCB2b2lk
KF5maWxlSGFuZGxlcikoTlNVUkwgKiwgTlNFcnJvciAqKSkKK3sKKyAgICBhdXRvIHN0YXRlID0g
c3RhdGVGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgIGlmICghc3RhdGUpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGZpbGVIYW5kbGVyKG5pbCwgYmxvYkxv
YWRpbmdFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoc3RhdGUt
PmluZm8uYmxvYlR5cGUgPT0gUHJvbWlzZWRCbG9iVHlwZTo6RmlsZUJhY2tlZCk7CisgICAgc3Rh
dGUtPmZpbGVMb2FkaW5nQ29tcGxldGlvbkNhbGxiYWNrcy5hcHBlbmQoZmlsZUhhbmRsZXIpOwor
ICAgIGludm9rZUFuZFJlbW92ZUNhbGxiYWNrc0ZvclN0YXRlSWZQb3NzaWJsZSgqc3RhdGUpOwor
fQorCitOU1N0cmluZyAqUHJvbWlzZWRCbG9iQ2xpZW50Ojp1dGlUeXBlRm9yUHJvbWlzZWRCbG9i
VHlwZShOU1N0cmluZyAqcHJvbWlzZWRCbG9iVHlwZSkKK3sKKyAgICAvLyBUaGUgYmxvYiB0eXBl
IGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgVVRJLCBvciBhcyBhIE1JTUUgdHlwZS4KKyAg
ICBpZiAoVVRUeXBlSXNEeW5hbWljKChDRlN0cmluZ1JlZilwcm9taXNlZEJsb2JUeXBlKSB8fCBV
VFR5cGVJc0RlY2xhcmVkKChDRlN0cmluZ1JlZilwcm9taXNlZEJsb2JUeXBlKSkKKyAgICAgICAg
cmV0dXJuIHByb21pc2VkQmxvYlR5cGU7CisKKyAgICByZXR1cm4gKE5TU3RyaW5nICopYWRvcHRD
RihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5
cGUsIChDRlN0cmluZ1JlZilwcm9taXNlZEJsb2JUeXBlLCBudWxscHRyKSkuYXV0b3JlbGVhc2Uo
KTsKK30KKworTlNTdHJpbmcgKlByb21pc2VkQmxvYkNsaWVudDo6ZmlsZW5hbWVGb3JJZGVudGlm
aWVyKFByb21pc2VkQmxvYklkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBpZiAo
YXV0byBmb3VuZFN0YXRlID0gc3RhdGVGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAg
ICByZXR1cm4gZm91bmRTdGF0ZS0+aW5mby5maWxlbmFtZTsKKyAgICByZXR1cm4geyB9OworfQor
CitOU1N0cmluZyAqUHJvbWlzZWRCbG9iQ2xpZW50Ojp1dGlGb3JJZGVudGlmaWVyKFByb21pc2Vk
QmxvYklkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBpZiAoYXV0byBmb3VuZFN0
YXRlID0gc3RhdGVGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gdXRp
VHlwZUZvclByb21pc2VkQmxvYlR5cGUoZm91bmRTdGF0ZS0+aW5mby5jb250ZW50VHlwZSk7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBQcm9taXNlZEJsb2JDbGllbnQ6OmNsZWFyU3RhdGVz
KCkKK3sKKyAgICBmb3IgKGF1dG8mIHN0YXRlIDogbV9zdGF0ZXMpIHsKKyAgICAgICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLmRlc3RpbmF0aW9uV3JpdGluZ0NvbXBsZXRp
b25DYWxsYmFja3Muc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgc3RhdGUuZGVzdGluYXRp
b25Xcml0aW5nQ29tcGxldGlvbkNhbGxiYWNrc1tpbmRleF0oYmxvYldyaXRpbmdFcnJvcihbc3Rh
dGUuZGVzdGluYXRpb25GaWxlVVJMc1tpbmRleF0gcGF0aF0pKTsKKyAgICAgICAgZm9yIChhdXRv
JiBjYWxsYmFjayA6IHN0YXRlLmRhdGFMb2FkaW5nQ29tcGxldGlvbkNhbGxiYWNrcykKKyAgICAg
ICAgICAgIGNhbGxiYWNrKG5pbCwgYmxvYkxvYWRpbmdFcnJvcigpKTsKKyAgICAgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IHN0YXRlLmZpbGVMb2FkaW5nQ29tcGxldGlvbkNhbGxiYWNrcykKKyAg
ICAgICAgICAgIGNhbGxiYWNrKG5pbCwgYmxvYkxvYWRpbmdFcnJvcigpKTsKKyAgICB9CisgICAg
bV9zdGF0ZXMuY2xlYXIoKTsKK30KKworc3RkOjpvcHRpb25hbDxQcm9taXNlZEJsb2JDbGllbnQ6
OkJsb2JTdGF0ZSY+IFByb21pc2VkQmxvYkNsaWVudDo6c3RhdGVGb3JJZGVudGlmaWVyKFByb21p
c2VkQmxvYklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGluZGV4ID0gbV9zdGF0
ZXMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgc3RhdGUpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRl
LnVuaXF1ZUlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsKKyAgICB9KTsKKyAgICByZXR1cm4gaW5k
ZXggPT0gbm90Rm91bmQgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPFByb21pc2VkQmxv
YkNsaWVudDo6QmxvYlN0YXRlJj4geyBtX3N0YXRlc1tpbmRleF0gfTsKK30KKworc3RkOjpvcHRp
b25hbDxjb25zdCBQcm9taXNlZEJsb2JDbGllbnQ6OkJsb2JTdGF0ZSY+IFByb21pc2VkQmxvYkNs
aWVudDo6c3RhdGVGb3JJZGVudGlmaWVyKFByb21pc2VkQmxvYklkZW50aWZpZXIgaWRlbnRpZmll
cikgY29uc3QKK3sKKyAgICBhdXRvIGluZGV4ID0gbV9zdGF0ZXMuZmluZE1hdGNoaW5nKFsmXSAo
YXV0byYgc3RhdGUpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRlLnVuaXF1ZUlkZW50aWZpZXIgPT0g
aWRlbnRpZmllcjsKKyAgICB9KTsKKyAgICByZXR1cm4gaW5kZXggPT0gbm90Rm91bmQgPyBzdGQ6
Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGNvbnN0IFByb21pc2VkQmxvYkNsaWVudDo6QmxvYlN0
YXRlJj4geyBtX3N0YXRlc1tpbmRleF0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjYzVlNDkxMWMzMmIxYjcyNTdlNThkNjlmNjI2
YjUxZTVlN2I2M2IuLjFhOTk4ZDkyY2JkZjMyMmQ0ZTUyMWE1YThjOWQxMmU1N2I2NzZkNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjEwOCw2ICsyMTA4LDggQEAKIAkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFj
aG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5o
ICovOyB9OwogCQlGNDRERkVCMjFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0REZFQjAx
RTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCAqLzsgfTsKIAkJRjQ0REZFQjMx
RTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyog
V2ViSWNvblV0aWxpdGllcy5tbSAqLzsgfTsKKwkJRjQ3QTYzNDIxRkY3MDZFOTAwODFCM0NDIC8q
IFByb21pc2VkQmxvYkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ3QTYzNDAxRkY3MDZFOTAwODFCM0NDIC8qIFByb21pc2VkQmxvYkNsaWVu
dC5oICovOyB9OworCQlGNDdBNjM0MzFGRjcwNkU5MDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9iQ2xp
ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3
QTYzNDExRkY3MDZFOTAwODFCM0NDIC8qIFByb21pc2VkQmxvYkNsaWVudC5tbSAqLzsgfTsKIAkJ
RjQ5NkE0MzExRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ5NkE0MkYxRjU4
QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovOyB9OwogCQlGNDk2
QTQzMjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ5NkE0MzAxRjU4QTI3
MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSAqLzsgfTsKIAkJRjYxMTNF
MjUxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYxMTNFMjQxMjZDRTE4MjAw
NTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyB9OwpAQCAtNDU4MSw2ICs0
NTgzLDggQEAKIAkJRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRl
cm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdHRhY2htZW50SW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0REZFQjAxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25V
dGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSWNvblV0aWxp
dGllcy5oOyBwYXRoID0gaW9zL1dlYkljb25VdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQ0REZFQjExRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJY29uVXRpbGl0
aWVzLm1tOyBwYXRoID0gaW9zL1dlYkljb25VdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0N0E2MzQwMUZGNzA2RTkwMDgxQjNDQyAvKiBQcm9taXNlZEJsb2JDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvbWlzZWRCbG9iQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0N0E2MzQxMUZGNzA2RTkwMDgxQjNDQyAvKiBQcm9taXNlZEJsb2JD
bGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9taXNlZEJsb2JDbGllbnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTZBNDJGMUY1OEEyNzIwMDRDMTc1NyAvKiBE
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLmg7IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTZBNDMwMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUubW07IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcg
LyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTM3OSw2ICs1MzgzLDggQEAKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0Yg
LyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYx
QTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywK
IAkJCQlDREEyOUExRjFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tICovLAorCQkJCUY0N0E2MzQwMUZGNzA2RTkwMDgxQjNDQyAvKiBQcm9taXNlZEJsb2JD
bGllbnQuaCAqLywKKwkJCQlGNDdBNjM0MTFGRjcwNkU5MDA4MUIzQ0MgLyogUHJvbWlzZWRCbG9i
Q2xpZW50Lm1tICovLAogCQkJCTFBMDAyRDQ3MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3Rh
dGVDb2RpbmcuaCAqLywKIAkJCQkxQTAwMkQ0NjE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0
YXRlQ29kaW5nLm1tICovLAogCQkJCTFBRkU0MzY0MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVn
YXRlLmggKi8sCkBAIC05MzcwLDYgKzkzNzYsNyBAQAogCQkJCTFBQkMzREZDMTg5OUY1MUMwMDRG
MDYyNiAvKiBXS05hdmlnYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBMjBE
NTExOEFENTBFMDAwNUQxRUQ0IC8qIFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCQzNERjExODk5QzZCNjAwNEYwNjI2IC8qIFdLTmF2aWdhdGlvbklu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDdBNjM0MjFGRjcwNkU5MDA4MUIzQ0MgLyog
UHJvbWlzZWRCbG9iQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNDODdCQTE5ODFDMzQx
MDAzRDFBRjQgLyogV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQz
QTY1RTMxQTdDM0E5MzAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlvblJlZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUExQjBFQjYxOEE0MjQ5NTAwMzg0ODFBIC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEwNTE0LDYgKzEwNTIxLDcgQEAKIAkJCQkwRjU5NDc5MjE4N0Iz
QjNBMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwRjU5NDdBNzE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3OUExODdC
M0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRjQ3QTYzNDMxRkY3MDZFOTAwODFCM0NDIC8qIFByb21pc2VkQmxvYkNs
aWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGMEMzNjVDMThDMDVDQTEwMEY2MDdENyAvKiBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY1OTQ3QTMxODdCM0I3RDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>