<?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>90142</bug_id>
          
          <creation_ts>2012-06-28 00:53:41 -0700</creation_ts>
          <short_desc>[WK2] Serialization of Resource[Request,Response,Error] should be shared across ports</short_desc>
          <delta_ts>2012-10-12 05:01:13 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>japhet</cc>
    
    <cc>menard</cc>
    
    <cc>naginenis</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>659307</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-28 00:53:41 -0700</bug_when>
    <thetext>For most ports it is sufficient to encode the ResourceRequestBase, and if needed some additional platform data. We should share the common part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659556</commentid>
    <comment_count>1</comment_count>
      <attachid>149963</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-28 09:28:09 -0700</bug_when>
    <thetext>Created attachment 149963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659750</commentid>
    <comment_count>2</comment_count>
      <attachid>149963</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-28 13:29:16 -0700</bug_when>
    <thetext>Comment on attachment 149963
Patch

Attachment 149963 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13106194</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660310</commentid>
    <comment_count>3</comment_count>
      <attachid>150120</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-29 02:24:17 -0700</bug_when>
    <thetext>Created attachment 150120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700623</commentid>
    <comment_count>4</comment_count>
      <attachid>150120</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-21 04:50:28 -0700</bug_when>
    <thetext>Comment on attachment 150120
Patch

This is out of date and need to be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734614</commentid>
    <comment_count>5</comment_count>
      <attachid>167081</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-04 05:39:41 -0700</bug_when>
    <thetext>Created attachment 167081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734633</commentid>
    <comment_count>6</comment_count>
      <attachid>167081</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 06:10:50 -0700</bug_when>
    <thetext>Comment on attachment 167081
Patch

Attachment 167081 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14136997</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734729</commentid>
    <comment_count>7</comment_count>
      <attachid>167111</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-04 08:55:38 -0700</bug_when>
    <thetext>Created attachment 167111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739100</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-10 10:43:04 -0700</bug_when>
    <thetext>Simon, could you review this? Originally you was the one mentioned that these should be shared across ports. :) After my first patch a patch landed for platforms using soup, but still Qt can also use the same code to serialize the common data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740788</commentid>
    <comment_count>9</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 04:15:20 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/131168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740793</commentid>
    <comment_count>10</comment_count>
      <attachid>167111</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 04:20:54 -0700</bug_when>
    <thetext>Comment on attachment 167111
Patch

It broke the ARM build:
/mnt/raptor2/slaves/qt5-linux-armv7-release/build/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:505:45: error: &apos;const ValueType&apos; has no member named &apos;first&apos;
/mnt/raptor2/slaves/qt5-linux-armv7-release/build/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:505:56: error: &apos;const ValueType&apos; has no member named &apos;second&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740801</commentid>
    <comment_count>11</comment_count>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-10-12 04:37:31 -0700</bug_when>
    <thetext>This change has broken the EFL builds also:
http://build.webkit.org/waterfall?category=EFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740804</commentid>
    <comment_count>12</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 04:38:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; This change has broken the EFL builds also:
&gt; http://build.webkit.org/waterfall?category=EFL

Sorry, hopefully I fixed all the builds in http://trac.webkit.org/changeset/131170.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740807</commentid>
    <comment_count>13</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-10-12 04:44:50 -0700</bug_when>
    <thetext>Another error has now popped up:

Linking CXX shared library ../../lib/libewebkit2.so
CMakeFiles/ewebkit2.dir/Shared/soup/WebCoreArgumentCodersSoup.cpp.o: In function `CoreIPC::ArgumentCoder&lt;WebCore::ResourceError&gt;::encode(CoreIPC::ArgumentEncoder*, WebCore::ResourceError const&amp;)&apos;:
WebCoreArgumentCodersSoup.cpp:(.text+0xe4): multiple definition of `CoreIPC::ArgumentCoder&lt;WebCore::ResourceError&gt;::encode(CoreIPC::ArgumentEncoder*, WebCore::ResourceError const&amp;)&apos;
CMakeFiles/ewebkit2.dir/Shared/WebCoreArgumentCoders.cpp.o:WebCoreArgumentCoders.cpp:(.text+0x11ca): first defined here
CMakeFiles/ewebkit2.dir/Shared/soup/WebCoreArgumentCodersSoup.cpp.o: In function `CoreIPC::ArgumentCoder&lt;WebCore::ResourceError&gt;::decode(CoreIPC::ArgumentDecoder*, WebCore::ResourceError&amp;)&apos;:
WebCoreArgumentCodersSoup.cpp:(.text+0xe6): multiple definition of `CoreIPC::ArgumentCoder&lt;WebCore::ResourceError&gt;::decode(CoreIPC::ArgumentDecoder*, WebCore::ResourceError&amp;)&apos;
CMakeFiles/ewebkit2.dir/Shared/WebCoreArgumentCoders.cpp.o:WebCoreArgumentCoders.cpp:(.text+0x1318): first defined here
collect2: ld returned 1 exit status
make[2]: *** [lib/libewebkit2.so.0.1.0] Error 1
make[1]: *** [Source/WebKit2/CMakeFiles/ewebkit2.dir/all] Error 2
make: *** [all] Error 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740818</commentid>
    <comment_count>14</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 05:01:13 -0700</bug_when>
    <thetext>Sorry, it&apos;s not my day. Should be fixed by http://trac.webkit.org/changeset/131174</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149963</attachid>
            <date>2012-06-28 09:28:09 -0700</date>
            <delta_ts>2012-06-29 02:24:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90142-20120628182755.patch</filename>
            <type>text/plain</type>
            <size>35242</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUwZjQ5NzMyZGIwMDgy
