<?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>126025</bug_id>
          
          <creation_ts>2013-12-19 15:58:15 -0800</creation_ts>
          <short_desc>Storing new CopiedSpace memory into a JSObject should fire a write barrier</short_desc>
          <delta_ts>2014-01-02 14:53:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          
          <blocked>121074</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961600</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-12-19 15:58:15 -0800</bug_when>
    <thetext>Technically this is creating a pointer between a (potentially) old generation object and a young generation chunk of memory, thus there needs to be a barrier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962176</commentid>
    <comment_count>1</comment_count>
      <attachid>219830</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-12-20 19:01:25 -0800</bug_when>
    <thetext>Created attachment 219830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962196</commentid>
    <comment_count>2</comment_count>
      <attachid>219830</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-20 20:37:13 -0800</bug_when>
    <thetext>Comment on attachment 219830
Patch

Attachment 219830 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/49728087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962197</commentid>
    <comment_count>3</comment_count>
      <attachid>219830</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-20 20:47:17 -0800</bug_when>
    <thetext>Comment on attachment 219830
Patch

Attachment 219830 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/45518107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963857</commentid>
    <comment_count>4</comment_count>
      <attachid>220245</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-02 13:19:27 -0800</bug_when>
    <thetext>Created attachment 220245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963858</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-02 13:21:01 -0800</bug_when>
    <thetext>Attachment 220245 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/heap/CopyWriteBarrier.h&apos;, u&apos;Source/JavaScriptCore/heap/Heap.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSArray.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Structure.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2388:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963859</commentid>
    <comment_count>6</comment_count>
      <attachid>220245</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-02 13:23:59 -0800</bug_when>
    <thetext>Comment on attachment 220245
Patch

Attachment 220245 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5114447056076800</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963862</commentid>
    <comment_count>7</comment_count>
      <attachid>220247</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-02 13:31:37 -0800</bug_when>
    <thetext>Created attachment 220247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963864</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-02 13:32:41 -0800</bug_when>
    <thetext>Attachment 220247 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/heap/CopyWriteBarrier.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSArray.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Structure.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2388:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963867</commentid>
    <comment_count>9</comment_count>
      <attachid>220248</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-02 13:45:55 -0800</bug_when>
    <thetext>Created attachment 220248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963868</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-02 13:47:29 -0800</bug_when>
    <thetext>Attachment 220248 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/heap/CopyWriteBarrier.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSArray.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/MapData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/Structure.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2388:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963881</commentid>
    <comment_count>11</comment_count>
      <attachid>220248</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-02 14:18:54 -0800</bug_when>
    <thetext>Comment on attachment 220248
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963908</commentid>
    <comment_count>12</comment_count>
      <attachid>220248</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-02 14:53:29 -0800</bug_when>
    <thetext>Comment on attachment 220248
Patch

Clearing flags on attachment: 220248

Committed r161230: &lt;http://trac.webkit.org/changeset/161230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963909</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-02 14:53:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219830</attachid>
            <date>2013-12-20 19:01:25 -0800</date>
            <delta_ts>2014-01-02 13:19:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126025-20131220190113.patch</filename>
            <type>text/plain</type>
            <size>16461</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwOTU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEzLTEyLTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcmluZyBuZXcgQ29waWVkU3BhY2UgbWVtb3J5IGludG8gYSBKU09iamVjdCBz
aG91bGQgZmlyZSBhIHdyaXRlIGJhcnJpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlY2huaWNhbGx5IHRoaXMgaXMgY3JlYXRpbmcgYSBwb2ludGVy
IGJldHdlZW4gYSAocG90ZW50aWFsbHkpIG9sZCBnZW5lcmF0aW9uIG9iamVjdCBhbmQgYSB5b3Vu
ZyAKKyAgICAgICAgZ2VuZXJhdGlvbiBjaHVuayBvZiBtZW1vcnksIHRodXMgdGhlcmUgbmVlZHMg
dG8gYmUgYSBiYXJyaWVyLgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpK
U0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnVudmFsaWRhdGVkU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdoZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhpc3Rz
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxVbmRlY2lkZWQpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbEludDMyKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
Y3JlYXRlSW5pdGlhbENvbnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRl
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRU
b0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0Fy
cmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJh
eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0Fy
cmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0
aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkaWRSZXBsYWNl
T2xkQnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZEJ1
dHRlcmZseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlm
TmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKToKKyAgICAgICAgKiBydW50aW1lL01hcERhdGEuY3BwOgorICAgICAgICAoSlNDOjpN
YXBEYXRhOjplbnN1cmVTcGFjZUZvckFwcGVuZCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAp
OgorCiAyMDEzLTEyLTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgQ2xlYW4gdXAgREZHIHdyaXRlIGJhcnJpZXJzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTYwOTE5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyMSw4ICszMjEsOCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiB2
CiAKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5zZXRWZWN0b3JMZW5ndGgobmV3
VmVjdG9yTGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX2luZGV4
QmlhcyA9IG5ld0luZGV4QmlhczsKLQotICAgIG1fYnV0dGVyZmx5ID0gbmV3QnV0dGVyZmx5Owor
ICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZShuZXdCdXR0ZXJmbHkpOwor
ICAgIGRpZFJlcGxhY2VPbGRCdXR0ZXJmbHkodm0sIG5ld0J1dHRlcmZseSk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTg1NywxMCArODU3LDExIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENv
dW50V2l0aEFycmF5U3RvcmEKICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBzdG9yYWdlLT52
ZWN0b3JMZW5ndGgoKTsKIAogICAgIGlmIChtb3ZlRnJvbnQgJiYgc3RvcmFnZS0+bV9pbmRleEJp
YXMgPj0gY291bnQpIHsKLSAgICAgICAgbV9idXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHko
KS0+dW5zaGlmdChzdHJ1Y3R1cmUoKSwgY291bnQpOwotICAgICAgICBzdG9yYWdlID0gbV9idXR0
ZXJmbHktPmFycmF5U3RvcmFnZSgpOworICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9
IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT51bnNoaWZ0KHN0cnVjdHVyZSgpLCBjb3VudCk7CisgICAg
ICAgIHN0b3JhZ2UgPSBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAgICBzdG9y
YWdlLT5tX2luZGV4QmlhcyAtPSBjb3VudDsKICAgICAgICAgc3RvcmFnZS0+c2V0VmVjdG9yTGVu
Z3RoKHZlY3Rvckxlbmd0aCArIGNvdW50KTsKKyAgICAgICAgc2V0QnV0dGVyZmx5V2l0aG91dENo
YW5naW5nU3RydWN0dXJlKG5ld0J1dHRlcmZseSk7CiAgICAgfSBlbHNlIGlmICghbW92ZUZyb250
ICYmIHZlY3Rvckxlbmd0aCAtIGxlbmd0aCA+PSBjb3VudCkKICAgICAgICAgc3RvcmFnZSA9IHN0
b3JhZ2UtPmJ1dHRlcmZseSgpLT5hcnJheVN0b3JhZ2UoKTsKICAgICBlbHNlIGlmICh1bnNoaWZ0
Q291bnRTbG93Q2FzZShleGVjLT52bSgpLCBtb3ZlRnJvbnQsIGNvdW50KSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxNjA5MTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2
LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKQotICAgIFN0cnVjdHVyZSogdW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpOyB9CisgICAgU3RydWN0dXJlKiB1bnZhbGlkYXRl
ZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCk7
IH0KICNlbmRpZgogICAgICAgICAKICAgICBzdGF0aWMgY29uc3QgVHlwZWRBcnJheVR5cGUgVHlw
ZWRBcnJheVN0b3JhZ2VUeXBlID0gTm90VHlwZWRBcnJheTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE2MDkxOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTQ5LDExICs1NDksMTEgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5
SQogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRl
cmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5yZXNpemVBcnJheSh2bSwgdGhpcywgc3RydWN0
dXJlKCksIDAsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
bmV3QnV0dGVyZmx5KTsKLSAgICAKLSAgICBtX2J1dHRlcmZseSA9IG5ld0J1dHRlcmZseTsKICAg
ICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX2luZGV4QmlhcyA9IDA7CiAgICAgbmV3
QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+c2V0VmVjdG9yTGVuZ3RoKDApOwogICAgIG5ld0J1
dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwLnNldCh2bSwgdGhpcywgbWFwKTsK
KyAgICBzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUobmV3QnV0dGVyZmx5KTsK
KyAgICBkaWRSZXBsYWNlT2xkQnV0dGVyZmx5KHZtLCBuZXdCdXR0ZXJmbHkpOwogICAgIAogICAg
IHJldHVybiBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogfQpAQCAtNjE0LDYgKzYxNCw3
IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxVbmRlY2kKICAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3Ro
LCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2Nh
dGVVbmRlY2lkZWQpOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0
dXJlLCBuZXdCdXR0ZXJmbHkpOworICAgIGRpZFJlcGxhY2VPbGRCdXR0ZXJmbHkodm0sIG5ld0J1
dHRlcmZseSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseTsKIH0KIApAQCAtNjIzLDYgKzYyNCw3
IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGkKICAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3Ro
LCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2Nh
dGVJbnQzMik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUs
IG5ld0J1dHRlcmZseSk7CisgICAgZGlkUmVwbGFjZU9sZEJ1dHRlcmZseSh2bSwgbmV3QnV0dGVy
Zmx5KTsKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKTsKIH0KIApA
QCAtNjM0LDYgKzYzNiw3IEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0OjpjcmVhdGVJbml0
aWEKICAgICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwog
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5z
aXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZURvdWJsZSk7CiAgICAgc2V0U3RydWN0dXJl
QW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CisgICAgZGlkUmVw
bGFjZU9sZEJ1dHRlcmZseSh2bSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gbmV3QnV0dGVy
Zmx5LT5jb250aWd1b3VzRG91YmxlKCk7CiB9CiAKQEAgLTY0Myw2ICs2NDYsNyBAQCBDb250aWd1
b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRpCiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0
ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCwgc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSk7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91
cyk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1
dHRlcmZseSk7CisgICAgZGlkUmVwbGFjZU9sZEJ1dHRlcmZseSh2bSwgbmV3QnV0dGVyZmx5KTsK
ICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKQEAgLTY2NCw2ICs2
NjgsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhCiAgICAgcmVz
dWx0LT5tX2luZGV4QmlhcyA9IDA7CiAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHN0cnVjdHVyZSgp
LT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOwogICAgIHNldFN0cnVjdHVyZUFu
ZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0ZXJmbHkpOworICAgIGRpZFJlcGxh
Y2VPbGRCdXR0ZXJmbHkodm0sIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtNzMxLDYgKzczNiw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRl
Y2lkZWQKICAgICAKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9u
UHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlvbik7CiAgICAgc2V0
U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIHN0b3JhZ2UtPmJ1dHRlcmZs
eSgpKTsKKyAgICBkaWRSZXBsYWNlT2xkQnV0dGVyZmx5KHZtLCBzdG9yYWdlLT5idXR0ZXJmbHko
KSk7CiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CiAKQEAgLTc4OCw2ICs3OTQsNyBAQCBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FyCiAgICAgCiAgICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlKCksIHRyYW5zaXRpb24pOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3
U3RydWN0dXJlLCBuZXdTdG9yYWdlLT5idXR0ZXJmbHkoKSk7CisgICAgZGlkUmVwbGFjZU9sZEJ1
dHRlcmZseSh2bSwgbmV3U3RvcmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHJldHVybiBuZXdTdG9y
YWdlOwogfQogCkBAIC04NTcsNiArODY0LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29u
dmVydERvdWJsZVRvQQogICAgIAogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0
dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCB0cmFuc2l0aW9uKTsK
ICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3U3RvcmFn
ZS0+YnV0dGVyZmx5KCkpOworICAgIGRpZFJlcGxhY2VPbGRCdXR0ZXJmbHkodm0sIG5ld1N0b3Jh
Z2UtPmJ1dHRlcmZseSgpKTsKICAgICByZXR1cm4gbmV3U3RvcmFnZTsKIH0KIApAQCAtODg2LDYg
Kzg5NCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3UKICAgICAK
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlvbik7CiAgICAgc2V0U3RydWN0dXJlQW5k
QnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld1N0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKKyAg
ICBkaWRSZXBsYWNlT2xkQnV0dGVyZmx5KHZtLCBuZXdTdG9yYWdlLT5idXR0ZXJmbHkoKSk7CiAg
ICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9CiAKQEAgLTIzNTEsOCArMjM2MCw5IEBAIGJvb2wgSlNP
YmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKICAgICAgICAgICAgIEFycmF5U3RvcmFn
ZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9y
TGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV3QnV0dGVyZmx5KQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBtX2J1dHRlcmZseSA9IG5ld0J1dHRlcmZseTsKICAgICAgICAgbmV3
QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+c2V0VmVjdG9yTGVuZ3RoKG5ld1ZlY3Rvckxlbmd0
aCk7CisgICAgICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZShuZXdCdXR0
ZXJmbHkpOworICAgICAgICBkaWRSZXBsYWNlT2xkQnV0dGVyZmx5KHZtLCBuZXdCdXR0ZXJmbHkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0yMzY1LDEwICsyMzc1LDEw
IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKICAgICAgICAgbmV3
SW5kZXhCaWFzLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3RoKSk7
CiAgICAgaWYgKCFuZXdCdXR0ZXJmbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAg
ICBtX2J1dHRlcmZseSA9IG5ld0J1dHRlcmZseTsKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT5zZXRWZWN0b3JMZW5ndGgobmV3VmVjdG9yTGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJm
bHktPmFycmF5U3RvcmFnZSgpLT5tX2luZGV4QmlhcyA9IG5ld0luZGV4QmlhczsKKyAgICBzZXRC
dXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUobmV3QnV0dGVyZmx5KTsKKyAgICBkaWRS
ZXBsYWNlT2xkQnV0dGVyZmx5KHZtLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0yMzg3LDExICsyMzk3LDE0IEBAIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNs
b3coVk0mIHZtLCAKICAgICAgICAgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAgICAgb2xkVmVjdG9yTGVuZ3RoICogc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSwKICAgICAgICAgbmV3VmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSk7CisKKyAgICBtX2J1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKG5ld1Zl
Y3Rvckxlbmd0aCk7CisgICAgZGlkUmVwbGFjZU9sZEJ1dHRlcmZseSh2bSwgbV9idXR0ZXJmbHkp
OworCiAgICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFZlY3Rvckxlbmd0aDsgaSA8IG5ld1ZlY3Rvckxl
bmd0aDsgKytpKQogICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5k
YXRhKClbaV0gPSBRTmFOOwogICAgIH0KLSAgICBtX2J1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3Ro
KG5ld1ZlY3Rvckxlbmd0aCk7CiB9CiAKIEJ1dHRlcmZseSogSlNPYmplY3Q6Omdyb3dPdXRPZkxp
bmVTdG9yYWdlKFZNJiB2bSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNjA5MTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCisjaW5jbHVkZSAiSGVh
cC5oIgorI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlByb3BlcnR5U3RvcmFn
ZS5oIgpAQCAtNjA1LDEzICs2MDcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVpZnlTdGF0aWNG
dW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKTsKIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEJ1dHRlcmZseSogZ3Jvd091dE9mTGluZVN0b3JhZ2UoVk0mLCBzaXplX3Qgb2xkU2l6ZSwg
c2l6ZV90IG5ld1NpemUpOwotICAgIHZvaWQgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3Ry
dWN0dXJlKEJ1dHRlcmZseSopOyAvLyBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBjYWxsIHRo
aXMuCisgICAgdm9pZCBzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUoQnV0dGVy
Zmx5Kik7CiAgICAgICAgIAogICAgIHZvaWQgc2V0U3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgdm9pZCBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkoVk0mLCBTdHJ1Y3R1cmUqLCBCdXR0
ZXJmbHkqKTsKICAgICB2b2lkIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNl
c3NhcnkoVk0mLCB1bnNpZ25lZCBvbGRDYXBhY2l0eSwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBz
ZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KFZNJiwgU3RydWN0dXJl
Kik7CiAKKyAgICB2b2lkIGRpZFJlcGxhY2VPbGRCdXR0ZXJmbHkoVk0mLCBCdXR0ZXJmbHkqKTsK
KwogICAgIHZvaWQgZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgc3RydWN0dXJlKCktPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCB0aGlzKTsKQEAg
LTExMzMsOCArMTEzNywxOSBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3RhbmNl
KCkgCiAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBFcnJvcklu
c3RhbmNlVHlwZTsKIH0KIAoraW5saW5lIHZvaWQgSlNPYmplY3Q6OmRpZFJlcGxhY2VPbGRCdXR0
ZXJmbHkoVk0mIHZtLCBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSkKK3sKKyNpZiBFTkFCTEUoR0dD
KQorICAgIGlmICghbmV3QnV0dGVyZmx5KQorICAgICAgICByZXR1cm47CisgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIodGhpcyk7CisjZW5kaWYKK30KKwogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNl
dFN0cnVjdHVyZUFuZEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSkKIHsKKyAgICBBU1NFUlQoc3RydWN0dXJlKTsKKyAgICBBU1NFUlQo
IWJ1dHRlcmZseSA9PSAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0
dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzKSkpOwogICAgIG1fYnV0dGVyZmx5ID0gYnV0dGVy
Zmx5OwogICAgIHNldFN0cnVjdHVyZSh2bSwgc3RydWN0dXJlKTsKIH0KQEAgLTEzMDMsMTAgKzEz
MTgsMTUgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAg
ICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0
ZXJmbHkgPSBtX2J1dHRlcmZseTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jv
d091dE9mTGluZVN0b3JhZ2UoKSkKKyAgICAgICAgYm9vbCBkaWRBbGxvY2F0ZU5ld0J1dHRlcmZs
eSA9IGZhbHNlOworICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5l
U3RvcmFnZSgpKSB7CiAgICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3Rv
cmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5z
dWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBkaWRB
bGxvY2F0ZU5ld0J1dHRlcmZseSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0g
c3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgIHNldFN0cnVjdHVyZUFu
ZEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlKCksIG5ld0J1dHRlcmZseSk7CisgICAgICAgIGlmIChk
aWRBbGxvY2F0ZU5ld0J1dHRlcmZseSkKKyAgICAgICAgICAgIGRpZFJlcGxhY2VPbGRCdXR0ZXJm
bHkodm0sIG5ld0J1dHRlcmZseSk7CiAKICAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsK
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwpAQCAt
MTMyNCwxMiArMTM0NCwxOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwoCiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKICAgICAgICAg
RGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZs
eSA9IG1fYnV0dGVyZmx5OwotICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgYm9vbCBkaWRBbGxvY2F0ZU5ld0J1dHRl
cmZseSA9IGZhbHNlOworICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0
aGlzLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZM
aW5lU3RvcmFnZSh2bSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpOworICAgICAgICAgICAgZGlkQWxsb2NhdGVOZXdCdXR0ZXJmbHkgPSB0cnVlOworICAg
ICAgICB9CiAKICAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgc2V0U3RydWN0dXJl
QW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CisgICAgICAgIGlmIChk
aWRBbGxvY2F0ZU5ld0J1dHRlcmZseSkKKyAgICAgICAgICAgIGRpZFJlcGxhY2VPbGRCdXR0ZXJm
bHkodm0sIG5ld0J1dHRlcmZseSk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1
ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGgg
c3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBz
byBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtMTQwMiw2ICsxNDI4
LDcgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZFJlYQogICAgIEJ1dHRl
cmZseSogbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2UoCiAgICAgICAgIHZtLCBv
bGRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICBzZXRT
dHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKKyAg
ICBkaWRSZXBsYWNlT2xkQnV0dGVyZmx5KHZtLCBuZXdCdXR0ZXJmbHkpOwogfQogCiBpbmxpbmUg
dm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2Fy
eShWTSYgdm0sIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQpAQCAtMTQzNywxMCArMTQ2NCwxNSBA
QCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyCiAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAh
KGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0g
bV9idXR0ZXJmbHk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd091dE9mTGluZVN0
b3JhZ2UoKSkKKyAgICBib29sIGRpZEFsbG9jYXRlTmV3QnV0dGVyZmx5ID0gZmFsc2U7CisgICAg
aWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKSkgewogICAgICAg
ICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91
dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9y
YWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIGRpZEFsbG9jYXRlTmV3QnV0dGVyZmx5ID0gdHJ1ZTsK
KyAgICB9CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2Fs
bGFibGVPYmplY3QodmFsdWUpKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0
cnVjdHVyZSgpLCBuZXdCdXR0ZXJmbHkpOworICAgIGlmIChkaWRBbGxvY2F0ZU5ld0J1dHRlcmZs
eSkKKyAgICAgICAgZGlkUmVwbGFjZU9sZEJ1dHRlcmZseSh2bSwgbmV3QnV0dGVyZmx5KTsKICAg
ICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcAkocmV2aXNpb24gMTYwOTE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
OCwxNiArMTk4LDE3IEBAIENoZWNrZWRCb29sZWFuIE1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXAK
IAogICAgIHNpemVfdCByZXF1aXJlZFNpemUgPSBzdGQ6Om1heChtX2NhcGFjaXR5ICsgKG1fY2Fw
YWNpdHkgLyAyKSArIDEsIG1pbmltdW1NYXBTaXplKTsKICAgICB2b2lkKiBuZXdTdG9yYWdlID0g
MDsKKyAgICBEZWZlckdDIGRlZmVyKCpjYWxsRnJhbWUtPmhlYXAoKSk7CiAgICAgaWYgKCFjYWxs
RnJhbWUtPmhlYXAoKS0+dHJ5QWxsb2NhdGVTdG9yYWdlKHRoaXMsIHJlcXVpcmVkU2l6ZSAqIHNp
emVvZihFbnRyeSksICZuZXdTdG9yYWdlKSkgewogICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJy
b3IoY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBEZWZlckdD
IGRlZmVyKCpjYWxsRnJhbWUtPmhlYXAoKSk7CiAgICAgRW50cnkqIG5ld0VudHJpZXMgPSBzdGF0
aWNfY2FzdDxFbnRyeSo+KG5ld1N0b3JhZ2UpOwogICAgIGlmIChzaG91bGRQYWNrKCkpCiAgICAg
ICAgIHJlcGxhY2VBbmRQYWNrQmFja2luZ1N0b3JlKG5ld0VudHJpZXMsIHJlcXVpcmVkU2l6ZSk7
CiAgICAgZWxzZQogICAgICAgICByZXBsYWNlQmFja2luZ1N0b3JlKG5ld0VudHJpZXMsIHJlcXVp
cmVkU2l6ZSk7CisgICAgY2FsbEZyYW1lLT5oZWFwKCktPndyaXRlQmFycmllcih0aGlzKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNjA5MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNyArMjczLDcg
QEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoVgogICAgIGZpbmRTdHJ1
Y3R1cmVzQW5kTWFwRm9yTWF0ZXJpYWxpemF0aW9uKHN0cnVjdHVyZXMsIHN0cnVjdHVyZSwgdGFi
bGUpOwogICAgIAogICAgIGlmICh0YWJsZSkgewotICAgICAgICB0YWJsZSA9IHRhYmxlLT5jb3B5
KHZtLCAwLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBh
Y2l0eSkpOworICAgICAgICB0YWJsZSA9IHRhYmxlLT5jb3B5KHZtLCBzdHJ1Y3R1cmUsIG51bWJl
ck9mU2xvdHNGb3JMYXN0T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KSk7CiAgICAg
ICAgIHN0cnVjdHVyZS0+bV9sb2NrLnVubG9jaygpOwogICAgIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220245</attachid>
            <date>2014-01-02 13:19:27 -0800</date>
            <delta_ts>2014-01-02 13:31:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126025-20140102131952.patch</filename>
            <type>text/plain</type>
            <size>32051</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxMjIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDE0LTAxLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcmluZyBuZXcgQ29waWVkU3BhY2UgbWVtb3J5IGludG8gYSBKU09iamVjdCBz
