<?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>101382</bug_id>
          
          <creation_ts>2012-11-06 12:36:06 -0800</creation_ts>
          <short_desc>[WK2] Print preview should vend images to the UIProcess instead of PDFs</short_desc>
          <delta_ts>2012-11-08 12:48:25 -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>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>adele</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>759959</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-06 12:36:06 -0800</bug_when>
    <thetext>To achieve this, I&apos;m going to have the plugin vend print-preview bitmaps to the UIProcess to draw when previewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759960</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-06 12:36:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/9866766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761054</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-07 14:26:18 -0800</bug_when>
    <thetext>Retitling based on clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761066</commentid>
    <comment_count>3</comment_count>
      <attachid>172874</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-07 14:40:51 -0800</bug_when>
    <thetext>Created attachment 172874
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761068</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 14:42:51 -0800</bug_when>
    <thetext>Attachment 172874 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/GenericCallback.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761126</commentid>
    <comment_count>5</comment_count>
      <attachid>172874</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-07 15:53:50 -0800</bug_when>
    <thetext>Comment on attachment 172874
patch

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

Looks great!

You might want to additionally run this by Sam or Anders.

&gt; Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm:218
&gt; +    // If the user has already changed print setup, then this response is obsolete. And this callback is not in response to the latest request,

I think that there is something wrong with grammar of this moved comment.

&gt; Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm:474
&gt; +    HashMap&lt;WebCore::IntRect, RefPtr&lt;WebImage&gt; &gt;::iterator pagePreviewIterator = _pagePreviews.find(rect);

WebImage looks like an API type that shouldn&apos;t be used here.

&gt; Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm:517
&gt; +    const IntRect&amp; imageBounds = imageData-&gt;bitmap()-&gt;bounds();

Does this const reference buy us any performance over a plain IntRect (not that this code is performance critical anyway)?

&gt; Source/WebKit2/UIProcess/GenericCallback.h:237
&gt; +    : CallbackBase(context)
&gt; +    , m_callback(callback)

Indentation.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3198
&gt; +            drawRectToPDFFromPDFDocument(graphicsContext-&gt;platformContext(), pdfDocument.get(), printInfo, rect);

Please rename this function.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3203
&gt; +            image = scaledSnapshotWithOptions(rect, 1.0, SnapshotOptionsShareable | SnapshotOptionsExcludeSelectionHighlighting);

Style nit: 1, not 1.0.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3209
&gt; +    if (!image)
&gt; +        return;

UI process needs its response back!

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3212
&gt; +    image-&gt;bitmap()-&gt;createHandle(handle);

This creates a read-write handle. I wonder why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761286</commentid>
    <comment_count>6</comment_count>
      <attachid>172917</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-07 19:30:27 -0800</bug_when>
    <thetext>Created attachment 172917
address ap&apos;s comments

Have an r+ from Alexey, would like at least a cursory review from Sam or Anders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761288</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 19:32:26 -0800</bug_when>
    <thetext>Attachment 172917 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/mac/WKPrintingView.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762083</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-08 12:48:25 -0800</bug_when>
    <thetext>Thanks, all!

http://trac.webkit.org/changeset/133935</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172874</attachid>
            <date>2012-11-07 14:40:51 -0800</date>
            <delta_ts>2012-11-07 15:53:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>printpreview.diff</filename>
            <type>text/plain</type>
            <size>21493</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0ZWZlYWM1Li4wZWRkZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTItMTEtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gUHJpbnQgcHJldmlldyBzaG91bGQgdmVuZCBpbWFnZXMgdG8gdGhlIFVJ