NmQ5YTQ3MTkwNzE0NThlYTEwYzQzYTQ4ZC4uYzk4MWY1YzYzN2I4NjBhNjhlOWM3YzMyZjM5ODU1
NzA2ZGQ5YTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTI4ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBTZXJpYWxp
emF0aW9uIG9mIFJlc291cmNlW1JlcXVlc3QsUmVzcG9uc2UsRXJyb3JdIHNob3VsZCBiZSBzaGFy
ZWQgYWNyb3NzIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBvbmx5IHVzZWQgZnJvbSBXZWJLaXQyIGFuZCB0
aGUgY29ycmVjdG5lc3MKKyAgICAgICAgb2YgdGhlIFdlYktpdDIgcGFydCBvZiB0aGUgY2hhbmdl
IGlzIGNvdmVyZWQgYnkgbmVhcmx5IGFsbCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAoUmVzb3VyY2VFcnJvcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpzZXRDZXJ0aWZpY2F0
ZSk6CisKIDIwMTItMDYtMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVc2UgSW50ZXJwb2xhdGlvbkxvdyBvbiBjaHJvbWl1bS1hbmRyb2lkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYWFlZTM1Mzc0OTIzZjQxMzllZDkwN2FiZjMwYTMzZWFlZjljN2I0Yi4uNDc2Y2EwMjJmMDEx
ZWEzM2NjNWI1NDA0YmM0OGRmNzg1MjA2ZTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEyLTA2LTI4ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAg
ICAgICBbV0syXSBTZXJpYWxpemF0aW9uIG9mIFJlc291cmNlW1JlcXVlc3QsUmVzcG9uc2UsRXJy
b3JdIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlIHNlcmlhbGl6YXRpb24gb2YgY29tbW9uIGRh
dGEgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdCBmb3IgZWFjaCBwb3J0LgorICAgICAgICBRdCwg
R3RrLCBFRkwgY2FuIHNoYXJlIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIHRoYXQgc2VyaWFsaXpl
IHRoZSBXZWJDb3JlCisgICAgICAgIHJlcHJlc2VudGF0aW9uIChpLmUuIHRoZSB+QmFzZSBwYXJ0
KS4gSSBjaG9vc2UgdGhlIGN1cnJlbnQgR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIHRvIHNo
YXJlIGJlY2F1c2UgaXQgY29udGFpbmVkIHRoZSBtb3N0IGNvbXBsZXRlIHNlcmlhbGl6YXRpb24g
Zm9yIHRoZXNlIHR5cGVzCisgICAgICAgIGFtb25nIHRoZSAzIHBvcnRzLiBUaGlzIHJlZmFjdG9y
IGRvZXMgbm90IHJlc3RyaWN0IHRvIGFkZCBtb3JlIHBsYXRmb3JtIHNwZWNpZmljCisgICAgICAg
IGJpdHMgaWYgdGhlcmUgaXMgbmVlZCBmb3IgaXQgYW5kIGl0IGRvbid0IGNoYW5nZSBvbiB0aGUg
QXBwbGUgcG9ydHMgdGhhdCBzZXJpYWxpemUKKyAgICAgICAgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
IHJlcHJlc2VudGF0aW9uICh3aXRoIHRoZSBleGNlcHRpb24gb2YgUmVzb3VyY2VFcnJvciBvbiBX
aW5kb3dzKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAg
IChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzRWZsLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKENv
cmVJUEM6Ojo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkNv
cmVBcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29kZVBsYXRm
b3JtRGF0YSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChD
b3JlSVBDOjo6OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVy
c1F0LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKENvcmVJUEM6Ojo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZVBsYXRmb3JtRGF0YSk6
CisKIDIwMTItMDYtMjcgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtRdF0gS1VSTCBhc3NlcnQgYXQgZmFzdC9sb2FkZXIvb3BhcXVlLWJhc2UtdXJsLmh0
bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKaW5kZXggMzBlMGE1ZWEwYTMxZmRiMDljY2JhNWU4NzYyYjgxMTMxZTYxMTkyNi4uNmE4
YzdkYWYwOTdmYjg0NmE1MjFlOGFlZWM5MWU2ZTdmMGEzYzE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTY1LDYgKzY1
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0
IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkws
IGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0
ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dENlcnRpZmljYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKICAgICBSZXNvdXJjZUVycm9yKENGU3Ry
ZWFtRXJyb3IgZXJyb3IpOwogICAgIENGU3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUVycm9yQ0YuY3BwCmluZGV4IGFhMzE4ZTY2NTVlMWZiODQ1NGEzZDcxZjZmY2MwMzY3NTE4ZDg2
YmIuLmFkMTY4MmMyMWNkNzcwNzYxNmQ5YWZkYjZlODQ1NWM4NDk5YzVmNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5j
cHAKQEAgLTYyLDYgKzYyLDExIEBAIFBDQ0VSVF9DT05URVhUIFJlc291cmNlRXJyb3I6OmNlcnRp
ZmljYXRlKCkgY29uc3QKICAgICAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQQ0NFUlRf
Q09OVEVYVD4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX2NlcnRpZmljYXRlLmdldCgpKSk7CiB9CisKK3Zv
aWQgUmVzb3VyY2VFcnJvcjo6c2V0Q2VydGlmaWNhdGUoQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKQor
eworICAgIG1fY2VydGlmaWNhdGUuc2V0KGNlcnRpZmljYXRlKTsKK30KICNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCiAKIGNvbnN0IENGU3RyaW5nUmVmIGZhaWxpbmdVUkxTdHJpbmdLZXkgPSBDRlNU
UigiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNTQyZmQzZmY4YzcyNDkwMGYxZmY2
NzczZjhiNWVjNjRlNTNmZDllYS4uZDM3ZTg2OGEwNjU0YTJkYTdmZDQxYjhhZGI0YWIzM2JhOTlh
MmRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTQxLDYgKzQxLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25T
cGFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0Zl
YXR1cmVzLmg+CkBAIC02NTEsNiArNjU0LDE5OSBAQCBib29sIEFyZ3VtZW50Q29kZXI8S1VSTD46
OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEtVUkwmIHJlc3VsdCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQoreworICAgIGlmIChrU2VyaWFsaXplV2ViQ29yZURhdGEpIHsKKyAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CisgICAgICAg
IGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlcXVlc3QuaHR0cE1ldGhvZCgpKTsKKworICAgICAg
ICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzID0gcmVzb3VyY2VSZXF1ZXN0Lmh0dHBIZWFk
ZXJGaWVsZHMoKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGhlYWRlcnMpOworCisgICAgICAg
IEZvcm1EYXRhKiBodHRwQm9keSA9IHJlc291cmNlUmVxdWVzdC5odHRwQm9keSgpOworICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4oaHR0cEJvZHkpKTsKKyAgICAgICAg
aWYgKGh0dHBCb2R5KQorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGh0dHBCb2R5LT5mbGF0
dGVuVG9TdHJpbmcoKSk7CisKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVz
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpKTsKKyAgICB9CisKKyAgICBlbmNvZGVQ
bGF0Zm9ybURhdGEoZW5jb2RlciwgcmVzb3VyY2VSZXF1ZXN0KTsKK30KKworYm9vbCBBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQoreworICAgIGlmIChrU2VyaWFsaXpl
V2ViQ29yZURhdGEpIHsKKyAgICAgICAgU3RyaW5nIHVybDsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUodXJsKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzb3Vy
Y2VSZXF1ZXN0LnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSk7CisKKyAgICAgICAgU3RyaW5nIGh0
dHBNZXRob2Q7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0dHBNZXRob2QpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1l
dGhvZChodHRwTWV0aG9kKTsKKworICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXNvdXJjZVJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkcyhoZWFkZXJz
KTsKKworICAgICAgICBib29sIGhhc0hUVFBCb2R5OworICAgICAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShoYXNIVFRQQm9keSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
IChoYXNIVFRQQm9keSkgeworICAgICAgICAgICAgU3RyaW5nIGh0dHBCb2R5OworICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0cEJvZHkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0
YTo6Y3JlYXRlKGh0dHBCb2R5LnV0ZjgoKSkpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5n
IGZpcnN0UGFydHlGb3JDb29raWVzOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShmaXJz
dFBhcnR5Rm9yQ29va2llcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
c291cmNlUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhLVVJMKEtVUkwoKSwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRh
KGRlY29kZXIsIHJlc291cmNlUmVxdWVzdCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3sKKyAgICBpZiAoa1NlcmlhbGl6ZVdl
YkNvcmVEYXRhKSB7CisgICAgICAgIGJvb2wgcmVzcG9uc2VJc051bGwgPSByZXNvdXJjZVJlc3Bv
bnNlLmlzTnVsbCgpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzcG9uc2VJc051bGwpOwor
ICAgICAgICBpZiAocmVzcG9uc2VJc051bGwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOworICAg
ICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmVzb3VyY2VSZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpKSk7CisKKyAgICAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVh
ZGVycyA9IHJlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpOworICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUoaGVhZGVycyk7CisKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNl
UmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0
aWNfY2FzdDxpbnQ2NF90PihyZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgp
KSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLmh0dHBTdGF0dXNU
ZXh0KCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5zdWdnZXN0
ZWRGaWxlbmFtZSgpKTsKKyAgICB9CisKKyAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2Rlciwg
cmVzb3VyY2VSZXNwb25zZSk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3Bv
bnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzb3VyY2VSZXNwb25zZSkKK3sKKyAgICBpZiAoa1NlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7Cisg
ICAgICAgIGJvb2wgcmVzcG9uc2VJc051bGw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHJlc3BvbnNlSXNOdWxsKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KHJlc3BvbnNlSXNOdWxsKSB7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZSgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBTdHJpbmcgdXJsOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh1cmwpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFVSTChL
VVJMKEtVUkwoKSwgdXJsKSk7CisKKyAgICAgICAgaW50MzJfdCBodHRwU3RhdHVzQ29kZTsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2Rl
KGh0dHBTdGF0dXNDb2RlKTsKKworICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVh
ZGVycy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0
LT5zZWNvbmQpOworCisgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUobWltZVR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXNvdXJjZVJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVUeXBlKTsKKworICAgICAgICBTdHJp
bmcgdGV4dEVuY29kaW5nTmFtZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodGV4dEVu
Y29kaW5nTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc291cmNl
UmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAgICAg
ICBpbnQ2NF90IGNvbnRlbnRMZW5ndGg7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGNv
bnRlbnRMZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXNvdXJj
ZVJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKKworICAg
ICAgICBTdHJpbmcgaHR0cFN0YXR1c1RleHQ7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGh0dHBTdGF0dXNUZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVz
b3VyY2VSZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChodHRwU3RhdHVzVGV4dCk7CisKKyAgICAg
ICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShzdWdnZXN0ZWRGaWxlbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJlc291cmNlUmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUp
OworICAgIH0KKworICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgcmVzb3Vy
Y2VSZXNwb25zZSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3Vy
Y2VFcnJvcikKK3sKKyAgICBpZiAoa1NlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7CisgICAgICAgIGJv
b2wgZXJyb3JJc051bGwgPSByZXNvdXJjZUVycm9yLmlzTnVsbCgpOworICAgICAgICBlbmNvZGVy
LT5lbmNvZGUoZXJyb3JJc051bGwpOworICAgICAgICBpZiAoZXJyb3JJc051bGwpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZG9t
YWluKCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5lcnJvckNvZGUo
KSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKSk7
CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uKCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5pc0NhbmNlbGxh
dGlvbigpKTsKKyAgICB9CisKKyAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgcmVzb3Vy
Y2VFcnJvcik7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikK
K3sKKyAgICBpZiAoa1NlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7CisgICAgICAgIGJvb2wgZXJyb3JJ
c051bGw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9ySXNOdWxsKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGVycm9ySXNOdWxsKSB7CisgICAgICAg
ICAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgZG9tYWluOworICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShkb21haW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGludCBlcnJvckNvZGU7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9y
Q29kZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgU3RyaW5nIGZhaWxp
bmdVUkw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlv
bjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24pKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJlc291cmNlRXJyb3IgPSBSZXNv
dXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlw
dGlvbik7CisKKyAgICAgICAgYm9vbCBpc0NhbmNlbGxhdGlvbjsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoaXNDYW5jZWxsYXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXNvdXJjZUVycm9yLnNldElzQ2FuY2VsbGF0aW9uKGlzQ2FuY2VsbGF0aW9uKTsK
KyAgICB9CisKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHJlc291cmNl
RXJyb3IpOworfQorCiAjaWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJTkcpCiB2b2lkIEFyZ3VtZW50
Q29kZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZGIyYjhmNzQxZWMyYTMxYWNiZGMxMjdj
NDE3MWY5Y2IzN2Q0NTlhYy4uNTM0MWIzM2FmMmUxZDMwMmYzY2JlNTI2NWIyZThiZTZmODVkODg5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtMTcyLDE1ICsxNzIsMzcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDdXJzb3I+IHsKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlUGxhdGZvcm1E
YXRhKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQorICAgIHN0YXRpYyBjb25zdCBib29sIGtTZXJp
YWxpemVXZWJDb3JlRGF0YSA9IGZhbHNlOworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBr
U2VyaWFsaXplV2ViQ29yZURhdGEgPSB0cnVlOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1E
YXRhKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
V0lOKQorICAgIHN0YXRpYyBjb25zdCBib29sIGtTZXJpYWxpemVXZWJDb3JlRGF0YSA9IGZhbHNl
OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2VyaWFsaXplV2ViQ29yZURhdGEgPSB0
cnVlOworI2VuZGlmCiB9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyBib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEo
QXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2VyaWFsaXplV2ViQ29yZURhdGEgPSBmYWxz
ZTsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IGJvb2wga1NlcmlhbGl6ZVdlYkNvcmVEYXRhID0g
dHJ1ZTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcz4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9XZWJDb3JlQXJndW1lbnRDb2RlcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9XZWJDb3JlQXJndW1lbnRDb2RlcnNFZmwuY3BwCmluZGV4IGE5NjQ4ODNiYjZmNzMwZGRk
NzBjNWQ4MjdiNmQyZmQ2M2E1OGVlNTEuLmIwOWY5MjhjY2Q2ZGI0M2E5ZDhkZjRlOWI5ODljZjRi
YTBlYjFlYzggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkNv
cmVBcmd1bWVudENvZGVyc0VmbC5jcHAKQEAgLTI4LDc3ICsyOCwzMCBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi12b2lkIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgZW5jb2Rl
ci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlKHJlc291cmNlUmVxdWVzdC5odHRwSGVhZGVyRmllbGQoIkNvb2tpZSIpKTsKIH0KIAot
Ym9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1
bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwotCi0gICAgU3RyaW5nIHVybDsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZSh1cmwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5z
ZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOwotCi0gICAgU3RyaW5nIGNvb2tpZTsKLSAgICBpZiAo
IWRlY29kZXItPmRlY29kZShjb29raWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNvb2tpZSIsIGNvb2tpZSk7Ci0KLSAgICByZXNvdXJj
ZVJlcXVlc3QgPSByZXF1ZXN0OwogICAgIHJldHVybiB0cnVlOwogfQogCi0KLXZvaWQgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3ZvaWQgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5j
b2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkK
IHsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5taW1lVHlwZSgpKTsKIH0K
IAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQorYm9v
bCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNl
KQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0KLSAgICBTdHJpbmcgbWltZVR5
cGU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobWltZVR5cGUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUobWltZVR5cGUpOwotCi0gICAgcmVzb3Vy
Y2VSZXNwb25zZSA9IHJlc3BvbnNlOwogICAgIHJldHVybiB0cnVlOwogfQogCi0KLXZvaWQgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5j
b2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBlbmNvZGVy
LT5lbmNvZGUocmVzb3VyY2VFcnJvci5kb21haW4oKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJl
c291cmNlRXJyb3IuZXJyb3JDb2RlKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVy
cm9yLmZhaWxpbmdVUkwoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVy
cm9yPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVz
b3VyY2VFcnJvcikKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVzb3Vy
Y2VFcnJvcikKIHsKLSAgICBTdHJpbmcgZG9tYWluOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGRvbWFpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGludCBlcnJvckNvZGU7Ci0g
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZXJyb3JDb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgU3RyaW5nIGZhaWxpbmdVUkw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZmFp
bGluZ1VSTCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbjsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShsb2NhbGl6ZWREZXNjcmlwdGlv
bikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJj
ZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlv
bik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViQ29yZUFyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViQ29yZUFyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCA5ZDZlMjVjNjZkODZi
M2UyZjFkOTQzNzQzN2JhMmZhYjQ2MDI1YTNiLi5hMGUyZmZiMzFjMWFmMGY3ZjAxZjY2ZjJmMmI0
Y2RkZDNkNWM4YTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkNv
cmVBcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0zNiwxOTEgKzM2LDQwIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLXZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKLSAgICBlbmNv
ZGVyLT5lbmNvZGUocmVzb3VyY2VSZXF1ZXN0Lmh0dHBNZXRob2QoKSk7Ci0KLSAgICBjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzID0gcmVzb3VyY2VSZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMo
KTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoaGVhZGVycyk7Ci0KLSAgICBGb3JtRGF0YSogaHR0cEJv
ZHkgPSByZXNvdXJjZVJlcXVlc3QuaHR0cEJvZHkoKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoc3Rh
dGljX2Nhc3Q8Ym9vbD4oaHR0cEJvZHkpKTsKLSAgICBpZiAoaHR0cEJvZHkpCi0gICAgICAgIGVu
Y29kZXItPmVuY29kZShodHRwQm9keS0+ZmxhdHRlblRvU3RyaW5nKCkpOwotCi0gICAgZW5jb2Rl
ci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygp
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc291cmNlUmVx
dWVzdC5zb3VwTWVzc2FnZUZsYWdzKCkpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
OwotCi0gICAgU3RyaW5nIHVybDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZSh1cmwpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkp
OwotCi0gICAgU3RyaW5nIGh0dHBNZXRob2Q7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0
cE1ldGhvZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRo
b2QoaHR0cE1ldGhvZCk7Ci0KLSAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7Ci0gICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoaGVhZGVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1
ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZHMoaGVhZGVycyk7Ci0KLSAgICBib29sIGhhc0hUVFBCb2R5
OwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhc0hUVFBCb2R5KSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChoYXNIVFRQQm9keSkgewotICAgICAgICBTdHJpbmcgaHR0cEJvZHk7
Ci0gICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0dHBCb2R5KSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRl
KGh0dHBCb2R5LnV0ZjgoKSkpOwotICAgIH0KLQotICAgIFN0cmluZyBmaXJzdFBhcnR5Rm9yQ29v
a2llczsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShmaXJzdFBhcnR5Rm9yQ29va2llcykpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVz
KEtVUkwoS1VSTCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcykpOwotCiAgICAgdWludDMyX3Qgc291
cE1lc3NhZ2VGbGFnczsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzb3VwTWVzc2FnZUZsYWdz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVlc3Quc2V0U291cE1lc3NhZ2VGbGFn
cyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7Ci0KLSAg
ICByZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0OworICAgIHJlc291cmNlUmVxdWVzdC5zZXRTb3Vw
TWVzc2FnZUZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KHNvdXBNZXNzYWdlRmxh
Z3MpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXNwb25zZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXNwb25zZT46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCiB7Ci0gICAgYm9vbCBy
ZXNwb25zZUlzTnVsbCA9IHJlc291cmNlUmVzcG9uc2UuaXNOdWxsKCk7Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlKHJlc3BvbnNlSXNOdWxsKTsKLSAgICBpZiAocmVzcG9uc2VJc051bGwpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnVybCgpLnN0
cmluZygpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmVzb3Vy
Y2VSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSk7Ci0KLSAgICBjb25zdCBIVFRQSGVhZGVyTWFw
JiBoZWFkZXJzID0gcmVzb3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCk7Ci0gICAgZW5j
b2Rlci0+ZW5jb2RlKGhlYWRlcnMpOwotCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0
PHVpbnQzMl90PihyZXNvdXJjZVJlc3BvbnNlLnNvdXBNZXNzYWdlRmxhZ3MoKSkpOwotICAgIGVu
Y29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGVuY29kZXIt
PmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSk7Ci0gICAgZW5jb2Rl
ci0+ZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCkpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5o
dHRwU3RhdHVzVGV4dCgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5z
dWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVz
cG9uc2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNvdXJjZVJlc3BvbnNlKQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewotICAgIGJvb2wgcmVzcG9uc2VJc051bGw7Ci0g
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzcG9uc2VJc051bGwpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKHJlc3BvbnNlSXNOdWxsKSB7Ci0gICAgICAgIHJlc291cmNlUmVzcG9u
c2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0KLSAgICBTdHJpbmcgdXJsOwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHVybCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNw
b25zZS5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOwotCi0gICAgaW50MzJfdCBodHRwU3RhdHVz
Q29kZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShodHRwU3RhdHVzQ29kZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwU3RhdHVz
Q29kZSk7Ci0KLSAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoaGVhZGVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpLCBlbmQgPSBoZWFkZXJz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJG
aWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwotCiAgICAgdWludDMyX3Qgc291cE1lc3NhZ2VG
bGFnczsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzb3VwTWVzc2FnZUZsYWdzKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldFNvdXBNZXNzYWdlRmxhZ3Moc3RhdGlj
X2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oc291cE1lc3NhZ2VGbGFncykpOwotCi0gICAgU3RyaW5n
IG1pbWVUeXBlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1pbWVUeXBlKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVUeXBlKTsKLQotICAg
IFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHRleHRF
bmNvZGluZ05hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0VGV4
dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKLQotICAgIGludDY0X3QgY29udGVudExl
bmd0aDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShjb250ZW50TGVuZ3RoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250
ZW50TGVuZ3RoKTsKLQotICAgIFN0cmluZyBodHRwU3RhdHVzVGV4dDsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShodHRwU3RhdHVzVGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChodHRwU3RhdHVzVGV4dCk7Ci0KLSAgICBTdHJpbmcg
c3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3VnZ2VzdGVkRmls
ZW5hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVk
RmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOwotCi0gICAgcmVzb3VyY2VSZXNwb25zZSA9IHJl
c3BvbnNlOworICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0U291cE1lc3NhZ2VGbGFncyhzdGF0aWNf
Y2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGUoQXJn
dW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9y
KQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7Ci0gICAgYm9vbCBlcnJv
cklzTnVsbCA9IHJlc291cmNlRXJyb3IuaXNOdWxsKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGVy
cm9ySXNOdWxsKTsKLSAgICBpZiAoZXJyb3JJc051bGwpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmRvbWFpbigpKTsKLSAgICBlbmNvZGVyLT5l
bmNvZGUocmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJl
c291cmNlRXJyb3IuZmFpbGluZ1VSTCgpKTsgCi0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNl
RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZUVycm9yPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VF
cnJvciYgcmVzb3VyY2VFcnJvcikKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciosIFJlc291cmNlRXJyb3ImKQogewot
ICAgIGJvb2wgZXJyb3JJc051bGw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZXJyb3JJc051
bGwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVycm9ySXNOdWxsKSB7Ci0gICAg
ICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIFN0cmluZyBkb21haW47Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
ZG9tYWluKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50IGVycm9yQ29kZTsKLSAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShlcnJvckNvZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBTdHJpbmcgZmFpbGluZ1VSTDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShmYWls
aW5nVVJMKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5nIGxvY2FsaXplZERl
c2NyaXB0aW9uOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGxvY2FsaXplZERlc2NyaXB0aW9u
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJlc291cmNlRXJyb3IgPSBSZXNv
dXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlw
dGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggMTk2YWIxMWM3YTc0
MzEwN2QzODAwZTFmZjhmYTViZTFmMmIzYjgxOC4uOWZmMGNjMDY5Njg4NGUzYmNhYjRhZTFmZjdm
MmI5NDIzMmU1NjNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi12b2lkIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAgYm9vbCBy
ZXF1ZXN0SXNQcmVzZW50ID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpOwogICAgIGVu
Y29kZXItPmVuY29kZShyZXF1ZXN0SXNQcmVzZW50KTsKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIsIGNvbnN0IFJlc28KICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFy
eS5nZXQoKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKIHsKICAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQ7CiAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUocmVxdWVzdElzUHJlc2VudCkpCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBSZXNvdXJjZVJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5j
b2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICAgICBi
b29sIHJlc3BvbnNlSXNQcmVzZW50ID0gcmVzb3VyY2VSZXNwb25zZS5uc1VSTFJlc3BvbnNlKCk7
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc3BvbnNlSXNQcmVzZW50KTsKQEAgLTg1LDcgKzg1LDcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUoQXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXMKICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwg
ZGljdGlvbmFyeS5nZXQoKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3Bv
bnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzb3VyY2VSZXNwb25zZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6
ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNw
b25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICAgICBib29sIHJlc3BvbnNlSXNQcmVzZW50Owog
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3BvbnNlSXNQcmVzZW50KSkKQEAgLTExMyw3ICsx
MTMsNyBAQCBzdGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ICAgIHJldHVybiBzdHJpbmcuaW1wbCgpID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KHN0cmluZy5jaGFyYWN0ZXJzKCkpIGxl
bmd0aDpzdHJpbmcubGVuZ3RoKCldIDogQCIiOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VFcnJvcj46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJv
cj46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7CiAgICAgYm9vbCBlcnJvcklzTnVsbCA9IHJl
c291cmNlRXJyb3IuaXNOdWxsKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGVycm9ySXNOdWxsKTsK
QEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cgogICAgIGVuY29kZXIt
PmVuY29kZShQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygoQ0ZBcnJheVJlZilwZWVyQ2VydGlmaWNh
dGVDaGFpbikpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3Ip
Citib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7
CiAgICAgYm9vbCBlcnJvcklzTnVsbDsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShlcnJvcklz
TnVsbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzUXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVu
dENvZGVyc1F0LmNwcAppbmRleCBhZDU1NzRmOGY4OGMzNjkxOTk2MmVlMjczYzkzZDg1NDA4OTkz
ZjRkLi5kY2ZhYmUyYzE1YTNiZDI0NTQ0NTEwNzA0YjUwNDMzODhjMThiYWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAK
QEAgLTM0LDEwMCArMzQsMzAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgCiBuYW1lc3Bh
Y2UgQ29yZUlQQyB7CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNv
ZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXF1
ZXN0LnVybCgpLnN0cmluZygpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVx
dWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRl
Y29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiBBZGQgKm1vcmUqIGNvZGluZyBp
bXBsZW1lbnRhdGlvbiB3aGVuIHdlIHdhbnQgdG8gaW1wbGVtZW50IHNvbWV0aGluZyB0aGF0Ci0g
ICAgLy8gZGVwZW5kcyBvbiB0aGlzIGxpa2UgdGhlIHBvbGljeSBjbGllbnQuCi0KLSAgICBTdHJp
bmcgdXJsOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVybCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXNvdXJjZVJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25z
ZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25z
ZT46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2Rl
KHJlc291cmNlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOwotICAgIGVuY29kZXItPmVuY29kZShy
ZXNvdXJjZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihyZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSk7
Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgp
KTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFt
ZSgpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3Bv
bnNlKQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJj
ZVJlc3BvbnNlKQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0KLSAgICBTdHJp
bmcgdXJsOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVybCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXNwb25zZS5zZXRVUkwoS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcs
IHVybCkpOwotCi0gICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KG1pbWVUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldE1pbWVU
eXBlKG1pbWVUeXBlKTsKLQotICAgIGludDY0X3QgY29udGVudExlbmd0aDsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShjb250ZW50TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKLQotICAg
IFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHRleHRF
bmNvZGluZ05hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0VGV4
dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKLQotICAgIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShzdWdnZXN0ZWRGaWxlbmFtZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShz
dWdnZXN0ZWRGaWxlbmFtZSk7Ci0KLSAgICByZXNvdXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBy
ZXNvdXJjZUVycm9yKQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZG9tYWluKCkpOwotICAgIGVuY29kZXIt
PmVuY29kZShyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUo
cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJj
ZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNv
dXJjZUVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VFcnJvcj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJy
b3ImIHJlc291cmNlRXJyb3IpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRl
Y29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqLCBSZXNvdXJjZUVycm9yJikKIHsKLSAg
ICBTdHJpbmcgZG9tYWluOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRvbWFpbikpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGludCBlcnJvckNvZGU7Ci0gICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoZXJyb3JDb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5n
IGZhaWxpbmdVUkw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZmFpbGluZ1VSTCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShsb2NhbGl6ZWREZXNjcmlwdGlvbikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGJvb2wgaXNDYW5jZWxsYXRpb247Ci0gICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoaXNDYW5jZWxsYXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VS
TCwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwotICAgIHJlc291cmNlRXJyb3Iuc2V0SXNDYW5jZWxs
YXRpb24oaXNDYW5jZWxsYXRpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAK
aW5kZXggMDc2MjI3NWIwM2E5ZjM2MzRlMTJlMzFkZjIyNjNkOWIyZDg0YWMwZi4uN2RlMjEwZjYx
NTcxMTg1MDJhYjVmYjA4MGFkNmRjMjc2MDMzN2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtNDksNyAr
NDksNyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIC8vIEZJWE1FOiBUaGVzZSBjb2RlcnMgc2hv
dWxkIHJlYWxseSBnbyBpbiBhIFdlYkNvcmVBcmd1bWVudENvZGVyc0NGTmV0d29yayBmaWxlLgog
Ci12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2
b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCiB7CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQg
PSByZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KCk7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBSZXNvCiAjZW5kaWYKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgYm9v
bCByZXF1ZXN0SXNQcmVzZW50OwpAQCAtOTQsOCArOTQsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3Vy
Y2VSZQogI2VuZGlmCiB9CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNvdXJjZVJlc3BvbnNlKQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+
OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewogI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgYm9vbCByZXNwb25zZUlzUHJlc2VudCA9IHJlc291cmNlUmVzcG9uc2UuY2ZVUkxSZXNwb25z
ZSgpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3Bv
bnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzCiAjZW5kaWYK
IH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQor
Ym9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3Bv
bnNlKQogewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgYm9vbCByZXNwb25zZUlzUHJlc2VudDsK
QEAgLTEzNywzNSArMTM2LDE1IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNl
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSCiB9CiAKIAotdm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQordm9pZCBBcmd1bWVu
dENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewotICAgIGVu
Y29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmRvbWFpbigpKTsKLSAgICBlbmNvZGVyLT5lbmNv
ZGUocmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291
cmNlRXJyb3IuZmFpbGluZ1VSTCgpKTsgCi0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0KICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGVu
Y29kZXItPmVuY29kZShQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhyZXNvdXJjZUVycm9yLmNlcnRp
ZmljYXRlKCkpKTsKICNlbmRpZgogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJv
cj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291
cmNlRXJyb3IpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRm
b3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNl
RXJyb3IpCiB7Ci0gICAgU3RyaW5nIGRvbWFpbjsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShk
b21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpbnQgZXJyb3JDb2RlOwotICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9yQ29kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIFN0cmluZyBmYWlsaW5nVVJMOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZhaWxp
bmdVUkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgbG9jYWxpemVkRGVz
Y3JpcHRpb247Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24p
KQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlOwpAQCAtMTc1LDEyICsxNTQsMTAgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBSZXNvdXJjZUVycm8KICAgICBjb25zdCBWZWN0b3I8UENDRVJUX0NPTlRFWFQ+IGNl
cnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZUNoYWluKCk7CiAgICAgaWYg
KCFjZXJ0aWZpY2F0ZUNoYWluLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoY2VydGlmaWNh
dGVDaGFpbi5zaXplKCkgPT0gMSk7Ci0gICAgICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVy
cm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiwg
Y29weUNlcnRpZmljYXRlVG9EYXRhKGNlcnRpZmljYXRlQ2hhaW4uZmlyc3QoKSkuZ2V0KCkpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmVzb3VyY2VFcnJvci5zZXRDZXJ0aWZpY2F0
ZShjb3B5Q2VydGlmaWNhdGVUb0RhdGEoY2VydGlmaWNhdGVDaGFpbi5maXJzdCgpKS5nZXQoKSk7
CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21h
aW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150120</attachid>
            <date>2012-06-29 02:24:17 -0700</date>
            <delta_ts>2012-08-21 04:50:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90142-20120629112402.patch</filename>
            <type>text/plain</type>
            <size>35239</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUwZjQ5NzMyZGIwMDgy