aG91bGQgZmlyZSBhIHdyaXRlIGJhcnJpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlY2huaWNhbGx5IHRoaXMgaXMgY3JlYXRpbmcgYSBwb2ludGVy
IGJldHdlZW4gYSAocG90ZW50aWFsbHkpIG9sZCBnZW5lcmF0aW9uIG9iamVjdCBhbmQgYSB5b3Vu
ZyAKKyAgICAgICAgZ2VuZXJhdGlvbiBjaHVuayBvZiBtZW1vcnksIHRodXMgdGhlcmUgbmVlZHMg
dG8gYmUgYSBiYXJyaWVyLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaGVhcC9Db3B5V3JpdGVCYXJyaWVyLmg6IEFkZGVkLiBUaGlzIGNsYXNzIGZ1bmN0aW9ucyBz
aW1pbGFybHkgdG8gdGhlIFdyaXRlQmFycmllciBjbGFzcy4gSXQgCisgICAgICAgIGFjdHMgYXMg
YSBwcm94eSBmb3IgcG9pbnRlcnMgdG8gQ29waWVkU3BhY2UuIEFzc2lnbm1lbnRzIHRvIHRoZSBm
aWVsZCBjYXVzZSBhIHdyaXRlIGJhcnJpZXIgdG8gCisgICAgICAgIGZpcmUgZm9yIHRoZSBvYmpl
Y3QgdGhhdCBpcyB0aGUgb3duZXIgb2YgdGhlIENvcGllZFNwYWNlIG1lbW9yeS4gVGhpcyBpcyB0
byBlbnN1cmUgZHVyaW5nIG51cnNlcnkgCisgICAgICAgIGNvbGxlY3Rpb25zIHRoYXQgb2JqZWN0
cyB3aXRoIG5ldyBiYWNraW5nIHN0b3JlcyBhcmUgdmlzaXRlZCwgZXZlbiBpZiB0aGV5IGFyZSBv
bGQgZ2VuZXJhdGlvbiBvYmplY3RzLiAKKyAgICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6
Q29weVdyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6Om9wZXJh
dG9yISk6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6Om9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUqKToKKyAgICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKEpTQzo6
Q29weVdyaXRlQmFycmllcjo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJh
cnJpZXI6OnNldCk6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6OnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpDb3B5V3JpdGVCYXJyaWVyOjpjbGVhcik6Cisg
ICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50U2xvd0Nhc2UpOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dW52YWxpZGF0ZWRTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzbG93RG93bkFuZFdh
c3RlTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNvcHlCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9k
ZVdoZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhpc3RzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpj
cmVhdGVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdp
dGhvdXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvdW50RWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YnV0dGVyZmx5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6CisgICAgICAgIChK
U0M6Ok1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcCk6CisKIDIwMTMtMTItMjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWZhY3RvciBQdXRQcm9wZXJ0eVNsb3QgdG8gYmUgYXdhcmUgb2YgY3VzdG9tIHBy
b3BlcnRpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTAyLDYgKzUwMiw3IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9ySW5s
aW5lcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvci5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXb3JrTGlzdC5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3B5V3JpdGVCYXJyaWVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvRGVmZXJHQy5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05
ODQsNiArOTg0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZpc2l0
b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZpc2l0b3JJbmxp
bmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcHlXb3JrTGlzdC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fzc2VydGlvbnMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTYy
OCw2ICsxNjI4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVdvcmtM
aXN0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcHlXcml0ZUJhcnJpZXIuaCI+CisgICAg
ICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcRGVmZXJHQy5oIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcg
QEAKIAkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTFCNTc0MTc2
QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJCTJBNEVDOTBC
MTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0RUM5MDkxODYwRDZDMjAwOTRGNzgy
IC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgKi87IH07CiAJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJp
ZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgfTsKIAkJMkE2RjQ2MjYxN0U5NTlD
RTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkE3QTU4RUYxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8q
IERlZmVyR0MuY3BwICovOyB9OwogCQkyQUFEOTY0QTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJz
aXZlQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQUFEOTY0OTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJzaXZlQWxsb2NhdGlv
blNjb3BlLmggKi87IH07CkBAIC0yMDI3LDYgKzIwMjgsNyBAQAogCQkyQTI4MjVDRjE4MzQxRjJE
MDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWxheWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBNEVDOTA5MTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE0RUM5MEExODYwRDZDMjAwOTRG
NzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXcml0ZUJhcnJpZXJCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFEOTY0OTE4NTY5NDE3MDAxRjkz
QkUgLyogUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzIxMiw2ICszMjE0LDcgQEAKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2
MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLAogCQkJCTJBMjgyNUNGMTgzNDFGMkQwMDg3
RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi8sCiAJCQkJMkFBRDk2NDkxODU2OTQxNzAw
MUY5M0JFIC8qIFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oICovLAorCQkJCTJBNjgyOTVBMTg3
NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDcxMiw2ICs0NzE1LDcgQEAK
IAkJCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUJBMTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUw
MEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMyMENC
NjE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyog
SklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MSw3
ICs4NTEsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCCiAKICAg
ICBBU1NFUlQoIW9iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAg
IEJ1dHRlcmZseSogcmVzdWx0ID0gb2JqZWN0LT5ncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwg
aW5pdGlhbE91dE9mTGluZUNhcGFjaXR5KTsKLSAgICBvYmplY3QtPnNldEJ1dHRlcmZseVdpdGhv
dXRDaGFuZ2luZ1N0cnVjdHVyZShyZXN1bHQpOworICAgIG9iamVjdC0+c2V0QnV0dGVyZmx5V2l0
aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCByZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCkBAIC04NjEsNyArODYxLDcgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gb2JqZWN0LT5n
cm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwgbmV3U2l6ZSk7Ci0gICAgb2JqZWN0LT5zZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdp
bmdTdHJ1Y3R1cmUocmVzdWx0KTsKKyAgICBvYmplY3QtPnNldEJ1dHRlcmZseVdpdGhvdXRDaGFu
Z2luZ1N0cnVjdHVyZSh2bSwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4ocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29w
eVdyaXRlQmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlXcml0ZUJhcnJpZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcHlXcml0ZUJhcnJpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDb3B5V3JpdGVCYXJyaWVyX2gKKyNkZWZpbmUgQ29weVdy
aXRlQmFycmllcl9oCisKKyNpbmNsdWRlICJIZWFwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvcHlXcml0ZUJhcnJpZXIgeworcHVibGljOgor
ICAgIENvcHlXcml0ZUJhcnJpZXIoKQorICAgICAgICA6IG1fdmFsdWUoMCkKKyAgICB7CisgICAg
fQorICAgIAorICAgIENvcHlXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVy
LCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMtPnNldCh2bSwgb3duZXIsICZ2YWx1ZSk7
CisgICAgfQorICAgIAorICAgIENvcHlXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMtPnNldCh2bSwgb3duZXIsIHZh
bHVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAh
bV92YWx1ZTsgfQorICAgIAorICAgIHR5cGVkZWYgVCogKENvcHlXcml0ZUJhcnJpZXI6OipVbnNw
ZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWUgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5
cGUqPigxKSA6IDA7IH0KKyAgICAKKyAgICBUKiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fdmFsdWU7CisgICAgfQorICAgIAorICAgIFQqIG9wZXJhdG9yKigpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gZ2V0KCk7CisgICAgfQorICAgIAorICAgIFQqIG9wZXJhdG9y
LT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldCgpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHNldChWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVlKQorICAgIHsK
KyAgICAgICAgdGhpcy0+bV92YWx1ZSA9IHZhbHVlOworICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcihvd25lcik7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmll
cihUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMtPm1fdmFsdWUgPSB2YWx1ZTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjbGVhcigpIHsgbV92YWx1ZSA9IDA7IH0KKworcHJpdmF0ZToKKyAg
ICBUKiBtX3ZhbHVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb3B5
V3JpdGVCYXJyaWVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9u
IDE2MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtOTcsNyArOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJv
b2wgaXNXcml0ZUJhcnJpZXJFbmFibGVkKCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHdyaXRlQmFy
cmllcihjb25zdCBKU0NlbGwqKTsKICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNv
bnN0IEpTQ2VsbCosIEpTVmFsdWUpOwotICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIo
Y29uc3QgSlNDZWxsKiwgSlNDZWxsKik7CisgICAgICAgIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0
IEpTQ2VsbCosIEpTQ2VsbCopOwogICAgICAgICBzdGF0aWMgdWludDhfdCogYWRkcmVzc09mQ2Fy
ZEZvcihKU0NlbGwqKTsKIAogI2lmIEVOQUJMRShHR0MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMSw4
ICszMjEsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiB2CiAKICAg
ICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5zZXRWZWN0b3JMZW5ndGgobmV3VmVjdG9y
TGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX2luZGV4QmlhcyA9
IG5ld0luZGV4QmlhczsKLQotICAgIG1fYnV0dGVyZmx5ID0gbmV3QnV0dGVyZmx5OworICAgIHNl
dEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2bSwgbmV3QnV0dGVyZmx5KTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzIwLDcgKzcxOSw3IEBAIGJvb2wgSlNBcnJheTo6c2hp
ZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UKICAgICAgICAgLy8gQWRqdXN0IHRoZSBCdXR0ZXJmbHkg
YW5kIHRoZSBpbmRleCBiaWFzLiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBoZXJlIGJlY2F1c2Ug
d2UncmUgY2hhbmdpbmcKICAgICAgICAgLy8gdGhlIHN0YXJ0IG9mIHRoZSBCdXR0ZXJmbHksIHdo
aWNoIG5lZWRzIHRvIHBvaW50IGF0IHRoZSBmaXJzdCBpbmRleGVkIHByb3BlcnR5IGluIHRoZSB1
c2VkCiAgICAgICAgIC8vIHBvcnRpb24gb2YgdGhlIHZlY3Rvci4KLSAgICAgICAgbV9idXR0ZXJm
bHkgPSBtX2J1dHRlcmZseS0+c2hpZnQoc3RydWN0dXJlKCksIGNvdW50KTsKKyAgICAgICAgbV9i
dXR0ZXJmbHkuc2V0V2l0aG91dFdyaXRlQmFycmllcihtX2J1dHRlcmZseS0+c2hpZnQoc3RydWN0
dXJlKCksIGNvdW50KSk7CiAgICAgICAgIHN0b3JhZ2UgPSBtX2J1dHRlcmZseS0+YXJyYXlTdG9y
YWdlKCk7CiAgICAgICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzICs9IGNvdW50OwogCkBAIC04NTcs
MTAgKzg1NiwxMSBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAg
ICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCk7CiAKICAg
ICBpZiAobW92ZUZyb250ICYmIHN0b3JhZ2UtPm1faW5kZXhCaWFzID49IGNvdW50KSB7Ci0gICAg
ICAgIG1fYnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnVuc2hpZnQoc3RydWN0dXJl
KCksIGNvdW50KTsKLSAgICAgICAgc3RvcmFnZSA9IG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KTsKKyAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHko
KS0+dW5zaGlmdChzdHJ1Y3R1cmUoKSwgY291bnQpOworICAgICAgICBzdG9yYWdlID0gbmV3QnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgc3RvcmFnZS0+bV9pbmRleEJpYXMgLT0g
Y291bnQ7CiAgICAgICAgIHN0b3JhZ2UtPnNldFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGggKyBj
b3VudCk7CisgICAgICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZShleGVj
LT52bSgpLCBuZXdCdXR0ZXJmbHkpOwogICAgIH0gZWxzZSBpZiAoIW1vdmVGcm9udCAmJiB2ZWN0
b3JMZW5ndGggLSBsZW5ndGggPj0gY291bnQpCiAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdlLT5i
dXR0ZXJmbHkoKS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgZWxzZSBpZiAodW5zaGlmdENvdW50U2xv
d0Nhc2UoZXhlYy0+dm0oKSwgbW92ZUZyb250LCBjb3VudCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgICAgICAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
LSAgICBTdHJ1Y3R1cmUqIHVudmFsaWRhdGVkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1
cmUudW52YWxpZGF0ZWRHZXQoKTsgfQorICAgIFN0cnVjdHVyZSogdW52YWxpZGF0ZWRTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpOyB9CiAjZW5k
aWYKICAgICAgICAgCiAgICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVkQXJyYXlT
dG9yYWdlVHlwZSA9IE5vdFR5cGVkQXJyYXk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAkocmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwNiwx
NSArNTA2LDE2IEBAIEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGEKICAg
ICBzaXplX3Qgc2l6ZSA9IHRoaXNPYmplY3QtPmJ5dGVTaXplKCk7CiAgICAgCiAgICAgaWYgKHRo
aXNPYmplY3QtPm1fbW9kZSA9PSBGYXN0VHlwZWRBcnJheQotICAgICAgICAmJiAhdGhpc09iamVj
dC0+bV9idXR0ZXJmbHkgJiYgc2l6ZSA+PSBzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSB7CisgICAg
ICAgICYmICF0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKSAmJiBzaXplID49IHNpemVvZihJbmRleGlu
Z0hlYWRlcikpIHsKICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1fdmVjdG9yKTsKICAgICAg
ICAgLy8gUmV1c2UgYWxyZWFkeSBhbGxvY2F0ZWQgbWVtb3J5IGlmIGF0IGFsbCBwb3NzaWJsZS4K
LSAgICAgICAgdGhpc09iamVjdC0+bV9idXR0ZXJmbHkgPQotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8SW5kZXhpbmdIZWFkZXIqPih0aGlzT2JqZWN0LT5tX3ZlY3RvciktPmJ1dHRlcmZseSgpOwor
ICAgICAgICB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKAor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SW5kZXhpbmdIZWFkZXIqPih0aGlzT2JqZWN0LT5tX3Zl
Y3RvciktPmJ1dHRlcmZseSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICB0aGlzT2JqZWN0LT5t
X2J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAgICAgICAg
ICAgIHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5LCAqaGVhcC0+dm0oKSwgdGhpc09iamVjdCwgdGhp
c09iamVjdC0+c3RydWN0dXJlKCksCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsIDApOworICAgICAgICBWTSYgdm0gPSAq
aGVhcC0+dm0oKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9idXR0ZXJmbHkuc2V0KHZtLCB0aGlz
T2JqZWN0LCBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0FycmF5UmlnaHQoCisgICAgICAgICAgICB0
aGlzT2JqZWN0LT5idXR0ZXJmbHkoKSwgdm0sIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLAorICAgICAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCksIGZhbHNlLCAwLCAwKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgSlNPYmplY3Q6OmNvcHlCdXR0ZXJmCiAgICAgICAgICAgICBtZW1jcHkoY3VycmVu
dFRhcmdldCwgY3VycmVudFNvdXJjZSwgY291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9idXR0ZXJmbHkgPSBuZXdCdXR0ZXJmbHk7
CisgICAgICAgIG1fYnV0dGVyZmx5LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIobmV3QnV0dGVyZmx5
KTsKICAgICAgICAgdmlzaXRvci5kaWRDb3B5KGJ1dHRlcmZseS0+YmFzZShwcmVDYXBhY2l0eSwg
cHJvcGVydHlDYXBhY2l0eSksIGNhcGFjaXR5SW5CeXRlcyk7CiAgICAgfSAKIH0KQEAgLTI4Myw3
ICsyODMsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4CiAgICAg
ICAgIAogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX0NP
TlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkg
PSB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseTsKKyAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkg
PSB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC0y
OTcsNyArMjk3LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleAog
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Ci0g
ICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+bV9idXR0ZXJmbHk7Cisg
ICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAg
ICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgSlNPYmplY3Q6
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCAKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxM
X0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseTsKKyAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA+
PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGJ1dHRlcmZseS0+Y29udGlndW91cygpW3Byb3BlcnR5TmFtZV0uc2V0KGV4ZWMtPnZtKCksIHRo
aXNPYmplY3QsIHZhbHVlKTsKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwgCiAgICAgICAgICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPm1f
YnV0dGVyZmx5OworICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1
dHRlcmZseSgpOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1dHRlcmZseS0+dmVjdG9y
TGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKClbcHJvcGVydHlOYW1lXSA9IHZhbHVlQXNEb3VibGU7CkBAIC01NDksMTEgKzU0
OSwxMCBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJCiAgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3Rv
cmFnZS0+YnV0dGVyZmx5KCktPnJlc2l6ZUFycmF5KHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgMCwg
QXJyYXlTdG9yYWdlOjpzaXplRm9yKDApKTsKICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0ZXJm
bHkpOwotICAgIAotICAgIG1fYnV0dGVyZmx5ID0gbmV3QnV0dGVyZmx5OwogICAgIG5ld0J1dHRl
cmZseS0+YXJyYXlTdG9yYWdlKCktPm1faW5kZXhCaWFzID0gMDsKICAgICBuZXdCdXR0ZXJmbHkt
PmFycmF5U3RvcmFnZSgpLT5zZXRWZWN0b3JMZW5ndGgoMCk7CiAgICAgbmV3QnV0dGVyZmx5LT5h
cnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuc2V0KHZtLCB0aGlzLCBtYXApOworICAgIHNldEJ1
dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2bSwgbmV3QnV0dGVyZmx5KTsKICAgICAK
ICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKIH0KQEAgLTYwMSw3ICs2
MDAsNyBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsSW5kZXhlCiAgICAgQVNT
RVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0
aCA9IHN0ZDo6bWF4KGxlbmd0aCwgQkFTRV9WRUNUT1JfTEVOKTsKICAgICBCdXR0ZXJmbHkqIG5l
d0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAgICAgICAg
bV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRlcmZseS5nZXQoKSwgdm0sIHRo
aXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2Us
IDAsCiAgICAgICAgIGVsZW1lbnRTaXplICogdmVjdG9yTGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJm
bHktPnNldFB1YmxpY0xlbmd0aChsZW5ndGgpOwogICAgIG5ld0J1dHRlcmZseS0+c2V0VmVjdG9y
TGVuZ3RoKHZlY3Rvckxlbmd0aCk7CkBAIC02NTIsNyArNjUxLDcgQEAgQXJyYXlTdG9yYWdlKiBK
U09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYQogICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpOwogICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhh
c0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZs
eSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAgICAgICAgbV9idXR0ZXJm
bHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRlcmZseS5nZXQoKSwgdm0sIHRoaXMsIHN0cnVj
dHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCiAgICAg
ICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVChuZXdCdXR0ZXJmbHkpOwogCkBAIC0xMjk1LDcgKzEyOTQsNyBAQCBib29sIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDCiAgICAgICAgIAogICAgIGNhc2UgQUxMX0lOVDMy
X0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5tX2J1dHRlcmZs
eTsKKyAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHko
KTsKICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5jbGVh
cigpOwpAQCAtMTMwMyw3ICsxMzAyLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5H
X1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+bV9i
dXR0ZXJmbHk7CisgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+YnV0
dGVyZmx5KCk7CiAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91
YmxlKClbaV0gPSBRTmFOOwpAQCAtMTQ3OSw3ICsxNDc4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iagogICAgICAgICAKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRF
WElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0g
ICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gb2JqZWN0LT5tX2J1dHRlcmZseTsKKyAgICAg
ICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZseSgpOwogICAgICAgICB1
bnNpZ25lZCB1c2VkTGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZWRMZW5ndGg7ICsraSkgewogICAgICAgICAgICAg
aWYgKCFidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXSkKQEAgLTE0OTAsNyArMTQ4OSw3IEBAIHZv
aWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmoKICAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAgICAgICBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSA9IG9iamVjdC0+bV9idXR0ZXJmbHk7CisgICAgICAgIEJ1dHRlcmZseSogYnV0
dGVyZmx5ID0gb2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgdW5zaWduZWQgdXNlZExlbmd0
aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGJ1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwpAQCAtMTg3NCw3ICsxODczLDcgQEAgdm9p
ZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIAogICAgIGlmIChpID49
IE1BWF9BUlJBWV9JTkRFWCAtIDEKICAgICAgICAgfHwgKGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9J
TkRFWAotICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IoaSwgY291bnRFbGVt
ZW50czxpbmRleGluZ1NoYXBlPihtX2J1dHRlcmZseSkpKQorICAgICAgICAgICAgJiYgIWlzRGVu
c2VFbm91Z2hGb3JWZWN0b3IoaSwgY291bnRFbGVtZW50czxpbmRleGluZ1NoYXBlPihidXR0ZXJm
bHkoKSkpKQogICAgICAgICB8fCBpbmRleElzU3VmZmljaWVudGx5QmV5b25kTGVuZ3RoRm9yU3Bh
cnNlTWFwKGksIG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJU
KGkgPD0gTUFYX0FSUkFZX0lOREVYKTsKICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2
bSk7CkBAIC0yMzExLDEzICsyMzEwLDEzIEBAIHVuc2lnbmVkIEpTT2JqZWN0Ojpjb3VudEVsZW1l
bnRzKCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0lOVDMyX0lO
REVYSU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gY291bnRFbGVtZW50czxJbnQzMlNoYXBlPiht
X2J1dHRlcmZseSk7CisgICAgICAgIHJldHVybiBjb3VudEVsZW1lbnRzPEludDMyU2hhcGU+KGJ1
dHRlcmZseSgpKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVT
OgotICAgICAgICByZXR1cm4gY291bnRFbGVtZW50czxEb3VibGVTaGFwZT4obV9idXR0ZXJmbHkp
OworICAgICAgICByZXR1cm4gY291bnRFbGVtZW50czxEb3VibGVTaGFwZT4oYnV0dGVyZmx5KCkp
OwogICAgICAgICAKICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgotICAg
ICAgICByZXR1cm4gY291bnRFbGVtZW50czxDb250aWd1b3VzU2hhcGU+KG1fYnV0dGVyZmx5KTsK
KyAgICAgICAgcmV0dXJuIGNvdW50RWxlbWVudHM8Q29udGlndW91c1NoYXBlPihidXR0ZXJmbHko
KSk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CkBAIC0yMzUxLDgg
KzIzNTAsOCBAQCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiAgICAg
ICAgICAgICBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwgQXJyYXlTdG9yYWdl
OjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0aCkpOwogICAgICAgICBpZiAoIW5ld0J1dHRlcmZseSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9idXR0ZXJmbHkgPSBuZXdCdXR0
ZXJmbHk7CiAgICAgICAgIG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnNldFZlY3Rvckxl
bmd0aChuZXdWZWN0b3JMZW5ndGgpOworICAgICAgICBzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdp
bmdTdHJ1Y3R1cmUodm0sIG5ld0J1dHRlcmZseSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICAKQEAgLTIzNjUsMTAgKzIzNjQsOSBAQCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZl
Y3Rvckxlbmd0aChWTSYgCiAgICAgICAgIG5ld0luZGV4QmlhcywgdHJ1ZSwgQXJyYXlTdG9yYWdl
OjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0aCkpOwogICAgIGlmICghbmV3QnV0dGVyZmx5KQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgbV9idXR0ZXJmbHkgPSBuZXdCdXR0ZXJmbHk7
CiAgICAgbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+c2V0VmVjdG9yTGVuZ3RoKG5ld1Zl
Y3Rvckxlbmd0aCk7CiAgICAgbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9pbmRleEJp
YXMgPSBuZXdJbmRleEJpYXM7CisgICAgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0
dXJlKHZtLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMzgzLDE1
ICsyMzgxLDE3IEBAIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCAKICAg
ICAgICAgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7CiAgICAgdW5zaWduZWQgb2xkVmVjdG9y
TGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKLSAgICBtX2J1dHRlcmZseSA9IG1fYnV0dGVyZmx5LT5ncm93QXJyYXlSaWdo
dCgKKyAgICBtX2J1dHRlcmZseS5zZXQodm0sIHRoaXMsIG1fYnV0dGVyZmx5LT5ncm93QXJyYXlS
aWdodCgKICAgICAgICAgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAgICAgb2xkVmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSwKLSAgICAgICAgbmV3VmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSk7CisgICAgICAgIG5ld1ZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpKTsKKworICAgIG1fYnV0dGVyZmx5LT5zZXRWZWN0b3JMZW5ndGgobmV3VmVjdG9yTGVuZ3Ro
KTsKKwogICAgIGlmIChoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRWZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JM
ZW5ndGg7ICsraSkKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCku
ZGF0YSgpW2ldID0gUU5hTjsKICAgICB9Ci0gICAgbV9idXR0ZXJmbHktPnNldFZlY3Rvckxlbmd0
aChuZXdWZWN0b3JMZW5ndGgpOwogfQogCiBCdXR0ZXJmbHkqIEpTT2JqZWN0Ojpncm93T3V0T2ZM
aW5lU3RvcmFnZShWTSYgdm0sIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTYxMjEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTAgKzI3LDEzIEBACiAjaW5jbHVkZSAiQXJyYXlDb252ZW50aW9ucy5oIgog
I2luY2x1ZGUgIkFycmF5U3RvcmFnZS5oIgogI2luY2x1ZGUgIkJ1dHRlcmZseS5oIgorI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCi0jaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29weVdy
aXRlQmFycmllci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisj
aW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTdG9yYWdlLmgiCkBA
IC01MzksOCArNTQyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVu
c2FmZSgpOwogICAgIH0KICAgICAgICAgCi0gICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHko
KSBjb25zdCB7IHJldHVybiBtX2J1dHRlcmZseTsgfQotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5
KCkgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KKyAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5LmdldCgpOyB9CisgICAgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkoKSB7IHJldHVybiBtX2J1dHRlcmZseS5nZXQoKTsgfQogICAgICAgICAKICAgICBD
b25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9i
dXR0ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpOyB9CiAgICAgUHJvcGVydHlTdG9yYWdlIG91dE9m
TGluZVN0b3JhZ2UoKSB7IHJldHVybiBtX2J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCk7IH0K
QEAgLTYwNSw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9u
c0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQnV0
dGVyZmx5KiBncm93T3V0T2ZMaW5lU3RvcmFnZShWTSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3Qg
bmV3U2l6ZSk7Ci0gICAgdm9pZCBzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUo
QnV0dGVyZmx5Kik7IC8vIFlvdSBwcm9iYWJseSBkb24ndCB3YW50IHRvIGNhbGwgdGhpcy4KKyAg
ICB2b2lkIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZShWTSYsIEJ1dHRlcmZs
eSopOwogICAgICAgICAKICAgICB2b2lkIHNldFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSopOwog
ICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KFZNJiwgU3RydWN0dXJlKiwgQnV0dGVy
Zmx5Kik7CkBAIC05NzUsNyArOTc4LDcgQEAgcHJpdmF0ZToKICAgICBDb250aWd1b3VzSlNWYWx1
ZXMgZW5zdXJlQ29udGlndW91c1Nsb3coVk0mLCBEb3VibGVUb0NvbnRpZ3VvdXNNb2RlKTsKICAg
ICAKIHByb3RlY3RlZDoKLSAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OworICAgIENvcHlXcml0
ZUJhcnJpZXI8QnV0dGVyZmx5PiBtX2J1dHRlcmZseTsKIH07CiAKIC8vIEpTTm9uRmluYWxPYmpl
Y3QgaXMgYSB0eXBlIG9mIEpTT2JqZWN0IHRoYXQgaGFzIHNvbWUgaW50ZXJuYWwgc3RvcmFnZSwK
QEAgLTExMzUsNyArMTEzOCw5IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojppc0Vycm9ySW5zdGFu
Y2UoKSAKIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKLSAg
ICBtX2J1dHRlcmZseSA9IGJ1dHRlcmZseTsKKyAgICBBU1NFUlQoc3RydWN0dXJlKTsKKyAgICBB
U1NFUlQoIWJ1dHRlcmZseSA9PSAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAh
c3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzKSkpOworICAgIG1fYnV0dGVyZmx5LnNl
dCh2bSwgdGhpcywgYnV0dGVyZmx5KTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSk7
CiB9CiAKQEAgLTExNDYsOSArMTE1MSw5IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1
Y3R1cmUoVk0mIHYKICAgICBKU0NlbGw6OnNldFN0cnVjdHVyZSh2bSwgc3RydWN0dXJlKTsKIH0K
IAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVj
dHVyZShCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRCdXR0
ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSkKIHsKLSAgICBtX2J1dHRlcmZseSA9IGJ1dHRlcmZseTsKKyAgICBtX2J1dHRlcmZseS5zZXQo
dm0sIHRoaXMsIGJ1dHRlcmZseSk7CiB9CiAKIGlubGluZSBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEpCkBAIC0xMTc4LDcgKzExODMsNyBAQCBp
bmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAKIGlubGluZSBKU09iamVj
dDo6SlNPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0
ZXJmbHkpCiAgICAgOiBKU0NlbGwodm0sIHN0cnVjdHVyZSkKLSAgICAsIG1fYnV0dGVyZmx5KGJ1
dHRlcmZseSkKKyAgICAsIG1fYnV0dGVyZmx5KHZtLCB0aGlzLCBidXR0ZXJmbHkpCiB7CiAgICAg
dm0uaGVhcC5hc2NyaWJlT3duZXIodGhpcywgYnV0dGVyZmx5KTsKIH0KQEAgLTEzMDIsNyArMTMw
Nyw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0g
ICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7CisgICAgICAgIEJ1
dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gYnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChzdHJ1Y3R1
cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCiAgICAgICAgICAgICBuZXdCdXR0
ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNp
dHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24p
OwpAQCAtMTMyMyw5ICsxMzI4LDExIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bnRlcm5hbCgKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9m
TGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVy
ZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkp
IHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAgICBCdXR0ZXJmbHkq
IG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5OwotICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5
ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgQnV0dGVyZmx5KiBu
ZXdCdXR0ZXJmbHkgPSBidXR0ZXJmbHkoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAh
PSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUgIT0gdGhpcy0+c3RydWN0dXJlKCkpOwogICAgICAgICAgICAgbmV3QnV0dGVyZmx5
ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0
KG9mZnNldCk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7CkBAIC0xNDM2LDcgKzE0NDMsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
V2l0aG91dFRyCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFTU0VSVCgh
dmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAg
IEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7CisgICAgQnV0dGVyZmx5KiBu
ZXdCdXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICBpZiAoc3RydWN0dXJlKCktPnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQogICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93
T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0
cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3Qo
dmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuY3Bw
CShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDE2ICsxOTgsMTcgQEAgQ2hlY2tlZEJvb2xl
YW4gTWFwRGF0YTo6ZW5zdXJlU3BhY2VGb3JBcAogCiAgICAgc2l6ZV90IHJlcXVpcmVkU2l6ZSA9
IHN0ZDo6bWF4KG1fY2FwYWNpdHkgKyAobV9jYXBhY2l0eSAvIDIpICsgMSwgbWluaW11bU1hcFNp
emUpOwogICAgIHZvaWQqIG5ld1N0b3JhZ2UgPSAwOworICAgIERlZmVyR0MgZGVmZXIoKmNhbGxG
cmFtZS0+aGVhcCgpKTsKICAgICBpZiAoIWNhbGxGcmFtZS0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0
b3JhZ2UodGhpcywgcmVxdWlyZWRTaXplICogc2l6ZW9mKEVudHJ5KSwgJm5ld1N0b3JhZ2UpKSB7
CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIERlZmVyR0MgZGVmZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsK
ICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19jYXN0PEVudHJ5Kj4obmV3U3RvcmFnZSk7
CiAgICAgaWYgKHNob3VsZFBhY2soKSkKICAgICAgICAgcmVwbGFjZUFuZFBhY2tCYWNraW5nU3Rv
cmUobmV3RW50cmllcywgcmVxdWlyZWRTaXplKTsKICAgICBlbHNlCiAgICAgICAgIHJlcGxhY2VC
YWNraW5nU3RvcmUobmV3RW50cmllcywgcmVxdWlyZWRTaXplKTsKKyAgICBjYWxsRnJhbWUtPmhl
YXAoKS0+d3JpdGVCYXJyaWVyKHRoaXMpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE2
MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcChWCiAgICAgZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRp
b24oc3RydWN0dXJlcywgc3RydWN0dXJlLCB0YWJsZSk7CiAgICAgCiAgICAgaWYgKHRhYmxlKSB7
Ci0gICAgICAgIHRhYmxlID0gdGFibGUtPmNvcHkodm0sIDAsIG51bWJlck9mU2xvdHNGb3JMYXN0
T2Zmc2V0KG1fb2Zmc2V0LCBtX2lubGluZUNhcGFjaXR5KSk7CisgICAgICAgIHRhYmxlID0gdGFi
bGUtPmNvcHkodm0sIHN0cnVjdHVyZSwgbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZz
ZXQsIG1faW5saW5lQ2FwYWNpdHkpKTsKICAgICAgICAgc3RydWN0dXJlLT5tX2xvY2sudW5sb2Nr
KCk7CiAgICAgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220247</attachid>
            <date>2014-01-02 13:31:37 -0800</date>
            <delta_ts>2014-01-02 13:45:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126025-20140102133202.patch</filename>
            <type>text/plain</type>
            <size>31444</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxMjIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDE0LTAxLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcmluZyBuZXcgQ29waWVkU3BhY2UgbWVtb3J5IGludG8gYSBKU09iamVjdCBz
