<?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>104705</bug_id>
          
          <creation_ts>2012-12-11 12:56:15 -0800</creation_ts>
          <short_desc>[Texmap] Consolidate redundant code for ARB_RECT texture</short_desc>
          <delta_ts>2012-12-12 12:12:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>104776</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>788698</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-11 12:56:15 -0800</bug_when>
    <thetext>[Texmap] Consolidte redundant code for ARB_RECT texture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788710</commentid>
    <comment_count>1</comment_count>
      <attachid>178857</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-11 13:02:23 -0800</bug_when>
    <thetext>Created attachment 178857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788711</commentid>
    <comment_count>2</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-11 13:04:04 -0800</bug_when>
    <thetext>Thanks for fixing the typo... was just about to do it myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788956</commentid>
    <comment_count>3</comment_count>
      <attachid>178857</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-11 16:36:43 -0800</bug_when>
    <thetext>Comment on attachment 178857
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.h:48
&gt; +        ShouldUseRectTexture = 0x04

ShouldUseARBTextureRect seems more correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788980</commentid>
    <comment_count>4</comment_count>
      <attachid>178919</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-11 16:48:02 -0800</bug_when>
    <thetext>Created attachment 178919
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789064</commentid>
    <comment_count>5</comment_count>
      <attachid>178919</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 17:55:36 -0800</bug_when>
    <thetext>Comment on attachment 178919
Patch for landing

Rejecting attachment 178919 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
m/graphics/texmap/TextureMapperGL.cpp
patching file Source/WebCore/platform/graphics/texmap/TextureMapperGL.h
patching file Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp
Hunk #2 succeeded at 243 (offset 18 lines).
Hunk #3 succeeded at 256 (offset 18 lines).
patching file Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15272520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789301</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-12 00:53:51 -0800</bug_when>
    <thetext>It broke the Qt build:
cc1plus: warnings being treated as errors
/home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp: In member function &apos;void WebCore::TextureMapperGL::drawTexturedQuadWithProgram(WebCore::TextureMapperShaderProgram*, uint32_t, int, const WebCore::IntSize&amp;, const WebCore::TextureMapperGL::DrawQuad&amp;, const WebCore::TransformationMatrix&amp;, float, const WebCore::BitmapTexture*)&apos;:
[1;31m/home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:579: error: enumeral mismatch in conditional expression: &apos;WebCore::Extensions3D::ExtensionsEnumType&apos; vs &apos;WebCore::GraphicsContext3D::&lt;anonymous enum&gt;&apos;[0m</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789306</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-12 01:00:14 -0800</bug_when>
    <thetext>and the EFL build:

/home/buildslave-1/webkit-buildslave/efl-linux-64-release-wk2/build/Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp: In member function ‘void WebCore::GraphicsSurface::platformPaintToTextureMapper(WebCore::TextureMapper*, const WebCore::FloatRect&amp;, const WebCore::TransformationMatrix&amp;, float, WebCore::BitmapTexture*)’:
/home/buildslave-1/webkit-buildslave/efl-linux-64-release-wk2/build/Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:442:14: error: ‘SupportsBlending’ is not a member of ‘WebCore::TextureMapperGL’
make[2]: *** [Source/WebCore/CMakeFiles/webcore_efl.dir/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/home/buildslave-1/webkit-buildslave/efl-linux-64-release-wk2/build/Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp: In member function ‘void WebCore::TextureMapperGL::drawTexturedQuadWithProgram(WebCore::TextureMapperShaderProgram*, uint32_t, WebCore::TextureMapperGL::Flags, const WebCore::IntSize&amp;, const WebCore::TextureMapperGL::DrawQuad&amp;, const WebCore::TransformationMatrix&amp;, float, const WebCore::BitmapTexture*)’:
/home/buildslave-1/webkit-buildslave/efl-linux-64-release-wk2/build/Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:579:114: error: enumeral mismatch in conditional expression: ‘WebCore::Extensions3D::ExtensionsEnumType’ vs ‘WebCore::GraphicsContext3D::&lt;anonymous enum&gt;’ [-Werror]
cc1plus: all warnings being treated as errors


and the GTK build:

../../Source/WebCore/platform/graphics/cairo/GraphicsContext3DPrivate.cpp: In member function ‘virtual void WebCore::GraphicsContext3DPrivate::paintToTextureMapper(WebCore::TextureMapper*, const WebCore::FloatRect&amp;, const WebCore::TransformationMatrix&amp;, float, WebCore::BitmapTexture*)’:
../../Source/WebCore/platform/graphics/cairo/GraphicsContext3DPrivate.cpp:141:101: error: ‘SupportsBlending’ is not a member of ‘WebCore::TextureMapperGL’
make[1]: *** [Source/WebCore/platform/graphics/cairo/libWebCore_la-GraphicsContext3DPrivate.lo] Error 1
make[1]: *** Waiting for unfinished jobs....
../../Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp: In member function ‘void WebCore::TextureMapperGL::drawTexturedQuadWithProgram(WebCore::TextureMapperShaderProgram*, uint32_t, WebCore::TextureMapperGL::Flags, const WebCore::IntSize&amp;, const WebCore::TextureMapperGL::DrawQuad&amp;, const WebCore::TransformationMatrix&amp;, float, const WebCore::BitmapTexture*)’:
../../Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:579:114: warning: enumeral mismatch in conditional expression: ‘WebCore::Extensions3D::ExtensionsEnumType’ vs ‘WebCore::GraphicsContext3D::&lt;anonymous enum&gt;’ [-Wenum-compare]
make[1]: Leaving directory `/home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789309</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-12 01:03:59 -0800</bug_when>
    <thetext>I meant https://trac.webkit.org/changeset/137428. It&apos;s strange for me if CQ landed it but didn&apos;t comment and close the bug. How is it possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789318</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-12 01:20:30 -0800</bug_when>
    <thetext>Rollout landed in http://trac.webkit.org/changeset/137431

You can simple avoid this situations if you upload appliable patches 
and wait a little bit for EWS bubbles to become green. Or land the 
patch manually and wait for the buildbots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789322</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-12 01:28:50 -0800</bug_when>
    <thetext>And how could CQ landed it if it wasn&apos;t appliable? ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789507</commentid>
    <comment_count>11</comment_count>
      <attachid>179032</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-12 07:10:33 -0800</bug_when>
    <thetext>Created attachment 179032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789509</commentid>
    <comment_count>12</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-12 07:12:04 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; And how could CQ landed it if it wasn&apos;t appliable? ...

Yes, I wonder. I would expect this kind of problem if I landed manually, not with CQ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789510</commentid>
    <comment_count>13</comment_count>
      <attachid>179032</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 07:19:28 -0800</bug_when>
    <thetext>Comment on attachment 179032
Patch

Attachment 179032 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15296131</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789511</commentid>
    <comment_count>14</comment_count>
      <attachid>179032</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 07:20:09 -0800</bug_when>
    <thetext>Comment on attachment 179032
Patch

Attachment 179032 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15260869</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789515</commentid>
    <comment_count>15</comment_count>
      <attachid>179037</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-12 07:26:42 -0800</bug_when>
    <thetext>Created attachment 179037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789519</commentid>
    <comment_count>16</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-12 07:28:45 -0800</bug_when>
    <thetext>btw this is the kind of breakage that is really easy to fix without a rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789530</commentid>
    <comment_count>17</comment_count>
      <attachid>179037</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 07:39:52 -0800</bug_when>
    <thetext>Comment on attachment 179037
Patch

Attachment 179037 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15259997</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789537</commentid>
    <comment_count>18</comment_count>
      <attachid>179037</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 07:44:15 -0800</bug_when>
    <thetext>Comment on attachment 179037
Patch

Attachment 179037 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15282523</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789540</commentid>
    <comment_count>19</comment_count>
      <attachid>179042</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-12 07:47:46 -0800</bug_when>
    <thetext>Created attachment 179042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789586</commentid>
    <comment_count>20</comment_count>
      <attachid>179053</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-12 08:31:53 -0800</bug_when>
    <thetext>Created attachment 179053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789593</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-12 08:38:46 -0800</bug_when>
    <thetext>If you don&apos;t set the r?, you should press the &quot;Submit for EWS&quot; 
button to make the bots test the patch. ;) (I pressed it for you now.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789598</commentid>
    <comment_count>22</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-12 08:47:19 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; btw this is the kind of breakage that is really easy to fix without a rollout.

Actually I take it back. I should have seen this rollout coming :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789783</commentid>
    <comment_count>23</comment_count>
      <attachid>179053</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 12:11:56 -0800</bug_when>
    <thetext>Comment on attachment 179053
Patch

Clearing flags on attachment: 179053

Committed r137498: &lt;http://trac.webkit.org/changeset/137498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789786</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 12:12:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178857</attachid>
            <date>2012-12-11 13:02:23 -0800</date>
            <delta_ts>2012-12-11 16:47:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104705-20121211125950.patch</filename>
            <type>text/plain</type>
            <size>20464</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZiOTUxYzE5NjNiODNl
ODdkYmQzYjRiMjVhYWNhNDM1YjAxOTFmZC4uMmU3MzI2ODkyMWUzNjNiOTU1ZDQ4ZWY0NmNiMjg3
NDFmMTUzZmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEyLTExICBObydh
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1RleG1hcF0gQ29uc29s
aWRhdGUgcmVkdW5kYW50IGNvZGUgZm9yIEFSQl9SRUNUIHRleHR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDcwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgaGF2aW5nIGEgd2hv
bGUgZGlmZmVyZW50IGZ1bmN0aW9uIGZvciBSRUNUIHRleHR1cmVzLCAKKyAgICAgICAga2VlcCB0
aGUgZXhpc3RpbmcgZnVuY3Rpb25zIGFuZCBwYXNzIGEgZmxhZyB0aGF0IHRlbGxzCisgICAgICAg
IFRleHR1cmVNYXBwZXJHTCB0byB1c2UgdGhlIG5vbi1ub3JtYWxpemVkIGNvb3JkaW5hdGVzIGFu
ZCB0aGUKKyAgICAgICAgUkVDVCBzaGFkZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVm
YWN0b3Igb25seS4gVGVzdGVkIHRvIG5vdCBicmVhayBXZWJHTCBvbgorICAgICAgICBRdC1NYWMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Q
YWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6
OmRyYXdRdWFkKToKKyAgICAgICAgICAgIENvbXBlbnNhdGUgZm9yIHJlY3QgdGV4dHVyZXMgaW4g
ZHJhd1F1YWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0
aFByb2dyYW0pOgorICAgICAgICAgICAgUGFzcyBmbGFncyB0byBUZXh0dXJlTWFwcGVyR0w6OmRy
YXdRdWFkIGluc3RlYWQgb2YgYSBib29sLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2hhZGVyU3BlYyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmg6CisgICAg
ICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgICAgICBDb21wZW5zYXRl
IGZvciB0aGUgdGV4dHVyZS1zaXplIGluIHRoZSB2ZXJ0ZXgKKyAgICAgICAgICAgIHNoYWRlciBp
bnN0ZWFkIG9mIGluIHRoZSBmcmFnbWVudCBzaGFkZXIuCisKIDIwMTItMTItMTAgIE5vJ2FtIFJv
c2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTM3MDA2
KTogQ1NTIGNsaXAgb24gc29saWQgY29sb3IgY29tcG9zaXRlZCBkaXYgYnJva2VuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhp
Y3NTdXJmYWNlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCmluZGV4IDVkZmM4YzU1ZjFlYzAwMjQzODZh
Mjc1YjQ1YjIxY2FlZDMxMTcyYzYuLmIwZjJiOWEzNjEzZjJiNGNiNGNjY2YyZTEzYjdkMzczODNk
NzMzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCkBAIC0zNDUs
NyArMzQ1LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKIHsKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICBhZGp1c3RlZFRyYW5z
Zm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChGbG9hdFJlY3Qo
RmxvYXRQb2ludDo6emVybygpLCBtX3ByaXZhdGUtPnNpemUoKSksIHRhcmdldFJlY3QpKTsKLSAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1
cmVSZWN0YW5nbGVBUkIobV9wcml2YXRlLT5mcm9udEJ1ZmZlclRleHR1cmVJRCgpLCAwLCBtX3By
aXZhdGUtPnNpemUoKSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1h
c2spOworICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpLT5k
cmF3VGV4dHVyZShtX3ByaXZhdGUtPmZyb250QnVmZmVyVGV4dHVyZUlEKCksIFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkVXNlUmVjdFRleHR1cmUsIG1fcHJpdmF0ZS0+c2l6ZSgpLCB0YXJnZXRSZWN0
LCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CiB9CiAKIHVpbnQzMl90IEdyYXBo
aWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCmluZGV4IGNiZDdmMWE4MmFmMjA4ZDgxMGZkMmQyMWEzYTI2YzQ3MjU1MWY4YjkuLjYxNDNj
NDI3NGFhZmY4NGE1YzYxMmQ4YTU2ZGZmYjJjNmU1ZGU1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdMLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1
bmN0aW9ucy5oIgpAQCAtNTYsNyArNTcsNiBAQAogCiAjaWYgIVVTRShURVhNQVBfT1BFTkdMX0VT
XzIpCiAvLyBGSVhNRTogTW92ZSB0byBFeHRlbnNpb25zM0QuaC4KLSNkZWZpbmUgR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQVJCIDB4ODRGNQogI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9S
RVYgMHg4MzY3CiAjZGVmaW5lIEdMX1VOUEFDS19ST1dfTEVOR1RIIDB4MENGMgogI2RlZmluZSBH
TF9VTlBBQ0tfU0tJUF9QSVhFTFMgMHgwQ0Y0CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyR0w6OmVuZFBhaW50aW5nKCkKICNlbmRpZgogfQogCi12b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
KiBzaGFkZXJQcm9ncmFtLCBHQzNEZW51bSBkcmF3aW5nTW9kZSwgYm9vbCBuZWVkc0JsZW5kaW5n
KQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdRdWFkKGNvbnN0IERyYXdRdWFkJiBxdWFkVG9E
cmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbSogc2hhZGVyUHJvZ3JhbSwgR0MzRGVudW0gZHJhd2luZ01vZGUs
IEZsYWdzIGZsYWdzKQogewogICAgIG1fY29udGV4dDNELT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShzaGFkZXJQcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsKICAgICBtX2NvbnRleHQzRC0+Ymlu
ZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKTsKQEAgLTI5OCw3ICsy
OTgsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmIHF1
YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTQogICAgIH07CiAgICAgbV9jb250ZXh0M0Qt
PnVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVyUHJvZ3JhbS0+bWF0cml4TG9jYXRpb24oKSwgMSwgZmFs
c2UsIG00KTsKIAotICAgIGlmIChuZWVkc0JsZW5kaW5nKSB7CisgICAgaWYgKGZsYWdzICYgU2hv
dWxkQmxlbmQpIHsKICAgICAgICAgbV9jb250ZXh0M0QtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRl
eHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSk7CiAgICAg
ICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKICAgICB9
IGVsc2UKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRl
cihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoLCBjb25zdCBGbG9hdFJlYwogICAgIG1f
Y29udGV4dDNELT51bmlmb3JtNGYocHJvZ3JhbS0+Y29sb3JMb2NhdGlvbigpLCByLCBnLCBiLCBh
KTsKICAgICBtX2NvbnRleHQzRC0+bGluZVdpZHRoKHdpZHRoKTsKIAotICAgIGRyYXdRdWFkKHRh
cmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OkxJTkVfTE9PUCwgY29sb3IuaGFzQWxwaGEoKSk7CisgICAgZHJhd1F1YWQodGFyZ2V0UmVj
dCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6TElO
RV9MT09QLCBjb2xvci5oYXNBbHBoYSgpID8gU2hvdWxkQmxlbmQgOiAwKTsKIH0KIAogdm9pZCBU
ZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNp
emUsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4KQpAQCAtNDAyLDU1ICs0MDIsMzEgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0
IEZsb2F0UmVjdCYKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgQml0bWFwVGV4dHVyZUdM
JiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJl
KTsKLSAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwgdGV4dHVyZUdMLmlzT3BhcXVlKCkg
PyAwIDogU3VwcG9ydHNCbGVuZGluZywgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0
cml4LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKHRleHR1
cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVy
ZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRn
ZXMpOwogfQogCi0jaWYgIVVTRShURVhNQVBfT1BFTkdMX0VTXzIpCi12b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd1RleHR1cmVSZWN0YW5nbGVBUkIodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxh
Z3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9w
YWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKQotewotICAgIFJlZlB0cjxU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsKLSAgICBpZiAobWFza1RleHR1cmUp
Ci0gICAgICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6
TWFza2VkUmVjdCk7Ci0gICAgZWxzZQotICAgICAgICBwcm9ncmFtID0gZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW0oVGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXI6OlJlY3QpOwotICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFt
KHByb2dyYW0tPnByb2dyYW1JRCgpKTsKLQotICAgIG1fY29udGV4dDNELT5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShwcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsKLSAgICBtX2NvbnRleHQzRC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgIG1fY29udGV4
dDNELT5iaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIsIHRleHR1cmUpOwotICAg
IG1fY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCksIDApOwot
Ci0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFtLT5mbGlwTG9jYXRpb24oKSwgISEo
ZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkpOwotICAgIG1fY29udGV4dDNELT51bmlmb3JtMmYo
cHJvZ3JhbS0+c2FtcGxlclNpemVMb2NhdGlvbigpLCB0ZXh0dXJlU2l6ZS53aWR0aCgpLCB0ZXh0
dXJlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFtLT5v
cGFjaXR5TG9jYXRpb24oKSwgb3BhY2l0eSk7Ci0KLSAgICBpZiAobWFza1RleHR1cmUgJiYgbWFz
a1RleHR1cmUtPmlzVmFsaWQoKSkgewotICAgICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wqIG1h
c2tUZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wqPihtYXNrVGV4
dHVyZSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbWFza1RleHR1cmVHTC0+aWQoKSk7Ci0gICAgICAgIG1f
Y29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+bWFza0xvY2F0aW9uKCksIDEpOwotICAgICAg
ICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
OwotICAgIH0KLQotICAgIGJvb2wgbmVlZHNCbGVuZGluZyA9IChmbGFncyAmIFN1cHBvcnRzQmxl
bmRpbmcpIHx8IG9wYWNpdHkgPCAwLjk5IHx8IG1hc2tUZXh0dXJlOwotICAgIGRyYXdRdWFkKHRh
cmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRSSUFOR0xFX0ZBTiwgbmVlZHNCbGVuZGluZyk7Ci19Ci0jZW5kaWYgLy8gIVVTRShURVhN
QVBfT1BFTkdMX0VTXzIpCi0KLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSh1aW50
MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgLyogdGV4dHVyZVNpemUg
Ki8sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSog
bWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBj
b25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQog
ewogICAgIGJvb2wgbmVlZHNBbnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlh
bGlhc2luZyAmJiAhbW9kZWxWaWV3TWF0cml4LmlzSW50ZWdlclRyYW5zbGF0aW9uKCk7Ci0gICAg
aWYgKG5lZWRzQW50aWFsaWFzaW5nICYmIGRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2luZyh0ZXh0
dXJlLCBmbGFncywgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4
dHVyZSwgZXhwb3NlZEVkZ2VzKSkKKyAgICBpZiAobmVlZHNBbnRpYWxpYXNpbmcgJiYgZHJhd1Rl
eHR1cmVXaXRoQW50aWFsaWFzaW5nKHRleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0
UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVyZSwgZXhwb3NlZEVkZ2Vz
KSkKICAgICAgICByZXR1cm47CiAKKyAgICBib29sIHVzZVJlY3QgPSBmbGFncyAmIFNob3VsZFVz
ZVJlY3RUZXh0dXJlOworICAgIGJvb2wgbWFza2VkID0gISFtYXNrVGV4dHVyZTsKKworICAgIFRl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTaGFkZXJLZXkga2V5ID0gVGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXI6OkRlZmF1bHQ7CisgICAgaWYgKG1hc2tlZCAmJiB1c2VSZWN0KQorICAgICAg
ICBrZXkgPSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6TWFza2VkUmVjdDsKKyAgICBlbHNl
IGlmIChtYXNrZWQpCisgICAgICAgIGtleSA9IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpN
YXNrZWQ7CisgICAgZWxzZSBpZiAodXNlUmVjdCkKKyAgICAgICAga2V5ID0gVGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXI6OlJlY3Q7CisKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0+IHByb2dyYW07Ci0gICAgaWYgKG1hc2tUZXh0dXJlKQotICAgICAgICBwcm9ncmFtID0g
ZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRl
clByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6Ok1hc2tlZCk7Ci0gICAgZWxzZQot
ICAgICAgICBwcm9ncmFtID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OkRl
ZmF1bHQpOworICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShrZXkpOwogICAgIG1fY29udGV4dDNELT51
c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKIAotICAgIGRyYXdUZXh0dXJlZFF1YWRX
aXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlLCBmbGFncywgdGFyZ2V0UmVjdCwgbW9k
ZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVyZSk7CisgICAgZHJhd1RleHR1cmVkUXVh
ZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwg
dGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVyZSk7CiB9CiAK
IHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbnN0IENvbG9yJiBjb2xv
cikKQEAgLTQ2Miw3ICs0MzgsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29s
b3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbgogICAgIGNvbG9y
LmdldFJHQkEociwgZywgYiwgYSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm00Zihwcm9ncmFt
LT5jb2xvckxvY2F0aW9uKCksIHIsIGcsIGIsIGEpOwogCi0gICAgZHJhd1F1YWQocmVjdCwgbWF0
cml4LCBwcm9ncmFtLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCBhIDwg
MSk7CisgICAgZHJhd1F1YWQocmVjdCwgbWF0cml4LCBwcm9ncmFtLmdldCgpLCBHcmFwaGljc0Nv
bnRleHQzRDo6VFJJQU5HTEVfRkFOLCBhIDwgMSA/IFNob3VsZEJsZW5kIDogMCk7CiB9CiAKIHN0
YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2aWV3cG9ydE1hdHJpeChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dDNEKQpAQCAtNTQ5LDcgKzUyNSw3IEBAIHN0YXRpYyBGbG9hdFF1YWQgaW5mbGF0
ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBmbG9hdCBkaXN0YW5jZSkKICAgICByZXR1cm4g
ZXhwYW5kZWRRdWFkOwogfQogCi1ib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVXaXRo
QW50aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBGbG9hdFJl
Y3QmIG9yaWdpbmFsVGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK2Jvb2wgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4
dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0
IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxUYXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBj
b25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQog
ewogICAgIC8vIFRoZSBhbnRpYWxpYXNpbmcgcGF0aCBkb2VzIG5vdCBzdXBwb3J0IG1hc2sgdGV4
dHVyZXMgYXQgdGhlIG1vbWVudC4KICAgICBpZiAobWFza1RleHR1cmUpCkBAIC01OTIsMTcgKzU2
OCwyMCBAQCBib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5n
KHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLAogICAgIG1fY29udGV4dDNELT51c2VQcm9n
cmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTNmdihw
cm9ncmFtLT5leHBhbmRlZFF1YWRFZGdlc0luU2NyZWVuU3BhY2VMb2NhdGlvbigpLCA4LCB0YXJn
ZXRRdWFkRWRnZXMpOwogCi0gICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0u
Z2V0KCksIHRleHR1cmUsIGZsYWdzLCBEcmF3UXVhZChvcmlnaW5hbFRhcmdldFJlY3QsIGV4cGFu
ZGVkUXVhZEluVGV4dHVyZUNvb3JkaW5hdGVzKSwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCAw
IC8qIG1hc2tUZXh0dXJlICovKTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJv
Z3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHNpemUsIERyYXdRdWFkKG9yaWdpbmFsVGFyZ2V0
UmVjdCwgZXhwYW5kZWRRdWFkSW5UZXh0dXJlQ29vcmRpbmF0ZXMpLCBtb2RlbFZpZXdNYXRyaXgs
IG9wYWNpdHksIDAgLyogbWFza1RleHR1cmUgKi8pOwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFtLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFn
cywgY29uc3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1h
c2tUZXh0dXJlKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJv
Z3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSogcHJvZ3JhbSwgdWludDMyX3QgdGV4dHVy
ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IERyYXdRdWFkJiBxdWFk
VG9EcmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9h
dCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSkKIHsKICAgICBtX2Nv
bnRleHQzRC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVydGV4TG9jYXRpb24o
KSk7CiAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkUwKTsKLSAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIEdDM0RlbnVtIHRhcmdldCA9IGZsYWdzICYgU2hv
dWxkVXNlUmVjdFRleHR1cmUgPyBFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiA6
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOworICAgIG1fY29udGV4dDNELT5iaW5kVGV4
dHVyZSh0YXJnZXQsIHRleHR1cmUpOwogICAgIG1fY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3Jh
bS0+c2FtcGxlckxvY2F0aW9uKCksIDApOwogCisgICAgRmxvYXRTaXplIHNpemVQYXJhbWV0ZXIg
PSBmbGFncyAmIFNob3VsZFVzZVJlY3RUZXh0dXJlID8gc2l6ZSA6IEZsb2F0U2l6ZSgxLCAxKTsK
KyAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTJmKHByb2dyYW0tPnRleHR1cmVTaXplTG9jYXRpb24o
KSwgc2l6ZVBhcmFtZXRlci53aWR0aCgpLCBzaXplUGFyYW1ldGVyLmhlaWdodCgpKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPmZsaXBMb2NhdGlvbigpLCAhIShmbGFncyAm
IFNob3VsZEZsaXBUZXh0dXJlKSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFt
LT5vcGFjaXR5TG9jYXRpb24oKSwgb3BhY2l0eSk7CiAKQEAgLTYxNCw4ICs1OTMsMTAgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbSogcHIKICAgICAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKICAgICB9CiAKLSAgICBib29sIG5lZWRzQmxl
bmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8fCBvcGFjaXR5IDwgMC45OSB8fCBt
YXNrVGV4dHVyZTsKLSAgICBkcmF3UXVhZChxdWFkVG9EcmF3LCBtb2RlbFZpZXdNYXRyaXgsIHBy
b2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIG5lZWRzQmxlbmRpbmcpOwor
ICAgIGlmIChvcGFjaXR5IDwgMSB8fCBtYXNrVGV4dHVyZSkKKyAgICAgICAgZmxhZ3MgfD0gU2hv
dWxkQmxlbmQ7CisKKyAgICBkcmF3UXVhZChxdWFkVG9EcmF3LCBtb2RlbFZpZXdNYXRyaXgsIHBy
b2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIGZsYWdzKTsKIH0KIAogQml0
bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0woVGV4dHVyZU1hcHBlckdMKiB0ZXh0dXJlTWFw
cGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDY2NDZkYzcwYTIxODI0Yjc0ZmUxZWM2NmJjOTVi
NTEwY2QzOWMxNDAuLmMxYjE3NmU2YzU2ZGRkZDFhZDFjMTFlYWU5MDFhNjY0N2I4ZDg4NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmgKQEAgLTQzLDggKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flRleHR1cmVNYXBwZXJHTCgpOwogCiAgICAgZW51bSBGbGFnIHsKLSAgICAgICAgU3VwcG9ydHNC
bGVuZGluZyA9IDB4MDEsCi0gICAgICAgIFNob3VsZEZsaXBUZXh0dXJlID0gMHgwMgorICAgICAg
ICBTaG91bGRCbGVuZCA9IDB4MDEsCisgICAgICAgIFNob3VsZEZsaXBUZXh0dXJlID0gMHgwMiwK
KyAgICAgICAgU2hvdWxkVXNlUmVjdFRleHR1cmUgPSAweDA0CiAgICAgfTsKIAogICAgIHR5cGVk
ZWYgaW50IEZsYWdzOwpAQCAtNTMsMTMgKzU0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4
dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNr
VGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd1RleHR1cmUodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRl
eHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxh
Z3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9w
YWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMgPSBBbGxFZGdlcyk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBP
VkVSUklERTsKIAotI2lmICFVU0UoVEVYTUFQX09QRU5HTF9FU18yKQotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3VGV4dHVyZVJlY3RhbmdsZUFSQih1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3Qg
SW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29u
c3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOwotI2VuZGlmCi0KICAgICB2aXJ0dWFsIHZv
aWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZs
b2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50
RmxhZ3MgPSAwKSBPVkVSUklERTsKQEAgLTExNyw5ICsxMTQsOSBAQCBwcml2YXRlOgogCiAgICAg
VGV4dHVyZU1hcHBlckdMKCk7CiAKLSAgICBib29sIGRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2lu
Zyh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBv
c2VkRWRnZXMpOwotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IERyYXdR
dWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOwotICAgIHZvaWQgZHJh
d1F1YWQoY29uc3QgRHJhd1F1YWQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdpbmdN
b2RlLCBib29sIG5lZWRzQmxlbmRpbmcpOworICAgIGJvb2wgZHJhd1RleHR1cmVXaXRoQW50aWFs
aWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxv
YXRSZWN0JiBvcmlnaW5hbFRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tU
ZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZvaWQgZHJhd1RleHR1cmVkUXVh
ZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVy
ZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmLCBjb25zdCBEcmF3UXVhZCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1h
cFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKKyAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IERyYXdRdWFk
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0qLCBHQzNEZW51bSBkcmF3aW5nTW9kZSwgRmxhZ3MpOwogCiAgICAg
Ym9vbCBiZWdpblNjaXNzb3JDbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
RmxvYXRSZWN0Jik7CiAgICAgdm9pZCBiaW5kRGVmYXVsdFN1cmZhY2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCmluZGV4IGM4ZTFhZTQ2MWEyZDNjMmFjMDBj
MTUwMjdhYzA1ZmU0NGNkZWYzN2YuLmZhM2E3NmQzNmJiZTgzYWQ1ODcwZGZhMjM5ZmI2OTllYWMz
ZDdmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcApAQCAt
MTU3LDEyICsxNTcsMTMgQEAgc3RhdGljIHZvaWQgZ2V0U2hhZGVyU3BlYyhUZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlcjo6U2hhZGVyS2V5IGtleSwgU3RyaW5nJiB2ZXIKICAgICAgICAgU1RSSU5H
SUZZKAogICAgICAgICAgICAgdW5pZm9ybSBtYXQ0IHVfbWF0cml4OwogICAgICAgICAgICAgdW5p
Zm9ybSBsb3dwIGZsb2F0IHVfZmxpcDsKKyAgICAgICAgICAgIHVuaWZvcm0gbG93cCB2ZWMyIHVf
dGV4dHVyZVNpemU7CiAgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3ZlcnRleDsKICAgICAg
ICAgICAgIHZhcnlpbmcgaGlnaHAgdmVjMiB2X3NvdXJjZVRleENvb3JkOwogICAgICAgICAgICAg
dmFyeWluZyBoaWdocCB2ZWMyIHZfbWFza1RleENvb3JkOwogICAgICAgICAgICAgdm9pZCBtYWlu
KHZvaWQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29yZCA9
IHZlYzIoYV92ZXJ0ZXgueCwgbWl4KGFfdmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9mbGlw
KSk7CisgICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgueCwg
bWl4KGFfdmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9mbGlwKSkgKiB1X3RleHR1cmVTaXpl
OwogICAgICAgICAgICAgICAgIHZfbWFza1RleENvb3JkID0gdmVjMihhX3ZlcnRleCk7CiAgICAg
ICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X21hdHJpeCAqIGFfdmVydGV4OwogICAgICAgICAg
ICAgfQpAQCAtMjI0LDEyICsyMjUsMTEgQEAgc3RhdGljIHZvaWQgZ2V0U2hhZGVyU3BlYyhUZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6U2hhZGVyS2V5IGtleSwgU3RyaW5nJiB2ZXIKICAgICAg
ICAgU1RSSU5HSUZZKAogICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAg
ICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRFJlY3Qgc19zYW1wbGVyOwotICAgICAgICAgICAgdW5p
Zm9ybSBsb3dwIHZlYzIgdV9zYW1wbGVyU2l6ZTsKICAgICAgICAgICAgIHVuaWZvcm0gbG93cCBm
bG9hdCB1X29wYWNpdHk7CiAgICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9zb3VyY2VU
ZXhDb29yZDsKICAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGxvd3AgdmVjNCBjb2xvciA9IHRleHR1cmUyRFJlY3Qoc19zYW1wbGVyLCB1
X3NhbXBsZXJTaXplICogdl9zb3VyY2VUZXhDb29yZCk7CisgICAgICAgICAgICAgICAgbG93cCB2
ZWM0IGNvbG9yID0gdGV4dHVyZTJEUmVjdChzX3NhbXBsZXIsIHZfc291cmNlVGV4Q29vcmQpOwog
ICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IucmdiICogdV9vcGFjaXR5
LCBjb2xvci5hICogdV9vcGFjaXR5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKQEAgLTIz
OCwxMSArMjM4LDEyIEBAIHN0YXRpYyB2b2lkIGdldFNoYWRlclNwZWMoVGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXI6OlNoYWRlcktleSBrZXksIFN0cmluZyYgdmVyCiAgICAgICAgIFNUUklOR0lG
WSgKICAgICAgICAgICAgIHVuaWZvcm0gbWF0NCB1X21hdHJpeDsKICAgICAgICAgICAgIHVuaWZv
cm0gbG93cCBmbG9hdCB1X2ZsaXA7CisgICAgICAgICAgICB1bmlmb3JtIGxvd3AgdmVjMiB1X3Rl
eHR1cmVTaXplOwogICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV92ZXJ0ZXg7CiAgICAgICAg
ICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9zb3VyY2VUZXhDb29yZDsKICAgICAgICAgICAgIHZv
aWQgbWFpbih2b2lkKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZfc291cmNlVGV4
Q29vcmQgPSB2ZWMyKGFfdmVydGV4LngsIG1peChhX3ZlcnRleC55LCAxLiAtIGFfdmVydGV4Lnks
IHVfZmxpcCkpOworICAgICAgICAgICAgICAgIHZfc291cmNlVGV4Q29vcmQgPSB2ZWMyKGFfdmVy
dGV4LngsIG1peChhX3ZlcnRleC55LCAxLiAtIGFfdmVydGV4LnksIHVfZmxpcCkpICogdV90ZXh0
dXJlU2l6ZTsKICAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHVfbWF0cml4ICogYV92ZXJ0
ZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyTWFuYWdlci5oCmluZGV4IDQ5NmI3ZTgxYjEyNjM2ZmQyYTlmZGZlZjcxMjg2ZmE4ZDgwZjhh
YzYuLjYwNjA1ZjQyZDBlMzIzODdjNDJhNGZkZDA1MzE0MjdlMDRhZDcyMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
IAogICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0obWF0cml4KQogICAgIFRFWE1BUF9ERUNMQVJF
X1VOSUZPUk0oZmxpcCkKLSAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKHNhbXBsZXJTaXplKQor
ICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0odGV4dHVyZVNpemUpCiAgICAgVEVYTUFQX0RFQ0xB
UkVfVU5JRk9STShvcGFjaXR5KQogICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oY29sb3IpCiAg
ICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShleHBhbmRlZFF1YWRFZGdlc0luU2NyZWVuU3BhY2Up
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178919</attachid>
            <date>2012-12-11 16:48:02 -0800</date>
            <delta_ts>2012-12-12 07:10:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-104705-20121211164537.patch</filename>
            <type>text/plain</type>
            <size>20490</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZiOTUxYzE5NjNiODNl
ODdkYmQzYjRiMjVhYWNhNDM1YjAxOTFmZC4uYjUwOTY5ZDdlNDgwOGRhMjhkM2JhN2FiYWI3ODUy
NzU1YzIwZGRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEyLTExICBObydh
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1RleG1hcF0gQ29uc29s
aWRhdGUgcmVkdW5kYW50IGNvZGUgZm9yIEFSQl9SRUNUIHRleHR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDcwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEluc3RlYWQgb2Yg
aGF2aW5nIGEgd2hvbGUgZGlmZmVyZW50IGZ1bmN0aW9uIGZvciBSRUNUIHRleHR1cmVzLAorICAg
ICAgICBrZWVwIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgYW5kIHBhc3MgYSBmbGFnIHRoYXQgdGVs
bHMKKyAgICAgICAgVGV4dHVyZU1hcHBlckdMIHRvIHVzZSB0aGUgbm9uLW5vcm1hbGl6ZWQgY29v
cmRpbmF0ZXMgYW5kIHRoZQorICAgICAgICBSRUNUIHNoYWRlcnMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCByZWZhY3RvciBvbmx5LiBUZXN0ZWQgdG8gbm90IGJyZWFrIFdlYkdMIG9uCisgICAg
ICAgIFF0LU1hYy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6ZHJhd1F1YWQpOgorICAgICAgICAgICAgQ29tcGVuc2F0ZSBmb3IgcmVjdCB0
ZXh0dXJlcyBpbiBkcmF3UXVhZC4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdM
OjpkcmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1Rl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aEFu
dGlhbGlhc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0
dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgICAgICBQYXNzIGZsYWdzIHRvIFRleHR1cmVN
YXBwZXJHTDo6ZHJhd1F1YWQgaW5zdGVhZCBvZiBhIGJvb2wuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgIChUZXh0dXJlTWFw
cGVyR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTaGFkZXJTcGVjKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgICAg
IENvbXBlbnNhdGUgZm9yIHRoZSB0ZXh0dXJlLXNpemUgaW4gdGhlIHZlcnRleAorICAgICAgICAg
ICAgc2hhZGVyIGluc3RlYWQgb2YgaW4gdGhlIGZyYWdtZW50IHNoYWRlci4KKwogMjAxMi0xMi0x
MCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIxMzcwMDYpOiBDU1MgY2xpcCBvbiBzb2xpZCBjb2xvciBjb21wb3NpdGVkIGRpdiBicm9r
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAKaW5kZXggNWRmYzhjNTVm
MWVjMDAyNDM4NmEyNzViNDViMjFjYWVkMzExNzJjNi4uNDRmZGY5OTY3MmFhOTJjNTFhZThjMjA2
NmFhNTNiYmM1OTlkZWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5j
cHAKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogewogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFk
anVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0
KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fcHJpdmF0ZS0+c2l6ZSgpKSwgdGFyZ2V0
UmVjdCkpOwotICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIp
LT5kcmF3VGV4dHVyZVJlY3RhbmdsZUFSQihtX3ByaXZhdGUtPmZyb250QnVmZmVyVGV4dHVyZUlE
KCksIDAsIG1fcHJpdmF0ZS0+c2l6ZSgpLCB0YXJnZXRSZWN0LCBhZGp1c3RlZFRyYW5zZm9ybSwg
b3BhY2l0eSwgbWFzayk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVy
ZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwg
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCwgbV9wcml2YXRlLT5zaXpl
KCksIHRhcmdldFJlY3QsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKIH0KIAog
dWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggY2JkN2YxYTgyYWYyMDhkODEwZmQyZDIxYTNhMjZjNDcy
NTUxZjhiOS4uNDg4ZTkwMWNmNzQ5OWJkZjY3M2FiMDlmZTJmYmMxZjViZjQzOGUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5j
bHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCkBAIC01Niw3ICs1Nyw2IEBACiAKICNpZiAhVVNFKFRF
WE1BUF9PUEVOR0xfRVNfMikKIC8vIEZJWE1FOiBNb3ZlIHRvIEV4dGVuc2lvbnMzRC5oLgotI2Rl
ZmluZSBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIgMHg4NEY1CiAjZGVmaW5lIEdMX1VOU0lHTkVE
X0lOVF84XzhfOF84X1JFViAweDgzNjcKICNkZWZpbmUgR0xfVU5QQUNLX1JPV19MRU5HVEggMHgw
Q0YyCiAjZGVmaW5lIEdMX1VOUEFDS19TS0lQX1BJWEVMUyAweDBDRjQKQEAgLTI3Miw3ICsyNzIs
NyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZW5kUGFpbnRpbmcoKQogI2VuZGlmCiB9CiAKLXZv
aWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UXVhZChjb25zdCBEcmF3UXVhZCYgcXVhZFRvRHJhdywg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0qIHNoYWRlclByb2dyYW0sIEdDM0RlbnVtIGRyYXdpbmdNb2RlLCBib29s
IG5lZWRzQmxlbmRpbmcpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQoY29uc3QgRHJh
d1F1YWQmIHF1YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBzaGFkZXJQcm9ncmFtLCBHQzNEZW51
bSBkcmF3aW5nTW9kZSwgRmxhZ3MgZmxhZ3MpCiB7CiAgICAgbV9jb250ZXh0M0QtPmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHNoYWRlclByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOwogICAgIG1f
Y29udGV4dDNELT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIDAp
OwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UXVhZChjb25z
dCBEcmF3UXVhZCYgcXVhZFRvRHJhdywgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAgICAgfTsKICAg
ICBtX2NvbnRleHQzRC0+dW5pZm9ybU1hdHJpeDRmdihzaGFkZXJQcm9ncmFtLT5tYXRyaXhMb2Nh
dGlvbigpLCAxLCBmYWxzZSwgbTQpOwogCi0gICAgaWYgKG5lZWRzQmxlbmRpbmcpIHsKKyAgICBp
ZiAoZmxhZ3MgJiBTaG91bGRCbGVuZCkgewogICAgICAgICBtX2NvbnRleHQzRC0+YmxlbmRGdW5j
KEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JD
X0FMUEhBKTsKICAgICAgICAgbV9jb250ZXh0M0QtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
QkxFTkQpOwogICAgIH0gZWxzZQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgsIGNvbnN0IEZs
b2F0UmVjCiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm00Zihwcm9ncmFtLT5jb2xvckxvY2F0aW9u
KCksIHIsIGcsIGIsIGEpOwogICAgIG1fY29udGV4dDNELT5saW5lV2lkdGgod2lkdGgpOwogCi0g
ICAgZHJhd1F1YWQodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdldCgpLCBH
cmFwaGljc0NvbnRleHQzRDo6TElORV9MT09QLCBjb2xvci5oYXNBbHBoYSgpKTsKKyAgICBkcmF3
UXVhZCh0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0uZ2V0KCksIEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5FX0xPT1AsIGNvbG9yLmhhc0FscGhhKCkgPyBTaG91bGRCbGVuZCA6IDAp
OwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGludCB2YWx1
ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCkBAIC00MDIsNTUgKzQwMiwzMSBA
QCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYg
dGV4dHVyZSwgY29uc3QgRmxvYXRSZWN0JgogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBC
aXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1
cmVHTCY+KHRleHR1cmUpOwotICAgIGRyYXdUZXh0dXJlKHRleHR1cmVHTC5pZCgpLCB0ZXh0dXJl
R0wuaXNPcGFxdWUoKSA/IDAgOiBTdXBwb3J0c0JsZW5kaW5nLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0
YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ssIGV4cG9zZWRFZGdlcyk7CisgICAgZHJh
d1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3Vs
ZEJsZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1h
c2ssIGV4cG9zZWRFZGdlcyk7CiB9CiAKLSNpZiAhVVNFKFRFWE1BUF9PUEVOR0xfRVNfMikKLXZv
aWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVJlY3RhbmdsZUFSQih1aW50MzJfdCB0ZXh0
dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpCi17
Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtOwotICAgIGlm
IChtYXNrVGV4dHVyZSkKLSAgICAgICAgcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50
ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtKFRleHR1cmVNYXBwZXJT
aGFkZXJNYW5hZ2VyOjpNYXNrZWRSZWN0KTsKLSAgICBlbHNlCi0gICAgICAgIHByb2dyYW0gPSBk
YXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVy
UHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6UmVjdCk7Ci0gICAgbV9jb250ZXh0
M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwotCi0gICAgbV9jb250ZXh0M0Qt
PmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOwotICAg
IG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7
Ci0gICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQiwg
dGV4dHVyZSk7Ci0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5zYW1wbGVyTG9j
YXRpb24oKSwgMCk7Ci0KLSAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPmZsaXBM
b2NhdGlvbigpLCAhIShmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKSk7Ci0gICAgbV9jb250ZXh0
M0QtPnVuaWZvcm0yZihwcm9ncmFtLT5zYW1wbGVyU2l6ZUxvY2F0aW9uKCksIHRleHR1cmVTaXpl
LndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdodCgpKTsKLSAgICBtX2NvbnRleHQzRC0+dW5pZm9y
bTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5KTsKLQotICAgIGlmIChtYXNr
VGV4dHVyZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGNvbnN0IEJpdG1h
cFRleHR1cmVHTCogbWFza1RleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1
cmVHTCo+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtYXNrVGV4dHVyZUdMLT5pZCgp
KTsKLSAgICAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5tYXNrTG9jYXRpb24o
KSwgMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCk7Ci0gICAgfQotCi0gICAgYm9vbCBuZWVkc0JsZW5kaW5nID0gKGZsYWdz
ICYgU3VwcG9ydHNCbGVuZGluZykgfHwgb3BhY2l0eSA8IDAuOTkgfHwgbWFza1RleHR1cmU7Ci0g
ICAgZHJhd1F1YWQodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdldCgpLCBH
cmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCBuZWVkc0JsZW5kaW5nKTsKLX0KLSNlbmRp
ZiAvLyAhVVNFKFRFWE1BUF9PUEVOR0xfRVNfMikKLQotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiAv
KiB0ZXh0dXJlU2l6ZSAqLywgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBC
aXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBU
ZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxh
Z3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZs
b2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBl
eHBvc2VkRWRnZXMpCiB7CiAgICAgYm9vbCBuZWVkc0FudGlhbGlhc2luZyA9IG1fZW5hYmxlRWRn
ZURpc3RhbmNlQW50aWFsaWFzaW5nICYmICFtb2RlbFZpZXdNYXRyaXguaXNJbnRlZ2VyVHJhbnNs
YXRpb24oKTsKLSAgICBpZiAobmVlZHNBbnRpYWxpYXNpbmcgJiYgZHJhd1RleHR1cmVXaXRoQW50
aWFsaWFzaW5nKHRleHR1cmUsIGZsYWdzLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9w
YWNpdHksIG1hc2tUZXh0dXJlLCBleHBvc2VkRWRnZXMpKQorICAgIGlmIChuZWVkc0FudGlhbGlh
c2luZyAmJiBkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodGV4dHVyZSwgZmxhZ3MsIHRleHR1
cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJl
LCBleHBvc2VkRWRnZXMpKQogICAgICAgIHJldHVybjsKIAorICAgIGJvb2wgdXNlUmVjdCA9IGZs
YWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCBtYXNrZWQgPSAhIW1hc2tU
ZXh0dXJlOworCisgICAgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlNoYWRlcktleSBrZXkg
PSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6RGVmYXVsdDsKKyAgICBpZiAobWFza2VkICYm
IHVzZVJlY3QpCisgICAgICAgIGtleSA9IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpNYXNr
ZWRSZWN0OworICAgIGVsc2UgaWYgKG1hc2tlZCkKKyAgICAgICAga2V5ID0gVGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXI6Ok1hc2tlZDsKKyAgICBlbHNlIGlmICh1c2VSZWN0KQorICAgICAgICBr
ZXkgPSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6UmVjdDsKKwogICAgIFJlZlB0cjxUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsKLSAgICBpZiAobWFza1RleHR1cmUpCi0g
ICAgICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRl
ck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6TWFz
a2VkKTsKLSAgICBlbHNlCi0gICAgICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCku
dGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlcjo6RGVmYXVsdCk7CisgICAgcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERh
dGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtKGtleSk7CiAg
ICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwogCi0gICAg
ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdz
LCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsKKyAg
ICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxh
Z3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1h
c2tUZXh0dXJlKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENvbG9yKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwg
Y29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNDYyLDcgKzQzOCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uCiAgICAgY29sb3IuZ2V0UkdCQShyLCBnLCBiLCBhKTsKICAgICBtX2NvbnRleHQzRC0+
dW5pZm9ybTRmKHByb2dyYW0tPmNvbG9yTG9jYXRpb24oKSwgciwgZywgYiwgYSk7CiAKLSAgICBk
cmF3UXVhZChyZWN0LCBtYXRyaXgsIHByb2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpU
UklBTkdMRV9GQU4sIGEgPCAxKTsKKyAgICBkcmF3UXVhZChyZWN0LCBtYXRyaXgsIHByb2dyYW0u
Z2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIGEgPCAxID8gU2hvdWxkQmxl
bmQgOiAwKTsKIH0KIAogc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IHZpZXdwb3J0TWF0cml4
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QpCkBAIC01NDksNyArNTI1LDcgQEAgc3RhdGlj
IEZsb2F0UXVhZCBpbmZsYXRlUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGZsb2F0IGRpc3Rh
bmNlKQogICAgIHJldHVybiBleHBhbmRlZFF1YWQ7CiB9CiAKLWJvb2wgVGV4dHVyZU1hcHBlckdM
OjpkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxh
Z3MsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxUYXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBU
ZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQorYm9vbCBUZXh0dXJl
TWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2luZyh1aW50MzJfdCB0ZXh0dXJlLCBG
bGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5h
bFRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgs
IGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25l
ZCBleHBvc2VkRWRnZXMpCiB7CiAgICAgLy8gVGhlIGFudGlhbGlhc2luZyBwYXRoIGRvZXMgbm90
IHN1cHBvcnQgbWFzayB0ZXh0dXJlcyBhdCB0aGUgbW9tZW50LgogICAgIGlmIChtYXNrVGV4dHVy
ZSkKQEAgLTU5MiwxNyArNTY4LDIwIEBAIGJvb2wgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsCiAgICAgbV9j
b250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwogICAgIG1fY29udGV4
dDNELT51bmlmb3JtM2Z2KHByb2dyYW0tPmV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZUxv
Y2F0aW9uKCksIDgsIHRhcmdldFF1YWRFZGdlcyk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFkV2l0
aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIERyYXdRdWFkKG9yaWdpbmFs
VGFyZ2V0UmVjdCwgZXhwYW5kZWRRdWFkSW5UZXh0dXJlQ29vcmRpbmF0ZXMpLCBtb2RlbFZpZXdN
YXRyaXgsIG9wYWNpdHksIDAgLyogbWFza1RleHR1cmUgKi8pOworICAgIGRyYXdUZXh0dXJlZFF1
YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlLCBmbGFncywgc2l6ZSwgRHJhd1F1
YWQob3JpZ2luYWxUYXJnZXRSZWN0LCBleHBhbmRlZFF1YWRJblRleHR1cmVDb29yZGluYXRlcyks
IG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSwgMCAvKiBtYXNrVGV4dHVyZSAqLyk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0
aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRl
eHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBEcmF3UXVhZCYgcXVhZFRvRHJhdywgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
Qml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1Rl
eHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFt
LCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29u
c3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0
dXJlKQogewogICAgIG1fY29udGV4dDNELT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFt
LT52ZXJ0ZXhMb2NhdGlvbigpKTsKICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgR0MzRGVudW0gdGFy
Z2V0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCA/IEV4dGVuc2lvbnMzRDo6VEVY
VFVSRV9SRUNUQU5HTEVfQVJCIDogR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ7CisgICAg
bV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CiAgICAgbV9jb250ZXh0
M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7CiAKKyAgICBGbG9h
dFNpemUgc2l6ZVBhcmFtZXRlciA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QgPyBz
aXplIDogRmxvYXRTaXplKDEsIDEpOworICAgIG1fY29udGV4dDNELT51bmlmb3JtMmYocHJvZ3Jh
bS0+dGV4dHVyZVNpemVMb2NhdGlvbigpLCBzaXplUGFyYW1ldGVyLndpZHRoKCksIHNpemVQYXJh
bWV0ZXIuaGVpZ2h0KCkpOwogICAgIG1fY29udGV4dDNELT51bmlmb3JtMWYocHJvZ3JhbS0+Zmxp
cExvY2F0aW9uKCksICEhKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUpKTsKICAgICBtX2NvbnRl
eHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5KTsKIApA
QCAtNjE0LDggKzU5MywxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVh
ZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcgogICAgICAgICBtX2Nv
bnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwogICAg
IH0KIAotICAgIGJvb2wgbmVlZHNCbGVuZGluZyA9IChmbGFncyAmIFN1cHBvcnRzQmxlbmRpbmcp
IHx8IG9wYWNpdHkgPCAwLjk5IHx8IG1hc2tUZXh0dXJlOwotICAgIGRyYXdRdWFkKHF1YWRUb0Ry
YXcsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xF
X0ZBTiwgbmVlZHNCbGVuZGluZyk7CisgICAgaWYgKG9wYWNpdHkgPCAxIHx8IG1hc2tUZXh0dXJl
KQorICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKworICAgIGRyYXdRdWFkKHF1YWRUb0Ry
YXcsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xF
X0ZBTiwgZmxhZ3MpOwogfQogCiBCaXRtYXBUZXh0dXJlR0w6OkJpdG1hcFRleHR1cmVHTChUZXh0
dXJlTWFwcGVyR0wqIHRleHR1cmVNYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggNjY0NmRj
NzBhMjE4MjRiNzRmZTFlYzY2YmM5NWI1MTBjZDM5YzE0MC4uODk5ZGNkNjA4ZWFiYjVmODY3Nzkw
MTA2OWUyNTBiZTg3OTUwZmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtNDMsOCArNDMsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckdMKCk7CiAKICAgICBlbnVtIEZs
YWcgewotICAgICAgICBTdXBwb3J0c0JsZW5kaW5nID0gMHgwMSwKLSAgICAgICAgU2hvdWxkRmxp
cFRleHR1cmUgPSAweDAyCisgICAgICAgIFNob3VsZEJsZW5kID0gMHgwMSwKKyAgICAgICAgU2hv
dWxkRmxpcFRleHR1cmUgPSAweDAyLAorICAgICAgICBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCA9
IDB4MDQKICAgICB9OwogCiAgICAgdHlwZWRlZiBpbnQgRmxhZ3M7CkBAIC01MywxMyArNTQsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9h
dCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUs
IGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHks
IGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJl
LCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxv
YXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4
cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFz
a1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogCi0jaWYgIVVTRShURVhNQVBfT1BF
TkdMX0VTXzIpCi0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlUmVjdGFuZ2xlQVJCKHVpbnQz
Ml90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSk7
Ci0jZW5kaWYKLQogICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBz
dXJmYWNlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGJlZ2luUGFpbnRpbmcoUGFpbnRGbGFncyA9IDApIE9WRVJSSURFOwpAQCAtMTE3LDkg
KzExNCw5IEBAIHByaXZhdGU6CiAKICAgICBUZXh0dXJlTWFwcGVyR0woKTsKIAotICAgIGJvb2wg
ZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25z
dCBGbG9hdFJlY3QmIG9yaWdpbmFsVGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSog
bWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7Ci0gICAgdm9pZCBkcmF3VGV4dHVy
ZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qLCB1aW50MzJfdCB0
ZXh0dXJlLCBGbGFncywgY29uc3QgRHJhd1F1YWQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBt
YXNrVGV4dHVyZSk7Ci0gICAgdm9pZCBkcmF3UXVhZChjb25zdCBEcmF3UXVhZCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtKiwgR0MzRGVudW0gZHJhd2luZ01vZGUsIGJvb2wgbmVlZHNCbGVuZGluZyk7CisgICAg
Ym9vbCBkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxhZ3Ms
IGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsVGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
Y29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7
CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYsIGNvbnN0
IERyYXdRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwg
ZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOworICAgIHZv
aWQgZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRy
YXdpbmdNb2RlLCBGbGFncyk7CiAKICAgICBib29sIGJlZ2luU2Npc3NvckNsaXAoY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGJpbmREZWZh
dWx0U3VyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAK
aW5kZXggYzhlMWFlNDYxYTJkM2MyYWMwMGMxNTAyN2FjMDVmZTQ0Y2RlZjM3Zi4uZmEzYTc2ZDM2
YmJlODNhZDU4NzBkZmEyMzlmYjY5OWVhYzNkN2YzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclNoYWRlck1hbmFnZXIuY3BwCkBAIC0xNTcsMTIgKzE1NywxMyBAQCBzdGF0aWMgdm9pZCBn
ZXRTaGFkZXJTcGVjKFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTaGFkZXJLZXkga2V5LCBT
dHJpbmcmIHZlcgogICAgICAgICBTVFJJTkdJRlkoCiAgICAgICAgICAgICB1bmlmb3JtIG1hdDQg
dV9tYXRyaXg7CiAgICAgICAgICAgICB1bmlmb3JtIGxvd3AgZmxvYXQgdV9mbGlwOworICAgICAg
ICAgICAgdW5pZm9ybSBsb3dwIHZlYzIgdV90ZXh0dXJlU2l6ZTsKICAgICAgICAgICAgIGF0dHJp
YnV0ZSB2ZWM0IGFfdmVydGV4OwogICAgICAgICAgICAgdmFyeWluZyBoaWdocCB2ZWMyIHZfc291
cmNlVGV4Q29vcmQ7CiAgICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9tYXNrVGV4Q29v
cmQ7CiAgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB2X3NvdXJjZVRleENvb3JkID0gdmVjMihhX3ZlcnRleC54LCBtaXgoYV92ZXJ0ZXgu
eSwgMS4gLSBhX3ZlcnRleC55LCB1X2ZsaXApKTsKKyAgICAgICAgICAgICAgICB2X3NvdXJjZVRl
eENvb3JkID0gdmVjMihhX3ZlcnRleC54LCBtaXgoYV92ZXJ0ZXgueSwgMS4gLSBhX3ZlcnRleC55
LCB1X2ZsaXApKSAqIHVfdGV4dHVyZVNpemU7CiAgICAgICAgICAgICAgICAgdl9tYXNrVGV4Q29v
cmQgPSB2ZWMyKGFfdmVydGV4KTsKICAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHVfbWF0
cml4ICogYV92ZXJ0ZXg7CiAgICAgICAgICAgICB9CkBAIC0yMjQsMTIgKzIyNSwxMSBAQCBzdGF0
aWMgdm9pZCBnZXRTaGFkZXJTcGVjKFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTaGFkZXJL
ZXkga2V5LCBTdHJpbmcmIHZlcgogICAgICAgICBTVFJJTkdJRlkoCiAgICAgICAgICAgICBwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKICAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEUmVjdCBz
X3NhbXBsZXI7Ci0gICAgICAgICAgICB1bmlmb3JtIGxvd3AgdmVjMiB1X3NhbXBsZXJTaXplOwog
ICAgICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0IHVfb3BhY2l0eTsKICAgICAgICAgICAgIHZh
cnlpbmcgaGlnaHAgdmVjMiB2X3NvdXJjZVRleENvb3JkOwogICAgICAgICAgICAgdm9pZCBtYWlu
KHZvaWQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbG93cCB2ZWM0IGNvbG9yID0g
dGV4dHVyZTJEUmVjdChzX3NhbXBsZXIsIHVfc2FtcGxlclNpemUgKiB2X3NvdXJjZVRleENvb3Jk
KTsKKyAgICAgICAgICAgICAgICBsb3dwIHZlYzQgY29sb3IgPSB0ZXh0dXJlMkRSZWN0KHNfc2Ft
cGxlciwgdl9zb3VyY2VUZXhDb29yZCk7CiAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChjb2xvci5yZ2IgKiB1X29wYWNpdHksIGNvbG9yLmEgKiB1X29wYWNpdHkpOwogICAgICAg
ICAgICAgfQogICAgICAgICApOwpAQCAtMjM4LDExICsyMzgsMTIgQEAgc3RhdGljIHZvaWQgZ2V0
U2hhZGVyU3BlYyhUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6U2hhZGVyS2V5IGtleSwgU3Ry
aW5nJiB2ZXIKICAgICAgICAgU1RSSU5HSUZZKAogICAgICAgICAgICAgdW5pZm9ybSBtYXQ0IHVf
bWF0cml4OwogICAgICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0IHVfZmxpcDsKKyAgICAgICAg
ICAgIHVuaWZvcm0gbG93cCB2ZWMyIHVfdGV4dHVyZVNpemU7CiAgICAgICAgICAgICBhdHRyaWJ1
dGUgdmVjNCBhX3ZlcnRleDsKICAgICAgICAgICAgIHZhcnlpbmcgaGlnaHAgdmVjMiB2X3NvdXJj
ZVRleENvb3JkOwogICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgueCwgbWl4KGFf
dmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9mbGlwKSk7CisgICAgICAgICAgICAgICAgdl9z
b3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgueCwgbWl4KGFfdmVydGV4LnksIDEuIC0gYV92
ZXJ0ZXgueSwgdV9mbGlwKSkgKiB1X3RleHR1cmVTaXplOwogICAgICAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gdV9tYXRyaXggKiBhX3ZlcnRleDsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKaW5kZXggNDk2YjdlODFiMTI2
MzZmZDJhOWZkZmVmNzEyODZmYThkODBmOGFjNi4uNjA2MDVmNDJkMGUzMjM4N2M0MmE0ZmRkMDUz
MTQyN2UwNGFkNzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STSht
YXRyaXgpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShmbGlwKQotICAgIFRFWE1BUF9ERUNM
QVJFX1VOSUZPUk0oc2FtcGxlclNpemUpCisgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STSh0ZXh0
dXJlU2l6ZSkKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKG9wYWNpdHkpCiAgICAgVEVYTUFQ
X0RFQ0xBUkVfVU5JRk9STShjb2xvcikKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKGV4cGFu
ZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179032</attachid>
            <date>2012-12-12 07:10:33 -0800</date>
            <delta_ts>2012-12-12 07:26:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104705-20121212070815.patch</filename>
            <type>text/plain</type>
            <size>20553</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc4ODk3ZWM5MDZjMjMz
MDQyMmM2N2UzMWRlZmE1MjIxYWEyZjBiYy4uOTI3OWM0OWViZGRkNjQ3M2QzZDExYzIyNGNlMTI3
ZDM4Yzg4NWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEyLTExICBObydh
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1RleG1hcF0gQ29uc29s
aWRhdGUgcmVkdW5kYW50IGNvZGUgZm9yIEFSQl9SRUNUIHRleHR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDcwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEluc3RlYWQgb2Yg
aGF2aW5nIGEgd2hvbGUgZGlmZmVyZW50IGZ1bmN0aW9uIGZvciBSRUNUIHRleHR1cmVzLAorICAg
ICAgICBrZWVwIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgYW5kIHBhc3MgYSBmbGFnIHRoYXQgdGVs
bHMKKyAgICAgICAgVGV4dHVyZU1hcHBlckdMIHRvIHVzZSB0aGUgbm9uLW5vcm1hbGl6ZWQgY29v
cmRpbmF0ZXMgYW5kIHRoZQorICAgICAgICBSRUNUIHNoYWRlcnMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCByZWZhY3RvciBvbmx5LiBUZXN0ZWQgdG8gbm90IGJyZWFrIFdlYkdMIG9uCisgICAg
ICAgIFF0LU1hYy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6ZHJhd1F1YWQpOgorICAgICAgICAgICAgQ29tcGVuc2F0ZSBmb3IgcmVjdCB0
ZXh0dXJlcyBpbiBkcmF3UXVhZC4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdM
OjpkcmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1Rl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aEFu
dGlhbGlhc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0
dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgICAgICBQYXNzIGZsYWdzIHRvIFRleHR1cmVN
YXBwZXJHTDo6ZHJhd1F1YWQgaW5zdGVhZCBvZiBhIGJvb2wuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgIChUZXh0dXJlTWFw
cGVyR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTaGFkZXJTcGVjKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKToKKyAgICAgICAgICAg
IENvbXBlbnNhdGUgZm9yIHRoZSB0ZXh0dXJlLXNpemUgaW4gdGhlIHZlcnRleAorICAgICAgICAg
ICAgc2hhZGVyIGluc3RlYWQgb2YgaW4gdGhlIGZyYWdtZW50IHNoYWRlci4KKwogMjAxMi0xMi0x
MCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIxMzcwMDYpOiBDU1MgY2xpcCBvbiBzb2xpZCBjb2xvciBjb21wb3NpdGVkIGRpdiBicm9r
ZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAKaW5kZXggNDM5YmY5YTJk
ZmQ1Yzg4YThlYTU2ZTlkNjIxNmMyZmU4NGEzMGUxNC4uZjRhYTRjNjZiMWVjYWY1NTA1MDFmODk4
MzhkMTkzN2UzNGFlMDdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5j
cHAKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogewogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFk
anVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0
KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fcHJpdmF0ZS0+c2l6ZSgpKSwgdGFyZ2V0
UmVjdCkpOwotICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIp
LT5kcmF3VGV4dHVyZVJlY3RhbmdsZUFSQihtX3ByaXZhdGUtPmZyb250QnVmZmVyVGV4dHVyZUlE
KCksIFRleHR1cmVNYXBwZXJHTDo6U3VwcG9ydHNCbGVuZGluZywgbV9wcml2YXRlLT5zaXplKCks
IHRhcmdldFJlY3QsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBzdGF0
aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1cmUobV9w
cml2YXRlLT5mcm9udEJ1ZmZlclRleHR1cmVJRCgpLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJs
ZW5kIHwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCwgbV9wcml2YXRl
LT5zaXplKCksIHRhcmdldFJlY3QsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsK
IH0KIAogdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUZyb250QnVmZmVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggMzQ1OGVjNTY0YTNmMjkxODg3ZjMyOTRhNGVi
ZTlkYzVlMTQ4MzQzMS4uYjUyMzkxYjQ5YmJjNzQzYmM5OTIyMmVjZDE5YzIzZTI4MTQxNmU2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lv
bnMzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCkBAIC01Niw3ICs1Nyw2IEBACiAKICNpZiAh
VVNFKFRFWE1BUF9PUEVOR0xfRVNfMikKIC8vIEZJWE1FOiBNb3ZlIHRvIEV4dGVuc2lvbnMzRC5o
LgotI2RlZmluZSBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIgMHg4NEY1CiAjZGVmaW5lIEdMX1VO
U0lHTkVEX0lOVF84XzhfOF84X1JFViAweDgzNjcKICNkZWZpbmUgR0xfVU5QQUNLX1JPV19MRU5H
VEggMHgwQ0YyCiAjZGVmaW5lIEdMX1VOUEFDS19TS0lQX1BJWEVMUyAweDBDRjQKQEAgLTI3MSw3
ICsyNzEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZW5kUGFpbnRpbmcoKQogI2VuZGlmCiB9
CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UXVhZChjb25zdCBEcmF3UXVhZCYgcXVhZFRv
RHJhdywgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0qIHNoYWRlclByb2dyYW0sIEdDM0RlbnVtIGRyYXdpbmdNb2Rl
LCBib29sIG5lZWRzQmxlbmRpbmcpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQoY29u
c3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBzaGFkZXJQcm9ncmFtLCBH
QzNEZW51bSBkcmF3aW5nTW9kZSwgRmxhZ3MgZmxhZ3MpCiB7CiAgICAgbV9jb250ZXh0M0QtPmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlclByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOwog
ICAgIG1fY29udGV4dDNELT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZG
RVIsIDApOwpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UXVh
ZChjb25zdCBEcmF3UXVhZCYgcXVhZFRvRHJhdywgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAgICAg
fTsKICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybU1hdHJpeDRmdihzaGFkZXJQcm9ncmFtLT5tYXRy
aXhMb2NhdGlvbigpLCAxLCBmYWxzZSwgbTQpOwogCi0gICAgaWYgKG5lZWRzQmxlbmRpbmcpIHsK
KyAgICBpZiAoZmxhZ3MgJiBTaG91bGRCbGVuZCkgewogICAgICAgICBtX2NvbnRleHQzRC0+Ymxl
bmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlO
VVNfU1JDX0FMUEhBKTsKICAgICAgICAgbV9jb250ZXh0M0QtPmVuYWJsZShHcmFwaGljc0NvbnRl
eHQzRDo6QkxFTkQpOwogICAgIH0gZWxzZQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgsIGNv
bnN0IEZsb2F0UmVjCiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm00Zihwcm9ncmFtLT5jb2xvckxv
Y2F0aW9uKCksIHIsIGcsIGIsIGEpOwogICAgIG1fY29udGV4dDNELT5saW5lV2lkdGgod2lkdGgp
OwogCi0gICAgZHJhd1F1YWQodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdl
dCgpLCBHcmFwaGljc0NvbnRleHQzRDo6TElORV9MT09QLCBjb2xvci5oYXNBbHBoYSgpKTsKKyAg
ICBkcmF3UXVhZCh0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0uZ2V0KCksIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5FX0xPT1AsIGNvbG9yLmhhc0FscGhhKCkgPyBTaG91bGRCbGVu
ZCA6IDApOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1JlcGFpbnRDb3VudGVyKGlu
dCB2YWx1ZSwgaW50IHBvaW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCkBAIC00MDEsNTUgKzQw
MSwzMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4
dHVyZSYgdGV4dHVyZSwgY29uc3QgRmxvYXRSZWN0JgogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1h
cFRleHR1cmVHTCY+KHRleHR1cmUpOwotICAgIGRyYXdUZXh0dXJlKHRleHR1cmVHTC5pZCgpLCB0
ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAgOiBTdXBwb3J0c0JsZW5kaW5nLCB0ZXh0dXJlR0wuc2l6
ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ssIGV4cG9zZWRFZGdlcyk7Cisg
ICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6
IFNob3VsZEJsZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNp
dHksIG1hc2ssIGV4cG9zZWRFZGdlcyk7CiB9CiAKLSNpZiAhVVNFKFRFWE1BUF9PUEVOR0xfRVNf
MikKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVJlY3RhbmdsZUFSQih1aW50MzJf
dCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUpCi17Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtOwot
ICAgIGlmIChtYXNrVGV4dHVyZSkKLSAgICAgICAgcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERh
dGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtKFRleHR1cmVN
YXBwZXJTaGFkZXJNYW5hZ2VyOjpNYXNrZWRSZWN0KTsKLSAgICBlbHNlCi0gICAgICAgIHByb2dy
YW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0
U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6UmVjdCk7Ci0gICAgbV9j
b250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwotCi0gICAgbV9jb250
ZXh0M0QtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkp
OwotICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMCk7Ci0gICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FSQiwgdGV4dHVyZSk7Ci0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5zYW1w
bGVyTG9jYXRpb24oKSwgMCk7Ci0KLSAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0t
PmZsaXBMb2NhdGlvbigpLCAhIShmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKSk7Ci0gICAgbV9j
b250ZXh0M0QtPnVuaWZvcm0yZihwcm9ncmFtLT5zYW1wbGVyU2l6ZUxvY2F0aW9uKCksIHRleHR1
cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdodCgpKTsKLSAgICBtX2NvbnRleHQzRC0+
dW5pZm9ybTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5KTsKLQotICAgIGlm
IChtYXNrVGV4dHVyZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGNvbnN0
IEJpdG1hcFRleHR1cmVHTCogbWFza1RleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1h
cFRleHR1cmVHTCo+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKTsKLSAgICAgICAgbV9jb250ZXh0M0Qt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtYXNrVGV4dHVyZUdM
LT5pZCgpKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5tYXNrTG9j
YXRpb24oKSwgMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgfQotCi0gICAgYm9vbCBuZWVkc0JsZW5kaW5nID0g
KGZsYWdzICYgU3VwcG9ydHNCbGVuZGluZykgfHwgb3BhY2l0eSA8IDAuOTkgfHwgbWFza1RleHR1
cmU7Ci0gICAgZHJhd1F1YWQodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdl
dCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCBuZWVkc0JsZW5kaW5nKTsKLX0K
LSNlbmRpZiAvLyAhVVNFKFRFWE1BUF9PUEVOR0xfRVNfMikKLQotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRT
aXplJiAvKiB0ZXh0dXJlU2l6ZSAqLywgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBj
b25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQor
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRy
aXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNp
Z25lZCBleHBvc2VkRWRnZXMpCiB7CiAgICAgYm9vbCBuZWVkc0FudGlhbGlhc2luZyA9IG1fZW5h
YmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nICYmICFtb2RlbFZpZXdNYXRyaXguaXNJbnRlZ2Vy
VHJhbnNsYXRpb24oKTsKLSAgICBpZiAobmVlZHNBbnRpYWxpYXNpbmcgJiYgZHJhd1RleHR1cmVX
aXRoQW50aWFsaWFzaW5nKHRleHR1cmUsIGZsYWdzLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRy
aXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlLCBleHBvc2VkRWRnZXMpKQorICAgIGlmIChuZWVkc0Fu
dGlhbGlhc2luZyAmJiBkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodGV4dHVyZSwgZmxhZ3Ms
IHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tU
ZXh0dXJlLCBleHBvc2VkRWRnZXMpKQogICAgICAgIHJldHVybjsKIAorICAgIGJvb2wgdXNlUmVj
dCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCBtYXNrZWQgPSAh
IW1hc2tUZXh0dXJlOworCisgICAgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlNoYWRlcktl
eSBrZXkgPSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6RGVmYXVsdDsKKyAgICBpZiAobWFz
a2VkICYmIHVzZVJlY3QpCisgICAgICAgIGtleSA9IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
OjpNYXNrZWRSZWN0OworICAgIGVsc2UgaWYgKG1hc2tlZCkKKyAgICAgICAga2V5ID0gVGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXI6Ok1hc2tlZDsKKyAgICBlbHNlIGlmICh1c2VSZWN0KQorICAg
ICAgICBrZXkgPSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6UmVjdDsKKwogICAgIFJlZlB0
cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsKLSAgICBpZiAobWFza1RleHR1
cmUpCi0gICAgICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cjo6TWFza2VkKTsKLSAgICBlbHNlCi0gICAgICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xE
YXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlcjo6RGVmYXVsdCk7CisgICAgcHJvZ3JhbSA9IGRhdGEoKS5zaGFy
ZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtKGtl
eSk7CiAgICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwog
Ci0gICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUs
IGZsYWdzLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJl
KTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVy
ZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNp
dHksIG1hc2tUZXh0dXJlKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENv
bG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNDYxLDcgKzQzNyw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uCiAgICAgY29sb3IuZ2V0UkdCQShyLCBnLCBiLCBhKTsKICAgICBtX2NvbnRl
eHQzRC0+dW5pZm9ybTRmKHByb2dyYW0tPmNvbG9yTG9jYXRpb24oKSwgciwgZywgYiwgYSk7CiAK
LSAgICBkcmF3UXVhZChyZWN0LCBtYXRyaXgsIHByb2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4
dDNEOjpUUklBTkdMRV9GQU4sIGEgPCAxKTsKKyAgICBkcmF3UXVhZChyZWN0LCBtYXRyaXgsIHBy
b2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIGEgPCAxID8gU2hv
dWxkQmxlbmQgOiAwKTsKIH0KIAogc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IHZpZXdwb3J0
TWF0cml4KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QpCkBAIC01NDgsNyArNTI0LDcgQEAg
c3RhdGljIEZsb2F0UXVhZCBpbmZsYXRlUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGZsb2F0
IGRpc3RhbmNlKQogICAgIHJldHVybiBleHBhbmRlZFF1YWQ7CiB9CiAKLWJvb2wgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxh
Z3MgZmxhZ3MsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxUYXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBC
aXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQorYm9vbCBU
ZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2luZyh1aW50MzJfdCB0ZXh0
dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBv
cmlnaW5hbFRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1
bnNpZ25lZCBleHBvc2VkRWRnZXMpCiB7CiAgICAgLy8gVGhlIGFudGlhbGlhc2luZyBwYXRoIGRv
ZXMgbm90IHN1cHBvcnQgbWFzayB0ZXh0dXJlcyBhdCB0aGUgbW9tZW50LgogICAgIGlmIChtYXNr
VGV4dHVyZSkKQEAgLTU5MSwxNyArNTY3LDIwIEBAIGJvb2wgVGV4dHVyZU1hcHBlckdMOjpkcmF3
VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsCiAg
ICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwogICAgIG1f
Y29udGV4dDNELT51bmlmb3JtM2Z2KHByb2dyYW0tPmV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5T
cGFjZUxvY2F0aW9uKCksIDgsIHRhcmdldFF1YWRFZGdlcyk7CiAKLSAgICBkcmF3VGV4dHVyZWRR
dWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIERyYXdRdWFkKG9y
aWdpbmFsVGFyZ2V0UmVjdCwgZXhwYW5kZWRRdWFkSW5UZXh0dXJlQ29vcmRpbmF0ZXMpLCBtb2Rl
bFZpZXdNYXRyaXgsIG9wYWNpdHksIDAgLyogbWFza1RleHR1cmUgKi8pOworICAgIGRyYXdUZXh0
dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlLCBmbGFncywgc2l6ZSwg
RHJhd1F1YWQob3JpZ2luYWxUYXJnZXRSZWN0LCBleHBhbmRlZFF1YWRJblRleHR1cmVDb29yZGlu
YXRlcyksIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSwgMCAvKiBtYXNrVGV4dHVyZSAqLyk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRR
dWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQz
Ml90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBEcmF3UXVhZCYgcXVhZFRvRHJhdywgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
Y29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6
ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBw
cm9ncmFtLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1h
c2tUZXh0dXJlKQogewogICAgIG1fY29udGV4dDNELT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShw
cm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsKICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgIG1fY29udGV4dDNELT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgR0MzRGVu
dW0gdGFyZ2V0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCA/IEV4dGVuc2lvbnMz
RDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCIDogR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ7
CisgICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CiAgICAgbV9j
b250ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7CiAKKyAg
ICBGbG9hdFNpemUgc2l6ZVBhcmFtZXRlciA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJl
Y3QgPyBzaXplIDogRmxvYXRTaXplKDEsIDEpOworICAgIG1fY29udGV4dDNELT51bmlmb3JtMmYo
cHJvZ3JhbS0+dGV4dHVyZVNpemVMb2NhdGlvbigpLCBzaXplUGFyYW1ldGVyLndpZHRoKCksIHNp
emVQYXJhbWV0ZXIuaGVpZ2h0KCkpOwogICAgIG1fY29udGV4dDNELT51bmlmb3JtMWYocHJvZ3Jh
bS0+ZmxpcExvY2F0aW9uKCksICEhKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUpKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5
KTsKIApAQCAtNjEzLDggKzU5MiwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1
cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcgogICAgICAg
ICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
OwogICAgIH0KIAotICAgIGJvb2wgbmVlZHNCbGVuZGluZyA9IChmbGFncyAmIFN1cHBvcnRzQmxl
bmRpbmcpIHx8IG9wYWNpdHkgPCAwLjk5IHx8IG1hc2tUZXh0dXJlOwotICAgIGRyYXdRdWFkKHF1
YWRUb0RyYXcsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRS
SUFOR0xFX0ZBTiwgbmVlZHNCbGVuZGluZyk7CisgICAgaWYgKG9wYWNpdHkgPCAxIHx8IG1hc2tU
ZXh0dXJlKQorICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKworICAgIGRyYXdRdWFkKHF1
YWRUb0RyYXcsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRS
SUFOR0xFX0ZBTiwgZmxhZ3MpOwogfQogCiBCaXRtYXBUZXh0dXJlR0w6OkJpdG1hcFRleHR1cmVH
TChUZXh0dXJlTWFwcGVyR0wqIHRleHR1cmVNYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXgg
NjY0NmRjNzBhMjE4MjRiNzRmZTFlYzY2YmM5NWI1MTBjZDM5YzE0MC4uODk5ZGNkNjA4ZWFiYjVm
ODY3NzkwMTA2OWUyNTBiZTg3OTUwZmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtNDMsOCAr
NDMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckdMKCk7CiAKICAgICBl
bnVtIEZsYWcgewotICAgICAgICBTdXBwb3J0c0JsZW5kaW5nID0gMHgwMSwKLSAgICAgICAgU2hv
dWxkRmxpcFRleHR1cmUgPSAweDAyCisgICAgICAgIFNob3VsZEJsZW5kID0gMHgwMSwKKyAgICAg
ICAgU2hvdWxkRmxpcFRleHR1cmUgPSAweDAyLAorICAgICAgICBTaG91bGRVc2VBUkJUZXh0dXJl
UmVjdCA9IDB4MDQKICAgICB9OwogCiAgICAgdHlwZWRlZiBpbnQgRmxhZ3M7CkBAIC01MywxMyAr
NTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3Im
LCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihpbnQg
dmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZSh1aW50MzJfdCB0
ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1
cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVy
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVy
ZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogCi0jaWYgIVVTRShURVhN
QVBfT1BFTkdMX0VTXzIpCi0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlUmVjdGFuZ2xlQVJC
KHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4
dHVyZSk7Ci0jZW5kaWYKLQogICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShCaXRtYXBUZXh0
dXJlKiBzdXJmYWNlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGJlZ2luUGFpbnRpbmcoUGFpbnRGbGFncyA9IDApIE9WRVJSSURFOwpAQCAt
MTE3LDkgKzExNCw5IEBAIHByaXZhdGU6CiAKICAgICBUZXh0dXJlTWFwcGVyR0woKTsKIAotICAg
IGJvb2wgZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZsYWdz
LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsVGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7Ci0gICAgdm9pZCBkcmF3
VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qLCB1aW50
MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgRHJhd1F1YWQmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0
dXJlKiBtYXNrVGV4dHVyZSk7Ci0gICAgdm9pZCBkcmF3UXVhZChjb25zdCBEcmF3UXVhZCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtKiwgR0MzRGVudW0gZHJhd2luZ01vZGUsIGJvb2wgbmVlZHNCbGVuZGluZyk7
CisgICAgYm9vbCBkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4dHVyZSwg
RmxhZ3MsIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsVGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYs
IGNvbnN0IERyYXdRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOwor
ICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIEdDM0Rl
bnVtIGRyYXdpbmdNb2RlLCBGbGFncyk7CiAKICAgICBib29sIGJlZ2luU2Npc3NvckNsaXAoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGJp
bmREZWZhdWx0U3VyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
ci5jcHAKaW5kZXggZDNhZWEyNmYxM2NiYWY3NjExZDg4MTdiYTQyMDM0NzFlNmY0OTY0MS4uZTA0
Zjg1ODczNWEwZWYwODkzMmJlMDFjYzU2NDY5YzQ0Y2NjNTBiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCkBAIC0xNTcsMTIgKzE1NywxMyBAQCBzdGF0aWMg
dm9pZCBnZXRTaGFkZXJTcGVjKFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTaGFkZXJLZXkg
a2V5LCBTdHJpbmcmIHZlcgogICAgICAgICBTVFJJTkdJRlkoCiAgICAgICAgICAgICB1bmlmb3Jt
IG1hdDQgdV9tYXRyaXg7CiAgICAgICAgICAgICB1bmlmb3JtIGxvd3AgZmxvYXQgdV9mbGlwOwor
ICAgICAgICAgICAgdW5pZm9ybSBsb3dwIHZlYzIgdV90ZXh0dXJlU2l6ZTsKICAgICAgICAgICAg
IGF0dHJpYnV0ZSB2ZWM0IGFfdmVydGV4OwogICAgICAgICAgICAgdmFyeWluZyBoaWdocCB2ZWMy
IHZfc291cmNlVGV4Q29vcmQ7CiAgICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9tYXNr
VGV4Q29vcmQ7CiAgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICB2X3NvdXJjZVRleENvb3JkID0gdmVjMihhX3ZlcnRleC54LCBtaXgoYV92
ZXJ0ZXgueSwgMS4gLSBhX3ZlcnRleC55LCB1X2ZsaXApKTsKKyAgICAgICAgICAgICAgICB2X3Nv
dXJjZVRleENvb3JkID0gdmVjMihhX3ZlcnRleC54LCBtaXgoYV92ZXJ0ZXgueSwgMS4gLSBhX3Zl
cnRleC55LCB1X2ZsaXApKSAqIHVfdGV4dHVyZVNpemU7CiAgICAgICAgICAgICAgICAgdl9tYXNr
VGV4Q29vcmQgPSB2ZWMyKGFfdmVydGV4KTsKICAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9
IHVfbWF0cml4ICogYV92ZXJ0ZXg7CiAgICAgICAgICAgICB9CkBAIC0yNDIsMTIgKzI0MywxMSBA
QCBzdGF0aWMgdm9pZCBnZXRTaGFkZXJTcGVjKFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpT
aGFkZXJLZXkga2V5LCBTdHJpbmcmIHZlcgogICAgICAgICBTVFJJTkdJRlkoCiAgICAgICAgICAg
ICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJE
UmVjdCBzX3NhbXBsZXI7Ci0gICAgICAgICAgICB1bmlmb3JtIGxvd3AgdmVjMiB1X3NhbXBsZXJT
aXplOwogICAgICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0IHVfb3BhY2l0eTsKICAgICAgICAg
ICAgIHZhcnlpbmcgaGlnaHAgdmVjMiB2X3NvdXJjZVRleENvb3JkOwogICAgICAgICAgICAgdm9p
ZCBtYWluKHZvaWQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbG93cCB2ZWM0IGNv
bG9yID0gdGV4dHVyZTJEUmVjdChzX3NhbXBsZXIsIHVfc2FtcGxlclNpemUgKiB2X3NvdXJjZVRl
eENvb3JkKTsKKyAgICAgICAgICAgICAgICBsb3dwIHZlYzQgY29sb3IgPSB0ZXh0dXJlMkRSZWN0
KHNfc2FtcGxlciwgdl9zb3VyY2VUZXhDb29yZCk7CiAgICAgICAgICAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNChjb2xvci5yZ2IgKiB1X29wYWNpdHksIGNvbG9yLmEgKiB1X29wYWNpdHkpOwog
ICAgICAgICAgICAgfQogICAgICAgICApOwpAQCAtMjU2LDExICsyNTYsMTIgQEAgc3RhdGljIHZv
aWQgZ2V0U2hhZGVyU3BlYyhUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6U2hhZGVyS2V5IGtl
eSwgU3RyaW5nJiB2ZXIKICAgICAgICAgU1RSSU5HSUZZKAogICAgICAgICAgICAgdW5pZm9ybSBt
YXQ0IHVfbWF0cml4OwogICAgICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0IHVfZmxpcDsKKyAg
ICAgICAgICAgIHVuaWZvcm0gbG93cCB2ZWMyIHVfdGV4dHVyZVNpemU7CiAgICAgICAgICAgICBh
dHRyaWJ1dGUgdmVjNCBhX3ZlcnRleDsKICAgICAgICAgICAgIHZhcnlpbmcgaGlnaHAgdmVjMiB2
X3NvdXJjZVRleENvb3JkOwogICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgueCwg
bWl4KGFfdmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9mbGlwKSk7CisgICAgICAgICAgICAg
ICAgdl9zb3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgueCwgbWl4KGFfdmVydGV4LnksIDEu
IC0gYV92ZXJ0ZXgueSwgdV9mbGlwKSkgKiB1X3RleHR1cmVTaXplOwogICAgICAgICAgICAgICAg
IGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiBhX3ZlcnRleDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKaW5kZXggNDk2Yjdl
ODFiMTI2MzZmZDJhOWZkZmVmNzEyODZmYThkODBmOGFjNi4uNjA2MDVmNDJkMGUzMjM4N2M0MmE0
ZmRkMDUzMTQyN2UwNGFkNzIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5J
Rk9STShtYXRyaXgpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShmbGlwKQotICAgIFRFWE1B
UF9ERUNMQVJFX1VOSUZPUk0oc2FtcGxlclNpemUpCisgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9S
TSh0ZXh0dXJlU2l6ZSkKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKG9wYWNpdHkpCiAgICAg
VEVYTUFQX0RFQ0xBUkVfVU5JRk9STShjb2xvcikKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JN
KGV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179037</attachid>
            <date>2012-12-12 07:26:42 -0800</date>
            <delta_ts>2012-12-12 07:47:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104705-20121212072425.patch</filename>
            <type>text/plain</type>
            <size>21637</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc4ODk3ZWM5MDZjMjMz
MDQyMmM2N2UzMWRlZmE1MjIxYWEyZjBiYy4uZjgwZDQzMzdiOTZiZjE3N2EzOTUwYmU4OTBmNTRj
N2ZiNjQ2ZDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEyLTExICBObydh
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1RleG1hcF0gQ29uc29s
aWRhdGUgcmVkdW5kYW50IGNvZGUgZm9yIEFSQl9SRUNUIHRleHR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDcwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEluc3RlYWQgb2Yg
aGF2aW5nIGEgd2hvbGUgZGlmZmVyZW50IGZ1bmN0aW9uIGZvciBSRUNUIHRleHR1cmVzLAorICAg
ICAgICBrZWVwIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgYW5kIHBhc3MgYSBmbGFnIHRoYXQgdGVs
bHMKKyAgICAgICAgVGV4dHVyZU1hcHBlckdMIHRvIHVzZSB0aGUgbm9uLW5vcm1hbGl6ZWQgY29v
cmRpbmF0ZXMgYW5kIHRoZQorICAgICAgICBSRUNUIHNoYWRlcnMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCByZWZhY3RvciBvbmx5LiBUZXN0ZWQgdG8gbm90IGJyZWFrIFdlYkdMIG9uCisgICAg
ICAgIFF0LU1hYy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQpOgorICAgICAgICAgICAgQ29tcGVuc2F0ZSBm
b3IgcmVjdCB0ZXh0dXJlcyBpbiBkcmF3UXVhZC4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckdMOjpkcmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJH
TDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3
U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0
dXJlV2l0aEFudGlhbGlhc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6
OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgICAgICBQYXNzIGZsYWdzIHRv
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQgaW5zdGVhZCBvZiBhIGJvb2wuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTaGFkZXJT
cGVjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKToKKyAg
ICAgICAgICAgIENvbXBlbnNhdGUgZm9yIHRoZSB0ZXh0dXJlLXNpemUgaW4gdGhlIHZlcnRleAor
ICAgICAgICAgICAgc2hhZGVyIGluc3RlYWQgb2YgaW4gdGhlIGZyYWdtZW50IHNoYWRlci4KKwog
MjAxMi0xMi0xMCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIxMzcwMDYpOiBDU1MgY2xpcCBvbiBzb2xpZCBjb2xvciBjb21wb3NpdGVk
IGRpdiBicm9rZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKaW5kZXgg
YThhNDMwYWE3YWM0NWJkMjY5ZGQxZjkwNTk0YWNmOGY1NmY3NzNiNS4uMmNhZTY2M2JlNmZmMDQ1
Y2Q0NGQ5YmIyM2M3NzM4MTYyNTYzNjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3Vy
ZmFjZUdMWC5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwog
ICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0
VG9SZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fcHJpdmF0ZS0+c2l6ZSgpKSwg
dGFyZ2V0UmVjdCkpOwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBtX3ByaXZh
dGUtPnRleHR1cmVJc1lJbnZlcnRlZCgpID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4
dHVyZSA6IDA7Ci0gICAgZmxhZ3MgfD0gVGV4dHVyZU1hcHBlckdMOjpTdXBwb3J0c0JsZW5kaW5n
OworICAgIGZsYWdzIHw9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQ7CiAgICAgdGV4TWFw
R0wtPmRyYXdUZXh0dXJlKHBsYXRmb3JtR2V0VGV4dHVyZUlEKCksIGZsYWdzLCBtX3ByaXZhdGUt
PnNpemUoKSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2spOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCmluZGV4IDQzOWJmOWEy
ZGZkNWM4OGE4ZWE1NmU5ZDYyMTZjMmZlODRhMzBlMTQuLmY0YWE0YzY2YjFlY2FmNTUwNTAxZjg5
ODM4ZDE5MzdlMzRhZTA3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMu
Y3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKIHsKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICBh
ZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3ByaXZhdGUtPnNpemUoKSksIHRhcmdl
dFJlY3QpKTsKLSAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVy
KS0+ZHJhd1RleHR1cmVSZWN0YW5nbGVBUkIobV9wcml2YXRlLT5mcm9udEJ1ZmZlclRleHR1cmVJ
RCgpLCBUZXh0dXJlTWFwcGVyR0w6OlN1cHBvcnRzQmxlbmRpbmcsIG1fcHJpdmF0ZS0+c2l6ZSgp
LCB0YXJnZXRSZWN0LCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgc3Rh
dGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1f
cHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRC
bGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIG1fcHJpdmF0
ZS0+c2l6ZSgpLCB0YXJnZXRSZWN0LCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7
CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDM0NThlYzU2NGEzZjI5MTg4N2YzMjk0YTRl
YmU5ZGM1ZTE0ODM0MzEuLmI1MjM5MWI0OWJiYzc0M2JjOTkyMjJlY2QxOWMyM2UyODE0MTZlNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNp
b25zM0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgpAQCAtNTYsNyArNTcsNiBAQAogCiAjaWYg
IVVTRShURVhNQVBfT1BFTkdMX0VTXzIpCiAvLyBGSVhNRTogTW92ZSB0byBFeHRlbnNpb25zM0Qu
aC4KLSNkZWZpbmUgR0xfVEVYVFVSRV9SRUNUQU5HTEVfQVJCIDB4ODRGNQogI2RlZmluZSBHTF9V
TlNJR05FRF9JTlRfOF84XzhfOF9SRVYgMHg4MzY3CiAjZGVmaW5lIEdMX1VOUEFDS19ST1dfTEVO
R1RIIDB4MENGMgogI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9QSVhFTFMgMHgwQ0Y0CkBAIC0yNzEs
NyArMjcxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmVuZFBhaW50aW5nKCkKICNlbmRpZgog
fQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmIHF1YWRU
b0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBzaGFkZXJQcm9ncmFtLCBHQzNEZW51bSBkcmF3aW5nTW9k
ZSwgYm9vbCBuZWVkc0JsZW5kaW5nKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdRdWFkKGNv
bnN0IERyYXdRdWFkJiBxdWFkVG9EcmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSogc2hhZGVyUHJvZ3JhbSwg
R0MzRGVudW0gZHJhd2luZ01vZGUsIEZsYWdzIGZsYWdzKQogewogICAgIG1fY29udGV4dDNELT5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJQcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsK
ICAgICBtX2NvbnRleHQzRC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVG
RkVSLCAwKTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1
YWQoY29uc3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTQogICAg
IH07CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVyUHJvZ3JhbS0+bWF0
cml4TG9jYXRpb24oKSwgMSwgZmFsc2UsIG00KTsKIAotICAgIGlmIChuZWVkc0JsZW5kaW5nKSB7
CisgICAgaWYgKGZsYWdzICYgU2hvdWxkQmxlbmQpIHsKICAgICAgICAgbV9jb250ZXh0M0QtPmJs
ZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01J
TlVTX1NSQ19BTFBIQSk7CiAgICAgICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250
ZXh0M0Q6OkJMRU5EKTsKICAgICB9IGVsc2UKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoLCBj
b25zdCBGbG9hdFJlYwogICAgIG1fY29udGV4dDNELT51bmlmb3JtNGYocHJvZ3JhbS0+Y29sb3JM
b2NhdGlvbigpLCByLCBnLCBiLCBhKTsKICAgICBtX2NvbnRleHQzRC0+bGluZVdpZHRoKHdpZHRo
KTsKIAotICAgIGRyYXdRdWFkKHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5n
ZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwgY29sb3IuaGFzQWxwaGEoKSk7Cisg
ICAgZHJhd1F1YWQodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdldCgpLCBH
cmFwaGljc0NvbnRleHQzRDo6TElORV9MT09QLCBjb2xvci5oYXNBbHBoYSgpID8gU2hvdWxkQmxl
bmQgOiAwKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihp
bnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQpAQCAtNDAxLDU1ICs0
MDEsMzEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRl
eHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Y29uc3QgQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRt
YXBUZXh0dXJlR0wmPih0ZXh0dXJlKTsKLSAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwg
dGV4dHVyZUdMLmlzT3BhcXVlKCkgPyAwIDogU3VwcG9ydHNCbGVuZGluZywgdGV4dHVyZUdMLnNp
emUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOwor
ICAgIGRyYXdUZXh0dXJlKHRleHR1cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAg
OiBTaG91bGRCbGVuZCwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFj
aXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOwogfQogCi0jaWYgIVVTRShURVhNQVBfT1BFTkdMX0VT
XzIpCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVSZWN0YW5nbGVBUkIodWludDMy
X3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0
dXJlKQotewotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsK
LSAgICBpZiAobWFza1RleHR1cmUpCi0gICAgICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xE
YXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlcjo6TWFza2VkUmVjdCk7Ci0gICAgZWxzZQotICAgICAgICBwcm9n
cmFtID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdl
dFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlJlY3QpOwotICAgIG1f
Y29udGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKLQotICAgIG1fY29u
dGV4dDNELT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigp
KTsKLSAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRTApOwotICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdM
RV9BUkIsIHRleHR1cmUpOwotICAgIG1fY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+c2Ft
cGxlckxvY2F0aW9uKCksIDApOwotCi0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFt
LT5mbGlwTG9jYXRpb24oKSwgISEoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkpOwotICAgIG1f
Y29udGV4dDNELT51bmlmb3JtMmYocHJvZ3JhbS0+c2FtcGxlclNpemVMb2NhdGlvbigpLCB0ZXh0
dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgbV9jb250ZXh0M0Qt
PnVuaWZvcm0xZihwcm9ncmFtLT5vcGFjaXR5TG9jYXRpb24oKSwgb3BhY2l0eSk7Ci0KLSAgICBp
ZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1cmUtPmlzVmFsaWQoKSkgewotICAgICAgICBjb25z
dCBCaXRtYXBUZXh0dXJlR0wqIG1hc2tUZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRt
YXBUZXh0dXJlR0wqPihtYXNrVGV4dHVyZSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSk7Ci0gICAgICAgIG1fY29udGV4dDNE
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbWFza1RleHR1cmVH
TC0+aWQoKSk7Ci0gICAgICAgIG1fY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+bWFza0xv
Y2F0aW9uKCksIDEpOwotICAgICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgIH0KLQotICAgIGJvb2wgbmVlZHNCbGVuZGluZyA9
IChmbGFncyAmIFN1cHBvcnRzQmxlbmRpbmcpIHx8IG9wYWNpdHkgPCAwLjk5IHx8IG1hc2tUZXh0
dXJlOwotICAgIGRyYXdRdWFkKHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5n
ZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgbmVlZHNCbGVuZGluZyk7Ci19
Ci0jZW5kaWYgLy8gIVVTRShURVhNQVBfT1BFTkdMX0VTXzIpCi0KLXZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50
U2l6ZSYgLyogdGV4dHVyZVNpemUgKi8sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
Y29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykK
K3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGJvb2wgbmVlZHNBbnRpYWxpYXNpbmcgPSBtX2Vu
YWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZyAmJiAhbW9kZWxWaWV3TWF0cml4LmlzSW50ZWdl
clRyYW5zbGF0aW9uKCk7Ci0gICAgaWYgKG5lZWRzQW50aWFsaWFzaW5nICYmIGRyYXdUZXh0dXJl
V2l0aEFudGlhbGlhc2luZyh0ZXh0dXJlLCBmbGFncywgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0
cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVyZSwgZXhwb3NlZEVkZ2VzKSkKKyAgICBpZiAobmVlZHNB
bnRpYWxpYXNpbmcgJiYgZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHRleHR1cmUsIGZsYWdz
LCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNr
VGV4dHVyZSwgZXhwb3NlZEVkZ2VzKSkKICAgICAgICByZXR1cm47CiAKKyAgICBib29sIHVzZVJl
Y3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0OworICAgIGJvb2wgbWFza2VkID0g
ISFtYXNrVGV4dHVyZTsKKworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTaGFkZXJL
ZXkga2V5ID0gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OkRlZmF1bHQ7CisgICAgaWYgKG1h
c2tlZCAmJiB1c2VSZWN0KQorICAgICAgICBrZXkgPSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cjo6TWFza2VkUmVjdDsKKyAgICBlbHNlIGlmIChtYXNrZWQpCisgICAgICAgIGtleSA9IFRleHR1
cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpNYXNrZWQ7CisgICAgZWxzZSBpZiAodXNlUmVjdCkKKyAg
ICAgICAga2V5ID0gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlJlY3Q7CisKICAgICBSZWZQ
dHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW07Ci0gICAgaWYgKG1hc2tUZXh0
dXJlKQotICAgICAgICBwcm9ncmFtID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBw
ZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXI6Ok1hc2tlZCk7Ci0gICAgZWxzZQotICAgICAgICBwcm9ncmFtID0gZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW0oVGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXI6OkRlZmF1bHQpOworICAgIHByb2dyYW0gPSBkYXRhKCkuc2hh
cmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShr
ZXkpOwogICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsK
IAotICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJl
LCBmbGFncywgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVy
ZSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1
cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFj
aXR5LCBtYXNrVGV4dHVyZSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRD
b2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTQ2MSw3ICs0MzcsNyBAQCB2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbgogICAgIGNvbG9yLmdldFJHQkEociwgZywgYiwgYSk7CiAgICAgbV9jb250
ZXh0M0QtPnVuaWZvcm00Zihwcm9ncmFtLT5jb2xvckxvY2F0aW9uKCksIHIsIGcsIGIsIGEpOwog
Ci0gICAgZHJhd1F1YWQocmVjdCwgbWF0cml4LCBwcm9ncmFtLmdldCgpLCBHcmFwaGljc0NvbnRl
eHQzRDo6VFJJQU5HTEVfRkFOLCBhIDwgMSk7CisgICAgZHJhd1F1YWQocmVjdCwgbWF0cml4LCBw
cm9ncmFtLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCBhIDwgMSA/IFNo
b3VsZEJsZW5kIDogMCk7CiB9CiAKIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2aWV3cG9y
dE1hdHJpeChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEKQpAQCAtNTQ4LDcgKzUyNCw3IEBA
IHN0YXRpYyBGbG9hdFF1YWQgaW5mbGF0ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBmbG9h
dCBkaXN0YW5jZSkKICAgICByZXR1cm4gZXhwYW5kZWRRdWFkOwogfQogCi1ib29sIFRleHR1cmVN
YXBwZXJHTDo6ZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZs
YWdzIGZsYWdzLCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsVGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
Qml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK2Jvb2wg
VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4
dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
b3JpZ2luYWxUYXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIC8vIFRoZSBhbnRpYWxpYXNpbmcgcGF0aCBk
b2VzIG5vdCBzdXBwb3J0IG1hc2sgdGV4dHVyZXMgYXQgdGhlIG1vbWVudC4KICAgICBpZiAobWFz
a1RleHR1cmUpCkBAIC01OTEsMTcgKzU2NywyMCBAQCBib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLAog
ICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTNmdihwcm9ncmFtLT5leHBhbmRlZFF1YWRFZGdlc0luU2NyZWVu
U3BhY2VMb2NhdGlvbigpLCA4LCB0YXJnZXRRdWFkRWRnZXMpOwogCi0gICAgZHJhd1RleHR1cmVk
UXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCBEcmF3UXVhZChv
cmlnaW5hbFRhcmdldFJlY3QsIGV4cGFuZGVkUXVhZEluVGV4dHVyZUNvb3JkaW5hdGVzKSwgbW9k
ZWxWaWV3TWF0cml4LCBvcGFjaXR5LCAwIC8qIG1hc2tUZXh0dXJlICovKTsKKyAgICBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHNpemUs
IERyYXdRdWFkKG9yaWdpbmFsVGFyZ2V0UmVjdCwgZXhwYW5kZWRRdWFkSW5UZXh0dXJlQ29vcmRp
bmF0ZXMpLCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIDAgLyogbWFza1RleHR1cmUgKi8pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVk
UXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFtLCB1aW50
MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHks
IGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6
OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSog
cHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNp
emUsIGNvbnN0IERyYXdRdWFkJiBxdWFkVG9EcmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBt
YXNrVGV4dHVyZSkKIHsKICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
cHJvZ3JhbS0+dmVydGV4TG9jYXRpb24oKSk7CiAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKLSAgICBtX2NvbnRleHQzRC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIEdDM0Rl
bnVtIHRhcmdldCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QgPyBFeHRlbnNpb25z
M0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiA6IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
OworICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOwogICAgIG1f
Y29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCksIDApOwogCisg
ICAgRmxvYXRTaXplIHNpemVQYXJhbWV0ZXIgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVS
ZWN0ID8gc2l6ZSA6IEZsb2F0U2l6ZSgxLCAxKTsKKyAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTJm
KHByb2dyYW0tPnRleHR1cmVTaXplTG9jYXRpb24oKSwgc2l6ZVBhcmFtZXRlci53aWR0aCgpLCBz
aXplUGFyYW1ldGVyLmhlaWdodCgpKTsKICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dy
YW0tPmZsaXBMb2NhdGlvbigpLCAhIShmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKSk7CiAgICAg
bV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFtLT5vcGFjaXR5TG9jYXRpb24oKSwgb3BhY2l0
eSk7CiAKQEAgLTYxMyw4ICs1OTIsMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0
dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSogcHIKICAgICAg
ICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUw
KTsKICAgICB9CiAKLSAgICBib29sIG5lZWRzQmxlbmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0Js
ZW5kaW5nKSB8fCBvcGFjaXR5IDwgMC45OSB8fCBtYXNrVGV4dHVyZTsKLSAgICBkcmF3UXVhZChx
dWFkVG9EcmF3LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpU
UklBTkdMRV9GQU4sIG5lZWRzQmxlbmRpbmcpOworICAgIGlmIChvcGFjaXR5IDwgMSB8fCBtYXNr
VGV4dHVyZSkKKyAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7CisKKyAgICBkcmF3UXVhZChx
dWFkVG9EcmF3LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpU
UklBTkdMRV9GQU4sIGZsYWdzKTsKIH0KIAogQml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJl
R0woVGV4dHVyZU1hcHBlckdMKiB0ZXh0dXJlTWFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4
IDY2NDZkYzcwYTIxODI0Yjc0ZmUxZWM2NmJjOTViNTEwY2QzOWMxNDAuLjg5OWRjZDYwOGVhYmI1
Zjg2Nzc5MDEwNjllMjUwYmU4Nzk1MGZlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTQzLDgg
KzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJHTCgpOwogCiAgICAg
ZW51bSBGbGFnIHsKLSAgICAgICAgU3VwcG9ydHNCbGVuZGluZyA9IDB4MDEsCi0gICAgICAgIFNo
b3VsZEZsaXBUZXh0dXJlID0gMHgwMgorICAgICAgICBTaG91bGRCbGVuZCA9IDB4MDEsCisgICAg
ICAgIFNob3VsZEZsaXBUZXh0dXJlID0gMHgwMiwKKyAgICAgICAgU2hvdWxkVXNlQVJCVGV4dHVy
ZVJlY3QgPSAweDA0CiAgICAgfTsKIAogICAgIHR5cGVkZWYgaW50IEZsYWdzOwpAQCAtNTMsMTMg
KzU0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9y
JiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0
cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50
IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3Nl
ZEVkZ2VzKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUodWludDMyX3Qg
dGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRy
aXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNp
Z25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0
dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1
cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBPVkVSUklERTsKIAotI2lmICFVU0UoVEVY
TUFQX09QRU5HTF9FU18yKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZVJlY3RhbmdsZUFS
Qih1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1Rl
eHR1cmUpOwotI2VuZGlmCi0KICAgICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4
dHVyZSogc3VyZmFjZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50RmxhZ3MgPSAwKSBPVkVSUklERTsKQEAg
LTExNyw5ICsxMTQsOSBAQCBwcml2YXRlOgogCiAgICAgVGV4dHVyZU1hcHBlckdMKCk7CiAKLSAg
ICBib29sIGRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2luZyh1aW50MzJfdCB0ZXh0dXJlLCBGbGFn
cywgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRl
eHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOwotICAgIHZvaWQgZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgdWlu
dDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IERyYXdRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUpOwotICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdpbmdNb2RlLCBib29sIG5lZWRzQmxlbmRpbmcp
OworICAgIGJvb2wgZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUs
IEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9w
YWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMpOworICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUm
LCBjb25zdCBEcmF3UXVhZCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsK
KyAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IERyYXdRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qLCBHQzNE
ZW51bSBkcmF3aW5nTW9kZSwgRmxhZ3MpOwogCiAgICAgYm9vbCBiZWdpblNjaXNzb3JDbGlwKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBi
aW5kRGVmYXVsdFN1cmZhY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXIuY3BwCmluZGV4IGQzYWVhMjZmMTNjYmFmNzYxMWQ4ODE3YmE0MjAzNDcxZTZmNDk2NDEuLmUw
NGY4NTg3MzVhMGVmMDg5MzJiZTAxY2M1NjQ2OWM0NGNjYzUwYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcApAQCAtMTU3LDEyICsxNTcsMTMgQEAgc3RhdGlj
IHZvaWQgZ2V0U2hhZGVyU3BlYyhUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6U2hhZGVyS2V5
IGtleSwgU3RyaW5nJiB2ZXIKICAgICAgICAgU1RSSU5HSUZZKAogICAgICAgICAgICAgdW5pZm9y
bSBtYXQ0IHVfbWF0cml4OwogICAgICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0IHVfZmxpcDsK
KyAgICAgICAgICAgIHVuaWZvcm0gbG93cCB2ZWMyIHVfdGV4dHVyZVNpemU7CiAgICAgICAgICAg
ICBhdHRyaWJ1dGUgdmVjNCBhX3ZlcnRleDsKICAgICAgICAgICAgIHZhcnlpbmcgaGlnaHAgdmVj
MiB2X3NvdXJjZVRleENvb3JkOwogICAgICAgICAgICAgdmFyeWluZyBoaWdocCB2ZWMyIHZfbWFz
a1RleENvb3JkOwogICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgueCwgbWl4KGFf
dmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9mbGlwKSk7CisgICAgICAgICAgICAgICAgdl9z
b3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgueCwgbWl4KGFfdmVydGV4LnksIDEuIC0gYV92
ZXJ0ZXgueSwgdV9mbGlwKSkgKiB1X3RleHR1cmVTaXplOwogICAgICAgICAgICAgICAgIHZfbWFz
a1RleENvb3JkID0gdmVjMihhX3ZlcnRleCk7CiAgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24g
PSB1X21hdHJpeCAqIGFfdmVydGV4OwogICAgICAgICAgICAgfQpAQCAtMjQyLDEyICsyNDMsMTEg
QEAgc3RhdGljIHZvaWQgZ2V0U2hhZGVyU3BlYyhUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6
U2hhZGVyS2V5IGtleSwgU3RyaW5nJiB2ZXIKICAgICAgICAgU1RSSU5HSUZZKAogICAgICAgICAg
ICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIy
RFJlY3Qgc19zYW1wbGVyOwotICAgICAgICAgICAgdW5pZm9ybSBsb3dwIHZlYzIgdV9zYW1wbGVy
U2l6ZTsKICAgICAgICAgICAgIHVuaWZvcm0gbG93cCBmbG9hdCB1X29wYWNpdHk7CiAgICAgICAg
ICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9zb3VyY2VUZXhDb29yZDsKICAgICAgICAgICAgIHZv
aWQgbWFpbih2b2lkKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGxvd3AgdmVjNCBj
b2xvciA9IHRleHR1cmUyRFJlY3Qoc19zYW1wbGVyLCB1X3NhbXBsZXJTaXplICogdl9zb3VyY2VU
ZXhDb29yZCk7CisgICAgICAgICAgICAgICAgbG93cCB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEUmVj
dChzX3NhbXBsZXIsIHZfc291cmNlVGV4Q29vcmQpOwogICAgICAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoY29sb3IucmdiICogdV9vcGFjaXR5LCBjb2xvci5hICogdV9vcGFjaXR5KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgKTsKQEAgLTI1NiwxMSArMjU2LDEyIEBAIHN0YXRpYyB2
b2lkIGdldFNoYWRlclNwZWMoVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlNoYWRlcktleSBr
ZXksIFN0cmluZyYgdmVyCiAgICAgICAgIFNUUklOR0lGWSgKICAgICAgICAgICAgIHVuaWZvcm0g
bWF0NCB1X21hdHJpeDsKICAgICAgICAgICAgIHVuaWZvcm0gbG93cCBmbG9hdCB1X2ZsaXA7Cisg
ICAgICAgICAgICB1bmlmb3JtIGxvd3AgdmVjMiB1X3RleHR1cmVTaXplOwogICAgICAgICAgICAg
YXR0cmlidXRlIHZlYzQgYV92ZXJ0ZXg7CiAgICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIg
dl9zb3VyY2VUZXhDb29yZDsKICAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHZfc291cmNlVGV4Q29vcmQgPSB2ZWMyKGFfdmVydGV4Lngs
IG1peChhX3ZlcnRleC55LCAxLiAtIGFfdmVydGV4LnksIHVfZmxpcCkpOworICAgICAgICAgICAg
ICAgIHZfc291cmNlVGV4Q29vcmQgPSB2ZWMyKGFfdmVydGV4LngsIG1peChhX3ZlcnRleC55LCAx
LiAtIGFfdmVydGV4LnksIHVfZmxpcCkpICogdV90ZXh0dXJlU2l6ZTsKICAgICAgICAgICAgICAg
ICBnbF9Qb3NpdGlvbiA9IHVfbWF0cml4ICogYV92ZXJ0ZXg7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCmluZGV4IDQ5NmI3
ZTgxYjEyNjM2ZmQyYTlmZGZlZjcxMjg2ZmE4ZDgwZjhhYzYuLjYwNjA1ZjQyZDBlMzIzODdjNDJh
NGZkZDA1MzE0MjdlMDRhZDcyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIFRFWE1BUF9ERUNMQVJFX1VO
SUZPUk0obWF0cml4KQogICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oZmxpcCkKLSAgICBURVhN
QVBfREVDTEFSRV9VTklGT1JNKHNhbXBsZXJTaXplKQorICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZP
Uk0odGV4dHVyZVNpemUpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShvcGFjaXR5KQogICAg
IFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oY29sb3IpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9S
TShleHBhbmRlZFF1YWRFZGdlc0luU2NyZWVuU3BhY2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179042</attachid>
            <date>2012-12-12 07:47:46 -0800</date>
            <delta_ts>2012-12-12 08:31:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104705-20121212074530.patch</filename>
            <type>text/plain</type>
            <size>21657</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc4ODk3ZWM5MDZjMjMz
MDQyMmM2N2UzMWRlZmE1MjIxYWEyZjBiYy4uZjgwZDQzMzdiOTZiZjE3N2EzOTUwYmU4OTBmNTRj
N2ZiNjQ2ZDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEyLTExICBObydh
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1RleG1hcF0gQ29uc29s
aWRhdGUgcmVkdW5kYW50IGNvZGUgZm9yIEFSQl9SRUNUIHRleHR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDcwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEluc3RlYWQgb2Yg
aGF2aW5nIGEgd2hvbGUgZGlmZmVyZW50IGZ1bmN0aW9uIGZvciBSRUNUIHRleHR1cmVzLAorICAg
ICAgICBrZWVwIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgYW5kIHBhc3MgYSBmbGFnIHRoYXQgdGVs
bHMKKyAgICAgICAgVGV4dHVyZU1hcHBlckdMIHRvIHVzZSB0aGUgbm9uLW5vcm1hbGl6ZWQgY29v
cmRpbmF0ZXMgYW5kIHRoZQorICAgICAgICBSRUNUIHNoYWRlcnMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCByZWZhY3RvciBvbmx5LiBUZXN0ZWQgdG8gbm90IGJyZWFrIFdlYkdMIG9uCisgICAg
ICAgIFF0LU1hYy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQpOgorICAgICAgICAgICAgQ29tcGVuc2F0ZSBm
b3IgcmVjdCB0ZXh0dXJlcyBpbiBkcmF3UXVhZC4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckdMOjpkcmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJH
TDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3
U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0
dXJlV2l0aEFudGlhbGlhc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6
OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgICAgICBQYXNzIGZsYWdzIHRv
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQgaW5zdGVhZCBvZiBhIGJvb2wuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTaGFkZXJT
cGVjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKToKKyAg
ICAgICAgICAgIENvbXBlbnNhdGUgZm9yIHRoZSB0ZXh0dXJlLXNpemUgaW4gdGhlIHZlcnRleAor
ICAgICAgICAgICAgc2hhZGVyIGluc3RlYWQgb2YgaW4gdGhlIGZyYWdtZW50IHNoYWRlci4KKwog
MjAxMi0xMi0xMCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIxMzcwMDYpOiBDU1MgY2xpcCBvbiBzb2xpZCBjb2xvciBjb21wb3NpdGVk
IGRpdiBicm9rZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKaW5kZXgg
YThhNDMwYWE3YWM0NWJkMjY5ZGQxZjkwNTk0YWNmOGY1NmY3NzNiNS4uMmNhZTY2M2JlNmZmMDQ1
Y2Q0NGQ5YmIyM2M3NzM4MTYyNTYzNjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3Vy
ZmFjZUdMWC5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwog
ICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0
VG9SZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fcHJpdmF0ZS0+c2l6ZSgpKSwg
dGFyZ2V0UmVjdCkpOwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBtX3ByaXZh
dGUtPnRleHR1cmVJc1lJbnZlcnRlZCgpID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4
dHVyZSA6IDA7Ci0gICAgZmxhZ3MgfD0gVGV4dHVyZU1hcHBlckdMOjpTdXBwb3J0c0JsZW5kaW5n
OworICAgIGZsYWdzIHw9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQ7CiAgICAgdGV4TWFw
R0wtPmRyYXdUZXh0dXJlKHBsYXRmb3JtR2V0VGV4dHVyZUlEKCksIGZsYWdzLCBtX3ByaXZhdGUt
PnNpemUoKSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2spOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCmluZGV4IDQzOWJmOWEy
ZGZkNWM4OGE4ZWE1NmU5ZDYyMTZjMmZlODRhMzBlMTQuLmY0YWE0YzY2YjFlY2FmNTUwNTAxZjg5
ODM4ZDE5MzdlMzRhZTA3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMu
Y3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKIHsKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICBh
ZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3ByaXZhdGUtPnNpemUoKSksIHRhcmdl
dFJlY3QpKTsKLSAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVy
KS0+ZHJhd1RleHR1cmVSZWN0YW5nbGVBUkIobV9wcml2YXRlLT5mcm9udEJ1ZmZlclRleHR1cmVJ
RCgpLCBUZXh0dXJlTWFwcGVyR0w6OlN1cHBvcnRzQmxlbmRpbmcsIG1fcHJpdmF0ZS0+c2l6ZSgp
LCB0YXJnZXRSZWN0LCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgc3Rh
dGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1f
cHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRC
bGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIG1fcHJpdmF0
ZS0+c2l6ZSgpLCB0YXJnZXRSZWN0LCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7
CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDM0NThlYzU2NGEzZjI5MTg4N2YzMjk0YTRl
YmU5ZGM1ZTE0ODM0MzEuLjQ1NTNiM2Y4Y2UzNThiZTU1YTE0MDNmZjMxODY1ZTNhMjE2NGRkNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNp
b25zM0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgpAQCAtNTYsNyArNTcsNiBAQAogCiAjaWYg
IVVTRShURVhNQVBfT1BFTkdMX0VTXzIpCiAvLyBGSVhNRTogTW92ZSB0byBFeHRlbnNpb25zM0Qu
aC4KLSNkZWZpbmUgR0xfVEVYVFVSRV9SRUNUQU5HTEVfQVJCIDB4ODRGNQogI2RlZmluZSBHTF9V
TlNJR05FRF9JTlRfOF84XzhfOF9SRVYgMHg4MzY3CiAjZGVmaW5lIEdMX1VOUEFDS19ST1dfTEVO
R1RIIDB4MENGMgogI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9QSVhFTFMgMHgwQ0Y0CkBAIC0yNzEs
NyArMjcxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmVuZFBhaW50aW5nKCkKICNlbmRpZgog
fQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmIHF1YWRU
b0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBzaGFkZXJQcm9ncmFtLCBHQzNEZW51bSBkcmF3aW5nTW9k
ZSwgYm9vbCBuZWVkc0JsZW5kaW5nKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdRdWFkKGNv
bnN0IERyYXdRdWFkJiBxdWFkVG9EcmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSogc2hhZGVyUHJvZ3JhbSwg
R0MzRGVudW0gZHJhd2luZ01vZGUsIEZsYWdzIGZsYWdzKQogewogICAgIG1fY29udGV4dDNELT5l
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJQcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsK
ICAgICBtX2NvbnRleHQzRC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVG
RkVSLCAwKTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1
YWQoY29uc3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTQogICAg
IH07CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVyUHJvZ3JhbS0+bWF0
cml4TG9jYXRpb24oKSwgMSwgZmFsc2UsIG00KTsKIAotICAgIGlmIChuZWVkc0JsZW5kaW5nKSB7
CisgICAgaWYgKGZsYWdzICYgU2hvdWxkQmxlbmQpIHsKICAgICAgICAgbV9jb250ZXh0M0QtPmJs
ZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01J
TlVTX1NSQ19BTFBIQSk7CiAgICAgICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250
ZXh0M0Q6OkJMRU5EKTsKICAgICB9IGVsc2UKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoLCBj
b25zdCBGbG9hdFJlYwogICAgIG1fY29udGV4dDNELT51bmlmb3JtNGYocHJvZ3JhbS0+Y29sb3JM
b2NhdGlvbigpLCByLCBnLCBiLCBhKTsKICAgICBtX2NvbnRleHQzRC0+bGluZVdpZHRoKHdpZHRo
KTsKIAotICAgIGRyYXdRdWFkKHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5n
ZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwgY29sb3IuaGFzQWxwaGEoKSk7Cisg
ICAgZHJhd1F1YWQodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLmdldCgpLCBH
cmFwaGljc0NvbnRleHQzRDo6TElORV9MT09QLCBjb2xvci5oYXNBbHBoYSgpID8gU2hvdWxkQmxl
bmQgOiAwKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihp
bnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQpAQCAtNDAxLDU1ICs0
MDEsMzEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRl
eHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Y29uc3QgQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRt
YXBUZXh0dXJlR0wmPih0ZXh0dXJlKTsKLSAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwg
dGV4dHVyZUdMLmlzT3BhcXVlKCkgPyAwIDogU3VwcG9ydHNCbGVuZGluZywgdGV4dHVyZUdMLnNp
emUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOwor
ICAgIGRyYXdUZXh0dXJlKHRleHR1cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAg
OiBTaG91bGRCbGVuZCwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFj
aXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOwogfQogCi0jaWYgIVVTRShURVhNQVBfT1BFTkdMX0VT
XzIpCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVSZWN0YW5nbGVBUkIodWludDMy
X3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0
dXJlKQotewotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsK
LSAgICBpZiAobWFza1RleHR1cmUpCi0gICAgICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xE
YXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShUZXh0dXJl
TWFwcGVyU2hhZGVyTWFuYWdlcjo6TWFza2VkUmVjdCk7Ci0gICAgZWxzZQotICAgICAgICBwcm9n
cmFtID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdl
dFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlJlY3QpOwotICAgIG1f
Y29udGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKLQotICAgIG1fY29u
dGV4dDNELT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigp
KTsKLSAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRTApOwotICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdM
RV9BUkIsIHRleHR1cmUpOwotICAgIG1fY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+c2Ft
cGxlckxvY2F0aW9uKCksIDApOwotCi0gICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFt
LT5mbGlwTG9jYXRpb24oKSwgISEoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkpOwotICAgIG1f
Y29udGV4dDNELT51bmlmb3JtMmYocHJvZ3JhbS0+c2FtcGxlclNpemVMb2NhdGlvbigpLCB0ZXh0
dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgbV9jb250ZXh0M0Qt
PnVuaWZvcm0xZihwcm9ncmFtLT5vcGFjaXR5TG9jYXRpb24oKSwgb3BhY2l0eSk7Ci0KLSAgICBp
ZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1cmUtPmlzVmFsaWQoKSkgewotICAgICAgICBjb25z
dCBCaXRtYXBUZXh0dXJlR0wqIG1hc2tUZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRt
YXBUZXh0dXJlR0wqPihtYXNrVGV4dHVyZSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSk7Ci0gICAgICAgIG1fY29udGV4dDNE
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbWFza1RleHR1cmVH
TC0+aWQoKSk7Ci0gICAgICAgIG1fY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+bWFza0xv
Y2F0aW9uKCksIDEpOwotICAgICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgIH0KLQotICAgIGJvb2wgbmVlZHNCbGVuZGluZyA9
IChmbGFncyAmIFN1cHBvcnRzQmxlbmRpbmcpIHx8IG9wYWNpdHkgPCAwLjk5IHx8IG1hc2tUZXh0
dXJlOwotICAgIGRyYXdRdWFkKHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5n
ZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgbmVlZHNCbGVuZGluZyk7Ci19
Ci0jZW5kaWYgLy8gIVVTRShURVhNQVBfT1BFTkdMX0VTXzIpCi0KLXZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50
U2l6ZSYgLyogdGV4dHVyZVNpemUgKi8sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
Y29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykK
K3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGJvb2wgbmVlZHNBbnRpYWxpYXNpbmcgPSBtX2Vu
YWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZyAmJiAhbW9kZWxWaWV3TWF0cml4LmlzSW50ZWdl
clRyYW5zbGF0aW9uKCk7Ci0gICAgaWYgKG5lZWRzQW50aWFsaWFzaW5nICYmIGRyYXdUZXh0dXJl
V2l0aEFudGlhbGlhc2luZyh0ZXh0dXJlLCBmbGFncywgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0
cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVyZSwgZXhwb3NlZEVkZ2VzKSkKKyAgICBpZiAobmVlZHNB
bnRpYWxpYXNpbmcgJiYgZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHRleHR1cmUsIGZsYWdz
LCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNr
VGV4dHVyZSwgZXhwb3NlZEVkZ2VzKSkKICAgICAgICByZXR1cm47CiAKKyAgICBib29sIHVzZVJl
Y3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0OworICAgIGJvb2wgbWFza2VkID0g
ISFtYXNrVGV4dHVyZTsKKworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpTaGFkZXJL
ZXkga2V5ID0gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OkRlZmF1bHQ7CisgICAgaWYgKG1h
c2tlZCAmJiB1c2VSZWN0KQorICAgICAgICBrZXkgPSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cjo6TWFza2VkUmVjdDsKKyAgICBlbHNlIGlmIChtYXNrZWQpCisgICAgICAgIGtleSA9IFRleHR1
cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpNYXNrZWQ7CisgICAgZWxzZSBpZiAodXNlUmVjdCkKKyAg
ICAgICAga2V5ID0gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OlJlY3Q7CisKICAgICBSZWZQ
dHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW07Ci0gICAgaWYgKG1hc2tUZXh0
dXJlKQotICAgICAgICBwcm9ncmFtID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBw
ZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXI6Ok1hc2tlZCk7Ci0gICAgZWxzZQotICAgICAgICBwcm9ncmFtID0gZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW0oVGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXI6OkRlZmF1bHQpOworICAgIHByb2dyYW0gPSBkYXRhKCkuc2hh
cmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3JhbShr
ZXkpOwogICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsK
IAotICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJl
LCBmbGFncywgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVy
ZSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1
cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFj
aXR5LCBtYXNrVGV4dHVyZSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRD
b2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTQ2MSw3ICs0MzcsNyBAQCB2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbgogICAgIGNvbG9yLmdldFJHQkEociwgZywgYiwgYSk7CiAgICAgbV9jb250
ZXh0M0QtPnVuaWZvcm00Zihwcm9ncmFtLT5jb2xvckxvY2F0aW9uKCksIHIsIGcsIGIsIGEpOwog
Ci0gICAgZHJhd1F1YWQocmVjdCwgbWF0cml4LCBwcm9ncmFtLmdldCgpLCBHcmFwaGljc0NvbnRl
eHQzRDo6VFJJQU5HTEVfRkFOLCBhIDwgMSk7CisgICAgZHJhd1F1YWQocmVjdCwgbWF0cml4LCBw
cm9ncmFtLmdldCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCBhIDwgMSA/IFNo
b3VsZEJsZW5kIDogMCk7CiB9CiAKIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2aWV3cG9y
dE1hdHJpeChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEKQpAQCAtNTQ4LDcgKzUyNCw3IEBA
IHN0YXRpYyBGbG9hdFF1YWQgaW5mbGF0ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBmbG9h
dCBkaXN0YW5jZSkKICAgICByZXR1cm4gZXhwYW5kZWRRdWFkOwogfQogCi1ib29sIFRleHR1cmVN
YXBwZXJHTDo6ZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZs
YWdzIGZsYWdzLCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsVGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
Qml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK2Jvb2wg
VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodWludDMyX3QgdGV4
dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
b3JpZ2luYWxUYXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIC8vIFRoZSBhbnRpYWxpYXNpbmcgcGF0aCBk
b2VzIG5vdCBzdXBwb3J0IG1hc2sgdGV4dHVyZXMgYXQgdGhlIG1vbWVudC4KICAgICBpZiAobWFz
a1RleHR1cmUpCkBAIC01OTEsMTcgKzU2NywyMCBAQCBib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLAog
ICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTNmdihwcm9ncmFtLT5leHBhbmRlZFF1YWRFZGdlc0luU2NyZWVu
U3BhY2VMb2NhdGlvbigpLCA4LCB0YXJnZXRRdWFkRWRnZXMpOwogCi0gICAgZHJhd1RleHR1cmVk
UXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCBEcmF3UXVhZChv
cmlnaW5hbFRhcmdldFJlY3QsIGV4cGFuZGVkUXVhZEluVGV4dHVyZUNvb3JkaW5hdGVzKSwgbW9k
ZWxWaWV3TWF0cml4LCBvcGFjaXR5LCAwIC8qIG1hc2tUZXh0dXJlICovKTsKKyAgICBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHNpemUs
IERyYXdRdWFkKG9yaWdpbmFsVGFyZ2V0UmVjdCwgZXhwYW5kZWRRdWFkSW5UZXh0dXJlQ29vcmRp
bmF0ZXMpLCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIDAgLyogbWFza1RleHR1cmUgKi8pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVk
UXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFtLCB1aW50
MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgRHJhd1F1YWQmIHF1YWRUb0RyYXcsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHks
IGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6
OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSog
cHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNp
emUsIGNvbnN0IERyYXdRdWFkJiBxdWFkVG9EcmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBt
YXNrVGV4dHVyZSkKIHsKICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
cHJvZ3JhbS0+dmVydGV4TG9jYXRpb24oKSk7CiAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKLSAgICBtX2NvbnRleHQzRC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIEdDM0Rl
bnVtIHRhcmdldCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QgPyBHQzNEZW51bShF
eHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQikgOiBHQzNEZW51bShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCk7CisgICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKHRhcmdl
dCwgdGV4dHVyZSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9ncmFtLT5zYW1wbGVy
TG9jYXRpb24oKSwgMCk7CiAKKyAgICBGbG9hdFNpemUgc2l6ZVBhcmFtZXRlciA9IGZsYWdzICYg
U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QgPyBzaXplIDogRmxvYXRTaXplKDEsIDEpOworICAgIG1f
Y29udGV4dDNELT51bmlmb3JtMmYocHJvZ3JhbS0+dGV4dHVyZVNpemVMb2NhdGlvbigpLCBzaXpl
UGFyYW1ldGVyLndpZHRoKCksIHNpemVQYXJhbWV0ZXIuaGVpZ2h0KCkpOwogICAgIG1fY29udGV4
dDNELT51bmlmb3JtMWYocHJvZ3JhbS0+ZmxpcExvY2F0aW9uKCksICEhKGZsYWdzICYgU2hvdWxk
RmxpcFRleHR1cmUpKTsKICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPm9wYWNp
dHlMb2NhdGlvbigpLCBvcGFjaXR5KTsKIApAQCAtNjEzLDggKzU5MiwxMCBAQCB2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtKiBwcgogICAgICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRTApOwogICAgIH0KIAotICAgIGJvb2wgbmVlZHNCbGVuZGluZyA9
IChmbGFncyAmIFN1cHBvcnRzQmxlbmRpbmcpIHx8IG9wYWNpdHkgPCAwLjk5IHx8IG1hc2tUZXh0
dXJlOwotICAgIGRyYXdRdWFkKHF1YWRUb0RyYXcsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgbmVlZHNCbGVuZGluZyk7CisgICAgaWYg
KG9wYWNpdHkgPCAxIHx8IG1hc2tUZXh0dXJlKQorICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVu
ZDsKKworICAgIGRyYXdRdWFkKHF1YWRUb0RyYXcsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgZmxhZ3MpOwogfQogCiBCaXRtYXBUZXh0
dXJlR0w6OkJpdG1hcFRleHR1cmVHTChUZXh0dXJlTWFwcGVyR0wqIHRleHR1cmVNYXBwZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmgKaW5kZXggNjY0NmRjNzBhMjE4MjRiNzRmZTFlYzY2YmM5NWI1MTBjZDM5
YzE0MC4uODk5ZGNkNjA4ZWFiYjVmODY3NzkwMTA2OWUyNTBiZTg3OTUwZmVmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuaApAQCAtNDMsOCArNDMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlckdMKCk7CiAKICAgICBlbnVtIEZsYWcgewotICAgICAgICBTdXBwb3J0c0JsZW5kaW5n
ID0gMHgwMSwKLSAgICAgICAgU2hvdWxkRmxpcFRleHR1cmUgPSAweDAyCisgICAgICAgIFNob3Vs
ZEJsZW5kID0gMHgwMSwKKyAgICAgICAgU2hvdWxkRmxpcFRleHR1cmUgPSAweDAyLAorICAgICAg
ICBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCA9IDB4MDQKICAgICB9OwogCiAgICAgdHlwZWRlZiBp
bnQgRmxhZ3M7CkBAIC01MywxMyArNTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJl
KGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0
dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
cmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVy
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVy
ZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFncywg
Y29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0
eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdl
cyA9IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJS
SURFOwogCi0jaWYgIVVTRShURVhNQVBfT1BFTkdMX0VTXzIpCi0gICAgdmlydHVhbCB2b2lkIGRy
YXdUZXh0dXJlUmVjdGFuZ2xlQVJCKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBC
aXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSk7Ci0jZW5kaWYKLQogICAgIHZpcnR1YWwgdm9pZCBi
aW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBzdXJmYWNlKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRS
ZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFpbnRpbmcoUGFpbnRGbGFn
cyA9IDApIE9WRVJSSURFOwpAQCAtMTE3LDkgKzExNCw5IEBAIHByaXZhdGU6CiAKICAgICBUZXh0
dXJlTWFwcGVyR0woKTsKIAotICAgIGJvb2wgZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVp
bnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsVGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcyk7Ci0gICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgRHJhd1F1YWQm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSk7Ci0gICAgdm9pZCBkcmF3UXVh
ZChjb25zdCBEcmF3UXVhZCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0MzRGVudW0gZHJhd2luZ01vZGUs
IGJvb2wgbmVlZHNCbGVuZGluZyk7CisgICAgYm9vbCBkcmF3VGV4dHVyZVdpdGhBbnRpYWxpYXNp
bmcodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJl
Y3QmIG9yaWdpbmFsVGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0
aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBG
bGFncywgY29uc3QgSW50U2l6ZSYsIGNvbnN0IERyYXdRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUpOworICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdpbmdNb2RlLCBGbGFncyk7CiAKICAgICBib29s
IGJlZ2luU2Npc3NvckNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9h
dFJlY3QmKTsKICAgICB2b2lkIGJpbmREZWZhdWx0U3VyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKaW5kZXggZDNhZWEyNmYxM2NiYWY3NjExZDg4MTdi
YTQyMDM0NzFlNmY0OTY0MS4uZTA0Zjg1ODczNWEwZWYwODkzMmJlMDFjYzU2NDY5YzQ0Y2NjNTBi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCkBAIC0xNTcs
MTIgKzE1NywxMyBAQCBzdGF0aWMgdm9pZCBnZXRTaGFkZXJTcGVjKFRleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyOjpTaGFkZXJLZXkga2V5LCBTdHJpbmcmIHZlcgogICAgICAgICBTVFJJTkdJRlko
CiAgICAgICAgICAgICB1bmlmb3JtIG1hdDQgdV9tYXRyaXg7CiAgICAgICAgICAgICB1bmlmb3Jt
IGxvd3AgZmxvYXQgdV9mbGlwOworICAgICAgICAgICAgdW5pZm9ybSBsb3dwIHZlYzIgdV90ZXh0
dXJlU2l6ZTsKICAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfdmVydGV4OwogICAgICAgICAg
ICAgdmFyeWluZyBoaWdocCB2ZWMyIHZfc291cmNlVGV4Q29vcmQ7CiAgICAgICAgICAgICB2YXJ5
aW5nIGhpZ2hwIHZlYzIgdl9tYXNrVGV4Q29vcmQ7CiAgICAgICAgICAgICB2b2lkIG1haW4odm9p
ZCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2X3NvdXJjZVRleENvb3JkID0gdmVj
MihhX3ZlcnRleC54LCBtaXgoYV92ZXJ0ZXgueSwgMS4gLSBhX3ZlcnRleC55LCB1X2ZsaXApKTsK
KyAgICAgICAgICAgICAgICB2X3NvdXJjZVRleENvb3JkID0gdmVjMihhX3ZlcnRleC54LCBtaXgo
YV92ZXJ0ZXgueSwgMS4gLSBhX3ZlcnRleC55LCB1X2ZsaXApKSAqIHVfdGV4dHVyZVNpemU7CiAg
ICAgICAgICAgICAgICAgdl9tYXNrVGV4Q29vcmQgPSB2ZWMyKGFfdmVydGV4KTsKICAgICAgICAg
ICAgICAgICBnbF9Qb3NpdGlvbiA9IHVfbWF0cml4ICogYV92ZXJ0ZXg7CiAgICAgICAgICAgICB9
CkBAIC0yNDIsMTIgKzI0MywxMSBAQCBzdGF0aWMgdm9pZCBnZXRTaGFkZXJTcGVjKFRleHR1cmVN
YXBwZXJTaGFkZXJNYW5hZ2VyOjpTaGFkZXJLZXkga2V5LCBTdHJpbmcmIHZlcgogICAgICAgICBT
VFJJTkdJRlkoCiAgICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICAgICAgICAg
ICAgIHVuaWZvcm0gc2FtcGxlcjJEUmVjdCBzX3NhbXBsZXI7Ci0gICAgICAgICAgICB1bmlmb3Jt
IGxvd3AgdmVjMiB1X3NhbXBsZXJTaXplOwogICAgICAgICAgICAgdW5pZm9ybSBsb3dwIGZsb2F0
IHVfb3BhY2l0eTsKICAgICAgICAgICAgIHZhcnlpbmcgaGlnaHAgdmVjMiB2X3NvdXJjZVRleENv
b3JkOwogICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgbG93cCB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEUmVjdChzX3NhbXBsZXIsIHVfc2Ft
cGxlclNpemUgKiB2X3NvdXJjZVRleENvb3JkKTsKKyAgICAgICAgICAgICAgICBsb3dwIHZlYzQg
Y29sb3IgPSB0ZXh0dXJlMkRSZWN0KHNfc2FtcGxlciwgdl9zb3VyY2VUZXhDb29yZCk7CiAgICAg
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci5yZ2IgKiB1X29wYWNpdHksIGNv
bG9yLmEgKiB1X29wYWNpdHkpOwogICAgICAgICAgICAgfQogICAgICAgICApOwpAQCAtMjU2LDEx
ICsyNTYsMTIgQEAgc3RhdGljIHZvaWQgZ2V0U2hhZGVyU3BlYyhUZXh0dXJlTWFwcGVyU2hhZGVy
TWFuYWdlcjo6U2hhZGVyS2V5IGtleSwgU3RyaW5nJiB2ZXIKICAgICAgICAgU1RSSU5HSUZZKAog
ICAgICAgICAgICAgdW5pZm9ybSBtYXQ0IHVfbWF0cml4OwogICAgICAgICAgICAgdW5pZm9ybSBs
b3dwIGZsb2F0IHVfZmxpcDsKKyAgICAgICAgICAgIHVuaWZvcm0gbG93cCB2ZWMyIHVfdGV4dHVy
ZVNpemU7CiAgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3ZlcnRleDsKICAgICAgICAgICAg
IHZhcnlpbmcgaGlnaHAgdmVjMiB2X3NvdXJjZVRleENvb3JkOwogICAgICAgICAgICAgdm9pZCBt
YWluKHZvaWQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29y
ZCA9IHZlYzIoYV92ZXJ0ZXgueCwgbWl4KGFfdmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9m
bGlwKSk7CisgICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgu
eCwgbWl4KGFfdmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9mbGlwKSkgKiB1X3RleHR1cmVT
aXplOwogICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdV9tYXRyaXggKiBhX3ZlcnRleDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJN
YW5hZ2VyLmgKaW5kZXggNDk2YjdlODFiMTI2MzZmZDJhOWZkZmVmNzEyODZmYThkODBmOGFjNi4u
NjA2MDVmNDJkMGUzMjM4N2M0MmE0ZmRkMDUzMTQyN2UwNGFkNzIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAg
ICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShtYXRyaXgpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5J
Rk9STShmbGlwKQotICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oc2FtcGxlclNpemUpCisgICAg
VEVYTUFQX0RFQ0xBUkVfVU5JRk9STSh0ZXh0dXJlU2l6ZSkKICAgICBURVhNQVBfREVDTEFSRV9V
TklGT1JNKG9wYWNpdHkpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShjb2xvcikKICAgICBU
RVhNQVBfREVDTEFSRV9VTklGT1JNKGV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179053</attachid>
            <date>2012-12-12 08:31:53 -0800</date>
            <delta_ts>2012-12-12 12:11:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104705-20121212082938.patch</filename>
            <type>text/plain</type>
            <size>22747</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc4ODk3ZWM5MDZjMjMz
MDQyMmM2N2UzMWRlZmE1MjIxYWEyZjBiYy4uZjgwZDQzMzdiOTZiZjE3N2EzOTUwYmU4OTBmNTRj
N2ZiNjQ2ZDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEyLTExICBObydh
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1RleG1hcF0gQ29uc29s
aWRhdGUgcmVkdW5kYW50IGNvZGUgZm9yIEFSQl9SRUNUIHRleHR1cmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDcwNQorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEluc3RlYWQgb2Yg
aGF2aW5nIGEgd2hvbGUgZGlmZmVyZW50IGZ1bmN0aW9uIGZvciBSRUNUIHRleHR1cmVzLAorICAg
ICAgICBrZWVwIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgYW5kIHBhc3MgYSBmbGFnIHRoYXQgdGVs
bHMKKyAgICAgICAgVGV4dHVyZU1hcHBlckdMIHRvIHVzZSB0aGUgbm9uLW5vcm1hbGl6ZWQgY29v
cmRpbmF0ZXMgYW5kIHRoZQorICAgICAgICBSRUNUIHNoYWRlcnMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCByZWZhY3RvciBvbmx5LiBUZXN0ZWQgdG8gbm90IGJyZWFrIFdlYkdMIG9uCisgICAg
ICAgIFF0LU1hYy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQpOgorICAgICAgICAgICAgQ29tcGVuc2F0ZSBm
b3IgcmVjdCB0ZXh0dXJlcyBpbiBkcmF3UXVhZC4KKworICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckdMOjpkcmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJH
TDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3
U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0
dXJlV2l0aEFudGlhbGlhc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6
OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgICAgICBQYXNzIGZsYWdzIHRv
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1F1YWQgaW5zdGVhZCBvZiBhIGJvb2wuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgIChU
ZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTaGFkZXJT
cGVjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKToKKyAg
ICAgICAgICAgIENvbXBlbnNhdGUgZm9yIHRoZSB0ZXh0dXJlLXNpemUgaW4gdGhlIHZlcnRleAor
ICAgICAgICAgICAgc2hhZGVyIGluc3RlYWQgb2YgaW4gdGhlIGZyYWdtZW50IHNoYWRlci4KKwog
MjAxMi0xMi0xMCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIxMzcwMDYpOiBDU1MgY2xpcCBvbiBzb2xpZCBjb2xvciBjb21wb3NpdGVk
IGRpdiBicm9rZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDI5
NDE2OWUwZWIzZWI2NjA0ODI4MjAzZjgzZTRlZWNlMDBkNjc5NTMuLjFkNGM2NmExZWU5ODZiMjI2
MzM2ODkyOTdhNGRhZWQzYjJjYmE3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAg
fQogCiAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVN
YXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxh
Z3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC0+bV9h
dHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U3VwcG9ydHNCbGVuZGluZyA6IDApOworICAg
IFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZs
aXBUZXh0dXJlIHwgKG1fY29udGV4dC0+bV9hdHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkQmxlbmQgOiAwKTsKICAgICBJbnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4dC0+bV9j
dXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKICAgICB0ZXhtYXBHTC0+
ZHJhd1RleHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFy
Z2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrKTsKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkdfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3Bw
CmluZGV4IGE4YTQzMGFhN2FjNDViZDI2OWRkMWY5MDU5NGFjZjhmNTZmNzczYjUuLjJjYWU2NjNi
ZTZmZjA0NWNkNDRkOWJiMjNjNzczODE2MjU2MzYyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFw
aGljc1N1cmZhY2VHTFguY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5z
Zm9ybTsKICAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6cmVjdFRvUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3ByaXZhdGUtPnNp
emUoKSksIHRhcmdldFJlY3QpKTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0g
bV9wcml2YXRlLT50ZXh0dXJlSXNZSW52ZXJ0ZWQoKSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
RmxpcFRleHR1cmUgOiAwOwotICAgIGZsYWdzIHw9IFRleHR1cmVNYXBwZXJHTDo6U3VwcG9ydHNC
bGVuZGluZzsKKyAgICBmbGFncyB8PSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kOwogICAg
IHRleE1hcEdMLT5kcmF3VGV4dHVyZShwbGF0Zm9ybUdldFRleHR1cmVJRCgpLCBmbGFncywgbV9w
cml2YXRlLT5zaXplKCksIHRhcmdldFJlY3QsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBt
YXNrKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCA0
MzliZjlhMmRmZDVjODhhOGVhNTZlOWQ2MjE2YzJmZTg0YTMwZTE0Li5mNGFhNGM2NmIxZWNhZjU1
MDUwMWY4OTgzOGQxOTM3ZTM0YWUwN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcApAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0
Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiB7
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07
CiAgICAgYWRqdXN0ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJl
Y3RUb1JlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9wcml2YXRlLT5zaXplKCkp
LCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVy
ZU1hcHBlciktPmRyYXdUZXh0dXJlUmVjdGFuZ2xlQVJCKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJU
ZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTdXBwb3J0c0JsZW5kaW5nLCBtX3ByaXZhdGUt
PnNpemUoKSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2spOwor
ICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4
dHVyZShtX3ByaXZhdGUtPmZyb250QnVmZmVyVGV4dHVyZUlEKCksIFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkQmxlbmQgfCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFVzZUFSQlRleHR1cmVSZWN0LCBt
X3ByaXZhdGUtPnNpemUoKSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHks
IG1hc2spOwogfQogCiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZm
ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCAzNDU4ZWM1NjRhM2YyOTE4ODdm
MzI5NGE0ZWJlOWRjNWUxNDgzNDMxLi40NTUzYjNmOGNlMzU4YmU1NWExNDAzZmYzMTg2NWUzYTIx
NjRkZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogCisjaW5jbHVkZSAi
RXh0ZW5zaW9uczNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKQEAgLTU2LDcgKzU3LDYgQEAK
IAogI2lmICFVU0UoVEVYTUFQX09QRU5HTF9FU18yKQogLy8gRklYTUU6IE1vdmUgdG8gRXh0ZW5z
aW9uczNELmguCi0jZGVmaW5lIEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQiAweDg0RjUKICNkZWZp
bmUgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWIDB4ODM2NwogI2RlZmluZSBHTF9VTlBBQ0tf
Uk9XX0xFTkdUSCAweDBDRjIKICNkZWZpbmUgR0xfVU5QQUNLX1NLSVBfUElYRUxTIDB4MENGNApA
QCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjplbmRQYWludGluZygpCiAj
ZW5kaWYKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdRdWFkKGNvbnN0IERyYXdRdWFk
JiBxdWFkVG9EcmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSogc2hhZGVyUHJvZ3JhbSwgR0MzRGVudW0gZHJh
d2luZ01vZGUsIGJvb2wgbmVlZHNCbGVuZGluZykKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3
UXVhZChjb25zdCBEcmF3UXVhZCYgcXVhZFRvRHJhdywgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHNoYWRlclBy
b2dyYW0sIEdDM0RlbnVtIGRyYXdpbmdNb2RlLCBGbGFncyBmbGFncykKIHsKICAgICBtX2NvbnRl
eHQzRC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRp
b24oKSk7CiAgICAgbV9jb250ZXh0M0QtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFS
UkFZX0JVRkZFUiwgMCk7CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6
OmRyYXdRdWFkKGNvbnN0IERyYXdRdWFkJiBxdWFkVG9EcmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk0KICAgICB9OwogICAgIG1fY29udGV4dDNELT51bmlmb3JtTWF0cml4NGZ2KHNoYWRlclByb2dy
YW0tPm1hdHJpeExvY2F0aW9uKCksIDEsIGZhbHNlLCBtNCk7CiAKLSAgICBpZiAobmVlZHNCbGVu
ZGluZykgeworICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7CiAgICAgICAgIG1fY29udGV4
dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6
Ok9ORV9NSU5VU19TUkNfQUxQSEEpOwogICAgICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBo
aWNzQ29udGV4dDNEOjpCTEVORCk7CiAgICAgfSBlbHNlCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3
aWR0aCwgY29uc3QgRmxvYXRSZWMKICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTRmKHByb2dyYW0t
PmNvbG9yTG9jYXRpb24oKSwgciwgZywgYiwgYSk7CiAgICAgbV9jb250ZXh0M0QtPmxpbmVXaWR0
aCh3aWR0aCk7CiAKLSAgICBkcmF3UXVhZCh0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHBy
b2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FX0xPT1AsIGNvbG9yLmhhc0FscGhh
KCkpOworICAgIGRyYXdRdWFkKHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbS5n
ZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwgY29sb3IuaGFzQWxwaGEoKSA/IFNo
b3VsZEJsZW5kIDogMCk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3UmVwYWludENv
dW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQ
b2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCkKQEAgLTQw
MSw1NSArNDAxLDMxIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmCiAgICAgICAgIHJldHVybjsK
IAogICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZSk7Ci0gICAgZHJhd1RleHR1cmUodGV4dHVyZUdM
LmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFN1cHBvcnRzQmxlbmRpbmcsIHRleHR1
cmVHTC5zaXplKCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzaywgZXhwb3NlZEVk
Z2VzKTsKKyAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwgdGV4dHVyZUdMLmlzT3BhcXVl
KCkgPyAwIDogU2hvdWxkQmxlbmQsIHRleHR1cmVHTC5zaXplKCksIHRhcmdldFJlY3QsIG1hdHJp
eCwgb3BhY2l0eSwgbWFzaywgZXhwb3NlZEVkZ2VzKTsKIH0KIAotI2lmICFVU0UoVEVYTUFQX09Q
RU5HTF9FU18yKQotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlUmVjdGFuZ2xlQVJC
KHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBt
YXNrVGV4dHVyZSkKLXsKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHBy
b2dyYW07Ci0gICAgaWYgKG1hc2tUZXh0dXJlKQotICAgICAgICBwcm9ncmFtID0gZGF0YSgpLnNo
YXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW0o
VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6Ok1hc2tlZFJlY3QpOwotICAgIGVsc2UKLSAgICAg
ICAgcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlci5nZXRTaGFkZXJQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpSZWN0KTsK
LSAgICBtX2NvbnRleHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQoKSk7Ci0KLSAg
ICBtX2NvbnRleHQzRC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVydGV4TG9j
YXRpb24oKSk7Ci0gICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkUwKTsKLSAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV9S
RUNUQU5HTEVfQVJCLCB0ZXh0dXJlKTsKLSAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTFpKHByb2dy
YW0tPnNhbXBsZXJMb2NhdGlvbigpLCAwKTsKLQotICAgIG1fY29udGV4dDNELT51bmlmb3JtMWYo
cHJvZ3JhbS0+ZmxpcExvY2F0aW9uKCksICEhKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUpKTsK
LSAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTJmKHByb2dyYW0tPnNhbXBsZXJTaXplTG9jYXRpb24o
KSwgdGV4dHVyZVNpemUud2lkdGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0KCkpOwotICAgIG1fY29u
dGV4dDNELT51bmlmb3JtMWYocHJvZ3JhbS0+b3BhY2l0eUxvY2F0aW9uKCksIG9wYWNpdHkpOwot
Ci0gICAgaWYgKG1hc2tUZXh0dXJlICYmIG1hc2tUZXh0dXJlLT5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgY29uc3QgQml0bWFwVGV4dHVyZUdMKiBtYXNrVGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQml0bWFwVGV4dHVyZUdMKj4obWFza1RleHR1cmUpOwotICAgICAgICBtX2NvbnRleHQzRC0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpOwotICAgICAgICBtX2Nv
bnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1hc2tU
ZXh0dXJlR0wtPmlkKCkpOwotICAgICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0t
Pm1hc2tMb2NhdGlvbigpLCAxKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKLSAgICB9Ci0KLSAgICBib29sIG5lZWRzQmxl
bmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8fCBvcGFjaXR5IDwgMC45OSB8fCBt
YXNrVGV4dHVyZTsKLSAgICBkcmF3UXVhZCh0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHBy
b2dyYW0uZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIG5lZWRzQmxlbmRp
bmcpOwotfQotI2VuZGlmIC8vICFVU0UoVEVYTUFQX09QRU5HTF9FU18yKQotCi12b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNv
bnN0IEludFNpemUmIC8qIHRleHR1cmVTaXplICovLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9w
YWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBib29sIG5lZWRzQW50aWFsaWFzaW5n
ID0gbV9lbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcgJiYgIW1vZGVsVmlld01hdHJpeC5p
c0ludGVnZXJUcmFuc2xhdGlvbigpOwotICAgIGlmIChuZWVkc0FudGlhbGlhc2luZyAmJiBkcmF3
VGV4dHVyZVdpdGhBbnRpYWxpYXNpbmcodGV4dHVyZSwgZmxhZ3MsIHRhcmdldFJlY3QsIG1vZGVs
Vmlld01hdHJpeCwgb3BhY2l0eSwgbWFza1RleHR1cmUsIGV4cG9zZWRFZGdlcykpCisgICAgaWYg
KG5lZWRzQW50aWFsaWFzaW5nICYmIGRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2luZyh0ZXh0dXJl
LCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0
eSwgbWFza1RleHR1cmUsIGV4cG9zZWRFZGdlcykpCiAgICAgICAgcmV0dXJuOwogCisgICAgYm9v
bCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdDsKKyAgICBib29sIG1h
c2tlZCA9ICEhbWFza1RleHR1cmU7CisKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6
U2hhZGVyS2V5IGtleSA9IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpEZWZhdWx0OworICAg
IGlmIChtYXNrZWQgJiYgdXNlUmVjdCkKKyAgICAgICAga2V5ID0gVGV4dHVyZU1hcHBlclNoYWRl
ck1hbmFnZXI6Ok1hc2tlZFJlY3Q7CisgICAgZWxzZSBpZiAobWFza2VkKQorICAgICAgICBrZXkg
PSBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6TWFza2VkOworICAgIGVsc2UgaWYgKHVzZVJl
Y3QpCisgICAgICAgIGtleSA9IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpSZWN0OworCiAg
ICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtOwotICAgIGlmICht
YXNrVGV4dHVyZSkKLSAgICAgICAgcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0
dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyOjpNYXNrZWQpOwotICAgIGVsc2UKLSAgICAgICAgcHJvZ3JhbSA9IGRhdGEoKS5z
aGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJQcm9ncmFt
KFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpEZWZhdWx0KTsKKyAgICBwcm9ncmFtID0gZGF0
YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclBy
b2dyYW0oa2V5KTsKICAgICBtX2NvbnRleHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFt
SUQoKSk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwg
dGV4dHVyZSwgZmxhZ3MsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSwgbWFz
a1RleHR1cmUpOworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgp
LCB0ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJp
eCwgb3BhY2l0eSwgbWFza1RleHR1cmUpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbWF0cml4LCBjb25zdCBDb2xvciYgY29sb3IpCkBAIC00NjEsNyArNDM3LDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb24KICAgICBjb2xvci5nZXRSR0JBKHIsIGcsIGIsIGEpOwogICAg
IG1fY29udGV4dDNELT51bmlmb3JtNGYocHJvZ3JhbS0+Y29sb3JMb2NhdGlvbigpLCByLCBnLCBi
LCBhKTsKIAotICAgIGRyYXdRdWFkKHJlY3QsIG1hdHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgYSA8IDEpOworICAgIGRyYXdRdWFkKHJlY3QsIG1h
dHJpeCwgcHJvZ3JhbS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgYSA8
IDEgPyBTaG91bGRCbGVuZCA6IDApOwogfQogCiBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dmlld3BvcnRNYXRyaXgoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCkKQEAgLTU0OCw3ICs1
MjQsNyBAQCBzdGF0aWMgRmxvYXRRdWFkIGluZmxhdGVRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVh
ZCwgZmxvYXQgZGlzdGFuY2UpCiAgICAgcmV0dXJuIGV4cGFuZGVkUXVhZDsKIH0KIAotYm9vbCBU
ZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2luZyh1aW50MzJfdCB0ZXh0
dXJlLCBGbGFncyBmbGFncywgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHks
IGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMp
Citib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVXaXRoQW50aWFsaWFzaW5nKHVpbnQz
Ml90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9h
dFJlY3QmIG9yaWdpbmFsVGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1Rl
eHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICAvLyBUaGUgYW50aWFsaWFzaW5n
IHBhdGggZG9lcyBub3Qgc3VwcG9ydCBtYXNrIHRleHR1cmVzIGF0IHRoZSBtb21lbnQuCiAgICAg
aWYgKG1hc2tUZXh0dXJlKQpAQCAtNTkxLDE3ICs1NjcsMjAgQEAgYm9vbCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlV2l0aEFudGlhbGlhc2luZyh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBm
bGFncywKICAgICBtX2NvbnRleHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQoKSk7
CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0zZnYocHJvZ3JhbS0+ZXhwYW5kZWRRdWFkRWRnZXNJ
blNjcmVlblNwYWNlTG9jYXRpb24oKSwgOCwgdGFyZ2V0UXVhZEVkZ2VzKTsKIAotICAgIGRyYXdU
ZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlLCBmbGFncywgRHJh
d1F1YWQob3JpZ2luYWxUYXJnZXRSZWN0LCBleHBhbmRlZFF1YWRJblRleHR1cmVDb29yZGluYXRl
cyksIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSwgMCAvKiBtYXNrVGV4dHVyZSAqLyk7CisgICAg
ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdz
LCBzaXplLCBEcmF3UXVhZChvcmlnaW5hbFRhcmdldFJlY3QsIGV4cGFuZGVkUXVhZEluVGV4dHVy
ZUNvb3JkaW5hdGVzKSwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCAwIC8qIG1hc2tUZXh0dXJl
ICovKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdU
ZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSogcHJvZ3Jh
bSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IERyYXdRdWFkJiBxdWFkVG9E
cmF3LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBv
cGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSkKK3ZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRT
aXplJiBzaXplLCBjb25zdCBEcmF3UXVhZCYgcXVhZFRvRHJhdywgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUpCiB7CiAgICAgbV9jb250ZXh0M0QtPmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KHByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOwogICAgIG1fY29udGV4dDNELT5hY3Rp
dmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgbV9jb250ZXh0M0Qt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAg
ICBHQzNEZW51bSB0YXJnZXQgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0ID8gR0Mz
RGVudW0oRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIpIDogR0MzRGVudW0oR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpOworICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVy
ZSh0YXJnZXQsIHRleHR1cmUpOwogICAgIG1fY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+
c2FtcGxlckxvY2F0aW9uKCksIDApOwogCisgICAgRmxvYXRTaXplIHNpemVQYXJhbWV0ZXIgPSBm
bGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0ID8gc2l6ZSA6IEZsb2F0U2l6ZSgxLCAxKTsK
KyAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTJmKHByb2dyYW0tPnRleHR1cmVTaXplTG9jYXRpb24o
KSwgc2l6ZVBhcmFtZXRlci53aWR0aCgpLCBzaXplUGFyYW1ldGVyLmhlaWdodCgpKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPmZsaXBMb2NhdGlvbigpLCAhIShmbGFncyAm
IFNob3VsZEZsaXBUZXh0dXJlKSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFt
LT5vcGFjaXR5TG9jYXRpb24oKSwgb3BhY2l0eSk7CiAKQEAgLTYxMyw4ICs1OTIsMTAgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbSogcHIKICAgICAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKICAgICB9CiAKLSAgICBib29sIG5lZWRzQmxl
bmRpbmcgPSAoZmxhZ3MgJiBTdXBwb3J0c0JsZW5kaW5nKSB8fCBvcGFjaXR5IDwgMC45OSB8fCBt
YXNrVGV4dHVyZTsKLSAgICBkcmF3UXVhZChxdWFkVG9EcmF3LCBtb2RlbFZpZXdNYXRyaXgsIHBy
b2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIG5lZWRzQmxlbmRpbmcpOwor
ICAgIGlmIChvcGFjaXR5IDwgMSB8fCBtYXNrVGV4dHVyZSkKKyAgICAgICAgZmxhZ3MgfD0gU2hv
dWxkQmxlbmQ7CisKKyAgICBkcmF3UXVhZChxdWFkVG9EcmF3LCBtb2RlbFZpZXdNYXRyaXgsIHBy
b2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIGZsYWdzKTsKIH0KIAogQml0
bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0woVGV4dHVyZU1hcHBlckdMKiB0ZXh0dXJlTWFw
cGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDY2NDZkYzcwYTIxODI0Yjc0ZmUxZWM2NmJjOTVi
NTEwY2QzOWMxNDAuLjg5OWRjZDYwOGVhYmI1Zjg2Nzc5MDEwNjllMjUwYmU4Nzk1MGZlZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmgKQEAgLTQzLDggKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flRleHR1cmVNYXBwZXJHTCgpOwogCiAgICAgZW51bSBGbGFnIHsKLSAgICAgICAgU3VwcG9ydHNC
bGVuZGluZyA9IDB4MDEsCi0gICAgICAgIFNob3VsZEZsaXBUZXh0dXJlID0gMHgwMgorICAgICAg
ICBTaG91bGRCbGVuZCA9IDB4MDEsCisgICAgICAgIFNob3VsZEZsaXBUZXh0dXJlID0gMHgwMiwK
KyAgICAgICAgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QgPSAweDA0CiAgICAgfTsKIAogICAgIHR5
cGVkZWYgaW50IEZsYWdzOwpAQCAtNTMsMTMgKzU0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkcmF3UmVwYWludENvdW50ZXIoaW50IHZhbHVlLCBpbnQgcG9pbnRTaXplLCBjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBt
YXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd1RleHR1cmUodWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUm
IHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1h
cFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwg
RmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBv
c2VkRWRnZXMgPSBBbGxFZGdlcyk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3Im
KSBPVkVSUklERTsKIAotI2lmICFVU0UoVEVYTUFQX09QRU5HTF9FU18yKQotICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dHVyZVJlY3RhbmdsZUFSQih1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29u
c3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
Y29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOwotI2VuZGlmCi0KICAgICB2aXJ0dWFs
IHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0
IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBh
aW50RmxhZ3MgPSAwKSBPVkVSUklERTsKQEAgLTExNyw5ICsxMTQsOSBAQCBwcml2YXRlOgogCiAg
ICAgVGV4dHVyZU1hcHBlckdMKCk7CiAKLSAgICBib29sIGRyYXdUZXh0dXJlV2l0aEFudGlhbGlh
c2luZyh1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZs
b2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBl
eHBvc2VkRWRnZXMpOwotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IERy
YXdRdWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxv
YXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOwotICAgIHZvaWQg
ZHJhd1F1YWQoY29uc3QgRHJhd1F1YWQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdp
bmdNb2RlLCBib29sIG5lZWRzQmxlbmRpbmcpOworICAgIGJvb2wgZHJhd1RleHR1cmVXaXRoQW50
aWFsaWFzaW5nKHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3Qg
RmxvYXRSZWN0JiBvcmlnaW5hbFRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1h
c2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZvaWQgZHJhd1RleHR1cmVk
UXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4
dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmLCBjb25zdCBEcmF3UXVhZCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJp
dG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKKyAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IERyYXdR
dWFkJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0qLCBHQzNEZW51bSBkcmF3aW5nTW9kZSwgRmxhZ3MpOwogCiAg
ICAgYm9vbCBiZWdpblNjaXNzb3JDbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBiaW5kRGVmYXVsdFN1cmZhY2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCmluZGV4IGQzYWVhMjZmMTNjYmFmNzYx
MWQ4ODE3YmE0MjAzNDcxZTZmNDk2NDEuLmUwNGY4NTg3MzVhMGVmMDg5MzJiZTAxY2M1NjQ2OWM0
NGNjYzUwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcApA
QCAtMTU3LDEyICsxNTcsMTMgQEAgc3RhdGljIHZvaWQgZ2V0U2hhZGVyU3BlYyhUZXh0dXJlTWFw
cGVyU2hhZGVyTWFuYWdlcjo6U2hhZGVyS2V5IGtleSwgU3RyaW5nJiB2ZXIKICAgICAgICAgU1RS
SU5HSUZZKAogICAgICAgICAgICAgdW5pZm9ybSBtYXQ0IHVfbWF0cml4OwogICAgICAgICAgICAg
dW5pZm9ybSBsb3dwIGZsb2F0IHVfZmxpcDsKKyAgICAgICAgICAgIHVuaWZvcm0gbG93cCB2ZWMy
IHVfdGV4dHVyZVNpemU7CiAgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3ZlcnRleDsKICAg
ICAgICAgICAgIHZhcnlpbmcgaGlnaHAgdmVjMiB2X3NvdXJjZVRleENvb3JkOwogICAgICAgICAg
ICAgdmFyeWluZyBoaWdocCB2ZWMyIHZfbWFza1RleENvb3JkOwogICAgICAgICAgICAgdm9pZCBt
YWluKHZvaWQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29y
ZCA9IHZlYzIoYV92ZXJ0ZXgueCwgbWl4KGFfdmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9m
bGlwKSk7CisgICAgICAgICAgICAgICAgdl9zb3VyY2VUZXhDb29yZCA9IHZlYzIoYV92ZXJ0ZXgu
eCwgbWl4KGFfdmVydGV4LnksIDEuIC0gYV92ZXJ0ZXgueSwgdV9mbGlwKSkgKiB1X3RleHR1cmVT
aXplOwogICAgICAgICAgICAgICAgIHZfbWFza1RleENvb3JkID0gdmVjMihhX3ZlcnRleCk7CiAg
ICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X21hdHJpeCAqIGFfdmVydGV4OwogICAgICAg
ICAgICAgfQpAQCAtMjQyLDEyICsyNDMsMTEgQEAgc3RhdGljIHZvaWQgZ2V0U2hhZGVyU3BlYyhU
ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6U2hhZGVyS2V5IGtleSwgU3RyaW5nJiB2ZXIKICAg
ICAgICAgU1RSSU5HSUZZKAogICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAg
ICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRFJlY3Qgc19zYW1wbGVyOwotICAgICAgICAgICAg
dW5pZm9ybSBsb3dwIHZlYzIgdV9zYW1wbGVyU2l6ZTsKICAgICAgICAgICAgIHVuaWZvcm0gbG93
cCBmbG9hdCB1X29wYWNpdHk7CiAgICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9zb3Vy
Y2VUZXhDb29yZDsKICAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGxvd3AgdmVjNCBjb2xvciA9IHRleHR1cmUyRFJlY3Qoc19zYW1wbGVy
LCB1X3NhbXBsZXJTaXplICogdl9zb3VyY2VUZXhDb29yZCk7CisgICAgICAgICAgICAgICAgbG93
cCB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEUmVjdChzX3NhbXBsZXIsIHZfc291cmNlVGV4Q29vcmQp
OwogICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IucmdiICogdV9vcGFj
aXR5LCBjb2xvci5hICogdV9vcGFjaXR5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKQEAg
LTI1NiwxMSArMjU2LDEyIEBAIHN0YXRpYyB2b2lkIGdldFNoYWRlclNwZWMoVGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXI6OlNoYWRlcktleSBrZXksIFN0cmluZyYgdmVyCiAgICAgICAgIFNUUklO
R0lGWSgKICAgICAgICAgICAgIHVuaWZvcm0gbWF0NCB1X21hdHJpeDsKICAgICAgICAgICAgIHVu
aWZvcm0gbG93cCBmbG9hdCB1X2ZsaXA7CisgICAgICAgICAgICB1bmlmb3JtIGxvd3AgdmVjMiB1
X3RleHR1cmVTaXplOwogICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV92ZXJ0ZXg7CiAgICAg
ICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9zb3VyY2VUZXhDb29yZDsKICAgICAgICAgICAg
IHZvaWQgbWFpbih2b2lkKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZfc291cmNl
VGV4Q29vcmQgPSB2ZWMyKGFfdmVydGV4LngsIG1peChhX3ZlcnRleC55LCAxLiAtIGFfdmVydGV4
LnksIHVfZmxpcCkpOworICAgICAgICAgICAgICAgIHZfc291cmNlVGV4Q29vcmQgPSB2ZWMyKGFf
dmVydGV4LngsIG1peChhX3ZlcnRleC55LCAxLiAtIGFfdmVydGV4LnksIHVfZmxpcCkpICogdV90
ZXh0dXJlU2l6ZTsKICAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHVfbWF0cml4ICogYV92
ZXJ0ZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5oCmluZGV4IDQ5NmI3ZTgxYjEyNjM2ZmQyYTlmZGZlZjcxMjg2ZmE4ZDgw
ZjhhYzYuLjYwNjA1ZjQyZDBlMzIzODdjNDJhNGZkZDA1MzE0MjdlMDRhZDcyMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKIAogICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0obWF0cml4KQogICAgIFRFWE1BUF9ERUNM
QVJFX1VOSUZPUk0oZmxpcCkKLSAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKHNhbXBsZXJTaXpl
KQorICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0odGV4dHVyZVNpemUpCiAgICAgVEVYTUFQX0RF
Q0xBUkVfVU5JRk9STShvcGFjaXR5KQogICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oY29sb3Ip
CiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShleHBhbmRlZFF1YWRFZGdlc0luU2NyZWVuU3Bh
Y2UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>