UHJvY2VzcyBpbnN0ZWFkIG9mIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTM4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTg2Njc2Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGUg
aW50ZXJlc3RzIG9mIGtlZXBpbmcgUERGIHByb2Nlc3NpbmcgaW5zaWRlIHRoZSBXZWJQcm9jZXNz
LCB3ZSBzaG91bGQKKyAgICAgICAgcmVtb3ZlIHByaW50IHByZXZpZXcncyByZWxpYW5jZSBvbiBQ
REZzLCBieSBoYW5kaW5nIGJpdG1hcHMgYmFjayBpbnN0ZWFkLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcuaDoKKyAgICAgICAgKFdlYkltYWdlKTogU3RvcmUg
V2ViSW1hZ2VzIGluc3RlYWQgb2YgcmF3IFBERiBkYXRhIGZvciBwcmV2aWV3cy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5tbToKKyAgICAgICAgKHBhZ2VEaWRE
cmF3VG9JbWFnZSk6IEFkZCBhIGNhbGxiYWNrIGZvciB3aGVuIGEgcHJldmlldyB3ZSd2ZSByZXF1
ZXN0ZWQgaXMgZG9uZSByZW5kZXJpbmcgaW50byBhbiBpbWFnZS4KKyAgICAgICAgQ2FjaGUgdGhl
IGltYWdlIGluIF9wYWdlUHJldmlld3MgaWYgYXBwcm9wcmlhdGUuCisgICAgICAgIChwYWdlRGlk
RHJhd1RvUERGKTogRG8gbm90IGhhbmRsZSBQREYgZGF0YSB1bmxlc3Mgd2UgYXJlIGV4cGVjdGlu
ZyBhIHJlYWwgcHJpbnQgY2FsbGJhY2sgKG5vdCBhIHByZXZpZXcpLgorICAgICAgICAoLVtXS1By
aW50aW5nVmlldyBfZHJhd1ByZXZpZXc6XSk6IFJlcXVlc3QgYW4gaW1hZ2UgaW5zdGVhZCBvZiBQ
REYgZGF0YSB3aGVuIGRvaW5nIGEgcHJpbnQgcHJldmlldy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
R2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChJbWFnZUNhbGxiYWNrKTogQWRkIGEgY2FsbGJh
Y2sgdHlwZSB3aXRoIG9uZSBhcmd1bWVudDogYSBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZS4KKyAg
ICAgICAgSSBjYW4ndCB1c2UgdGhlIEdlbmVyaWNDYWxsYmFjayB0ZW1wbGF0ZSBiZWNhdXNlIFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgV0sgdHlw
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6IEFkZCBzdXBwb3J0IGZvciBJbWFnZUNhbGxiYWNrLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmltYWdlQ2FsbGJhY2spOiBBZGQgc3VwcG9y
dCBmb3IgSW1hZ2VDYWxsYmFjay4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3
UmVjdFRvSW1hZ2UpOiBSZW5hbWUgZHJhd1JlY3RUb1BERiB0byBkcmF3UmVjdFRvSW1hZ2UuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViUGFnZVByb3h5
KTogUmVuYW1lIGRyYXdSZWN0VG9QREYgdG8gZHJhd1JlY3RUb0ltYWdlLCBhZGQgc3VwcG9ydCBm
b3IgSW1hZ2VDYWxsYmFjay4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOiBBZGQgc3VwcG9ydCBmb3IgSW1hZ2VDYWxsYmFjay4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdS
ZWN0VG9JbWFnZSk6IFJlbmFtZSBkcmF3UmVjdFRvUERGIHRvIGRyYXdSZWN0VG9JbWFnZS4KKyAg
ICAgICAgTWFrZSBkcmF3UmVjdFRvSW1hZ2UgY3JlYXRlIGEgYml0bWFwIHNuYXBzaG90IG9mIHRo
ZSBwYWdlICh1c2luZyB0aGUgbm9ybWFsIHNuYXBzaG90dGluZyBjb2RlKSwKKyAgICAgICAgb3Is
IGlmIHRoZSBwYWdlIGlzIGJhY2tlZCBieSBhICpQREZQbHVnaW4sIGRyYXcgdGhlIFBERiBkb2N1
bWVudCBpbnRvIGEgYml0bWFwIGFuZCB1c2UgdGhhdC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6IFJlbmFtZSBkcmF3UmVjdFRvUERG
IHRvIGRyYXdSZWN0VG9JbWFnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjogUmVuYW1lIGRyYXdSZWN0VG9QREYgdG8gZHJhd1JlY3RUb0ltYWdlLgor
CiAyMDEyLTExLTA1ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBbRUZMXVtXSzJdIEZpeCB3cm9uZyBjb2Rpbmcgc3R5bGUgaW4gdGhlIGJvaWxlcnBs
YXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmlu
dGluZ1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdW
aWV3LmgKaW5kZXggY2QzYjFmOS4uY2JiMjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5oCkBAIC0zMSw2ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgIGNsYXNzIFdlYkZyYW1lUHJveHk7CisgICAgY2xhc3MgV2Vi
SW1hZ2U7CiB9CiAKIEBpbnRlcmZhY2UgV0tQcmludGluZ1ZpZXcgOiBOU1ZpZXcgewpAQCAtNDEs
NyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJGcmFt
ZVByb3h5PiBfd2ViRnJhbWU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IF9wcmludGlu
Z1BhZ2VSZWN0czsKICAgICBkb3VibGUgX3RvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZzsKLSAg
ICBIYXNoTWFwPFdlYkNvcmU6OkludFJlY3QsIFZlY3Rvcjx1aW50OF90PiA+IF9wYWdlUHJldmll
d3M7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpJbnRSZWN0LCBSZWZQdHI8V2ViS2l0OjpXZWJJbWFn
ZT4gPiBfcGFnZVByZXZpZXdzOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IF9wcmludGVkUGFnZXNE
YXRhOwogICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gX3ByaW50ZWRQYWdlc1BERkRvY3VtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGlu
Z1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmll
dy5tbQppbmRleCBjYTFjYWQ1Li5kMTc3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5tbQpAQCAtMzAsOCArMzAsMTAgQEAKICNp
bXBvcnQgIlBERktpdEltcG9ydHMuaCIKICNpbXBvcnQgIlByaW50SW5mby5oIgogI2ltcG9ydCAi
V2ViRGF0YS5oIgorI2ltcG9ydCAiV2ViSW1hZ2UuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgogI2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTIwNSw2ICsyMDcsMzIgQEAgc3RydWN0IElQQ0NhbGxi
YWNrQ29udGV4dCB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRDsKIH07CiAKK3N0YXRpYyB2b2lk
IHBhZ2VEaWREcmF3VG9JbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VI
YW5kbGUsIFdLRXJyb3JSZWYsIHZvaWQqIHVudHlwZWRDb250ZXh0KQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBPd25QdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0
ID0gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8SVBDQ2FsbGJhY2tDb250ZXh0Kj4odW50eXBlZENvbnRl
eHQpKTsKKyAgICBXS1ByaW50aW5nVmlldyAqdmlldyA9IGNvbnRleHQtPnZpZXcuZ2V0KCk7Cisg
ICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoaW1hZ2VIYW5kbGUpLmdldCgpKTsKKworICAgIC8vIElmIHRoZSB1c2VyIGhh
cyBhbHJlYWR5IGNoYW5nZWQgcHJpbnQgc2V0dXAsIHRoZW4gdGhpcyByZXNwb25zZSBpcyBvYnNv
bGV0ZS4gQW5kIHRoaXMgY2FsbGJhY2sgaXMgbm90IGluIHJlc3BvbnNlIHRvIHRoZSBsYXRlc3Qg
cmVxdWVzdCwKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGhhcyBhbHJlYWR5IG1vdmVkIHRvIGFub3Ro
ZXIgcGFnZSAtIHdlJ2xsIGNhY2hlIHRoZSByZXNwb25zZSwgYnV0IHdvbid0IGRyYXcgaXQuCisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViQ29yZTo6SW50UmVjdD46Oml0ZXJhdG9yIGl0ZXIgPSB2
aWV3LT5fZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLmZpbmQoY29udGV4dC0+Y2FsbGJhY2tJRCk7
CisgICAgaWYgKGl0ZXIgIT0gdmlldy0+X2V4cGVjdGVkUHJldmlld0NhbGxiYWNrcy5lbmQoKSkg
eworICAgICAgICBBU1NFUlQoW3ZpZXcgX2lzUHJpbnRpbmdQcmV2aWV3XSk7CisKKyAgICAgICAg
aWYgKGltYWdlKQorICAgICAgICAgICAgdmlldy0+X3BhZ2VQcmV2aWV3cy5hZGQoaXRlci0+dmFs
dWUsIGltYWdlKTsKKworICAgICAgICB2aWV3LT5fZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLnJl
bW92ZShjb250ZXh0LT5jYWxsYmFja0lEKTsKKyAgICAgICAgYm9vbCByZWNlaXZlZFJlc3BvbnNl
VG9MYXRlc3RSZXF1ZXN0ID0gdmlldy0+X2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID09
IGNvbnRleHQtPmNhbGxiYWNrSUQ7CisgICAgICAgIGlmIChyZWNlaXZlZFJlc3BvbnNlVG9MYXRl
c3RSZXF1ZXN0KSB7CisgICAgICAgICAgICB2aWV3LT5fbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2Fs
bGJhY2sgPSAwOworICAgICAgICAgICAgW3ZpZXcgX3VwZGF0ZVByZXZpZXddOworICAgICAgICB9
CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBwYWdlRGlkRHJhd1RvUERGKFdLRGF0YVJlZiBkYXRh
UmVmLCBXS0Vycm9yUmVmLCB2b2lkKiB1bnR5cGVkQ29udGV4dCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpAQCAtMjIxLDI0ICsyNDksNiBAQCBzdGF0aWMgdm9pZCBwYWdlRGlkRHJh
d1RvUERGKFdLRGF0YVJlZiBkYXRhUmVmLCBXS0Vycm9yUmVmLCB2b2lkKiB1bnR5cGVkQ29udGV4
dAogICAgICAgICAgICAgdmlldy0+X3ByaW50ZWRQYWdlc0RhdGEuYXBwZW5kKGRhdGEtPmJ5dGVz
KCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIHZpZXctPl9leHBlY3RlZFByaW50Q2FsbGJhY2sg
PSAwOwogICAgICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5zaWduYWwoKTsK
LSAgICB9IGVsc2UgewotICAgICAgICAvLyBJZiB0aGUgdXNlciBoYXMgYWxyZWFkeSBjaGFuZ2Vk
IHByaW50IHNldHVwLCB0aGVuIHRoaXMgcmVzcG9uc2UgaXMgb2Jzb2xldGUuIEFuZCB0aGlzIGNh
bGxiYWNrIGlzIG5vdCBpbiByZXNwb25zZSB0byB0aGUgbGF0ZXN0IHJlcXVlc3QsCi0gICAgICAg
IC8vIHRoZW4gdGhlIHVzZXIgaGFzIGFscmVhZHkgbW92ZWQgdG8gYW5vdGhlciBwYWdlIC0gd2Un
bGwgY2FjaGUgdGhlIHJlc3BvbnNlLCBidXQgd29uJ3QgZHJhdyBpdC4KLSAgICAgICAgSGFzaE1h
cDx1aW50NjRfdCwgV2ViQ29yZTo6SW50UmVjdD46Oml0ZXJhdG9yIGl0ZXIgPSB2aWV3LT5fZXhw
ZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLmZpbmQoY29udGV4dC0+Y2FsbGJhY2tJRCk7Ci0gICAgICAg
IGlmIChpdGVyICE9IHZpZXctPl9leHBlY3RlZFByZXZpZXdDYWxsYmFja3MuZW5kKCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChbdmlldyBfaXNQcmludGluZ1ByZXZpZXddKTsKLQotICAgICAgICAg
ICAgaWYgKGRhdGEpIHsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkludFJlY3Qs
IFZlY3Rvcjx1aW50OF90PiA+OjpBZGRSZXN1bHQgZW50cnkgPSB2aWV3LT5fcGFnZVByZXZpZXdz
LmFkZChpdGVyLT52YWx1ZSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOwotICAgICAgICAgICAgICAgIGVu
dHJ5Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZpZXctPl9leHBlY3RlZFByZXZpZXdDYWxsYmFj
a3MucmVtb3ZlKGNvbnRleHQtPmNhbGxiYWNrSUQpOwotICAgICAgICAgICAgYm9vbCByZWNlaXZl
ZFJlc3BvbnNlVG9MYXRlc3RSZXF1ZXN0ID0gdmlldy0+X2xhdGVzdEV4cGVjdGVkUHJldmlld0Nh
bGxiYWNrID09IGNvbnRleHQtPmNhbGxiYWNrSUQ7Ci0gICAgICAgICAgICBpZiAocmVjZWl2ZWRS
ZXNwb25zZVRvTGF0ZXN0UmVxdWVzdCkgewotICAgICAgICAgICAgICAgIHZpZXctPl9sYXRlc3RF
eHBlY3RlZFByZXZpZXdDYWxsYmFjayA9IDA7Ci0gICAgICAgICAgICAgICAgW3ZpZXcgX3VwZGF0
ZVByZXZpZXddOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogfQogCkBAIC00NjEs
NyArNDcxLDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5
VGhyZWFkKHZvaWQqIHVudHlwZWRDb250ZXh0KQogCiAgICAgSW50UmVjdCByZWN0KG5zUmVjdCk7
CiAgICAgcmVjdC5zY2FsZSgxIC8gX3RvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7Ci0gICAg
SGFzaE1hcDxXZWJDb3JlOjpJbnRSZWN0LCBWZWN0b3I8dWludDhfdD4gPjo6aXRlcmF0b3IgcGFn
ZVByZXZpZXdJdGVyYXRvciA9IF9wYWdlUHJldmlld3MuZmluZChyZWN0KTsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OkludFJlY3QsIFJlZlB0cjxXZWJJbWFnZT4gPjo6aXRlcmF0b3IgcGFnZVByZXZp
ZXdJdGVyYXRvciA9IF9wYWdlUHJldmlld3MuZmluZChyZWN0KTsKICAgICBpZiAocGFnZVByZXZp
ZXdJdGVyYXRvciA9PSBfcGFnZVByZXZpZXdzLmVuZCgpKSAgewogICAgICAgICAvLyBJdCdzIHRv
byBlYXJseSB0byBhc2sgZm9yIHBhZ2UgcHJldmlldyBpZiB3ZSBkb24ndCBldmVuIGtub3cgcGFn
ZSBzaXplIGFuZCBzY2FsZS4KICAgICAgICAgaWYgKFtzZWxmIF9oYXNQYWdlUmVjdHNdKSB7CkBA
IC00NzgsMTQgKzQ4OCwxNCBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlRGF0YUZvclByaW50aW5nT25T
ZWNvbmRhcnlUaHJlYWQodm9pZCogdW50eXBlZENvbnRleHQpCiAgICAgICAgICAgICAgICAgX3dl
YkZyYW1lLT5wYWdlKCktPmJlZ2luUHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8o
W19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKSk7CiAKICAgICAgICAgICAgICAgICBJUENDYWxs
YmFja0NvbnRleHQqIGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgICAgICAg
ICAgICAgIFJlZlB0cjxEYXRhQ2FsbGJhY2s+IGNhbGxiYWNrID0gRGF0YUNhbGxiYWNrOjpjcmVh
dGUoY29udGV4dCwgcGFnZURpZERyYXdUb1BERik7CisgICAgICAgICAgICAgICAgUmVmUHRyPElt
YWdlQ2FsbGJhY2s+IGNhbGxiYWNrID0gSW1hZ2VDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIHBh
Z2VEaWREcmF3VG9JbWFnZSk7CiAgICAgICAgICAgICAgICAgX2xhdGVzdEV4cGVjdGVkUHJldmll
d0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICAgICAgICAgICAgICBfZXhw
ZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLmFkZChfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2ss
IHJlY3QpOwogCiAgICAgICAgICAgICAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAK
LSAgICAgICAgICAgICAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1JlY3RUb1BERihfd2ViRnJh
bWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHByaW50SW5mb10pLCByZWN0LCBj
YWxsYmFjay5nZXQoKSk7CisgICAgICAgICAgICAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdS
ZWN0VG9JbWFnZShfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHBy
aW50SW5mb10pLCByZWN0LCBjYWxsYmFjay5nZXQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00OTQsMTEgKzUwNCwyMCBAQCBzdGF0aWMg
dm9pZCBwcmVwYXJlRGF0YUZvclByaW50aW5nT25TZWNvbmRhcnlUaHJlYWQodm9pZCogdW50eXBl
ZENvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHBkZkRhdGFCeXRlcyA9IHBhZ2VQcmV2aWV3SXRlcmF0b3ItPnZhbHVlOwotICAgIFJl
dGFpblB0cjxOU0RhdGE+IHBkZkRhdGEoQWRvcHROUywgW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6cGRmRGF0YUJ5dGVzLmRhdGEoKSBsZW5ndGg6cGRmRGF0YUJ5dGVzLnNpemUoKV0pOwot
ICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQoQWRvcHROUywgW1twZGZEb2N1
bWVudENsYXNzKCkgYWxsb2NdIGluaXRXaXRoRGF0YTpwZGZEYXRhLmdldCgpXSk7CisgICAgUmVm
UHRyPFdlYkltYWdlPiBpbWFnZURhdGEgPSBwYWdlUHJldmlld0l0ZXJhdG9yLT52YWx1ZTsKKyAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q0dDb250ZXh0UmVmPihbW05T
R3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdKTsKKworICAgIEdy
YXBoaWNzQ29udGV4dCBjb250ZXh0KGNnQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworCisgICAgY29udGV4dC50cmFuc2xhdGUobnNS
ZWN0Lm9yaWdpbi54LCBuc1JlY3Qub3JpZ2luLnkpOworICAgIGNvbnRleHQuc2NhbGUoRmxvYXRT
aXplKF90b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIF90b3RhbFNjYWxlRmFjdG9yRm9yUHJp
bnRpbmcpKTsKKworICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZ2V0IHRoZSBXZWJQYWdlJ3MgZGV2
aWNlU2NhbGVGYWN0b3IgZnJvbSBoZXJlIGluc3RlYWQ/CisgICAgY29uc3QgSW50UmVjdCYgaW1h
Z2VCb3VuZHMgPSBpbWFnZURhdGEtPmJpdG1hcCgpLT5ib3VuZHMoKTsKKyAgICBmbG9hdCBpbWFn
ZVNjYWxlRmFjdG9yID0gaW1hZ2VCb3VuZHMud2lkdGgoKSAvIHJlY3Qud2lkdGgoKTsKIAotICAg
IFtzZWxmIF9kcmF3UERGRG9jdW1lbnQ6cGRmRG9jdW1lbnQuZ2V0KCkgcGFnZTowIGF0UG9pbnQ6
TlNNYWtlUG9pbnQobnNSZWN0Lm9yaWdpbi54LCBuc1JlY3Qub3JpZ2luLnkpXTsKKyAgICBpbWFn
ZURhdGEtPmJpdG1hcCgpLT5wYWludChjb250ZXh0LCBpbWFnZVNjYWxlRmFjdG9yLCBJbnRQb2lu
dCgpLCBpbWFnZUJvdW5kcyk7CiB9CiAKIC0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdCluc1JlY3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAppbmRleCA1YjZhMGY5
Li43NWE1NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0Nh
bGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAorI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYkVycm9yLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTk1LDYgKzE5Niw1
MSBAQCBwcml2YXRlOgogICAgIENhbGxiYWNrRnVuY3Rpb24gbV9jYWxsYmFjazsKIH07CiAKK2Ns
YXNzIEltYWdlQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIHZvaWQgKCpDYWxsYmFja0Z1bmN0aW9uKShjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdl
Q2FsbGJhY2s+IGNyZWF0ZSh2b2lkKiBjb250ZXh0LCBDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUNhbGxiYWNrKGNvbnRl
eHQsIGNhbGxiYWNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SW1hZ2VDYWxsYmFjaygpCisg
ICAgeworICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2spOworICAgIH0KKworICAgIHZvaWQgcGVy
Zm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiByZXR1cm5WYWx1ZTEpCisgICAgeworICAgICAgICBBU1NFUlQobV9jYWxsYmFjayk7CisKKyAg
ICAgICAgbV9jYWxsYmFjayhyZXR1cm5WYWx1ZTEsIDAsIGNvbnRleHQoKSk7CisKKyAgICAgICAg
bV9jYWxsYmFjayA9IDA7CisgICAgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKworICAgICAgICBSZWZQdHI8V2ViRXJyb3I+IGVy
cm9yID0gV2ViRXJyb3I6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSBoYW5kbGU7CisgICAgICAgIG1fY2FsbGJhY2soaGFuZGxlLCB0b0FQSShlcnJvci5nZXQoKSks
IGNvbnRleHQoKSk7CisKKyAgICAgICAgbV9jYWxsYmFjayA9IDA7CisgICAgfQorCitwcml2YXRl
OgorCisgICAgSW1hZ2VDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBDYWxsYmFja0Z1bmN0aW9uIGNh
bGxiYWNrKQorICAgIDogQ2FsbGJhY2tCYXNlKGNvbnRleHQpCisgICAgLCBtX2NhbGxiYWNrKGNh
bGxiYWNrKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ2FsbGJhY2tGdW5jdGlvbiBtX2NhbGxi
YWNrOworfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNr
TWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBtYXApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDI0ZDMyNjguLjA0ZTdkMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00ODQsNiArNDg0LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3ZvaWRD
YWxsYmFja3MpOwogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2RhdGFDYWxsYmFja3MpOwor
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2ltYWdlQ2FsbGJhY2tzKTsKICAgICBpbnZhbGlk
YXRlQ2FsbGJhY2tNYXAobV9zdHJpbmdDYWxsYmFja3MpOwogICAgIG1fbG9hZERlcGVuZGVudFN0
cmluZ0NhbGxiYWNrSURzLmNsZWFyKCk7CiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fc2Ny
aXB0VmFsdWVDYWxsYmFja3MpOwpAQCAtMzQ2Myw2ICszNDY0LDE3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVy
ZW5jZSwgdWluCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShX
ZWJEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgp
KS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjppbWFnZUNhbGxiYWNrKGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit7CisgICAgUmVmUHRyPEltYWdlQ2FsbGJhY2s+IGNhbGxiYWNrID0gbV9pbWFnZUNhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpOworICAgIGlmICghY2FsbGJhY2spIHsKKyAgICAgICAgLy8gRklY
TUU6IExvZyBlcnJvciBvciBhc3NlcnQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
YWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGJpdG1hcEhhbmRsZSk7Cit9
CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3Vs
dFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U3RyaW5nQ2FsbGJh
Y2s+IGNhbGxiYWNrID0gbV9zdHJpbmdDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKQEAgLTM5
OTMsMTcgKzQwMDUsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KIH0KIAogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9Q
REYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgUGFzc1JlZlB0
cjxJbWFnZUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8RGF0YUNhbGxiYWNr
PiBjYWxsYmFjayA9IHBycENhbGxiYWNrOworICAgIFJlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxs
YmFjayA9IHBycENhbGxiYWNrOwogICAgIGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxi
YWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9kYXRhQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvUERGKGZyYW1lLT5mcmFtZUlEKCksIHBy
aW50SW5mbywgcmVjdCwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBtX2lzUGVyZm9ybWluZ0RPTVBy
aW50T3BlcmF0aW9uID8gQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9y
U3luY1JlcGx5IDogMCk7CisgICAgbV9pbWFnZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2Fs
bGJhY2suZ2V0KCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJh
d1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlELCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uID8gQ29yZUlQQzo6
RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogMCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwg
UGFzc1JlZlB0cjxEYXRhQ2FsbGJhY2s+IHBycENhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI4ZTM0YmMuLmM3ZjI5ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY4OSw3ICs2ODksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbmRQcmludGluZygpOwogICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFBhc3NSZWZQdHI8Q29tcHV0ZWRQYWdl
c0NhbGxiYWNrPik7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCi0gICAgdm9p
ZCBkcmF3UmVjdFRvUERGKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxEYXRhQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGRy
YXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8SW1hZ2VDYWxsYmFjaz4pOwogICAgIHZvaWQgZHJh
d1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgUGFzc1JlZlB0cjxEYXRhQ2FsbGJhY2s+KTsKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBQcmludEluZm8mLCBQYXNzUmVmUHRyPFByaW50RmluaXNoZWRDYWxsYmFjaz4pOwpA
QCAtOTY1LDYgKzk2NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50
NjRfdCk7CiAgICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5j
ZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBT
dHJpbmcmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IENv
cmVJUEM6OkRhdGFSZWZlcmVuY2UmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBjb21wdXRlZFBhZ2Vz
Q2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2Nh
bGVGYWN0b3JGb3JQcmludGluZywgdWludDY0X3QpOwpAQCAtMTA2NSw2ICsxMDY2LDcgQEAgcHJp
dmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+ID4gbV92
b2lkQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEYXRhQ2FsbGJhY2s+
ID4gbV9kYXRhQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbWFnZUNh
bGxiYWNrPiA+IG1faW1hZ2VDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFN0cmluZ0NhbGxiYWNrPiA+IG1fc3RyaW5nQ2FsbGJhY2tzOwogICAgIEhhc2hTZXQ8dWludDY0
X3Q+IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzOwogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxTY3JpcHRWYWx1ZUNhbGxiYWNrPiA+IG1fc2NyaXB0VmFsdWVDYWxsYmFja3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAxOTdmMjBkLi5iNDNjOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE2NSw2ICsxNjUsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKICAgICBWb2lkQ2Fs
bGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBEYXRhQ2FsbGJhY2soQ29yZUlQQzo6RGF0
YVJlZmVyZW5jZSByZXN1bHREYXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEltYWdlQ2Fs
bGJhY2soV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRtYXBIYW5kbGUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiAgICAgU3RyaW5nQ2FsbGJhY2soV1RGOjpTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIENv
bXB1dGVkUGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBk
b3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDIz
MTJlODQuLjNiOGUwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTMxNzQsMTIgKzMxNzQsMTIgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRl
UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW4KIH0KIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQotdm9pZCBXZWJQYWdl
OjpkcmF3UmVjdFRvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVk
KCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lID8gZnJh
bWUtPmNvcmVGcmFtZSgpIDogMDsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBw
ZGZQYWdlRGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICBSZWZQ
dHI8V2ViSW1hZ2U+IGltYWdlOwogCiAjaWYgVVNFKENHKQogICAgIGlmIChjb3JlRnJhbWUpIHsK
QEAgLTMxODgsMzQgKzMxODgsMzAgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvUERGKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdAogI2Vsc2UKICAg
ICAgICAgQVNTRVJUKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSk7CiAjZW5kaWYK
LQotICAgICAgICAvLyBGSVhNRTogVXNlIENHRGF0YUNvbnN1bWVyQ3JlYXRlIHdpdGggY2FsbGJh
Y2tzIHRvIGF2b2lkIGNvcHlpbmcgdGhlIGRhdGEuCi0gICAgICAgIFJldGFpblB0cjxDR0RhdGFD
b25zdW1lclJlZj4gcGRmRGF0YUNvbnN1bWVyKEFkb3B0Q0YsIENHRGF0YUNvbnN1bWVyQ3JlYXRl
V2l0aENGRGF0YShwZGZQYWdlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgIENHUmVjdCBtZWRpYUJv
eCA9IENHUmVjdE1ha2UoMCwgMCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICAg
ICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dChBZG9wdENGLCBDR1BERkNvbnRleHRD
cmVhdGUocGRmRGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIDApKTsKLSAgICAgICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGFnZUluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgICAgIENHUERGQ29udGV4dEJlZ2luUGFn
ZShjb250ZXh0LmdldCgpLCBwYWdlSW5mby5nZXQoKSk7Ci0KICNpZiBQTEFURk9STShNQUMpCiAg
ICAgICAgIGlmIChSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50ID0gcGRmRG9jdW1l
bnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9w
cmludENvbnRleHQpOwotICAgICAgICAgICAgZHJhd1JlY3RUb1BERkZyb21QREZEb2N1bWVudChj
b250ZXh0LmdldCgpLCBwZGZEb2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKKyAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKHJlY3Quc2l6ZSgpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxw
aGEpOworICAgICAgICAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0
ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnRyYW5zbGF0ZSgwLCAtcmVjdC5oZWlnaHQoKSk7CisgICAgICAgICAgICBkcmF3UmVj
dFRvUERGRnJvbVBERkRvY3VtZW50KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IHBkZkRvY3VtZW50LmdldCgpLCBwcmludEluZm8sIHJlY3QpOworICAgICAgICAgICAgaW1hZ2Ug
PSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlKCkpOwogICAgICAgICB9IGVsc2UKICNl
bmRpZgogICAgICAgICB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNvbnRleHQu
Z2V0KCkpOwotICAgICAgICAgICAgY3R4LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAg
ICAgICAgY3R4LnRyYW5zbGF0ZSgwLCAtcmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX3By
aW50Q29udGV4dC0+c3Bvb2xSZWN0KGN0eCwgcmVjdCk7CisgICAgICAgICAgICBpbWFnZSA9IHNj
YWxlZFNuYXBzaG90V2l0aE9wdGlvbnMocmVjdCwgMS4wLCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFi
bGUgfCBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKTsKICAgICAg
ICAgfQotCi0gICAgICAgIENHUERGQ29udGV4dEVuZFBhZ2UoY29udGV4dC5nZXQoKSk7Ci0gICAg
ICAgIENHUERGQ29udGV4dENsb3NlKGNvbnRleHQuZ2V0KCkpOwogICAgIH0KICNlbmRpZgogCi0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soQ29yZUlQQzo6RGF0
YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0
TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSksIGNhbGxiYWNrSUQpKTsKKyAgICBpZiAoIWltYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7
CisgICAgaW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50
LCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggZWFmYzg3MS4uYjYwZTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01MTgsNyArNTE4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5n
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQotICAgIHZvaWQgZHJhd1JlY3RU
b1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNv
dW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IGRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAwOTMzYWExLi5iYmY2YTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtMjE3LDcgKzIxNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAg
IEVuZFByaW50aW5nKCkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFt
ZUlELCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAj
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCi0gICAgRHJhd1JlY3RUb1BERih1aW50
NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNvcmU6OkludFJl
Y3QgcmVjdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBEcmF3UmVjdFRvSW1hZ2UodWludDY0
X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0
IHJlY3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWlu
dDMyX3QgY291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShH
VEspCg==
</data>
<flag name="review"
          id="187355"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="187373"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172917</attachid>
            <date>2012-11-07 19:30:27 -0800</date>
            <delta_ts>2012-11-08 12:40:29 -0800</delta_ts>
            <desc>address ap&apos;s comments</desc>
            <filename>printpreview.diff</filename>
            <type>text/plain</type>
            <size>25896</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwMDI3YzVkLi5kMzdjZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTItMTEtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gUHJpbnQgcHJldmlldyBzaG91bGQgdmVuZCBpbWFnZXMgdG8gdGhlIFVJ