aG91bGQgZmlyZSBhIHdyaXRlIGJhcnJpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlY2huaWNhbGx5IHRoaXMgaXMgY3JlYXRpbmcgYSBwb2ludGVy
IGJldHdlZW4gYSAocG90ZW50aWFsbHkpIG9sZCBnZW5lcmF0aW9uIG9iamVjdCBhbmQgYSB5b3Vu
ZyAKKyAgICAgICAgZ2VuZXJhdGlvbiBjaHVuayBvZiBtZW1vcnksIHRodXMgdGhlcmUgbmVlZHMg
dG8gYmUgYSBiYXJyaWVyLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaGVhcC9Db3B5V3JpdGVCYXJyaWVyLmg6IEFkZGVkLiBUaGlzIGNsYXNzIGZ1bmN0aW9ucyBz
aW1pbGFybHkgdG8gdGhlIFdyaXRlQmFycmllciBjbGFzcy4gSXQgCisgICAgICAgIGFjdHMgYXMg
YSBwcm94eSBmb3IgcG9pbnRlcnMgdG8gQ29waWVkU3BhY2UuIEFzc2lnbm1lbnRzIHRvIHRoZSBm
aWVsZCBjYXVzZSBhIHdyaXRlIGJhcnJpZXIgdG8gCisgICAgICAgIGZpcmUgZm9yIHRoZSBvYmpl
Y3QgdGhhdCBpcyB0aGUgb3duZXIgb2YgdGhlIENvcGllZFNwYWNlIG1lbW9yeS4gVGhpcyBpcyB0
byBlbnN1cmUgZHVyaW5nIG51cnNlcnkgCisgICAgICAgIGNvbGxlY3Rpb25zIHRoYXQgb2JqZWN0
cyB3aXRoIG5ldyBiYWNraW5nIHN0b3JlcyBhcmUgdmlzaXRlZCwgZXZlbiBpZiB0aGV5IGFyZSBv
bGQgZ2VuZXJhdGlvbiBvYmplY3RzLiAKKyAgICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6
Q29weVdyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6Om9wZXJh
dG9yISk6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6Om9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUqKToKKyAgICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKEpTQzo6
Q29weVdyaXRlQmFycmllcjo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJh
cnJpZXI6OnNldCk6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6OnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpDb3B5V3JpdGVCYXJyaWVyOjpjbGVhcik6Cisg
ICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50U2xvd0Nhc2UpOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dW52YWxpZGF0ZWRTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzbG93RG93bkFuZFdh
c3RlTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNvcHlCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9k
ZVdoZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhpc3RzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpj
cmVhdGVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdp
dGhvdXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvdW50RWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YnV0dGVyZmx5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6CisgICAgICAgIChK
U0M6Ok1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcCk6CisKIDIwMTMtMTItMjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWZhY3RvciBQdXRQcm9wZXJ0eVNsb3QgdG8gYmUgYXdhcmUgb2YgY3VzdG9tIHBy
b3BlcnRpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTAyLDYgKzUwMiw3IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9ySW5s
aW5lcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvci5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXb3JrTGlzdC5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3B5V3JpdGVCYXJyaWVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvRGVmZXJHQy5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05
ODQsNiArOTg0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZpc2l0
b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZpc2l0b3JJbmxp
bmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcHlXb3JrTGlzdC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fzc2VydGlvbnMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTYy
OCw2ICsxNjI4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVdvcmtM
aXN0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcHlXcml0ZUJhcnJpZXIuaCI+CisgICAg
ICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcRGVmZXJHQy5oIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcg
QEAKIAkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTFCNTc0MTc2
QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJCTJBNEVDOTBC
MTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0RUM5MDkxODYwRDZDMjAwOTRGNzgy
IC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgKi87IH07CiAJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJp
ZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgfTsKIAkJMkE2RjQ2MjYxN0U5NTlD
RTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkE3QTU4RUYxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8q
IERlZmVyR0MuY3BwICovOyB9OwogCQkyQUFEOTY0QTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJz
aXZlQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQUFEOTY0OTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJzaXZlQWxsb2NhdGlv
blNjb3BlLmggKi87IH07CkBAIC0yMDI3LDYgKzIwMjgsNyBAQAogCQkyQTI4MjVDRjE4MzQxRjJE
MDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWxheWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBNEVDOTA5MTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE0RUM5MEExODYwRDZDMjAwOTRG
NzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXcml0ZUJhcnJpZXJCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFEOTY0OTE4NTY5NDE3MDAxRjkz
QkUgLyogUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzIxMiw2ICszMjE0LDcgQEAKIAkJCQkwRkM4MTUwOTE0MDQzQkQyMDBDRkE2
MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLAogCQkJCTJBMjgyNUNGMTgzNDFGMkQwMDg3
RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi8sCiAJCQkJMkFBRDk2NDkxODU2OTQxNzAw
MUY5M0JFIC8qIFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oICovLAorCQkJCTJBNjgyOTVBMTg3
NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDcxMiw2ICs0NzE1LDcgQEAK
IAkJCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUJBMTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUw
MEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMyMENC
NjE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyog
SklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MSw3
ICs4NTEsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCCiAKICAg
ICBBU1NFUlQoIW9iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAg
IEJ1dHRlcmZseSogcmVzdWx0ID0gb2JqZWN0LT5ncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwg
aW5pdGlhbE91dE9mTGluZUNhcGFjaXR5KTsKLSAgICBvYmplY3QtPnNldEJ1dHRlcmZseVdpdGhv
dXRDaGFuZ2luZ1N0cnVjdHVyZShyZXN1bHQpOworICAgIG9iamVjdC0+c2V0QnV0dGVyZmx5V2l0
aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCByZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCkBAIC04NjEsNyArODYxLDcgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gb2JqZWN0LT5n
cm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwgbmV3U2l6ZSk7Ci0gICAgb2JqZWN0LT5zZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdp
bmdTdHJ1Y3R1cmUocmVzdWx0KTsKKyAgICBvYmplY3QtPnNldEJ1dHRlcmZseVdpdGhvdXRDaGFu
Z2luZ1N0cnVjdHVyZSh2bSwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4ocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29w
eVdyaXRlQmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcHlXcml0ZUJhcnJpZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcHlXcml0ZUJhcnJpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDb3B5V3JpdGVCYXJyaWVyX2gKKyNkZWZpbmUgQ29weVdy
aXRlQmFycmllcl9oCisKKyNpbmNsdWRlICJIZWFwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIENvcHlXcml0ZUJhcnJpZXIgeworcHVibGljOgor
ICAgIENvcHlXcml0ZUJhcnJpZXIoKQorICAgICAgICA6IG1fdmFsdWUoMCkKKyAgICB7CisgICAg
fQorICAgIAorICAgIENvcHlXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVy
LCBUJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMtPnNldCh2bSwgb3duZXIsICZ2YWx1ZSk7
CisgICAgfQorICAgIAorICAgIENvcHlXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMtPnNldCh2bSwgb3duZXIsIHZh
bHVlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAh
bV92YWx1ZTsgfQorICAgIAorICAgIHR5cGVkZWYgVCogKENvcHlXcml0ZUJhcnJpZXI6OipVbnNw
ZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWUgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5
cGUqPigxKSA6IDA7IH0KKyAgICAKKyAgICBUKiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fdmFsdWU7CisgICAgfQorICAgIAorICAgIFQqIG9wZXJhdG9yKigpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gZ2V0KCk7CisgICAgfQorICAgIAorICAgIFQqIG9wZXJhdG9y
LT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldCgpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHNldChWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgdGhpcy0+bV92YWx1ZSA9IHZhbHVlOworICAgICAgICBIZWFwOjp3cml0ZUJhcnJpZXIo
b3duZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoVCog
dmFsdWUpCisgICAgeworICAgICAgICB0aGlzLT5tX3ZhbHVlID0gdmFsdWU7CisgICAgfQorICAg
IAorICAgIHZvaWQgY2xlYXIoKSB7IG1fdmFsdWUgPSAwOyB9CisKK3ByaXZhdGU6CisgICAgVCog
bV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29weVdyaXRl
QmFycmllcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAkocmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMSw4ICszMjEsNyBAQCBib29sIEpTQXJyYXk6
OnVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiB2CiAKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT5zZXRWZWN0b3JMZW5ndGgobmV3VmVjdG9yTGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJm
bHktPmFycmF5U3RvcmFnZSgpLT5tX2luZGV4QmlhcyA9IG5ld0luZGV4QmlhczsKLQotICAgIG1f
YnV0dGVyZmx5ID0gbmV3QnV0dGVyZmx5OworICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2lu
Z1N0cnVjdHVyZSh2bSwgbmV3QnV0dGVyZmx5KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
NzIwLDcgKzcxOSw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UK
ICAgICAgICAgLy8gQWRqdXN0IHRoZSBCdXR0ZXJmbHkgYW5kIHRoZSBpbmRleCBiaWFzLiBXZSBv
bmx5IG5lZWQgdG8gZG8gdGhpcyBoZXJlIGJlY2F1c2Ugd2UncmUgY2hhbmdpbmcKICAgICAgICAg
Ly8gdGhlIHN0YXJ0IG9mIHRoZSBCdXR0ZXJmbHksIHdoaWNoIG5lZWRzIHRvIHBvaW50IGF0IHRo
ZSBmaXJzdCBpbmRleGVkIHByb3BlcnR5IGluIHRoZSB1c2VkCiAgICAgICAgIC8vIHBvcnRpb24g
b2YgdGhlIHZlY3Rvci4KLSAgICAgICAgbV9idXR0ZXJmbHkgPSBtX2J1dHRlcmZseS0+c2hpZnQo
c3RydWN0dXJlKCksIGNvdW50KTsKKyAgICAgICAgbV9idXR0ZXJmbHkuc2V0V2l0aG91dFdyaXRl
QmFycmllcihtX2J1dHRlcmZseS0+c2hpZnQoc3RydWN0dXJlKCksIGNvdW50KSk7CiAgICAgICAg
IHN0b3JhZ2UgPSBtX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgICAgIHN0b3JhZ2Ut
Pm1faW5kZXhCaWFzICs9IGNvdW50OwogCkBAIC04NTcsMTAgKzg1NiwxMSBAQCBib29sIEpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3Ro
ID0gc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCk7CiAKICAgICBpZiAobW92ZUZyb250ICYmIHN0b3Jh
Z2UtPm1faW5kZXhCaWFzID49IGNvdW50KSB7Ci0gICAgICAgIG1fYnV0dGVyZmx5ID0gc3RvcmFn
ZS0+YnV0dGVyZmx5KCktPnVuc2hpZnQoc3RydWN0dXJlKCksIGNvdW50KTsKLSAgICAgICAgc3Rv
cmFnZSA9IG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKKyAgICAgICAgQnV0dGVyZmx5KiBu
ZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+dW5zaGlmdChzdHJ1Y3R1cmUoKSwg
Y291bnQpOworICAgICAgICBzdG9yYWdlID0gbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsK
ICAgICAgICAgc3RvcmFnZS0+bV9pbmRleEJpYXMgLT0gY291bnQ7CiAgICAgICAgIHN0b3JhZ2Ut
PnNldFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGggKyBjb3VudCk7CisgICAgICAgIHNldEJ1dHRl
cmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZShleGVjLT52bSgpLCBuZXdCdXR0ZXJmbHkpOwog
ICAgIH0gZWxzZSBpZiAoIW1vdmVGcm9udCAmJiB2ZWN0b3JMZW5ndGggLSBsZW5ndGggPj0gY291
bnQpCiAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9yYWdl
KCk7CiAgICAgZWxzZSBpZiAodW5zaGlmdENvdW50U2xvd0Nhc2UoZXhlYy0+dm0oKSwgbW92ZUZy
b250LCBjb3VudCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAko
cmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
ICAgICAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICBTdHJ1Y3R1cmUqIHVudmFsaWRh
dGVkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKTsgfQor
ICAgIFN0cnVjdHVyZSogdW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0
cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgc3RhdGlj
IGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IE5vdFR5cGVkQXJy
YXk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNpb24gMTYxMjExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwNiwxNSArNTA2LDE2IEBAIEFycmF5QnVmZmVy
KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGEKICAgICBzaXplX3Qgc2l6ZSA9IHRoaXNPYmpl
Y3QtPmJ5dGVTaXplKCk7CiAgICAgCiAgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kZSA9PSBGYXN0
VHlwZWRBcnJheQotICAgICAgICAmJiAhdGhpc09iamVjdC0+bV9idXR0ZXJmbHkgJiYgc2l6ZSA+
PSBzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSB7CisgICAgICAgICYmICF0aGlzT2JqZWN0LT5idXR0
ZXJmbHkoKSAmJiBzaXplID49IHNpemVvZihJbmRleGluZ0hlYWRlcikpIHsKICAgICAgICAgQVNT
RVJUKHRoaXNPYmplY3QtPm1fdmVjdG9yKTsKICAgICAgICAgLy8gUmV1c2UgYWxyZWFkeSBhbGxv
Y2F0ZWQgbWVtb3J5IGlmIGF0IGFsbCBwb3NzaWJsZS4KLSAgICAgICAgdGhpc09iamVjdC0+bV9i
dXR0ZXJmbHkgPQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SW5kZXhpbmdIZWFkZXIqPih0aGlz
T2JqZWN0LT5tX3ZlY3RvciktPmJ1dHRlcmZseSgpOworICAgICAgICB0aGlzT2JqZWN0LT5tX2J1
dHRlcmZseS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
SW5kZXhpbmdIZWFkZXIqPih0aGlzT2JqZWN0LT5tX3ZlY3RvciktPmJ1dHRlcmZseSgpKTsKICAg
ICB9IGVsc2UgewotICAgICAgICB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSA9IEJ1dHRlcmZseTo6
Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fYnV0dGVy
Zmx5LCAqaGVhcC0+dm0oKSwgdGhpc09iamVjdCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCksCi0g
ICAgICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwg
ZmFsc2UsIDAsIDApOworICAgICAgICBWTSYgdm0gPSAqaGVhcC0+dm0oKTsKKyAgICAgICAgdGhp
c09iamVjdC0+bV9idXR0ZXJmbHkuc2V0KHZtLCB0aGlzT2JqZWN0LCBCdXR0ZXJmbHk6OmNyZWF0
ZU9yR3Jvd0FycmF5UmlnaHQoCisgICAgICAgICAgICB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKSwg
dm0sIHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLAorICAgICAgICAgICAgdGhp
c09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLCAwKSk7
CiAgICAgfQogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNjEyMTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1OSw3ICsxNTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmNvcHlC
dXR0ZXJmCiAgICAgICAgICAgICBtZW1jcHkoY3VycmVudFRhcmdldCwgY3VycmVudFNvdXJjZSwg
Y291bnQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgbV9idXR0ZXJmbHkgPSBuZXdCdXR0ZXJmbHk7CisgICAgICAgIG1fYnV0dGVyZmx5LnNl
dFdpdGhvdXRXcml0ZUJhcnJpZXIobmV3QnV0dGVyZmx5KTsKICAgICAgICAgdmlzaXRvci5kaWRD
b3B5KGJ1dHRlcmZseS0+YmFzZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSksIGNhcGFj
aXR5SW5CeXRlcyk7CiAgICAgfSAKIH0KQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0lOVDMy
X0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5tX2J1dHRlcmZs
eTsKKyAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHko
KTsKICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC0yOTcsNyArMjk3LDcgQEAgYm9vbCBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gdGhpc09iamVjdC0+bV9idXR0ZXJmbHk7CisgICAgICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChpID49IGJ1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApA
QCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCAKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQ
RVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5tX2J1dHRl
cmZseTsKKyAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJm
bHkoKTsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0
aCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygp
W3Byb3BlcnR5TmFtZV0uc2V0KGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHZhbHVlKTsKQEAgLTQ2
MCw3ICs0NjAsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgCiAg
ICAgICAgICAgICBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNo
b3VsZFRocm93KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5OworICAgICAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAgICAgICBpZiAo
cHJvcGVydHlOYW1lID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbcHJvcGVydHlOYW1l
XSA9IHZhbHVlQXNEb3VibGU7CkBAIC01NDksMTEgKzU0OSwxMCBAQCBBcnJheVN0b3JhZ2UqIEpT
T2JqZWN0OjplbnRlckRpY3Rpb25hcnlJCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwog
ICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnJlc2l6
ZUFycmF5KHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgMCwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKDAp
KTsKICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0ZXJmbHkpOwotICAgIAotICAgIG1fYnV0dGVy
Zmx5ID0gbmV3QnV0dGVyZmx5OwogICAgIG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1f
aW5kZXhCaWFzID0gMDsKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5zZXRWZWN0
b3JMZW5ndGgoMCk7CiAgICAgbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VN
YXAuc2V0KHZtLCB0aGlzLCBtYXApOworICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0
cnVjdHVyZSh2bSwgbmV3QnV0dGVyZmx5KTsKICAgICAKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKTsKIH0KQEAgLTYwMSw3ICs2MDAsNyBAQCBCdXR0ZXJmbHkqIEpTT2Jq
ZWN0OjpjcmVhdGVJbml0aWFsSW5kZXhlCiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3Bh
cnNlKCkpOwogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KGxlbmd0aCwgQkFT
RV9WRUNUT1JfTEVOKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6
Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBz
dHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAor
ICAgICAgICBtX2J1dHRlcmZseS5nZXQoKSwgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1
cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCiAgICAgICAgIGVsZW1lbnRTaXpl
ICogdmVjdG9yTGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5n
dGgpOwogICAgIG5ld0J1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7CkBA
IC02NTIsNyArNjUxLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9y
YQogICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
OwogICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5
cGUpKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JH
cm93QXJyYXlSaWdodCgKLSAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUo
KSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBt
X2J1dHRlcmZseS5nZXQoKSwgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCiAgICAgICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZv
cih2ZWN0b3JMZW5ndGgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0ZXJmbHkpOwogCkBA
IC0xMjk1LDcgKzEyOTQsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDCiAgICAgICAgIAogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgIGNh
c2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseTsKKyAgICAgICAgQnV0dGVyZmx5KiBi
dXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgaWYgKGkgPj0gYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5jbGVhcigpOwpAQCAtMTMwMyw3ICsxMzAyLDcg
QEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+bV9idXR0ZXJmbHk7CisgICAgICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChp
ID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwpAQCAtMTQ3
OSw3ICsxNDc4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iagog
ICAgICAgICAKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFM
TF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gb2JqZWN0LT5tX2J1dHRlcmZseTsKKyAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkg
PSBvYmplY3QtPmJ1dHRlcmZseSgpOwogICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3RoID0gYnV0
dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHVzZWRMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgaWYgKCFidXR0ZXJmbHktPmNvbnRpZ3Vv
dXMoKVtpXSkKQEAgLTE0OTAsNyArMTQ4OSw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmoKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRF
WElOR19UWVBFUzogewotICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVjdC0+bV9i
dXR0ZXJmbHk7CisgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gb2JqZWN0LT5idXR0ZXJm
bHkoKTsKICAgICAgICAgdW5zaWduZWQgdXNlZExlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVu
Z3RoKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJs
ZSgpW2ldOwpAQCAtMTg3NCw3ICsxODczLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJl
eW9uZFZlY3RvckxlbgogICAgIAogICAgIGlmIChpID49IE1BWF9BUlJBWV9JTkRFWCAtIDEKICAg
ICAgICAgfHwgKGkgPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWAotICAgICAgICAgICAgJiYgIWlz
RGVuc2VFbm91Z2hGb3JWZWN0b3IoaSwgY291bnRFbGVtZW50czxpbmRleGluZ1NoYXBlPihtX2J1
dHRlcmZseSkpKQorICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IoaSwgY291
bnRFbGVtZW50czxpbmRleGluZ1NoYXBlPihidXR0ZXJmbHkoKSkpKQogICAgICAgICB8fCBpbmRl
eElzU3VmZmljaWVudGx5QmV5b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGksIG1fYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKSkpIHsKICAgICAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZX0lOREVYKTsK
ICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CkBAIC0yMzExLDEzICsyMzEwLDEz
IEBAIHVuc2lnbmVkIEpTT2JqZWN0Ojpjb3VudEVsZW1lbnRzKCkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBy
ZXR1cm4gY291bnRFbGVtZW50czxJbnQzMlNoYXBlPihtX2J1dHRlcmZseSk7CisgICAgICAgIHJl
dHVybiBjb3VudEVsZW1lbnRzPEludDMyU2hhcGU+KGJ1dHRlcmZseSgpKTsKICAgICAgICAgCiAg
ICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gY291bnRF
bGVtZW50czxEb3VibGVTaGFwZT4obV9idXR0ZXJmbHkpOworICAgICAgICByZXR1cm4gY291bnRF
bGVtZW50czxEb3VibGVTaGFwZT4oYnV0dGVyZmx5KCkpOwogICAgICAgICAKICAgICBjYXNlIEFM
TF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gY291bnRFbGVtZW50
czxDb250aWd1b3VzU2hhcGU+KG1fYnV0dGVyZmx5KTsKKyAgICAgICAgcmV0dXJuIGNvdW50RWxl
bWVudHM8Q29udGlndW91c1NoYXBlPihidXR0ZXJmbHkoKSk7CiAgICAgICAgIAogICAgIGRlZmF1
bHQ6CiAgICAgICAgIENSQVNIKCk7CkBAIC0yMzUxLDggKzIzNTAsOCBAQCBib29sIEpTT2JqZWN0
OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiAgICAgICAgICAgICBBcnJheVN0b3JhZ2U6OnNp
emVGb3IodmVjdG9yTGVuZ3RoKSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0
aCkpOwogICAgICAgICBpZiAoIW5ld0J1dHRlcmZseSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgbV9idXR0ZXJmbHkgPSBuZXdCdXR0ZXJmbHk7CiAgICAgICAgIG5ld0J1dHRl
cmZseS0+YXJyYXlTdG9yYWdlKCktPnNldFZlY3Rvckxlbmd0aChuZXdWZWN0b3JMZW5ndGgpOwor
ICAgICAgICBzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUodm0sIG5ld0J1dHRl
cmZseSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTIzNjUsMTAgKzIz
NjQsOSBAQCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiAgICAgICAg
IG5ld0luZGV4QmlhcywgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0
aCkpOwogICAgIGlmICghbmV3QnV0dGVyZmx5KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgbV9idXR0ZXJmbHkgPSBuZXdCdXR0ZXJmbHk7CiAgICAgbmV3QnV0dGVyZmx5LT5hcnJh
eVN0b3JhZ2UoKS0+c2V0VmVjdG9yTGVuZ3RoKG5ld1ZlY3Rvckxlbmd0aCk7CiAgICAgbmV3QnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9pbmRleEJpYXMgPSBuZXdJbmRleEJpYXM7CisgICAg
c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCBuZXdCdXR0ZXJmbHkpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMzgzLDE1ICsyMzgxLDE3IEBAIHZvaWQgSlNPYmpl
Y3Q6OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCAKICAgICAgICAgTUFYX1NUT1JBR0VfVkVDVE9S
X0xFTkdUSCk7CiAgICAgdW5zaWduZWQgb2xkVmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpOwogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBtX2J1dHRl
cmZseSA9IG1fYnV0dGVyZmx5LT5ncm93QXJyYXlSaWdodCgKKyAgICBtX2J1dHRlcmZseS5zZXQo
dm0sIHRoaXMsIG1fYnV0dGVyZmx5LT5ncm93QXJyYXlSaWdodCgKICAgICAgICAgdm0sIHRoaXMs
IHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAg
ICAgICAgb2xkVmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSwKLSAgICAgICAg
bmV3VmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgICAgIG5ld1Zl
Y3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKKworICAgIG1fYnV0dGVyZmx5
LT5zZXRWZWN0b3JMZW5ndGgobmV3VmVjdG9yTGVuZ3RoKTsKKwogICAgIGlmIChoYXNEb3VibGUo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBvbGRWZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JMZW5ndGg7ICsraSkKICAgICAgICAgICAg
IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpW2ldID0gUU5hTjsKICAgICB9
Ci0gICAgbV9idXR0ZXJmbHktPnNldFZlY3Rvckxlbmd0aChuZXdWZWN0b3JMZW5ndGgpOwogfQog
CiBCdXR0ZXJmbHkqIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZShWTSYgdm0sIHNpemVf
dCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEzIEBA
CiAjaW5jbHVkZSAiQXJyYXlDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkFycmF5U3RvcmFnZS5o
IgogI2luY2x1ZGUgIkJ1dHRlcmZseS5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCi0jaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29weVdyaXRlQmFycmllci5oIgogI2luY2x1ZGUg
IkRlZmVyR0MuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90Lmgi
CiAjaW5jbHVkZSAiUHJvcGVydHlTdG9yYWdlLmgiCkBAIC01MzksOCArNTQyLDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOwogICAgIH0KICAgICAgICAg
Ci0gICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVybiBtX2J1dHRl
cmZseTsgfQotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkgeyByZXR1cm4gbV9idXR0ZXJmbHk7
IH0KKyAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0
dGVyZmx5LmdldCgpOyB9CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSB7IHJldHVybiBtX2J1
dHRlcmZseS5nZXQoKTsgfQogICAgICAgICAKICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRP
ZkxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHktPnByb3BlcnR5U3RvcmFn
ZSgpOyB9CiAgICAgUHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSB7IHJldHVybiBt
X2J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCk7IH0KQEAgLTYwNSw3ICs2MDgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4
ZWMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQnV0dGVyZmx5KiBncm93T3V0T2ZMaW5lU3Rv
cmFnZShWTSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgdm9pZCBzZXRC
dXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUoQnV0dGVyZmx5Kik7IC8vIFlvdSBwcm9i
YWJseSBkb24ndCB3YW50IHRvIGNhbGwgdGhpcy4KKyAgICB2b2lkIHNldEJ1dHRlcmZseVdpdGhv
dXRDaGFuZ2luZ1N0cnVjdHVyZShWTSYsIEJ1dHRlcmZseSopOwogICAgICAgICAKICAgICB2b2lk
IHNldFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgc2V0U3RydWN0dXJlQW5k
QnV0dGVyZmx5KFZNJiwgU3RydWN0dXJlKiwgQnV0dGVyZmx5Kik7CkBAIC05NzUsNyArOTc4LDcg
QEAgcHJpdmF0ZToKICAgICBDb250aWd1b3VzSlNWYWx1ZXMgZW5zdXJlQ29udGlndW91c1Nsb3co
Vk0mLCBEb3VibGVUb0NvbnRpZ3VvdXNNb2RlKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBCdXR0
ZXJmbHkqIG1fYnV0dGVyZmx5OworICAgIENvcHlXcml0ZUJhcnJpZXI8QnV0dGVyZmx5PiBtX2J1
dHRlcmZseTsKIH07CiAKIC8vIEpTTm9uRmluYWxPYmplY3QgaXMgYSB0eXBlIG9mIEpTT2JqZWN0
IHRoYXQgaGFzIHNvbWUgaW50ZXJuYWwgc3RvcmFnZSwKQEAgLTExMzUsNyArMTEzOCw5IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0Ojppc0Vycm9ySW5zdGFuY2UoKSAKIAogaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKLSAgICBtX2J1dHRlcmZseSA9IGJ1dHRlcmZs
eTsKKyAgICBBU1NFUlQoc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoIWJ1dHRlcmZseSA9PSAoIXN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hl
YWRlcih0aGlzKSkpOworICAgIG1fYnV0dGVyZmx5LnNldCh2bSwgdGhpcywgYnV0dGVyZmx5KTsK
ICAgICBzZXRTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSk7CiB9CiAKQEAgLTExNDYsOSArMTE1MSw5
IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmUoVk0mIHYKICAgICBKU0NlbGw6
OnNldFN0cnVjdHVyZSh2bSwgc3RydWN0dXJlKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZShCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1
Y3R1cmUoVk0mIHZtLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKLSAgICBtX2J1dHRlcmZseSA9
IGJ1dHRlcmZseTsKKyAgICBtX2J1dHRlcmZseS5zZXQodm0sIHRoaXMsIGJ1dHRlcmZseSk7CiB9
CiAKIGlubGluZSBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCkBAIC0xMTc4LDcgKzExODMsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0
KEpTVmFsdWUgdmFsdWUpCiAKIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCiAgICAgOiBKU0NlbGwodm0s
IHN0cnVjdHVyZSkKLSAgICAsIG1fYnV0dGVyZmx5KGJ1dHRlcmZseSkKKyAgICAsIG1fYnV0dGVy
Zmx5KHZtLCB0aGlzLCBidXR0ZXJmbHkpCiB7CiAgICAgdm0uaGVhcC5hc2NyaWJlT3duZXIodGhp
cywgYnV0dGVyZmx5KTsKIH0KQEAgLTEzMDIsNyArMTMwNyw3IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgIEJ1dHRlcmZseSogbmV3QnV0
dGVyZmx5ID0gbV9idXR0ZXJmbHk7CisgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0g
YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxp
bmVTdG9yYWdlKCkpCiAgICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3Rv
cmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5z
dWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9
IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwpAQCAtMTMyMyw5ICsxMzI4LDExIEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBzaXplX3QgY3Vy
cmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYg
KFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKICAgICAgICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOwotICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVy
Zmx5OwotICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSkKKyAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBidXR0ZXJmbHko
KTsKKyAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdGhpcy0+c3RydWN0
dXJlKCkpOwogICAgICAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uo
dm0sIGN1cnJlbnRDYXBhY2l0eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CkBAIC0xNDM2LDcgKzE0NDMsNyBA
QCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyCiB7CiAgICAgRGVmZXJH
QyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAm
JiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5
ID0gbV9idXR0ZXJmbHk7CisgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBtX2J1dHRlcmZs
eS5nZXQoKTsKICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFn
ZSgpKQogICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdP
dXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuY3BwCShyZXZpc2lvbiAxNjEyMTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk4LDE2ICsxOTgsMTcgQEAgQ2hlY2tlZEJvb2xlYW4gTWFwRGF0YTo6ZW5zdXJlU3BhY2VG
b3JBcAogCiAgICAgc2l6ZV90IHJlcXVpcmVkU2l6ZSA9IHN0ZDo6bWF4KG1fY2FwYWNpdHkgKyAo
bV9jYXBhY2l0eSAvIDIpICsgMSwgbWluaW11bU1hcFNpemUpOwogICAgIHZvaWQqIG5ld1N0b3Jh
Z2UgPSAwOworICAgIERlZmVyR0MgZGVmZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsKICAgICBpZiAo
IWNhbGxGcmFtZS0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0b3JhZ2UodGhpcywgcmVxdWlyZWRTaXpl
ICogc2l6ZW9mKEVudHJ5KSwgJm5ld1N0b3JhZ2UpKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIERl
ZmVyR0MgZGVmZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsKICAgICBFbnRyeSogbmV3RW50cmllcyA9
IHN0YXRpY19jYXN0PEVudHJ5Kj4obmV3U3RvcmFnZSk7CiAgICAgaWYgKHNob3VsZFBhY2soKSkK
ICAgICAgICAgcmVwbGFjZUFuZFBhY2tCYWNraW5nU3RvcmUobmV3RW50cmllcywgcmVxdWlyZWRT
aXplKTsKICAgICBlbHNlCiAgICAgICAgIHJlcGxhY2VCYWNraW5nU3RvcmUobmV3RW50cmllcywg
cmVxdWlyZWRTaXplKTsKKyAgICBIZWFwOjp3cml0ZUJhcnJpZXIodGhpcyk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAkocmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQg
U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKFYKICAgICBmaW5kU3RydWN0dXJlc0Fu
ZE1hcEZvck1hdGVyaWFsaXphdGlvbihzdHJ1Y3R1cmVzLCBzdHJ1Y3R1cmUsIHRhYmxlKTsKICAg
ICAKICAgICBpZiAodGFibGUpIHsKLSAgICAgICAgdGFibGUgPSB0YWJsZS0+Y29weSh2bSwgMCwg
bnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKTsK
KyAgICAgICAgdGFibGUgPSB0YWJsZS0+Y29weSh2bSwgc3RydWN0dXJlLCBudW1iZXJPZlNsb3Rz
Rm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOwogICAgICAgICBzdHJ1
Y3R1cmUtPm1fbG9jay51bmxvY2soKTsKICAgICB9CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220248</attachid>
            <date>2014-01-02 13:45:55 -0800</date>
            <delta_ts>2014-01-02 14:53:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126025-20140102134620.patch</filename>
            <type>text/plain</type>
            <size>31483</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxMjIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDE0LTAxLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcmluZyBuZXcgQ29waWVkU3BhY2UgbWVtb3J5IGludG8gYSBKU09iamVjdCBz
