<?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>112072</bug_id>
          
          <creation_ts>2013-03-11 15:05:08 -0700</creation_ts>
          <short_desc>Replace static_casts with to* functions - Part 2</short_desc>
          <delta_ts>2013-03-12 10:46:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          <dependson>112097</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Abhishek Arya">inferno</reporter>
          <assigned_to name="Abhishek Arya">inferno</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852769</commentid>
    <comment_count>0</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-11 15:05:08 -0700</bug_when>
    <thetext>Replace static_casts with to* functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852772</commentid>
    <comment_count>1</comment_count>
      <attachid>192570</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-11 15:08:23 -0700</bug_when>
    <thetext>Created attachment 192570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852787</commentid>
    <comment_count>2</comment_count>
      <attachid>192570</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-11 15:29:09 -0700</bug_when>
    <thetext>Comment on attachment 192570
Patch

Can you add a bit more to the ChangeLog so people aren&apos;t confused when they see this in a few years? Just a small summary of what we&apos;re doing here.

LGTM otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852799</commentid>
    <comment_count>3</comment_count>
      <attachid>192579</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-11 15:35:50 -0700</bug_when>
    <thetext>Created attachment 192579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852989</commentid>
    <comment_count>4</comment_count>
      <attachid>192579</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 19:01:25 -0700</bug_when>
    <thetext>Comment on attachment 192579
Patch

Clearing flags on attachment: 192579

Committed r145462: &lt;http://trac.webkit.org/changeset/145462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852990</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 19:01:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853016</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 19:49:33 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 112097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853026</commentid>
    <comment_count>7</comment_count>
      <attachid>192629</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-11 20:11:42 -0700</bug_when>
    <thetext>Created attachment 192629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853081</commentid>
    <comment_count>8</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-11 22:47:27 -0700</bug_when>
    <thetext>Loads of toElement() crashes in WebCore::ApplyStyleCommand::applyBlockStyle

http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r145468%20(7365)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853084</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-11 22:52:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Loads of toElement() crashes in WebCore::ApplyStyleCommand::applyBlockStyle
&gt; 
&gt; http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r145468%20(7365)/results.html

That&apos;s a false positive. We should be using toContainerNode instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853086</commentid>
    <comment_count>10</comment_count>
      <attachid>192629</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-11 22:54:54 -0700</bug_when>
    <thetext>Comment on attachment 192629
Patch

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

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:294
&gt; -    startRange = TextIterator::rangeFromLocationAndLength(static_cast&lt;Element*&gt;(scope), startIndex, 0, true);
&gt; -    endRange = TextIterator::rangeFromLocationAndLength(static_cast&lt;Element*&gt;(scope), endIndex, 0, true);
&gt; +    startRange = TextIterator::rangeFromLocationAndLength(toElement(scope), startIndex, 0, true);
&gt; +    endRange = TextIterator::rangeFromLocationAndLength(toElement(scope), endIndex, 0, true);

Please use toContainerNode here. scope can be Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853087</commentid>
    <comment_count>11</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-11 22:58:06 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 192629 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192629&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/ApplyStyleCommand.cpp:294
&gt; &gt; -    startRange = TextIterator::rangeFromLocationAndLength(static_cast&lt;Element*&gt;(scope), startIndex, 0, true);
&gt; &gt; -    endRange = TextIterator::rangeFromLocationAndLength(static_cast&lt;Element*&gt;(scope), endIndex, 0, true);
&gt; &gt; +    startRange = TextIterator::rangeFromLocationAndLength(toElement(scope), startIndex, 0, true);
&gt; &gt; +    endRange = TextIterator::rangeFromLocationAndLength(toElement(scope), endIndex, 0, true);
&gt; 
&gt; Please use toContainerNode here. scope can be Document.

Thanks a lot Ryosuke for confirming. I don&apos;t understand why cr-linux-debug didnt shout at me :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853089</commentid>
    <comment_count>12</comment_count>
      <attachid>192643</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-11 22:58:41 -0700</bug_when>
    <thetext>Created attachment 192643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853090</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-11 22:58:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt;