UHJvY2VzcyBpbnN0ZWFkIG9mIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTM4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTg2Njc2Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGUg
aW50ZXJlc3RzIG9mIGtlZXBpbmcgUERGIHByb2Nlc3NpbmcgaW5zaWRlIHRoZSBXZWJQcm9jZXNz
LCB3ZSBzaG91bGQKKyAgICAgICAgcmVtb3ZlIHByaW50IHByZXZpZXcncyByZWxpYW5jZSBvbiBQ
REZzLCBieSBoYW5kaW5nIGJpdG1hcHMgYmFjayBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKTogQWRkIGFuIG9wdGlvbmFsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBhcmd1bWVu
dCwgc28gd2UgY2FuIG1ha2UKKyAgICAgICAgU2hhcmVhYmxlQml0bWFwcyBmcm9tIHJlYWQtb25s
eSBoYW5kbGVzIGlmIGRlc2lyZWQuIERlZmF1bHRzIHRvIHJlYWQtd3JpdGUgYXMgcHJldmlvdXNs
eS4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUpOiBBZGQg
YW4gb3B0aW9uYWwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIGFyZ3VtZW50LCBzbyB3ZSBjYW4g
bWFrZQorICAgICAgICByZWFkLW9ubHkgaGFuZGxlcyBpZiBkZXNpcmVkLiBEZWZhdWx0cyB0byBy
ZWFkLXdyaXRlIGFzIHByZXZpb3VzbHkuCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lmg6CisgICAg
ICAgIChXZWJJbWFnZSk6IFN0b3JlIFdlYkltYWdlcyBpbnN0ZWFkIG9mIHJhdyBQREYgZGF0YSBm
b3IgcHJldmlld3MuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcu
bW06CisgICAgICAgIChwYWdlRGlkRHJhd1RvSW1hZ2UpOiBBZGQgYSBjYWxsYmFjayBmb3Igd2hl
biBhIHByZXZpZXcgd2UndmUgcmVxdWVzdGVkIGlzIGRvbmUgcmVuZGVyaW5nIGludG8gYW4gaW1h
Z2UuCisgICAgICAgIENhY2hlIHRoZSBpbWFnZSBpbiBfcGFnZVByZXZpZXdzIGlmIGFwcHJvcHJp
YXRlLgorICAgICAgICAocGFnZURpZERyYXdUb1BERik6IERvIG5vdCBoYW5kbGUgUERGIGRhdGEg
dW5sZXNzIHdlIGFyZSBleHBlY3RpbmcgYSByZWFsIHByaW50IGNhbGxiYWNrIChub3QgYSBwcmV2
aWV3KS4KKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX2RyYXdQcmV2aWV3Ol0pOiBSZXF1ZXN0
IGFuIGltYWdlIGluc3RlYWQgb2YgUERGIGRhdGEgd2hlbiBkb2luZyBhIHByaW50IHByZXZpZXcu
CisgICAgICAgICogVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oOgorICAgICAgICAoSW1hZ2VD
YWxsYmFjayk6IEFkZCBhIGNhbGxiYWNrIHR5cGUgd2l0aCBvbmUgYXJndW1lbnQ6IGEgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUuCisgICAgICAgIEkgY2FuJ3QgdXNlIHRoZSBHZW5lcmljQ2FsbGJh
Y2sgdGVtcGxhdGUgYmVjYXVzZSBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBkb2Vzbid0IGhhdmUg
YSBjb3JyZXNwb25kaW5nIFdLIHR5cGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOiBBZGQgc3VwcG9y
dCBmb3IgSW1hZ2VDYWxsYmFjay4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKTogQWRkIHN1cHBvcnQgZm9yIEltYWdlQ2FsbGJhY2suCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKTogUmVuYW1lIGRyYXdSZWN0VG9QREYg
dG8gZHJhd1JlY3RUb0ltYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKFdlYlBhZ2VQcm94eSk6IFJlbmFtZSBkcmF3UmVjdFRvUERGIHRvIGRyYXdSZWN0
VG9JbWFnZSwgYWRkIHN1cHBvcnQgZm9yIEltYWdlQ2FsbGJhY2suCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogQWRkIHN1cHBvcnQgZm9yIEltYWdlQ2FsbGJh
Y2suCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UpOiBSZW5hbWUgZHJhd1JlY3RUb1BERiB0
byBkcmF3UmVjdFRvSW1hZ2UuCisgICAgICAgIE1ha2UgZHJhd1JlY3RUb0ltYWdlIGNyZWF0ZSBh
IGJpdG1hcCBzbmFwc2hvdCBvZiB0aGUgcGFnZSAodXNpbmcgdGhlIG5vcm1hbCBzbmFwc2hvdHRp
bmcgY29kZSksCisgICAgICAgIG9yLCBpZiB0aGUgcGFnZSBpcyBiYWNrZWQgYnkgYSAqUERGUGx1
Z2luLCBkcmF3IHRoZSBQREYgZG9jdW1lbnQgaW50byBhIGJpdG1hcCBhbmQgdXNlIHRoYXQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2Up
OiBSZW5hbWUgZHJhd1JlY3RUb1BERiB0byBkcmF3UmVjdFRvSW1hZ2UuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IFJlbmFtZSBkcmF3UmVjdFRvUERG
IHRvIGRyYXdSZWN0VG9JbWFnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQREZEb2N1bWVudCk6
IFJlbmFtZSBkcmF3UmVjdFRvUERGRnJvbVBERkRvY3VtZW50IHRvIGRyYXdQREZEb2N1bWVudCwK
KyAgICAgICAgYmVjYXVzZSBpdCdzIG1vcmUgbGlrZSBkcmF3SW1hZ2UgdGhhbiBhbnl0aGluZyBl
bHNlLgorCiAyMDEyLTExLTA3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBbGxvdyBjbGllbnQgdG8gb3ZlcnJpZGUg
c2V0V2luZG93RnJhbWUoKSAvIGdldFdpbmRvd0ZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5jcHAKaW5kZXggYWNhZTc0Zi4uOGMwZGVhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTg5LDIxICs4OSwyMSBAQCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgRmxhZ3MgZgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0
bWFwKHNpemUsIGZsYWdzLCBzaGFyZWRNZW1vcnkpKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQor
UGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0
IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKIHsK
ICAgICAvLyBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkuCi0gICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoaGFuZGxlLm1faGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlJlYWRXcml0ZSk7CisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVk
TWVtb3J5ID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoaGFuZGxlLm1faGFuZGxlLCBwcm90ZWN0aW9u
KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1
cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBzaGFyZWRNZW1vcnkucmVs
ZWFzZSgpKTsKIH0KIAotYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5kbGUm
IGhhbmRsZSkKK2Jvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0aW9uKQogewogICAgIEFTU0VSVChp
c0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpOwogCi0gICAgaWYgKCFtX3NoYXJlZE1lbW9yeS0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZS5tX2hhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkV3JpdGUpKQorICAg
IGlmICghbV9zaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUubV9oYW5kbGUsIHByb3Rl
Y3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaGFuZGxlLm1fc2l6ZSA9IG1fc2l6
ZTsKICAgICBoYW5kbGUubV9mbGFncyA9IG1fZmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmgKaW5kZXggOGRiZjFkZC4uNmE1NzVmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtOTMsMTAgKzkzLDEwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAKICAgICAvLyBDcmVh
dGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYSBoYW5kbGUuCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgSGFuZGxlJik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgSGFuZGxlJiwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpSZWFkV3JpdGUpOwogCiAgICAgLy8gQ3Jl
YXRlIGEgaGFuZGxlLgotICAgIGJvb2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYpOworICAgIGJvb2wg
Y3JlYXRlSGFuZGxlKEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1l
bW9yeTo6UmVhZFdyaXRlKTsKIAogICAgIH5TaGFyZWFibGVCaXRtYXAoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3LmgKaW5kZXggY2Qz
YjFmOS4uNjdiZDRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tQcmludGluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ByaW50aW5nVmlldy5oCkBAIC0zMCw2ICszMCw3IEBACiBAY2xhc3MgUERGRG9jdW1lbnQ7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworICAgIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKICAgICBj
bGFzcyBXZWJGcmFtZVByb3h5OwogfQogCkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogICAgIFJlZlB0cjxXZWJLaXQ6OldlYkZyYW1lUHJveHk+IF93ZWJGcmFtZTsKICAgICBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gX3ByaW50aW5nUGFnZVJlY3RzOwogICAgIGRvdWJsZSBf
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6SW50UmVj
dCwgVmVjdG9yPHVpbnQ4X3Q+ID4gX3BhZ2VQcmV2aWV3czsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OkludFJlY3QsIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gPiBfcGFnZVByZXZpZXdz
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IF9wcmludGVkUGFnZXNEYXRhOwogICAgIFJldGFpblB0
cjxQREZEb2N1bWVudD4gX3ByaW50ZWRQYWdlc1BERkRvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBjYTFjYWQ1
Li4wZjUzZjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ByaW50aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ByaW50aW5nVmlldy5tbQpAQCAtMjksOSArMjksMTEgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIlBERktpdEltcG9ydHMuaCIKICNpbXBvcnQgIlByaW50SW5mby5oIgorI2ltcG9y
dCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJXZWJEYXRhLmgiCiAjaW1wb3J0ICJXZWJQ
YWdlUHJveHkuaCIKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+
CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC0yMDUsNiArMjA3LDM1IEBAIHN0cnVj
dCBJUENDYWxsYmFja0NvbnRleHQgewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQ7CiB9OwogCitz
dGF0aWMgdm9pZCBwYWdlRGlkRHJhd1RvSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGltYWdlSGFuZGxlLCBXS0Vycm9yUmVmLCB2b2lkKiB1bnR5cGVkQ29udGV4dCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgT3duUHRyPElQQ0NhbGxiYWNrQ29udGV4
dD4gY29udGV4dCA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PElQQ0NhbGxiYWNrQ29udGV4dCo+KHVu
dHlwZWRDb250ZXh0KSk7CisgICAgV0tQcmludGluZ1ZpZXcgKnZpZXcgPSBjb250ZXh0LT52aWV3
LmdldCgpOworCisgICAgLy8gSWYgdGhlIHVzZXIgaGFzIGFscmVhZHkgY2hhbmdlZCBwcmludCBz
ZXR1cCwgdGhlbiB0aGlzIHJlc3BvbnNlIGlzIG9ic29sZXRlLiBBbmQgaWYgdGhpcyBjYWxsYmFj
ayBpcyBub3QgaW4gcmVzcG9uc2UgdG8gdGhlIGxhdGVzdCByZXF1ZXN0LAorICAgIC8vIHRoZW4g
dGhlIHVzZXIgaGFzIGFscmVhZHkgbW92ZWQgdG8gYW5vdGhlciBwYWdlIC0gd2UnbGwgY2FjaGUg
dGhlIHJlc3BvbnNlLCBidXQgd29uJ3QgZHJhdyBpdC4KKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBX
ZWJDb3JlOjpJbnRSZWN0Pjo6aXRlcmF0b3IgaXRlciA9IHZpZXctPl9leHBlY3RlZFByZXZpZXdD
YWxsYmFja3MuZmluZChjb250ZXh0LT5jYWxsYmFja0lEKTsKKyAgICBpZiAoaXRlciAhPSB2aWV3
LT5fZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLmVuZCgpKSB7CisgICAgICAgIEFTU0VSVChbdmll
dyBfaXNQcmludGluZ1ByZXZpZXddKTsKKworICAgICAgICBpZiAoIWltYWdlSGFuZGxlLmlzTnVs
bCgpKSB7CisgICAgICAgICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBpbWFnZSA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsK
KworICAgICAgICAgICAgaWYgKGltYWdlKQorICAgICAgICAgICAgICAgIHZpZXctPl9wYWdlUHJl
dmlld3MuYWRkKGl0ZXItPnZhbHVlLCBpbWFnZSk7CisgICAgICAgIH0KKworICAgICAgICB2aWV3
LT5fZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLnJlbW92ZShjb250ZXh0LT5jYWxsYmFja0lEKTsK
KyAgICAgICAgYm9vbCByZWNlaXZlZFJlc3BvbnNlVG9MYXRlc3RSZXF1ZXN0ID0gdmlldy0+X2xh
dGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID09IGNvbnRleHQtPmNhbGxiYWNrSUQ7CisgICAg
ICAgIGlmIChyZWNlaXZlZFJlc3BvbnNlVG9MYXRlc3RSZXF1ZXN0KSB7CisgICAgICAgICAgICB2
aWV3LT5fbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2sgPSAwOworICAgICAgICAgICAgW3Zp
ZXcgX3VwZGF0ZVByZXZpZXddOworICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBw
YWdlRGlkRHJhd1RvUERGKFdLRGF0YVJlZiBkYXRhUmVmLCBXS0Vycm9yUmVmLCB2b2lkKiB1bnR5
cGVkQ29udGV4dCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMjIxLDI0ICsy
NTIsNiBAQCBzdGF0aWMgdm9pZCBwYWdlRGlkRHJhd1RvUERGKFdLRGF0YVJlZiBkYXRhUmVmLCBX
S0Vycm9yUmVmLCB2b2lkKiB1bnR5cGVkQ29udGV4dAogICAgICAgICAgICAgdmlldy0+X3ByaW50
ZWRQYWdlc0RhdGEuYXBwZW5kKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAg
IHZpZXctPl9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSAwOwogICAgICAgICB2aWV3LT5fcHJpbnRp
bmdDYWxsYmFja0NvbmRpdGlvbi5zaWduYWwoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBJ
ZiB0aGUgdXNlciBoYXMgYWxyZWFkeSBjaGFuZ2VkIHByaW50IHNldHVwLCB0aGVuIHRoaXMgcmVz
cG9uc2UgaXMgb2Jzb2xldGUuIEFuZCB0aGlzIGNhbGxiYWNrIGlzIG5vdCBpbiByZXNwb25zZSB0
byB0aGUgbGF0ZXN0IHJlcXVlc3QsCi0gICAgICAgIC8vIHRoZW4gdGhlIHVzZXIgaGFzIGFscmVh
ZHkgbW92ZWQgdG8gYW5vdGhlciBwYWdlIC0gd2UnbGwgY2FjaGUgdGhlIHJlc3BvbnNlLCBidXQg
d29uJ3QgZHJhdyBpdC4KLSAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViQ29yZTo6SW50UmVj
dD46Oml0ZXJhdG9yIGl0ZXIgPSB2aWV3LT5fZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLmZpbmQo
Y29udGV4dC0+Y2FsbGJhY2tJRCk7Ci0gICAgICAgIGlmIChpdGVyICE9IHZpZXctPl9leHBlY3Rl
ZFByZXZpZXdDYWxsYmFja3MuZW5kKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChbdmlldyBfaXNQ
cmludGluZ1ByZXZpZXddKTsKLQotICAgICAgICAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgICAg
ICAgICBIYXNoTWFwPFdlYkNvcmU6OkludFJlY3QsIFZlY3Rvcjx1aW50OF90PiA+OjpBZGRSZXN1
bHQgZW50cnkgPSB2aWV3LT5fcGFnZVByZXZpZXdzLmFkZChpdGVyLT52YWx1ZSwgVmVjdG9yPHVp
bnQ4X3Q+KCkpOwotICAgICAgICAgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQo
ZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHZpZXctPl9leHBlY3RlZFByZXZpZXdDYWxsYmFja3MucmVtb3ZlKGNvbnRleHQtPmNhbGxiYWNr
SUQpOwotICAgICAgICAgICAgYm9vbCByZWNlaXZlZFJlc3BvbnNlVG9MYXRlc3RSZXF1ZXN0ID0g
dmlldy0+X2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID09IGNvbnRleHQtPmNhbGxiYWNr
SUQ7Ci0gICAgICAgICAgICBpZiAocmVjZWl2ZWRSZXNwb25zZVRvTGF0ZXN0UmVxdWVzdCkgewot
ICAgICAgICAgICAgICAgIHZpZXctPl9sYXRlc3RFeHBlY3RlZFByZXZpZXdDYWxsYmFjayA9IDA7
Ci0gICAgICAgICAgICAgICAgW3ZpZXcgX3VwZGF0ZVByZXZpZXddOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CiAgICAgfQogfQogCkBAIC00NjEsNyArNDc0LDcgQEAgc3RhdGljIHZvaWQgcHJl
cGFyZURhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFkKHZvaWQqIHVudHlwZWRDb250ZXh0
KQogCiAgICAgSW50UmVjdCByZWN0KG5zUmVjdCk7CiAgICAgcmVjdC5zY2FsZSgxIC8gX3RvdGFs
U2NhbGVGYWN0b3JGb3JQcmludGluZyk7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpJbnRSZWN0LCBW
ZWN0b3I8dWludDhfdD4gPjo6aXRlcmF0b3IgcGFnZVByZXZpZXdJdGVyYXRvciA9IF9wYWdlUHJl
dmlld3MuZmluZChyZWN0KTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkludFJlY3QsIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+ID46Oml0ZXJhdG9yIHBhZ2VQcmV2aWV3SXRlcmF0b3IgPSBfcGFnZVBy
ZXZpZXdzLmZpbmQocmVjdCk7CiAgICAgaWYgKHBhZ2VQcmV2aWV3SXRlcmF0b3IgPT0gX3BhZ2VQ
cmV2aWV3cy5lbmQoKSkgIHsKICAgICAgICAgLy8gSXQncyB0b28gZWFybHkgdG8gYXNrIGZvciBw
YWdlIHByZXZpZXcgaWYgd2UgZG9uJ3QgZXZlbiBrbm93IHBhZ2Ugc2l6ZSBhbmQgc2NhbGUuCiAg
ICAgICAgIGlmIChbc2VsZiBfaGFzUGFnZVJlY3RzXSkgewpAQCAtNDc4LDE0ICs0OTEsMTQgQEAg
c3RhdGljIHZvaWQgcHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFkKHZvaWQq
IHVudHlwZWRDb250ZXh0KQogICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5iZWdp
blByaW50aW5nKF93ZWJGcmFtZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJpbnRPcGVyYXRpb24gcHJp
bnRJbmZvXSkpOwogCiAgICAgICAgICAgICAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0
ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKLSAgICAgICAgICAgICAgICBSZWZQdHI8RGF0YUNh
bGxiYWNrPiBjYWxsYmFjayA9IERhdGFDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIHBhZ2VEaWRE
cmF3VG9QREYpOworICAgICAgICAgICAgICAgIFJlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFj
ayA9IEltYWdlQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBwYWdlRGlkRHJhd1RvSW1hZ2UpOwog
ICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3RlZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7CiAgICAgICAgICAgICAgICAgX2V4cGVjdGVkUHJldmlld0NhbGxiYWNr
cy5hZGQoX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrLCByZWN0KTsKIAogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPmNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogCi0gICAgICAgICAgICAgICAgX3dl
YkZyYW1lLT5wYWdlKCktPmRyYXdSZWN0VG9QREYoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8o
W19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKSwgcmVjdCwgY2FsbGJhY2suZ2V0KCkpOworICAg
ICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRvSW1hZ2UoX3dlYkZyYW1l
LmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKSwgcmVjdCwgY2Fs
bGJhY2suZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtNDk0LDExICs1MDcsMjAgQEAgc3RhdGljIHZvaWQgcHJlcGFyZURhdGFGb3JQ
cmludGluZ09uU2Vjb25kYXJ5VGhyZWFkKHZvaWQqIHVudHlwZWRDb250ZXh0KQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwZGZEYXRhQnl0ZXMg
PSBwYWdlUHJldmlld0l0ZXJhdG9yLT52YWx1ZTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBwZGZE
YXRhKEFkb3B0TlMsIFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnBkZkRhdGFCeXRlcy5k
YXRhKCkgbGVuZ3RoOnBkZkRhdGFCeXRlcy5zaXplKCldKTsKLSAgICBSZXRhaW5QdHI8UERGRG9j
dW1lbnQ+IHBkZkRvY3VtZW50KEFkb3B0TlMsIFtbcGRmRG9jdW1lbnRDbGFzcygpIGFsbG9jXSBp
bml0V2l0aERhdGE6cGRmRGF0YS5nZXQoKV0pOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcCA9IHBhZ2VQcmV2aWV3SXRlcmF0b3ItPnZhbHVlOworICAgIENHQ29udGV4dFJlZiBj
Z0NvbnRleHQgPSBzdGF0aWNfY2FzdDxDR0NvbnRleHRSZWY+KFtbTlNHcmFwaGljc0NvbnRleHQg
Y3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF0pOworCisgICAgR3JhcGhpY3NDb250ZXh0IGNv
bnRleHQoY2dDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CisKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShuc1JlY3Qub3JpZ2luLngsIG5z
UmVjdC5vcmlnaW4ueSk7CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoX3RvdGFsU2NhbGVG
YWN0b3JGb3JQcmludGluZywgX3RvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZykpOworCisgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBnZXQgdGhlIFdlYlBhZ2UncyBkZXZpY2VTY2FsZUZhY3RvciBm
cm9tIGhlcmUgaW5zdGVhZD8KKyAgICBjb25zdCBJbnRSZWN0JiBpbWFnZUJvdW5kcyA9IGJpdG1h
cC0+Ym91bmRzKCk7CisgICAgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvciA9IGltYWdlQm91bmRzLndp
ZHRoKCkgLyByZWN0LndpZHRoKCk7CiAKLSAgICBbc2VsZiBfZHJhd1BERkRvY3VtZW50OnBkZkRv
Y3VtZW50LmdldCgpIHBhZ2U6MCBhdFBvaW50Ok5TTWFrZVBvaW50KG5zUmVjdC5vcmlnaW4ueCwg
bnNSZWN0Lm9yaWdpbi55KV07CisgICAgYml0bWFwLT5wYWludChjb250ZXh0LCBpbWFnZVNjYWxl
RmFjdG9yLCBJbnRQb2ludCgpLCBpbWFnZUJvdW5kcyk7CiB9CiAKIC0gKHZvaWQpZHJhd1JlY3Q6
KE5TUmVjdCluc1JlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCA1YjZhMGY5Li5jZGEwMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dl
bmVyaWNDYWxsYmFjay5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIEdlbmVyaWNDYWxsYmFj
a19oCiAjZGVmaW5lIEdlbmVyaWNDYWxsYmFja19oCiAKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLQogI2luY2x1ZGUgIldlYkVycm9yLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
MTk1LDYgKzE5NSw1MSBAQCBwcml2YXRlOgogICAgIENhbGxiYWNrRnVuY3Rpb24gbV9jYWxsYmFj
azsKIH07CiAKK2NsYXNzIEltYWdlQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKCpDYWxsYmFja0Z1bmN0aW9uKShjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKKworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEltYWdlQ2FsbGJhY2s+IGNyZWF0ZSh2b2lkKiBjb250ZXh0LCBDYWxsYmFja0Z1bmN0
aW9uIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUNh
bGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SW1hZ2VD
YWxsYmFjaygpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2spOworICAgIH0KKwor
ICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiByZXR1cm5WYWx1ZTEpCisgICAgeworICAgICAgICBBU1NFUlQobV9jYWxs
YmFjayk7CisKKyAgICAgICAgbV9jYWxsYmFjayhyZXR1cm5WYWx1ZTEsIDAsIGNvbnRleHQoKSk7
CisKKyAgICAgICAgbV9jYWxsYmFjayA9IDA7CisgICAgfQorCisgICAgdm9pZCBpbnZhbGlkYXRl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKworICAgICAgICBSZWZQdHI8
V2ViRXJyb3I+IGVycm9yID0gV2ViRXJyb3I6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIG1fY2FsbGJhY2soaGFuZGxlLCB0b0FQSShl
cnJvci5nZXQoKSksIGNvbnRleHQoKSk7CisKKyAgICAgICAgbV9jYWxsYmFjayA9IDA7CisgICAg
fQorCitwcml2YXRlOgorCisgICAgSW1hZ2VDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBDYWxsYmFj
a0Z1bmN0aW9uIGNhbGxiYWNrKQorICAgICAgICA6IENhbGxiYWNrQmFzZShjb250ZXh0KQorICAg
ICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgeworICAgIH0KKyAgICAKKyAgICBDYWxs
YmFja0Z1bmN0aW9uIG1fY2FsbGJhY2s7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9p
ZCBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAoSGFzaE1hcDx1aW50NjRfdCwgVD4mIG1hcCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjRkMzI2OC4uMDRl
N2QyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ4
NCw2ICs0ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgaW52YWxpZGF0
ZUNhbGxiYWNrTWFwKG1fdm9pZENhbGxiYWNrcyk7CiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFw
KG1fZGF0YUNhbGxiYWNrcyk7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1faW1hZ2VDYWxs
YmFja3MpOwogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3N0cmluZ0NhbGxiYWNrcyk7CiAg
ICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIoKTsKICAgICBpbnZhbGlk
YXRlQ2FsbGJhY2tNYXAobV9zY3JpcHRWYWx1ZUNhbGxiYWNrcyk7CkBAIC0zNDYzLDYgKzM0NjQs
MTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCB1aW4KICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxi
YWNrV2l0aFJldHVyblZhbHVlKFdlYkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwg
ZGF0YVJlZmVyZW5jZS5zaXplKCkpLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6Omlt
YWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBSZWZQdHI8SW1hZ2VDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBtX2ltYWdlQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFj
aykgeworICAgICAgICAvLyBGSVhNRTogTG9nIGVycm9yIG9yIGFzc2VydC4KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFs
dWUoYml0bWFwSGFuZGxlKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNr
KGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAg
IFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX3N0cmluZ0NhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwpAQCAtMzk5MywxNyArNDAwNSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50
SW5mbwogfQogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZHJhd1JlY3RUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIFBhc3NSZWZQdHI8RGF0YUNhbGxi
YWNrPiBwcnBDYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1hZ2UoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBQYXNzUmVmUHRyPEltYWdlQ2FsbGJhY2s+IHBycENhbGxiYWNrKQogewotICAg
IFJlZlB0cjxEYXRhQ2FsbGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CisgICAgUmVmUHRy
PEltYWdlQ2FsbGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKLSAgICBtX2RhdGFDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgp
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdSZWN0VG9QREYo
ZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQs
IG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24gPyBDb3JlSVBDOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiAwKTsKKyAgICBtX2ltYWdlQ2FsbGJhY2tz
LnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJ
bmZvLCByZWN0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24gPyBDb3JlSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkgOiAwKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4gcHJwQ2FsbGJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjhlMzRiYy4uYzdm
MjlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjg5LDcg
KzY4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFByaW50aW5nKCk7CiAgICAgdm9pZCBjb21w
dXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgUGFz
c1JlZlB0cjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KTsKICNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKFdJTikKLSAgICB2b2lkIGRyYXdSZWN0VG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0
IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPERhdGFDYWxs
YmFjaz4pOworICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQ
cmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxJbWFnZUNhbGxi
YWNrPik7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJp
bnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBQYXNzUmVmUHRyPERhdGFD
YWxsYmFjaz4pOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJp
bnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFBhc3NSZWZQdHI8UHJpbnRG
aW5pc2hlZENhbGxiYWNrPik7CkBAIC05NjUsNiArOTY1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgdm9pZENhbGxiYWNrKHVpbnQ2NF90KTsKICAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0X3QpOworICAgIHZvaWQgaW1hZ2VDYWxsYmFj
ayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIHVpbnQ2NF90KTsKICAgICB2b2lkIHN0
cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKICAgICB2b2lkIHNjcmlwdFZh
bHVlQ2FsbGJhY2soY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYsIHVpbnQ2NF90KTsKICAg
ICB2b2lkIGNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCk7CkBAIC0x
MDY1LDYgKzEwNjYsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFZvaWRDYWxsYmFjaz4gPiBtX3ZvaWRDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPERhdGFDYWxsYmFjaz4gPiBtX2RhdGFDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPEltYWdlQ2FsbGJhY2s+ID4gbV9pbWFnZUNhbGxiYWNrczsKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+ID4gbV9zdHJpbmdDYWxsYmFja3M7
CiAgICAgSGFzaFNldDx1aW50NjRfdD4gbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHM7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNjcmlwdFZhbHVlQ2FsbGJhY2s+ID4gbV9z
Y3JpcHRWYWx1ZUNhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE5N2YyMGQuLmI0M2M5YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY1
LDYgKzE2NSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBDYWxsYmFjayBt
ZXNzYWdlcwogICAgIFZvaWRDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERhdGFD
YWxsYmFjayhDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGJpdG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBTdHJpbmdDYWxsYmFjayhX
VEY6OlN0cmluZyByZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgU2NyaXB0
VmFsdWVDYWxsYmFjayhDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggMjMxMmU4NC4uZDRjYTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzE3NCwxMiArMzE3NCwxMiBAQCB2
b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbgogfQogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShXSU4pCi12b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOwogCi0gICAgUmV0YWluUHRy
PENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZU11dGFi
bGUoMCwgMCkpOworICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2U7CiAKICNpZiBVU0UoQ0cpCiAg
ICAgaWYgKGNvcmVGcmFtZSkgewpAQCAtMzE4OCwzNCArMzE4OCwyOSBAQCB2b2lkIFdlYlBhZ2U6
OmRyYXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIGNvbnN0CiAjZWxzZQogICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5w
cmludGluZygpKTsKICNlbmRpZgotCi0gICAgICAgIC8vIEZJWE1FOiBVc2UgQ0dEYXRhQ29uc3Vt
ZXJDcmVhdGUgd2l0aCBjYWxsYmFja3MgdG8gYXZvaWQgY29weWluZyB0aGUgZGF0YS4KLSAgICAg
ICAgUmV0YWluUHRyPENHRGF0YUNvbnN1bWVyUmVmPiBwZGZEYXRhQ29uc3VtZXIoQWRvcHRDRiwg
Q0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKHBkZlBhZ2VEYXRhLmdldCgpKSk7Ci0KLSAg
ICAgICAgQ0dSZWN0IG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0KEFk
b3B0Q0YsIENHUERGQ29udGV4dENyZWF0ZShwZGZEYXRhQ29uc3VtZXIuZ2V0KCksICZtZWRpYUJv
eCwgMCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwYWdlSW5mbyhBZG9w
dENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAgICAg
Q0dQREZDb250ZXh0QmVnaW5QYWdlKGNvbnRleHQuZ2V0KCksIHBhZ2VJbmZvLmdldCgpKTsKLQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaWYgKFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRm
RG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSkgewogICAg
ICAgICAgICAgQVNTRVJUKCFtX3ByaW50Q29udGV4dCk7Ci0gICAgICAgICAgICBkcmF3UmVjdFRv
UERGRnJvbVBERkRvY3VtZW50KGNvbnRleHQuZ2V0KCksIHBkZkRvY3VtZW50LmdldCgpLCBwcmlu
dEluZm8sIHJlY3QpOworICAgICAgICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVjdC5zaXplKCksIFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgICAgICBPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdodCgpKTsK
KyAgICAgICAgICAgIGRyYXdQREZEb2N1bWVudChncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBwZGZEb2N1bWVudC5nZXQoKSwgcHJpbnRJbmZvLCByZWN0KTsKKyAgICAgICAgICAg
IGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZSgpKTsKICAgICAgICAgfSBl
bHNlCiAjZW5kaWYKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGN0eChj
b250ZXh0LmdldCgpKTsKLSAgICAgICAgICAgIGN0eC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsK
LSAgICAgICAgICAgIGN0eC50cmFuc2xhdGUoMCwgLXJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAg
ICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdChjdHgsIHJlY3QpOworICAgICAgICAgICAgaW1h
Z2UgPSBzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKHJlY3QsIDEsIFNuYXBzaG90T3B0aW9uc1No
YXJlYWJsZSB8IFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgQ0dQREZDb250ZXh0RW5kUGFnZShjb250ZXh0LmdldCgpKTsK
LSAgICAgICAgQ0dQREZDb250ZXh0Q2xvc2UoY29udGV4dC5nZXQoKSk7CiAgICAgfQogI2VuZGlm
CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhDb3JlSVBD
OjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBDRkRh
dGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSwgY2FsbGJhY2tJRCkpOworICAgIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKworICAgIGlmIChpbWFnZSkKKyAgICAgICAgaW1h
Z2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5
KTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5k
bGUsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERih1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZWFmYzg3MS4uNjA2YWRhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01MTgsNyArNTE4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKICAgICB2b2lkIGNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQotICAg
IHZvaWQgZHJhd1JlY3RUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBk
cmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZHJhd1Bh
Z2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICNlbGlmIFBMQVRGT1JN
KEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtNzI0LDcgKzcyNCw3IEBA
IHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJp
bnRpbmdGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdQREZEb2N1bWVudCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mIHJlc3VsdFBhZ2VSZWN0cyk7Ci0gICAgdm9pZCBkcmF3UmVj
dFRvUERGRnJvbVBERkRvY3VtZW50KENHQ29udGV4dFJlZiwgUERGRG9jdW1lbnQgKiwgY29uc3Qg
UHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgZHJhd1BERkRv
Y3VtZW50KENHQ29udGV4dFJlZiwgUERGRG9jdW1lbnQgKiwgY29uc3QgUHJpbnRJbmZvJiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZGcm9tUERGRG9j
dW1lbnQoQ0dDb250ZXh0UmVmLCBQREZEb2N1bWVudCAqLCBjb25zdCBQcmludEluZm8mLCB1aW50
MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMDkz
M2FhMS4uYmJmNmE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxNyw3ICsyMTcsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIHsKICAgICBFbmRQcmludGluZygpCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50NjRf
dCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQotICAgIERy
YXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZv
LCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRHJhd1Jl
Y3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywg
V2ViQ29yZTo6SW50UmVjdCByZWN0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERyYXdQYWdl
c1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGI1MjRkYWYuLjdiMGM5YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
QEAgLTgzNyw3ICs4MzcsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UERGUGFnZShQREZEb2N1bWVudCAq
cGRmRG9jdW1lbnQsIENGSW5kZXggcGFnZUluZGV4LCBDR0NvbnRleHRSZQogICAgIENHQ29udGV4
dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb1BE
RkZyb21QREZEb2N1bWVudChDR0NvbnRleHRSZWYgY29udGV4dCwgUERGRG9jdW1lbnQgKnBkZkRv
Y3VtZW50LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgcmVjdCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BERkRvY3VtZW50KENHQ29udGV4dFJlZiBjb250
ZXh0LCBQREZEb2N1bWVudCAqcGRmRG9jdW1lbnQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIE5TVUludGVnZXIgcGFnZUNv
dW50ID0gW3BkZkRvY3VtZW50IHBhZ2VDb3VudF07CiAgICAgSW50U2l6ZSBwYXBlclNpemUoY2Vp
bGYocHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGgpLCBjZWlsZihwcmludEluZm8uYXZhaWxh
YmxlUGFwZXJIZWlnaHQpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>