NmQ5YTQ3MTkwNzE0NThlYTEwYzQzYTQ4ZC4uYzk4MWY1YzYzN2I4NjBhNjhlOWM3YzMyZjM5ODU1
NzA2ZGQ5YTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTI4ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBTZXJpYWxp
emF0aW9uIG9mIFJlc291cmNlW1JlcXVlc3QsUmVzcG9uc2UsRXJyb3JdIHNob3VsZCBiZSBzaGFy
ZWQgYWNyb3NzIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBvbmx5IHVzZWQgZnJvbSBXZWJLaXQyIGFuZCB0
aGUgY29ycmVjdG5lc3MKKyAgICAgICAgb2YgdGhlIFdlYktpdDIgcGFydCBvZiB0aGUgY2hhbmdl
IGlzIGNvdmVyZWQgYnkgbmVhcmx5IGFsbCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAoUmVzb3VyY2VFcnJvcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpzZXRDZXJ0aWZpY2F0
ZSk6CisKIDIwMTItMDYtMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVc2UgSW50ZXJwb2xhdGlvbkxvdyBvbiBjaHJvbWl1bS1hbmRyb2lkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYWFlZTM1Mzc0OTIzZjQxMzllZDkwN2FiZjMwYTMzZWFlZjljN2I0Yi4uNDc2Y2EwMjJmMDEx
ZWEzM2NjNWI1NDA0YmM0OGRmNzg1MjA2ZTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEyLTA2LTI4ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAg
ICAgICBbV0syXSBTZXJpYWxpemF0aW9uIG9mIFJlc291cmNlW1JlcXVlc3QsUmVzcG9uc2UsRXJy
b3JdIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlIHNlcmlhbGl6YXRpb24gb2YgY29tbW9uIGRh
dGEgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdCBmb3IgZWFjaCBwb3J0LgorICAgICAgICBRdCwg
R3RrLCBFRkwgY2FuIHNoYXJlIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIHRoYXQgc2VyaWFsaXpl
IHRoZSBXZWJDb3JlCisgICAgICAgIHJlcHJlc2VudGF0aW9uIChpLmUuIHRoZSB+QmFzZSBwYXJ0
KS4gSSBjaG9vc2UgdGhlIGN1cnJlbnQgR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIHRvIHNo
YXJlIGJlY2F1c2UgaXQgY29udGFpbmVkIHRoZSBtb3N0IGNvbXBsZXRlIHNlcmlhbGl6YXRpb24g
Zm9yIHRoZXNlIHR5cGVzCisgICAgICAgIGFtb25nIHRoZSAzIHBvcnRzLiBUaGlzIHJlZmFjdG9y
IGRvZXMgbm90IHJlc3RyaWN0IHRvIGFkZCBtb3JlIHBsYXRmb3JtIHNwZWNpZmljCisgICAgICAg
IGJpdHMgaWYgdGhlcmUgaXMgbmVlZCBmb3IgaXQgYW5kIGl0IGRvbid0IGNoYW5nZSBvbiB0aGUg
QXBwbGUgcG9ydHMgdGhhdCBzZXJpYWxpemUKKyAgICAgICAgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
IHJlcHJlc2VudGF0aW9uICh3aXRoIHRoZSBleGNlcHRpb24gb2YgUmVzb3VyY2VFcnJvciBvbiBX
aW5kb3dzKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAg
IChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzRWZsLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKENv
cmVJUEM6Ojo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkNv
cmVBcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29kZVBsYXRm
b3JtRGF0YSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChD
b3JlSVBDOjo6OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVy
c1F0LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKENvcmVJUEM6Ojo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29k
ZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZVBsYXRmb3JtRGF0YSk6
CisKIDIwMTItMDYtMjcgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtRdF0gS1VSTCBhc3NlcnQgYXQgZmFzdC9sb2FkZXIvb3BhcXVlLWJhc2UtdXJsLmh0
bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yLmgKaW5kZXggMzBlMGE1ZWEwYTMxZmRiMDljY2JhNWU4NzYyYjgxMTMxZTYxMTkyNi4uNmE4
YzdkYWYwOTdmYjg0NmE1MjFlOGFlZWM5MWU2ZTdmMGEzYzE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTY1LDYgKzY1
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0
IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkws
IGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0
ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dENlcnRpZmljYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKICAgICBSZXNvdXJjZUVycm9yKENGU3Ry
ZWFtRXJyb3IgZXJyb3IpOwogICAgIENGU3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUVycm9yQ0YuY3BwCmluZGV4IGFhMzE4ZTY2NTVlMWZiODQ1NGEzZDcxZjZmY2MwMzY3NTE4ZDg2
YmIuLjM1NGZkMjc1ODY0MjA3Yjc5ZWZjMjFhZjdkMTk5ZGIwYjMwMTIwYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5j
cHAKQEAgLTYyLDYgKzYyLDExIEBAIFBDQ0VSVF9DT05URVhUIFJlc291cmNlRXJyb3I6OmNlcnRp
ZmljYXRlKCkgY29uc3QKICAgICAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQQ0NFUlRf
Q09OVEVYVD4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX2NlcnRpZmljYXRlLmdldCgpKSk7CiB9CisKK3Zv
aWQgUmVzb3VyY2VFcnJvcjo6c2V0Q2VydGlmaWNhdGUoQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKQor
eworICAgIG1fY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsKK30KICNlbmRpZiAvLyBQTEFURk9S
TShXSU4pCiAKIGNvbnN0IENGU3RyaW5nUmVmIGZhaWxpbmdVUkxTdHJpbmdLZXkgPSBDRlNUUigi
TlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNTQyZmQzZmY4YzcyNDkwMGYxZmY2Nzcz
ZjhiNWVjNjRlNTNmZDllYS4uZDM3ZTg2OGEwNjU0YTJkYTdmZDQxYjhhZGI0YWIzM2JhOTlhMmRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTQxLDYgKzQxLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFj
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1
cmVzLmg+CkBAIC02NTEsNiArNjU0LDE5OSBAQCBib29sIEFyZ3VtZW50Q29kZXI8S1VSTD46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEtVUkwmIHJlc3VsdCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZShB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQoreworICAgIGlmIChrU2VyaWFsaXplV2ViQ29yZURhdGEpIHsKKyAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIGVu
Y29kZXItPmVuY29kZShyZXNvdXJjZVJlcXVlc3QuaHR0cE1ldGhvZCgpKTsKKworICAgICAgICBj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzID0gcmVzb3VyY2VSZXF1ZXN0Lmh0dHBIZWFkZXJG
aWVsZHMoKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGhlYWRlcnMpOworCisgICAgICAgIEZv
cm1EYXRhKiBodHRwQm9keSA9IHJlc291cmNlUmVxdWVzdC5odHRwQm9keSgpOworICAgICAgICBl
bmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Ym9vbD4oaHR0cEJvZHkpKTsKKyAgICAgICAgaWYg
KGh0dHBCb2R5KQorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGh0dHBCb2R5LT5mbGF0dGVu
VG9TdHJpbmcoKSk7CisKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpKTsKKyAgICB9CisKKyAgICBlbmNvZGVQbGF0
Zm9ybURhdGEoZW5jb2RlciwgcmVzb3VyY2VSZXF1ZXN0KTsKK30KKworYm9vbCBBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQoreworICAgIGlmIChrU2VyaWFsaXplV2Vi
Q29yZURhdGEpIHsKKyAgICAgICAgU3RyaW5nIHVybDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUodXJsKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzb3VyY2VS
ZXF1ZXN0LnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSk7CisKKyAgICAgICAgU3RyaW5nIGh0dHBN
ZXRob2Q7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0dHBNZXRob2QpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhv
ZChodHRwTWV0aG9kKTsKKworICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXNvdXJjZVJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkcyhoZWFkZXJzKTsK
KworICAgICAgICBib29sIGhhc0hUVFBCb2R5OworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShoYXNIVFRQQm9keSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICho
YXNIVFRQQm9keSkgeworICAgICAgICAgICAgU3RyaW5nIGh0dHBCb2R5OworICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0cEJvZHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0YTo6
Y3JlYXRlKGh0dHBCb2R5LnV0ZjgoKSkpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIGZp
cnN0UGFydHlGb3JDb29raWVzOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShmaXJzdFBh
cnR5Rm9yQ29va2llcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc291
cmNlUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhLVVJMKEtVUkwoKSwgZmlyc3RQYXJ0
eUZvckNvb2tpZXMpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRl
Y29kZXIsIHJlc291cmNlUmVxdWVzdCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJj
ZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3sKKyAgICBpZiAoa1NlcmlhbGl6ZVdlYkNv
cmVEYXRhKSB7CisgICAgICAgIGJvb2wgcmVzcG9uc2VJc051bGwgPSByZXNvdXJjZVJlc3BvbnNl
LmlzTnVsbCgpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzcG9uc2VJc051bGwpOworICAg
ICAgICBpZiAocmVzcG9uc2VJc051bGwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOworICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmVzb3VyY2VSZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKSk7CisKKyAgICAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVy
cyA9IHJlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpOworICAgICAgICBlbmNvZGVy
LT5lbmNvZGUoaGVhZGVycyk7CisKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVz
cG9uc2UubWltZVR5cGUoKSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3Bv
bnNlLnRleHRFbmNvZGluZ05hbWUoKSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNf
Y2FzdDxpbnQ2NF90PihyZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSk7
CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0
KCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5zdWdnZXN0ZWRG
aWxlbmFtZSgpKTsKKyAgICB9CisKKyAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgcmVz
b3VyY2VSZXNwb25zZSk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNl
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
b3VyY2VSZXNwb25zZSkKK3sKKyAgICBpZiAoa1NlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7CisgICAg
ICAgIGJvb2wgcmVzcG9uc2VJc051bGw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJl
c3BvbnNlSXNOdWxsKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHJl
c3BvbnNlSXNOdWxsKSB7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZSgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICBTdHJpbmcgdXJsOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh1cmwpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFVSTChLVVJM
KEtVUkwoKSwgdXJsKSk7CisKKyAgICAgICAgaW50MzJfdCBodHRwU3RhdHVzQ29kZTsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKGh0
dHBTdGF0dXNDb2RlKTsKKworICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVy
cy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAg
ICAgICByZXNvdXJjZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5z
ZWNvbmQpOworCisgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUobWltZVR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXNvdXJjZVJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVUeXBlKTsKKworICAgICAgICBTdHJpbmcg
dGV4dEVuY29kaW5nTmFtZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodGV4dEVuY29k
aW5nTmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc291cmNlUmVz
cG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAgICAgICBp
bnQ2NF90IGNvbnRlbnRMZW5ndGg7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGNvbnRl
bnRMZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXNvdXJjZVJl
c3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKKworICAgICAg
ICBTdHJpbmcgaHR0cFN0YXR1c1RleHQ7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0
dHBTdGF0dXNUZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzb3Vy
Y2VSZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChodHRwU3RhdHVzVGV4dCk7CisKKyAgICAgICAg
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShz
dWdnZXN0ZWRGaWxlbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
c291cmNlUmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOwor
ICAgIH0KKworICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgcmVzb3VyY2VS
ZXNwb25zZSk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VF
cnJvcikKK3sKKyAgICBpZiAoa1NlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7CisgICAgICAgIGJvb2wg
ZXJyb3JJc051bGwgPSByZXNvdXJjZUVycm9yLmlzTnVsbCgpOworICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoZXJyb3JJc051bGwpOworICAgICAgICBpZiAoZXJyb3JJc051bGwpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZG9tYWlu
KCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSk7
CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKSk7Cisg
ICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5pc0NhbmNlbGxhdGlv
bigpKTsKKyAgICB9CisKKyAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgcmVzb3VyY2VF
cnJvcik7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKK3sK
KyAgICBpZiAoa1NlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7CisgICAgICAgIGJvb2wgZXJyb3JJc051
bGw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9ySXNOdWxsKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGVycm9ySXNOdWxsKSB7CisgICAgICAgICAg
ICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgZG9tYWluOworICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShkb21haW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGludCBlcnJvckNvZGU7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9yQ29k
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgU3RyaW5nIGZhaWxpbmdV
Ukw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlvbjsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24pKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJj
ZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlv
bik7CisKKyAgICAgICAgYm9vbCBpc0NhbmNlbGxhdGlvbjsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoaXNDYW5jZWxsYXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXNvdXJjZUVycm9yLnNldElzQ2FuY2VsbGF0aW9uKGlzQ2FuY2VsbGF0aW9uKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHJlc291cmNlRXJy
b3IpOworfQorCiAjaWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJTkcpCiB2b2lkIEFyZ3VtZW50Q29k
ZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
RmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZGIyYjhmNzQxZWMyYTMxYWNiZGMxMjdjNDE3
MWY5Y2IzN2Q0NTlhYy4uNTM0MWIzM2FmMmUxZDMwMmYzY2JlNTI2NWIyZThiZTZmODVkODg5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
MTcyLDE1ICsxNzIsMzcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDdXJzb3I+IHsKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQorICAgIHN0YXRpYyBjb25zdCBib29sIGtTZXJpYWxp
emVXZWJDb3JlRGF0YSA9IGZhbHNlOworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2Vy
aWFsaXplV2ViQ29yZURhdGEgPSB0cnVlOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lO
KQorICAgIHN0YXRpYyBjb25zdCBib29sIGtTZXJpYWxpemVXZWJDb3JlRGF0YSA9IGZhbHNlOwor
I2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2VyaWFsaXplV2ViQ29yZURhdGEgPSB0cnVl
OworI2VuZGlmCiB9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlJlc291cmNlRXJyb3I+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyBib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2VyaWFsaXplV2ViQ29yZURhdGEgPSBmYWxzZTsK
KyNlbHNlCisgICAgc3RhdGljIGNvbnN0IGJvb2wga1NlcmlhbGl6ZVdlYkNvcmVEYXRhID0gdHJ1
ZTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcz4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9XZWJDb3JlQXJndW1lbnRDb2RlcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9XZWJDb3JlQXJndW1lbnRDb2RlcnNFZmwuY3BwCmluZGV4IGE5NjQ4ODNiYjZmNzMwZGRkNzBj
NWQ4MjdiNmQyZmQ2M2E1OGVlNTEuLmIwOWY5MjhjY2Q2ZGI0M2E5ZDhkZjRlOWI5ODljZjRiYTBl
YjFlYzggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkNvcmVB
cmd1bWVudENvZGVyc0VmbC5jcHAKQEAgLTI4LDc3ICsyOCwzMCBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7Ci0gICAgZW5jb2Rlci0+ZW5j
b2RlKHJlc291cmNlUmVxdWVzdC5odHRwSGVhZGVyRmllbGQoIkNvb2tpZSIpKTsKIH0KIAotYm9v
bCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0OwotCi0gICAgU3RyaW5nIHVybDsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZSh1cmwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRV
UkwoS1VSTChLVVJMKCksIHVybCkpOwotCi0gICAgU3RyaW5nIGNvb2tpZTsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShjb29raWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoIkNvb2tpZSIsIGNvb2tpZSk7Ci0KLSAgICByZXNvdXJjZVJl
cXVlc3QgPSByZXF1ZXN0OwogICAgIHJldHVybiB0cnVlOwogfQogCi0KLXZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2Rl
ciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsK
LSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5taW1lVHlwZSgpKTsKIH0KIAot
Ym9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQorYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQog
ewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0KLSAgICBTdHJpbmcgbWltZVR5cGU7
Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobWltZVR5cGUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUobWltZVR5cGUpOwotCi0gICAgcmVzb3VyY2VS
ZXNwb25zZSA9IHJlc3BvbnNlOwogICAgIHJldHVybiB0cnVlOwogfQogCi0KLXZvaWQgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBlbmNvZGVyLT5l
bmNvZGUocmVzb3VyY2VFcnJvci5kb21haW4oKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291
cmNlRXJyb3IuZXJyb3JDb2RlKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9y
LmZhaWxpbmdVUkwoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9y
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVzb3Vy
Y2VFcnJvcikKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VF
cnJvcikKIHsKLSAgICBTdHJpbmcgZG9tYWluOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRv
bWFpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGludCBlcnJvckNvZGU7Ci0gICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoZXJyb3JDb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgU3RyaW5nIGZhaWxpbmdVUkw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZmFpbGlu
Z1VSTCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBsb2NhbGl6ZWREZXNj
cmlwdGlvbjsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShsb2NhbGl6ZWREZXNjcmlwdGlvbikp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVy
cm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbik7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvV2ViQ29yZUFyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvV2ViQ29yZUFyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCA5ZDZlMjVjNjZkODZiM2Uy
ZjFkOTQzNzQzN2JhMmZhYjQ2MDI1YTNiLi5hMGUyZmZiMzFjMWFmMGY3ZjAxZjY2ZjJmMmI0Y2Rk
ZDNkNWM4YTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkNvcmVB
cmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJD
b3JlQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC0zNiwxOTEgKzM2LDQwIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLXZvaWQgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBlbmNv
ZGVyLT5lbmNvZGUocmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKLSAgICBlbmNvZGVy
LT5lbmNvZGUocmVzb3VyY2VSZXF1ZXN0Lmh0dHBNZXRob2QoKSk7Ci0KLSAgICBjb25zdCBIVFRQ
SGVhZGVyTWFwJiBoZWFkZXJzID0gcmVzb3VyY2VSZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsK
LSAgICBlbmNvZGVyLT5lbmNvZGUoaGVhZGVycyk7Ci0KLSAgICBGb3JtRGF0YSogaHR0cEJvZHkg
PSByZXNvdXJjZVJlcXVlc3QuaHR0cEJvZHkoKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8Ym9vbD4oaHR0cEJvZHkpKTsKLSAgICBpZiAoaHR0cEJvZHkpCi0gICAgICAgIGVuY29k
ZXItPmVuY29kZShodHRwQm9keS0+ZmxhdHRlblRvU3RyaW5nKCkpOwotCi0gICAgZW5jb2Rlci0+
ZW5jb2RlKHJlc291cmNlUmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygpKTsK
ICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc291cmNlUmVxdWVz
dC5zb3VwTWVzc2FnZUZsYWdzKCkpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46
OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0Owot
Ci0gICAgU3RyaW5nIHVybDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZSh1cmwpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOwot
Ci0gICAgU3RyaW5nIGh0dHBNZXRob2Q7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0cE1l
dGhvZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
aHR0cE1ldGhvZCk7Ci0KLSAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7Ci0gICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoaGVhZGVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1ZXN0
LmFkZEhUVFBIZWFkZXJGaWVsZHMoaGVhZGVycyk7Ci0KLSAgICBib29sIGhhc0hUVFBCb2R5Owot
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhc0hUVFBCb2R5KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChoYXNIVFRQQm9keSkgewotICAgICAgICBTdHJpbmcgaHR0cEJvZHk7Ci0g
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0dHBCb2R5KSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKGh0
dHBCb2R5LnV0ZjgoKSkpOwotICAgIH0KLQotICAgIFN0cmluZyBmaXJzdFBhcnR5Rm9yQ29va2ll
czsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShmaXJzdFBhcnR5Rm9yQ29va2llcykpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKEtV
UkwoS1VSTCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcykpOwotCiAgICAgdWludDMyX3Qgc291cE1l
c3NhZ2VGbGFnczsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzb3VwTWVzc2FnZUZsYWdzKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVlc3Quc2V0U291cE1lc3NhZ2VGbGFncyhz
dGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7Ci0KLSAgICBy
ZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0OworICAgIHJlc291cmNlUmVxdWVzdC5zZXRTb3VwTWVz
c2FnZUZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KHNvdXBNZXNzYWdlRmxhZ3Mp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VS
ZXNwb25zZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VS
ZXNwb25zZT46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCiB7Ci0gICAgYm9vbCByZXNw
b25zZUlzTnVsbCA9IHJlc291cmNlUmVzcG9uc2UuaXNOdWxsKCk7Ci0gICAgZW5jb2Rlci0+ZW5j
b2RlKHJlc3BvbnNlSXNOdWxsKTsKLSAgICBpZiAocmVzcG9uc2VJc051bGwpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnVybCgpLnN0cmlu
ZygpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmVzb3VyY2VS
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSk7Ci0KLSAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzID0gcmVzb3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCk7Ci0gICAgZW5jb2Rl
ci0+ZW5jb2RlKGhlYWRlcnMpOwotCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVp
bnQzMl90PihyZXNvdXJjZVJlc3BvbnNlLnNvdXBNZXNzYWdlRmxhZ3MoKSkpOwotICAgIGVuY29k
ZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGVuY29kZXItPmVu
Y29kZShyZXNvdXJjZVJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSk7Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCkpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5odHRw
U3RhdHVzVGV4dCgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5zdWdn
ZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9u
c2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNvdXJjZVJlc3BvbnNlKQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewotICAgIGJvb2wgcmVzcG9uc2VJc051bGw7Ci0gICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzcG9uc2VJc051bGwpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKHJlc3BvbnNlSXNOdWxsKSB7Ci0gICAgICAgIHJlc291cmNlUmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0KLSAgICBTdHJpbmcgdXJsOwotICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHVybCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNwb25z
ZS5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOwotCi0gICAgaW50MzJfdCBodHRwU3RhdHVzQ29k
ZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShodHRwU3RhdHVzQ29kZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwU3RhdHVzQ29k
ZSk7Ci0KLSAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUoaGVhZGVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKEhUVFBIZWFkZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwotCiAgICAgdWludDMyX3Qgc291cE1lc3NhZ2VGbGFn
czsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzb3VwTWVzc2FnZUZsYWdzKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldFNvdXBNZXNzYWdlRmxhZ3Moc3RhdGljX2Nh
c3Q8U291cE1lc3NhZ2VGbGFncz4oc291cE1lc3NhZ2VGbGFncykpOwotCi0gICAgU3RyaW5nIG1p
bWVUeXBlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1pbWVUeXBlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWVUeXBlKTsKLQotICAgIFN0
cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHRleHRFbmNv
ZGluZ05hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0VGV4dEVu
Y29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKLQotICAgIGludDY0X3QgY29udGVudExlbmd0
aDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShjb250ZW50TGVuZ3RoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250ZW50
TGVuZ3RoKTsKLQotICAgIFN0cmluZyBodHRwU3RhdHVzVGV4dDsKLSAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShodHRwU3RhdHVzVGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNw
b25zZS5zZXRIVFRQU3RhdHVzVGV4dChodHRwU3RhdHVzVGV4dCk7Ci0KLSAgICBTdHJpbmcgc3Vn
Z2VzdGVkRmlsZW5hbWU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc3VnZ2VzdGVkRmlsZW5h
bWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmls
ZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOwotCi0gICAgcmVzb3VyY2VSZXNwb25zZSA9IHJlc3Bv
bnNlOworICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0U291cE1lc3NhZ2VGbGFncyhzdGF0aWNfY2Fz
dDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGUoQXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQor
dm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnRFbmNvZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7Ci0gICAgYm9vbCBlcnJvcklz
TnVsbCA9IHJlc291cmNlRXJyb3IuaXNOdWxsKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGVycm9y
SXNOdWxsKTsKLSAgICBpZiAoZXJyb3JJc051bGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGVu
Y29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmRvbWFpbigpKTsKLSAgICBlbmNvZGVyLT5lbmNv
ZGUocmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291
cmNlRXJyb3IuZmFpbGluZ1VSTCgpKTsgCi0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZUVycm9yPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJv
ciYgcmVzb3VyY2VFcnJvcikKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciosIFJlc291cmNlRXJyb3ImKQogewotICAg
IGJvb2wgZXJyb3JJc051bGw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZXJyb3JJc051bGwp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVycm9ySXNOdWxsKSB7Ci0gICAgICAg
IHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIFN0cmluZyBkb21haW47Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZG9t
YWluKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50IGVycm9yQ29kZTsKLSAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShlcnJvckNvZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBTdHJpbmcgZmFpbGluZ1VSTDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShmYWlsaW5n
VVJMKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5nIGxvY2FsaXplZERlc2Ny
aXB0aW9uOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGxvY2FsaXplZERlc2NyaXB0aW9uKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJj
ZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlv
bik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggMTk2YWIxMWM3YTc0MzEw
N2QzODAwZTFmZjhmYTViZTFmMmIzYjgxOC4uOWZmMGNjMDY5Njg4NGUzYmNhYjRhZTFmZjdmMmI5
NDIzMmU1NjNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAgYm9vbCByZXF1
ZXN0SXNQcmVzZW50ID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpOwogICAgIGVuY29k
ZXItPmVuY29kZShyZXF1ZXN0SXNQcmVzZW50KTsKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIGNvbnN0IFJlc28KICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5n
ZXQoKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKIHsKICAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQ7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocmVxdWVzdElzUHJlc2VudCkpCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBS
ZXNvdXJjZVJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZVJlc3BvbnNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICAgICBib29s
IHJlc3BvbnNlSXNQcmVzZW50ID0gcmVzb3VyY2VSZXNwb25zZS5uc1VSTFJlc3BvbnNlKCk7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKHJlc3BvbnNlSXNQcmVzZW50KTsKQEAgLTg1LDcgKzg1LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBjb25zdCBSZXMKICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgZGlj
dGlvbmFyeS5nZXQoKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNl
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
b3VyY2VSZXNwb25zZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICAgICBib29sIHJlc3BvbnNlSXNQcmVzZW50OwogICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3BvbnNlSXNQcmVzZW50KSkKQEAgLTExMyw3ICsxMTMs
NyBAQCBzdGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IHJldHVybiBzdHJpbmcuaW1wbCgpID8gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOnJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KHN0cmluZy5jaGFyYWN0ZXJzKCkpIGxlbmd0
aDpzdHJpbmcubGVuZ3RoKCldIDogQCIiOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VFcnJvcj46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIHJlc291cmNlRXJyb3IpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46
OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7CiAgICAgYm9vbCBlcnJvcklzTnVsbCA9IHJlc291
cmNlRXJyb3IuaXNOdWxsKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGVycm9ySXNOdWxsKTsKQEAg
LTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cgogICAgIGVuY29kZXItPmVu
Y29kZShQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygoQ0ZBcnJheVJlZilwZWVyQ2VydGlmaWNhdGVD
aGFpbikpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiti
b29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7CiAg
ICAgYm9vbCBlcnJvcklzTnVsbDsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShlcnJvcklzTnVs
bCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzUXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENv
ZGVyc1F0LmNwcAppbmRleCBhZDU1NzRmOGY4OGMzNjkxOTk2MmVlMjczYzkzZDg1NDA4OTkzZjRk
Li5kY2ZhYmUyYzE1YTNiZDI0NTQ0NTEwNzA0YjUwNDMzODhjMThiYWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKQEAg
LTM0LDEwMCArMzQsMzAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgCiBuYW1lc3BhY2Ug
Q29yZUlQQyB7CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0
Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXF1ZXN0
LnVybCgpLnN0cmluZygpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29k
ZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiBBZGQgKm1vcmUqIGNvZGluZyBpbXBs
ZW1lbnRhdGlvbiB3aGVuIHdlIHdhbnQgdG8gaW1wbGVtZW50IHNvbWV0aGluZyB0aGF0Ci0gICAg
Ly8gZGVwZW5kcyBvbiB0aGlzIGxpa2UgdGhlIHBvbGljeSBjbGllbnQuCi0KLSAgICBTdHJpbmcg
dXJsOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVybCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXNvdXJjZVJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46
OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc291cmNlUmVzcG9uc2UpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46
OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJl
c291cmNlUmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNv
dXJjZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDxpbnQ2NF90PihyZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKTsK
LSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgp
KTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNl
KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJl
c3BvbnNlKQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0KLSAgICBTdHJpbmcg
dXJsOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVybCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXNwb25zZS5zZXRVUkwoS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVy
bCkpOwotCi0gICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1p
bWVUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldE1pbWVUeXBl
KG1pbWVUeXBlKTsKLQotICAgIGludDY0X3QgY29udGVudExlbmd0aDsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShjb250ZW50TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
c3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKLQotICAgIFN0
cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHRleHRFbmNv
ZGluZ05hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0VGV4dEVu
Y29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKLQotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShzdWdnZXN0ZWRGaWxlbmFtZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZShzdWdn
ZXN0ZWRGaWxlbmFtZSk7Ci0KLSAgICByZXNvdXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNv
dXJjZUVycm9yKQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQbGF0
Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpCiB7Ci0gICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZG9tYWluKCkpOwotICAgIGVuY29kZXItPmVu
Y29kZShyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVz
b3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJj
ZUVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VFcnJvcj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3Im
IHJlc291cmNlRXJyb3IpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29k
ZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqLCBSZXNvdXJjZUVycm9yJikKIHsKLSAgICBT
dHJpbmcgZG9tYWluOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRvbWFpbikpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGludCBlcnJvckNvZGU7Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZXJyb3JDb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5nIGZh
aWxpbmdVUkw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZmFpbGluZ1VSTCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShsb2NhbGl6ZWREZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGJvb2wgaXNDYW5jZWxsYXRpb247Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoaXNDYW5jZWxsYXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXNv
dXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwg
bG9jYWxpemVkRGVzY3JpcHRpb24pOwotICAgIHJlc291cmNlRXJyb3Iuc2V0SXNDYW5jZWxsYXRp
b24oaXNDYW5jZWxsYXRpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5k
ZXggMDc2MjI3NWIwM2E5ZjM2MzRlMTJlMzFkZjIyNjNkOWIyZDg0YWMwZi4uN2RlMjEwZjYxNTcx
MTg1MDJhYjVmYjA4MGFkNmRjMjc2MDMzN2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtNDksNyArNDks
NyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIC8vIEZJWE1FOiBUaGVzZSBjb2RlcnMgc2hvdWxk
IHJlYWxseSBnbyBpbiBhIFdlYkNvcmVBcmd1bWVudENvZGVyc0NGTmV0d29yayBmaWxlLgogCi12
b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lk
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCiB7CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSBy
ZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KCk7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBSZXNvCiAjZW5kaWYKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46
OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgYm9vbCBy
ZXF1ZXN0SXNQcmVzZW50OwpAQCAtOTQsOCArOTQsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VS
ZQogI2VuZGlmCiB9CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNvdXJjZVJlc3BvbnNlKQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+Ojpl
bmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
Ym9vbCByZXNwb25zZUlzUHJlc2VudCA9IHJlc291cmNlUmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgp
OwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNl
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzCiAjZW5kaWYKIH0K
IAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQorYm9v
bCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNl
KQogewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgYm9vbCByZXNwb25zZUlzUHJlc2VudDsKQEAg
LTEzNywzNSArMTM2LDE1IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSCiB9CiAKIAotdm9pZCBB
cmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQordm9pZCBBcmd1bWVudENv
ZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewotICAgIGVuY29k
ZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmRvbWFpbigpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUo
cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNl
RXJyb3IuZmFpbGluZ1VSTCgpKTsgCi0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0KICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGVuY29k
ZXItPmVuY29kZShQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhyZXNvdXJjZUVycm9yLmNlcnRpZmlj
YXRlKCkpKTsKICNlbmRpZgogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46
OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNl
RXJyb3IpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3Jt
RGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IpCiB7Ci0gICAgU3RyaW5nIGRvbWFpbjsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkb21h
aW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpbnQgZXJyb3JDb2RlOwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGVycm9yQ29kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIFN0cmluZyBmYWlsaW5nVVJMOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZhaWxpbmdV
UkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgbG9jYWxpemVkRGVzY3Jp
cHRpb247Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24pKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFBsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlOwpAQCAtMTc1LDEyICsxNTQsMTAgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBSZXNvdXJjZUVycm8KICAgICBjb25zdCBWZWN0b3I8UENDRVJUX0NPTlRFWFQ+IGNlcnRp
ZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZUNoYWluKCk7CiAgICAgaWYgKCFj
ZXJ0aWZpY2F0ZUNoYWluLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoY2VydGlmaWNhdGVD
aGFpbi5zaXplKCkgPT0gMSk7Ci0gICAgICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9y
KGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgY29w
eUNlcnRpZmljYXRlVG9EYXRhKGNlcnRpZmljYXRlQ2hhaW4uZmlyc3QoKSkuZ2V0KCkpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmVzb3VyY2VFcnJvci5zZXRDZXJ0aWZpY2F0ZShj
b3B5Q2VydGlmaWNhdGVUb0RhdGEoY2VydGlmaWNhdGVDaGFpbi5maXJzdCgpKS5nZXQoKSk7CiAg
ICAgfQogI2VuZGlmCiAKLSAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4s
IGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgIHJldHVy
biB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167081</attachid>
            <date>2012-10-04 05:39:41 -0700</date>
            <delta_ts>2012-10-04 08:55:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90142-20121004143847.patch</filename>
            <type>text/plain</type>
            <size>31841</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM4NGFlOGQ3YTg4MTYz