&gt; Thanks a lot Ryosuke for confirming. I don&apos;t understand why cr-linux-debug didnt shout at me :(.

cr-linux-debug doesn&apos;t run tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853532</commentid>
    <comment_count>14</comment_count>
      <attachid>192643</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-12 09:10:37 -0700</bug_when>
    <thetext>Comment on attachment 192643
Patch

Attachment 192643 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17174047

New failing tests:
platform/mac/fast/speechsynthesis/speech-synthesis-speak.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853569</commentid>
    <comment_count>15</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-12 09:55:00 -0700</bug_when>
    <thetext>Lets me check these out locally, they might be real bugs.

Regressions: Unexpected crashes (2)
  editing/selection/selection-modify-crash.html [ Crash ]
  platform/mac/fast/speechsynthesis/speech-synthesis-speak.html [ Crash ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853577</commentid>
    <comment_count>16</comment_count>
      <attachid>192643</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-03-12 10:16:32 -0700</bug_when>
    <thetext>Comment on attachment 192643
Patch

Nothing crashes locally on mac, going cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853602</commentid>
    <comment_count>17</comment_count>
      <attachid>192643</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 10:46:50 -0700</bug_when>
    <thetext>Comment on attachment 192643
Patch

Clearing flags on attachment: 192643

Committed r145562: &lt;http://trac.webkit.org/changeset/145562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853603</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 10:46:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192570</attachid>
            <date>2013-03-11 15:08:23 -0700</date>
            <delta_ts>2013-03-11 15:35:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112072-20130311150422.patch</filename>
            <type>text/plain</type>
            <size>31713</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODliZjE1YWEwMGI1Y2E3
Yzk1MGE1NDRlMzQyMTY4YjQ2NDA0MTg1Yy4uMzcwODUyODJjYmJmYTk2MjJkZDFlZmEyNzFlMjIz
Y2ZmYjAyY2NlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTAzLTExICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNhblNldEZv
Y3VzQXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAg
KGtpdENsYXNzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TGF6eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5l
ck9iamVjdCk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAgICAgICAgKiBlZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTGVnYWN5QXBwbGVTdHls
ZVNwYW4pOgorICAgICAgICAoV2ViQ29yZTo6aXNFbXB0eUZvbnRUYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6CisgICAgICAgICogZWRp
dGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50
Rm9yRm9ybWF0QmxvY2spOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNNYWlsUGFzdGVBc1F1b3RhdGlvbk5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aGF2ZVNhbWVUYWdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVT
cGFuSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpt
YWtlSW5zZXJ0ZWRDb250ZW50Um91bmRUcmlwcGFibGVXaXRoSFRNTFRyZWVCdWlsZGVyKToKKyAg
ICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UGFnZTo6cmVzdG9yZSk6CisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGlvbnMpOgorICAgICAgICAqIGh0
bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkhl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6aXNJ
bkZvb3QpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoTm9kZSk6CisgICAgICAgICog
cGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVyTWFy
a3VwQWNjdW11bGF0b3I6OmFwcGVuZEN1c3RvbUF0dHJpYnV0ZXMpOgorICAgICAgICAqIHBsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRWYWx1
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpoYW5kbGVVbmF2YWlsYWJsZVBsdWdp
bkluZGljYXRvckV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om5hbWUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6bWVkaWFF
bGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmF1dG9zYXZlTmFtZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHRDb250cm9sOjp0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OnVwZGF0ZVVzZXJNb2RpZnlQcm9wZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
RmVuY2VkOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxG
cmFjdGlvbjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFy
c2VyOjpYTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBh
cnNlcjo6ZW5kRWxlbWVudE5zKToKKwogMjAxMy0wMy0xMSAgRGltYSBHb3JiaWsgIDxkZ29yYmlr
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgZm9yIHIxNDUzOTcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNWEwYTE3YTZhZjUyNzNjZWIzNzhmMWZhNDBlYjBmYzgzMWI5MGEz
YS4uNzRiNjBkOTU3M2JiODM1NzJkZTkyYTBhYWQ0MzM1NGI4ZDAzNTU2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMy0wMy0xMSAgQWJoaXNoZWsgQXJ5
YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3Rz
IHdpdGggdG8qIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMjA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjpmb2N1c2VkTm9kZUNoYW5nZWQpOgorICAgICAgICAqIHNyYy9D
b250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNs
aWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKiBzcmMv
RE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxFbGVtZW50
KToKKyAgICAgICAgKiBzcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcDoKKyAgICAgICAgKEhU
TUxOYW1lczo6SXNTZWxlY3RJbkRlZmF1bHRTdGF0ZSk6CisKKzIwMTMtMDMtMTEgIEFiaGlzaGVr
IEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KKwogICAgICAgICBBZGQgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04gdG8gY2F0Y2ggYmFkIGNhc3RzLgogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDYwCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCA3ZDkxYzUyNDQ0ZDQzMTBlZWYxMjU1N2NkYjIyNWI3ZDUwNDI4ODEyLi42MDc2YWQwNzY3
OTRiOWY3YzIyYjE5NDhjOWQxMTFjNzg3ZmZiYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTMtMDMtMTEgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXBsYWNlIHN0YXRpY19jYXN0cyB3aXRoIHRvKiBmdW5jdGlvbnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwNzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfZW50ZXJGdWxsc2NyZWVuRm9yTm9kZTpX
ZWJDb3JlOjpdKToKKwogMjAxMy0wMy0wNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBkaWRGb2N1c1RleHRGaWVsZDppbkZyYW1lIHRvIFdlYkZv
cm1EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3QuY3BwCmluZGV4IDc4ZjQ0YWI1YTZmNGY0NjE5MjE5NWViZDM2ZjJm
YzgwOThmMjgzNTQuLjZhNDllN2RiZmQ5ZGYwYmRiOGM4NzAwMDAyMjZmNjJiZTRhMTFjNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6
OmNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3QKICAgICBpZiAoIW5vZGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkp
LT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgpKS0+
aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6
OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NLm1tCmluZGV4IGYyMjc4NjgyNzA3YzRkN2ZlODY4NmI4MTJhOGNlMGJhM2RmYTdh
NmEuLmRjNmE4NDkwMTBiMmZjNGRiMzJiZGNkYTNmNGQ4YzEzYzE3NDZkNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0yOTUsNyArMjk1LDcgQEAgQ2xhc3Mga2l0Q2xhc3Mo
V2ViQ29yZTo6Tm9kZSogaW1wbCkKICAgICBzd2l0Y2ggKGltcGwtPm5vZGVUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpFTEVNRU5UX05PREU6CiAgICAgICAgICAgICBpZiAo
aW1wbC0+aXNIVE1MRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpl
bGVtZW50Q2xhc3Moc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQqPihpbXBsKS0+dGFn
UU5hbWUoKSwgW0RPTUhUTUxFbGVtZW50IGNsYXNzXSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OmVsZW1lbnRDbGFzcyh0b0hUTUxFbGVtZW50KGltcGwpLT50YWdRTmFtZSgpLCBb
RE9NSFRNTEVsZW1lbnQgY2xhc3NdKTsKICNpZiBFTkFCTEUoU1ZHX0RPTV9PQkpDX0JJTkRJTkdT
KQogICAgICAgICAgICAgaWYgKGltcGwtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBXZWJDb3JlOjplbGVtZW50Q2xhc3Moc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U1ZHRWxl
bWVudCo+KGltcGwpLT50YWdRTmFtZSgpLCBbRE9NU1ZHRWxlbWVudCBjbGFzc10pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAppbmRl
eCA3NzQ4MjI3YWU3NDM1YjgwOWE2MjdlMjU3NDVmOWM2ZTBiZjFjZWMzLi5hNzRlNWIwOWIyYjQz
ODU5OTY3NjQxMjkyMGYwMmJiOGVmM2M2NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50
ID0gMDsKICAgICBpZiAobV9ub2RlICYmIG1fbm9kZS0+aXNIVE1MRWxlbWVudCgpKQotICAgICAg
ICBmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obV9ub2RlKS0+Zm9ybSgp
OworICAgICAgICBmb3JtRWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9ub2RlKS0+Zm9ybSgpOwog
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBub2RlV3JhcHBlciA9IHRvT2JqZWN0V3JhcHBl
cjxOb2RlPihtX25vZGUsIGlzb2xhdGUpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZm9y
bVdyYXBwZXIgPSB0b09iamVjdFdyYXBwZXI8SFRNTEZvcm1FbGVtZW50Pihmb3JtRWxlbWVudCwg
aXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGVhZjAz
ZTMyNzNkMDE3ODlhNjAwOGU5OTEzMzZiMDIwNDE2ZGEwOGMuLmNiMzgzN2UwY2JhOWFhOTExZDNh
M2U2OWExMTRjYzY5MzAwNjJiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCkBAIC02NTYsNyArNjU2LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNv
bnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCiAgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUocHJvZ3Jlc3NUYWcpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEhUTUxQcm9ncmVzc0VsZW1lbnQqIHByb2dyZXNzID0gc3RhdGljX2Nhc3Q8
SFRNTFByb2dyZXNzRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBIVE1M
UHJvZ3Jlc3NFbGVtZW50KiBwcm9ncmVzcyA9IHRvSFRNTFByb2dyZXNzRWxlbWVudChlbGVtZW50
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzICYmICFwcm9ncmVzcy0+aXNEZXRl
cm1pbmF0ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAppbmRleCBjZjY4NDhkYzY5ZDlkMTBhODk0YzZmZjM3ZTVhYjZlOThjNmQ0NTM2
Li5lM2U4M2Q0NDQwZWJkNWJiZmQ5Njk0NTkwNzhkYjQxM2E3YjA1MjkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtNjcsNyArNjcsNyBAQCBi
b29sIGlzTGVnYWN5QXBwbGVTdHlsZVNwYW4oY29uc3QgTm9kZSAqbm9kZSkKICAgICBpZiAoIW5v
ZGUgfHwgIW5vZGUtPmlzSFRNTEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgY29uc3QgSFRNTEVsZW1lbnQqIGVsZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVu
dCo+KG5vZGUpOworICAgIGNvbnN0IEhUTUxFbGVtZW50KiBlbGVtID0gdG9IVE1MRWxlbWVudChu
b2RlKTsKICAgICByZXR1cm4gZWxlbS0+aGFzTG9jYWxOYW1lKHNwYW5BdHRyKSAmJiBlbGVtLT5n
ZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBzdHlsZVNwYW5DbGFzc1N0cmluZygpOwogfQogCkBA
IC0xMDYsNyArMTA2LDcgQEAgYm9vbCBpc0VtcHR5Rm9udFRhZyhjb25zdCBFbGVtZW50KiBlbGVt
ZW50LCBTaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkgc2hvdWxkU3QKICAgICBpZiAoIWVsZW1l
bnQgfHwgIWVsZW1lbnQtPmhhc1RhZ05hbWUoZm9udFRhZykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBoYXNOb0F0dHJpYnV0ZU9yT25seVN0eWxlQXR0cmlidXRlKHN0YXRp
Y19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4oZWxlbWVudCksIHNob3VsZFN0eWxlQXR0cmlidXRl
QmVFbXB0eSk7CisgICAgcmV0dXJuIGhhc05vQXR0cmlidXRlT3JPbmx5U3R5bGVBdHRyaWJ1dGUo
dG9IVE1MRWxlbWVudChlbGVtZW50KSwgc2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5KTsKIH0K
IAogc3RhdGljIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRm9udEVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMjkwLDggKzI5MCw4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFw
cGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUgKnN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBo
U3RhcnQgPSBlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAg
ICAKLSAgICBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChzdGF0aWNfY2FzdDxFbGVtZW50Kj4oc2NvcGUpLCBzdGFydEluZGV4LCAwLCB0cnVlKTsK
LSAgICBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNjb3BlKSwgZW5kSW5kZXgsIDAsIHRydWUpOworICAgIHN0
YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRvRWxl
bWVudChzY29wZSksIHN0YXJ0SW5kZXgsIDAsIHRydWUpOworICAgIGVuZFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCh0b0VsZW1lbnQoc2NvcGUpLCBlbmRJ
bmRleCwgMCwgdHJ1ZSk7CiAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCiAgICAgICAg
IHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zv
cm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2Nr
Q29tbWFuZC5jcHAKaW5kZXggZWRmM2FhNWQ2ZmFkNmIwNjRlMDlhNDE1MDEwNmU0MWYxZGU2ZjRi
Zi4uNWE4YmY2ZjExZGYxZDk0ODY5ZDdkZjAzNjM3N2E5OWFiOTc5ZjA3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcApAQCAtNDIsNyArNDIsNyBA
QCBzdGF0aWMgTm9kZSogZW5jbG9zaW5nQmxvY2tUb1NwbGl0VHJlZVRvKE5vZGUqIHN0YXJ0Tm9k
ZSk7CiBzdGF0aWMgYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lKTsKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9j
ayhOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaXNF
bGVtZW50Rm9yRm9ybWF0QmxvY2soc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT50YWdRTmFt
ZSgpKTsKKyAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIGlzRWxlbWVudEZvckZv
cm1hdEJsb2NrKHRvRWxlbWVudChub2RlKS0+dGFnUU5hbWUoKSk7CiB9CiAKIEZvcm1hdEJsb2Nr
Q29tbWFuZDo6Rm9ybWF0QmxvY2tDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGYxMDRlMDI3NDRmOTlhODI0YTRkOGZhM2Ez
Y2FiM2I4ZWZhNTk1YjMuLjhmNWUzYWQ5ZmVjMTJlN2RmZGYyMTlkZDg4MGFkNmE3NjQyZjIzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAgYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
c2hvdWxkTWVyZ2VFbmQoYm9vbCBzZWxlY3Rpb25FbmRXYXNFbmRPZlBhcmFncmFwaCkKIAogc3Rh
dGljIGJvb2wgaXNNYWlsUGFzdGVBc1F1b3RhdGlvbk5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsK
LSAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpICYmIG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9kZSkt
PmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IEFwcGxlUGFzdGVBc1F1b3RhdGlvbjsKKyAgICBy
ZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpICYmIG5vZGUtPmlz
RWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIp
ID09IEFwcGxlUGFzdGVBc1F1b3RhdGlvbjsKIH0KIAogc3RhdGljIGJvb2wgaXNIZWFkZXJFbGVt
ZW50KGNvbnN0IE5vZGUqIGEpCkBAIC00NDQsNyArNDQ0LDcgQEAgc3RhdGljIGJvb2wgaXNIZWFk
ZXJFbGVtZW50KGNvbnN0IE5vZGUqIGEpCiAKIHN0YXRpYyBib29sIGhhdmVTYW1lVGFnTmFtZShO
b2RlKiBhLCBOb2RlKiBiKQogewotICAgIHJldHVybiBhICYmIGIgJiYgYS0+aXNFbGVtZW50Tm9k
ZSgpICYmIGItPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oYSktPnRh
Z05hbWUoKSA9PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oYiktPnRhZ05hbWUoKTsKKyAgICByZXR1
cm4gYSAmJiBiICYmIGEtPmlzRWxlbWVudE5vZGUoKSAmJiBiLT5pc0VsZW1lbnROb2RlKCkgJiYg
dG9FbGVtZW50KGEpLT50YWdOYW1lKCkgPT0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGIpLT50YWdO
YW1lKCk7CiB9CiAKIGJvb2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZE1lcmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc291cmNlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGRlc3Rp
bmF0aW9uKQpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAg
ICAgIGlmIChpbmxpbmVTdHlsZSkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVs
ZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1lPiBhdHRyaWJ1
dGVzOwotICAgICAgICAgICAgICAgIEhUTUxFbGVtZW50KiBodG1sRWxlbWVudCA9IHN0YXRpY19j
YXN0PEhUTUxFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgICAgICAgICAgSFRNTEVsZW1lbnQq
IGh0bWxFbGVtZW50ID0gdG9IVE1MRWxlbWVudChlbGVtZW50KTsKIAogICAgICAgICAgICAgICAg
IGlmIChuZXdJbmxpbmVTdHlsZS0+Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQo
aHRtbEVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGUuZy4gPGIgc3R5bGU9ImZv
bnQtd2VpZ2h0OiBub3JtYWw7Ij4gaXMgY29udmVydGVkIHRvIDxzcGFuIHN0eWxlPSJmb250LXdl
aWdodDogbm9ybWFsOyI+CkBAIC02MjUsOCArNjI1LDggQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6bWFrZUluc2VydGVkQ29udGVudFJvdW5kVHJpcHBhYmxlV2l0aEhUTUxUcmVlQnVp
bGQKICAgICAgICAgaWYgKCFub2RlLT5pc0hUTUxFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBpZiAoaXNQcm9oaWJpdGVkUGFyYWdyYXBoQ2hpbGQoc3RhdGljX2Nh
c3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihub2RlLmdldCgpKS0+bG9jYWxOYW1lKCkpKSB7Ci0gICAg
ICAgICAgICBpZiAoSFRNTEVsZW1lbnQqIHBhcmFncmFwaEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MRWxlbWVudCo+KGVuY2xvc2luZ05vZGVXaXRoVGFnKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVO
b2RlKG5vZGUuZ2V0KCkpLCBwVGFnKSkpCisgICAgICAgIGlmIChpc1Byb2hpYml0ZWRQYXJhZ3Jh
cGhDaGlsZCh0b0hUTUxFbGVtZW50KG5vZGUuZ2V0KCkpLT5sb2NhbE5hbWUoKSkpIHsKKyAgICAg
ICAgICAgIGlmIChIVE1MRWxlbWVudCogcGFyYWdyYXBoRWxlbWVudCA9IHRvSFRNTEVsZW1lbnQo
ZW5jbG9zaW5nTm9kZVdpdGhUYWcocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZS5nZXQo
KSksIHBUYWcpKSkKICAgICAgICAgICAgICAgICBtb3ZlTm9kZU91dE9mQW5jZXN0b3Iobm9kZSwg
cGFyYWdyYXBoRWxlbWVudCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVk
UGFnZS5jcHAKaW5kZXggM2RkYjhlYTNmMTNjYWZkNzMyYTA4NzZkMWQ5MWJhZGU5MzJjMTJmMS4u
ZDhmMGFjNGU0Y2YyN2M0MDU4NjNkZjNmNjc0MTExZTg0MDYzY2E2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgQ2FjaGVkUGFnZTo6
cmVzdG9yZShQYWdlKiBwYWdlKQogICAgIERvY3VtZW50KiBmb2N1c2VkRG9jdW1lbnQgPSBwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAg
ICAgaWYgKE5vZGUqIG5vZGUgPSBmb2N1c2VkRG9jdW1lbnQtPmZvY3VzZWROb2RlKCkpIHsKICAg
ICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKS0+dXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUpOworICAgICAgICAg
ICAgdG9FbGVtZW50KG5vZGUpLT51cGRhdGVGb2N1c0FwcGVhcmFuY2UodHJ1ZSk7CiAgICAgfQog
CiAgICAgaWYgKG1fbmVlZFN0eWxlUmVjYWxjRm9yVmlzaXRlZExpbmtzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IGYyMTQ3NzcxZmVhZTU1NjY0YmRhOWI2Yjg3
ZGQxOWRlOTg3YjU1NzkuLjdiYzlkMGNkMzJmYjM4MDFhMmJmYWFjNDMyNjViM2IzNGM3MzhhMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0yMzMsNyArMjMzLDcg
QEAgVmVjdG9yPENvbG9yPiBDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKSBjb25zdAogICAg
IEhUTUxEYXRhTGlzdEVsZW1lbnQqIGRhdGFMaXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpOwog
ICAgIGlmIChkYXRhTGlzdCkgewogICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlv
bnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBI
VE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQq
PihvcHRpb25zLT5pdGVtKGkpKTsgaSsrKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24gPSB0b0hUTUxPcHRpb25FbGVtZW50KG9wdGlvbnMt
Pml0ZW0oaSkpOyBpKyspIHsKICAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFs
dWUob3B0aW9uLT52YWx1ZSgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIENvbG9yIGNvbG9yKG9wdGlvbi0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCmluZGV4IDU1ZmI5YzIxMWEzNDY2YTUxYjQw
ZjU5MDllOTU1MTUyZDgzMDBlZWIuLjUyY2IwZWNiNWZkY2JkZmUxNzFkZDg2NmFhODYxODkyYTVl
NTE2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24uY3BwCkBAIC0zOSwxNyArMzksMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
c3RhdGljIGJvb2wgaXNJbkhlYWQoRWxlbWVudCogcm93KQogewotICAgIHJldHVybiByb3ctPnBh
cmVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocm93LT5wYXJlbnROb2RlKCkpLT5o
YXNMb2NhbE5hbWUodGhlYWRUYWcpOworICAgIHJldHVybiByb3ctPnBhcmVudE5vZGUoKSAmJiB0
b0VsZW1lbnQocm93LT5wYXJlbnROb2RlKCkpLT5oYXNMb2NhbE5hbWUodGhlYWRUYWcpOwogfQog
CiBzdGF0aWMgYm9vbCBpc0luQm9keShFbGVtZW50KiByb3cpCiB7Ci0gICAgcmV0dXJuIHJvdy0+
cGFyZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0PEVsZW1lbnQqPihyb3ctPnBhcmVudE5vZGUoKSkt
Pmhhc0xvY2FsTmFtZSh0Ym9keVRhZyk7CisgICAgcmV0dXJuIHJvdy0+cGFyZW50Tm9kZSgpICYm
IHRvRWxlbWVudChyb3ctPnBhcmVudE5vZGUoKSktPmhhc0xvY2FsTmFtZSh0Ym9keVRhZyk7CiB9
CiAKIHN0YXRpYyBib29sIGlzSW5Gb290KEVsZW1lbnQqIHJvdykKIHsKLSAgICByZXR1cm4gcm93
LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJvdy0+cGFyZW50Tm9kZSgp
KS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsKKyAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkg
JiYgdG9FbGVtZW50KHJvdy0+cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsK
IH0KIAogSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0Fm
dGVyKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlLCBIVE1MVGFibGVSb3dFbGVtZW50KiBwcmV2aW91
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXgg
ZjFkMDk4ZjQ0NDRiZGY5MzU3NWI3ZDg4MmQwMjE5N2ZmZjk0Y2ExYy4uM2RhZGMyODYzMGFhYTE5
NTNkZjk5NmVkYzkwZTU5NjNmOTQ1NWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTE3MCw4ICsxNzAsOCBAQCBib29sIERPTVBhdGNoU3Vw
cG9ydDo6aW5uZXJQYXRjaE5vZGUoRGlnZXN0KiBvbGREaWdlc3QsIERpZ2VzdCogbmV3RGlnZXN0
LCBFeGNlcAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFBhdGNoIGF0dHJpYnV0ZXMK
LSAgICBFbGVtZW50KiBvbGRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9sZE5vZGUp
OwotICAgIEVsZW1lbnQqIG5ld0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3Tm9k
ZSk7CisgICAgRWxlbWVudCogb2xkRWxlbWVudCA9IHRvRWxlbWVudChvbGROb2RlKTsKKyAgICBF
bGVtZW50KiBuZXdFbGVtZW50ID0gdG9FbGVtZW50KG5ld05vZGUpOwogICAgIGlmIChvbGREaWdl
c3QtPm1fYXR0cnNTSEExICE9IG5ld0RpZ2VzdC0+bV9hdHRyc1NIQTEpIHsKICAgICAgICAgLy8g
RklYTUU6IENyZWF0ZSBhIGZ1bmN0aW9uIGluIEVsZW1lbnQgZm9yIHJlbW92aW5nIGFsbCBwcm9w
ZXJ0aWVzLiBUYWtlIGluIGFjY291bnQgd2hldGhlciBkaWQvd2lsbE1vZGlmeUF0dHJpYnV0ZSBh
cmUgaW1wb3J0YW50LgogICAgICAgICBpZiAob2xkRWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhv
dXRVcGRhdGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA1
NTU3YjY3Y2IxM2M3Y2NmMmUzYmU4OTU2YjNhNGIxOWFlNjM3M2MzLi5hYWI5ZGQ4NTE3YjljYmM2
MWNkYTVjNzA4NGI4MmRlNTQ2ZjY1MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgU2VyaWFsaXplck1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIG91dCwgRWxlCiAgICAg
aWYgKCFlbGVtZW50LT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25lciA9IHN0YXRpY19jYXN0PEhUTUxG
cmFtZU93bmVyRWxlbWVudCo+KGVsZW1lbnQpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
ZnJhbWVPd25lciA9IHRvRnJhbWVPd25lckVsZW1lbnQoZWxlbWVudCk7CiAgICAgRnJhbWUqIGZy
YW1lID0gZnJhbWVPd25lci0+Y29udGVudEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMzdjZDAw
YjNlY2U0NGM4MDMzODA1NTk1ZTgzOTRjNzIzM2ZiYjgzYS4uMzY2OGU4Y2ZlNGNmNWJmOWU4Mzc4
NmFkNzUzNDI1MjVhMjRlMTQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC0xMzc0LDcgKzEzNzQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZh
cmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgTlBPYmplY3QqIHBsdWdpblNj
cmlwdE9iamVjdCA9IDA7CiAKICAgICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBs
ZXRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5o
YXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBz
dGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7
CisgICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSB0b0hUTUxQbHVnSW5FbGVtZW50KG1f
ZWxlbWVudCktPmdldE5QT2JqZWN0KCk7CiAKICAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4
cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93d3cubW96
aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgogICAgICAgICBpZiAocGx1
Z2luU2NyaXB0T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKaW5kZXggYWFiZTc2Y2NmYWQ5NWQ5OGI0YzkxNDVjZjU5NWUwNjYx
ZTY2ZTZhYS4uYTkwZDUyNGI2MTMyNGM4NDdmNDRmOTRkMDgyYzE0M2E3ZmJlNzg4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBA
IC0xNzEsMTEgKzE3MSwxMSBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBz
aG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogCiB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0Vs
ZW1lbnQobm9kZSgpKTsKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzUGx1Z2luRWxl
bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z0lu
RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4oZWxlbWVudCk7CisgICAg
SFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVsZW1lbnQgPSB0b0hUTUxQbHVnSW5FbGVtZW50KGVs
ZW1lbnQpOwogICAgIGlmIChwbHVnSW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA+IEhUTUxQbHVn
SW5FbGVtZW50OjpEaXNwbGF5aW5nU25hcHNob3QpIHsKICAgICAgICAgUmVuZGVyUGFydDo6cGFp
bnRDb250ZW50cyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgaWYgKCFwbHVnSW5F
bGVtZW50LT5pc1BsdWdJbkltYWdlRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJ
bWFnZSogc25hcHNob3QgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4ocGx1
Z0luRWxlbWVudCktPnNuYXBzaG90SW1hZ2UoKTsKKyAgICBJbWFnZSogc25hcHNob3QgPSB0b0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQocGx1Z0luRWxlbWVudCktPnNuYXBzaG90SW1hZ2UoKTsKICAg
ICBpZiAoc25hcHNob3QpCiAgICAgICAgIHBhaW50U25hcHNob3RJbWFnZShwYWludEluZm8sIHBh
aW50T2Zmc2V0LCBzbmFwc2hvdCk7CiB9CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JFdmVudChFdmVu
dCogZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBNb3VzZUV2ZW50KiBtb3VzZUV2
ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICBIVE1MUGx1Z0luRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4obm9kZSgpKTsK
KyAgICBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTFBsdWdJbkVsZW1lbnQobm9k
ZSgpKTsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZl
bnQgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0gTGVmdEJ1
dHRvbikgewogICAgICAgICBtX21vdXNlRG93bldhc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0
b3IgPSBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IobW91c2VFdmVudCk7CiAgICAgICAg
IGlmIChtX21vdXNlRG93bldhc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVlNzQ3NzhjMzEyZTc1YTZh
ZGM4NWYwNTVmODI0MjY2YTEyYTBkODQuLjM3NDFjMjFiMDEzNDdiYjUyZmU5Yjg3MjBkY2QyOWUw
NTk2NDNiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
Mjc2LDExICsyNzYsMTEgQEAgU3RyaW5nIFJlbmRlckxheWVyOjpuYW1lKCkgY29uc3QKICAgICBp
ZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyKCktPm5vZGUoKSkgewogICAgICAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICBuYW1lLmFwcGVuZCgnICcpOwotICAgICAg
ICAgICAgbmFtZS5hcHBlbmQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT50YWdOYW1lKCkp
OworICAgICAgICAgICAgbmFtZS5hcHBlbmQodG9FbGVtZW50KG5vZGUpLT50YWdOYW1lKCkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5oYXNJRCgpKSB7CiAgICAgICAgICAgICBuYW1l
LmFwcGVuZExpdGVyYWwoIiBpZD1cJyIpOwotICAgICAgICAgICAgbmFtZS5hcHBlbmQoc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5nZXRJZEF0dHJpYnV0ZSgpKTsKKyAgICAgICAgICAgIG5h
bWUuYXBwZW5kKHRvRWxlbWVudChub2RlKS0+Z2V0SWRBdHRyaWJ1dGUoKSk7CiAgICAgICAgICAg
ICBuYW1lLmFwcGVuZCgnXCcnKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lZGlhLmNwcAppbmRleCBjYWE0N2UyOTlmYzhjMTBmYWJmMzMxYWFlODRhOWU3YTBi
MWQ1NjAxLi5kOGYxZTg1MmVjNzNmMDE0ZjRhMzRmMjQyNDcxNWFkODlkNmU1ODhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVu
ZGVyTWVkaWE6On5SZW5kZXJNZWRpYSgpCiAKIEhUTUxNZWRpYUVsZW1lbnQqIFJlbmRlck1lZGlh
OjptZWRpYUVsZW1lbnQoKSBjb25zdAogeyAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1l
ZGlhRWxlbWVudCo+KG5vZGUoKSk7IAorICAgIHJldHVybiB0b01lZGlhRWxlbWVudChub2RlKCkp
OyAKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6bGF5b3V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IDZiOTA2MTY2MzVhMDRhNzUyNzZh
YmIwN2EwNjdjNTBjM2E1ODlkYmYuLmU1MThkOTYyYTIwNjkwYWEzM2NhNTA4MDYzZTE0YjJjM2Fl
ZDRlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hG
aWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
LmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEVWaXNpYmlsaXR5IFJlbmRlclNlYXJjaEZpZWxkOjp2
aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9uKCkgY29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5nJiBS
ZW5kZXJTZWFyY2hGaWVsZDo6YXV0b3NhdmVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJpYnV0ZShhdXRvc2F2ZUF0dHIpOwor
ICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgpKS0+Z2V0QXR0cmlidXRlKGF1dG9zYXZlQXR0cik7
CiB9CiAKIC8vIFBvcHVwTWVudUNsaWVudCBtZXRob2RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCBiZWQ0MWRjMjI1NDQ4NDRmOTI4MjQ1
N2Q1YTk0YjM5MDRlMWY0MmZlLi4xYzk1NTQxNDQ4MTczOGQ1MjI4NDMyMTViZDQyMDllNTRlZDIz
NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVuZGVyVGV4dENvbnRyb2w6On5SZW5kZXJUZXh0Q29udHJv
bCgpCiAKIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBSZW5kZXJUZXh0Q29udHJvbDo6dGV4
dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4obm9kZSgpKTsKKyAgICByZXR1cm4gdG9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudChub2RlKCkpOwogfQogCiBIVE1MRWxlbWVudCogUmVuZGVyVGV4
dENvbnRyb2w6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdApAQCAtODAsOSArODAsOSBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgdXBkYXRlVXNlck1vZGlmeVByb3BlcnR5KE5vZGUqIG5vZGUsIFJlbmRl
clN0eWxlKiBzdHlsZSkKICAgICBib29sIGlzUmVhZE9ubHlDb250cm9sID0gZmFsc2U7CiAKICAg
ICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSB0b0VsZW1lbnQobm9kZSk7CiAgICAgICAgIGlzRW5hYmxlZCA9IGVsZW1lbnQtPmlzRW5hYmxl
ZEZvcm1Db250cm9sKCk7Ci0gICAgICAgIGlzUmVhZE9ubHlDb250cm9sID0gZWxlbWVudC0+aXNU
ZXh0Rm9ybUNvbnRyb2woKSAmJiBzdGF0aWNfY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCo+KGVsZW1lbnQpLT5yZWFkT25seSgpOworICAgICAgICBpc1JlYWRPbmx5Q29udHJvbCA9IGVs
ZW1lbnQtPmlzVGV4dEZvcm1Db250cm9sKCkgJiYgdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dChlbGVtZW50KS0+cmVhZE9ubHkoKTsKICAgICB9CiAKICAgICBzdHlsZS0+c2V0VXNlck1vZGlm
eSgoaXNSZWFkT25seUNvbnRyb2wgfHwgIWlzRW5hYmxlZCkgPyBSRUFEX09OTFkgOiBSRUFEX1dS
SVRFX1BMQUlOVEVYVF9PTkxZKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAppbmRleCA5NjQwYWQ1OWJkZWNiMzAzODZl
NzkzYzEzNmQyMTgzNDYwNWM2ODI4Li5jNDA4YWFkOWI2YjZjNWNjODYyMGMzMmRhNzE3MTg2ZjVh
MTE3MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZlbmNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGZW5jZWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFJlbmRlck1hdGhNTEZlbmNl
ZDo6UmVuZGVyTWF0aE1MRmVuY2VkKEVsZW1lbnQqIGVsZW1lbnQpCiAKIHZvaWQgUmVuZGVyTWF0
aE1MRmVuY2VkOjp1cGRhdGVGcm9tRWxlbWVudCgpCiB7Ci0gICAgRWxlbWVudCogZmVuY2VkID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSk7CisgICAgRWxlbWVudCogZmVuY2VkID0gdG9F
bGVtZW50KG5vZGUoKSk7CiAgCiAgICAgLy8gRklYTUU6IEhhbmRsZSBvcGVuL2Nsb3NlIHZhbHVl
cyB3aXRoIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyICh0aGV5IHNob3VsZCBiZSB0cmVhdGVkIGxp
a2UgdGV4dCkuCiAgICAgQXRvbWljU3RyaW5nIG9wZW5WYWx1ZSA9IGZlbmNlZC0+Z2V0QXR0cmli
dXRlKE1hdGhNTE5hbWVzOjpvcGVuQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4IDU2MDNlYjU1
ODA4YjQwNGJjNTU0ZGMwMTVkOTRhMmQ2YWYwNTIwNjAuLjA1YTNlZjYzNTg1NjM2YTNmMThhZGJm
MTMxNmIwYjY2ZDY3OWMxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBpZiAoaXNF
bXB0eSgpKSAKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEVsZW1lbnQqIGZyYWN0aW9uID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSk7CisgICAgRWxlbWVudCogZnJhY3Rpb24gPSB0
b0VsZW1lbnQobm9kZSgpKTsKICAgICAKICAgICBSZW5kZXJPYmplY3QqIG51bWVyYXRvcldyYXBw
ZXIgPSBmaXJzdENoaWxkKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBkZW5vbWluYXRvcldyYXBwZXIg
PSBudW1lcmF0b3JXcmFwcGVyLT5uZXh0U2libGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDFiZDBm
MGM1ZjZhZDM3Y2Y3MjIwOTRkZjM1OWMwMDhmMmI3Yzg3NWUuLmU1YmQyMjNkOGI5ODcxNDRmZDNj
N2YzYjVhYjFmM2Q3Mjk1ZWNjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTU5OSw3ICs1OTksNyBAQCBY
TUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJh
Z21lbnQsIEVsZW1lbnQqIHBhcmVudAogICAgICAgICBDb250YWluZXJOb2RlKiBuID0gcGFyZW50
RWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5v
ZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBwYXJlbnRFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG4pOworICAgICAgICBwYXJlbnRFbGVtZW50ID0gdG9FbGVtZW50KG4p
OwogICAgIH0KIAogICAgIGlmIChlbGVtU3RhY2suaXNFbXB0eSgpKQpAQCAtODYzLDcgKzg2Myw3
IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcygpCiAgICAgaWYgKGhhY2tB
cm91bmRMaWJYTUxFbnRpdHlQYXJzaW5nQnVnKCkgJiYgY29udGV4dCgpLT5kZXB0aCA8PSBkZXB0
aFRyaWdnZXJpbmdFbnRpdHlFeHBhbnNpb24oKSkKICAgICAgICAgc2V0RGVwdGhUcmlnZ2VyaW5n
RW50aXR5RXhwYW5zaW9uKC0xKTsKIAotICAgIGlmICghc2NyaXB0aW5nQ29udGVudElzQWxsb3dl
ZChtX3NjcmlwdGluZ1Blcm1pc3Npb24pICYmIG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b1Njcmlw
dEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4uZ2V0KCkpKSkgeworICAgIGlmICghc2Ny
aXB0aW5nQ29udGVudElzQWxsb3dlZChtX3NjcmlwdGluZ1Blcm1pc3Npb24pICYmIG4tPmlzRWxl
bWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1lbnQodG9FbGVtZW50KG4uZ2V0KCkpKSkgewogICAg
ICAgICBwb3BDdXJyZW50Tm9kZSgpOwogICAgICAgICBuLT5yZW1vdmUoSUdOT1JFX0VYQ0VQVElP
Tik7CiAgICAgICAgIHJldHVybjsKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjplbmRFbGVtZW50TnMoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuLmdldCgpKTsKKyAgICBFbGVt
ZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG4uZ2V0KCkpOwogCiAgICAgLy8gVGhlIGVsZW1lbnQn
cyBwYXJlbnQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBkb2N1bWVudC4KICAg
ICAvLyBQYXJzaW5nIGNvbnRpbnVlcyBpbiB0aGlzIGNhc2UsIGJ1dCBzY3JpcHRzIGFyZW4ndCBl
eGVjdXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKaW5kZXggYjExMDg5M2RkNTM3OGU2OGU5ODFjMjFjNDg2Y2M5ZTEyNzRjMDVjMi4uMzQ4
Yzg3MzdkMWVhZDM3ZjE1ZGQyNDcwYjQ1ZmVjMGU1ODA2OTA0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTIzMSw3ICsyMzEsNyBA
QCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKiBub2RlKQog
ICAgICAgICAvLyBXZWJDb3JlOjpOb2RlLgogICAgICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3Qo
SW50UG9pbnQoMCwgMCkpOwogICAgICAgICAvLyBUaGlzIGNhc3QgbXVzdCBiZSB2YWxpZCBiZWNh
dXNlIG9mIHRoZSBpc0xpbmsoKSBjaGVjay4KLSAgICAgICAgaGl0VGVzdC5zZXRVUkxFbGVtZW50
KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKSk7CisgICAgICAgIGhpdFRlc3Quc2V0VVJMRWxl
bWVudCh0b0VsZW1lbnQobm9kZSkpOwogICAgICAgICBpZiAoaGl0VGVzdC5pc0xpdmVMaW5rKCkp
CiAgICAgICAgICAgICBmb2N1c1VSTCA9IGhpdFRlc3QuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50
SW1wbC5jcHAKaW5kZXggZGYyMWY0MjBkN2I5ZjdkNDRlMWI3Mjc4ZTcyZDllM2JhYzEyMjAyZC4u
ZTc3NzY0YWZlNWQxOWY2N2Y2MjE2ZWVkMzhkYWY4MDgzNWVhOWI4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC0y
MjYsNyArMjI2LDcgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJ
bXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygKICAgICAgICAgLy8gV2Uga25vdyB0
aGF0IGlmIGFic29sdXRlTWVkaWFVUkwoKSBpcyBub3QgZW1wdHksIHRoZW4gdGhpcwogICAgICAg
ICAvLyBpcyBhIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCA9Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oci5p
bm5lck5vblNoYXJlZE5vZGUoKSk7CisgICAgICAgICAgICB0b01lZGlhRWxlbWVudChyLmlubmVy
Tm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OnZpZGVvVGFnKSkKICAgICAgICAgICAgIGRhdGEubWVkaWFUeXBlID0gV2ViQ29u
dGV4dE1lbnVEYXRhOjpNZWRpYVR5cGVWaWRlbzsKICAgICAgICAgZWxzZSBpZiAobWVkaWFFbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9UYWcpKQpAQCAtMjY2LDcgKzI2Niw3IEBA
IFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9t
TWVudUZyb21EZWZhdWx0SXRlbXMoCiAgICAgICAgICAgICAgICAgaWYgKHBsdWdpbi0+cGx1Z2lu
KCktPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5t
ZWRpYUZsYWdzIHw9IFdlYkNvbnRleHRNZW51RGF0YTo6TWVkaWFDYW5QcmludDsKIAotICAgICAg
ICAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4oci5pbm5lck5vblNoYXJlZE5vZGUoKSk7Cisg
ICAgICAgICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z2luRWxlbWVudCA9IHRv
SFRNTFBsdWdJbkltYWdlRWxlbWVudChyLmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAg
ICAgICAgICBkYXRhLnNyY1VSTCA9IHBsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKHBsdWdpbkVsZW1lbnQtPnVybCgpKTsKICAgICAgICAgICAgICAgICBkYXRhLm1lZGlhRmxh
Z3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYUNhblNhdmU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKaW5kZXggZTY4OGJm
YWVkZTVmMmU2MmFkYjlhYTMyMjA5OTBiNTJlMTc5Y2I2OS4uMjc1ZTVmZWI2MDAyYzFiMDc1YzEy
ZmNlZDJjNDdjMjY0ODMzYmUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIEhUTUxOb2RlVHlwZT4KIEhUTUxOb2RlVHlwZSogdG9IVE1MRWxlbWVudChOb2RlKiBub2Rl
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmIChub2RlLT5pc0hUTUxFbGVt
ZW50KCkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlKS0+aGFzVGFn
TmFtZShuYW1lKSkgeworICAgICAgICAmJiB0b0hUTUxFbGVtZW50KG5vZGUpLT5oYXNUYWdOYW1l
KG5hbWUpKSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTm9kZVR5cGUqPihub2Rl
KTsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcAppbmRleCBiZTY2YWY4ZWE0NDM3ZDc2YWU1
MGJjODY1MjRjNjU4MDA3ZGM3ZDg2Li5jMzg1MjkxZjc5NmRmMjFhNjU4MTI2NGVhYzM3NTllMmE5
ZTMxZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hh
YmxlRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlYXJj
aGFibGVGb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIElzU2VsZWN0SW5EZWZh
dWx0U3RhdGUoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCkKICAgICAgICAgZm9yIChWZWN0b3I8
SFRNTEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0SXRlbXMuYmVnaW4oKSk7IGkgIT0g
bGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghKCppKS0+aGFzTG9jYWxO
YW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8
SFRNTE9wdGlvbkVsZW1lbnQqPigqaSk7CisgICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCog
b3B0aW9uRWxlbWVudCA9IHRvSFRNTE9wdGlvbkVsZW1lbnQoKmkpOwogICAgICAgICAgICAgaWYg
KG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkgIT0gb3B0aW9uRWxlbWVudC0+aGFzQXR0cmlidXRl
KHNlbGVjdGVkQXR0cikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJc1NlbGVjdEluRGVmYXVsdFN0YXRlKEhUTUxTZWxl
Y3RFbGVtZW50KiBzZWxlY3QpCiAgICAgZm9yIChWZWN0b3I8SFRNTEVsZW1lbnQqPjo6Y29uc3Rf
aXRlcmF0b3IgaShsaXN0SXRlbXMuYmVnaW4oKSk7IGkgIT0gbGlzdEl0ZW1zLmVuZCgpOyArK2kp
IHsKICAgICAgICAgaWYgKCEoKmkpLT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjpvcHRpb25UYWcp
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRp
b25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPigqaSk7CisgICAgICAg
IEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9IVE1MT3B0aW9uRWxlbWVudCgq
aSk7CiAgICAgICAgIGlmIChvcHRpb25FbGVtZW50LT5oYXNBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRy
KSkgewogICAgICAgICAgICAgLy8gVGhlIHBhZ2Ugc3BlY2lmaWVkIHRoZSBvcHRpb24gdG8gc2Vs
ZWN0LgogICAgICAgICAgICAgaW5pdGlhbFNlbGVjdGVkID0gb3B0aW9uRWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3NjZmOWQ0ZWI0NjRkYmIxYmYxZDA3ZmY5
Y2EyZGVmNGRmOWNkMzE2Li42NTdmOTIwYTQ0ZTkyZWUwN2ZhM2U3NjIyNWU1YzJjZDgxM2FjNTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02NDY2LDcgKzY0NjYsNyBA
QCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAtICh2b2lkKV9lbnRl
ckZ1bGxzY3JlZW5Gb3JOb2RlOihXZWJDb3JlOjpOb2RlKilub2RlCiB7CiAgICAgQVNTRVJUKG5v
ZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp2aWRlb1RhZykpOwotICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQq
Pihub2RlKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiB2aWRlb0VsZW1lbnQgPSB0b01lZGlhRWxl
bWVudChub2RlKTsKIAogICAgIGlmIChfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsK
ICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgbWVkaWFFbGVtZW50
XSA9PSB2aWRlb0VsZW1lbnQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192579</attachid>
            <date>2013-03-11 15:35:50 -0700</date>
            <delta_ts>2013-03-11 20:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112072-20130311153150.patch</filename>
            <type>text/plain</type>
            <size>32142</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODliZjE1YWEwMGI1Y2E3
Yzk1MGE1NDRlMzQyMTY4YjQ2NDA0MTg1Yy4uNDIyZDkzMTRjMzdhMDY1NTExNGExNzAwMjk4Yjll
ODExZDMwMGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTAzLTExICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlw
IFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0
aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAgICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3Rz
IGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlNZW51TGlzdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOgorICAgICAgICAqIGJp
bmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoa2l0Q2xhc3MpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5
RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXNMZWdhY3lBcHBsZVN0eWxlU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpp
c0VtcHR5Rm9udFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBw
bHlCbG9ja1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRGb3JGb3JtYXRCbG9jayk6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c01haWxQYXN0ZUFzUXVvdGF0aW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpoYXZlU2FtZVRh
Z05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1ha2VJbnNlcnRlZENvbnRlbnRSb3VuZFRyaXBw
YWJsZVdpdGhIVE1MVHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpyZXN0b3JlKToKKyAgICAgICAgKiBo
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBl
OjpzdWdnZXN0aW9ucyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc0luSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjppc0lu
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjppc0luRm9vdCk6CisgICAgICAgICogaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6
OmlubmVyUGF0Y2hOb2RlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXJNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ3VzdG9t
QXR0cmlidXRlcyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRP
YmplY3Q6OmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6bmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1lZGlhOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hG
aWVsZDo6YXV0b3NhdmVOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnRleHRGb3JtQ29u
dHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlVXNlck1vZGlmeVByb3BlcnR5
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCk6
CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMpOgorCiAyMDEz
LTAzLTExICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBi
dWlsZCBmb3IgcjE0NTM5NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1YTBhMTdhNmFm
NTI3M2NlYjM3OGYxZmE0MGViMGZjODMxYjkwYTNhLi4xMzE0ODAwM2EwZDliM2YwODA4MDkxOGU1
YjUxMTYwOTBjNTNhYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0
IEBACiAyMDEzLTAzLTExICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAK
KyAgICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgUGhpbGlwIFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rpb25zIGFy
ZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAgICAgIGhl
bHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6Zm9jdXNlZE5vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBzcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVD
bGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgICogc3Jj
L0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9IVE1MRWxlbWVu
dCk6CisgICAgICAgICogc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHA6CisgICAgICAgIChI
VE1MTmFtZXM6OklzU2VsZWN0SW5EZWZhdWx0U3RhdGUpOgorCisyMDEzLTAzLTExICBBYmhpc2hl
ayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgQWRkIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OIHRvIGNhdGNoIGJhZCBjYXN0cy4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA2MAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggN2Q5MWM1MjQ0NGQ0MzEwZWVmMTI1NTdjZGIyMjViN2Q1MDQyODgxMi4uYTgwMGViNDk0
MmI2NDJhNWQ3MWYxMzY2NmQ0Mjk1ZDdkMjliMTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEzLTAzLTExICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwIFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rp
b25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAg
ICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0
cnVjdHVyZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfZW50ZXJGdWxsc2NyZWVuRm9yTm9kZTpXZWJDb3JlOjpdKToKKwogMjAxMy0wMy0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkaWRG
b2N1c1RleHRGaWVsZDppbkZyYW1lIHRvIFdlYkZvcm1EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCmluZGV4
IDc4ZjQ0YWI1YTZmNGY0NjE5MjE5NWViZDM2ZjJmYzgwOThmMjgzNTQuLjZhNDllN2RiZmQ5ZGYw
YmRiOGM4NzAwMDAyMjZmNjJiZTRhMTFjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNhblNldEZvY3VzQXR0cmlidXRlKCkgY29u
c3QKICAgICBpZiAoIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOwor
ICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgpKS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKIH0K
IAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQg
b3B0aW9uSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IGYyMjc4Njgy
NzA3YzRkN2ZlODY4NmI4MTJhOGNlMGJhM2RmYTdhNmEuLmRjNmE4NDkwMTBiMmZjNGRiMzJiZGNk
YTNmNGQ4YzEzYzE3NDZkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0y
OTUsNyArMjk1LDcgQEAgQ2xhc3Mga2l0Q2xhc3MoV2ViQ29yZTo6Tm9kZSogaW1wbCkKICAgICBz
d2l0Y2ggKGltcGwtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpF
TEVNRU5UX05PREU6CiAgICAgICAgICAgICBpZiAoaW1wbC0+aXNIVE1MRWxlbWVudCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjplbGVtZW50Q2xhc3Moc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEVsZW1lbnQqPihpbXBsKS0+dGFnUU5hbWUoKSwgW0RPTUhUTUxFbGVtZW50IGNs
YXNzXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmVsZW1lbnRDbGFzcyh0b0hU
TUxFbGVtZW50KGltcGwpLT50YWdRTmFtZSgpLCBbRE9NSFRNTEVsZW1lbnQgY2xhc3NdKTsKICNp
ZiBFTkFCTEUoU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKQogICAgICAgICAgICAgaWYgKGltcGwtPmlz
U1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjplbGVtZW50Q2xh
c3Moc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudCo+KGltcGwpLT50YWdRTmFtZSgpLCBb
RE9NU1ZHRWxlbWVudCBjbGFzc10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA3NzQ4MjI3YWU3NDM1YjgwOWE2MjdlMjU3
NDVmOWM2ZTBiZjFjZWMzLi5hNzRlNWIwOWIyYjQzODU5OTY3NjQxMjkyMGYwMmJiOGVmM2M2NWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3Rl
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3Rl
bmVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJl
cGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKICAg
ICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50ID0gMDsKICAgICBpZiAobV9ub2RlICYmIG1f
bm9kZS0+aXNIVE1MRWxlbWVudCgpKQotICAgICAgICBmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxFbGVtZW50Kj4obV9ub2RlKS0+Zm9ybSgpOworICAgICAgICBmb3JtRWxlbWVudCA9IHRv
SFRNTEVsZW1lbnQobV9ub2RlKS0+Zm9ybSgpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBub2RlV3JhcHBlciA9IHRvT2JqZWN0V3JhcHBlcjxOb2RlPihtX25vZGUsIGlzb2xhdGUpOwog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZm9ybVdyYXBwZXIgPSB0b09iamVjdFdyYXBwZXI8
SFRNTEZvcm1FbGVtZW50Pihmb3JtRWxlbWVudCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGVhZjAzZTMyNzNkMDE3ODlhNjAwOGU5OTEzMzZiMDIw
NDE2ZGEwOGMuLmNiMzgzN2UwY2JhOWFhOTExZDNhM2U2OWExMTRjYzY5MzAwNjJiZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5B
QkxFKFBST0dSRVNTX0VMRU1FTlQpCiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUocHJvZ3Jlc3NUYWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEhUTUxQcm9ncmVzc0Vs
ZW1lbnQqIHByb2dyZXNzID0gc3RhdGljX2Nhc3Q8SFRNTFByb2dyZXNzRWxlbWVudCo+KGVsZW1l
bnQpOworICAgICAgICAgICAgICAgICAgICBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBwcm9ncmVzcyA9
IHRvSFRNTFByb2dyZXNzRWxlbWVudChlbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2dyZXNzICYmICFwcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjZjY4NDhkYzY5
ZDlkMTBhODk0YzZmZjM3ZTVhYjZlOThjNmQ0NTM2Li5lM2U4M2Q0NDQwZWJkNWJiZmQ5Njk0NTkw
NzhkYjQxM2E3YjA1MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcApAQCAtNjcsNyArNjcsNyBAQCBib29sIGlzTGVnYWN5QXBwbGVTdHlsZVNwYW4o
Y29uc3QgTm9kZSAqbm9kZSkKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSFRNTEVsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgSFRNTEVsZW1lbnQqIGVsZW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCo+KG5vZGUpOworICAgIGNvbnN0IEhUTUxF
bGVtZW50KiBlbGVtID0gdG9IVE1MRWxlbWVudChub2RlKTsKICAgICByZXR1cm4gZWxlbS0+aGFz
TG9jYWxOYW1lKHNwYW5BdHRyKSAmJiBlbGVtLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBz
dHlsZVNwYW5DbGFzc1N0cmluZygpOwogfQogCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBpc0Vt
cHR5Rm9udFRhZyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBTaG91bGRTdHlsZUF0dHJpYnV0ZUJl
RW1wdHkgc2hvdWxkU3QKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmhhc1RhZ05hbWUo
Zm9udFRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBoYXNOb0F0dHJp
YnV0ZU9yT25seVN0eWxlQXR0cmlidXRlKHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4o
ZWxlbWVudCksIHNob3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSk7CisgICAgcmV0dXJuIGhhc05v
QXR0cmlidXRlT3JPbmx5U3R5bGVBdHRyaWJ1dGUodG9IVE1MRWxlbWVudChlbGVtZW50KSwgc2hv
dWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5KTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8RWxlbWVu
dD4gY3JlYXRlRm9udEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjkwLDggKzI5MCw4
IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUg
KnN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChwYXJh
Z3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
c2NvcGUpLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICBlbmRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNjb3Bl
KSwgZW5kSW5kZXgsIDAsIHRydWUpOworICAgIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRvRWxlbWVudChzY29wZSksIHN0YXJ0SW5kZXgsIDAs
IHRydWUpOworICAgIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCh0b0VsZW1lbnQoc2NvcGUpLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CiAgICAgaWYgKHN0
YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCiAgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggZWRmM2FhNWQ2
ZmFkNmIwNjRlMDlhNDE1MDEwNmU0MWYxZGU2ZjRiZi4uNWE4YmY2ZjExZGYxZDk0ODY5ZDdkZjAz
NjM3N2E5OWFiOTc5ZjA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3Jt
YXRCbG9ja0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0Qmxv
Y2tDb21tYW5kLmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgTm9kZSogZW5jbG9zaW5nQmxv
Y2tUb1NwbGl0VHJlZVRvKE5vZGUqIHN0YXJ0Tm9kZSk7CiBzdGF0aWMgYm9vbCBpc0VsZW1lbnRG
b3JGb3JtYXRCbG9jayhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhOb2RlKiBub2RlKQogewotICAgIHJldHVy
biBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaXNFbGVtZW50Rm9yRm9ybWF0QmxvY2soc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT50YWdRTmFtZSgpKTsKKyAgICByZXR1cm4gbm9kZS0+aXNF
bGVtZW50Tm9kZSgpICYmIGlzRWxlbWVudEZvckZvcm1hdEJsb2NrKHRvRWxlbWVudChub2RlKS0+
dGFnUU5hbWUoKSk7CiB9CiAKIEZvcm1hdEJsb2NrQ29tbWFuZDo6Rm9ybWF0QmxvY2tDb21tYW5k
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmlu
ZGV4IGYxMDRlMDI3NDRmOTlhODI0YTRkOGZhM2EzY2FiM2I4ZWZhNTk1YjMuLjhmNWUzYWQ5ZmVj
MTJlN2RmZGYyMTlkZDg4MGFkNmE3NjQyZjIzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAg
Ym9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hvdWxkTWVyZ2VFbmQoYm9vbCBzZWxlY3Rp
b25FbmRXYXNFbmRPZlBhcmFncmFwaCkKIAogc3RhdGljIGJvb2wgaXNNYWlsUGFzdGVBc1F1b3Rh
dGlvbk5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5o
YXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0
aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09
IEFwcGxlUGFzdGVBc1F1b3RhdGlvbjsKKyAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdO
YW1lKGJsb2NrcXVvdGVUYWcpICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IEFwcGxlUGFzdGVBc1F1b3RhdGlvbjsK
IH0KIAogc3RhdGljIGJvb2wgaXNIZWFkZXJFbGVtZW50KGNvbnN0IE5vZGUqIGEpCkBAIC00NDQs
NyArNDQ0LDcgQEAgc3RhdGljIGJvb2wgaXNIZWFkZXJFbGVtZW50KGNvbnN0IE5vZGUqIGEpCiAK
IHN0YXRpYyBib29sIGhhdmVTYW1lVGFnTmFtZShOb2RlKiBhLCBOb2RlKiBiKQogewotICAgIHJl
dHVybiBhICYmIGIgJiYgYS0+aXNFbGVtZW50Tm9kZSgpICYmIGItPmlzRWxlbWVudE5vZGUoKSAm
JiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oYSktPnRhZ05hbWUoKSA9PSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4oYiktPnRhZ05hbWUoKTsKKyAgICByZXR1cm4gYSAmJiBiICYmIGEtPmlzRWxlbWVudE5v
ZGUoKSAmJiBiLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KGEpLT50YWdOYW1lKCkgPT0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KGIpLT50YWdOYW1lKCk7CiB9CiAKIGJvb2wgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OnNob3VsZE1lcmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc291cmNl
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGRlc3RpbmF0aW9uKQpAQCAtNDg2LDcgKzQ4Niw3IEBA
IHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtl
ZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgIGlmIChpbmxpbmVTdHlsZSkgewogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAg
IFZlY3RvcjxRdWFsaWZpZWROYW1lPiBhdHRyaWJ1dGVzOwotICAgICAgICAgICAgICAgIEhUTUxF
bGVtZW50KiBodG1sRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oZWxlbWVudCk7
CisgICAgICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGh0bWxFbGVtZW50ID0gdG9IVE1MRWxlbWVu
dChlbGVtZW50KTsKIAogICAgICAgICAgICAgICAgIGlmIChuZXdJbmxpbmVTdHlsZS0+Y29uZmxp
Y3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoaHRtbEVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIGUuZy4gPGIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7Ij4gaXMgY29u
dmVydGVkIHRvIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyI+CkBAIC02MjUsOCAr
NjI1LDggQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bWFrZUluc2VydGVkQ29udGVu
dFJvdW5kVHJpcHBhYmxlV2l0aEhUTUxUcmVlQnVpbGQKICAgICAgICAgaWYgKCFub2RlLT5pc0hU
TUxFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoaXNQcm9o
aWJpdGVkUGFyYWdyYXBoQ2hpbGQoc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihub2Rl
LmdldCgpKS0+bG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICBpZiAoSFRNTEVsZW1lbnQqIHBh
cmFncmFwaEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGVuY2xvc2luZ05vZGVX
aXRoVGFnKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUuZ2V0KCkpLCBwVGFnKSkpCisg
ICAgICAgIGlmIChpc1Byb2hpYml0ZWRQYXJhZ3JhcGhDaGlsZCh0b0hUTUxFbGVtZW50KG5vZGUu
Z2V0KCkpLT5sb2NhbE5hbWUoKSkpIHsKKyAgICAgICAgICAgIGlmIChIVE1MRWxlbWVudCogcGFy
YWdyYXBoRWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoZW5jbG9zaW5nTm9kZVdpdGhUYWcocG9zaXRp
b25JblBhcmVudEJlZm9yZU5vZGUobm9kZS5nZXQoKSksIHBUYWcpKSkKICAgICAgICAgICAgICAg
ICBtb3ZlTm9kZU91dE9mQW5jZXN0b3Iobm9kZSwgcGFyYWdyYXBoRWxlbWVudCk7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggM2RkYjhlYTNmMTNj
YWZkNzMyYTA4NzZkMWQ5MWJhZGU5MzJjMTJmMS4uZDhmMGFjNGU0Y2YyN2M0MDU4NjNkZjNmNjc0
MTExZTg0MDYzY2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIHZvaWQgQ2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlKiBwYWdlKQogICAgIERv
Y3VtZW50KiBmb2N1c2VkRG9jdW1lbnQgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSBmb2N1c2Vk
RG9jdW1lbnQtPmZvY3VzZWROb2RlKCkpIHsKICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5v
ZGUoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+dXBkYXRlRm9j
dXNBcHBlYXJhbmNlKHRydWUpOworICAgICAgICAgICAgdG9FbGVtZW50KG5vZGUpLT51cGRhdGVG
b2N1c0FwcGVhcmFuY2UodHJ1ZSk7CiAgICAgfQogCiAgICAgaWYgKG1fbmVlZFN0eWxlUmVjYWxj
Rm9yVmlzaXRlZExpbmtzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmlu
ZGV4IGYyMTQ3NzcxZmVhZTU1NjY0YmRhOWI2Yjg3ZGQxOWRlOTg3YjU1NzkuLjdiYzlkMGNkMzJm
YjM4MDFhMmJmYWFjNDMyNjViM2IzNGM3MzhhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgVmVjdG9yPENvbG9yPiBDb2xvcklucHV0
VHlwZTo6c3VnZ2VzdGlvbnMoKSBjb25zdAogICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQqIGRhdGFM
aXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpOwogICAgIGlmIChkYXRhTGlzdCkgewogICAgICAg
ICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0g
c3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihvcHRpb25zLT5pdGVtKGkpKTsgaSsrKSB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24g
PSB0b0hUTUxPcHRpb25FbGVtZW50KG9wdGlvbnMtPml0ZW0oaSkpOyBpKyspIHsKICAgICAgICAg
ICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUob3B0aW9uLT52YWx1ZSgpKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIENvbG9yIGNvbG9yKG9wdGlvbi0+dmFs
dWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24u
Y3BwCmluZGV4IDU1ZmI5YzIxMWEzNDY2YTUxYjQwZjU5MDllOTU1MTUyZDgzMDBlZWIuLjUyY2Iw
ZWNiNWZkY2JkZmUxNzFkZDg2NmFhODYxODkyYTVlNTE2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0zOSwxNyArMzksMTcgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGJvb2wgaXNJbkhlYWQoRWxlbWVu
dCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4ocm93LT5wYXJlbnROb2RlKCkpLT5oYXNMb2NhbE5hbWUodGhlYWRUYWcpOworICAg
IHJldHVybiByb3ctPnBhcmVudE5vZGUoKSAmJiB0b0VsZW1lbnQocm93LT5wYXJlbnROb2RlKCkp
LT5oYXNMb2NhbE5hbWUodGhlYWRUYWcpOwogfQogCiBzdGF0aWMgYm9vbCBpc0luQm9keShFbGVt
ZW50KiByb3cpCiB7Ci0gICAgcmV0dXJuIHJvdy0+cGFyZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihyb3ctPnBhcmVudE5vZGUoKSktPmhhc0xvY2FsTmFtZSh0Ym9keVRhZyk7Cisg
ICAgcmV0dXJuIHJvdy0+cGFyZW50Tm9kZSgpICYmIHRvRWxlbWVudChyb3ctPnBhcmVudE5vZGUo
KSktPmhhc0xvY2FsTmFtZSh0Ym9keVRhZyk7CiB9CiAKIHN0YXRpYyBib29sIGlzSW5Gb290KEVs
ZW1lbnQqIHJvdykKIHsKLSAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KHJvdy0+cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsK
KyAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgdG9FbGVtZW50KHJvdy0+cGFyZW50Tm9k
ZSgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsKIH0KIAogSFRNTFRhYmxlUm93RWxlbWVudCog
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxl
LCBIVE1MVGFibGVSb3dFbGVtZW50KiBwcmV2aW91cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggZjFkMDk4ZjQ0NDRiZGY5MzU3NWI3ZDg4MmQw
MjE5N2ZmZjk0Y2ExYy4uM2RhZGMyODYzMGFhYTE5NTNkZjk5NmVkYzkwZTU5NjNmOTQ1NWQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTE3
MCw4ICsxNzAsOCBAQCBib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaE5vZGUoRGlnZXN0
KiBvbGREaWdlc3QsIERpZ2VzdCogbmV3RGlnZXN0LCBFeGNlcAogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIFBhdGNoIGF0dHJpYnV0ZXMKLSAgICBFbGVtZW50KiBvbGRFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9sZE5vZGUpOwotICAgIEVsZW1lbnQqIG5ld0VsZW1lbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3Tm9kZSk7CisgICAgRWxlbWVudCogb2xkRWxlbWVu
dCA9IHRvRWxlbWVudChvbGROb2RlKTsKKyAgICBFbGVtZW50KiBuZXdFbGVtZW50ID0gdG9FbGVt
ZW50KG5ld05vZGUpOwogICAgIGlmIChvbGREaWdlc3QtPm1fYXR0cnNTSEExICE9IG5ld0RpZ2Vz
dC0+bV9hdHRyc1NIQTEpIHsKICAgICAgICAgLy8gRklYTUU6IENyZWF0ZSBhIGZ1bmN0aW9uIGlu
IEVsZW1lbnQgZm9yIHJlbW92aW5nIGFsbCBwcm9wZXJ0aWVzLiBUYWtlIGluIGFjY291bnQgd2hl
dGhlciBkaWQvd2lsbE1vZGlmeUF0dHJpYnV0ZSBhcmUgaW1wb3J0YW50LgogICAgICAgICBpZiAo
b2xkRWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA1NTU3YjY3Y2IxM2M3Y2NmMmUzYmU4OTU2YjNh
NGIxOWFlNjM3M2MzLi5hYWI5ZGQ4NTE3YjljYmM2MWNkYTVjNzA4NGI4MmRlNTQ2ZjY1MjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IHZvaWQgU2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVz
KFN0cmluZ0J1aWxkZXImIG91dCwgRWxlCiAgICAgaWYgKCFlbGVtZW50LT5pc0ZyYW1lT3duZXJF
bGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
ZnJhbWVPd25lciA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KGVsZW1lbnQp
OworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25lciA9IHRvRnJhbWVPd25lckVs
ZW1lbnQoZWxlbWVudCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZnJhbWVPd25lci0+Y29udGVudEZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMzdjZDAwYjNlY2U0NGM4MDMzODA1NTk1ZTgzOTRjNzIz
M2ZiYjgzYS4uMzY2OGU4Y2ZlNGNmNWJmOWU4Mzc4NmFkNzUzNDI1MjVhMjRlMTQyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzc0LDcgKzEzNzQsNyBAQCBOUEVy
cm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1
ZSkKICAgICAgICAgTlBPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdCA9IDA7CiAKICAgICAgICAg
aWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFn
TmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAg
ICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVu
dCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7CisgICAgICAgICAgICBwbHVnaW5TY3JpcHRP
YmplY3QgPSB0b0hUTUxQbHVnSW5FbGVtZW50KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7CiAK
ICAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBk
ZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25w
cnVudGltZS5odG1sPgogICAgICAgICBpZiAocGx1Z2luU2NyaXB0T2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggYWFi
ZTc2Y2NmYWQ5NWQ5OGI0YzkxNDVjZjU5NWUwNjYxZTY2ZTZhYS4uYTkwZDUyNGI2MTMyNGM4NDdm
NDRmOTRkMDgyYzE0M2E3ZmJlNzg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC0xNzEsMTEgKzE3MSwxMSBAQCB2b2lkIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dAogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRl
bnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkp
OworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSgpKTsKICAgICBpZiAoIWVs
ZW1lbnQgfHwgIWVsZW1lbnQtPmlzUGx1Z2luRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBIVE1MUGx1Z0luRWxlbWVudCogcGx1Z0luRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQ
bHVnSW5FbGVtZW50Kj4oZWxlbWVudCk7CisgICAgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVs
ZW1lbnQgPSB0b0hUTUxQbHVnSW5FbGVtZW50KGVsZW1lbnQpOwogICAgIGlmIChwbHVnSW5FbGVt
ZW50LT5kaXNwbGF5U3RhdGUoKSA+IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNwbGF5aW5nU25hcHNo
b3QpIHsKICAgICAgICAgUmVuZGVyUGFydDo6cGFpbnRDb250ZW50cyhwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50CiAgICAgaWYgKCFwbHVnSW5FbGVtZW50LT5pc1BsdWdJbkltYWdlRWxlbWVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogc25hcHNob3QgPSBzdGF0aWNfY2Fz
dDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4ocGx1Z0luRWxlbWVudCktPnNuYXBzaG90SW1hZ2Uo
KTsKKyAgICBJbWFnZSogc25hcHNob3QgPSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQocGx1Z0lu
RWxlbWVudCktPnNuYXBzaG90SW1hZ2UoKTsKICAgICBpZiAoc25hcHNob3QpCiAgICAgICAgIHBh
aW50U25hcHNob3RJbWFnZShwYWludEluZm8sIHBhaW50T2Zmc2V0LCBzbmFwc2hvdCk7CiB9CkBA
IC00MTcsNyArNDE3LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFp
bGFibGVQbHVnaW5JbmRpY2F0b3JFdmVudChFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVu
dCo+KGV2ZW50KTsKLSAgICBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxQbHVnSW5FbGVtZW50Kj4obm9kZSgpKTsKKyAgICBIVE1MUGx1Z0luRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTFBsdWdJbkVsZW1lbnQobm9kZSgpKTsKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVu
dCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBtX21vdXNlRG93
bldhc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IgPSBpc0luVW5hdmFpbGFibGVQbHVnaW5J
bmRpY2F0b3IobW91c2VFdmVudCk7CiAgICAgICAgIGlmIChtX21vdXNlRG93bldhc0luVW5hdmFp
bGFibGVQbHVnaW5JbmRpY2F0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCmluZGV4IDVlNzQ3NzhjMzEyZTc1YTZhZGM4NWYwNTVmODI0MjY2YTEyYTBkODQuLjM3
NDFjMjFiMDEzNDdiYjUyZmU5Yjg3MjBkY2QyOWUwNTk2NDNiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMjc2LDExICsyNzYsMTEgQEAgU3RyaW5nIFJl
bmRlckxheWVyOjpuYW1lKCkgY29uc3QKICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyKCkt
Pm5vZGUoKSkgewogICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAg
ICAgICBuYW1lLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgbmFtZS5hcHBlbmQoc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUpLT50YWdOYW1lKCkpOworICAgICAgICAgICAgbmFtZS5hcHBlbmQo
dG9FbGVtZW50KG5vZGUpLT50YWdOYW1lKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2Rl
LT5oYXNJRCgpKSB7CiAgICAgICAgICAgICBuYW1lLmFwcGVuZExpdGVyYWwoIiBpZD1cJyIpOwot
ICAgICAgICAgICAgbmFtZS5hcHBlbmQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5nZXRJ
ZEF0dHJpYnV0ZSgpKTsKKyAgICAgICAgICAgIG5hbWUuYXBwZW5kKHRvRWxlbWVudChub2RlKS0+
Z2V0SWRBdHRyaWJ1dGUoKSk7CiAgICAgICAgICAgICBuYW1lLmFwcGVuZCgnXCcnKTsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAppbmRleCBjYWE0
N2UyOTlmYzhjMTBmYWJmMzMxYWFlODRhOWU3YTBiMWQ1NjAxLi5kOGYxZTg1MmVjNzNmMDE0ZjRh
MzRmMjQyNDcxNWFkODlkNmU1ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVkaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZWRpYS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVuZGVyTWVkaWE6On5SZW5kZXJNZWRpYSgpCiAK
IEhUTUxNZWRpYUVsZW1lbnQqIFJlbmRlck1lZGlhOjptZWRpYUVsZW1lbnQoKSBjb25zdAogeyAK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUoKSk7IAorICAg
IHJldHVybiB0b01lZGlhRWxlbWVudChub2RlKCkpOyAKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6
bGF5b3V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCmluZGV4IDZiOTA2MTY2MzVhMDRhNzUyNzZhYmIwN2EwNjdjNTBjM2E1ODlkYmYuLmU1MThk
OTYyYTIwNjkwYWEzM2NhNTA4MDYzZTE0YjJjM2FlZDRlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEVW
aXNpYmlsaXR5IFJlbmRlclNlYXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9uKCkg
Y29uc3QKIAogY29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJTZWFyY2hGaWVsZDo6YXV0b3NhdmVO
YW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkt
PmdldEF0dHJpYnV0ZShhdXRvc2F2ZUF0dHIpOworICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgp
KS0+Z2V0QXR0cmlidXRlKGF1dG9zYXZlQXR0cik7CiB9CiAKIC8vIFBvcHVwTWVudUNsaWVudCBt
ZXRob2RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cAppbmRleCBiZWQ0MWRjMjI1NDQ4NDRmOTI4MjQ1N2Q1YTk0YjM5MDRlMWY0MmZlLi4xYzk1NTQx
NDQ4MTczOGQ1MjI4NDMyMTViZDQyMDllNTRlZDIzNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVuZGVy
VGV4dENvbnRyb2w6On5SZW5kZXJUZXh0Q29udHJvbCgpCiAKIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KiBSZW5kZXJUZXh0Q29udHJvbDo6dGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4o
bm9kZSgpKTsKKyAgICByZXR1cm4gdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKCkp
OwogfQogCiBIVE1MRWxlbWVudCogUmVuZGVyVGV4dENvbnRyb2w6OmlubmVyVGV4dEVsZW1lbnQo
KSBjb25zdApAQCAtODAsOSArODAsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdXBkYXRlVXNlck1v
ZGlmeVByb3BlcnR5KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBib29sIGlz
UmVhZE9ubHlDb250cm9sID0gZmFsc2U7CiAKICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgp
KSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSk7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7CiAgICAgICAg
IGlzRW5hYmxlZCA9IGVsZW1lbnQtPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7Ci0gICAgICAgIGlz
UmVhZE9ubHlDb250cm9sID0gZWxlbWVudC0+aXNUZXh0Rm9ybUNvbnRyb2woKSAmJiBzdGF0aWNf
Y2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCo+KGVsZW1lbnQpLT5yZWFkT25seSgpOwor
ICAgICAgICBpc1JlYWRPbmx5Q29udHJvbCA9IGVsZW1lbnQtPmlzVGV4dEZvcm1Db250cm9sKCkg
JiYgdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChlbGVtZW50KS0+cmVhZE9ubHkoKTsKICAg
ICB9CiAKICAgICBzdHlsZS0+c2V0VXNlck1vZGlmeSgoaXNSZWFkT25seUNvbnRyb2wgfHwgIWlz
RW5hYmxlZCkgPyBSRUFEX09OTFkgOiBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2Vk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2Vk
LmNwcAppbmRleCA5NjQwYWQ1OWJkZWNiMzAzODZlNzkzYzEzNmQyMTgzNDYwNWM2ODI4Li5jNDA4
YWFkOWI2YjZjNWNjODYyMGMzMmRhNzE3MTg2ZjVhMTE3MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIFJlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKEVsZW1l
bnQqIGVsZW1lbnQpCiAKIHZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVGcm9tRWxlbWVu
dCgpCiB7Ci0gICAgRWxlbWVudCogZmVuY2VkID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUo
KSk7CisgICAgRWxlbWVudCogZmVuY2VkID0gdG9FbGVtZW50KG5vZGUoKSk7CiAgCiAgICAgLy8g
RklYTUU6IEhhbmRsZSBvcGVuL2Nsb3NlIHZhbHVlcyB3aXRoIG1vcmUgdGhhbiBvbmUgY2hhcmFj
dGVyICh0aGV5IHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgdGV4dCkuCiAgICAgQXRvbWljU3RyaW5n
IG9wZW5WYWx1ZSA9IGZlbmNlZC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpvcGVuQXR0cik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRnJhY3Rpb24uY3BwCmluZGV4IDU2MDNlYjU1ODA4YjQwNGJjNTU0ZGMwMTVkOTRhMmQ2YWYw
NTIwNjAuLjA1YTNlZjYzNTg1NjM2YTNmMThhZGJmMTMxNmIwYjY2ZDY3OWMxOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJh
Y3Rpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnVw
ZGF0ZUZyb21FbGVtZW50KCkKICAgICBpZiAoaXNFbXB0eSgpKSAKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIEVsZW1lbnQqIGZyYWN0aW9uID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUo
KSk7CisgICAgRWxlbWVudCogZnJhY3Rpb24gPSB0b0VsZW1lbnQobm9kZSgpKTsKICAgICAKICAg
ICBSZW5kZXJPYmplY3QqIG51bWVyYXRvcldyYXBwZXIgPSBmaXJzdENoaWxkKCk7CiAgICAgUmVu
ZGVyT2JqZWN0KiBkZW5vbWluYXRvcldyYXBwZXIgPSBudW1lcmF0b3JXcmFwcGVyLT5uZXh0U2li
bGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDFiZDBmMGM1ZjZhZDM3Y2Y3MjIwOTRkZjM1OWMwMDhm
MmI3Yzg3NWUuLmU1YmQyMjNkOGI5ODcxNDRmZDNjN2YzYjVhYjFmM2Q3Mjk1ZWNjZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKQEAgLTU5OSw3ICs1OTksNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudAogICAg
ICAgICBDb250YWluZXJOb2RlKiBuID0gcGFyZW50RWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAg
ICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBwYXJlbnRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAgICAg
ICBwYXJlbnRFbGVtZW50ID0gdG9FbGVtZW50KG4pOwogICAgIH0KIAogICAgIGlmIChlbGVtU3Rh
Y2suaXNFbXB0eSgpKQpAQCAtODYzLDcgKzg2Myw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6
OmVuZEVsZW1lbnROcygpCiAgICAgaWYgKGhhY2tBcm91bmRMaWJYTUxFbnRpdHlQYXJzaW5nQnVn
KCkgJiYgY29udGV4dCgpLT5kZXB0aCA8PSBkZXB0aFRyaWdnZXJpbmdFbnRpdHlFeHBhbnNpb24o
KSkKICAgICAgICAgc2V0RGVwdGhUcmlnZ2VyaW5nRW50aXR5RXhwYW5zaW9uKC0xKTsKIAotICAg
IGlmICghc2NyaXB0aW5nQ29udGVudElzQWxsb3dlZChtX3NjcmlwdGluZ1Blcm1pc3Npb24pICYm
IG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG4uZ2V0KCkpKSkgeworICAgIGlmICghc2NyaXB0aW5nQ29udGVudElzQWxsb3dlZChtX3Nj
cmlwdGluZ1Blcm1pc3Npb24pICYmIG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1l
bnQodG9FbGVtZW50KG4uZ2V0KCkpKSkgewogICAgICAgICBwb3BDdXJyZW50Tm9kZSgpOwogICAg
ICAgICBuLT5yZW1vdmUoSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybjsKQEAgLTg3
NCw3ICs4NzQsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihuLmdldCgpKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG4u
Z2V0KCkpOwogCiAgICAgLy8gVGhlIGVsZW1lbnQncyBwYXJlbnQgbWF5IGhhdmUgYWxyZWFkeSBi
ZWVuIHJlbW92ZWQgZnJvbSBkb2N1bWVudC4KICAgICAvLyBQYXJzaW5nIGNvbnRpbnVlcyBpbiB0
aGlzIGNhc2UsIGJ1dCBzY3JpcHRzIGFyZW4ndCBleGVjdXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggYjExMDg5M2RkNTM3OGU2
OGU5ODFjMjFjNDg2Y2M5ZTEyNzRjMDVjMi4uMzQ4Yzg3MzdkMWVhZDM3ZjE1ZGQyNDcwYjQ1ZmVj
MGU1ODA2OTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZv
Y3VzZWROb2RlQ2hhbmdlZChOb2RlKiBub2RlKQogICAgICAgICAvLyBXZWJDb3JlOjpOb2RlLgog
ICAgICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QoSW50UG9pbnQoMCwgMCkpOwogICAgICAgICAv
LyBUaGlzIGNhc3QgbXVzdCBiZSB2YWxpZCBiZWNhdXNlIG9mIHRoZSBpc0xpbmsoKSBjaGVjay4K
LSAgICAgICAgaGl0VGVzdC5zZXRVUkxFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2Rl
KSk7CisgICAgICAgIGhpdFRlc3Quc2V0VVJMRWxlbWVudCh0b0VsZW1lbnQobm9kZSkpOwogICAg
ICAgICBpZiAoaGl0VGVzdC5pc0xpdmVMaW5rKCkpCiAgICAgICAgICAgICBmb2N1c1VSTCA9IGhp
dFRlc3QuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggZGYyMWY0MjBkN2I5
ZjdkNDRlMWI3Mjc4ZTcyZDllM2JhYzEyMjAyZC4uZTc3NzY0YWZlNWQxOWY2N2Y2MjE2ZWVkMzhk
YWY4MDgzNWVhOWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29u
dGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
b250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC0yMjYsNyArMjI2LDcgQEAgUGxhdGZvcm1NZW51
RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1
bHRJdGVtcygKICAgICAgICAgLy8gV2Uga25vdyB0aGF0IGlmIGFic29sdXRlTWVkaWFVUkwoKSBp
cyBub3QgZW1wdHksIHRoZW4gdGhpcwogICAgICAgICAvLyBpcyBhIG1lZGlhIGVsZW1lbnQuCiAg
ICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9Ci0gICAgICAgICAgICBzdGF0
aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oci5pbm5lck5vblNoYXJlZE5vZGUoKSk7CisgICAg
ICAgICAgICB0b01lZGlhRWxlbWVudChyLmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAg
aWYgKG1lZGlhRWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKICAgICAg
ICAgICAgIGRhdGEubWVkaWFUeXBlID0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYVR5cGVWaWRl
bzsKICAgICAgICAgZWxzZSBpZiAobWVkaWFFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
YXVkaW9UYWcpKQpAQCAtMjY2LDcgKzI2Niw3IEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENv
bnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAgICAg
ICAgICAgICAgICAgaWYgKHBsdWdpbi0+cGx1Z2luKCktPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQo
KSkKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZWRpYUZsYWdzIHw9IFdlYkNvbnRleHRNZW51
RGF0YTo6TWVkaWFDYW5QcmludDsKIAotICAgICAgICAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQqIHBsdWdpbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Kj4oci5pbm5lck5vblNoYXJlZE5vZGUoKSk7CisgICAgICAgICAgICAgICAgSFRNTFBsdWdJbklt
YWdlRWxlbWVudCogcGx1Z2luRWxlbWVudCA9IHRvSFRNTFBsdWdJbkltYWdlRWxlbWVudChyLmlu
bmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAgICAgICAgICBkYXRhLnNyY1VSTCA9IHBsdWdp
bkVsZW1lbnQtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHBsdWdpbkVsZW1lbnQtPnVybCgpKTsK
ICAgICAgICAgICAgICAgICBkYXRhLm1lZGlhRmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpN
ZWRpYUNhblNhdmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RP
TVV0aWxpdGllc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRp
bGl0aWVzUHJpdmF0ZS5jcHAKaW5kZXggZTY4OGJmYWVkZTVmMmU2MmFkYjlhYTMyMjA5OTBiNTJl
MTc5Y2I2OS4uMjc1ZTVmZWI2MDAyYzFiMDc1YzEyZmNlZDJjNDdjMjY0ODMzYmUxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIEhUTUxOb2RlVHlwZT4KIEhUTUxOb2Rl
VHlwZSogdG9IVE1MRWxlbWVudChOb2RlKiBub2RlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KQogewogICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkKLSAgICAgICAgJiYgc3RhdGljX2Nh
c3Q8SFRNTEVsZW1lbnQqPihub2RlKS0+aGFzVGFnTmFtZShuYW1lKSkgeworICAgICAgICAmJiB0
b0hUTUxFbGVtZW50KG5vZGUpLT5oYXNUYWdOYW1lKG5hbWUpKSB7CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxIVE1MTm9kZVR5cGUqPihub2RlKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRh
LmNwcAppbmRleCBiZTY2YWY4ZWE0NDM3ZDc2YWU1MGJjODY1MjRjNjU4MDA3ZGM3ZDg2Li5jMzg1
MjkxZjc5NmRmMjFhNjU4MTI2NGVhYzM3NTllMmE5ZTMxZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAKQEAgLTEwNiw3
ICsxMDYsNyBAQCBib29sIElzU2VsZWN0SW5EZWZhdWx0U3RhdGUoSFRNTFNlbGVjdEVsZW1lbnQq
IHNlbGVjdCkKICAgICAgICAgZm9yIChWZWN0b3I8SFRNTEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0
b3IgaShsaXN0SXRlbXMuYmVnaW4oKSk7IGkgIT0gbGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKICAg
ICAgICAgICAgIGlmICghKCppKS0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50
KiBvcHRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPigqaSk7Cisg
ICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvSFRNTE9wdGlv
bkVsZW1lbnQoKmkpOwogICAgICAgICAgICAgaWYgKG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkg
IT0gb3B0aW9uRWxlbWVudC0+aGFzQXR0cmlidXRlKHNlbGVjdGVkQXR0cikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJ
c1NlbGVjdEluRGVmYXVsdFN0YXRlKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiAgICAgZm9y
IChWZWN0b3I8SFRNTEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0SXRlbXMuYmVnaW4o
KSk7IGkgIT0gbGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKICAgICAgICAgaWYgKCEoKmkpLT5oYXNM
b2NhbE5hbWUoSFRNTE5hbWVzOjpvcHRpb25UYWcpKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TE9wdGlvbkVsZW1lbnQqPigqaSk7CisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25F
bGVtZW50ID0gdG9IVE1MT3B0aW9uRWxlbWVudCgqaSk7CiAgICAgICAgIGlmIChvcHRpb25FbGVt
ZW50LT5oYXNBdHRyaWJ1dGUoc2VsZWN0ZWRBdHRyKSkgewogICAgICAgICAgICAgLy8gVGhlIHBh
Z2Ugc3BlY2lmaWVkIHRoZSBvcHRpb24gdG8gc2VsZWN0LgogICAgICAgICAgICAgaW5pdGlhbFNl
bGVjdGVkID0gb3B0aW9uRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCA3NjZmOWQ0ZWI0NjRkYmIxYmYxZDA3ZmY5Y2EyZGVmNGRmOWNkMzE2Li42NTdmOTIwYTQ0
ZTkyZWUwN2ZhM2U3NjIyNWU1YzJjZDgxM2FjNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCkBAIC02NDY2LDcgKzY0NjYsNyBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVy
OjpmbHVzaExheWVycygpCiAtICh2b2lkKV9lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlOihXZWJDb3Jl
OjpOb2RlKilub2RlCiB7CiAgICAgQVNTRVJUKG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRN
TE5hbWVzOjp2aWRlb1RhZykpOwotICAgIEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2RlKTsKKyAgICBIVE1MTWVkaWFFbGVt
ZW50KiB2aWRlb0VsZW1lbnQgPSB0b01lZGlhRWxlbWVudChub2RlKTsKIAogICAgIGlmIChfcHJp
dmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIgbWVkaWFFbGVtZW50XSA9PSB2aWRlb0VsZW1lbnQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192629</attachid>
            <date>2013-03-11 20:11:42 -0700</date>
            <delta_ts>2013-03-11 22:58:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112072-20130311200741.patch</filename>
            <type>text/plain</type>
            <size>32121</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODliZjE1YWEwMGI1Y2E3
Yzk1MGE1NDRlMzQyMTY4YjQ2NDA0MTg1Yy4uNDIyZDkzMTRjMzdhMDY1NTExNGExNzAwMjk4Yjll
ODExZDMwMGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTAzLTExICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlw
IFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0
aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAgICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3Rz
IGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlNZW51TGlzdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOgorICAgICAgICAqIGJp
bmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoa2l0Q2xhc3MpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5
RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXNMZWdhY3lBcHBsZVN0eWxlU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpp
c0VtcHR5Rm9udFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBw
bHlCbG9ja1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRGb3JGb3JtYXRCbG9jayk6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c01haWxQYXN0ZUFzUXVvdGF0aW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpoYXZlU2FtZVRh
Z05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1ha2VJbnNlcnRlZENvbnRlbnRSb3VuZFRyaXBw
YWJsZVdpdGhIVE1MVHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpyZXN0b3JlKToKKyAgICAgICAgKiBo
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBl
OjpzdWdnZXN0aW9ucyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc0luSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjppc0lu
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjppc0luRm9vdCk6CisgICAgICAgICogaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6
OmlubmVyUGF0Y2hOb2RlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXJNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ3VzdG9t
QXR0cmlidXRlcyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRP
YmplY3Q6OmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6bmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1lZGlhOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hG
aWVsZDo6YXV0b3NhdmVOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnRleHRGb3JtQ29u
dHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlVXNlck1vZGlmeVByb3BlcnR5
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCk6
CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMpOgorCiAyMDEz
LTAzLTExICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBi
dWlsZCBmb3IgcjE0NTM5NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1YTBhMTdhNmFm
NTI3M2NlYjM3OGYxZmE0MGViMGZjODMxYjkwYTNhLi4xMzE0ODAwM2EwZDliM2YwODA4MDkxOGU1
YjUxMTYwOTBjNTNhYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0
IEBACiAyMDEzLTAzLTExICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAK
KyAgICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgUGhpbGlwIFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rpb25zIGFy
ZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAgICAgIGhl
bHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6Zm9jdXNlZE5vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBzcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVD
bGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgICogc3Jj
L0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9IVE1MRWxlbWVu
dCk6CisgICAgICAgICogc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHA6CisgICAgICAgIChI
VE1MTmFtZXM6OklzU2VsZWN0SW5EZWZhdWx0U3RhdGUpOgorCisyMDEzLTAzLTExICBBYmhpc2hl
ayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgQWRkIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OIHRvIGNhdGNoIGJhZCBjYXN0cy4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA2MAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggN2Q5MWM1MjQ0NGQ0MzEwZWVmMTI1NTdjZGIyMjViN2Q1MDQyODgxMi4uYTgwMGViNDk0
MmI2NDJhNWQ3MWYxMzY2NmQ0Mjk1ZDdkMjliMTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEzLTAzLTExICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwIFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rp
b25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAg
ICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0
cnVjdHVyZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfZW50ZXJGdWxsc2NyZWVuRm9yTm9kZTpXZWJDb3JlOjpdKToKKwogMjAxMy0wMy0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkaWRG
b2N1c1RleHRGaWVsZDppbkZyYW1lIHRvIFdlYkZvcm1EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCmluZGV4
IDc4ZjQ0YWI1YTZmNGY0NjE5MjE5NWViZDM2ZjJmYzgwOThmMjgzNTQuLjZhNDllN2RiZmQ5ZGYw
YmRiOGM4NzAwMDAyMjZmNjJiZTRhMTFjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNhblNldEZvY3VzQXR0cmlidXRlKCkgY29u
c3QKICAgICBpZiAoIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOwor
ICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgpKS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKIH0K
IAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQg
b3B0aW9uSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IGYyMjc4Njgy
NzA3YzRkN2ZlODY4NmI4MTJhOGNlMGJhM2RmYTdhNmEuLmRjNmE4NDkwMTBiMmZjNGRiMzJiZGNk
YTNmNGQ4YzEzYzE3NDZkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0y
OTUsNyArMjk1LDcgQEAgQ2xhc3Mga2l0Q2xhc3MoV2ViQ29yZTo6Tm9kZSogaW1wbCkKICAgICBz
d2l0Y2ggKGltcGwtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpF
TEVNRU5UX05PREU6CiAgICAgICAgICAgICBpZiAoaW1wbC0+aXNIVE1MRWxlbWVudCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjplbGVtZW50Q2xhc3Moc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEVsZW1lbnQqPihpbXBsKS0+dGFnUU5hbWUoKSwgW0RPTUhUTUxFbGVtZW50IGNs
YXNzXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmVsZW1lbnRDbGFzcyh0b0hU
TUxFbGVtZW50KGltcGwpLT50YWdRTmFtZSgpLCBbRE9NSFRNTEVsZW1lbnQgY2xhc3NdKTsKICNp
ZiBFTkFCTEUoU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKQogICAgICAgICAgICAgaWYgKGltcGwtPmlz
U1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjplbGVtZW50Q2xh
c3Moc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudCo+KGltcGwpLT50YWdRTmFtZSgpLCBb
RE9NU1ZHRWxlbWVudCBjbGFzc10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA3NzQ4MjI3YWU3NDM1YjgwOWE2MjdlMjU3
NDVmOWM2ZTBiZjFjZWMzLi5hNzRlNWIwOWIyYjQzODU5OTY3NjQxMjkyMGYwMmJiOGVmM2M2NWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3Rl
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3Rl
bmVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJl
cGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKICAg
ICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50ID0gMDsKICAgICBpZiAobV9ub2RlICYmIG1f
bm9kZS0+aXNIVE1MRWxlbWVudCgpKQotICAgICAgICBmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxFbGVtZW50Kj4obV9ub2RlKS0+Zm9ybSgpOworICAgICAgICBmb3JtRWxlbWVudCA9IHRv
SFRNTEVsZW1lbnQobV9ub2RlKS0+Zm9ybSgpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBub2RlV3JhcHBlciA9IHRvT2JqZWN0V3JhcHBlcjxOb2RlPihtX25vZGUsIGlzb2xhdGUpOwog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZm9ybVdyYXBwZXIgPSB0b09iamVjdFdyYXBwZXI8
SFRNTEZvcm1FbGVtZW50Pihmb3JtRWxlbWVudCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGVhZjAzZTMyNzNkMDE3ODlhNjAwOGU5OTEzMzZiMDIw
NDE2ZGEwOGMuLmNiMzgzN2UwY2JhOWFhOTExZDNhM2U2OWExMTRjYzY5MzAwNjJiZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5B
QkxFKFBST0dSRVNTX0VMRU1FTlQpCiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUocHJvZ3Jlc3NUYWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEhUTUxQcm9ncmVzc0Vs
ZW1lbnQqIHByb2dyZXNzID0gc3RhdGljX2Nhc3Q8SFRNTFByb2dyZXNzRWxlbWVudCo+KGVsZW1l
bnQpOworICAgICAgICAgICAgICAgICAgICBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBwcm9ncmVzcyA9
IHRvSFRNTFByb2dyZXNzRWxlbWVudChlbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2dyZXNzICYmICFwcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjZjY4NDhkYzY5
ZDlkMTBhODk0YzZmZjM3ZTVhYjZlOThjNmQ0NTM2Li5lM2U4M2Q0NDQwZWJkNWJiZmQ5Njk0NTkw
NzhkYjQxM2E3YjA1MjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcApAQCAtNjcsNyArNjcsNyBAQCBib29sIGlzTGVnYWN5QXBwbGVTdHlsZVNwYW4o
Y29uc3QgTm9kZSAqbm9kZSkKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSFRNTEVsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgSFRNTEVsZW1lbnQqIGVsZW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCo+KG5vZGUpOworICAgIGNvbnN0IEhUTUxF
bGVtZW50KiBlbGVtID0gdG9IVE1MRWxlbWVudChub2RlKTsKICAgICByZXR1cm4gZWxlbS0+aGFz
TG9jYWxOYW1lKHNwYW5BdHRyKSAmJiBlbGVtLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBz
dHlsZVNwYW5DbGFzc1N0cmluZygpOwogfQogCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBpc0Vt
cHR5Rm9udFRhZyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBTaG91bGRTdHlsZUF0dHJpYnV0ZUJl
RW1wdHkgc2hvdWxkU3QKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmhhc1RhZ05hbWUo
Zm9udFRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBoYXNOb0F0dHJp
YnV0ZU9yT25seVN0eWxlQXR0cmlidXRlKHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4o
ZWxlbWVudCksIHNob3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSk7CisgICAgcmV0dXJuIGhhc05v
QXR0cmlidXRlT3JPbmx5U3R5bGVBdHRyaWJ1dGUodG9IVE1MRWxlbWVudChlbGVtZW50KSwgc2hv
dWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5KTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8RWxlbWVu
dD4gY3JlYXRlRm9udEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjkwLDggKzI5MCw4
IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUg
KnN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChwYXJh
Z3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
c2NvcGUpLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICBlbmRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNjb3Bl
KSwgZW5kSW5kZXgsIDAsIHRydWUpOworICAgIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRvRWxlbWVudChzY29wZSksIHN0YXJ0SW5kZXgsIDAs
IHRydWUpOworICAgIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCh0b0VsZW1lbnQoc2NvcGUpLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CiAgICAgaWYgKHN0
YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCiAgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5kZXggZWRmM2FhNWQ2
ZmFkNmIwNjRlMDlhNDE1MDEwNmU0MWYxZGU2ZjRiZi4uNWE4YmY2ZjExZGYxZDk0ODY5ZDdkZjAz
NjM3N2E5OWFiOTc5ZjA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3Jt
YXRCbG9ja0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0Qmxv
Y2tDb21tYW5kLmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgTm9kZSogZW5jbG9zaW5nQmxv
Y2tUb1NwbGl0VHJlZVRvKE5vZGUqIHN0YXJ0Tm9kZSk7CiBzdGF0aWMgYm9vbCBpc0VsZW1lbnRG
b3JGb3JtYXRCbG9jayhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhOb2RlKiBub2RlKQogewotICAgIHJldHVy
biBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaXNFbGVtZW50Rm9yRm9ybWF0QmxvY2soc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT50YWdRTmFtZSgpKTsKKyAgICByZXR1cm4gbm9kZS0+aXNF
bGVtZW50Tm9kZSgpICYmIGlzRWxlbWVudEZvckZvcm1hdEJsb2NrKHRvRWxlbWVudChub2RlKS0+
dGFnUU5hbWUoKSk7CiB9CiAKIEZvcm1hdEJsb2NrQ29tbWFuZDo6Rm9ybWF0QmxvY2tDb21tYW5k
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmlu
ZGV4IGYxMDRlMDI3NDRmOTlhODI0YTRkOGZhM2EzY2FiM2I4ZWZhNTk1YjMuLjhmNWUzYWQ5ZmVj
MTJlN2RmZGYyMTlkZDg4MGFkNmE3NjQyZjIzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAg
Ym9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hvdWxkTWVyZ2VFbmQoYm9vbCBzZWxlY3Rp
b25FbmRXYXNFbmRPZlBhcmFncmFwaCkKIAogc3RhdGljIGJvb2wgaXNNYWlsUGFzdGVBc1F1b3Rh
dGlvbk5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5o
YXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0
aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09
IEFwcGxlUGFzdGVBc1F1b3RhdGlvbjsKKyAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdO
YW1lKGJsb2NrcXVvdGVUYWcpICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IEFwcGxlUGFzdGVBc1F1b3RhdGlvbjsK
IH0KIAogc3RhdGljIGJvb2wgaXNIZWFkZXJFbGVtZW50KGNvbnN0IE5vZGUqIGEpCkBAIC00NDQs
NyArNDQ0LDcgQEAgc3RhdGljIGJvb2wgaXNIZWFkZXJFbGVtZW50KGNvbnN0IE5vZGUqIGEpCiAK
IHN0YXRpYyBib29sIGhhdmVTYW1lVGFnTmFtZShOb2RlKiBhLCBOb2RlKiBiKQogewotICAgIHJl
dHVybiBhICYmIGIgJiYgYS0+aXNFbGVtZW50Tm9kZSgpICYmIGItPmlzRWxlbWVudE5vZGUoKSAm
JiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oYSktPnRhZ05hbWUoKSA9PSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4oYiktPnRhZ05hbWUoKTsKKyAgICByZXR1cm4gYSAmJiBiICYmIGEtPmlzRWxlbWVudE5v
ZGUoKSAmJiBiLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KGEpLT50YWdOYW1lKCkgPT0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KGIpLT50YWdOYW1lKCk7CiB9CiAKIGJvb2wgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OnNob3VsZE1lcmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc291cmNl
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGRlc3RpbmF0aW9uKQpAQCAtNDg2LDcgKzQ4Niw3IEBA
IHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtl
ZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgIGlmIChpbmxpbmVTdHlsZSkgewogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAg
IFZlY3RvcjxRdWFsaWZpZWROYW1lPiBhdHRyaWJ1dGVzOwotICAgICAgICAgICAgICAgIEhUTUxF
bGVtZW50KiBodG1sRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oZWxlbWVudCk7
CisgICAgICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGh0bWxFbGVtZW50ID0gdG9IVE1MRWxlbWVu
dChlbGVtZW50KTsKIAogICAgICAgICAgICAgICAgIGlmIChuZXdJbmxpbmVTdHlsZS0+Y29uZmxp
Y3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoaHRtbEVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIGUuZy4gPGIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7Ij4gaXMgY29u
dmVydGVkIHRvIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyI+CkBAIC02MjUsOCAr
NjI1LDggQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bWFrZUluc2VydGVkQ29udGVu
dFJvdW5kVHJpcHBhYmxlV2l0aEhUTUxUcmVlQnVpbGQKICAgICAgICAgaWYgKCFub2RlLT5pc0hU
TUxFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoaXNQcm9o
aWJpdGVkUGFyYWdyYXBoQ2hpbGQoc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihub2Rl
LmdldCgpKS0+bG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICBpZiAoSFRNTEVsZW1lbnQqIHBh
cmFncmFwaEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGVuY2xvc2luZ05vZGVX
aXRoVGFnKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUuZ2V0KCkpLCBwVGFnKSkpCisg
ICAgICAgIGlmIChpc1Byb2hpYml0ZWRQYXJhZ3JhcGhDaGlsZCh0b0hUTUxFbGVtZW50KG5vZGUu
Z2V0KCkpLT5sb2NhbE5hbWUoKSkpIHsKKyAgICAgICAgICAgIGlmIChIVE1MRWxlbWVudCogcGFy
YWdyYXBoRWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoZW5jbG9zaW5nTm9kZVdpdGhUYWcocG9zaXRp
b25JblBhcmVudEJlZm9yZU5vZGUobm9kZS5nZXQoKSksIHBUYWcpKSkKICAgICAgICAgICAgICAg
ICBtb3ZlTm9kZU91dE9mQW5jZXN0b3Iobm9kZSwgcGFyYWdyYXBoRWxlbWVudCk7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggM2RkYjhlYTNmMTNj
YWZkNzMyYTA4NzZkMWQ5MWJhZGU5MzJjMTJmMS4uZDhmMGFjNGU0Y2YyN2M0MDU4NjNkZjNmNjc0
MTExZTg0MDYzY2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIHZvaWQgQ2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlKiBwYWdlKQogICAgIERv
Y3VtZW50KiBmb2N1c2VkRG9jdW1lbnQgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSBmb2N1c2Vk
RG9jdW1lbnQtPmZvY3VzZWROb2RlKCkpIHsKICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5v
ZGUoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+dXBkYXRlRm9j
dXNBcHBlYXJhbmNlKHRydWUpOworICAgICAgICAgICAgdG9FbGVtZW50KG5vZGUpLT51cGRhdGVG
b2N1c0FwcGVhcmFuY2UodHJ1ZSk7CiAgICAgfQogCiAgICAgaWYgKG1fbmVlZFN0eWxlUmVjYWxj
Rm9yVmlzaXRlZExpbmtzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9y
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmlu
ZGV4IGYyMTQ3NzcxZmVhZTU1NjY0YmRhOWI2Yjg3ZGQxOWRlOTg3YjU1NzkuLjdiYzlkMGNkMzJm
YjM4MDFhMmJmYWFjNDMyNjViM2IzNGM3MzhhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgVmVjdG9yPENvbG9yPiBDb2xvcklucHV0
VHlwZTo6c3VnZ2VzdGlvbnMoKSBjb25zdAogICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQqIGRhdGFM
aXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpOwogICAgIGlmIChkYXRhTGlzdCkgewogICAgICAg
ICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0g
c3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihvcHRpb25zLT5pdGVtKGkpKTsgaSsrKSB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24g
PSB0b0hUTUxPcHRpb25FbGVtZW50KG9wdGlvbnMtPml0ZW0oaSkpOyBpKyspIHsKICAgICAgICAg
ICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUob3B0aW9uLT52YWx1ZSgpKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIENvbG9yIGNvbG9yKG9wdGlvbi0+dmFs
dWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24u
Y3BwCmluZGV4IDU1ZmI5YzIxMWEzNDY2YTUxYjQwZjU5MDllOTU1MTUyZDgzMDBlZWIuLjUyY2Iw
ZWNiNWZkY2JkZmUxNzFkZDg2NmFhODYxODkyYTVlNTE2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0zOSwxNyArMzksMTcgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGJvb2wgaXNJbkhlYWQoRWxlbWVu
dCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4ocm93LT5wYXJlbnROb2RlKCkpLT5oYXNMb2NhbE5hbWUodGhlYWRUYWcpOworICAg
IHJldHVybiByb3ctPnBhcmVudE5vZGUoKSAmJiB0b0VsZW1lbnQocm93LT5wYXJlbnROb2RlKCkp
LT5oYXNMb2NhbE5hbWUodGhlYWRUYWcpOwogfQogCiBzdGF0aWMgYm9vbCBpc0luQm9keShFbGVt
ZW50KiByb3cpCiB7Ci0gICAgcmV0dXJuIHJvdy0+cGFyZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihyb3ctPnBhcmVudE5vZGUoKSktPmhhc0xvY2FsTmFtZSh0Ym9keVRhZyk7Cisg
ICAgcmV0dXJuIHJvdy0+cGFyZW50Tm9kZSgpICYmIHRvRWxlbWVudChyb3ctPnBhcmVudE5vZGUo
KSktPmhhc0xvY2FsTmFtZSh0Ym9keVRhZyk7CiB9CiAKIHN0YXRpYyBib29sIGlzSW5Gb290KEVs
ZW1lbnQqIHJvdykKIHsKLSAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KHJvdy0+cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsK
KyAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgdG9FbGVtZW50KHJvdy0+cGFyZW50Tm9k
ZSgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsKIH0KIAogSFRNTFRhYmxlUm93RWxlbWVudCog
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxl
LCBIVE1MVGFibGVSb3dFbGVtZW50KiBwcmV2aW91cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggZjFkMDk4ZjQ0NDRiZGY5MzU3NWI3ZDg4MmQw
MjE5N2ZmZjk0Y2ExYy4uM2RhZGMyODYzMGFhYTE5NTNkZjk5NmVkYzkwZTU5NjNmOTQ1NWQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTE3
MCw4ICsxNzAsOCBAQCBib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaE5vZGUoRGlnZXN0
KiBvbGREaWdlc3QsIERpZ2VzdCogbmV3RGlnZXN0LCBFeGNlcAogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIFBhdGNoIGF0dHJpYnV0ZXMKLSAgICBFbGVtZW50KiBvbGRFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9sZE5vZGUpOwotICAgIEVsZW1lbnQqIG5ld0VsZW1lbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3Tm9kZSk7CisgICAgRWxlbWVudCogb2xkRWxlbWVu
dCA9IHRvRWxlbWVudChvbGROb2RlKTsKKyAgICBFbGVtZW50KiBuZXdFbGVtZW50ID0gdG9FbGVt
ZW50KG5ld05vZGUpOwogICAgIGlmIChvbGREaWdlc3QtPm1fYXR0cnNTSEExICE9IG5ld0RpZ2Vz
dC0+bV9hdHRyc1NIQTEpIHsKICAgICAgICAgLy8gRklYTUU6IENyZWF0ZSBhIGZ1bmN0aW9uIGlu
IEVsZW1lbnQgZm9yIHJlbW92aW5nIGFsbCBwcm9wZXJ0aWVzLiBUYWtlIGluIGFjY291bnQgd2hl
dGhlciBkaWQvd2lsbE1vZGlmeUF0dHJpYnV0ZSBhcmUgaW1wb3J0YW50LgogICAgICAgICBpZiAo
b2xkRWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA1NTU3YjY3Y2IxM2M3Y2NmMmUzYmU4OTU2YjNh
NGIxOWFlNjM3M2MzLi5hYWI5ZGQ4NTE3YjljYmM2MWNkYTVjNzA4NGI4MmRlNTQ2ZjY1MjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IHZvaWQgU2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVz
KFN0cmluZ0J1aWxkZXImIG91dCwgRWxlCiAgICAgaWYgKCFlbGVtZW50LT5pc0ZyYW1lT3duZXJF
bGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
ZnJhbWVPd25lciA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KGVsZW1lbnQp
OworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25lciA9IHRvRnJhbWVPd25lckVs
ZW1lbnQoZWxlbWVudCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZnJhbWVPd25lci0+Y29udGVudEZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMzdjZDAwYjNlY2U0NGM4MDMzODA1NTk1ZTgzOTRjNzIz
M2ZiYjgzYS4uYzE1ODdlYTAzYmE4ZTllYzA2MWFiOTBhY2E0OGY1YTZjODU1ZmU0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzc0LDcgKzEzNzQsNyBAQCBOUEVy
cm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1
ZSkKICAgICAgICAgTlBPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdCA9IDA7CiAKICAgICAgICAg
aWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFn
TmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAg
ICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVu
dCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7CisgICAgICAgICAgICBwbHVnaW5TY3JpcHRP
YmplY3QgPSBtX2VsZW1lbnQtPmdldE5QT2JqZWN0KCk7CiAKICAgICAgICAgLy8gUmV0dXJuIHZh
bHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6
Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgogICAgICAg
ICBpZiAocGx1Z2luU2NyaXB0T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggYWFiZTc2Y2NmYWQ5NWQ5OGI0YzkxNDVj
ZjU5NWUwNjYxZTY2ZTZhYS4uYTkwZDUyNGI2MTMyNGM4NDdmNDRmOTRkMDgyYzE0M2E3ZmJlNzg4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwCkBAIC0xNzEsMTEgKzE3MSwxMSBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojpw
YWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogCiB2
b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOworICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0VsZW1lbnQobm9kZSgpKTsKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlz
UGx1Z2luRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1MUGx1Z0luRWxlbWVu
dCogcGx1Z0luRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4oZWxlbWVu
dCk7CisgICAgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVsZW1lbnQgPSB0b0hUTUxQbHVnSW5F
bGVtZW50KGVsZW1lbnQpOwogICAgIGlmIChwbHVnSW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA+
IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNwbGF5aW5nU25hcHNob3QpIHsKICAgICAgICAgUmVuZGVy
UGFydDo6cGFpbnRDb250ZW50cyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgaWYg
KCFwbHVnSW5FbGVtZW50LT5pc1BsdWdJbkltYWdlRWxlbWVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBJbWFnZSogc25hcHNob3QgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50Kj4ocGx1Z0luRWxlbWVudCktPnNuYXBzaG90SW1hZ2UoKTsKKyAgICBJbWFnZSogc25hcHNo
b3QgPSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQocGx1Z0luRWxlbWVudCktPnNuYXBzaG90SW1h
Z2UoKTsKICAgICBpZiAoc25hcHNob3QpCiAgICAgICAgIHBhaW50U25hcHNob3RJbWFnZShwYWlu
dEluZm8sIHBhaW50T2Zmc2V0LCBzbmFwc2hvdCk7CiB9CkBAIC00MTcsNyArNDE3LDcgQEAgdm9p
ZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JF
dmVudChFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBNb3VzZUV2ZW50
KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KTsKLSAgICBIVE1M
UGx1Z0luRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4o
bm9kZSgpKTsKKyAgICBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTFBsdWdJbkVs
ZW1lbnQobm9kZSgpKTsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91
c2Vkb3duRXZlbnQgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkg
PT0gTGVmdEJ1dHRvbikgewogICAgICAgICBtX21vdXNlRG93bldhc0luVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3IgPSBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IobW91c2VFdmVudCk7
CiAgICAgICAgIGlmIChtX21vdXNlRG93bldhc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3Ip
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVlNzQ3Nzhj
MzEyZTc1YTZhZGM4NWYwNTVmODI0MjY2YTEyYTBkODQuLjM3NDFjMjFiMDEzNDdiYjUyZmU5Yjg3
MjBkY2QyOWUwNTk2NDNiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtMjc2LDExICsyNzYsMTEgQEAgU3RyaW5nIFJlbmRlckxheWVyOjpuYW1lKCkgY29u
c3QKICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyKCktPm5vZGUoKSkgewogICAgICAgICBp
ZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICBuYW1lLmFwcGVuZCgnICcp
OwotICAgICAgICAgICAgbmFtZS5hcHBlbmQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT50
YWdOYW1lKCkpOworICAgICAgICAgICAgbmFtZS5hcHBlbmQodG9FbGVtZW50KG5vZGUpLT50YWdO
YW1lKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5oYXNJRCgpKSB7CiAgICAgICAg
ICAgICBuYW1lLmFwcGVuZExpdGVyYWwoIiBpZD1cJyIpOwotICAgICAgICAgICAgbmFtZS5hcHBl
bmQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5nZXRJZEF0dHJpYnV0ZSgpKTsKKyAgICAg
ICAgICAgIG5hbWUuYXBwZW5kKHRvRWxlbWVudChub2RlKS0+Z2V0SWRBdHRyaWJ1dGUoKSk7CiAg
ICAgICAgICAgICBuYW1lLmFwcGVuZCgnXCcnKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAppbmRleCBjYWE0N2UyOTlmYzhjMTBmYWJmMzMxYWFl
ODRhOWU3YTBiMWQ1NjAxLi5kOGYxZTg1MmVjNzNmMDE0ZjRhMzRmMjQyNDcxNWFkODlkNmU1ODhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgUmVuZGVyTWVkaWE6On5SZW5kZXJNZWRpYSgpCiAKIEhUTUxNZWRpYUVsZW1lbnQqIFJl
bmRlck1lZGlhOjptZWRpYUVsZW1lbnQoKSBjb25zdAogeyAKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUoKSk7IAorICAgIHJldHVybiB0b01lZGlhRWxlbWVu
dChub2RlKCkpOyAKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6bGF5b3V0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IDZiOTA2MTY2MzVh
MDRhNzUyNzZhYmIwN2EwNjdjNTBjM2E1ODlkYmYuLmU1MThkOTYyYTIwNjkwYWEzM2NhNTA4MDYz
ZTE0YjJjM2FlZDRlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEVWaXNpYmlsaXR5IFJlbmRlclNlYXJj
aEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9uKCkgY29uc3QKIAogY29uc3QgQXRvbWlj
U3RyaW5nJiBSZW5kZXJTZWFyY2hGaWVsZDo6YXV0b3NhdmVOYW1lKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJpYnV0ZShhdXRvc2F2
ZUF0dHIpOworICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgpKS0+Z2V0QXR0cmlidXRlKGF1dG9z
YXZlQXR0cik7CiB9CiAKIC8vIFBvcHVwTWVudUNsaWVudCBtZXRob2RzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCBiZWQ0MWRjMjI1NDQ4
NDRmOTI4MjQ1N2Q1YTk0YjM5MDRlMWY0MmZlLi4xYzk1NTQxNDQ4MTczOGQ1MjI4NDMyMTViZDQy
MDllNTRlZDIzNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVuZGVyVGV4dENvbnRyb2w6On5SZW5kZXJU
ZXh0Q29udHJvbCgpCiAKIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBSZW5kZXJUZXh0Q29u
dHJvbDo6dGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4obm9kZSgpKTsKKyAgICByZXR1cm4g
dG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKCkpOwogfQogCiBIVE1MRWxlbWVudCog
UmVuZGVyVGV4dENvbnRyb2w6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdApAQCAtODAsOSArODAs
OSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdXBkYXRlVXNlck1vZGlmeVByb3BlcnR5KE5vZGUqIG5v
ZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBib29sIGlzUmVhZE9ubHlDb250cm9sID0gZmFs
c2U7CiAKICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CisgICAgICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7CiAgICAgICAgIGlzRW5hYmxlZCA9IGVsZW1lbnQt
PmlzRW5hYmxlZEZvcm1Db250cm9sKCk7Ci0gICAgICAgIGlzUmVhZE9ubHlDb250cm9sID0gZWxl
bWVudC0+aXNUZXh0Rm9ybUNvbnRyb2woKSAmJiBzdGF0aWNfY2FzdDxIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCo+KGVsZW1lbnQpLT5yZWFkT25seSgpOworICAgICAgICBpc1JlYWRPbmx5Q29u
dHJvbCA9IGVsZW1lbnQtPmlzVGV4dEZvcm1Db250cm9sKCkgJiYgdG9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudChlbGVtZW50KS0+cmVhZE9ubHkoKTsKICAgICB9CiAKICAgICBzdHlsZS0+c2V0
VXNlck1vZGlmeSgoaXNSZWFkT25seUNvbnRyb2wgfHwgIWlzRW5hYmxlZCkgPyBSRUFEX09OTFkg
OiBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAppbmRleCA5NjQwYWQ1OWJk
ZWNiMzAzODZlNzkzYzEzNmQyMTgzNDYwNWM2ODI4Li5jNDA4YWFkOWI2YjZjNWNjODYyMGMzMmRh
NzE3MTg2ZjVhMTE3MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFJlbmRlck1h
dGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKEVsZW1lbnQqIGVsZW1lbnQpCiAKIHZvaWQg
UmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVGcm9tRWxlbWVudCgpCiB7Ci0gICAgRWxlbWVudCog
ZmVuY2VkID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSk7CisgICAgRWxlbWVudCogZmVu
Y2VkID0gdG9FbGVtZW50KG5vZGUoKSk7CiAgCiAgICAgLy8gRklYTUU6IEhhbmRsZSBvcGVuL2Ns
b3NlIHZhbHVlcyB3aXRoIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyICh0aGV5IHNob3VsZCBiZSB0
cmVhdGVkIGxpa2UgdGV4dCkuCiAgICAgQXRvbWljU3RyaW5nIG9wZW5WYWx1ZSA9IGZlbmNlZC0+
Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpvcGVuQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4
IDU2MDNlYjU1ODA4YjQwNGJjNTU0ZGMwMTVkOTRhMmQ2YWYwNTIwNjAuLjA1YTNlZjYzNTg1NjM2
YTNmMThhZGJmMTMxNmIwYjY2ZDY3OWMxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC02Myw3ICs2
Myw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZyb21FbGVtZW50KCkKICAg
ICBpZiAoaXNFbXB0eSgpKSAKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEVsZW1lbnQqIGZy
YWN0aW9uID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSk7CisgICAgRWxlbWVudCogZnJh
Y3Rpb24gPSB0b0VsZW1lbnQobm9kZSgpKTsKICAgICAKICAgICBSZW5kZXJPYmplY3QqIG51bWVy
YXRvcldyYXBwZXIgPSBmaXJzdENoaWxkKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBkZW5vbWluYXRv
cldyYXBwZXIgPSBudW1lcmF0b3JXcmFwcGVyLT5uZXh0U2libGluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmlu
ZGV4IDFiZDBmMGM1ZjZhZDM3Y2Y3MjIwOTRkZjM1OWMwMDhmMmI3Yzg3NWUuLmU1YmQyMjNkOGI5
ODcxNDRmZDNjN2YzYjVhYjFmM2Q3Mjk1ZWNjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTU5OSw3ICs1
OTksNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFn
bWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudAogICAgICAgICBDb250YWluZXJOb2RlKiBu
ID0gcGFyZW50RWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAoIW4gfHwgIW4tPmlz
RWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBwYXJlbnRFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAgICAgICBwYXJlbnRFbGVtZW50ID0gdG9F
bGVtZW50KG4pOwogICAgIH0KIAogICAgIGlmIChlbGVtU3RhY2suaXNFbXB0eSgpKQpAQCAtODYz
LDcgKzg2Myw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcygpCiAgICAg
aWYgKGhhY2tBcm91bmRMaWJYTUxFbnRpdHlQYXJzaW5nQnVnKCkgJiYgY29udGV4dCgpLT5kZXB0
aCA8PSBkZXB0aFRyaWdnZXJpbmdFbnRpdHlFeHBhbnNpb24oKSkKICAgICAgICAgc2V0RGVwdGhU
cmlnZ2VyaW5nRW50aXR5RXhwYW5zaW9uKC0xKTsKIAotICAgIGlmICghc2NyaXB0aW5nQ29udGVu
dElzQWxsb3dlZChtX3NjcmlwdGluZ1Blcm1pc3Npb24pICYmIG4tPmlzRWxlbWVudE5vZGUoKSAm
JiB0b1NjcmlwdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4uZ2V0KCkpKSkgeworICAg
IGlmICghc2NyaXB0aW5nQ29udGVudElzQWxsb3dlZChtX3NjcmlwdGluZ1Blcm1pc3Npb24pICYm
IG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1lbnQodG9FbGVtZW50KG4uZ2V0KCkp
KSkgewogICAgICAgICBwb3BDdXJyZW50Tm9kZSgpOwogICAgICAgICBuLT5yZW1vdmUoSUdOT1JF
X0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybjsKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuLmdldCgpKTsK
KyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG4uZ2V0KCkpOwogCiAgICAgLy8gVGhl
IGVsZW1lbnQncyBwYXJlbnQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBkb2N1
bWVudC4KICAgICAvLyBQYXJzaW5nIGNvbnRpbnVlcyBpbiB0aGlzIGNhc2UsIGJ1dCBzY3JpcHRz
IGFyZW4ndCBleGVjdXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAKaW5kZXggYjExMDg5M2RkNTM3OGU2OGU5ODFjMjFjNDg2Y2M5ZTEyNzRj
MDVjMi4uMzQ4Yzg3MzdkMWVhZDM3ZjE1ZGQyNDcwYjQ1ZmVjMGU1ODA2OTA0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTIzMSw3
ICsyMzEsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZvY3VzZWROb2RlQ2hhbmdlZChOb2Rl
KiBub2RlKQogICAgICAgICAvLyBXZWJDb3JlOjpOb2RlLgogICAgICAgICBIaXRUZXN0UmVzdWx0
IGhpdFRlc3QoSW50UG9pbnQoMCwgMCkpOwogICAgICAgICAvLyBUaGlzIGNhc3QgbXVzdCBiZSB2
YWxpZCBiZWNhdXNlIG9mIHRoZSBpc0xpbmsoKSBjaGVjay4KLSAgICAgICAgaGl0VGVzdC5zZXRV
UkxFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKSk7CisgICAgICAgIGhpdFRlc3Qu
c2V0VVJMRWxlbWVudCh0b0VsZW1lbnQobm9kZSkpOwogICAgICAgICBpZiAoaGl0VGVzdC5pc0xp
dmVMaW5rKCkpCiAgICAgICAgICAgICBmb2N1c1VSTCA9IGhpdFRlc3QuYWJzb2x1dGVMaW5rVVJM
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRN
ZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggZGYyMWY0MjBkN2I5ZjdkNDRlMWI3Mjc4ZTcyZDllM2Jh
YzEyMjAyZC4uZTc3NzY0YWZlNWQxOWY2N2Y2MjE2ZWVkMzhkYWY4MDgzNWVhOWI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwCkBAIC0yMjYsNyArMjI2LDcgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1l
bnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygKICAgICAgICAgLy8g
V2Uga25vdyB0aGF0IGlmIGFic29sdXRlTWVkaWFVUkwoKSBpcyBub3QgZW1wdHksIHRoZW4gdGhp
cwogICAgICAgICAvLyBpcyBhIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCA9Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVt
ZW50Kj4oci5pbm5lck5vblNoYXJlZE5vZGUoKSk7CisgICAgICAgICAgICB0b01lZGlhRWxlbWVu
dChyLmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKICAgICAgICAgICAgIGRhdGEubWVkaWFUeXBl
ID0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYVR5cGVWaWRlbzsKICAgICAgICAgZWxzZSBpZiAo
bWVkaWFFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9UYWcpKQpAQCAtMjY2LDcg
KzI2Niw3IEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50SW1wbDo6
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAgICAgICAgICAgICAgICAgaWYgKHBsdWdp
bi0+cGx1Z2luKCktPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQoKSkKICAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tZWRpYUZsYWdzIHw9IFdlYkNvbnRleHRNZW51RGF0YTo6TWVkaWFDYW5QcmludDsK
IAotICAgICAgICAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4oci5pbm5lck5vblNoYXJlZE5v
ZGUoKSk7CisgICAgICAgICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z2luRWxl
bWVudCA9IHRvSFRNTFBsdWdJbkltYWdlRWxlbWVudChyLmlubmVyTm9uU2hhcmVkTm9kZSgpKTsK
ICAgICAgICAgICAgICAgICBkYXRhLnNyY1VSTCA9IHBsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKHBsdWdpbkVsZW1lbnQtPnVybCgpKTsKICAgICAgICAgICAgICAgICBkYXRh
Lm1lZGlhRmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYUNhblNhdmU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKaW5k
ZXggZTY4OGJmYWVkZTVmMmU2MmFkYjlhYTMyMjA5OTBiNTJlMTc5Y2I2OS4uMjc1ZTVmZWI2MDAy
YzFiMDc1YzEyZmNlZDJjNDdjMjY0ODMzYmUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIEhUTUxOb2RlVHlwZT4KIEhUTUxOb2RlVHlwZSogdG9IVE1MRWxlbWVudChO
b2RlKiBub2RlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmIChub2RlLT5p
c0hUTUxFbGVtZW50KCkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2Rl
KS0+aGFzVGFnTmFtZShuYW1lKSkgeworICAgICAgICAmJiB0b0hUTUxFbGVtZW50KG5vZGUpLT5o
YXNUYWdOYW1lKG5hbWUpKSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTm9kZVR5
cGUqPihub2RlKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcAppbmRleCBiZTY2YWY4ZWE0
NDM3ZDc2YWU1MGJjODY1MjRjNjU4MDA3ZGM3ZDg2Li5jMzg1MjkxZjc5NmRmMjFhNjU4MTI2NGVh
YzM3NTllMmE5ZTMxZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIElzU2Vs
ZWN0SW5EZWZhdWx0U3RhdGUoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCkKICAgICAgICAgZm9y
IChWZWN0b3I8SFRNTEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0SXRlbXMuYmVnaW4o
KSk7IGkgIT0gbGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghKCppKS0+
aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPigqaSk7CisgICAgICAgICAgICBIVE1MT3B0aW9u
RWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvSFRNTE9wdGlvbkVsZW1lbnQoKmkpOwogICAgICAg
ICAgICAgaWYgKG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkgIT0gb3B0aW9uRWxlbWVudC0+aGFz
QXR0cmlidXRlKHNlbGVjdGVkQXR0cikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJc1NlbGVjdEluRGVmYXVsdFN0YXRl
KEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiAgICAgZm9yIChWZWN0b3I8SFRNTEVsZW1lbnQq
Pjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0SXRlbXMuYmVnaW4oKSk7IGkgIT0gbGlzdEl0ZW1zLmVu
ZCgpOyArK2kpIHsKICAgICAgICAgaWYgKCEoKmkpLT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjpv
cHRpb25UYWcpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEhUTUxPcHRpb25FbGVt
ZW50KiBvcHRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPigqaSk7
CisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9IVE1MT3B0aW9u
RWxlbWVudCgqaSk7CiAgICAgICAgIGlmIChvcHRpb25FbGVtZW50LT5oYXNBdHRyaWJ1dGUoc2Vs
ZWN0ZWRBdHRyKSkgewogICAgICAgICAgICAgLy8gVGhlIHBhZ2Ugc3BlY2lmaWVkIHRoZSBvcHRp
b24gdG8gc2VsZWN0LgogICAgICAgICAgICAgaW5pdGlhbFNlbGVjdGVkID0gb3B0aW9uRWxlbWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3NjZmOWQ0ZWI0NjRkYmIx
YmYxZDA3ZmY5Y2EyZGVmNGRmOWNkMzE2Li42NTdmOTIwYTQ0ZTkyZWUwN2ZhM2U3NjIyNWU1YzJj
ZDgxM2FjNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02NDY2LDcg
KzY0NjYsNyBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAtICh2
b2lkKV9lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlOihXZWJDb3JlOjpOb2RlKilub2RlCiB7CiAgICAg
QVNTRVJUKG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp2aWRlb1RhZykpOwot
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRp
YUVsZW1lbnQqPihub2RlKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiB2aWRlb0VsZW1lbnQgPSB0
b01lZGlhRWxlbWVudChub2RlKTsKIAogICAgIGlmIChfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRy
b2xsZXIpIHsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNvbnRyb2xsZXIgbWVk
aWFFbGVtZW50XSA9PSB2aWRlb0VsZW1lbnQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192643</attachid>
            <date>2013-03-11 22:58:41 -0700</date>
            <delta_ts>2013-03-12 10:46:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112072-20130311225441.patch</filename>
            <type>text/plain</type>
            <size>32133</size>
            <attacher name="Abhishek Arya">inferno</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODliZjE1YWEwMGI1Y2E3
Yzk1MGE1NDRlMzQyMTY4YjQ2NDA0MTg1Yy4uNDIyZDkzMTRjMzdhMDY1NTExNGExNzAwMjk4Yjll
ODExZDMwMGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTAzLTExICBBYmhp
c2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBzdGF0
aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlw
IFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0
aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAgICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3Rz
IGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlNZW51TGlzdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOgorICAgICAgICAqIGJp
bmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoa2l0Q2xhc3MpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5
RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KToKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXNMZWdhY3lBcHBsZVN0eWxlU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpp
c0VtcHR5Rm9udFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBw
bHlCbG9ja1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRGb3JGb3JtYXRCbG9jayk6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c01haWxQYXN0ZUFzUXVvdGF0aW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpoYXZlU2FtZVRh
Z05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1ha2VJbnNlcnRlZENvbnRlbnRSb3VuZFRyaXBw
YWJsZVdpdGhIVE1MVHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpyZXN0b3JlKToKKyAgICAgICAgKiBo
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBl
OjpzdWdnZXN0aW9ucyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc0luSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjppc0lu
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjppc0luRm9vdCk6CisgICAgICAgICogaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6
OmlubmVyUGF0Y2hOb2RlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXJNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ3VzdG9t
QXR0cmlidXRlcyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRP
YmplY3Q6OmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6bmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1lZGlhOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hG
aWVsZDo6YXV0b3NhdmVOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnRleHRGb3JtQ29u
dHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlVXNlck1vZGlmeVByb3BlcnR5
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVudCk6
CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMpOgorCiAyMDEz
LTAzLTExICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBi
dWlsZCBmb3IgcjE0NTM5NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1YTBhMTdhNmFm
NTI3M2NlYjM3OGYxZmE0MGViMGZjODMxYjkwYTNhLi4xMzE0ODAwM2EwZDliM2YwODA4MDkxOGU1
YjUxMTYwOTBjNTNhYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0
IEBACiAyMDEzLTAzLTExICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAK
KyAgICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgUGhpbGlwIFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rpb25zIGFy
ZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAgICAgIGhl
bHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVy
ZS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6Zm9jdXNlZE5vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBzcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVD
bGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgICogc3Jj
L0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9IVE1MRWxlbWVu
dCk6CisgICAgICAgICogc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHA6CisgICAgICAgIChI
VE1MTmFtZXM6OklzU2VsZWN0SW5EZWZhdWx0U3RhdGUpOgorCisyMDEzLTAzLTExICBBYmhpc2hl
ayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgQWRkIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OIHRvIGNhdGNoIGJhZCBjYXN0cy4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjA2MAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggN2Q5MWM1MjQ0NGQ0MzEwZWVmMTI1NTdjZGIyMjViN2Q1MDQyODgxMi4uYTgwMGViNDk0
MmI2NDJhNWQ3MWYxMzY2NmQ0Mjk1ZDdkMjliMTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEzLTAzLTExICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogZnVuY3Rpb25zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwIFJvZ2Vycy4KKworICAgICAgICB0byogZnVuY3Rp
b25zIGFyZSBwcmVmZXJyZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAg
ICAgIGhlbHAgdG8gY2F0Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0
cnVjdHVyZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfZW50ZXJGdWxsc2NyZWVuRm9yTm9kZTpXZWJDb3JlOjpdKToKKwogMjAxMy0wMy0wNyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkaWRG
b2N1c1RleHRGaWVsZDppbkZyYW1lIHRvIFdlYkZvcm1EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCmluZGV4
IDc4ZjQ0YWI1YTZmNGY0NjE5MjE5NWViZDM2ZjJmYzgwOThmMjgzNTQuLjZhNDllN2RiZmQ5ZGYw
YmRiOGM4NzAwMDAyMjZmNjJiZTRhMTFjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNhblNldEZvY3VzQXR0cmlidXRlKCkgY29u
c3QKICAgICBpZiAoIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOwor
ICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgpKS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKIH0K
IAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQg
b3B0aW9uSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IGYyMjc4Njgy
NzA3YzRkN2ZlODY4NmI4MTJhOGNlMGJhM2RmYTdhNmEuLmRjNmE4NDkwMTBiMmZjNGRiMzJiZGNk
YTNmNGQ4YzEzYzE3NDZkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0y
OTUsNyArMjk1LDcgQEAgQ2xhc3Mga2l0Q2xhc3MoV2ViQ29yZTo6Tm9kZSogaW1wbCkKICAgICBz
d2l0Y2ggKGltcGwtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpOb2RlOjpF
TEVNRU5UX05PREU6CiAgICAgICAgICAgICBpZiAoaW1wbC0+aXNIVE1MRWxlbWVudCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjplbGVtZW50Q2xhc3Moc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEVsZW1lbnQqPihpbXBsKS0+dGFnUU5hbWUoKSwgW0RPTUhUTUxFbGVtZW50IGNs
YXNzXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmVsZW1lbnRDbGFzcyh0b0hU
TUxFbGVtZW50KGltcGwpLT50YWdRTmFtZSgpLCBbRE9NSFRNTEVsZW1lbnQgY2xhc3NdKTsKICNp
ZiBFTkFCTEUoU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKQogICAgICAgICAgICAgaWYgKGltcGwtPmlz
U1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjplbGVtZW50Q2xh
c3Moc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U1ZHRWxlbWVudCo+KGltcGwpLT50YWdRTmFtZSgpLCBb
RE9NU1ZHRWxlbWVudCBjbGFzc10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA3NzQ4MjI3YWU3NDM1YjgwOWE2MjdlMjU3
NDVmOWM2ZTBiZjFjZWMzLi5hNzRlNWIwOWIyYjQzODU5OTY3NjQxMjkyMGYwMmJiOGVmM2M2NWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3Rl
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3Rl
bmVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJl
cGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKICAg
ICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50ID0gMDsKICAgICBpZiAobV9ub2RlICYmIG1f
bm9kZS0+aXNIVE1MRWxlbWVudCgpKQotICAgICAgICBmb3JtRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxFbGVtZW50Kj4obV9ub2RlKS0+Zm9ybSgpOworICAgICAgICBmb3JtRWxlbWVudCA9IHRv
SFRNTEVsZW1lbnQobV9ub2RlKS0+Zm9ybSgpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBub2RlV3JhcHBlciA9IHRvT2JqZWN0V3JhcHBlcjxOb2RlPihtX25vZGUsIGlzb2xhdGUpOwog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZm9ybVdyYXBwZXIgPSB0b09iamVjdFdyYXBwZXI8
SFRNTEZvcm1FbGVtZW50Pihmb3JtRWxlbWVudCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGVhZjAzZTMyNzNkMDE3ODlhNjAwOGU5OTEzMzZiMDIw
NDE2ZGEwOGMuLmNiMzgzN2UwY2JhOWFhOTExZDNhM2U2OWExMTRjYzY5MzAwNjJiZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5B
QkxFKFBST0dSRVNTX0VMRU1FTlQpCiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUocHJvZ3Jlc3NUYWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEhUTUxQcm9ncmVzc0Vs
ZW1lbnQqIHByb2dyZXNzID0gc3RhdGljX2Nhc3Q8SFRNTFByb2dyZXNzRWxlbWVudCo+KGVsZW1l
bnQpOworICAgICAgICAgICAgICAgICAgICBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBwcm9ncmVzcyA9
IHRvSFRNTFByb2dyZXNzRWxlbWVudChlbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2dyZXNzICYmICFwcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjZjY4NDhkYzY5
ZDlkMTBhODk0YzZmZjM3ZTVhYjZlOThjNmQ0NTM2Li5jMjZjZDlmMDI1NWQwYmFkMjFjMWVmZTZh
YzQwMGU3YmUxNDcxNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcApAQCAtNjcsNyArNjcsNyBAQCBib29sIGlzTGVnYWN5QXBwbGVTdHlsZVNwYW4o
Y29uc3QgTm9kZSAqbm9kZSkKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSFRNTEVsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgSFRNTEVsZW1lbnQqIGVsZW0g
PSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCo+KG5vZGUpOworICAgIGNvbnN0IEhUTUxF
bGVtZW50KiBlbGVtID0gdG9IVE1MRWxlbWVudChub2RlKTsKICAgICByZXR1cm4gZWxlbS0+aGFz
TG9jYWxOYW1lKHNwYW5BdHRyKSAmJiBlbGVtLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBz
dHlsZVNwYW5DbGFzc1N0cmluZygpOwogfQogCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBpc0Vt
cHR5Rm9udFRhZyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBTaG91bGRTdHlsZUF0dHJpYnV0ZUJl
RW1wdHkgc2hvdWxkU3QKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmhhc1RhZ05hbWUo
Zm9udFRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBoYXNOb0F0dHJp
YnV0ZU9yT25seVN0eWxlQXR0cmlidXRlKHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4o
ZWxlbWVudCksIHNob3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSk7CisgICAgcmV0dXJuIGhhc05v
QXR0cmlidXRlT3JPbmx5U3R5bGVBdHRyaWJ1dGUodG9IVE1MRWxlbWVudChlbGVtZW50KSwgc2hv
dWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5KTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8RWxlbWVu
dD4gY3JlYXRlRm9udEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjkwLDggKzI5MCw4
IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZShFZGl0aW5nU3R5bGUg
KnN0eWxlKQogICAgICAgICBuZXh0UGFyYWdyYXBoU3RhcnQgPSBlbmRPZlBhcmFncmFwaChwYXJh
Z3JhcGhTdGFydCkubmV4dCgpOwogICAgIH0KICAgICAKLSAgICBzdGFydFJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
c2NvcGUpLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICBlbmRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNjb3Bl
KSwgZW5kSW5kZXgsIDAsIHRydWUpOworICAgIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHRvQ29udGFpbmVyTm9kZShzY29wZSksIHN0YXJ0SW5k
ZXgsIDAsIHRydWUpOworICAgIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aCh0b0NvbnRhaW5lck5vZGUoc2NvcGUpLCBlbmRJbmRleCwgMCwgdHJ1ZSk7
CiAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCiAgICAgICAgIHVwZGF0ZVN0YXJ0RW5k
KHN0YXJ0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKaW5k
ZXggZWRmM2FhNWQ2ZmFkNmIwNjRlMDlhNDE1MDEwNmU0MWYxZGU2ZjRiZi4uNWE4YmY2ZjExZGYx
ZDk0ODY5ZDdkZjAzNjM3N2E5OWFiOTc5ZjA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgTm9kZSog
ZW5jbG9zaW5nQmxvY2tUb1NwbGl0VHJlZVRvKE5vZGUqIHN0YXJ0Tm9kZSk7CiBzdGF0aWMgYm9v
bCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsK
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhOb2RlKiBub2RlKQog
ewotICAgIHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgaXNFbGVtZW50Rm9yRm9ybWF0
QmxvY2soc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT50YWdRTmFtZSgpKTsKKyAgICByZXR1
cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIGlzRWxlbWVudEZvckZvcm1hdEJsb2NrKHRvRWxl
bWVudChub2RlKS0+dGFnUU5hbWUoKSk7CiB9CiAKIEZvcm1hdEJsb2NrQ29tbWFuZDo6Rm9ybWF0
QmxvY2tDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCmluZGV4IGYxMDRlMDI3NDRmOTlhODI0YTRkOGZhM2EzY2FiM2I4ZWZhNTk1YjMu
LjhmNWUzYWQ5ZmVjMTJlN2RmZGYyMTlkZDg4MGFkNmE3NjQyZjIzNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC00MjYs
NyArNDI2LDcgQEAgYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hvdWxkTWVyZ2VFbmQo
Ym9vbCBzZWxlY3Rpb25FbmRXYXNFbmRPZlBhcmFncmFwaCkKIAogc3RhdGljIGJvb2wgaXNNYWls
UGFzdGVBc1F1b3RhdGlvbk5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9k
ZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpICYmIG5vZGUtPmlzRWxlbWVudE5v
ZGUoKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9kZSktPmdldEF0dHJpYnV0ZShj
bGFzc0F0dHIpID09IEFwcGxlUGFzdGVBc1F1b3RhdGlvbjsKKyAgICByZXR1cm4gbm9kZSAmJiBu
b2RlLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAm
JiB0b0VsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IEFwcGxlUGFzdGVB
c1F1b3RhdGlvbjsKIH0KIAogc3RhdGljIGJvb2wgaXNIZWFkZXJFbGVtZW50KGNvbnN0IE5vZGUq
IGEpCkBAIC00NDQsNyArNDQ0LDcgQEAgc3RhdGljIGJvb2wgaXNIZWFkZXJFbGVtZW50KGNvbnN0
IE5vZGUqIGEpCiAKIHN0YXRpYyBib29sIGhhdmVTYW1lVGFnTmFtZShOb2RlKiBhLCBOb2RlKiBi
KQogewotICAgIHJldHVybiBhICYmIGIgJiYgYS0+aXNFbGVtZW50Tm9kZSgpICYmIGItPmlzRWxl
bWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oYSktPnRhZ05hbWUoKSA9PSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4oYiktPnRhZ05hbWUoKTsKKyAgICByZXR1cm4gYSAmJiBiICYmIGEt
PmlzRWxlbWVudE5vZGUoKSAmJiBiLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KGEpLT50
YWdOYW1lKCkgPT0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGIpLT50YWdOYW1lKCk7CiB9CiAKIGJv
b2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZE1lcmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgc291cmNlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGRlc3RpbmF0aW9uKQpAQCAtNDg2
LDcgKzQ4Niw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFu
dFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgIGlmIChpbmxpbmVT
dHlsZSkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkgewogICAg
ICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1lPiBhdHRyaWJ1dGVzOwotICAgICAgICAg
ICAgICAgIEhUTUxFbGVtZW50KiBodG1sRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50
Kj4oZWxlbWVudCk7CisgICAgICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGh0bWxFbGVtZW50ID0g
dG9IVE1MRWxlbWVudChlbGVtZW50KTsKIAogICAgICAgICAgICAgICAgIGlmIChuZXdJbmxpbmVT
dHlsZS0+Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoaHRtbEVsZW1lbnQpKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIGUuZy4gPGIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3Jt
YWw7Ij4gaXMgY29udmVydGVkIHRvIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyI+
CkBAIC02MjUsOCArNjI1LDggQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bWFrZUlu
c2VydGVkQ29udGVudFJvdW5kVHJpcHBhYmxlV2l0aEhUTUxUcmVlQnVpbGQKICAgICAgICAgaWYg
KCFub2RlLT5pc0hUTUxFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBpZiAoaXNQcm9oaWJpdGVkUGFyYWdyYXBoQ2hpbGQoc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVs
ZW1lbnQqPihub2RlLmdldCgpKS0+bG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICBpZiAoSFRN
TEVsZW1lbnQqIHBhcmFncmFwaEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGVu
Y2xvc2luZ05vZGVXaXRoVGFnKHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUuZ2V0KCkp
LCBwVGFnKSkpCisgICAgICAgIGlmIChpc1Byb2hpYml0ZWRQYXJhZ3JhcGhDaGlsZCh0b0hUTUxF
bGVtZW50KG5vZGUuZ2V0KCkpLT5sb2NhbE5hbWUoKSkpIHsKKyAgICAgICAgICAgIGlmIChIVE1M
RWxlbWVudCogcGFyYWdyYXBoRWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoZW5jbG9zaW5nTm9kZVdp
dGhUYWcocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZS5nZXQoKSksIHBUYWcpKSkKICAg
ICAgICAgICAgICAgICBtb3ZlTm9kZU91dE9mQW5jZXN0b3Iobm9kZSwgcGFyYWdyYXBoRWxlbWVu
dCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXgg
M2RkYjhlYTNmMTNjYWZkNzMyYTA4NzZkMWQ5MWJhZGU5MzJjMTJmMS4uZDhmMGFjNGU0Y2YyN2M0
MDU4NjNkZjNmNjc0MTExZTg0MDYzY2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBh
Z2UuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgQ2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlKiBw
YWdlKQogICAgIERvY3VtZW50KiBmb2N1c2VkRG9jdW1lbnQgPSBwYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYgKE5vZGUqIG5v
ZGUgPSBmb2N1c2VkRG9jdW1lbnQtPmZvY3VzZWROb2RlKCkpIHsKICAgICAgICAgaWYgKG5vZGUt
PmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2Rl
KS0+dXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUpOworICAgICAgICAgICAgdG9FbGVtZW50KG5v
ZGUpLT51cGRhdGVGb2N1c0FwcGVhcmFuY2UodHJ1ZSk7CiAgICAgfQogCiAgICAgaWYgKG1fbmVl
ZFN0eWxlUmVjYWxjRm9yVmlzaXRlZExpbmtzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwCmluZGV4IGYyMTQ3NzcxZmVhZTU1NjY0YmRhOWI2Yjg3ZGQxOWRlOTg3YjU1Nzku
LjdiYzlkMGNkMzJmYjM4MDFhMmJmYWFjNDMyNjViM2IzNGM3MzhhMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgVmVjdG9yPENvbG9y
PiBDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKSBjb25zdAogICAgIEhUTUxEYXRhTGlzdEVs
ZW1lbnQqIGRhdGFMaXN0ID0gZWxlbWVudCgpLT5kYXRhTGlzdCgpOwogICAgIGlmIChkYXRhTGlz
dCkgewogICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+
b3B0aW9ucygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBIVE1MT3B0aW9uRWxlbWVu
dCogb3B0aW9uID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihvcHRpb25zLT5pdGVt
KGkpKTsgaSsrKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IEhUTUxPcHRpb25FbGVt
ZW50KiBvcHRpb24gPSB0b0hUTUxPcHRpb25FbGVtZW50KG9wdGlvbnMtPml0ZW0oaSkpOyBpKysp
IHsKICAgICAgICAgICAgIGlmICghZWxlbWVudCgpLT5pc1ZhbGlkVmFsdWUob3B0aW9uLT52YWx1
ZSgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIENvbG9yIGNvbG9y
KG9wdGlvbi0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24uY3BwCmluZGV4IDU1ZmI5YzIxMWEzNDY2YTUxYjQwZjU5MDllOTU1MTUyZDgz
MDBlZWIuLjUyY2IwZWNiNWZkY2JkZmUxNzFkZDg2NmFhODYxODkyYTVlNTE2OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0zOSwx
NyArMzksMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGJvb2wgaXNJ
bkhlYWQoRWxlbWVudCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudE5vZGUoKSAmJiBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4ocm93LT5wYXJlbnROb2RlKCkpLT5oYXNMb2NhbE5hbWUodGhl
YWRUYWcpOworICAgIHJldHVybiByb3ctPnBhcmVudE5vZGUoKSAmJiB0b0VsZW1lbnQocm93LT5w
YXJlbnROb2RlKCkpLT5oYXNMb2NhbE5hbWUodGhlYWRUYWcpOwogfQogCiBzdGF0aWMgYm9vbCBp
c0luQm9keShFbGVtZW50KiByb3cpCiB7Ci0gICAgcmV0dXJuIHJvdy0+cGFyZW50Tm9kZSgpICYm
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihyb3ctPnBhcmVudE5vZGUoKSktPmhhc0xvY2FsTmFtZSh0
Ym9keVRhZyk7CisgICAgcmV0dXJuIHJvdy0+cGFyZW50Tm9kZSgpICYmIHRvRWxlbWVudChyb3ct
PnBhcmVudE5vZGUoKSktPmhhc0xvY2FsTmFtZSh0Ym9keVRhZyk7CiB9CiAKIHN0YXRpYyBib29s
IGlzSW5Gb290KEVsZW1lbnQqIHJvdykKIHsKLSAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkg
JiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJvdy0+cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1l
KHRmb290VGFnKTsKKyAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgdG9FbGVtZW50KHJv
dy0+cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsKIH0KIAogSFRNTFRhYmxl
Um93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKEhUTUxUYWJsZUVs
ZW1lbnQqIHRhYmxlLCBIVE1MVGFibGVSb3dFbGVtZW50KiBwcmV2aW91cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggZjFkMDk4ZjQ0NDRiZGY5
MzU3NWI3ZDg4MmQwMjE5N2ZmZjk0Y2ExYy4uM2RhZGMyODYzMGFhYTE5NTNkZjk5NmVkYzkwZTU5
NjNmOTQ1NWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNo
U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHAKQEAgLTE3MCw4ICsxNzAsOCBAQCBib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRj
aE5vZGUoRGlnZXN0KiBvbGREaWdlc3QsIERpZ2VzdCogbmV3RGlnZXN0LCBFeGNlcAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFBhdGNoIGF0dHJpYnV0ZXMKLSAgICBFbGVtZW50KiBv
bGRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9sZE5vZGUpOwotICAgIEVsZW1lbnQq
IG5ld0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3Tm9kZSk7CisgICAgRWxlbWVu
dCogb2xkRWxlbWVudCA9IHRvRWxlbWVudChvbGROb2RlKTsKKyAgICBFbGVtZW50KiBuZXdFbGVt
ZW50ID0gdG9FbGVtZW50KG5ld05vZGUpOwogICAgIGlmIChvbGREaWdlc3QtPm1fYXR0cnNTSEEx
ICE9IG5ld0RpZ2VzdC0+bV9hdHRyc1NIQTEpIHsKICAgICAgICAgLy8gRklYTUU6IENyZWF0ZSBh
IGZ1bmN0aW9uIGluIEVsZW1lbnQgZm9yIHJlbW92aW5nIGFsbCBwcm9wZXJ0aWVzLiBUYWtlIGlu
IGFjY291bnQgd2hldGhlciBkaWQvd2lsbE1vZGlmeUF0dHJpYnV0ZSBhcmUgaW1wb3J0YW50Lgog
ICAgICAgICBpZiAob2xkRWxlbWVudC0+aGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA1NTU3YjY3Y2IxM2M3Y2Nm
MmUzYmU4OTU2YjNhNGIxOWFlNjM3M2MzLi5hYWI5ZGQ4NTE3YjljYmM2MWNkYTVjNzA4NGI4MmRl
NTQ2ZjY1MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTUw
LDcgKzE1MCw3IEBAIHZvaWQgU2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDdXN0
b21BdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIG91dCwgRWxlCiAgICAgaWYgKCFlbGVtZW50LT5p
c0ZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogZnJhbWVPd25lciA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVu
dCo+KGVsZW1lbnQpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25lciA9IHRv
RnJhbWVPd25lckVsZW1lbnQoZWxlbWVudCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZnJhbWVPd25l
ci0+Y29udGVudEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMzdjZDAwYjNlY2U0NGM4MDMzODA1
NTk1ZTgzOTRjNzIzM2ZiYjgzYS4uYzE1ODdlYTAzYmE4ZTllYzA2MWFiOTBhY2E0OGY1YTZjODU1
ZmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzc0LDcgKzEz
NzQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxl
LCB2b2lkKiB2YWx1ZSkKICAgICAgICAgTlBPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdCA9IDA7
CiAKICAgICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IG1fZWxl
bWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKG9iamVj
dFRhZykpCi0gICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBzdGF0aWNfY2FzdDxIVE1M
UGx1Z0luRWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7CisgICAgICAgICAgICBw
bHVnaW5TY3JpcHRPYmplY3QgPSBtX2VsZW1lbnQtPmdldE5QT2JqZWN0KCk7CiAKICAgICAgICAg
Ly8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQg
aGVyZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5o
dG1sPgogICAgICAgICBpZiAocGx1Z2luU2NyaXB0T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggYWFiZTc2Y2NmYWQ5
NWQ5OGI0YzkxNDVjZjU5NWUwNjYxZTY2ZTZhYS4uYTkwZDUyNGI2MTMyNGM4NDdmNDRmOTRkMDgy
YzE0M2E3ZmJlNzg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCkBAIC0xNzEsMTEgKzE3MSwxMSBAQCB2b2lkIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dAogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAg
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpOworICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSgpKTsKICAgICBpZiAoIWVsZW1lbnQgfHwg
IWVsZW1lbnQtPmlzUGx1Z2luRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1M
UGx1Z0luRWxlbWVudCogcGx1Z0luRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVt
ZW50Kj4oZWxlbWVudCk7CisgICAgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVsZW1lbnQgPSB0
b0hUTUxQbHVnSW5FbGVtZW50KGVsZW1lbnQpOwogICAgIGlmIChwbHVnSW5FbGVtZW50LT5kaXNw
bGF5U3RhdGUoKSA+IEhUTUxQbHVnSW5FbGVtZW50OjpEaXNwbGF5aW5nU25hcHNob3QpIHsKICAg
ICAgICAgUmVuZGVyUGFydDo6cGFpbnRDb250ZW50cyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50CiAgICAgaWYgKCFwbHVnSW5FbGVtZW50LT5pc1BsdWdJbkltYWdlRWxlbWVudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBJbWFnZSogc25hcHNob3QgPSBzdGF0aWNfY2FzdDxIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50Kj4ocGx1Z0luRWxlbWVudCktPnNuYXBzaG90SW1hZ2UoKTsKKyAgICBJ
bWFnZSogc25hcHNob3QgPSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQocGx1Z0luRWxlbWVudCkt
PnNuYXBzaG90SW1hZ2UoKTsKICAgICBpZiAoc25hcHNob3QpCiAgICAgICAgIHBhaW50U25hcHNo
b3RJbWFnZShwYWludEluZm8sIHBhaW50T2Zmc2V0LCBzbmFwc2hvdCk7CiB9CkBAIC00MTcsNyAr
NDE3LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JFdmVudChFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50
KTsKLSAgICBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQbHVn
SW5FbGVtZW50Kj4obm9kZSgpKTsKKyAgICBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCA9IHRv
SFRNTFBsdWdJbkVsZW1lbnQobm9kZSgpKTsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50
KS0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBtX21vdXNlRG93bldhc0luVW5h
dmFpbGFibGVQbHVnaW5JbmRpY2F0b3IgPSBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3Io
bW91c2VFdmVudCk7CiAgICAgICAgIGlmIChtX21vdXNlRG93bldhc0luVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDVlNzQ3NzhjMzEyZTc1YTZhZGM4NWYwNTVmODI0MjY2YTEyYTBkODQuLjM3NDFjMjFiMDEz
NDdiYjUyZmU5Yjg3MjBkY2QyOWUwNTk2NDNiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtMjc2LDExICsyNzYsMTEgQEAgU3RyaW5nIFJlbmRlckxheWVy
OjpuYW1lKCkgY29uc3QKICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyKCktPm5vZGUoKSkg
ewogICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICBuYW1l
LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgbmFtZS5hcHBlbmQoc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUpLT50YWdOYW1lKCkpOworICAgICAgICAgICAgbmFtZS5hcHBlbmQodG9FbGVtZW50
KG5vZGUpLT50YWdOYW1lKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5oYXNJRCgp
KSB7CiAgICAgICAgICAgICBuYW1lLmFwcGVuZExpdGVyYWwoIiBpZD1cJyIpOwotICAgICAgICAg
ICAgbmFtZS5hcHBlbmQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5nZXRJZEF0dHJpYnV0
ZSgpKTsKKyAgICAgICAgICAgIG5hbWUuYXBwZW5kKHRvRWxlbWVudChub2RlKS0+Z2V0SWRBdHRy
aWJ1dGUoKSk7CiAgICAgICAgICAgICBuYW1lLmFwcGVuZCgnXCcnKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAppbmRleCBjYWE0N2UyOTlmYzhj
MTBmYWJmMzMxYWFlODRhOWU3YTBiMWQ1NjAxLi5kOGYxZTg1MmVjNzNmMDE0ZjRhMzRmMjQyNDcx
NWFkODlkNmU1ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVkaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgUmVuZGVyTWVkaWE6On5SZW5kZXJNZWRpYSgpCiAKIEhUTUxNZWRp
YUVsZW1lbnQqIFJlbmRlck1lZGlhOjptZWRpYUVsZW1lbnQoKSBjb25zdAogeyAKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUoKSk7IAorICAgIHJldHVybiB0
b01lZGlhRWxlbWVudChub2RlKCkpOyAKIH0KIAogdm9pZCBSZW5kZXJNZWRpYTo6bGF5b3V0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4
IDZiOTA2MTY2MzVhMDRhNzUyNzZhYmIwN2EwNjdjNTBjM2E1ODlkYmYuLmU1MThkOTYyYTIwNjkw
YWEzM2NhNTA4MDYzZTE0YjJjM2FlZDRlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIEVWaXNpYmlsaXR5
IFJlbmRlclNlYXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9uKCkgY29uc3QKIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJTZWFyY2hGaWVsZDo6YXV0b3NhdmVOYW1lKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJp
YnV0ZShhdXRvc2F2ZUF0dHIpOworICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSgpKS0+Z2V0QXR0
cmlidXRlKGF1dG9zYXZlQXR0cik7CiB9CiAKIC8vIFBvcHVwTWVudUNsaWVudCBtZXRob2RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCBi
ZWQ0MWRjMjI1NDQ4NDRmOTI4MjQ1N2Q1YTk0YjM5MDRlMWY0MmZlLi4xYzk1NTQxNDQ4MTczOGQ1
MjI4NDMyMTViZDQyMDllNTRlZDIzNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVuZGVyVGV4dENvbnRy
b2w6On5SZW5kZXJUZXh0Q29udHJvbCgpCiAKIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBS
ZW5kZXJUZXh0Q29udHJvbDo6dGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4obm9kZSgpKTsK
KyAgICByZXR1cm4gdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKCkpOwogfQogCiBI
VE1MRWxlbWVudCogUmVuZGVyVGV4dENvbnRyb2w6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdApA
QCAtODAsOSArODAsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdXBkYXRlVXNlck1vZGlmeVByb3Bl
cnR5KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBib29sIGlzUmVhZE9ubHlD
b250cm9sID0gZmFsc2U7CiAKICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CisgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7CiAgICAgICAgIGlzRW5hYmxl
ZCA9IGVsZW1lbnQtPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7Ci0gICAgICAgIGlzUmVhZE9ubHlD
b250cm9sID0gZWxlbWVudC0+aXNUZXh0Rm9ybUNvbnRyb2woKSAmJiBzdGF0aWNfY2FzdDxIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCo+KGVsZW1lbnQpLT5yZWFkT25seSgpOworICAgICAgICBp
c1JlYWRPbmx5Q29udHJvbCA9IGVsZW1lbnQtPmlzVGV4dEZvcm1Db250cm9sKCkgJiYgdG9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudChlbGVtZW50KS0+cmVhZE9ubHkoKTsKICAgICB9CiAKICAg
ICBzdHlsZS0+c2V0VXNlck1vZGlmeSgoaXNSZWFkT25seUNvbnRyb2wgfHwgIWlzRW5hYmxlZCkg
PyBSRUFEX09OTFkgOiBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAppbmRl
eCA5NjQwYWQ1OWJkZWNiMzAzODZlNzkzYzEzNmQyMTgzNDYwNWM2ODI4Li5jNDA4YWFkOWI2YjZj
NWNjODYyMGMzMmRhNzE3MTg2ZjVhMTE3MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIFJlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKEVsZW1lbnQqIGVsZW1l
bnQpCiAKIHZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjp1cGRhdGVGcm9tRWxlbWVudCgpCiB7Ci0g
ICAgRWxlbWVudCogZmVuY2VkID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSk7CisgICAg
RWxlbWVudCogZmVuY2VkID0gdG9FbGVtZW50KG5vZGUoKSk7CiAgCiAgICAgLy8gRklYTUU6IEhh
bmRsZSBvcGVuL2Nsb3NlIHZhbHVlcyB3aXRoIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyICh0aGV5
IHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgdGV4dCkuCiAgICAgQXRvbWljU3RyaW5nIG9wZW5WYWx1
ZSA9IGZlbmNlZC0+Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpvcGVuQXR0cik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rp
b24uY3BwCmluZGV4IDU2MDNlYjU1ODA4YjQwNGJjNTU0ZGMwMTVkOTRhMmQ2YWYwNTIwNjAuLjA1
YTNlZjYzNTg1NjM2YTNmMThhZGJmMTMxNmIwYjY2ZDY3OWMxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3Bw
CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZyb21F
bGVtZW50KCkKICAgICBpZiAoaXNFbXB0eSgpKSAKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IEVsZW1lbnQqIGZyYWN0aW9uID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSk7CisgICAg
RWxlbWVudCogZnJhY3Rpb24gPSB0b0VsZW1lbnQobm9kZSgpKTsKICAgICAKICAgICBSZW5kZXJP
YmplY3QqIG51bWVyYXRvcldyYXBwZXIgPSBmaXJzdENoaWxkKCk7CiAgICAgUmVuZGVyT2JqZWN0
KiBkZW5vbWluYXRvcldyYXBwZXIgPSBudW1lcmF0b3JXcmFwcGVyLT5uZXh0U2libGluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCmluZGV4IDFiZDBmMGM1ZjZhZDM3Y2Y3MjIwOTRkZjM1OWMwMDhmMmI3Yzg3NWUu
LmU1YmQyMjNkOGI5ODcxNDRmZDNjN2YzYjVhYjFmM2Q3Mjk1ZWNjZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
QEAgLTU5OSw3ICs1OTksNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIo
RG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudAogICAgICAgICBDb250
YWluZXJOb2RlKiBuID0gcGFyZW50RWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAo
IW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBw
YXJlbnRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAgICAgICBwYXJlbnRF
bGVtZW50ID0gdG9FbGVtZW50KG4pOwogICAgIH0KIAogICAgIGlmIChlbGVtU3RhY2suaXNFbXB0
eSgpKQpAQCAtODYzLDcgKzg2Myw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1l
bnROcygpCiAgICAgaWYgKGhhY2tBcm91bmRMaWJYTUxFbnRpdHlQYXJzaW5nQnVnKCkgJiYgY29u
dGV4dCgpLT5kZXB0aCA8PSBkZXB0aFRyaWdnZXJpbmdFbnRpdHlFeHBhbnNpb24oKSkKICAgICAg
ICAgc2V0RGVwdGhUcmlnZ2VyaW5nRW50aXR5RXhwYW5zaW9uKC0xKTsKIAotICAgIGlmICghc2Ny
aXB0aW5nQ29udGVudElzQWxsb3dlZChtX3NjcmlwdGluZ1Blcm1pc3Npb24pICYmIG4tPmlzRWxl
bWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4uZ2V0
KCkpKSkgeworICAgIGlmICghc2NyaXB0aW5nQ29udGVudElzQWxsb3dlZChtX3NjcmlwdGluZ1Bl
cm1pc3Npb24pICYmIG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b1NjcmlwdEVsZW1lbnQodG9FbGVt
ZW50KG4uZ2V0KCkpKSkgewogICAgICAgICBwb3BDdXJyZW50Tm9kZSgpOwogICAgICAgICBuLT5y
ZW1vdmUoSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybjsKQEAgLTg3NCw3ICs4NzQs
NyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihuLmdldCgpKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG4uZ2V0KCkpOwog
CiAgICAgLy8gVGhlIGVsZW1lbnQncyBwYXJlbnQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92
ZWQgZnJvbSBkb2N1bWVudC4KICAgICAvLyBQYXJzaW5nIGNvbnRpbnVlcyBpbiB0aGlzIGNhc2Us
IGJ1dCBzY3JpcHRzIGFyZW4ndCBleGVjdXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggYjExMDg5M2RkNTM3OGU2OGU5ODFjMjFj
NDg2Y2M5ZTEyNzRjMDVjMi4uMzQ4Yzg3MzdkMWVhZDM3ZjE1ZGQyNDcwYjQ1ZmVjMGU1ODA2OTA0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZvY3VzZWROb2Rl
Q2hhbmdlZChOb2RlKiBub2RlKQogICAgICAgICAvLyBXZWJDb3JlOjpOb2RlLgogICAgICAgICBI
aXRUZXN0UmVzdWx0IGhpdFRlc3QoSW50UG9pbnQoMCwgMCkpOwogICAgICAgICAvLyBUaGlzIGNh
c3QgbXVzdCBiZSB2YWxpZCBiZWNhdXNlIG9mIHRoZSBpc0xpbmsoKSBjaGVjay4KLSAgICAgICAg
aGl0VGVzdC5zZXRVUkxFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKSk7CisgICAg
ICAgIGhpdFRlc3Quc2V0VVJMRWxlbWVudCh0b0VsZW1lbnQobm9kZSkpOwogICAgICAgICBpZiAo
aGl0VGVzdC5pc0xpdmVMaW5rKCkpCiAgICAgICAgICAgICBmb2N1c1VSTCA9IGhpdFRlc3QuYWJz
b2x1dGVMaW5rVVJMKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggZGYyMWY0MjBkN2I5ZjdkNDRlMWI3
Mjc4ZTcyZDllM2JhYzEyMjAyZC4uZTc3NzY0YWZlNWQxOWY2N2Y2MjE2ZWVkMzhkYWY4MDgzNWVh
OWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVu
dUNsaWVudEltcGwuY3BwCkBAIC0yMjYsNyArMjI2LDcgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRp
b24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygK
ICAgICAgICAgLy8gV2Uga25vdyB0aGF0IGlmIGFic29sdXRlTWVkaWFVUkwoKSBpcyBub3QgZW1w
dHksIHRoZW4gdGhpcwogICAgICAgICAvLyBpcyBhIG1lZGlhIGVsZW1lbnQuCiAgICAgICAgIEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxI
VE1MTWVkaWFFbGVtZW50Kj4oci5pbm5lck5vblNoYXJlZE5vZGUoKSk7CisgICAgICAgICAgICB0
b01lZGlhRWxlbWVudChyLmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAgaWYgKG1lZGlh
RWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKICAgICAgICAgICAgIGRh
dGEubWVkaWFUeXBlID0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYVR5cGVWaWRlbzsKICAgICAg
ICAgZWxzZSBpZiAobWVkaWFFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YXVkaW9UYWcp
KQpAQCAtMjY2LDcgKzI2Niw3IEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51
Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAgICAgICAgICAgICAg
ICAgaWYgKHBsdWdpbi0+cGx1Z2luKCktPnN1cHBvcnRzUGFnaW5hdGVkUHJpbnQoKSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YS5tZWRpYUZsYWdzIHw9IFdlYkNvbnRleHRNZW51RGF0YTo6TWVk
aWFDYW5QcmludDsKIAotICAgICAgICAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBs
dWdpbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4oci5pbm5l
ck5vblNoYXJlZE5vZGUoKSk7CisgICAgICAgICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dCogcGx1Z2luRWxlbWVudCA9IHRvSFRNTFBsdWdJbkltYWdlRWxlbWVudChyLmlubmVyTm9uU2hh
cmVkTm9kZSgpKTsKICAgICAgICAgICAgICAgICBkYXRhLnNyY1VSTCA9IHBsdWdpbkVsZW1lbnQt
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHBsdWdpbkVsZW1lbnQtPnVybCgpKTsKICAgICAgICAg
ICAgICAgICBkYXRhLm1lZGlhRmxhZ3MgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpNZWRpYUNhblNh
dmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RPTVV0aWxpdGll
c1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJp
dmF0ZS5jcHAKaW5kZXggZTY4OGJmYWVkZTVmMmU2MmFkYjlhYTMyMjA5OTBiNTJlMTc5Y2I2OS4u
Mjc1ZTVmZWI2MDAyYzFiMDc1YzEyZmNlZDJjNDdjMjY0ODMzYmUxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIEhUTUxOb2RlVHlwZT4KIEhUTUxOb2RlVHlwZSogdG9I
VE1MRWxlbWVudChOb2RlKiBub2RlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAg
IGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTEVs
ZW1lbnQqPihub2RlKS0+aGFzVGFnTmFtZShuYW1lKSkgeworICAgICAgICAmJiB0b0hUTUxFbGVt
ZW50KG5vZGUpLT5oYXNUYWdOYW1lKG5hbWUpKSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MTm9kZVR5cGUqPihub2RlKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcAppbmRl
eCBiZTY2YWY4ZWE0NDM3ZDc2YWU1MGJjODY1MjRjNjU4MDA3ZGM3ZDg2Li5jMzg1MjkxZjc5NmRm
MjFhNjU4MTI2NGVhYzM3NTllMmE5ZTMxZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBA
QCBib29sIElzU2VsZWN0SW5EZWZhdWx0U3RhdGUoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCkK
ICAgICAgICAgZm9yIChWZWN0b3I8SFRNTEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0
SXRlbXMuYmVnaW4oKSk7IGkgIT0gbGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKICAgICAgICAgICAg
IGlmICghKCppKS0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25F
bGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPigqaSk7CisgICAgICAgICAg
ICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvSFRNTE9wdGlvbkVsZW1lbnQo
KmkpOwogICAgICAgICAgICAgaWYgKG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkgIT0gb3B0aW9u
RWxlbWVudC0+aGFzQXR0cmlidXRlKHNlbGVjdGVkQXR0cikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJc1NlbGVjdElu
RGVmYXVsdFN0YXRlKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiAgICAgZm9yIChWZWN0b3I8
SFRNTEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgaShsaXN0SXRlbXMuYmVnaW4oKSk7IGkgIT0g
bGlzdEl0ZW1zLmVuZCgpOyArK2kpIHsKICAgICAgICAgaWYgKCEoKmkpLT5oYXNMb2NhbE5hbWUo
SFRNTE5hbWVzOjpvcHRpb25UYWcpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEhU
TUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQqPigqaSk7CisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0g
dG9IVE1MT3B0aW9uRWxlbWVudCgqaSk7CiAgICAgICAgIGlmIChvcHRpb25FbGVtZW50LT5oYXNB
dHRyaWJ1dGUoc2VsZWN0ZWRBdHRyKSkgewogICAgICAgICAgICAgLy8gVGhlIHBhZ2Ugc3BlY2lm
aWVkIHRoZSBvcHRpb24gdG8gc2VsZWN0LgogICAgICAgICAgICAgaW5pdGlhbFNlbGVjdGVkID0g
b3B0aW9uRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3NjZm
OWQ0ZWI0NjRkYmIxYmYxZDA3ZmY5Y2EyZGVmNGRmOWNkMzE2Li42NTdmOTIwYTQ0ZTkyZWUwN2Zh
M2U3NjIyNWU1YzJjZDgxM2FjNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC02NDY2LDcgKzY0NjYsNyBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExh
eWVycygpCiAtICh2b2lkKV9lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlOihXZWJDb3JlOjpOb2RlKilu
b2RlCiB7CiAgICAgQVNTRVJUKG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp2
aWRlb1RhZykpOwotICAgIEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19j
YXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2RlKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiB2aWRl
b0VsZW1lbnQgPSB0b01lZGlhRWxlbWVudChub2RlKTsKIAogICAgIGlmIChfcHJpdmF0ZS0+ZnVs
bHNjcmVlbkNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKFtfcHJpdmF0ZS0+ZnVsbHNjcmVlbkNv
bnRyb2xsZXIgbWVkaWFFbGVtZW50XSA9PSB2aWRlb0VsZW1lbnQpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>