aG91bGQgZmlyZSBhIHdyaXRlIGJhcnJpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNjAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlY2huaWNhbGx5IHRoaXMgaXMgY3JlYXRpbmcgYSBwb2ludGVy
IGJldHdlZW4gYSAocG90ZW50aWFsbHkpIG9sZCBnZW5lcmF0aW9uIG9iamVjdCBhbmQgYSB5b3Vu
ZyAKKyAgICAgICAgZ2VuZXJhdGlvbiBjaHVuayBvZiBtZW1vcnksIHRodXMgdGhlcmUgbmVlZHMg
dG8gYmUgYSBiYXJyaWVyLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaGVhcC9Db3B5V3JpdGVCYXJyaWVyLmg6IEFkZGVkLiBUaGlzIGNsYXNzIGZ1bmN0aW9ucyBz
aW1pbGFybHkgdG8gdGhlIFdyaXRlQmFycmllciBjbGFzcy4gSXQgCisgICAgICAgIGFjdHMgYXMg
YSBwcm94eSBmb3IgcG9pbnRlcnMgdG8gQ29waWVkU3BhY2UuIEFzc2lnbm1lbnRzIHRvIHRoZSBm
aWVsZCBjYXVzZSBhIHdyaXRlIGJhcnJpZXIgdG8gCisgICAgICAgIGZpcmUgZm9yIHRoZSBvYmpl
Y3QgdGhhdCBpcyB0aGUgb3duZXIgb2YgdGhlIENvcGllZFNwYWNlIG1lbW9yeS4gVGhpcyBpcyB0
byBlbnN1cmUgZHVyaW5nIG51cnNlcnkgCisgICAgICAgIGNvbGxlY3Rpb25zIHRoYXQgb2JqZWN0
cyB3aXRoIG5ldyBiYWNraW5nIHN0b3JlcyBhcmUgdmlzaXRlZCwgZXZlbiBpZiB0aGV5IGFyZSBv
bGQgZ2VuZXJhdGlvbiBvYmplY3RzLiAKKyAgICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6
Q29weVdyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6Om9wZXJh
dG9yISk6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6Om9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUqKToKKyAgICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6Z2V0KToKKyAg
ICAgICAgKEpTQzo6Q29weVdyaXRlQmFycmllcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKEpTQzo6
Q29weVdyaXRlQmFycmllcjo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJh
cnJpZXI6OnNldCk6CisgICAgICAgIChKU0M6OkNvcHlXcml0ZUJhcnJpZXI6OnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpDb3B5V3JpdGVCYXJyaWVyOjpjbGVhcik6Cisg
ICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50U2xvd0Nhc2UpOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dW52YWxpZGF0ZWRTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzbG93RG93bkFuZFdh
c3RlTWVtb3J5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmNvcHlCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9k
ZVdoZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhpc3RzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpj
cmVhdGVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdp
dGhvdXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvdW50RWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YnV0dGVyZmx5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6SlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5jcHA6CisgICAgICAgIChK
U0M6Ok1hcERhdGE6OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcCk6CisKIDIwMTMtMTItMjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWZhY3RvciBQdXRQcm9wZXJ0eVNsb3QgdG8gYmUgYXdhcmUgb2YgY3VzdG9tIHBy
b3BlcnRpZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTAyLDYgKzUwMiw3IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9ySW5s
aW5lcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvci5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXb3JrTGlzdC5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3B5V3JpdGVCYXJyaWVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvRGVmZXJHQy5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05
ODQsNiArOTg0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZpc2l0
b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZpc2l0b3JJbmxp
bmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcHlXb3JrTGlzdC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fzc2VydGlvbnMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTYy
OCw2ICsxNjI4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVdvcmtM
aXN0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXENvcHlXcml0ZUJhcnJpZXIuaCI+CisgICAg
ICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcRGVmZXJHQy5oIj4KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcg
QEAKIAkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTFCNTc0MTc2
QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJCTJBNEVDOTBC
MTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0RUM5MDkxODYwRDZDMjAwOTRGNzgy
IC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgKi87IH07CiAJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJp
ZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVh
cE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0
MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87
IH07CiAJCTJBQUQ5NjRBMTg1Njk0MTcwMDFGOTNCRSAvKiBSZWN1cnNpdmVBbGxvY2F0aW9uU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUQ5
NjQ5MTg1Njk0MTcwMDFGOTNCRSAvKiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCAqLzsgfTsK
QEAgLTIwMjcsNiArMjAyOCw3IEBACiAJCTJBMjgyNUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxh
eWVkUmVsZWFzZVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGF5
ZWRSZWxlYXNlU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE0RUM5MDkx
ODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJy
aWVyQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRlQmFycmll
ckJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTY4Mjk1QTE4NzVGODA1
MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb3B5V3JpdGVCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHQy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJBQUQ5NjQ5MTg1Njk0MTcwMDFGOTNCRSAvKiBSZWN1cnNpdmVB
bGxvY2F0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdXJz
aXZlQWxsb2NhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjEy
LDYgKzMyMTQsNyBAQAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0ZUJhcnJp
ZXJTdXBwb3J0LmggKi8sCiAJCQkJMkEyODI1Q0YxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRS
ZWxlYXNlU2NvcGUuaCAqLywKIAkJCQkyQUFEOTY0OTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJz
aXZlQWxsb2NhdGlvblNjb3BlLmggKi8sCisJCQkJMkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8q
IENvcHlXcml0ZUJhcnJpZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaGVhcDsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00MzczLDYgKzQzNzYsNyBAQAogCQkJCTg2RDNCMkM0MTAx
NTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QURE
MTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJp
ZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAv
KiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTMx
ODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDE2MTIxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MSw3ICs4NTEsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCCiAKICAgICBBU1NFUlQoIW9iamVjdC0+
c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgIEJ1dHRlcmZseSogcmVzdWx0
ID0gb2JqZWN0LT5ncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwgaW5pdGlhbE91dE9mTGluZUNh
cGFjaXR5KTsKLSAgICBvYmplY3QtPnNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVy
ZShyZXN1bHQpOworICAgIG9iamVjdC0+c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0
dXJlKHZtLCByZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1
bHQpOwogfQogCkBAIC04NjEsNyArODYxLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25SZWFsbG9jYXRlQgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKIAogICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gb2JqZWN0LT5ncm93T3V0T2ZMaW5lU3RvcmFn
ZSh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U2l6ZSk7
Ci0gICAgb2JqZWN0LT5zZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUocmVzdWx0
KTsKKyAgICBvYmplY3QtPnNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2bSwg
cmVzdWx0KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVdyaXRlQmFycmllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXcml0ZUJhcnJpZXIu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXcml0ZUJh
cnJpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDb3B5V3JpdGVCYXJyaWVyX2gKKyNkZWZpbmUgQ29weVdyaXRlQmFycmllcl9oCisKKyNp
bmNsdWRlICJIZWFwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIENvcHlXcml0ZUJhcnJpZXIgeworcHVibGljOgorICAgIENvcHlXcml0ZUJhcnJp
ZXIoKQorICAgICAgICA6IG1fdmFsdWUoMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIENvcHlX
cml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBUJiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIHRoaXMtPnNldCh2bSwgb3duZXIsICZ2YWx1ZSk7CisgICAgfQorICAgIAorICAg
IENvcHlXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBUKiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHRoaXMtPnNldCh2bSwgb3duZXIsIHZhbHVlKTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV92YWx1ZTsgfQorICAgIAor
ICAgIHR5cGVkZWYgVCogKENvcHlXcml0ZUJhcnJpZXI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsK
KyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWUgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPigxKSA6IDA7IH0KKyAg
ICAKKyAgICBUKiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7Cisg
ICAgfQorICAgIAorICAgIFQqIG9wZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gZ2V0KCk7CisgICAgfQorICAgIAorICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdldCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChWTSYsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy0+bV92YWx1
ZSA9IHZhbHVlOworICAgICAgICBIZWFwOjp3cml0ZUJhcnJpZXIob3duZXIpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoVCogdmFsdWUpCisgICAgeworICAg
ICAgICB0aGlzLT5tX3ZhbHVlID0gdmFsdWU7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIo
KSB7IG1fdmFsdWUgPSAwOyB9CisKK3ByaXZhdGU6CisgICAgVCogbV92YWx1ZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29weVdyaXRlQmFycmllcl9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTYxMjEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyMSw4ICszMjEsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dD
YXNlKFZNJiB2CiAKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5zZXRWZWN0b3JM
ZW5ndGgobmV3VmVjdG9yTGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
LT5tX2luZGV4QmlhcyA9IG5ld0luZGV4QmlhczsKLQotICAgIG1fYnV0dGVyZmx5ID0gbmV3QnV0
dGVyZmx5OworICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2bSwgbmV3
QnV0dGVyZmx5KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzIwLDcgKzcxOSw3IEBAIGJv
b2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UKICAgICAgICAgLy8gQWRqdXN0
IHRoZSBCdXR0ZXJmbHkgYW5kIHRoZSBpbmRleCBiaWFzLiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhp
cyBoZXJlIGJlY2F1c2Ugd2UncmUgY2hhbmdpbmcKICAgICAgICAgLy8gdGhlIHN0YXJ0IG9mIHRo
ZSBCdXR0ZXJmbHksIHdoaWNoIG5lZWRzIHRvIHBvaW50IGF0IHRoZSBmaXJzdCBpbmRleGVkIHBy
b3BlcnR5IGluIHRoZSB1c2VkCiAgICAgICAgIC8vIHBvcnRpb24gb2YgdGhlIHZlY3Rvci4KLSAg
ICAgICAgbV9idXR0ZXJmbHkgPSBtX2J1dHRlcmZseS0+c2hpZnQoc3RydWN0dXJlKCksIGNvdW50
KTsKKyAgICAgICAgbV9idXR0ZXJmbHkuc2V0V2l0aG91dFdyaXRlQmFycmllcihtX2J1dHRlcmZs
eS0+c2hpZnQoc3RydWN0dXJlKCksIGNvdW50KSk7CiAgICAgICAgIHN0b3JhZ2UgPSBtX2J1dHRl
cmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzICs9IGNv
dW50OwogCkBAIC04NTcsMTAgKzg1NiwxMSBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhCiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gc3RvcmFnZS0+dmVjdG9y
TGVuZ3RoKCk7CiAKICAgICBpZiAobW92ZUZyb250ICYmIHN0b3JhZ2UtPm1faW5kZXhCaWFzID49
IGNvdW50KSB7Ci0gICAgICAgIG1fYnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnVu
c2hpZnQoc3RydWN0dXJlKCksIGNvdW50KTsKLSAgICAgICAgc3RvcmFnZSA9IG1fYnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKTsKKyAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9y
YWdlLT5idXR0ZXJmbHkoKS0+dW5zaGlmdChzdHJ1Y3R1cmUoKSwgY291bnQpOworICAgICAgICBz
dG9yYWdlID0gbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgc3RvcmFnZS0+
bV9pbmRleEJpYXMgLT0gY291bnQ7CiAgICAgICAgIHN0b3JhZ2UtPnNldFZlY3Rvckxlbmd0aCh2
ZWN0b3JMZW5ndGggKyBjb3VudCk7CisgICAgICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2lu
Z1N0cnVjdHVyZShleGVjLT52bSgpLCBuZXdCdXR0ZXJmbHkpOwogICAgIH0gZWxzZSBpZiAoIW1v
dmVGcm9udCAmJiB2ZWN0b3JMZW5ndGggLSBsZW5ndGggPj0gY291bnQpCiAgICAgICAgIHN0b3Jh
Z2UgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgZWxzZSBpZiAo
dW5zaGlmdENvdW50U2xvd0Nhc2UoZXhlYy0+dm0oKSwgbW92ZUZyb250LCBjb3VudCkpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTYxMjExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgICAgICAKICNpZiBFTkFCTEUo
R0NfVkFMSURBVElPTikKLSAgICBTdHJ1Y3R1cmUqIHVudmFsaWRhdGVkU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKTsgfQorICAgIFN0cnVjdHVyZSogdW52
YWxpZGF0ZWRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRl
ZEdldCgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlU
eXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IE5vdFR5cGVkQXJyYXk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwNiwxNSArNTA2LDE2IEBAIEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGEKICAgICBzaXplX3Qgc2l6ZSA9IHRoaXNPYmplY3QtPmJ5dGVTaXplKCk7CiAg
ICAgCiAgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kZSA9PSBGYXN0VHlwZWRBcnJheQotICAgICAg
ICAmJiAhdGhpc09iamVjdC0+bV9idXR0ZXJmbHkgJiYgc2l6ZSA+PSBzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpKSB7CisgICAgICAgICYmICF0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKSAmJiBzaXplID49
IHNpemVvZihJbmRleGluZ0hlYWRlcikpIHsKICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1f
dmVjdG9yKTsKICAgICAgICAgLy8gUmV1c2UgYWxyZWFkeSBhbGxvY2F0ZWQgbWVtb3J5IGlmIGF0
IGFsbCBwb3NzaWJsZS4KLSAgICAgICAgdGhpc09iamVjdC0+bV9idXR0ZXJmbHkgPQotICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8SW5kZXhpbmdIZWFkZXIqPih0aGlzT2JqZWN0LT5tX3ZlY3Rvcikt
PmJ1dHRlcmZseSgpOworICAgICAgICB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseS5zZXRXaXRob3V0
V3JpdGVCYXJyaWVyKAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SW5kZXhpbmdIZWFkZXIqPih0
aGlzT2JqZWN0LT5tX3ZlY3RvciktPmJ1dHRlcmZseSgpKTsKICAgICB9IGVsc2UgewotICAgICAg
ICB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlS
aWdodCgKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5LCAqaGVhcC0+dm0oKSwg
dGhpc09iamVjdCwgdGhpc09iamVjdC0+c3RydWN0dXJlKCksCi0gICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsIDApOworICAg
ICAgICBWTSYgdm0gPSAqaGVhcC0+dm0oKTsKKyAgICAgICAgdGhpc09iamVjdC0+bV9idXR0ZXJm
bHkuc2V0KHZtLCB0aGlzT2JqZWN0LCBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0FycmF5UmlnaHQo
CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKSwgdm0sIHRoaXNPYmplY3QsIHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLAorICAgICAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLCAwKSk7CiAgICAgfQogCiAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBidWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTks
NyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmNvcHlCdXR0ZXJmCiAgICAgICAgICAg
ICBtZW1jcHkoY3VycmVudFRhcmdldCwgY3VycmVudFNvdXJjZSwgY291bnQgKiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9idXR0ZXJmbHkg
PSBuZXdCdXR0ZXJmbHk7CisgICAgICAgIG1fYnV0dGVyZmx5LnNldFdpdGhvdXRXcml0ZUJhcnJp
ZXIobmV3QnV0dGVyZmx5KTsKICAgICAgICAgdmlzaXRvci5kaWRDb3B5KGJ1dHRlcmZseS0+YmFz
ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSksIGNhcGFjaXR5SW5CeXRlcyk7CiAgICAg
fSAKIH0KQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgog
ICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseTsKKyAgICAgICAgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgaWYgKGkg
Pj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCkBAIC0yOTcsNyArMjk3LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleAogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVY
SU5HX1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+
bV9idXR0ZXJmbHk7CisgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhpc09iamVjdC0+
YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtNDM3LDcgKzQzNyw3IEBA
IHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCAKICAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5tX2J1dHRlcmZseTsKKyAgICAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgaWYg
KHByb3BlcnR5TmFtZSA+PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW3Byb3BlcnR5TmFtZV0uc2V0
KGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHZhbHVlKTsKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lk
IEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgCiAgICAgICAgICAgICBwdXRCeUlu
ZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9
IHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5OworICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9
IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAgICAgICBpZiAocHJvcGVydHlOYW1lID49IGJ1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYnV0
dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbcHJvcGVydHlOYW1lXSA9IHZhbHVlQXNEb3VibGU7
CkBAIC01NDksMTEgKzU0OSwxMCBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rp
b25hcnlJCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEJ1dHRlcmZseSogbmV3
QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnJlc2l6ZUFycmF5KHZtLCB0aGlzLCBz
dHJ1Y3R1cmUoKSwgMCwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKDApKTsKICAgICBSRUxFQVNFX0FT
U0VSVChuZXdCdXR0ZXJmbHkpOwotICAgIAotICAgIG1fYnV0dGVyZmx5ID0gbmV3QnV0dGVyZmx5
OwogICAgIG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1faW5kZXhCaWFzID0gMDsKICAg
ICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5zZXRWZWN0b3JMZW5ndGgoMCk7CiAgICAg
bmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuc2V0KHZtLCB0aGlzLCBt
YXApOworICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2bSwgbmV3QnV0
dGVyZmx5KTsKICAgICAKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsK
IH0KQEAgLTYwMSw3ICs2MDAsNyBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFs
SW5kZXhlCiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwogICAgIHVuc2ln
bmVkIHZlY3Rvckxlbmd0aCA9IHN0ZDo6bWF4KGxlbmd0aCwgQkFTRV9WRUNUT1JfTEVOKTsKICAg
ICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlS
aWdodCgKLSAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRlcmZs
eS5nZXQoKSwgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwgZmFsc2UsIDAsCiAgICAgICAgIGVsZW1lbnRTaXplICogdmVjdG9yTGVuZ3RoKTsK
ICAgICBuZXdCdXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5ndGgpOwogICAgIG5ld0J1dHRl
cmZseS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7CkBAIC02NTIsNyArNjUxLDcgQEAg
QXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYQogICAgIEluZGV4aW5nVHlw
ZSBvbGRUeXBlID0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpOwogICAgIEFTU0VSVF9VTlVT
RUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKICAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAg
ICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91
dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRlcmZseS5nZXQoKSwg
dm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwg
ZmFsc2UsIDAsCiAgICAgICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0ZXJmbHkpOwogCkBAIC0xMjk1LDcgKzEyOTQsNyBA
QCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDCiAgICAgICAgIAogICAg
IGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNf
SU5ERVhJTkdfVFlQRVM6IHsKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2Jq
ZWN0LT5tX2J1dHRlcmZseTsKKyAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2Jq
ZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgaWYgKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5n
dGgoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBidXR0ZXJmbHktPmNvbnRp
Z3VvdXMoKVtpXS5jbGVhcigpOwpAQCAtMTMwMyw3ICsxMzAyLDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBTExf
RE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
dGhpc09iamVjdC0+bV9idXR0ZXJmbHk7CisgICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
dGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgICAgIGlmIChpID49IGJ1dHRlcmZseS0+dmVj
dG9yTGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYnV0dGVyZmx5
LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwpAQCAtMTQ3OSw3ICsxNDc4LDcgQEAgdm9p
ZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iagogICAgICAgICAKICAgICBjYXNl
IEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVY
SU5HX1RZUEVTOiB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gb2JqZWN0LT5tX2J1
dHRlcmZseTsKKyAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBvYmplY3QtPmJ1dHRlcmZs
eSgpOwogICAgICAgICB1bnNpZ25lZCB1c2VkTGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5n
dGgoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVzZWRMZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgaWYgKCFidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXSkKQEAgLTE0OTAs
NyArMTQ4OSw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmoKICAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzogewotICAg
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVjdC0+bV9idXR0ZXJmbHk7CisgICAgICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gb2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICAgICAgdW5z
aWduZWQgdXNlZExlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB1c2VkTGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGRv
dWJsZSB2YWx1ZSA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwpAQCAtMTg3NCw3
ICsxODczLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAg
IAogICAgIGlmIChpID49IE1BWF9BUlJBWV9JTkRFWCAtIDEKICAgICAgICAgfHwgKGkgPj0gTUlO
X1NQQVJTRV9BUlJBWV9JTkRFWAotICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0
b3IoaSwgY291bnRFbGVtZW50czxpbmRleGluZ1NoYXBlPihtX2J1dHRlcmZseSkpKQorICAgICAg
ICAgICAgJiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IoaSwgY291bnRFbGVtZW50czxpbmRleGlu
Z1NoYXBlPihidXR0ZXJmbHkoKSkpKQogICAgICAgICB8fCBpbmRleElzU3VmZmljaWVudGx5QmV5
b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGksIG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsK
ICAgICAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZX0lOREVYKTsKICAgICAgICAgZW5zdXJlQXJy
YXlTdG9yYWdlU2xvdyh2bSk7CkBAIC0yMzExLDEzICsyMzEwLDEzIEBAIHVuc2lnbmVkIEpTT2Jq
ZWN0Ojpjb3VudEVsZW1lbnRzKCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAogICAgIGNh
c2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gY291bnRFbGVtZW50
czxJbnQzMlNoYXBlPihtX2J1dHRlcmZseSk7CisgICAgICAgIHJldHVybiBjb3VudEVsZW1lbnRz
PEludDMyU2hhcGU+KGJ1dHRlcmZseSgpKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxF
X0lOREVYSU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gY291bnRFbGVtZW50czxEb3VibGVTaGFw
ZT4obV9idXR0ZXJmbHkpOworICAgICAgICByZXR1cm4gY291bnRFbGVtZW50czxEb3VibGVTaGFw
ZT4oYnV0dGVyZmx5KCkpOwogICAgICAgICAKICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVY
SU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gY291bnRFbGVtZW50czxDb250aWd1b3VzU2hhcGU+
KG1fYnV0dGVyZmx5KTsKKyAgICAgICAgcmV0dXJuIGNvdW50RWxlbWVudHM8Q29udGlndW91c1No
YXBlPihidXR0ZXJmbHkoKSk7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNI
KCk7CkBAIC0yMzUxLDggKzIzNTAsOCBAQCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxl
bmd0aChWTSYgCiAgICAgICAgICAgICBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3Ro
KSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0aCkpOwogICAgICAgICBpZiAo
IW5ld0J1dHRlcmZseSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9idXR0
ZXJmbHkgPSBuZXdCdXR0ZXJmbHk7CiAgICAgICAgIG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdl
KCktPnNldFZlY3Rvckxlbmd0aChuZXdWZWN0b3JMZW5ndGgpOworICAgICAgICBzZXRCdXR0ZXJm
bHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUodm0sIG5ld0J1dHRlcmZseSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTIzNjUsMTAgKzIzNjQsOSBAQCBib29sIEpTT2Jq
ZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiAgICAgICAgIG5ld0luZGV4QmlhcywgdHJ1
ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0aCkpOwogICAgIGlmICghbmV3
QnV0dGVyZmx5KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgbV9idXR0ZXJmbHkg
PSBuZXdCdXR0ZXJmbHk7CiAgICAgbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+c2V0VmVj
dG9yTGVuZ3RoKG5ld1ZlY3Rvckxlbmd0aCk7CiAgICAgbmV3QnV0dGVyZmx5LT5hcnJheVN0b3Jh
Z2UoKS0+bV9pbmRleEJpYXMgPSBuZXdJbmRleEJpYXM7CisgICAgc2V0QnV0dGVyZmx5V2l0aG91
dENoYW5naW5nU3RydWN0dXJlKHZtLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0yMzgzLDE1ICsyMzgxLDE3IEBAIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNs
b3coVk0mIHZtLCAKICAgICAgICAgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7CiAgICAgdW5z
aWduZWQgb2xkVmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAg
IERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBtX2J1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LT5ncm93QXJyYXlSaWdodCgKKyAgICBtX2J1dHRlcmZseS5zZXQodm0sIHRoaXMsIG1fYnV0dGVy
Zmx5LT5ncm93QXJyYXlSaWdodCgKICAgICAgICAgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAgICAgb2xkVmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSwKLSAgICAgICAgbmV3VmVjdG9yTGVuZ3RoICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgICAgIG5ld1ZlY3Rvckxlbmd0aCAqIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpKTsKKworICAgIG1fYnV0dGVyZmx5LT5zZXRWZWN0b3JMZW5ndGgo
bmV3VmVjdG9yTGVuZ3RoKTsKKwogICAgIGlmIChoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRWZWN0b3JMZW5ndGg7
IGkgPCBuZXdWZWN0b3JMZW5ndGg7ICsraSkKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKCkuZGF0YSgpW2ldID0gUU5hTjsKICAgICB9Ci0gICAgbV9idXR0ZXJmbHkt
PnNldFZlY3Rvckxlbmd0aChuZXdWZWN0b3JMZW5ndGgpOwogfQogCiBCdXR0ZXJmbHkqIEpTT2Jq
ZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnZShWTSYgdm0sIHNpemVfdCBvbGRTaXplLCBzaXplX3Qg
bmV3U2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gMTYxMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEzIEBACiAjaW5jbHVkZSAiQXJyYXlD
b252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkFycmF5U3RvcmFnZS5oIgogI2luY2x1ZGUgIkJ1dHRl
cmZseS5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgog
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCi0jaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisj
aW5jbHVkZSAiQ29weVdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKKyNpbmNs
dWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlTdG9yYWdlLmgiCkBAIC01MzksOCArNTQyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
aW5saW5lU3RvcmFnZVVuc2FmZSgpOwogICAgIH0KICAgICAgICAgCi0gICAgY29uc3QgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVybiBtX2J1dHRlcmZseTsgfQotICAgIEJ1dHRl
cmZseSogYnV0dGVyZmx5KCkgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KKyAgICBjb25zdCBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dGVyZmx5LmdldCgpOyB9Cisg
ICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSB7IHJldHVybiBtX2J1dHRlcmZseS5nZXQoKTsgfQog
ICAgICAgICAKICAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxpbmVTdG9yYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9idXR0ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpOyB9CiAgICAgUHJvcGVy
dHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSB7IHJldHVybiBtX2J1dHRlcmZseS0+cHJvcGVy
dHlTdG9yYWdlKCk7IH0KQEAgLTYwNSw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWlm
eVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQnV0dGVyZmx5KiBncm93T3V0T2ZMaW5lU3RvcmFnZShWTSYsIHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgdm9pZCBzZXRCdXR0ZXJmbHlXaXRob3V0Q2hh
bmdpbmdTdHJ1Y3R1cmUoQnV0dGVyZmx5Kik7IC8vIFlvdSBwcm9iYWJseSBkb24ndCB3YW50IHRv
IGNhbGwgdGhpcy4KKyAgICB2b2lkIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVy
ZShWTSYsIEJ1dHRlcmZseSopOwogICAgICAgICAKICAgICB2b2lkIHNldFN0cnVjdHVyZShWTSYs
IFN0cnVjdHVyZSopOwogICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KFZNJiwgU3Ry
dWN0dXJlKiwgQnV0dGVyZmx5Kik7CkBAIC05NzUsNyArOTc4LDcgQEAgcHJpdmF0ZToKICAgICBD
b250aWd1b3VzSlNWYWx1ZXMgZW5zdXJlQ29udGlndW91c1Nsb3coVk0mLCBEb3VibGVUb0NvbnRp
Z3VvdXNNb2RlKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5
OworICAgIENvcHlXcml0ZUJhcnJpZXI8QnV0dGVyZmx5PiBtX2J1dHRlcmZseTsKIH07CiAKIC8v
IEpTTm9uRmluYWxPYmplY3QgaXMgYSB0eXBlIG9mIEpTT2JqZWN0IHRoYXQgaGFzIHNvbWUgaW50
ZXJuYWwgc3RvcmFnZSwKQEAgLTExMzUsNyArMTEzOCw5IEBAIGlubGluZSBib29sIEpTT2JqZWN0
Ojppc0Vycm9ySW5zdGFuY2UoKSAKIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVy
ZUFuZEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1
dHRlcmZseSkKIHsKLSAgICBtX2J1dHRlcmZseSA9IGJ1dHRlcmZseTsKKyAgICBBU1NFUlQoc3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQoIWJ1dHRlcmZseSA9PSAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzKSkpOworICAg
IG1fYnV0dGVyZmx5LnNldCh2bSwgdGhpcywgYnV0dGVyZmx5KTsKICAgICBzZXRTdHJ1Y3R1cmUo
dm0sIHN0cnVjdHVyZSk7CiB9CiAKQEAgLTExNDYsOSArMTE1MSw5IEBAIGlubGluZSB2b2lkIEpT
T2JqZWN0OjpzZXRTdHJ1Y3R1cmUoVk0mIHYKICAgICBKU0NlbGw6OnNldFN0cnVjdHVyZSh2bSwg
c3RydWN0dXJlKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldEJ1dHRlcmZseVdpdGhv
dXRDaGFuZ2luZ1N0cnVjdHVyZShCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKK2lubGluZSB2b2lkIEpT
T2JqZWN0OjpzZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUoVk0mIHZtLCBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSkKIHsKLSAgICBtX2J1dHRlcmZseSA9IGJ1dHRlcmZseTsKKyAgICBt
X2J1dHRlcmZseS5zZXQodm0sIHRoaXMsIGJ1dHRlcmZseSk7CiB9CiAKIGlubGluZSBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU1ZhbHVlIHZhbHVlLCBDYWxsRGF0YSYgY2FsbERhdGEpCkBAIC0xMTc4
LDcgKzExODMsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiAK
IGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
QnV0dGVyZmx5KiBidXR0ZXJmbHkpCiAgICAgOiBKU0NlbGwodm0sIHN0cnVjdHVyZSkKLSAgICAs
IG1fYnV0dGVyZmx5KGJ1dHRlcmZseSkKKyAgICAsIG1fYnV0dGVyZmx5KHZtLCB0aGlzLCBidXR0
ZXJmbHkpCiB7CiAgICAgdm0uaGVhcC5hc2NyaWJlT3duZXIodGhpcywgYnV0dGVyZmx5KTsKIH0K
QEAgLTEzMDIsNyArMTMwNyw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbCgKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBEZWZlckdDIGRlZmVy
R0Modm0uaGVhcCk7Ci0gICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJm
bHk7CisgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gYnV0dGVyZmx5KCk7CiAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCiAgICAg
ICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxp
bmVTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljRnVuY3Rpb24pOwpAQCAtMTMyMyw5ICsxMzI4LDExIEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gc3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0
dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVu
Y3Rpb24sIG9mZnNldCkpIHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAg
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5OwotICAgICAgICBpZiAo
Y3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAg
ICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBidXR0ZXJmbHkoKTsKKyAgICAgICAgaWYgKGN1
cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdGhpcy0+c3RydWN0dXJlKCkpOwogICAgICAgICAg
ICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBhY2l0
eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgfQogCiAgICAgICAg
IHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFs
aWRPZmZzZXQob2Zmc2V0KSk7CkBAIC0xNDM2LDcgKzE0NDMsNyBAQCBpbmxpbmUgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0V2l0aG91dFRyCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBB
Y2Nlc3NvcikpOwotICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7Cisg
ICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICBpZiAo
c3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQogICAgICAgICBuZXdC
dXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2Fw
YWNpdHkoKSk7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0
Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcERhdGEuY3BwCShyZXZpc2lvbiAxNjEyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDE2ICsxOTgsMTcg
QEAgQ2hlY2tlZEJvb2xlYW4gTWFwRGF0YTo6ZW5zdXJlU3BhY2VGb3JBcAogCiAgICAgc2l6ZV90
IHJlcXVpcmVkU2l6ZSA9IHN0ZDo6bWF4KG1fY2FwYWNpdHkgKyAobV9jYXBhY2l0eSAvIDIpICsg
MSwgbWluaW11bU1hcFNpemUpOwogICAgIHZvaWQqIG5ld1N0b3JhZ2UgPSAwOworICAgIERlZmVy
R0MgZGVmZXIoKmNhbGxGcmFtZS0+aGVhcCgpKTsKICAgICBpZiAoIWNhbGxGcmFtZS0+aGVhcCgp
LT50cnlBbGxvY2F0ZVN0b3JhZ2UodGhpcywgcmVxdWlyZWRTaXplICogc2l6ZW9mKEVudHJ5KSwg
Jm5ld1N0b3JhZ2UpKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihjYWxsRnJhbWUp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIERlZmVyR0MgZGVmZXIoKmNhbGxG
cmFtZS0+aGVhcCgpKTsKICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19jYXN0PEVudHJ5
Kj4obmV3U3RvcmFnZSk7CiAgICAgaWYgKHNob3VsZFBhY2soKSkKICAgICAgICAgcmVwbGFjZUFu
ZFBhY2tCYWNraW5nU3RvcmUobmV3RW50cmllcywgcmVxdWlyZWRTaXplKTsKICAgICBlbHNlCiAg
ICAgICAgIHJlcGxhY2VCYWNraW5nU3RvcmUobmV3RW50cmllcywgcmVxdWlyZWRTaXplKTsKKyAg
ICBIZWFwOjp3cml0ZUJhcnJpZXIodGhpcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24g
MTYxMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKFYKICAgICBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXph
dGlvbihzdHJ1Y3R1cmVzLCBzdHJ1Y3R1cmUsIHRhYmxlKTsKICAgICAKICAgICBpZiAodGFibGUp
IHsKLSAgICAgICAgdGFibGUgPSB0YWJsZS0+Y29weSh2bSwgMCwgbnVtYmVyT2ZTbG90c0Zvckxh
c3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKTsKKyAgICAgICAgdGFibGUgPSB0
YWJsZS0+Y29weSh2bSwgc3RydWN0dXJlLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29m
ZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOwogICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51bmxv
Y2soKTsKICAgICB9CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>