MjhkMDkyNjE3MzFkNTk1Yzk5ZWE5NDc5MS4uMzQ2ZWU1YWQ0ZjczN2UxMTUyMGIwZDE4OWE1MGM4
ZTljZmYyYTdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEwLTA0ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBTZXJpYWxp
emF0aW9uIG9mIFJlc291cmNlW1JlcXVlc3QsUmVzcG9uc2UsRXJyb3JdIHNob3VsZCBiZSBzaGFy
ZWQgYWNyb3NzIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIGEgc2V0dGVyIGZvciB0aGUgY2VydGlmaWNhdGUgb2YgUmVzb3VyY2VFcnJv
ci4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Igc28gbm8gbmV3IHRlc3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJy
b3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnNldENlcnRpZmljYXRlKToKKwogMjAxMi0xMC0wNCAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGNvZGUgZm9yIGlucHV0W3R5cGU9ZGF0ZV0g
d2l0aCB0aGUgbXVsdGlwbGUgZmllbGRzIFVJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGM0NGQ0NDVhNGVlYjY3
YTBhNDAyMWZiMDhhM2Y0MjZjNWY1ODFkMC4uNzUyNDhjOWQzZjUxNDNlMmZjMzllMjEwZDE1ZTNk
MzI5YjE4MDc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTA0ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBTZXJpYWxp
emF0aW9uIG9mIFJlc291cmNlW1JlcXVlc3QsUmVzcG9uc2UsRXJyb3JdIHNob3VsZCBiZSBzaGFy
ZWQgYWNyb3NzIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNoYXJlIGNvbW1vbiBzZXJpYWxpemF0aW9uIGNvZGUgYWNyb3NzIFF0IGFuZCBzb3Vw
IHBvcnRzLgorICAgICAgICBBbGwgb2YgdGhlc2UgcG9ydHMgc2VyaWFsaXplIHRoZSBXZWJDb3Jl
IHJlcHJlc2VudGF0aW9uCisgICAgICAgIG9mIHRoZXNlIHR5cGVzLgorCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29k
ZSk6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChDb3JlSVBDOjo6OmVu
Y29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgICogU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcDoKKyAg
ICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKENvcmVJUEM6
Ojo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvc291cC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNTb3VwLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChDb3Jl
SVBDOjo6OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZVBs
YXRmb3JtRGF0YSk6CisKIDIwMTItMTAtMDMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFibGUgdXNlIG9mIFgxMSBpbiBE
dW1wUmVuZGVyVHJlZSAvIFdlYktpdFRlc3RSdW5uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKaW5kZXggMzBlMGE1ZWEwYTMxZmRi
MDljY2JhNWU4NzYyYjgxMTMxZTYxMTkyNi4uNmE4YzdkYWYwOTdmYjg0NmE1MjFlOGFlZWM5MWU2
ZTdmMGEzYzE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVz
Y3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2Vy
dGlmaWNhdGUoKSBjb25zdDsKKyAgICB2b2lkIHNldENlcnRpZmljYXRlKENGRGF0YVJlZik7CiAj
ZW5kaWYKICAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpOwogICAgIENGU3Ry
ZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IGFhMzE4ZTY2
NTVlMWZiODQ1NGEzZDcxZjZmY2MwMzY3NTE4ZDg2YmIuLjM1NGZkMjc1ODY0MjA3Yjc5ZWZjMjFh
ZjdkMTk5ZGIwYjMwMTIwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTYyLDYgKzYyLDExIEBAIFBDQ0VS
VF9DT05URVhUIFJlc291cmNlRXJyb3I6OmNlcnRpZmljYXRlKCkgY29uc3QKICAgICAKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQQ0NFUlRfQ09OVEVYVD4oQ0ZEYXRhR2V0Qnl0ZVB0ciht
X2NlcnRpZmljYXRlLmdldCgpKSk7CiB9CisKK3ZvaWQgUmVzb3VyY2VFcnJvcjo6c2V0Q2VydGlm
aWNhdGUoQ0ZEYXRhUmVmIGNlcnRpZmljYXRlKQoreworICAgIG1fY2VydGlmaWNhdGUgPSBjZXJ0
aWZpY2F0ZTsKK30KICNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAKIGNvbnN0IENGU3RyaW5nUmVm
IGZhaWxpbmdVUkxTdHJpbmdLZXkgPSBDRlNUUigiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXki
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggY2JmNjI0OTI2ODk2N2E5OTQ4ZTk0ZjE2NzY0NjZiNzZkMTdiYjI1MS4uNjI0MzMxYzNm
MWEyZTk1ZTUzMDBkNDBhOGEyZDE1ODI4ZWIwYTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTQxLDYgKzQxLDkgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CkBAIC0zODQsNiArMzg3LDIxMiBA
QCBib29sIEFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgQ3Vyc29yJiBjdXJzb3IpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3sKKyAgICBpZiAoa1No
b3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNv
dXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVz
b3VyY2VSZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CisKKyAgICAgICAgY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycyA9IHJlc291cmNlUmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CisgICAgICAg
IGVuY29kZXItPmVuY29kZShoZWFkZXJzKTsKKworICAgICAgICBGb3JtRGF0YSogaHR0cEJvZHkg
PSByZXNvdXJjZVJlcXVlc3QuaHR0cEJvZHkoKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0
YXRpY19jYXN0PGJvb2w+KGh0dHBCb2R5KSk7CisgICAgICAgIGlmIChodHRwQm9keSkKKyAgICAg
ICAgICAgIGVuY29kZXItPmVuY29kZShodHRwQm9keS0+ZmxhdHRlblRvU3RyaW5nKCkpOworCisg
ICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKS5zdHJpbmcoKSk7CisgICAgfQorCisgICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIs
IHJlc291cmNlUmVxdWVzdCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVl
c3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKK3sKKyAgICBpZiAoa1Nob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7
CisgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworCisgICAgICAgIFN0cmluZyB1cmw7
CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHVybCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKKworICAg
ICAgICBTdHJpbmcgaHR0cE1ldGhvZDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0
cE1ldGhvZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZChodHRwTWV0aG9kKTsKKworICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7
CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZHMoaGVhZGVycyk7
CisKKyAgICAgICAgYm9vbCBoYXNIVFRQQm9keTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUoaGFzSFRUUEJvZHkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAo
aGFzSFRUUEJvZHkpIHsKKyAgICAgICAgICAgIFN0cmluZyBodHRwQm9keTsKKyAgICAgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0dHBCb2R5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUo
aHR0cEJvZHkudXRmOCgpKSk7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgZmlyc3RQYXJ0
eUZvckNvb2tpZXM7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZpcnN0UGFydHlGb3JD
b29raWVzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVxdWVzdC5zZXRG
aXJzdFBhcnR5Rm9yQ29va2llcyhLVVJMKEtVUkwoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpKTsK
KworICAgICAgICByZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0OworICAgIH0KKworICAgIHJldHVy
biBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgcmVzb3VyY2VSZXF1ZXN0KTsKK30KKwordm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQorewor
ICAgIGlmIChrU2hvdWxkU2VyaWFsaXplV2ViQ29yZURhdGEpIHsKKyAgICAgICAgYm9vbCByZXNw
b25zZUlzTnVsbCA9IHJlc291cmNlUmVzcG9uc2UuaXNOdWxsKCk7CisgICAgICAgIGVuY29kZXIt
PmVuY29kZShyZXNwb25zZUlzTnVsbCk7CisgICAgICAgIGlmIChyZXNwb25zZUlzTnVsbCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNw
b25zZS51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDxpbnQzMl90PihyZXNvdXJjZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKTsKKworICAgICAg
ICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzID0gcmVzb3VyY2VSZXNwb25zZS5odHRwSGVh
ZGVyRmllbGRzKCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShoZWFkZXJzKTsKKworICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKTsKKyAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+KHJlc291cmNlUmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJl
c291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7CisgICAgICAgIGVuY29kZXItPmVuY29k
ZShyZXNvdXJjZVJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIH0KKworICAgIGVu
Y29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCByZXNvdXJjZVJlc3BvbnNlKTsKK30KKworYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQoreworICAgIGlmIChr
U2hvdWxkU2VyaWFsaXplV2ViQ29yZURhdGEpIHsKKyAgICAgICAgYm9vbCByZXNwb25zZUlzTnVs
bDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzcG9uc2VJc051bGwpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAocmVzcG9uc2VJc051bGwpIHsKKyAgICAg
ICAgICAgIHJlc291cmNlUmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CisKKyAgICAgICAgU3RyaW5nIHVybDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUodXJsKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0
VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKKworICAgICAgICBpbnQzMl90IGh0dHBTdGF0dXNDb2Rl
OworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShodHRwU3RhdHVzQ29kZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKGh0
dHBTdGF0dXNDb2RlKTsKKworICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVy
cy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAg
ICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsK
KworICAgICAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KG1pbWVUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzcG9uc2Uu
c2V0TWltZVR5cGUobWltZVR5cGUpOworCisgICAgICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1l
OworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh0ZXh0RW5jb2RpbmdOYW1lKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFt
ZSh0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAgICAgICBpbnQ2NF90IGNvbnRlbnRMZW5ndGg7Cisg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGNvbnRlbnRMZW5ndGgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgo
Y29udGVudExlbmd0aCk7CisKKyAgICAgICAgU3RyaW5nIGh0dHBTdGF0dXNUZXh0OworICAgICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShodHRwU3RhdHVzVGV4dCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KGh0dHBTdGF0dXNU
ZXh0KTsKKworICAgICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHN1Z2dlc3RlZEZpbGVuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmls
ZW5hbWUpOworCisgICAgICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICB9CisK
KyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHJlc291cmNlUmVzcG9uc2Up
OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZShBcmd1bWVu
dEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCit7
CisgICAgaWYgKGtTaG91bGRTZXJpYWxpemVXZWJDb3JlRGF0YSkgeworICAgICAgICBib29sIGVy
cm9ySXNOdWxsID0gcmVzb3VyY2VFcnJvci5pc051bGwoKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlKGVycm9ySXNOdWxsKTsKKyAgICAgICAgaWYgKGVycm9ySXNOdWxsKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmRvbWFpbigp
KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkpOwor
ICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpOworICAg
ICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuaXNDYW5jZWxsYXRpb24o
KSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmlzVGltZW91dCgpKTsK
KyAgICB9CisKKyAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgcmVzb3VyY2VFcnJvcik7
Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKK3sKKyAgICBp
ZiAoa1Nob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7CisgICAgICAgIGJvb2wgZXJyb3JJc051
bGw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9ySXNOdWxsKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGVycm9ySXNOdWxsKSB7CisgICAgICAgICAg
ICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgZG9tYWluOworICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShkb21haW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGludCBlcnJvckNvZGU7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9yQ29k
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgU3RyaW5nIGZhaWxpbmdV
Ukw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFN0cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlvbjsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24pKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGJvb2wgaXNDYW5jZWxsYXRpb247Cisg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGlzQ2FuY2VsbGF0aW9uKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICBib29sIGlzVGltZW91dDsKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoaXNUaW1lb3V0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29kZSwg
ZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pOworICAgICAgICByZXNvdXJjZUVycm9y
LnNldElzQ2FuY2VsbGF0aW9uKGlzQ2FuY2VsbGF0aW9uKTsKKyAgICAgICAgcmVzb3VyY2VFcnJv
ci5zZXRJc1RpbWVvdXQoaXNUaW1lb3V0KTsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjb2RlUGxh
dGZvcm1EYXRhKGRlY29kZXIsIHJlc291cmNlRXJyb3IpOworfQogCiB2b2lkIEFyZ3VtZW50Q29k
ZXI8V2luZG93RmVhdHVyZXM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYjA4ZjExOGY5N2I4MDE1NzY5OGE3
MjE4ZTZkNjk3ZjMxNWJmMDdhMi4uN2U1YWQxZTIyMTJlZDVkYzFiODM2MjhjYjdmNDJhNWRmZDk3
ZGI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtMTU5LDE3ICsxNTksNDIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDdXJzb3I+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShXSU4pCisgICAgc3RhdGljIGNvbnN0IGJvb2wga1Nob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRh
ID0gZmFsc2U7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBib29sIGtTaG91bGRTZXJpYWxpemVX
ZWJDb3JlRGF0YSA9IHRydWU7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1
bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2Rlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyBib29sIGRlY29k
ZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZT4geworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQorICAgIHN0
YXRpYyBjb25zdCBib29sIGtTaG91bGRTZXJpYWxpemVXZWJDb3JlRGF0YSA9IGZhbHNlOworI2Vs
c2UKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2hvdWxkU2VyaWFsaXplV2ViQ29yZURhdGEgPSB0
cnVlOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyBib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURh
dGEoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogfTsKKwog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiB7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBjb25zdCBib29sIGtTaG91bGRTZXJpYWxp
emVXZWJDb3JlRGF0YSA9IGZhbHNlOworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2hv
dWxkU2VyaWFsaXplV2ViQ29yZURhdGEgPSB0cnVlOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50
RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcz4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCAxOTZhYjExYzdhNzQzMTA3ZDM4MDBlMWZm
OGZhNWJlMWYyYjNiODE4Li45ZmYwY2MwNjk2ODg0ZTNiY2FiNGFlMWZmN2YyYjk0MjMyZTU2M2I5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENv
ZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVu
dENvZGVyc01hYy5tbQpAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+
OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBib29sIHJlcXVlc3RJc1ByZXNl
bnQgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KCk7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHJlcXVlc3RJc1ByZXNlbnQpOwpAQCAtNTAsNyArNTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
UmVzbwogICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKIH0K
IAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewog
ICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudDsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXF1
ZXN0SXNQcmVzZW50KSkKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmUK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9u
c2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNvdXJjZVJlc3BvbnNlKQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9u
c2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewogICAgIGJvb2wgcmVzcG9uc2VJ
c1ByZXNlbnQgPSByZXNvdXJjZVJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKTsKICAgICBlbmNvZGVy
LT5lbmNvZGUocmVzcG9uc2VJc1ByZXNlbnQpOwpAQCAtODUsNyArODUsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIGNvbnN0IFJlcwogICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5Lmdl
dCgpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3Bv
bnNlKQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJj
ZVJlc3BvbnNlKQogewogICAgIGJvb2wgcmVzcG9uc2VJc1ByZXNlbnQ7CiAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUocmVzcG9uc2VJc1ByZXNlbnQpKQpAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRp
YyBOU1N0cmluZyogbnNTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0
cmluZy5pbXBsKCkgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6cmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVbmlDaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSkgbGVuZ3RoOnN0cmluZy5s
ZW5ndGgoKV0gOiBAIiI7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVz
b3VyY2VFcnJvcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYg
cmVzb3VyY2VFcnJvcikKIHsKICAgICBib29sIGVycm9ySXNOdWxsID0gcmVzb3VyY2VFcnJvci5p
c051bGwoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZXJyb3JJc051bGwpOwpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyCiAgICAgZW5jb2Rlci0+ZW5jb2RlKFBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvKChDRkFycmF5UmVmKXBlZXJDZXJ0aWZpY2F0ZUNoYWluKSk7CiB9
CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKK2Jvb2wgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKICAgICBib29sIGVy
cm9ySXNOdWxsOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9ySXNOdWxsKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3Bw
CmluZGV4IGFkNTU3NGY4Zjg4YzM2OTE5OTYyZWUyNzNjOTNkODU0MDg5OTNmNGQuLmY4ZDY0M2I5
OGYyMGU1YzdjYTAxMzUwOTJhYTE5MDEwYTBiN2FhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcApAQCAtMzQsMTAwICsz
NCwzMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAKIG5hbWVzcGFjZSBDb3JlSVBDIHsK
IAotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZShBcmd1bWVudEVu
Y29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQor
dm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogewotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCAqbW9yZSogY29kaW5nIGltcGxlbWVudGF0aW9u
IHdoZW4gd2Ugd2FudCB0byBpbXBsZW1lbnQgc29tZXRoaW5nIHRoYXQKLSAgICAvLyBkZXBlbmRz
IG9uIHRoaXMgbGlrZSB0aGUgcG9saWN5IGNsaWVudC4KLQotICAgIFN0cmluZyB1cmw7Ci0gICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
c291cmNlUmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VS
ZXNwb25zZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNw
b25zZS51cmwoKS5zdHJpbmcoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9u
c2UubWltZVR5cGUoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+
KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpKTsKLSAgICBlbmNvZGVy
LT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOwotICAgIGVuY29k
ZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi1i
b29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCitib29sIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCiB7
Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLQotICAgIFN0cmluZyB1cmw7Ci0gICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
c3BvbnNlLnNldFVSTChLVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJsKSk7Ci0KLSAg
ICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobWltZVR5cGUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUobWltZVR5cGUp
OwotCi0gICAgaW50NjRfdCBjb250ZW50TGVuZ3RoOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGNvbnRlbnRMZW5ndGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0
RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGNvbnRlbnRMZW5ndGgpOwotCi0gICAgU3RyaW5nIHRleHRF
bmNvZGluZ05hbWU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodGV4dEVuY29kaW5nTmFtZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1l
KHRleHRFbmNvZGluZ05hbWUpOwotCi0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwotICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKHN1Z2dlc3RlZEZpbGVuYW1lKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVu
YW1lKTsKLQotICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZShBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3Ip
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZVBsYXRmb3JtRGF0YShB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZG9tYWluKCkpOwotICAg
IGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpKTsKLSAgICBlbmNvZGVy
LT5lbmNvZGUocmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpOwotICAgIGVuY29kZXItPmVuY29k
ZShyZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwotICAgIGVuY29kZXItPmVu
Y29kZShyZXNvdXJjZUVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpOwogfQogCi1ib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJl
c291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VF
cnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291
cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7Ci0gICAgU3RyaW5nIGRvbWFpbjsKLSAgICBpZiAo
IWRlY29kZXItPmRlY29kZShkb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
bnQgZXJyb3JDb2RlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9yQ29kZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBmYWlsaW5nVVJMOwotICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBT
dHJpbmcgbG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9j
YWxpemVkRGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIGlz
Q2FuY2VsbGF0aW9uOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGlzQ2FuY2VsbGF0aW9uKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJy
b3IoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKTsK
LSAgICByZXNvdXJjZUVycm9yLnNldElzQ2FuY2VsbGF0aW9uKGlzQ2FuY2VsbGF0aW9uKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3Nv
dXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
c291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCBkYmUyYzUxY2RjZmI3OThh
ZmFjZDJmZDFkYmZhNDkyYjFhMWVmYjFiLi4yNmZjYWNjZTNmMzhiMGRiYzg5ZDRlMDg4YzZkNjJk
ZWM2ZmMyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMzYsMTkxICszNiw0MCBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi12b2lkIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7Ci0gICAgZW5j
b2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC5odHRwTWV0aG9kKCkpOwotCi0gICAgY29uc3Qg
SFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IHJlc291cmNlUmVxdWVzdC5odHRwSGVhZGVyRmllbGRz
KCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGhlYWRlcnMpOwotCi0gICAgRm9ybURhdGEqIGh0dHBC
b2R5ID0gcmVzb3VyY2VSZXF1ZXN0Lmh0dHBCb2R5KCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0
YXRpY19jYXN0PGJvb2w+KGh0dHBCb2R5KSk7Ci0gICAgaWYgKGh0dHBCb2R5KQotICAgICAgICBl
bmNvZGVyLT5lbmNvZGUoaHR0cEJvZHktPmZsYXR0ZW5Ub1N0cmluZygpKTsKLQotICAgIGVuY29k
ZXItPmVuY29kZShyZXNvdXJjZVJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmco
KSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXNvdXJjZVJl
cXVlc3Quc291cE1lc3NhZ2VGbGFncygpKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVl
c3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dDsKLQotICAgIFN0cmluZyB1cmw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwp
KTsKLQotICAgIFN0cmluZyBodHRwTWV0aG9kOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0
dHBNZXRob2QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKGh0dHBNZXRob2QpOwotCi0gICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwotICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVx
dWVzdC5hZGRIVFRQSGVhZGVyRmllbGRzKGhlYWRlcnMpOwotCi0gICAgYm9vbCBoYXNIVFRQQm9k
eTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYXNIVFRQQm9keSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoaGFzSFRUUEJvZHkpIHsKLSAgICAgICAgU3RyaW5nIGh0dHBCb2R5
OwotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShodHRwQm9keSkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0
ZShodHRwQm9keS51dGY4KCkpKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZmlyc3RQYXJ0eUZvckNv
b2tpZXM7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZmlyc3RQYXJ0eUZvckNvb2tpZXMpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2ll
cyhLVVJMKEtVUkwoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpKTsKLQogICAgIHVpbnQzMl90IHNv
dXBNZXNzYWdlRmxhZ3M7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc291cE1lc3NhZ2VGbGFn
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXF1ZXN0LnNldFNvdXBNZXNzYWdlRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oc291cE1lc3NhZ2VGbGFncykpOwotCi0g
ICAgcmVzb3VyY2VSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICByZXNvdXJjZVJlcXVlc3Quc2V0U291
cE1lc3NhZ2VGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZs
YWdzKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVzcG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQordm9pZCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewotICAgIGJvb2wg
cmVzcG9uc2VJc051bGwgPSByZXNvdXJjZVJlc3BvbnNlLmlzTnVsbCgpOwotICAgIGVuY29kZXIt
PmVuY29kZShyZXNwb25zZUlzTnVsbCk7Ci0gICAgaWYgKHJlc3BvbnNlSXNOdWxsKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS51cmwoKS5z
dHJpbmcoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc291
cmNlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpOwotCi0gICAgY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycyA9IHJlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpOwotICAgIGVu
Y29kZXItPmVuY29kZShoZWFkZXJzKTsKLQogICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocmVzb3VyY2VSZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdzKCkpKTsKLSAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5taW1lVHlwZSgpKTsKLSAgICBlbmNvZGVy
LT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpOwotICAgIGVuY29k
ZXItPmVuY29kZShzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2Uu
aHR0cFN0YXR1c1RleHQoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2Uu
c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
c3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNl
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKLSAgICBib29sIHJlc3BvbnNlSXNOdWxsOwot
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3BvbnNlSXNOdWxsKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChyZXNwb25zZUlzTnVsbCkgewotICAgICAgICByZXNvdXJjZVJlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotCi0gICAgU3RyaW5nIHVybDsKLSAgICBp
ZiAoIWRlY29kZXItPmRlY29kZSh1cmwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVz
cG9uc2Uuc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKLQotICAgIGludDMyX3QgaHR0cFN0YXR1
c0NvZGU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoaHR0cFN0YXR1
c0NvZGUpOwotCi0gICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwotICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKGhlYWRlcnMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKSwgZW5kID0gaGVhZGVy
cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVy
RmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKLQogICAgIHVpbnQzMl90IHNvdXBNZXNzYWdl
RmxhZ3M7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc291cE1lc3NhZ2VGbGFncykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNwb25zZS5zZXRTb3VwTWVzc2FnZUZsYWdzKHN0YXRp
Y19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KHNvdXBNZXNzYWdlRmxhZ3MpKTsKLQotICAgIFN0cmlu
ZyBtaW1lVHlwZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShtaW1lVHlwZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXNwb25zZS5zZXRNaW1lVHlwZShtaW1lVHlwZSk7Ci0KLSAg
ICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZSh0ZXh0
RW5jb2RpbmdOYW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldFRl
eHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7Ci0KLSAgICBpbnQ2NF90IGNvbnRlbnRM
ZW5ndGg7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoY29udGVudExlbmd0aCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoY29u
dGVudExlbmd0aCk7Ci0KLSAgICBTdHJpbmcgaHR0cFN0YXR1c1RleHQ7Ci0gICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoaHR0cFN0YXR1c1RleHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoaHR0cFN0YXR1c1RleHQpOwotCi0gICAgU3RyaW5n
IHN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN1Z2dlc3RlZEZp
bGVuYW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldFN1Z2dlc3Rl
ZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKTsKLQotICAgIHJlc291cmNlUmVzcG9uc2UgPSBy
ZXNwb25zZTsKKyAgICByZXNvdXJjZVJlc3BvbnNlLnNldFNvdXBNZXNzYWdlRmxhZ3Moc3RhdGlj
X2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oc291cE1lc3NhZ2VGbGFncykpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi0KLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJv
cikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VF
cnJvcikKIHsKLSAgICBib29sIGVycm9ySXNOdWxsID0gcmVzb3VyY2VFcnJvci5pc051bGwoKTsK
LSAgICBlbmNvZGVyLT5lbmNvZGUoZXJyb3JJc051bGwpOwotICAgIGlmIChlcnJvcklzTnVsbCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZG9t
YWluKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpKTsK
LSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpOwotICAgIGVu
Y29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogfQog
Ci1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZShBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCitib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7Ci0gICAgYm9vbCBlcnJv
cklzTnVsbDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShlcnJvcklzTnVsbCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoZXJyb3JJc051bGwpIHsKLSAgICAgICAgcmVzb3VyY2VF
cnJvciA9IFJlc291cmNlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgU3RyaW5nIGRvbWFpbjsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkb21haW4pKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpbnQgZXJyb3JDb2RlOwotICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGVycm9yQ29kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmlu
ZyBmYWlsaW5nVVJMOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgbG9jYWxpemVkRGVzY3JpcHRpb247Ci0g
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24pKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4s
IGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwogICAgIHJldHVy
biB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMDc2MjI3NWIwM2E5ZjM2MzRlMTJlMzFkZjIy
NjNkOWIyZDg0YWMwZi4uYmMzNDhiYjFlOWRjNzllNGZjYTA5ZWEzZWQxNGQwZThlYzdjODM2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIC8v
IEZJWE1FOiBUaGVzZSBjb2RlcnMgc2hvdWxkIHJlYWxseSBnbyBpbiBhIFdlYkNvcmVBcmd1bWVu
dENvZGVyc0NGTmV0d29yayBmaWxlLgogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1
ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0
Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CiAjaWYgVVNFKENGTkVUV09SSykKICAg
ICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KCk7
CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvCiAjZW5kaWYKIH0KIAot
Ym9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1
bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogI2lm
IFVTRShDRk5FVFdPUkspCiAgICAgYm9vbCByZXF1ZXN0SXNQcmVzZW50OwpAQCAtOTUsNyArOTUs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZQogfQogCiAKLXZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5j
b2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIGJvb2wgcmVzcG9uc2VJc1ByZXNlbnQgPSByZXNvdXJjZVJlc3Bv
bnNlLmNmVVJMUmVzcG9uc2UoKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNv
bnN0IFJlcwogI2VuZGlmCiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNl
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
b3VyY2VSZXNwb25zZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGJvb2wgcmVz
cG9uc2VJc1ByZXNlbnQ7CkBAIC0xMzcsNTAgKzEzNywyNSBAQCBib29sIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291
cmNlUgogfQogCiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJv
cikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VF
cnJvcikKIHsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5kb21haW4oKSk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkpOwotICAgIGVuY29k
ZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKSk7IAotICAgIGVuY29kZXItPmVu
Y29kZShyZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwotCiAjaWYgVVNFKENG
TkVUV09SSykKICAgICBlbmNvZGVyLT5lbmNvZGUoUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ocmVz
b3VyY2VFcnJvci5jZXJ0aWZpY2F0ZSgpKSk7CiAjZW5kaWYKIH0KIAotYm9vbCBBcmd1bWVudENv
ZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNv
dXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJy
b3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJj
ZUVycm9yJiByZXNvdXJjZUVycm9yKQogewotICAgIFN0cmluZyBkb21haW47Ci0gICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoZG9tYWluKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50
IGVycm9yQ29kZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShlcnJvckNvZGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgZmFpbGluZ1VSTDsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShmYWlsaW5nVVJMKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3Ry
aW5nIGxvY2FsaXplZERlc2NyaXB0aW9uOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGxvY2Fs
aXplZERlc2NyaXB0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAjaWYgVVNFKENGTkVU
V09SSykKICAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZTsKICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShjZXJ0aWZpY2F0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBjb25zdCBWZWN0b3I8UENDRVJUX0NPTlRFWFQ+IGNlcnRpZmljYXRlQ2hhaW4gPSBj
ZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZUNoYWluKCk7Ci0gICAgaWYgKCFjZXJ0aWZpY2F0ZUNoYWlu
LmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoY2VydGlmaWNhdGVDaGFpbi5zaXplKCkgPT0g
MSk7Ci0gICAgICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKGRvbWFpbiwgZXJyb3JD
b2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgY29weUNlcnRpZmljYXRlVG9E
YXRhKGNlcnRpZmljYXRlQ2hhaW4uZmlyc3QoKSkuZ2V0KCkpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9CisgICAgaWYgKCFjZXJ0aWZpY2F0ZUNoYWluLmlzRW1wdHkoKSkKKyAgICAgICAg
cmVzb3VyY2VFcnJvci5zZXRDZXJ0aWZpY2F0ZShjb3B5Q2VydGlmaWNhdGVUb0RhdGEoY2VydGlm
aWNhdGVDaGFpbi5maXJzdCgpKS5nZXQoKSkKICNlbmRpZgogCi0gICAgcmVzb3VyY2VFcnJvciA9
IFJlc291cmNlRXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERl
c2NyaXB0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167111</attachid>
            <date>2012-10-04 08:55:38 -0700</date>
            <delta_ts>2012-10-12 04:20:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90142-20121004175444.patch</filename>
            <type>text/plain</type>
            <size>31929</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJlZjFiNDFhYzYzMzcw
YjQyMjFjOGFhNzljNzI5MDYxMDU0M2ZiNC4uMDkwZGU0NzgwYTA1ZGVjZTM1MzViYjk5M2ViNzY0
ZmFlZjIxNTk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEwLTA0ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBTZXJpYWxp
emF0aW9uIG9mIFJlc291cmNlW1JlcXVlc3QsUmVzcG9uc2UsRXJyb3JdIHNob3VsZCBiZSBzaGFy
ZWQgYWNyb3NzIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MDE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIGEgc2V0dGVyIGZvciB0aGUgY2VydGlmaWNhdGUgb2YgUmVzb3VyY2VFcnJv
ci4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Igc28gbm8gbmV3IHRlc3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJy
b3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OnNldENlcnRpZmljYXRlKToKKwogMjAxMi0xMC0wNCAgVnNldm9sb2QgVmxhc292ICA8
dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBXaGVuIHVpU291
cmNlQ29kZSBjb250ZW50IGhhcyBkaXZlcmdlZCBmcm9tIFZNIHNjcmlwdCwgY2FsbCBmcmFtZXMg
c2hvdWxkIGJlIHNob3duIGluIHRlbXBvcmFyeSBzY3JpcHQgYmFzZWQgdWlTb3VyY2VDb2Rlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlOWJiMTVjYTIwZjY1YmRmMDkwMDVjOTE3NTBhZWM5NTZlYTYxZmQzLi41
Y2U5MDA1ZjAxM2NmMDU0OWFhYTE4M2YyZTI0OWJmYmE1ZDU3OTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzIgQEAKKzIwMTItMTAtMDQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFtXSzJdIFNlcmlhbGl6YXRpb24gb2YgUmVzb3VyY2VbUmVxdWVzdCxS
ZXNwb25zZSxFcnJvcl0gc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3MgcG9ydHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTQyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgY29tbW9uIHNlcmlhbGl6
YXRpb24gY29kZSBhY3Jvc3MgUXQgYW5kIHNvdXAgcG9ydHMuCisgICAgICAgIEFsbCBvZiB0aGVz
ZSBwb3J0cyBzZXJpYWxpemUgdGhlIFdlYkNvcmUgcmVwcmVzZW50YXRpb24KKyAgICAgICAgb2Yg
dGhlc2UgdHlwZXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEMpOgorICAg
ICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KENvcmVJUEM6Ojo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvcXQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoQ29yZUlQQzo6Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzV2luLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKwogMjAxMi0xMC0wNCAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gQWRkIHNldHRpbmcgdG8gYWxsb3cgZmlsZSBhY2Nlc3MgZnJvbSBmaWxlOi8v
IFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUVycm9yLmgKaW5kZXggMzBlMGE1ZWEwYTMxZmRiMDljY2JhNWU4NzYyYjgxMTMxZTYxMTkyNi4u
NmE4YzdkYWYwOTdmYjg0NmE1MjFlOGFlZWM5MWU2ZTdmMGEzYzE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTY1LDYg
KzY1LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZXNvdXJjZUVycm9yKGNv
bnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdV
UkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZp
Y2F0ZSk7CiAgICAgUENDRVJUX0NPTlRFWFQgY2VydGlmaWNhdGUoKSBjb25zdDsKKyAgICB2b2lk
IHNldENlcnRpZmljYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKICAgICBSZXNvdXJjZUVycm9yKENG
U3RyZWFtRXJyb3IgZXJyb3IpOwogICAgIENGU3RyZWFtRXJyb3IgY2ZTdHJlYW1FcnJvcigpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCmluZGV4IGFhMzE4ZTY2NTVlMWZiODQ1NGEzZDcxZjZmY2MwMzY3NTE4
ZDg2YmIuLjM1NGZkMjc1ODY0MjA3Yjc5ZWZjMjFhZjdkMTk5ZGIwYjMwMTIwYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JD
Ri5jcHAKQEAgLTYyLDYgKzYyLDExIEBAIFBDQ0VSVF9DT05URVhUIFJlc291cmNlRXJyb3I6OmNl
cnRpZmljYXRlKCkgY29uc3QKICAgICAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQQ0NF
UlRfQ09OVEVYVD4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX2NlcnRpZmljYXRlLmdldCgpKSk7CiB9CisK
K3ZvaWQgUmVzb3VyY2VFcnJvcjo6c2V0Q2VydGlmaWNhdGUoQ0ZEYXRhUmVmIGNlcnRpZmljYXRl
KQoreworICAgIG1fY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsKK30KICNlbmRpZiAvLyBQTEFU
Rk9STShXSU4pCiAKIGNvbnN0IENGU3RyaW5nUmVmIGZhaWxpbmdVUkxTdHJpbmdLZXkgPSBDRlNU
UigiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXkiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggY2JmNjI0OTI2ODk2N2E5OTQ4ZTk0
ZjE2NzY0NjZiNzZkMTdiYjI1MS4uNjI0MzMxYzNmMWEyZTk1ZTUzMDBkNDBhOGEyZDE1ODI4ZWIw
YTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTQxLDYgKzQxLDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25T
cGFjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0Zl
YXR1cmVzLmg+CkBAIC0zODQsNiArMzg3LDIxMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q3Vyc29y
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgQ3Vyc29yJiBjdXJzb3IpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKK3sKKyAgICBpZiAoa1Nob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7
CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkp
OworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXF1ZXN0Lmh0dHBNZXRob2QoKSk7
CisKKyAgICAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IHJlc291cmNlUmVxdWVz
dC5odHRwSGVhZGVyRmllbGRzKCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShoZWFkZXJzKTsK
KworICAgICAgICBGb3JtRGF0YSogaHR0cEJvZHkgPSByZXNvdXJjZVJlcXVlc3QuaHR0cEJvZHko
KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KGh0dHBCb2R5KSk7
CisgICAgICAgIGlmIChodHRwQm9keSkKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShodHRw
Qm9keS0+ZmxhdHRlblRvU3RyaW5nKCkpOworCisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNv
dXJjZVJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKSk7CisgICAgfQorCisg
ICAgZW5jb2RlUGxhdGZvcm1EYXRhKGVuY29kZXIsIHJlc291cmNlUmVxdWVzdCk7Cit9CisKK2Jv
b2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3sKKyAgICBpZiAo
a1Nob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhKSB7CisgICAgICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0OworCisgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHVybCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlcXVlc3Quc2V0
VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKKworICAgICAgICBTdHJpbmcgaHR0cE1ldGhvZDsKKyAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0cE1ldGhvZCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChodHRwTWV0aG9kKTsKKwor
ICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGhlYWRlcnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXF1ZXN0
LmFkZEhUVFBIZWFkZXJGaWVsZHMoaGVhZGVycyk7CisKKyAgICAgICAgYm9vbCBoYXNIVFRQQm9k
eTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFzSFRUUEJvZHkpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaGFzSFRUUEJvZHkpIHsKKyAgICAgICAgICAg
IFN0cmluZyBodHRwQm9keTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0dHBC
b2R5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXF1ZXN0
LnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoaHR0cEJvZHkudXRmOCgpKSk7CisgICAgICAg
IH0KKworICAgICAgICBTdHJpbmcgZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKGZpcnN0UGFydHlGb3JDb29raWVzKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhLVVJMKEtV
UkwoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpKTsKKworICAgICAgICByZXNvdXJjZVJlcXVlc3Qg
PSByZXF1ZXN0OworICAgIH0KKworICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2Rl
ciwgcmVzb3VyY2VSZXF1ZXN0KTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVz
cG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQoreworICAgIGlmIChrU2hvdWxkU2VyaWFsaXplV2Vi
Q29yZURhdGEpIHsKKyAgICAgICAgYm9vbCByZXNwb25zZUlzTnVsbCA9IHJlc291cmNlUmVzcG9u
c2UuaXNOdWxsKCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNwb25zZUlzTnVsbCk7Cisg
ICAgICAgIGlmIChyZXNwb25zZUlzTnVsbCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CisgICAg
ICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxpbnQzMl90PihyZXNvdXJjZVJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkpKTsKKworICAgICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFk
ZXJzID0gcmVzb3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCk7CisgICAgICAgIGVuY29k
ZXItPmVuY29kZShoZWFkZXJzKTsKKworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VS
ZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRp
Y19jYXN0PGludDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkp
KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c1Rl
eHQoKSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNlLnN1Z2dlc3Rl
ZEZpbGVuYW1lKCkpOworICAgIH0KKworICAgIGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCBy
ZXNvdXJjZVJlc3BvbnNlKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9u
c2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNvdXJjZVJlc3BvbnNlKQoreworICAgIGlmIChrU2hvdWxkU2VyaWFsaXplV2ViQ29yZURhdGEp
IHsKKyAgICAgICAgYm9vbCByZXNwb25zZUlzTnVsbDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocmVzcG9uc2VJc051bGwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAocmVzcG9uc2VJc051bGwpIHsKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisKKyAgICAgICAgU3RyaW5nIHVy
bDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKKwor
ICAgICAgICBpbnQzMl90IGh0dHBTdGF0dXNDb2RlOworICAgICAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShodHRwU3RhdHVzQ29kZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKGh0dHBTdGF0dXNDb2RlKTsKKworICAgICAgICBI
VFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRl
cnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKEhUVFBIZWFkZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVy
RmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKKworICAgICAgICBTdHJpbmcgbWltZVR5cGU7
CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUobWltZVR5cGUpOworCisg
ICAgICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lOworICAgICAgICBpZiAoIWRlY29kZXItPmRl
Y29kZSh0ZXh0RW5jb2RpbmdOYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAg
ICAgICBpbnQ2NF90IGNvbnRlbnRMZW5ndGg7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGNvbnRlbnRMZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXNw
b25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoY29udGVudExlbmd0aCk7CisKKyAgICAgICAg
U3RyaW5nIGh0dHBTdGF0dXNUZXh0OworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShodHRw
U3RhdHVzVGV4dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KGh0dHBTdGF0dXNUZXh0KTsKKworICAgICAgICBTdHJpbmcgc3Vn
Z2VzdGVkRmlsZW5hbWU7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN1Z2dlc3RlZEZp
bGVuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0
U3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOworCisgICAgICAgIHJlc291cmNl
UmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1E
YXRhKGRlY29kZXIsIHJlc291cmNlUmVzcG9uc2UpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VFcnJvcj46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCit7CisgICAgaWYgKGtTaG91bGRTZXJpYWxpemVX
ZWJDb3JlRGF0YSkgeworICAgICAgICBib29sIGVycm9ySXNOdWxsID0gcmVzb3VyY2VFcnJvci5p
c051bGwoKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGVycm9ySXNOdWxsKTsKKyAgICAgICAg
aWYgKGVycm9ySXNOdWxsKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGVuY29kZXIt
PmVuY29kZShyZXNvdXJjZUVycm9yLmRvbWFpbigpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVz
b3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHJlc291cmNlRXJyb3IuaXNDYW5jZWxsYXRpb24oKSk7CisgICAgICAgIGVuY29kZXItPmVuY29k
ZShyZXNvdXJjZUVycm9yLmlzVGltZW91dCgpKTsKKyAgICB9CisKKyAgICBlbmNvZGVQbGF0Zm9y
bURhdGEoZW5jb2RlciwgcmVzb3VyY2VFcnJvcik7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZUVycm9yPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VF
cnJvciYgcmVzb3VyY2VFcnJvcikKK3sKKyAgICBpZiAoa1Nob3VsZFNlcmlhbGl6ZVdlYkNvcmVE
YXRhKSB7CisgICAgICAgIGJvb2wgZXJyb3JJc051bGw7CisgICAgICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKGVycm9ySXNOdWxsKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKGVycm9ySXNOdWxsKSB7CisgICAgICAgICAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VF
cnJvcigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBT
dHJpbmcgZG9tYWluOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShkb21haW4pKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGludCBlcnJvckNvZGU7CisgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9yQ29kZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgU3RyaW5nIGZhaWxpbmdVUkw7CisgICAgICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKGZhaWxpbmdVUkwpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IFN0cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlvbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUobG9jYWxpemVkRGVzY3JpcHRpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGJvb2wgaXNDYW5jZWxsYXRpb247CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGlzQ2FuY2VsbGF0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBi
b29sIGlzVGltZW91dDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaXNUaW1lb3V0KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXNvdXJjZUVycm9yID0gUmVz
b3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3Jp
cHRpb24pOworICAgICAgICByZXNvdXJjZUVycm9yLnNldElzQ2FuY2VsbGF0aW9uKGlzQ2FuY2Vs
bGF0aW9uKTsKKyAgICAgICAgcmVzb3VyY2VFcnJvci5zZXRJc1RpbWVvdXQoaXNUaW1lb3V0KTsK
KyAgICB9CisKKyAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHJlc291cmNl
RXJyb3IpOworfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2luZG93RmVhdHVyZXM+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVh
dHVyZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggYjA4ZjExOGY5N2I4MDE1NzY5OGE3MjE4ZTZkNjk3ZjMxNWJmMDdhMi4uN2U1YWQx
ZTIyMTJlZDVkYzFiODM2MjhjYjdmNDJhNWRmZDk3ZGI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTU5LDE3ICsxNTksNDIgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDdXJzb3I+IHsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7
CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCisgICAgc3RhdGljIGNvbnN0IGJv
b2wga1Nob3VsZFNlcmlhbGl6ZVdlYkNvcmVEYXRhID0gZmFsc2U7CisjZWxzZQorICAgIHN0YXRp
YyBjb25zdCBib29sIGtTaG91bGRTZXJpYWxpemVXZWJDb3JlRGF0YSA9IHRydWU7CisjZW5kaWYK
KwogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
UGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29k
ZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZT4geworI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oV0lOKQorICAgIHN0YXRpYyBjb25zdCBib29sIGtTaG91bGRTZXJp
YWxpemVXZWJDb3JlRGF0YSA9IGZhbHNlOworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBr
U2hvdWxkU2VyaWFsaXplV2ViQ29yZURhdGEgPSB0cnVlOworI2VuZGlmCisKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlUGxhdGZvcm1EYXRh
KEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0
YXRpYyBjb25zdCBib29sIGtTaG91bGRTZXJpYWxpemVXZWJDb3JlRGF0YSA9IGZhbHNlOworI2Vs
c2UKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2hvdWxkU2VyaWFsaXplV2ViQ29yZURhdGEgPSB0
cnVlOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1l
bnREZWNvZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogfTsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcz4gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpp
bmRleCAxOTZhYjExYzdhNzQzMTA3ZDM4MDBlMWZmOGZhNWJlMWYyYjNiODE4Li45ZmYwY2MwNjk2
ODg0ZTNiY2FiNGFlMWZmN2YyYjk0MjMyZTU2M2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtMzgsNyArMzgs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLXZv
aWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKIHsKICAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxS
ZXF1ZXN0KCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlcXVlc3RJc1ByZXNlbnQpOwpAQCAtNTAs
NyArNTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzbwogICAgIENvcmVJUEM6OmVuY29kZShl
bmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudDsK
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXF1ZXN0SXNQcmVzZW50KSkKQEAgLTczLDcgKzcz
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQordm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJl
c3BvbnNlKQogewogICAgIGJvb2wgcmVzcG9uc2VJc1ByZXNlbnQgPSByZXNvdXJjZVJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUocmVzcG9uc2VJc1ByZXNlbnQp
OwpAQCAtODUsNyArODUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46
OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlcwogICAgIENvcmVJUEM6
OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKIH0KIAotYm9vbCBBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQorYm9vbCBBcmd1bWVudENvZGVyPFJl
c291cmNlUmVzcG9uc2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewogICAgIGJvb2wgcmVz
cG9uc2VJc1ByZXNlbnQ7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzcG9uc2VJc1ByZXNl
bnQpKQpAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBOU1N0cmluZyogbnNTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZy5pbXBsKCkgPyBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oc3RyaW5n
LmNoYXJhY3RlcnMoKSkgbGVuZ3RoOnN0cmluZy5sZW5ndGgoKV0gOiBAIiI7CiB9CiAKLXZvaWQg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5j
b2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKICAgICBib29s
IGVycm9ySXNOdWxsID0gcmVzb3VyY2VFcnJvci5pc051bGwoKTsKICAgICBlbmNvZGVyLT5lbmNv
ZGUoZXJyb3JJc051bGwpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVz
b3VyCiAgICAgZW5jb2Rlci0+ZW5jb2RlKFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKChDRkFycmF5
UmVmKXBlZXJDZXJ0aWZpY2F0ZUNoYWluKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZUVycm9yPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJv
ciYgcmVzb3VyY2VFcnJvcikKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvciYg
cmVzb3VyY2VFcnJvcikKIHsKICAgICBib29sIGVycm9ySXNOdWxsOwogICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGVycm9ySXNOdWxsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
cXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCmluZGV4IGFkNTU3NGY4Zjg4YzM2OTE5OTYy
ZWUyNzNjOTNkODU0MDg5OTNmNGQuLmY4ZDY0M2I5OGYyMGU1YzdjYTAxMzUwOTJhYTE5MDEwYTBi
N2FhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1l
bnRDb2RlcnNRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1
bWVudENvZGVyc1F0LmNwcApAQCAtMzQsMTAwICszNCwzMiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKICAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAotdm9pZCBBcmd1bWVudENvZGVyPFJlc291
cmNlUmVxdWVzdD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAgIGVuY29kZXItPmVu
Y29kZShyZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwogfQogCi1ib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitib29sIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgLy8gRklYTUU6IEFk
ZCAqbW9yZSogY29kaW5nIGltcGxlbWVudGF0aW9uIHdoZW4gd2Ugd2FudCB0byBpbXBsZW1lbnQg
c29tZXRoaW5nIHRoYXQKLSAgICAvLyBkZXBlbmRzIG9uIHRoaXMgbGlrZSB0aGUgcG9saWN5IGNs
aWVudC4KLQotICAgIFN0cmluZyB1cmw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc291cmNlUmVxdWVzdC5zZXRVUkwoS1VSTChL
VVJMKCksIHVybCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiAKLXZvaWQgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKLSAg
ICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7Ci0gICAg
ZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UubWltZVR5cGUoKSk7Ci0gICAgZW5jb2Rl
ci0+ZW5jb2RlKHN0YXRpY19jYXN0PGludDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCkpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS50
ZXh0RW5jb2RpbmdOYW1lKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNl
LnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VS
ZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25z
ZT46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNl
UmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCiB7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKLQotICAgIFN0cmluZyB1cmw7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldFVSTChLVVJMKFdlYkNvcmU6
OlBhcnNlZFVSTFN0cmluZywgdXJsKSk7Ci0KLSAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUobWltZVR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmVzcG9uc2Uuc2V0TWltZVR5cGUobWltZVR5cGUpOwotCi0gICAgaW50NjRfdCBjb250ZW50TGVu
Z3RoOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGNvbnRlbnRMZW5ndGgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGNvbnRl
bnRMZW5ndGgpOwotCi0gICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUodGV4dEVuY29kaW5nTmFtZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUpOwotCi0gICAg
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN1Z2dl
c3RlZEZpbGVuYW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldFN1
Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKTsKLQotICAgIHJlc291cmNlUmVzcG9u
c2UgPSByZXNwb25zZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIEFyZ3VtZW50Q29k
ZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VFcnJvcj46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2Rl
KHJlc291cmNlRXJyb3IuZG9tYWluKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVy
cm9yLmVycm9yQ29kZSgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5mYWls
aW5nVVJMKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmlzQ2FuY2Vs
bGF0aW9uKCkpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3Ip
Citib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7
Ci0gICAgU3RyaW5nIGRvbWFpbjsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkb21haW4pKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpbnQgZXJyb3JDb2RlOwotICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKGVycm9yQ29kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0
cmluZyBmYWlsaW5nVVJMOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgbG9jYWxpemVkRGVzY3JpcHRpb247
Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24pKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIGlzQ2FuY2VsbGF0aW9uOwotICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKGlzQ2FuY2VsbGF0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxp
bmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKTsKLSAgICByZXNvdXJjZUVycm9yLnNldElzQ2Fu
Y2VsbGF0aW9uKGlzQ2FuY2VsbGF0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNT
b3VwLmNwcAppbmRleCBkYmUyYzUxY2RjZmI3OThhZmFjZDJmZDFkYmZhNDkyYjFhMWVmYjFiLi4y
NmZjYWNjZTNmMzhiMGRiYzg5ZDRlMDg4YzZkNjJkZWM2ZmMyMTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNw
cApAQCAtMzYsMTkxICszNiw0MCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIENvcmVJUEMgewogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVx
dWVzdC51cmwoKS5zdHJpbmcoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVz
dC5odHRwTWV0aG9kKCkpOwotCi0gICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IHJl
c291cmNlUmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGhl
YWRlcnMpOwotCi0gICAgRm9ybURhdGEqIGh0dHBCb2R5ID0gcmVzb3VyY2VSZXF1ZXN0Lmh0dHBC
b2R5KCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGJvb2w+KGh0dHBCb2R5KSk7
Ci0gICAgaWYgKGh0dHBCb2R5KQotICAgICAgICBlbmNvZGVyLT5lbmNvZGUoaHR0cEJvZHktPmZs
YXR0ZW5Ub1N0cmluZygpKTsKLQotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihyZXNvdXJjZVJlcXVlc3Quc291cE1lc3NhZ2VGbGFncygpKSk7
CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK2Jv
b2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkK
IHsKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKLQotICAgIFN0cmluZyB1cmw7Ci0gICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUodXJsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
cXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKLQotICAgIFN0cmluZyBodHRwTWV0aG9k
OwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGh0dHBNZXRob2QpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKGh0dHBNZXRob2QpOwotCi0gICAgSFRU
UEhlYWRlck1hcCBoZWFkZXJzOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGRzKGhl
YWRlcnMpOwotCi0gICAgYm9vbCBoYXNIVFRQQm9keTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShoYXNIVFRQQm9keSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoaGFzSFRUUEJv
ZHkpIHsKLSAgICAgICAgU3RyaW5nIGh0dHBCb2R5OwotICAgICAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShodHRwQm9keSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcXVl
c3Quc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZShodHRwQm9keS51dGY4KCkpKTsKLSAgICB9
Ci0KLSAgICBTdHJpbmcgZmlyc3RQYXJ0eUZvckNvb2tpZXM7Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZmlyc3RQYXJ0eUZvckNvb2tpZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhLVVJMKEtVUkwoKSwgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMpKTsKLQogICAgIHVpbnQzMl90IHNvdXBNZXNzYWdlRmxhZ3M7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoc291cE1lc3NhZ2VGbGFncykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXF1ZXN0LnNldFNvdXBNZXNzYWdlRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VG
bGFncz4oc291cE1lc3NhZ2VGbGFncykpOwotCi0gICAgcmVzb3VyY2VSZXF1ZXN0ID0gcmVxdWVz
dDsKKyAgICByZXNvdXJjZVJlcXVlc3Quc2V0U291cE1lc3NhZ2VGbGFncyhzdGF0aWNfY2FzdDxT
b3VwTWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLQotdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUoQXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3Bv
bnNlKQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGVQbGF0Zm9y
bURhdGEoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNvdXJjZVJlc3BvbnNlKQogewotICAgIGJvb2wgcmVzcG9uc2VJc051bGwgPSByZXNvdXJjZVJl
c3BvbnNlLmlzTnVsbCgpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNwb25zZUlzTnVsbCk7Ci0g
ICAgaWYgKHJlc3BvbnNlSXNOdWxsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBlbmNvZGVyLT5l
bmNvZGUocmVzb3VyY2VSZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7Ci0gICAgZW5jb2Rlci0+ZW5j
b2RlKHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSkpOwotCi0gICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IHJlc291cmNlUmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkcygpOwotICAgIGVuY29kZXItPmVuY29kZShoZWFkZXJzKTsKLQog
ICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzb3VyY2VSZXNwb25z
ZS5zb3VwTWVzc2FnZUZsYWdzKCkpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNw
b25zZS5taW1lVHlwZSgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS50
ZXh0RW5jb2RpbmdOYW1lKCkpOwotICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxpbnQ2
NF90PihyZXNvdXJjZVJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSk7Ci0gICAgZW5j
b2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7Ci0gICAgZW5j
b2Rlci0+ZW5jb2RlKHJlc291cmNlUmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAK
LWJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK2Jvb2wg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkK
IHsKLSAgICBib29sIHJlc3BvbnNlSXNOdWxsOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJl
c3BvbnNlSXNOdWxsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChyZXNwb25zZUlz
TnVsbCkgewotICAgICAgICByZXNvdXJjZVJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwotCi0gICAgU3RyaW5nIHVybDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZSh1cmwpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0VVJMKEtVUkwoS1VSTCgpLCB1
cmwpKTsKLQotICAgIGludDMyX3QgaHR0cFN0YXR1c0NvZGU7Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoaHR0cFN0YXR1c0NvZGUpOwotCi0gICAgSFRUUEhlYWRlck1h
cCBoZWFkZXJzOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGhlYWRlcnMuYmVnaW4oKSwgZW5kID0gaGVhZGVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25k
KTsKLQogICAgIHVpbnQzMl90IHNvdXBNZXNzYWdlRmxhZ3M7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoc291cE1lc3NhZ2VGbGFncykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNw
b25zZS5zZXRTb3VwTWVzc2FnZUZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KHNv
dXBNZXNzYWdlRmxhZ3MpKTsKLQotICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShtaW1lVHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNwb25z
ZS5zZXRNaW1lVHlwZShtaW1lVHlwZSk7Ci0KLSAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZTsK
LSAgICBpZiAoIWRlY29kZXItPmRlY29kZSh0ZXh0RW5jb2RpbmdOYW1lKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5n
TmFtZSk7Ci0KLSAgICBpbnQ2NF90IGNvbnRlbnRMZW5ndGg7Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoY29udGVudExlbmd0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXNwb25z
ZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoY29udGVudExlbmd0aCk7Ci0KLSAgICBTdHJpbmcg
aHR0cFN0YXR1c1RleHQ7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaHR0cFN0YXR1c1RleHQp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQo
aHR0cFN0YXR1c1RleHQpOwotCi0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHN1Z2dlc3RlZEZpbGVuYW1lKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1l
KTsKLQotICAgIHJlc291cmNlUmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICByZXNvdXJjZVJlc3Bv
bnNlLnNldFNvdXBNZXNzYWdlRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oc291
cE1lc3NhZ2VGbGFncykpOwogICAgIHJldHVybiB0cnVlOwogfQogCi0KLXZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBib29sIGVycm9ySXNO
dWxsID0gcmVzb3VyY2VFcnJvci5pc051bGwoKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoZXJyb3JJ
c051bGwpOwotICAgIGlmIChlcnJvcklzTnVsbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZW5j
b2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZG9tYWluKCkpOwotICAgIGVuY29kZXItPmVuY29k
ZShyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3Vy
Y2VFcnJvci5mYWlsaW5nVVJMKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VFcnJvcj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3Im
IHJlc291cmNlRXJyb3IpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29k
ZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJl
c291cmNlRXJyb3IpCiB7Ci0gICAgYm9vbCBlcnJvcklzTnVsbDsKLSAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShlcnJvcklzTnVsbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZXJy
b3JJc051bGwpIHsKLSAgICAgICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJyb3IoKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgU3RyaW5nIGRvbWFpbjsKLSAgICBpZiAo
IWRlY29kZXItPmRlY29kZShkb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
bnQgZXJyb3JDb2RlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9yQ29kZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBmYWlsaW5nVVJMOwotICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBT
dHJpbmcgbG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobG9j
YWxpemVkRGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXNvdXJj
ZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9j
YWxpemVkRGVzY3JpcHRpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5k
ZXggMDc2MjI3NWIwM2E5ZjM2MzRlMTJlMzFkZjIyNjNkOWIyZDg0YWMwZi4uYTYxNDA5MTk0NDVl
MzdjZmJmODUwYmQ1N2ZlZmYyOTg0OTg5ZDQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtNDksNyArNDks
NyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIC8vIEZJWE1FOiBUaGVzZSBjb2RlcnMgc2hvdWxk
IHJlYWxseSBnbyBpbiBhIFdlYkNvcmVBcmd1bWVudENvZGVyc0NGTmV0d29yayBmaWxlLgogCi12
b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lk
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QpCiB7CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSBy
ZXNvdXJjZVJlcXVlc3QuY2ZVUkxSZXF1ZXN0KCk7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBSZXNvCiAjZW5kaWYKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVxdWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46
OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgYm9vbCBy
ZXF1ZXN0SXNQcmVzZW50OwpAQCAtOTUsNyArOTUsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VS
ZQogfQogCiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VS
ZXNwb25zZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGJvb2wgcmVz
cG9uc2VJc1ByZXNlbnQgPSByZXNvdXJjZVJlc3BvbnNlLmNmVVJMUmVzcG9uc2UoKTsKQEAgLTEw
OSw3ICsxMDksNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlcwogI2VuZGlmCiB9CiAKLWJvb2wg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK2Jvb2wgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIGJvb2wgcmVzcG9uc2VJc1ByZXNlbnQ7CkBAIC0xMzcsNTAg
KzEzNywyNSBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUgogfQogCiAKLXZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBlbmNvZGVyLT5lbmNv
ZGUocmVzb3VyY2VFcnJvci5kb21haW4oKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNl
RXJyb3IuZXJyb3JDb2RlKCkpOwotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmZh
aWxpbmdVUkwoKSk7IAotICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkpOwotCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBlbmNvZGVyLT5lbmNv
ZGUoUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ocmVzb3VyY2VFcnJvci5jZXJ0aWZpY2F0ZSgpKSk7
CiAjZW5kaWYKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQor
Ym9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewot
ICAgIFN0cmluZyBkb21haW47Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZG9tYWluKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50IGVycm9yQ29kZTsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShlcnJvckNvZGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJp
bmcgZmFpbGluZ1VSTDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShmYWlsaW5nVVJMKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5nIGxvY2FsaXplZERlc2NyaXB0aW9uOwot
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGxvY2FsaXplZERlc2NyaXB0aW9uKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBQbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mbyBjZXJ0aWZpY2F0ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShjZXJ0aWZpY2F0
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBjb25zdCBWZWN0b3I8UENDRVJU
X0NPTlRFWFQ+IGNlcnRpZmljYXRlQ2hhaW4gPSBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZUNoYWlu
KCk7Ci0gICAgaWYgKCFjZXJ0aWZpY2F0ZUNoYWluLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NF
UlQoY2VydGlmaWNhdGVDaGFpbi5zaXplKCkgPT0gMSk7Ci0gICAgICAgIHJlc291cmNlRXJyb3Ig
PSBSZXNvdXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbiwgY29weUNlcnRpZmljYXRlVG9EYXRhKGNlcnRpZmljYXRlQ2hhaW4uZmlyc3Qo
KSkuZ2V0KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgaWYgKCFjZXJ0aWZp
Y2F0ZUNoYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmVzb3VyY2VFcnJvci5zZXRDZXJ0aWZpY2F0
ZShjb3B5Q2VydGlmaWNhdGVUb0RhdGEoY2VydGlmaWNhdGVDaGFpbi5maXJzdCgpKS5nZXQoKSk7
CiAjZW5kaWYKIAotICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKGRvbWFpbiwgZXJy
b3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAK
</data>
<flag name="review"
          id="179678"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>