<?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>70525</bug_id>
          
          <creation_ts>2011-10-20 10:59:06 -0700</creation_ts>
          <short_desc>[Qt][WK2] Remove QAction from MiniBrowser</short_desc>
          <delta_ts>2011-10-27 06:20:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>70236</blocked>
    
    <blocked>70315</blocked>
    
    <blocked>70529</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zeno Albisser">zeno</reporter>
          <assigned_to name="Zeno Albisser">zeno</assigned_to>
          <cc>abecsi</cc>
    
    <cc>hausmann</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487710</commentid>
    <comment_count>0</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-20 10:59:06 -0700</bug_when>
    <thetext>this is necessary to make the QWebNavigationController work nicely with QML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487759</commentid>
    <comment_count>1</comment_count>
      <attachid>111819</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-20 12:07:19 -0700</bug_when>
    <thetext>Created attachment 111819
Patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489240</commentid>
    <comment_count>2</comment_count>
      <attachid>111819</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-10-24 02:25:27 -0700</bug_when>
    <thetext>Comment on attachment 111819
Patch for review.

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

&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationcontroller.h:55
&gt; +    Q_INVOKABLE void goBack();
&gt; +    Q_INVOKABLE void goForward();
&gt; +    Q_INVOKABLE void stop();
&gt; +    Q_INVOKABLE void reload();

Why are those functions marked as Q_INVOKABLE when they&apos;re already in a slot section? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489254</commentid>
    <comment_count>3</comment_count>
      <attachid>112167</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-24 02:51:56 -0700</bug_when>
    <thetext>Created attachment 112167
patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489255</commentid>
    <comment_count>4</comment_count>
      <attachid>111819</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-24 02:54:40 -0700</bug_when>
    <thetext>Comment on attachment 111819
Patch for review.

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

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationcontroller.h:55
&gt;&gt; +    Q_INVOKABLE void reload();
&gt; 
&gt; Why are those functions marked as Q_INVOKABLE when they&apos;re already in a slot section? :)

fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489977</commentid>
    <comment_count>5</comment_count>
      <attachid>112167</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-10-25 05:29:24 -0700</bug_when>
    <thetext>Comment on attachment 112167
patch for review.

r=me

Perhaps this patch should be landed together with the other MiniBrowser ones in one shot, to avoid having a broken mini browser inbetween. (Well, one can argue the current one is too broken ;)

What do you prefer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489984</commentid>
    <comment_count>6</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-25 05:44:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 112167 [details])
&gt; r=me
&gt; 
&gt; Perhaps this patch should be landed together with the other MiniBrowser ones in one shot, to avoid having a broken mini browser inbetween. (Well, one can argue the current one is too broken ;)
&gt; 
&gt; What do you prefer?

We wanted to have that one separate because of the changes in the API (QWebNavigationController). I think it makes sense to keep it separate. But don&apos;t have a really strong preference either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490057</commentid>
    <comment_count>7</comment_count>
      <attachid>112167</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-25 08:45:08 -0700</bug_when>
    <thetext>Comment on attachment 112167
patch for review.

This should be committed as part of a batch with all the other patches for https://bugs.webkit.org/show_bug.cgi?id=70315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490661</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-10-26 01:29:22 -0700</bug_when>
    <thetext>Committed r98447: &lt;http://trac.webkit.org/changeset/98447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490798</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-26 06:31:19 -0700</bug_when>
    <thetext>It broke 2 API tests, reopen to fix them:

FAIL!  : tst_CommonViewTests::backAndForward() &apos;waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded()))&apos; returned FALSE. ()
   Loc: [/ramdisk/qt-linux-32-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp(121)]

   FAIL!  : tst_CommonViewTests::reload() &apos;waitForSignal(viewAbstraction.data(), SIGNAL(loadSucceeded()))&apos; returned FALSE. ()
   Loc: [/ramdisk/qt-linux-32-release-webkit2/build/Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp(143)]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491258</commentid>
    <comment_count>10</comment_count>
      <attachid>112615</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-26 16:27:46 -0700</bug_when>
    <thetext>Created attachment 112615
patch for review. - fix failing tests after r98447.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491512</commentid>
    <comment_count>11</comment_count>
      <attachid>112615</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-10-27 06:20:03 -0700</bug_when>
    <thetext>Comment on attachment 112615
patch for review. - fix failing tests after r98447.

Clearing flags on attachment: 112615

Committed r98560: &lt;http://trac.webkit.org/changeset/98560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491513</commentid>
    <comment_count>12</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-10-27 06:20:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111819</attachid>
            <date>2011-10-20 12:07:19 -0700</date>
            <delta_ts>2011-10-24 02:54:40 -0700</delta_ts>
            <desc>Patch for review.</desc>
            <filename>70525_20111020-210518.patch</filename>
            <type>text/plain</type>
            <size>30137</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3YzMxMTYxLi4zNzEzMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcg
QEAKKzIwMTEtMTAtMjAgIFplbm8gQWxiaXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdW1dLMl0gUmVtb3ZlIFFBY3Rpb24gZnJvbSBNaW5pQnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA1MjUKKworICAg
ICAgICBJbiBvcmRlciB0byByZXdyaXRlIE1pbmlCcm93c2VyIGluIFFNTCB3ZSBuZWVkIGEgc3Vp
dGFibGUKKyAgICAgICAgbWVjaGFuaXNtIGZvciB0cmlnZ2VyaW5nIG5hdmlnYXRpb24gYWN0aW9u
cy4KKyAgICAgICAgRHVlIHRvIHRoZSBRdFdpZGdldHMgZGVwZW5kZW5jeSBvZiBRQWN0aW9uIHRo
ZSBjdXJyZW50CisgICAgICAgIHNvbHV0aW9uIGlzIG5vdCBzdWl0YWJsZSBhbnltb3JlLiBUaGVy
ZWZvcmUgd2UgaW50cm9kdWNlCisgICAgICAgIGludm9rYWJsZSBtZXRob2RzIGFuZCBleHBvcnQg
cHJvcGVydGllcyBpbiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIuCisKKyAgICAgICAgUGF0Y2gg
YnkgSm9jZWx5biBUdXJjb3R0ZSA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+LAorICAgICAg
ICAgICAgICAgICBaZW5vIEFsYmlzc2VyIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFFXZWJOYXZpZ2F0
aW9uQ29udHJvbGxlcjo6UVdlYk5hdmlnYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFFXZWJO
YXZpZ2F0aW9uQ29udHJvbGxlcjo6Y2FuR29CYWNrKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9u
Q29udHJvbGxlcjo6Y2FuR29Gb3J3YXJkKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uQ29udHJv
bGxlcjo6Y2FuU3RvcCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmNhblJl
bG9hZCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmdvQmFjayk6CisgICAg
ICAgIChRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmdvRm9yd2FyZCk6CisgICAgICAgIChRV2Vi
TmF2aWdhdGlvbkNvbnRyb2xsZXI6OnN0b3ApOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25Db250
cm9sbGVyOjpyZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRp
b25jb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252
aWV3dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHA6CisgICAgICAgICh0c3RfQ29tbW9uVmll
d1Rlc3RzOjpiYWNrQW5kRm9yd2FyZCk6CisgICAgICAgICh0c3RfQ29tbW9uVmlld1Rlc3RzOjpy
ZWxvYWQpOgorICAgICAgICAodHN0X0NvbW1vblZpZXdUZXN0czo6c3RvcCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6Z29CYWNrKToKKyAgICAgICAgKFdl
YlZpZXdBYnN0cmFjdGlvbjo6Z29Gb3J3YXJkKToKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlv
bjo6c3RvcCk6CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OnJlbG9hZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xZGVza3RvcHdlYnZpZXcv
dHN0X3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUURlc2t0b3BXZWJWaWV3Ojpu
YXZpZ2F0aW9uU3RhdHVzQXRTdGFydHVwKToKKyAgICAgICAgKExvYWRTdGFydGVkQ2F0Y2hlcjo6
b25Mb2FkU3RhcnRlZCk6CisgICAgICAgICh0c3RfUURlc2t0b3BXZWJWaWV3OjpzdG9wRW5hYmxl
ZEFmdGVyTG9hZFN0YXJ0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRv
dWNod2Vidmlldy90c3RfcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUVRvdWNoV2Vi
Vmlldzo6bmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L0NsaWVudEltcGwuY3BwOgorICAgICAgICAoZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKToKKyAgICAg
ICAgKGRpc3BhdGNoTG9hZEZhaWxlZCk6CisgICAgICAgIChxdF93a19kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKHF0X3drX2RpZENvbW1pdExvYWRGb3JGcmFtZSk6
CisgICAgICAgIChxdF93a19kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBh
Z2VQcm94eTo6UXRXZWJQYWdlUHJveHkpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmNhbkdv
QmFjayk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Z29CYWNrKToKKyAgICAgICAgKFF0V2Vi
UGFnZVByb3h5OjpjYW5Hb0ZvcndhcmQpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmdvRm9y
d2FyZCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Y2FuU3RvcCk6CisgICAgICAgIChRdFdl
YlBhZ2VQcm94eTo6c3RvcCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Y2FuUmVsb2FkKToK
KyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAoUXRXZWJQYWdlUHJv
eHk6Om5hdmlnYXRpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmRp
ZFJlbGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENy
YXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKwogMjAxMS0x
MC0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gUmVtb3ZlIFdlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25jb250
cm9sbGVyLmNwcAppbmRleCA4N2QwY2JjLi5kMmM5MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIu
Y3BwCkBAIC00MCw2ICs0MCw3IEBAIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6UVdlYk5hdmln
YXRpb25Db250cm9sbGVyKFF0V2ViUGFnZVByb3h5KiBwYWdlUHJveHkpCiAgICAgOiBRT2JqZWN0
KHBhZ2VQcm94eSkKICAgICAsIGQobmV3IFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlclByaXZhdGUo
cGFnZVByb3h5KSkKIHsKKyAgICBjb25uZWN0KHBhZ2VQcm94eSwgU0lHTkFMKHVwZGF0ZU5hdmln
YXRpb25TdGF0ZSgpKSwgdGhpcywgU0lHTkFMKG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQoKSkpOwog
fQogCiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6On5RV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIo
KQpAQCAtNDcsNDcgKzQ4LDQyIEBAIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6flFXZWJOYXZp
Z2F0aW9uQ29udHJvbGxlcigpCiAgICAgZGVsZXRlIGQ7CiB9CiAKLVFBY3Rpb24qIFFXZWJOYXZp
Z2F0aW9uQ29udHJvbGxlcjo6YmFja0FjdGlvbigpIGNvbnN0Citib29sIFFXZWJOYXZpZ2F0aW9u
Q29udHJvbGxlcjo6Y2FuR29CYWNrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZC0+cGFnZVByb3h5
LT5uYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpCYWNrKTsKKyAgICByZXR1cm4gZC0+cGFnZVBy
b3h5LT5jYW5Hb0JhY2soKTsKIH0KIAotUUFjdGlvbiogUVdlYk5hdmlnYXRpb25Db250cm9sbGVy
Ojpmb3J3YXJkQWN0aW9uKCkgY29uc3QKK2Jvb2wgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpj
YW5Hb0ZvcndhcmQoKSBjb25zdAogewotICAgIHJldHVybiBkLT5wYWdlUHJveHktPm5hdmlnYXRp
b25BY3Rpb24oUXRXZWJLaXQ6OkZvcndhcmQpOworICAgIHJldHVybiBkLT5wYWdlUHJveHktPmNh
bkdvRm9yd2FyZCgpOwogfQogCi1RQWN0aW9uKiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OnN0
b3BBY3Rpb24oKSBjb25zdAorYm9vbCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmNhblN0b3Ao
KSBjb25zdAogewotICAgIHJldHVybiBkLT5wYWdlUHJveHktPm5hdmlnYXRpb25BY3Rpb24oUXRX
ZWJLaXQ6OlN0b3ApOworICAgIHJldHVybiBkLT5wYWdlUHJveHktPmNhblN0b3AoKTsKIH0KIAot
UUFjdGlvbiogUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpyZWxvYWRBY3Rpb24oKSBjb25zdAor
Ym9vbCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmNhblJlbG9hZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGQtPnBhZ2VQcm94eS0+bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6UmVsb2FkKTsK
KyAgICByZXR1cm4gZC0+cGFnZVByb3h5LT5jYW5SZWxvYWQoKTsKIH0KIAotUUFjdGlvbiogUVdl
Yk5hdmlnYXRpb25Db250cm9sbGVyOjpuYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uIHdoaWNoKSBjb25zdAordm9pZCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6Omdv
QmFjaygpCiB7Ci0gICAgcmV0dXJuIGQtPnBhZ2VQcm94eS0+bmF2aWdhdGlvbkFjdGlvbih3aGlj
aCk7CisgICAgZC0+cGFnZVByb3h5LT5nb0JhY2soKTsKIH0KIAotdm9pZCBRV2ViTmF2aWdhdGlv
bkNvbnRyb2xsZXI6OmJhY2soKQordm9pZCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmdvRm9y
d2FyZCgpCiB7Ci0gICAgZC0+cGFnZVByb3h5LT5uYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpC
YWNrKS0+dHJpZ2dlcigpOwotfQotCi12b2lkIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6Zm9y
d2FyZCgpCi17Ci0gICAgZC0+cGFnZVByb3h5LT5uYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpG
b3J3YXJkKS0+dHJpZ2dlcigpOworICAgIGQtPnBhZ2VQcm94eS0+Z29Gb3J3YXJkKCk7CiB9CiAK
IHZvaWQgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpzdG9wKCkKIHsKLSAgICBkLT5wYWdlUHJv
eHktPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OlN0b3ApLT50cmlnZ2VyKCk7CisgICAgZC0+
cGFnZVByb3h5LT5zdG9wKCk7CiB9CiAKIHZvaWQgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpy
ZWxvYWQoKQogewotICAgIGQtPnBhZ2VQcm94eS0+bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6
UmVsb2FkKS0+dHJpZ2dlcigpOworICAgIGQtPnBhZ2VQcm94eS0+cmVsb2FkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlv
bmNvbnRyb2xsZXIuaAppbmRleCA1N2FiNzQ3Li40NDg1ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVy
LmgKQEAgLTM1LDI2ICszNSwyNyBAQCBjbGFzcyBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXJQcml2
YXRlOwogCiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIgOiBw
dWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKLSAgICBRX1BST1BFUlRZKFFBY3Rpb24qIGJh
Y2tBY3Rpb24gUkVBRCBiYWNrQWN0aW9uIENPTlNUQU5UIEZJTkFMKQotICAgIFFfUFJPUEVSVFko
UUFjdGlvbiogZm9yd2FyZEFjdGlvbiBSRUFEIGZvcndhcmRBY3Rpb24gQ09OU1RBTlQgRklOQUwp
Ci0gICAgUV9QUk9QRVJUWShRQWN0aW9uKiBzdG9wQWN0aW9uIFJFQUQgc3RvcEFjdGlvbiBDT05T
VEFOVCBGSU5BTCkKLSAgICBRX1BST1BFUlRZKFFBY3Rpb24qIHJlbG9hZEFjdGlvbiBSRUFEIHJl
bG9hZEFjdGlvbiBDT05TVEFOVCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKGJvb2wgY2FuR29CYWNr
IFJFQUQgY2FuR29CYWNrIE5PVElGWSBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKQorICAgIFFfUFJP
UEVSVFkoYm9vbCBjYW5Hb0ZvcndhcmQgUkVBRCBjYW5Hb0ZvcndhcmQgTk9USUZZIG5hdmlnYXRp
b25TdGF0ZUNoYW5nZWQpCisgICAgUV9QUk9QRVJUWShib29sIGNhblN0b3AgUkVBRCBjYW5TdG9w
IE5PVElGWSBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoYm9vbCBjYW5S
ZWxvYWQgUkVBRCBjYW5SZWxvYWQgTk9USUZZIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQpCiBwdWJs
aWM6CiAgICAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKFF0V2ViUGFnZVByb3h5Kik7CiAgICAg
flFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcigpOwogCi0gICAgUUFjdGlvbiogYmFja0FjdGlvbigp
IGNvbnN0OwotICAgIFFBY3Rpb24qIGZvcndhcmRBY3Rpb24oKSBjb25zdDsKLSAgICBRQWN0aW9u
KiBzdG9wQWN0aW9uKCkgY29uc3Q7Ci0gICAgUUFjdGlvbiogcmVsb2FkQWN0aW9uKCkgY29uc3Q7
Ci0KLSAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uIHdoaWNoKSBjb25zdDsKKyAgICBib29sIGNhbkdvQmFjaygpIGNvbnN0OworICAgIGJvb2wg
Y2FuR29Gb3J3YXJkKCkgY29uc3Q7CisgICAgYm9vbCBjYW5TdG9wKCkgY29uc3Q7CisgICAgYm9v
bCBjYW5SZWxvYWQoKSBjb25zdDsKIAogcHVibGljIHNsb3RzOgotICAgIHZvaWQgYmFjaygpOwot
ICAgIHZvaWQgZm9yd2FyZCgpOwotICAgIHZvaWQgc3RvcCgpOwotICAgIHZvaWQgcmVsb2FkKCk7
CisgICAgUV9JTlZPS0FCTEUgdm9pZCBnb0JhY2soKTsKKyAgICBRX0lOVk9LQUJMRSB2b2lkIGdv
Rm9yd2FyZCgpOworICAgIFFfSU5WT0tBQkxFIHZvaWQgc3RvcCgpOworICAgIFFfSU5WT0tBQkxF
IHZvaWQgcmVsb2FkKCk7CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIG5hdmlnYXRpb25TdGF0ZUNo
YW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXJQcml2YXRl
KiBkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9j
b21tb252aWV3dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy90c3RfY29tbW9udmlld3Rlc3Rz
LmNwcAppbmRleCBmNzI0ZjZhLi45Nzk2ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy90c3RfY29tbW9udmlld3Rlc3Rz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZp
ZXd0ZXN0cy90c3RfY29tbW9udmlld3Rlc3RzLmNwcApAQCAtMTE3LDEzICsxMTcsMTMgQEAgdm9p
ZCB0c3RfQ29tbW9uVmlld1Rlc3RzOjpiYWNrQW5kRm9yd2FyZCgpCiAgICAgUVZFUklGWSh2aWV3
QWJzdHJhY3Rpb24tPnVybCh1cmwpKTsKICAgICBRQ09NUEFSRSh1cmwucGF0aCgpLCBRTGF0aW4x
U3RyaW5nKFRFU1RTX1NPVVJDRV9ESVIgIi9odG1sL2Jhc2ljX3BhZ2UyLmh0bWwiKSk7CiAKLSAg
ICB2aWV3QWJzdHJhY3Rpb24tPnRyaWdnZXJOYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpCYWNr
KTsKKyAgICB2aWV3QWJzdHJhY3Rpb24tPmdvQmFjaygpOwogICAgIFFWRVJJRlkod2FpdEZvclNp
Z25hbCh2aWV3QWJzdHJhY3Rpb24uZGF0YSgpLCBTSUdOQUwobG9hZFN1Y2NlZWRlZCgpKSkpOwog
CiAgICAgUVZFUklGWSh2aWV3QWJzdHJhY3Rpb24tPnVybCh1cmwpKTsKICAgICBRQ09NUEFSRSh1
cmwucGF0aCgpLCBRTGF0aW4xU3RyaW5nKFRFU1RTX1NPVVJDRV9ESVIgIi9odG1sL2Jhc2ljX3Bh
Z2UuaHRtbCIpKTsKIAotICAgIHZpZXdBYnN0cmFjdGlvbi0+dHJpZ2dlck5hdmlnYXRpb25BY3Rp
b24oUXRXZWJLaXQ6OkZvcndhcmQpOworICAgIHZpZXdBYnN0cmFjdGlvbi0+Z29Gb3J3YXJkKCk7
CiAgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKHZpZXdBYnN0cmFjdGlvbi5kYXRhKCksIFNJR05B
TChsb2FkU3VjY2VlZGVkKCkpKSk7CiAKICAgICBRVkVSSUZZKHZpZXdBYnN0cmFjdGlvbi0+dXJs
KHVybCkpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgdHN0X0NvbW1vblZpZXdUZXN0czo6cmVs
b2FkKCkKICAgICBRVkVSSUZZKHZpZXdBYnN0cmFjdGlvbi0+dXJsKHVybCkpOwogICAgIFFDT01Q
QVJFKHVybC5wYXRoKCksIFFMYXRpbjFTdHJpbmcoVEVTVFNfU09VUkNFX0RJUiAiL2h0bWwvYmFz
aWNfcGFnZS5odG1sIikpOwogCi0gICAgdmlld0Fic3RyYWN0aW9uLT50cmlnZ2VyTmF2aWdhdGlv
bkFjdGlvbihRdFdlYktpdDo6UmVsb2FkKTsKKyAgICB2aWV3QWJzdHJhY3Rpb24tPnJlbG9hZCgp
OwogICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh2aWV3QWJzdHJhY3Rpb24uZGF0YSgpLCBTSUdO
QUwobG9hZFN1Y2NlZWRlZCgpKSkpOwogCiAgICAgUVZFUklGWSh2aWV3QWJzdHJhY3Rpb24tPnVy
bCh1cmwpKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIHRzdF9Db21tb25WaWV3VGVzdHM6OnN0
b3AoKQogICAgIFFDT01QQVJFKHVybC5wYXRoKCksIFFMYXRpbjFTdHJpbmcoVEVTVFNfU09VUkNF
X0RJUiAiL2h0bWwvYmFzaWNfcGFnZS5odG1sIikpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgdGVz
dCBzaG91bGQgYmUgZmxlc2hlZCBvdXQuIFJpZ2h0IG5vdyBpdCdzIGp1c3QgaGVyZSB0byBtYWtl
IHN1cmUgd2UgZG9uJ3QgY3Jhc2guCi0gICAgdmlld0Fic3RyYWN0aW9uLT50cmlnZ2VyTmF2aWdh
dGlvbkFjdGlvbihRdFdlYktpdDo6U3RvcCk7CisgICAgdmlld0Fic3RyYWN0aW9uLT5zdG9wKCk7
CiB9CiAKIHZvaWQgdHN0X0NvbW1vblZpZXdUZXN0czo6bG9hZFByb2dyZXNzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3Rz
L3dlYnZpZXdhYnN0cmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uY3BwCmluZGV4IDAyMWJj
ZGMuLjhkNDUzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fi
c3RyYWN0aW9uLmNwcApAQCAtOTcsMTIgKzk3LDI0IEBAIGludCBXZWJWaWV3QWJzdHJhY3Rpb246
OmxvYWRQcm9ncmVzcygpIGNvbnN0CiAgICAgcmV0dXJuIHRvdWNoVmlld1Byb2dyZXNzOwogfQog
Ci12b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6dHJpZ2dlck5hdmlnYXRpb25BY3Rpb24oUXRXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hpY2gpCit2b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6Z29C
YWNrKCkKIHsKLSAgICBRQWN0aW9uKiB0b3VjaEFjdGlvbiA9IHRvdWNoV2ViVmlldygpLT5wYWdl
KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPm5hdmlnYXRpb25BY3Rpb24od2hpY2gpOwotICAg
IHRvdWNoQWN0aW9uLT50cmlnZ2VyKCk7Ci0gICAgUUFjdGlvbiogZGVza3RvcEFjdGlvbiA9IGRl
c2t0b3BXZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPm5hdmlnYXRpb25BY3Rpb24o
d2hpY2gpOwotICAgIGRlc2t0b3BBY3Rpb24tPnRyaWdnZXIoKTsKKyAgICB0b3VjaFdlYlZpZXco
KS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5nb0JhY2soKTsKK30KKwordm9pZCBX
ZWJWaWV3QWJzdHJhY3Rpb246OmdvRm9yd2FyZCgpCit7CisgICAgdG91Y2hXZWJWaWV3KCktPnBh
Z2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Z29Gb3J3YXJkKCk7Cit9CisKK3ZvaWQgV2Vi
Vmlld0Fic3RyYWN0aW9uOjpzdG9wKCkKK3sKKyAgICB0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLT5u
YXZpZ2F0aW9uQ29udHJvbGxlcigpLT5zdG9wKCk7Cit9CisKK3ZvaWQgV2ViVmlld0Fic3RyYWN0
aW9uOjpyZWxvYWQoKQoreworICAgIHRvdWNoV2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25D
b250cm9sbGVyKCktPnJlbG9hZCgpOwogfQogCiB2b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6dG91
Y2hWaWV3TG9hZFN0YXJ0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3
YWJzdHJhY3Rpb24uaAppbmRleCBiNmJkMGQ2Li5jZDQ2YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJz
dHJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2Nv
bW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uaApAQCAtNDEsNyArNDEsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgdXJsKFFVcmwmKSBjb25zdDsKICAgICBpbnQgbG9hZFByb2dyZXNzKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHRyaWdnZXJOYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uKTsKKyAgICB2b2lkIGdvQmFjaygpOworICAgIHZvaWQgZ29Gb3J3YXJkKCk7
CisgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCByZWxvYWQoKTsKIAogUV9TSUdOQUxTOgogICAg
IHZvaWQgbG9hZFN0YXJ0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcWRlc2t0b3B3ZWJ2aWV3L3RzdF9xZGVza3RvcHdlYnZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xZGVza3RvcHdlYnZpZXcvdHN0
X3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggNThjYjBjNS4uZDQyZDM4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xZGVza3RvcHdlYnZpZXcvdHN0
X3FkZXNrdG9wd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xZGVza3RvcHdlYnZpZXcvdHN0X3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTE3LDcg
KzE3LDYgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKLSNpbmNsdWRl
IDxRQWN0aW9uPgogI2luY2x1ZGUgPFFTY29wZWRQb2ludGVyPgogI2luY2x1ZGUgPFF0VGVzdC9R
dFRlc3Q+CiAjaW5jbHVkZSA8cWRlc2t0b3B3ZWJ2aWV3Lmg+CkBAIC0zNCw4ICszMyw4IEBAIHBy
aXZhdGUgc2xvdHM6CiAgICAgdm9pZCBpbml0KCk7CiAgICAgdm9pZCBjbGVhbnVwKCk7CiAKLSAg
ICB2b2lkIG5hdmlnYXRpb25BY3Rpb25zU3RhdHVzQXRTdGFydHVwKCk7Ci0gICAgdm9pZCBzdG9w
QWN0aW9uRW5hYmxlZEFmdGVyTG9hZFN0YXJ0ZWQoKTsKKyAgICB2b2lkIG5hdmlnYXRpb25TdGF0
dXNBdFN0YXJ0dXAoKTsKKyAgICB2b2lkIHN0b3BFbmFibGVkQWZ0ZXJMb2FkU3RhcnRlZCgpOwog
CiBwcml2YXRlOgogICAgIGlubGluZSBRRGVza3RvcFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsK
QEAgLTYyLDIzICs2MSwxNSBAQCBpbmxpbmUgUURlc2t0b3BXZWJWaWV3KiB0c3RfUURlc2t0b3BX
ZWJWaWV3Ojp3ZWJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UURlc2t0b3BX
ZWJWaWV3Kj4obV93aW5kb3ctPndlYlZpZXcuZGF0YSgpKTsKIH0KIAotdm9pZCB0c3RfUURlc2t0
b3BXZWJWaWV3OjpuYXZpZ2F0aW9uQWN0aW9uc1N0YXR1c0F0U3RhcnR1cCgpCit2b2lkIHRzdF9R
RGVza3RvcFdlYlZpZXc6Om5hdmlnYXRpb25TdGF0dXNBdFN0YXJ0dXAoKQogewotICAgIFFBY3Rp
b24qIGJhY2tBY3Rpb24gPSB3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmJhY2tB
Y3Rpb24oKTsKLSAgICBRVkVSSUZZKGJhY2tBY3Rpb24pOwotICAgIFFDT01QQVJFKGJhY2tBY3Rp
b24tPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUod2ViVmlldygpLT5uYXZpZ2F0
aW9uQ29udHJvbGxlcigpLT5jYW5Hb0JhY2soKSwgZmFsc2UpOwogCi0gICAgUUFjdGlvbiogZm9y
d2FyZEFjdGlvbiA9IHdlYlZpZXcoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Zm9yd2FyZEFj
dGlvbigpOwotICAgIFFWRVJJRlkoZm9yd2FyZEFjdGlvbik7Ci0gICAgUUNPTVBBUkUoZm9yd2Fy
ZEFjdGlvbi0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPm5h
dmlnYXRpb25Db250cm9sbGVyKCktPmNhbkdvRm9yd2FyZCgpLCBmYWxzZSk7CiAKLSAgICBRQWN0
aW9uKiBzdG9wQWN0aW9uID0gd2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5zdG9w
QWN0aW9uKCk7Ci0gICAgUVZFUklGWShzdG9wQWN0aW9uKTsKLSAgICBRQ09NUEFSRShzdG9wQWN0
aW9uLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+bmF2aWdh
dGlvbkNvbnRyb2xsZXIoKS0+Y2FuU3RvcCgpLCBmYWxzZSk7CiAKLSAgICBRQWN0aW9uKiByZWxv
YWRBY3Rpb24gPSB3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPnJlbG9hZEFjdGlv
bigpOwotICAgIFFWRVJJRlkocmVsb2FkQWN0aW9uKTsKLSAgICBRQ09NUEFSRShyZWxvYWRBY3Rp
b24tPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUod2ViVmlldygpLT5uYXZpZ2F0
aW9uQ29udHJvbGxlcigpLT5jYW5SZWxvYWQoKSwgZmFsc2UpOwogfQogCiBjbGFzcyBMb2FkU3Rh
cnRlZENhdGNoZXIgOiBwdWJsaWMgUU9iamVjdCB7CkBAIC05NSw5ICs4Niw3IEBAIHB1YmxpYyBz
bG90czoKICAgICB7CiAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImZp
bmlzaGVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogCi0gICAgICAgIFFBY3Rpb24qIHN0b3BB
Y3Rpb24gPSBtX3dlYlZpZXctPm5hdmlnYXRpb25Db250cm9sbGVyKCktPnN0b3BBY3Rpb24oKTsK
LSAgICAgICAgUVZFUklGWShzdG9wQWN0aW9uKTsKLSAgICAgICAgUUNPTVBBUkUoc3RvcEFjdGlv
bi0+aXNFbmFibGVkKCksIHRydWUpOworICAgICAgICBRQ09NUEFSRShtX3dlYlZpZXctPm5hdmln
YXRpb25Db250cm9sbGVyKCktPmNhblN0b3AoKSwgdHJ1ZSk7CiAgICAgfQogCiBzaWduYWxzOgpA
QCAtMTA3LDE3ICs5NiwxNSBAQCBwcml2YXRlOgogICAgIFFEZXNrdG9wV2ViVmlldyogbV93ZWJW
aWV3OwogfTsKIAotdm9pZCB0c3RfUURlc2t0b3BXZWJWaWV3OjpzdG9wQWN0aW9uRW5hYmxlZEFm
dGVyTG9hZFN0YXJ0ZWQoKQordm9pZCB0c3RfUURlc2t0b3BXZWJWaWV3OjpzdG9wRW5hYmxlZEFm
dGVyTG9hZFN0YXJ0ZWQoKQogewotICAgIFFBY3Rpb24qIHN0b3BBY3Rpb24gPSB3ZWJWaWV3KCkt
Pm5hdmlnYXRpb25Db250cm9sbGVyKCktPnN0b3BBY3Rpb24oKTsKLSAgICBRVkVSSUZZKHN0b3BB
Y3Rpb24pOwotICAgIFFDT01QQVJFKHN0b3BBY3Rpb24tPmlzRW5hYmxlZCgpLCBmYWxzZSk7Cisg
ICAgUUNPTVBBUkUod2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5TdG9wKCks
IGZhbHNlKTsKIAogICAgIExvYWRTdGFydGVkQ2F0Y2hlciBjYXRjaGVyKHdlYlZpZXcoKSk7CiAg
ICAgd2ViVmlldygpLT5sb2FkKFFVcmw6OmZyb21Mb2NhbEZpbGUoUUxhdGluMVN0cmluZyhURVNU
U19TT1VSQ0VfRElSICIvaHRtbC9iYXNpY19wYWdlLmh0bWwiKSkpOwogICAgIHdhaXRGb3JTaWdu
YWwoJmNhdGNoZXIsIFNJR05BTChmaW5pc2hlZCgpKSk7CiAKLSAgICBRQ09NUEFSRShzdG9wQWN0
aW9uLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUod2ViVmlldygpLT5uYXZpZ2F0
aW9uQ29udHJvbGxlcigpLT5jYW5TdG9wKCksIHRydWUpOwogCiAgICAgd2FpdEZvclNpZ25hbCh3
ZWJWaWV3KCksIFNJR05BTChsb2FkU3VjY2VlZGVkKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRvdWNod2Vidmlldy90c3RfcXRvdWNo
d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0b3Vj
aHdlYnZpZXcvdHN0X3F0b3VjaHdlYnZpZXcuY3BwCmluZGV4IGRiY2I0ODAuLjU5NDY5NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRvdWNod2Vi
dmlldy90c3RfcXRvdWNod2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xdG91Y2h3ZWJ2aWV3L3RzdF9xdG91Y2h3ZWJ2aWV3LmNwcApAQCAtMTcs
NyArMTcsNiBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2luY2x1
ZGUgPFFBY3Rpb24+CiAjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KICNpbmNsdWRlIDxxdG91Y2h3
ZWJwYWdlLmg+CiAjaW5jbHVkZSA8cXRvdWNod2Vidmlldy5oPgpAQCAtMzYsNyArMzUsNyBAQCBw
cml2YXRlIHNsb3RzOgogICAgIHZvaWQgY2xlYW51cCgpOwogCiAgICAgdm9pZCBhY2Nlc3NQYWdl
KCk7Ci0gICAgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uc1N0YXR1c0F0U3RhcnR1cCgpOworICAgIHZv
aWQgbmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCgpOwogCiBwcml2YXRlOgogICAgIGlubGluZSBR
VG91Y2hXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3Q7CkBAIC03MywyMyArNzIsMTUgQEAgdm9pZCB0
c3RfUVRvdWNoV2ViVmlldzo6YWNjZXNzUGFnZSgpCiAgICAgUUNPTVBBUkUocGFnZVByb3BlcnR5
QWNjZXNzLCBwYWdlRGlyZWN0QWNjZXNzKTsKIH0KIAotdm9pZCB0c3RfUVRvdWNoV2ViVmlldzo6
bmF2aWdhdGlvbkFjdGlvbnNTdGF0dXNBdFN0YXJ0dXAoKQordm9pZCB0c3RfUVRvdWNoV2ViVmll
dzo6bmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCgpCiB7Ci0gICAgUUFjdGlvbiogYmFja0FjdGlv
biA9IHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5iYWNrQWN0aW9u
KCk7Ci0gICAgUVZFUklGWShiYWNrQWN0aW9uKTsKLSAgICBRQ09NUEFSRShiYWNrQWN0aW9uLT5p
c0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZp
Z2F0aW9uQ29udHJvbGxlcigpLT5jYW5Hb0JhY2soKSwgZmFsc2UpOwogCi0gICAgUUFjdGlvbiog
Zm9yd2FyZEFjdGlvbiA9IHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigp
LT5mb3J3YXJkQWN0aW9uKCk7Ci0gICAgUVZFUklGWShmb3J3YXJkQWN0aW9uKTsKLSAgICBRQ09N
UEFSRShmb3J3YXJkQWN0aW9uLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdl
YlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5Hb0ZvcndhcmQoKSwg
ZmFsc2UpOwogCi0gICAgUUFjdGlvbiogc3RvcEFjdGlvbiA9IHdlYlZpZXcoKS0+cGFnZSgpLT5u
YXZpZ2F0aW9uQ29udHJvbGxlcigpLT5zdG9wQWN0aW9uKCk7Ci0gICAgUVZFUklGWShzdG9wQWN0
aW9uKTsKLSAgICBRQ09NUEFSRShzdG9wQWN0aW9uLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAg
IFFDT01QQVJFKHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5T
dG9wKCksIGZhbHNlKTsKIAotICAgIFFBY3Rpb24qIHJlbG9hZEFjdGlvbiA9IHdlYlZpZXcoKS0+
cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5yZWxvYWRBY3Rpb24oKTsKLSAgICBRVkVS
SUZZKHJlbG9hZEFjdGlvbik7Ci0gICAgUUNPTVBBUkUocmVsb2FkQWN0aW9uLT5pc0VuYWJsZWQo
KSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29u
dHJvbGxlcigpLT5jYW5SZWxvYWQoKSwgZmFsc2UpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRleCA5Y2Y5NzhiLi4wNDIyNWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IHN0YXRpYyB2b2lkIGRpc3BhdGNoTG9hZFN1Y2NlZWRlZChXS0ZyYW1lUmVmIGZyYW1lLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+dXBk
YXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8p
LT51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudElu
Zm8pLT5sb2FkRGlkU3VjY2VlZCgpOwogfQogCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyB2b2lk
IGRpc3BhdGNoTG9hZEZhaWxlZChXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvLCBXS0Vycm9yCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZp
Z2F0aW9uQWN0aW9ucygpOworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVwZGF0
ZU5hdmlnYXRpb25TdGF0ZSgpOwogCiAgICAgaW50IGVycm9yQ29kZSA9IFdLRXJyb3JHZXRFcnJv
ckNvZGUoZXJyb3IpOwogICAgIGlmICh0b0ltcGwoZXJyb3IpLT5wbGF0Zm9ybUVycm9yKCkuaXND
YW5jZWxsYXRpb24oKSB8fCBlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlRnJhbWVMb2FkSW50ZXJy
dXB0ZWRCeVBvbGljeUNoYW5nZSB8fCBlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlUGx1Z0luV2ls
bEhhbmRsZUxvYWQpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgcXRfd2tfZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUCiAg
ICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygp
OworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmlnYXRpb25TdGF0
ZSgpOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmxvYWREaWRCZWdpbigpOwog
fQogCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBxdF93a19kaWRDb21taXRMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2UKICAgICBXZWJG
cmFtZVByb3h5KiB3a2ZyYW1lID0gdG9JbXBsKGZyYW1lKTsKICAgICBRU3RyaW5nIHVybFN0cih3
a2ZyYW1lLT51cmwoKSk7CiAgICAgUVVybCBxVXJsID0gdXJsU3RyOwotICAgIHRvUXRXZWJQYWdl
UHJveHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisgICAgdG9RdFdl
YlBhZ2VQcm94eShjbGllbnRJbmZvKS0+dXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7CiAgICAgdG9R
dFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlVXJsKHFVcmwpOwogICAgIHRvUXRX
ZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmxvYWREaWRDb21taXQoKTsKIH0KQEAgLTEyMyw3ICsx
MjMsNyBAQCB2b2lkIHF0X3drX2RpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgVwogICAgIFdlYkZyYW1lUHJveHkqIHdrZnJh
bWUgPSB0b0ltcGwoZnJhbWUpOwogICAgIFFTdHJpbmcgdXJsU3RyKHdrZnJhbWUtPnVybCgpKTsK
ICAgICBRVXJsIHFVcmwgPSB1cmxTdHI7Ci0gICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZv
KS0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVu
dEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB0b1F0V2ViUGFnZVByb3h5KGNs
aWVudEluZm8pLT5kaWRDaGFuZ2VVcmwocVVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDdkYmU0NzcuLjMyODI1YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAt
NDIsMTIgKzQyLDEwIEBACiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgogI2luY2x1
ZGUgIldLU3RyaW5nUXQuaCIKICNpbmNsdWRlICJXS1VSTFF0LmgiCi0jaW5jbHVkZSA8UUFjdGlv
bj4KICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVNb3Vz
ZUV2ZW50PgogI2luY2x1ZGUgPFFKU0VuZ2luZT4KICNpbmNsdWRlIDxRTWltZURhdGE+Ci0jaW5j
bHVkZSA8UVN0eWxlPgogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogI2luY2x1ZGUgPFFVbmRvU3Rh
Y2s+CiAjaW5jbHVkZSA8UXREZWJ1Zz4KQEAgLTExMSw3ICsxMDksNiBAQCBRdFdlYlBhZ2VQcm94
eTo6UXRXZWJQYWdlUHJveHkoUXRWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBRdFBvbGlj
eUludGVyZmFjZQogICAgICwgbV9sb2FkUHJvZ3Jlc3MoMCkKIHsKICAgICBBU1NFUlQodmlld0lu
dGVyZmFjZSk7Ci0gICAgbWVtc2V0KG1fYWN0aW9ucywgMCwgc2l6ZW9mKG1fYWN0aW9ucykpOwog
ICAgIG1fd2ViUGFnZVByb3h5ID0gbV9jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHRvSW1w
bChwYWdlR3JvdXBSZWYpKTsKICAgICBtX2hpc3RvcnkgPSBRV0tIaXN0b3J5UHJpdmF0ZTo6Y3Jl
YXRlSGlzdG9yeSh0aGlzLCBtX3dlYlBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpOwogICAg
IGlmICghY29udGV4dFJlZikKQEAgLTQzMCw2NiArNDI3LDY1IEBAIHZvaWQgUXRXZWJQYWdlUHJv
eHk6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVjdCYgYXJlYSkKICAgICAgICAg
cGFpbnRlci0+ZmlsbFJlY3QoYXJlYSwgUXQ6OndoaXRlKTsKIH0KIAotdm9pZCBRdFdlYlBhZ2VQ
cm94eTo6dXBkYXRlQWN0aW9uKFF0V2ViUGFnZVByb3h5OjpXZWJBY3Rpb24gYWN0aW9uKQorYm9v
bCBRdFdlYlBhZ2VQcm94eTo6Y2FuR29CYWNrKCkgY29uc3QKIHsKLSAgICBRQWN0aW9uKiBhID0g
bV9hY3Rpb25zW2FjdGlvbl07Ci0gICAgaWYgKCFhKQotICAgICAgICByZXR1cm47CisgICAgcmV0
dXJuIG1fd2ViUGFnZVByb3h5LT5jYW5Hb0JhY2soKTsKK30KKwordm9pZCBRdFdlYlBhZ2VQcm94
eTo6Z29CYWNrKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+Z29CYWNrKCk7Cit9CisKK2Jvb2wg
UXRXZWJQYWdlUHJveHk6OmNhbkdvRm9yd2FyZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2Vi
UGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsKK30KKwordm9pZCBRdFdlYlBhZ2VQcm94eTo6Z29G
b3J3YXJkKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+Z29Gb3J3YXJkKCk7Cit9CiAKK2Jvb2wg
UXRXZWJQYWdlUHJveHk6OmNhblN0b3AoKSBjb25zdAorewogICAgIFJlZlB0cjxXZWJLaXQ6Oldl
YkZyYW1lUHJveHk+IG1haW5GcmFtZSA9IG1fd2ViUGFnZVByb3h5LT5tYWluRnJhbWUoKTsKKyAg
ICByZXR1cm4gbWFpbkZyYW1lICYmICEoV2ViRnJhbWVQcm94eTo6TG9hZFN0YXRlRmluaXNoZWQg
PT0gbWFpbkZyYW1lLT5sb2FkU3RhdGUoKSk7Cit9CiAKLSAgICBib29sIGVuYWJsZWQgPSBhLT5p
c0VuYWJsZWQoKTsKLQotICAgIHN3aXRjaCAoYWN0aW9uKSB7Ci0gICAgY2FzZSBRdFdlYlBhZ2VQ
cm94eTo6QmFjazoKLSAgICAgICAgZW5hYmxlZCA9IG1fd2ViUGFnZVByb3h5LT5jYW5Hb0JhY2so
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBRdFdlYlBhZ2VQcm94eTo6Rm9yd2FyZDoKLSAg
ICAgICAgZW5hYmxlZCA9IG1fd2ViUGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBRdFdlYlBhZ2VQcm94eTo6U3RvcDoKLSAgICAgICAgZW5hYmxlZCA9
IG1haW5GcmFtZSAmJiAhKFdlYkZyYW1lUHJveHk6OkxvYWRTdGF0ZUZpbmlzaGVkID09IG1haW5G
cmFtZS0+bG9hZFN0YXRlKCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFF0V2ViUGFnZVBy
b3h5OjpSZWxvYWQ6Ci0gICAgICAgIGlmIChtYWluRnJhbWUpCi0gICAgICAgICAgICBlbmFibGVk
ID0gKFdlYkZyYW1lUHJveHk6OkxvYWRTdGF0ZUZpbmlzaGVkID09IG1haW5GcmFtZS0+bG9hZFN0
YXRlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbmFibGVkID0gbV93ZWJQYWdlUHJv
eHktPmJhY2tGb3J3YXJkTGlzdCgpLT5jdXJyZW50SXRlbSgpOwotICAgICAgICBicmVhazsKLSAg
ICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Cit2b2lkIFF0
V2ViUGFnZVByb3h5OjpzdG9wKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+c3RvcExvYWRpbmco
KTsKK30KIAotICAgIGEtPnNldEVuYWJsZWQoZW5hYmxlZCk7Citib29sIFF0V2ViUGFnZVByb3h5
OjpjYW5SZWxvYWQoKSBjb25zdAoreworICAgIFJlZlB0cjxXZWJLaXQ6OldlYkZyYW1lUHJveHk+
IG1haW5GcmFtZSA9IG1fd2ViUGFnZVByb3h5LT5tYWluRnJhbWUoKTsKKyAgICBpZiAobWFpbkZy
YW1lKQorICAgICAgICByZXR1cm4gKFdlYkZyYW1lUHJveHk6OkxvYWRTdGF0ZUZpbmlzaGVkID09
IG1haW5GcmFtZS0+bG9hZFN0YXRlKCkpOworICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS0+YmFj
a0ZvcndhcmRMaXN0KCktPmN1cnJlbnRJdGVtKCk7CiB9CiAKLXZvaWQgUXRXZWJQYWdlUHJveHk6
OnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCkKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OnJlbG9hZCgp
CiB7Ci0gICAgdXBkYXRlQWN0aW9uKFF0V2ViUGFnZVByb3h5OjpCYWNrKTsKLSAgICB1cGRhdGVB
Y3Rpb24oUXRXZWJQYWdlUHJveHk6OkZvcndhcmQpOwotICAgIHVwZGF0ZUFjdGlvbihRdFdlYlBh
Z2VQcm94eTo6U3RvcCk7Ci0gICAgdXBkYXRlQWN0aW9uKFF0V2ViUGFnZVByb3h5OjpSZWxvYWQp
OworICAgIG1fd2ViUGFnZVByb3h5LT5yZWxvYWQoLyogcmVsb2FkRnJvbU9yaWdpbiAqLyB0cnVl
KTsKIH0KIAotdm9pZCBRdFdlYlBhZ2VQcm94eTo6d2ViQWN0aW9uVHJpZ2dlcmVkKGJvb2wgY2hl
Y2tlZCkKK3ZvaWQgUXRXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25TdGF0ZUNoYW5nZWQoKQogewot
ICAgIFFBY3Rpb24qIGEgPSBxb2JqZWN0X2Nhc3Q8UUFjdGlvbio+KHNlbmRlcigpKTsKLSAgICBp
ZiAoIWEpCi0gICAgICAgIHJldHVybjsKLSAgICBRdFdlYlBhZ2VQcm94eTo6V2ViQWN0aW9uIGFj
dGlvbiA9IHN0YXRpY19jYXN0PFF0V2ViUGFnZVByb3h5OjpXZWJBY3Rpb24+KGEtPmRhdGEoKS50
b0ludCgpKTsKLSAgICB0cmlnZ2VyQWN0aW9uKGFjdGlvbiwgY2hlY2tlZCk7CisgICAgZW1pdCB1
cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTsKIH0KIAogdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkUmVs
YXVuY2hQcm9jZXNzKCkKIHsKLSAgICB1cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOworICAgIHVw
ZGF0ZU5hdmlnYXRpb25TdGF0ZSgpOwogICAgIG1fdmlld0ludGVyZmFjZS0+ZGlkUmVsYXVuY2hQ
cm9jZXNzKCk7CiAgICAgc2V0RHJhd2luZ0FyZWFTaXplKG1fdmlld0ludGVyZmFjZS0+ZHJhd2lu
Z0FyZWFTaXplKCkpOwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2go
KQogewotICAgIHVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisgICAgdXBkYXRlTmF2aWdhdGlv
blN0YXRlKCk7CiAgICAgbV92aWV3SW50ZXJmYWNlLT5wcm9jZXNzRGlkQ3Jhc2goKTsKIH0KIApA
QCAtNTcwLDEwNCArNTY2LDYgQEAgUVdLSGlzdG9yeSogUXRXZWJQYWdlUHJveHk6Omhpc3Rvcnko
KSBjb25zdAogICAgIHJldHVybiBtX2hpc3Rvcnk7CiB9CiAKLXZvaWQgUXRXZWJQYWdlUHJveHk6
OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIHdlYkFjdGlvbiwgYm9vbCkKLXsKLSAgICBzd2l0Y2gg
KHdlYkFjdGlvbikgewotICAgIGNhc2UgQmFjazoKLSAgICAgICAgbV93ZWJQYWdlUHJveHktPmdv
QmFjaygpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGb3J3YXJkOgotICAgICAgICBtX3dl
YlBhZ2VQcm94eS0+Z29Gb3J3YXJkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFN0b3A6
Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LT5zdG9wTG9hZGluZygpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBSZWxvYWQ6Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LT5yZWxvYWQoLyogcmVs
b2FkRnJvbU9yaWdpbiAqLyB0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotUUFjdGlvbiogUXRXZWJQ
YWdlUHJveHk6Om5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hp
Y2gpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3aGljaCkgewotICAgIGNhc2UgUXRXZWJLaXQ6OkJh
Y2s6Ci0gICAgICAgIHJldHVybiBhY3Rpb24oUXRXZWJQYWdlUHJveHk6OkJhY2spOwotICAgIGNh
c2UgUXRXZWJLaXQ6OkZvcndhcmQ6Ci0gICAgICAgIHJldHVybiBhY3Rpb24oUXRXZWJQYWdlUHJv
eHk6OkZvcndhcmQpOwotICAgIGNhc2UgUXRXZWJLaXQ6OlJlbG9hZDoKLSAgICAgICAgcmV0dXJu
IGFjdGlvbihRdFdlYlBhZ2VQcm94eTo6UmVsb2FkKTsKLSAgICBjYXNlIFF0V2ViS2l0OjpTdG9w
OgotICAgICAgICByZXR1cm4gYWN0aW9uKFF0V2ViUGFnZVByb3h5OjpTdG9wKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gMDsKLX0KLQotUUFjdGlvbiogUXRXZWJQYWdlUHJveHk6OmFjdGlvbihXZWJB
Y3Rpb24gYWN0aW9uKSBjb25zdAotewotICAgIGlmIChhY3Rpb24gPT0gUXRXZWJQYWdlUHJveHk6
Ok5vV2ViQWN0aW9uIHx8IGFjdGlvbiA+PSBXZWJBY3Rpb25Db3VudCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBpZiAobV9hY3Rpb25zW2FjdGlvbl0pCi0gICAgICAgIHJldHVybiBtX2FjdGlv
bnNbYWN0aW9uXTsKLQotICAgIFFTdHJpbmcgdGV4dDsKLSAgICBRSWNvbiBpY29uOwotICAgIFFT
dHlsZSogc3R5bGUgPSBxb2JqZWN0X2Nhc3Q8UUFwcGxpY2F0aW9uKj4oUUNvcmVBcHBsaWNhdGlv
bjo6aW5zdGFuY2UoKSktPnN0eWxlKCk7Ci0gICAgYm9vbCBjaGVja2FibGUgPSBmYWxzZTsKLSAg
ICBRdFdlYlBhZ2VQcm94eSogbXV0YWJsZVNlbGYgPSBjb25zdF9jYXN0PFF0V2ViUGFnZVByb3h5
Kj4odGhpcyk7Ci0KLSAgICBzd2l0Y2ggKGFjdGlvbikgewotICAgIGNhc2UgQmFjazoKLSAgICAg
ICAgdGV4dCA9IGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpOwotICAgICAgICBpY29uID0gc3R5
bGUtPnN0YW5kYXJkSWNvbihRU3R5bGU6OlNQX0Fycm93QmFjayk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRm9yd2FyZDoKLSAgICAgICAgdGV4dCA9IGNvbnRleHRNZW51SXRlbVRhZ0dvRm9y
d2FyZCgpOwotICAgICAgICBpY29uID0gc3R5bGUtPnN0YW5kYXJkSWNvbihRU3R5bGU6OlNQX0Fy
cm93Rm9yd2FyZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RvcDoKLSAgICAgICAgdGV4
dCA9IGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKTsKLSAgICAgICAgaWNvbiA9IHN0eWxlLT5zdGFu
ZGFyZEljb24oUVN0eWxlOjpTUF9Ccm93c2VyU3RvcCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUmVsb2FkOgotICAgICAgICB0ZXh0ID0gY29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCk7Ci0g
ICAgICAgIGljb24gPSBzdHlsZS0+c3RhbmRhcmRJY29uKFFTdHlsZTo6U1BfQnJvd3NlclJlbG9h
ZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVW5kbzogewotICAgICAgICBRQWN0aW9uKiB1
bmRvQWN0aW9uID0gbV91bmRvU3RhY2stPmNyZWF0ZVVuZG9BY3Rpb24obXV0YWJsZVNlbGYpOwot
ICAgICAgICBtX2FjdGlvbnNbYWN0aW9uXSA9IHVuZG9BY3Rpb247Ci0gICAgICAgIHJldHVybiB1
bmRvQWN0aW9uOwotICAgIH0KLSAgICBjYXNlIFJlZG86IHsKLSAgICAgICAgUUFjdGlvbiogcmVk
b0FjdGlvbiA9IG1fdW5kb1N0YWNrLT5jcmVhdGVSZWRvQWN0aW9uKG11dGFibGVTZWxmKTsKLSAg
ICAgICAgbV9hY3Rpb25zW2FjdGlvbl0gPSByZWRvQWN0aW9uOwotICAgICAgICByZXR1cm4gcmVk
b0FjdGlvbjsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBRQWN0aW9uKiBhID0gbmV3IFFBY3Rpb24obXV0YWJsZVNl
bGYpOwotICAgIGEtPnNldFRleHQodGV4dCk7Ci0gICAgYS0+c2V0RGF0YShhY3Rpb24pOwotICAg
IGEtPnNldENoZWNrYWJsZShjaGVja2FibGUpOwotICAgIGEtPnNldEljb24oaWNvbik7Ci0KLSAg
ICBjb25uZWN0KGEsIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkpLCB0aGlzLCBTTE9UKHdlYkFjdGlv
blRyaWdnZXJlZChib29sKSkpOwotCi0gICAgbV9hY3Rpb25zW2FjdGlvbl0gPSBhOwotICAgIG11
dGFibGVTZWxmLT51cGRhdGVBY3Rpb24oYWN0aW9uKTsKLSAgICByZXR1cm4gYTsKLX0KLQogdm9p
ZCBRdFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFn
RGF0YSwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSkKIHsKICAgICBRSW1h
Z2UgZHJhZ1FJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmgKaW5kZXggZTIwOGRhZi4uNDY1MjgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTEzOSw4ICsxMzksMTUgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFSZWN0Jik7CiAKLSAgICB2b2lkIHVwZGF0
ZUFjdGlvbihRdFdlYlBhZ2VQcm94eTo6V2ViQWN0aW9uIGFjdGlvbik7Ci0gICAgdm9pZCB1cGRh
dGVOYXZpZ2F0aW9uQWN0aW9ucygpOworICAgIGJvb2wgY2FuR29CYWNrKCkgY29uc3Q7CisgICAg
dm9pZCBnb0JhY2soKTsKKyAgICBib29sIGNhbkdvRm9yd2FyZCgpIGNvbnN0OworICAgIHZvaWQg
Z29Gb3J3YXJkKCk7CisgICAgYm9vbCBjYW5TdG9wKCkgY29uc3Q7CisgICAgdm9pZCBzdG9wKCk7
CisgICAgYm9vbCBjYW5SZWxvYWQoKSBjb25zdDsKKyAgICB2b2lkIHJlbG9hZCgpOworCiAgICAg
dm9pZCB1cGRhdGVFZGl0b3JBY3Rpb25zKCk7CiAKICAgICBXS1BhZ2VSZWYgcGFnZVJlZigpIGNv
bnN0OwpAQCAtMTU0LDExICsxNjEsNiBAQCBwdWJsaWM6CiAKICAgICBRU3RyaW5nIHRpdGxlKCkg
Y29uc3Q7CiAKLSAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uKSBjb25zdDsKLQotICAgIFFBY3Rpb24qIGFjdGlvbihXZWJBY3Rpb24gYWN0aW9u
KSBjb25zdDsKLSAgICB2b2lkIHRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGFjdGlvbiwgYm9vbCBj
aGVja2VkID0gZmFsc2UpOwotCiAgICAgdm9pZCBzZXRDdXN0b21Vc2VyQWdlbnQoY29uc3QgUVN0
cmluZyYpOwogICAgIFFTdHJpbmcgY3VzdG9tVXNlckFnZW50KCkgY29uc3Q7CiAKQEAgLTE3Mywx
MSArMTc1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZ2VJc1Zpc2libGUoYm9vbCk7CiAK
IHB1YmxpYyBRX1NMT1RTOgotICAgIHZvaWQgd2ViQWN0aW9uVHJpZ2dlcmVkKGJvb2wgY2hlY2tl
ZCk7CisgICAgdm9pZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKCk7CiAKIHB1YmxpYzoKICAgICBR
X1NJR05BTCB2b2lkIHNjcm9sbFJlcXVlc3RlZChpbnQgZHgsIGludCBkeSk7CiAgICAgUV9TSUdO
QUwgdm9pZCB6b29tYWJsZUFyZWFGb3VuZChjb25zdCBRUmVjdCYpOworICAgIFFfU0lHTkFMIHZv
aWQgdXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGluaXQo
KTsKQEAgLTIwMCw4ICsyMDMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb250ZXh0PiBt
X2NvbnRleHQ7CiAgICAgUVdLSGlzdG9yeSogbV9oaXN0b3J5OwogCi0gICAgbXV0YWJsZSBRQWN0
aW9uKiBtX2FjdGlvbnNbUXRXZWJQYWdlUHJveHk6OldlYkFjdGlvbkNvdW50XTsKLSAgICBtdXRh
YmxlIFFXZWJQcmVmZXJlbmNlcyogbV9wcmVmZXJlbmNlczsKKyAgICBtdXRhYmxlIFFXS1ByZWZl
cmVuY2VzKiBtX3ByZWZlcmVuY2VzOwogCiAgICAgT3duUHRyPFFVbmRvU3RhY2s+IG1fdW5kb1N0
YWNrOwogICAgIGludCBtX2xvYWRQcm9ncmVzczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1NTI4M2MxLi40ODE5YmE2IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTEtMTAtMjAgIFplbm8gQWxiaXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gUmVtb3ZlIFFBY3Rpb24gZnJvbSBNaW5pQnJvd3NlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA1MjUKKworICAgICAgICBJ
biBvcmRlciB0byByZXdyaXRlIE1pbmlCcm93c2VyIGluIFFNTCB3ZSBuZWVkIGEgc3VpdGFibGUK
KyAgICAgICAgbWVjaGFuaXNtIGZvciB0cmlnZ2VyaW5nIG5hdmlnYXRpb24gYWN0aW9ucy4KKyAg
ICAgICAgRHVlIHRvIHRoZSBRdFdpZGdldHMgZGVwZW5kZW5jeSBvZiBRQWN0aW9uIHRoZSBjdXJy
ZW50CisgICAgICAgIHNvbHV0aW9uIGlzIG5vdCBzdWl0YWJsZSBhbnltb3JlLiBUaGVyZWZvcmUg
d2UgaW50cm9kdWNlCisgICAgICAgIGludm9rYWJsZSBtZXRob2RzIGFuZCBleHBvcnQgcHJvcGVy
dGllcyBpbiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIuCisKKyAgICAgICAgUGF0Y2ggYnkgSm9j
ZWx5biBUdXJjb3R0ZSA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+LAorICAgICAgICAgICAg
ICAgICBaZW5vIEFsYmlzc2VyIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jy
b3dzZXJWaWV3LmNwcDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwOgorICAgICAgICAoQnJv
d3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyk6CisKIDIwMTEtMTAtMjAgIEhhbyBaaGVuZyAgPHpo
ZW5naGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlZHVjZSBkZXBlbmRl
bmNpZXMgb2YgSW1hZ2VEaWZmIHRvIGNvbXBpbGUgaXQgZm9yIEFuZHJvaWQuCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9Ccm93c2VyVmlldy5jcHAKaW5kZXggNDFjZWZjNy4uZjFjNmYyYyAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L0Jyb3dzZXJWaWV3LmNwcApAQCAtODUsMTIgKzg1LDMgQEAgUURlc2t0b3BXZWJWaWV3
KiBCcm93c2VyVmlldzo6ZGVza3RvcFdlYlZpZXcoKSBjb25zdAogICAgIHJldHVybiBxb2JqZWN0
X2Nhc3Q8UURlc2t0b3BXZWJWaWV3Kj4obV9pdGVtKTsKIH0KIAotUUFjdGlvbiogQnJvd3NlclZp
ZXc6Om5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hpY2gpIGNv
bnN0Ci17Ci0gICAgaWYgKGRlc2t0b3BXZWJWaWV3KCkpCi0gICAgICAgIHJldHVybiBkZXNrdG9w
V2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5uYXZpZ2F0aW9uQWN0aW9uKHdoaWNo
KTsKLSAgICBpZiAodG91Y2hXZWJWaWV3KCkpCi0gICAgICAgIHJldHVybiB0b3VjaFdlYlZpZXco
KS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5uYXZpZ2F0aW9uQWN0aW9uKHdoaWNo
KTsKLSAgICBRX0FTU0VSVChmYWxzZSk7Ci0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQv
QnJvd3NlclZpZXcuaAppbmRleCA1MDI5ZGE0Li4xZTVlY2RiIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jy
b3dzZXJWaWV3LmgKQEAgLTQ3LDggKzQ3LDYgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZChjb25z
dCBRU3RyaW5nJik7CiAgICAgUVNHSXRlbSogdmlldygpIGNvbnN0OwogCi0gICAgUUFjdGlvbiog
bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbiB3aGljaCkgY29uc3Q7
Ci0KICAgICBRVG91Y2hXZWJWaWV3KiB0b3VjaFdlYlZpZXcoKSBjb25zdDsKICAgICBRRGVza3Rv
cFdlYlZpZXcqIGRlc2t0b3BXZWJWaWV3KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJv
d3NlcldpbmRvdy5jcHAKaW5kZXggZjJmNDVhYy4uMzExNDU1MiAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTE0MywxMyArMTQzLDYgQEAgQnJvd3NlcldpbmRvdzo6
QnJvd3NlcldpbmRvdyhXaW5kb3dPcHRpb25zKiBvcHRpb25zKQogICAgIG1fYWRkcmVzc0JhciA9
IG5ldyBRTGluZUVkaXQoKTsKICAgICBjb25uZWN0KG1fYWRkcmVzc0JhciwgU0lHTkFMKHJldHVy
blByZXNzZWQoKSksIFNMT1QoY2hhbmdlTG9jYXRpb24oKSkpOwogCi0gICAgUVRvb2xCYXIqIGJh
ciA9IGFkZFRvb2xCYXIoIk5hdmlnYXRpb24iKTsKLSAgICBiYXItPmFkZEFjdGlvbihtX2Jyb3dz
ZXItPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OkJhY2spKTsKLSAgICBiYXItPmFkZEFjdGlv
bihtX2Jyb3dzZXItPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OkZvcndhcmQpKTsKLSAgICBi
YXItPmFkZEFjdGlvbihtX2Jyb3dzZXItPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OlJlbG9h
ZCkpOwotICAgIGJhci0+YWRkQWN0aW9uKG1fYnJvd3Nlci0+bmF2aWdhdGlvbkFjdGlvbihRdFdl
YktpdDo6U3RvcCkpOwotICAgIGJhci0+YWRkV2lkZ2V0KG1fYWRkcmVzc0Jhcik7Ci0KICAgICBR
U2hvcnRjdXQqIHNlbGVjdEFkZHJlc3NCYXIgPSBuZXcgUVNob3J0Y3V0KFF0OjpDVFJMIHwgUXQ6
OktleV9MLCB0aGlzKTsKICAgICBjb25uZWN0KHNlbGVjdEFkZHJlc3NCYXIsIFNJR05BTChhY3Rp
dmF0ZWQoKSksIHRoaXMsIFNMT1Qob3BlbkxvY2F0aW9uKCkpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112167</attachid>
            <date>2011-10-24 02:51:56 -0700</date>
            <delta_ts>2011-10-26 06:31:29 -0700</delta_ts>
            <desc>patch for review.</desc>
            <filename>70525_20111024-114954.patch</filename>
            <type>text/plain</type>
            <size>34205</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhY2ZjOTBmLi5hMGZmMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIg
QEAKKzIwMTEtMTAtMjQgIFplbm8gQWxiaXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdW1dLMl0gUmVtb3ZlIFFBY3Rpb24gZnJvbSBNaW5pQnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA1MjUKKworICAg
ICAgICBJbiBvcmRlciB0byByZXdyaXRlIE1pbmlCcm93c2VyIGluIFFNTCB3ZSBuZWVkIGEgc3Vp
dGFibGUKKyAgICAgICAgbWVjaGFuaXNtIGZvciB0cmlnZ2VyaW5nIG5hdmlnYXRpb24gYWN0aW9u
cy4KKyAgICAgICAgRHVlIHRvIHRoZSBRdFdpZGdldHMgZGVwZW5kZW5jeSBvZiBRQWN0aW9uIHRo
ZSBjdXJyZW50CisgICAgICAgIHNvbHV0aW9uIGlzIG5vdCBzdWl0YWJsZSBhbnltb3JlLiBUaGVy
ZWZvcmUgd2UgaW50cm9kdWNlCisgICAgICAgIGludm9rYWJsZSBtZXRob2RzIGFuZCBleHBvcnQg
cHJvcGVydGllcyBpbiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIuCisKKyAgICAgICAgUGF0Y2gg
YnkgSm9jZWx5biBUdXJjb3R0ZSA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+LAorICAgICAg
ICAgICAgICAgICBaZW5vIEFsYmlzc2VyIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvV0tWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0eXBlcy5oOiBSZW1vdmVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6UVdlYk5hdmlnYXRpb25Db250cm9sbGVyKToKKyAg
ICAgICAgKFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6Y2FuR29CYWNrKToKKyAgICAgICAgKFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6Y2FuR29Gb3J3YXJkKToKKyAgICAgICAgKFFXZWJOYXZp
Z2F0aW9uQ29udHJvbGxlcjo6Y2FuU3RvcCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkNvbnRy
b2xsZXI6OmNhblJlbG9hZCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6Omdv
QmFjayk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmdvRm9yd2FyZCk6Cisg
ICAgICAgIChRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OnN0b3ApOgorICAgICAgICAoUVdlYk5h
dmlnYXRpb25Db250cm9sbGVyOjpyZWxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9jb21tb252aWV3dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHA6CisgICAgICAgICh0
c3RfQ29tbW9uVmlld1Rlc3RzOjpiYWNrQW5kRm9yd2FyZCk6CisgICAgICAgICh0c3RfQ29tbW9u
Vmlld1Rlc3RzOjpyZWxvYWQpOgorICAgICAgICAodHN0X0NvbW1vblZpZXdUZXN0czo6c3RvcCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmll
d2Fic3RyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6Z29CYWNrKToK
KyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6Z29Gb3J3YXJkKToKKyAgICAgICAgKFdlYlZp
ZXdBYnN0cmFjdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OnJlbG9h
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vi
dmlld2Fic3RyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xZGVz
a3RvcHdlYnZpZXcvdHN0X3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUURlc2t0
b3BXZWJWaWV3OjpuYXZpZ2F0aW9uU3RhdHVzQXRTdGFydHVwKToKKyAgICAgICAgKExvYWRTdGFy
dGVkQ2F0Y2hlcjo6b25Mb2FkU3RhcnRlZCk6CisgICAgICAgICh0c3RfUURlc2t0b3BXZWJWaWV3
OjpzdG9wRW5hYmxlZEFmdGVyTG9hZFN0YXJ0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcXRvdWNod2Vidmlldy90c3RfcXRvdWNod2Vidmlldy5jcHA6CisgICAgICAgICh0
c3RfUVRvdWNoV2ViVmlldzo6bmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCk6CisgICAgICAgICog
VUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwOgorICAgICAgICAoZGlzcGF0Y2hMb2FkU3VjY2Vl
ZGVkKToKKyAgICAgICAgKGRpc3BhdGNoTG9hZEZhaWxlZCk6CisgICAgICAgIChxdF93a19kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKHF0X3drX2RpZENvbW1pdExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChxdF93a19kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChRdFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkpOgorICAgICAgICAoUXRXZWJQYWdl
UHJveHk6OmNhbkdvQmFjayk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Z29CYWNrKToKKyAg
ICAgICAgKFF0V2ViUGFnZVByb3h5OjpjYW5Hb0ZvcndhcmQpOgorICAgICAgICAoUXRXZWJQYWdl
UHJveHk6OmdvRm9yd2FyZCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Y2FuU3RvcCk6Cisg
ICAgICAgIChRdFdlYlBhZ2VQcm94eTo6c3RvcCk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6
Y2FuUmVsb2FkKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAo
UXRXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAoUXRXZWJQ
YWdlUHJveHk6OmRpZFJlbGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6
cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBXZWJLaXQyQVBJLnByaToKKwogMjAxMS0xMC0yMSAgQ3NhYmEgT3N6dHJv
Z29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBCdWlsZGZpeCBm
b3IgbmV3ZXIgUXQ1LiBSZW1vdmUgZHVwbGljYXRlZCBkZWZpbmVzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKaW5kZXggZjY4OTJiZC4uMzFmNjcyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCkBAIC0yMCw3ICsyMCw2IEBACiAjaWZu
ZGVmIFdLVmlld19oCiAjZGVmaW5lIFdLVmlld19oCiAKLSNpbmNsdWRlIDxXZWJLaXQyL3F3ZWJr
aXR0eXBlcy5oPgogI2luY2x1ZGUgPFdlYktpdDIvcWRlc2t0b3B3ZWJ2aWV3Lmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9xdG91Y2h3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xdG91Y2h3ZWJw
YWdlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNr
dG9wd2Vidmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuaAppbmRleCBkOTNkNWQ4Li43NmFlODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNk
ZWZpbmUgcWRlc2t0b3B3ZWJ2aWV3X2gKIAogI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKLSNp
bmNsdWRlICJxd2Via2l0dHlwZXMuaCIKICNpbmNsdWRlIDxRVXJsPgogI2luY2x1ZGUgPFF0RGVj
bGFyYXRpdmUvcXNncGFpbnRlZGl0ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAppbmRl
eCBiOGQ2ZWE1Li4wYjhkMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnBhZ2UuaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBxdG91Y2h3ZWJw
YWdlX2gKIAogI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKLSNpbmNsdWRlICJxd2Via2l0dHlw
ZXMuaCIKIAogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgogI2luY2x1ZGUgPFFT
aGFyZWRQb2ludGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2Via2l0dHlwZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmtp
dHR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNGUxOWEuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Via2l0dHlwZXMuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5k
cmVhcyBLbGluZyA8a2xpbmdAd2Via2l0Lm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgcXdlYmtpdHR5cGVzX2gK
LSNkZWZpbmUgcXdlYmtpdHR5cGVzX2gKLQotbmFtZXNwYWNlIFF0V2ViS2l0IHsKLQotZW51bSBO
YXZpZ2F0aW9uQWN0aW9uIHsKLSAgICBCYWNrLAotICAgIEZvcndhcmQsCi0gICAgU3RvcCwKLSAg
ICBSZWxvYWQsCi0KLSAgICBOYXZpZ2F0aW9uQWN0aW9uQ291bnQKLX07Ci0KLX0KLQotI2VuZGlm
IC8qIHF3ZWJraXR0eXBlc19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5jcHAKaW5kZXggODdkMGNi
Yy4uNGIwYjg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmNwcApAQCAtMjMsNyArMjMsNiBAQAog
I2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiUXRXZWJQ
YWdlUHJveHkuaCIKLSNpbmNsdWRlICJxd2Via2l0dHlwZXMuaCIKIAogY2xhc3MgUVdlYk5hdmln
YXRpb25Db250cm9sbGVyUHJpdmF0ZSB7CiBwdWJsaWM6CkBAIC00MCw2ICszOSw3IEBAIFFXZWJO
YXZpZ2F0aW9uQ29udHJvbGxlcjo6UVdlYk5hdmlnYXRpb25Db250cm9sbGVyKFF0V2ViUGFnZVBy
b3h5KiBwYWdlUHJveHkpCiAgICAgOiBRT2JqZWN0KHBhZ2VQcm94eSkKICAgICAsIGQobmV3IFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlclByaXZhdGUocGFnZVByb3h5KSkKIHsKKyAgICBjb25uZWN0
KHBhZ2VQcm94eSwgU0lHTkFMKHVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpKSwgdGhpcywgU0lHTkFM
KG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQoKSkpOwogfQogCiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xs
ZXI6On5RV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIoKQpAQCAtNDcsNDcgKzQ3LDQyIEBAIFFXZWJO
YXZpZ2F0aW9uQ29udHJvbGxlcjo6flFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcigpCiAgICAgZGVs
ZXRlIGQ7CiB9CiAKLVFBY3Rpb24qIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6YmFja0FjdGlv
bigpIGNvbnN0Citib29sIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6Y2FuR29CYWNrKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZC0+cGFnZVByb3h5LT5uYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0
OjpCYWNrKTsKKyAgICByZXR1cm4gZC0+cGFnZVByb3h5LT5jYW5Hb0JhY2soKTsKIH0KIAotUUFj
dGlvbiogUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpmb3J3YXJkQWN0aW9uKCkgY29uc3QKK2Jv
b2wgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpjYW5Hb0ZvcndhcmQoKSBjb25zdAogewotICAg
IHJldHVybiBkLT5wYWdlUHJveHktPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OkZvcndhcmQp
OworICAgIHJldHVybiBkLT5wYWdlUHJveHktPmNhbkdvRm9yd2FyZCgpOwogfQogCi1RQWN0aW9u
KiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OnN0b3BBY3Rpb24oKSBjb25zdAorYm9vbCBRV2Vi
TmF2aWdhdGlvbkNvbnRyb2xsZXI6OmNhblN0b3AoKSBjb25zdAogewotICAgIHJldHVybiBkLT5w
YWdlUHJveHktPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OlN0b3ApOworICAgIHJldHVybiBk
LT5wYWdlUHJveHktPmNhblN0b3AoKTsKIH0KIAotUUFjdGlvbiogUVdlYk5hdmlnYXRpb25Db250
cm9sbGVyOjpyZWxvYWRBY3Rpb24oKSBjb25zdAorYm9vbCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xs
ZXI6OmNhblJlbG9hZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPnBhZ2VQcm94eS0+bmF2aWdh
dGlvbkFjdGlvbihRdFdlYktpdDo6UmVsb2FkKTsKKyAgICByZXR1cm4gZC0+cGFnZVByb3h5LT5j
YW5SZWxvYWQoKTsKIH0KIAotUUFjdGlvbiogUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpuYXZp
Z2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uIHdoaWNoKSBjb25zdAordm9p
ZCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmdvQmFjaygpCiB7Ci0gICAgcmV0dXJuIGQtPnBh
Z2VQcm94eS0+bmF2aWdhdGlvbkFjdGlvbih3aGljaCk7CisgICAgZC0+cGFnZVByb3h5LT5nb0Jh
Y2soKTsKIH0KIAotdm9pZCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmJhY2soKQordm9pZCBR
V2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmdvRm9yd2FyZCgpCiB7Ci0gICAgZC0+cGFnZVByb3h5
LT5uYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpCYWNrKS0+dHJpZ2dlcigpOwotfQotCi12b2lk
IFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6Zm9yd2FyZCgpCi17Ci0gICAgZC0+cGFnZVByb3h5
LT5uYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpGb3J3YXJkKS0+dHJpZ2dlcigpOworICAgIGQt
PnBhZ2VQcm94eS0+Z29Gb3J3YXJkKCk7CiB9CiAKIHZvaWQgUVdlYk5hdmlnYXRpb25Db250cm9s
bGVyOjpzdG9wKCkKIHsKLSAgICBkLT5wYWdlUHJveHktPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJL
aXQ6OlN0b3ApLT50cmlnZ2VyKCk7CisgICAgZC0+cGFnZVByb3h5LT5zdG9wKCk7CiB9CiAKIHZv
aWQgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpyZWxvYWQoKQogewotICAgIGQtPnBhZ2VQcm94
eS0+bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6UmVsb2FkKS0+dHJpZ2dlcigpOworICAgIGQt
PnBhZ2VQcm94eS0+cmVsb2FkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuaAppbmRleCA1N2FiNzQ3
Li5jMDk3ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogCiAj
aW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgotI2luY2x1ZGUgInF3ZWJraXR0eXBlcy5oIgogI2lu
Y2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgogCiBRVF9CRUdJTl9OQU1FU1BBQ0UKQEAgLTM1LDI3ICsz
NCwyOCBAQCBjbGFzcyBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXJQcml2YXRlOwogCiBjbGFzcyBR
V0VCS0lUX0VYUE9SVCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgUU9iamVjdCB7
CiAgICAgUV9PQkpFQ1QKLSAgICBRX1BST1BFUlRZKFFBY3Rpb24qIGJhY2tBY3Rpb24gUkVBRCBi
YWNrQWN0aW9uIENPTlNUQU5UIEZJTkFMKQotICAgIFFfUFJPUEVSVFkoUUFjdGlvbiogZm9yd2Fy
ZEFjdGlvbiBSRUFEIGZvcndhcmRBY3Rpb24gQ09OU1RBTlQgRklOQUwpCi0gICAgUV9QUk9QRVJU
WShRQWN0aW9uKiBzdG9wQWN0aW9uIFJFQUQgc3RvcEFjdGlvbiBDT05TVEFOVCBGSU5BTCkKLSAg
ICBRX1BST1BFUlRZKFFBY3Rpb24qIHJlbG9hZEFjdGlvbiBSRUFEIHJlbG9hZEFjdGlvbiBDT05T
VEFOVCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKGJvb2wgY2FuR29CYWNrIFJFQUQgY2FuR29CYWNr
IE5PVElGWSBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoYm9v
bCBjYW5Hb0ZvcndhcmQgUkVBRCBjYW5Hb0ZvcndhcmQgTk9USUZZIG5hdmlnYXRpb25TdGF0ZUNo
YW5nZWQgRklOQUwpCisgICAgUV9QUk9QRVJUWShib29sIGNhblN0b3AgUkVBRCBjYW5TdG9wIE5P
VElGWSBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoYm9vbCBj
YW5SZWxvYWQgUkVBRCBjYW5SZWxvYWQgTk9USUZZIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQgRklO
QUwpCiBwdWJsaWM6CiAgICAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKFF0V2ViUGFnZVByb3h5
Kik7CiAgICAgflFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcigpOwogCi0gICAgUUFjdGlvbiogYmFj
a0FjdGlvbigpIGNvbnN0OwotICAgIFFBY3Rpb24qIGZvcndhcmRBY3Rpb24oKSBjb25zdDsKLSAg
ICBRQWN0aW9uKiBzdG9wQWN0aW9uKCkgY29uc3Q7Ci0gICAgUUFjdGlvbiogcmVsb2FkQWN0aW9u
KCkgY29uc3Q7Ci0KLSAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uIHdoaWNoKSBjb25zdDsKKyAgICBib29sIGNhbkdvQmFjaygpIGNvbnN0Owor
ICAgIGJvb2wgY2FuR29Gb3J3YXJkKCkgY29uc3Q7CisgICAgYm9vbCBjYW5TdG9wKCkgY29uc3Q7
CisgICAgYm9vbCBjYW5SZWxvYWQoKSBjb25zdDsKIAogcHVibGljIHNsb3RzOgotICAgIHZvaWQg
YmFjaygpOwotICAgIHZvaWQgZm9yd2FyZCgpOworICAgIHZvaWQgZ29CYWNrKCk7CisgICAgdm9p
ZCBnb0ZvcndhcmQoKTsKICAgICB2b2lkIHN0b3AoKTsKICAgICB2b2lkIHJlbG9hZCgpOwogCitR
X1NJR05BTFM6CisgICAgdm9pZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKCk7CisKIHByaXZhdGU6
CiAgICAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyUHJpdmF0ZSogZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy90
c3RfY29tbW9udmlld3Rlc3RzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvY29tbW9udmlld3Rlc3RzL3RzdF9jb21tb252aWV3dGVzdHMuY3BwCmluZGV4IGY3MjRm
NmEuLjk3OTY4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvY29tbW9udmlld3Rlc3RzL3RzdF9jb21tb252aWV3dGVzdHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3RzdF9jb21t
b252aWV3dGVzdHMuY3BwCkBAIC0xMTcsMTMgKzExNywxMyBAQCB2b2lkIHRzdF9Db21tb25WaWV3
VGVzdHM6OmJhY2tBbmRGb3J3YXJkKCkKICAgICBRVkVSSUZZKHZpZXdBYnN0cmFjdGlvbi0+dXJs
KHVybCkpOwogICAgIFFDT01QQVJFKHVybC5wYXRoKCksIFFMYXRpbjFTdHJpbmcoVEVTVFNfU09V
UkNFX0RJUiAiL2h0bWwvYmFzaWNfcGFnZTIuaHRtbCIpKTsKIAotICAgIHZpZXdBYnN0cmFjdGlv
bi0+dHJpZ2dlck5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OkJhY2spOworICAgIHZpZXdBYnN0
cmFjdGlvbi0+Z29CYWNrKCk7CiAgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKHZpZXdBYnN0cmFj
dGlvbi5kYXRhKCksIFNJR05BTChsb2FkU3VjY2VlZGVkKCkpKSk7CiAKICAgICBRVkVSSUZZKHZp
ZXdBYnN0cmFjdGlvbi0+dXJsKHVybCkpOwogICAgIFFDT01QQVJFKHVybC5wYXRoKCksIFFMYXRp
bjFTdHJpbmcoVEVTVFNfU09VUkNFX0RJUiAiL2h0bWwvYmFzaWNfcGFnZS5odG1sIikpOwogCi0g
ICAgdmlld0Fic3RyYWN0aW9uLT50cmlnZ2VyTmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6Rm9y
d2FyZCk7CisgICAgdmlld0Fic3RyYWN0aW9uLT5nb0ZvcndhcmQoKTsKICAgICBRVkVSSUZZKHdh
aXRGb3JTaWduYWwodmlld0Fic3RyYWN0aW9uLmRhdGEoKSwgU0lHTkFMKGxvYWRTdWNjZWVkZWQo
KSkpKTsKIAogICAgIFFWRVJJRlkodmlld0Fic3RyYWN0aW9uLT51cmwodXJsKSk7CkBAIC0xMzks
NyArMTM5LDcgQEAgdm9pZCB0c3RfQ29tbW9uVmlld1Rlc3RzOjpyZWxvYWQoKQogICAgIFFWRVJJ
Rlkodmlld0Fic3RyYWN0aW9uLT51cmwodXJsKSk7CiAgICAgUUNPTVBBUkUodXJsLnBhdGgoKSwg
UUxhdGluMVN0cmluZyhURVNUU19TT1VSQ0VfRElSICIvaHRtbC9iYXNpY19wYWdlLmh0bWwiKSk7
CiAKLSAgICB2aWV3QWJzdHJhY3Rpb24tPnRyaWdnZXJOYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0
OjpSZWxvYWQpOworICAgIHZpZXdBYnN0cmFjdGlvbi0+cmVsb2FkKCk7CiAgICAgUVZFUklGWSh3
YWl0Rm9yU2lnbmFsKHZpZXdBYnN0cmFjdGlvbi5kYXRhKCksIFNJR05BTChsb2FkU3VjY2VlZGVk
KCkpKSk7CiAKICAgICBRVkVSSUZZKHZpZXdBYnN0cmFjdGlvbi0+dXJsKHVybCkpOwpAQCAtMTU2
LDcgKzE1Niw3IEBAIHZvaWQgdHN0X0NvbW1vblZpZXdUZXN0czo6c3RvcCgpCiAgICAgUUNPTVBB
UkUodXJsLnBhdGgoKSwgUUxhdGluMVN0cmluZyhURVNUU19TT1VSQ0VfRElSICIvaHRtbC9iYXNp
Y19wYWdlLmh0bWwiKSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyB0ZXN0IHNob3VsZCBiZSBmbGVz
aGVkIG91dC4gUmlnaHQgbm93IGl0J3MganVzdCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBj
cmFzaC4KLSAgICB2aWV3QWJzdHJhY3Rpb24tPnRyaWdnZXJOYXZpZ2F0aW9uQWN0aW9uKFF0V2Vi
S2l0OjpTdG9wKTsKKyAgICB2aWV3QWJzdHJhY3Rpb24tPnN0b3AoKTsKIH0KIAogdm9pZCB0c3Rf
Q29tbW9uVmlld1Rlc3RzOjpsb2FkUHJvZ3Jlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmll
d3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5jcHAKaW5kZXggMDIxYmNkYy4uOGQ0NTM3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3
dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uY3BwCkBA
IC05NywxMiArOTcsMjQgQEAgaW50IFdlYlZpZXdBYnN0cmFjdGlvbjo6bG9hZFByb2dyZXNzKCkg
Y29uc3QKICAgICByZXR1cm4gdG91Y2hWaWV3UHJvZ3Jlc3M7CiB9CiAKLXZvaWQgV2ViVmlld0Fi
c3RyYWN0aW9uOjp0cmlnZ2VyTmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbiB3aGljaCkKK3ZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjpnb0JhY2soKQogewotICAgIFFB
Y3Rpb24qIHRvdWNoQWN0aW9uID0gdG91Y2hXZWJWaWV3KCktPnBhZ2UoKS0+bmF2aWdhdGlvbkNv
bnRyb2xsZXIoKS0+bmF2aWdhdGlvbkFjdGlvbih3aGljaCk7Ci0gICAgdG91Y2hBY3Rpb24tPnRy
aWdnZXIoKTsKLSAgICBRQWN0aW9uKiBkZXNrdG9wQWN0aW9uID0gZGVza3RvcFdlYlZpZXcoKS0+
bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+bmF2aWdhdGlvbkFjdGlvbih3aGljaCk7Ci0gICAgZGVz
a3RvcEFjdGlvbi0+dHJpZ2dlcigpOworICAgIHRvdWNoV2ViVmlldygpLT5wYWdlKCktPm5hdmln
YXRpb25Db250cm9sbGVyKCktPmdvQmFjaygpOworfQorCit2b2lkIFdlYlZpZXdBYnN0cmFjdGlv
bjo6Z29Gb3J3YXJkKCkKK3sKKyAgICB0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9u
Q29udHJvbGxlcigpLT5nb0ZvcndhcmQoKTsKK30KKwordm9pZCBXZWJWaWV3QWJzdHJhY3Rpb246
OnN0b3AoKQoreworICAgIHRvdWNoV2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9s
bGVyKCktPnN0b3AoKTsKK30KKwordm9pZCBXZWJWaWV3QWJzdHJhY3Rpb246OnJlbG9hZCgpCit7
CisgICAgdG91Y2hXZWJWaWV3KCktPnBhZ2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+cmVs
b2FkKCk7CiB9CiAKIHZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjp0b3VjaFZpZXdMb2FkU3RhcnRl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2Nv
bW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5oCmlu
ZGV4IGI2YmQwZDYuLmNkNDZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dl
YnZpZXdhYnN0cmFjdGlvbi5oCkBAIC00MSw3ICs0MSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1
cmwoUVVybCYpIGNvbnN0OwogICAgIGludCBsb2FkUHJvZ3Jlc3MoKSBjb25zdDsKIAotICAgIHZv
aWQgdHJpZ2dlck5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24pOwor
ICAgIHZvaWQgZ29CYWNrKCk7CisgICAgdm9pZCBnb0ZvcndhcmQoKTsKKyAgICB2b2lkIHN0b3Ao
KTsKKyAgICB2b2lkIHJlbG9hZCgpOwogCiBRX1NJR05BTFM6CiAgICAgdm9pZCBsb2FkU3RhcnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
ZGVza3RvcHdlYnZpZXcvdHN0X3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FkZXNrdG9wd2Vidmlldy90c3RfcWRlc2t0b3B3ZWJ2aWV3
LmNwcAppbmRleCA1OGNiMGM1Li5kNDJkMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FkZXNrdG9wd2Vidmlldy90c3RfcWRlc2t0b3B3ZWJ2aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FkZXNrdG9w
d2Vidmlldy90c3RfcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMTcsNyArMTcsNiBAQAogICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2luY2x1ZGUgPFFBY3Rpb24+CiAjaW5j
bHVkZSA8UVNjb3BlZFBvaW50ZXI+CiAjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KICNpbmNsdWRl
IDxxZGVza3RvcHdlYnZpZXcuaD4KQEAgLTM0LDggKzMzLDggQEAgcHJpdmF0ZSBzbG90czoKICAg
ICB2b2lkIGluaXQoKTsKICAgICB2b2lkIGNsZWFudXAoKTsKIAotICAgIHZvaWQgbmF2aWdhdGlv
bkFjdGlvbnNTdGF0dXNBdFN0YXJ0dXAoKTsKLSAgICB2b2lkIHN0b3BBY3Rpb25FbmFibGVkQWZ0
ZXJMb2FkU3RhcnRlZCgpOworICAgIHZvaWQgbmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCgpOwor
ICAgIHZvaWQgc3RvcEVuYWJsZWRBZnRlckxvYWRTdGFydGVkKCk7CiAKIHByaXZhdGU6CiAgICAg
aW5saW5lIFFEZXNrdG9wV2ViVmlldyogd2ViVmlldygpIGNvbnN0OwpAQCAtNjIsMjMgKzYxLDE1
IEBAIGlubGluZSBRRGVza3RvcFdlYlZpZXcqIHRzdF9RRGVza3RvcFdlYlZpZXc6OndlYlZpZXco
KSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxRRGVza3RvcFdlYlZpZXcqPihtX3dpbmRv
dy0+d2ViVmlldy5kYXRhKCkpOwogfQogCi12b2lkIHRzdF9RRGVza3RvcFdlYlZpZXc6Om5hdmln
YXRpb25BY3Rpb25zU3RhdHVzQXRTdGFydHVwKCkKK3ZvaWQgdHN0X1FEZXNrdG9wV2ViVmlldzo6
bmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCgpCiB7Ci0gICAgUUFjdGlvbiogYmFja0FjdGlvbiA9
IHdlYlZpZXcoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+YmFja0FjdGlvbigpOwotICAgIFFW
RVJJRlkoYmFja0FjdGlvbik7Ci0gICAgUUNPTVBBUkUoYmFja0FjdGlvbi0+aXNFbmFibGVkKCks
IGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCkt
PmNhbkdvQmFjaygpLCBmYWxzZSk7CiAKLSAgICBRQWN0aW9uKiBmb3J3YXJkQWN0aW9uID0gd2Vi
VmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5mb3J3YXJkQWN0aW9uKCk7Ci0gICAgUVZF
UklGWShmb3J3YXJkQWN0aW9uKTsKLSAgICBRQ09NUEFSRShmb3J3YXJkQWN0aW9uLT5pc0VuYWJs
ZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+bmF2aWdhdGlvbkNvbnRyb2xs
ZXIoKS0+Y2FuR29Gb3J3YXJkKCksIGZhbHNlKTsKIAotICAgIFFBY3Rpb24qIHN0b3BBY3Rpb24g
PSB3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPnN0b3BBY3Rpb24oKTsKLSAgICBR
VkVSSUZZKHN0b3BBY3Rpb24pOwotICAgIFFDT01QQVJFKHN0b3BBY3Rpb24tPmlzRW5hYmxlZCgp
LCBmYWxzZSk7CisgICAgUUNPTVBBUkUod2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigp
LT5jYW5TdG9wKCksIGZhbHNlKTsKIAotICAgIFFBY3Rpb24qIHJlbG9hZEFjdGlvbiA9IHdlYlZp
ZXcoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+cmVsb2FkQWN0aW9uKCk7Ci0gICAgUVZFUklG
WShyZWxvYWRBY3Rpb24pOwotICAgIFFDT01QQVJFKHJlbG9hZEFjdGlvbi0+aXNFbmFibGVkKCks
IGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCkt
PmNhblJlbG9hZCgpLCBmYWxzZSk7CiB9CiAKIGNsYXNzIExvYWRTdGFydGVkQ2F0Y2hlciA6IHB1
YmxpYyBRT2JqZWN0IHsKQEAgLTk1LDkgKzg2LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHsKICAg
ICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiZmluaXNoZWQiLCBRdDo6UXVl
dWVkQ29ubmVjdGlvbik7CiAKLSAgICAgICAgUUFjdGlvbiogc3RvcEFjdGlvbiA9IG1fd2ViVmll
dy0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+c3RvcEFjdGlvbigpOwotICAgICAgICBRVkVSSUZZ
KHN0b3BBY3Rpb24pOwotICAgICAgICBRQ09NUEFSRShzdG9wQWN0aW9uLT5pc0VuYWJsZWQoKSwg
dHJ1ZSk7CisgICAgICAgIFFDT01QQVJFKG1fd2ViVmlldy0+bmF2aWdhdGlvbkNvbnRyb2xsZXIo
KS0+Y2FuU3RvcCgpLCB0cnVlKTsKICAgICB9CiAKIHNpZ25hbHM6CkBAIC0xMDcsMTcgKzk2LDE1
IEBAIHByaXZhdGU6CiAgICAgUURlc2t0b3BXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogCi12b2lk
IHRzdF9RRGVza3RvcFdlYlZpZXc6OnN0b3BBY3Rpb25FbmFibGVkQWZ0ZXJMb2FkU3RhcnRlZCgp
Cit2b2lkIHRzdF9RRGVza3RvcFdlYlZpZXc6OnN0b3BFbmFibGVkQWZ0ZXJMb2FkU3RhcnRlZCgp
CiB7Ci0gICAgUUFjdGlvbiogc3RvcEFjdGlvbiA9IHdlYlZpZXcoKS0+bmF2aWdhdGlvbkNvbnRy
b2xsZXIoKS0+c3RvcEFjdGlvbigpOwotICAgIFFWRVJJRlkoc3RvcEFjdGlvbik7Ci0gICAgUUNP
TVBBUkUoc3RvcEFjdGlvbi0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJW
aWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmNhblN0b3AoKSwgZmFsc2UpOwogCiAgICAg
TG9hZFN0YXJ0ZWRDYXRjaGVyIGNhdGNoZXIod2ViVmlldygpKTsKICAgICB3ZWJWaWV3KCktPmxv
YWQoUVVybDo6ZnJvbUxvY2FsRmlsZShRTGF0aW4xU3RyaW5nKFRFU1RTX1NPVVJDRV9ESVIgIi9o
dG1sL2Jhc2ljX3BhZ2UuaHRtbCIpKSk7CiAgICAgd2FpdEZvclNpZ25hbCgmY2F0Y2hlciwgU0lH
TkFMKGZpbmlzaGVkKCkpKTsKIAotICAgIFFDT01QQVJFKHN0b3BBY3Rpb24tPmlzRW5hYmxlZCgp
LCB0cnVlKTsKKyAgICBRQ09NUEFSRSh3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCkt
PmNhblN0b3AoKSwgdHJ1ZSk7CiAKICAgICB3YWl0Rm9yU2lnbmFsKHdlYlZpZXcoKSwgU0lHTkFM
KGxvYWRTdWNjZWVkZWQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9xdG91Y2h3ZWJ2aWV3L3RzdF9xdG91Y2h3ZWJ2aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRvdWNod2Vidmlldy90c3RfcXRv
dWNod2Vidmlldy5jcHAKaW5kZXggZGJjYjQ4MC4uNTk0Njk1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xdG91Y2h3ZWJ2aWV3L3RzdF9xdG91Y2h3
ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0
b3VjaHdlYnZpZXcvdHN0X3F0b3VjaHdlYnZpZXcuY3BwCkBAIC0xNyw3ICsxNyw2IEBACiAgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCi0jaW5jbHVkZSA8UUFjdGlvbj4KICNp
bmNsdWRlIDxRdFRlc3QvUXRUZXN0PgogI2luY2x1ZGUgPHF0b3VjaHdlYnBhZ2UuaD4KICNpbmNs
dWRlIDxxdG91Y2h3ZWJ2aWV3Lmg+CkBAIC0zNiw3ICszNSw3IEBAIHByaXZhdGUgc2xvdHM6CiAg
ICAgdm9pZCBjbGVhbnVwKCk7CiAKICAgICB2b2lkIGFjY2Vzc1BhZ2UoKTsKLSAgICB2b2lkIG5h
dmlnYXRpb25BY3Rpb25zU3RhdHVzQXRTdGFydHVwKCk7CisgICAgdm9pZCBuYXZpZ2F0aW9uU3Rh
dHVzQXRTdGFydHVwKCk7CiAKIHByaXZhdGU6CiAgICAgaW5saW5lIFFUb3VjaFdlYlZpZXcqIHdl
YlZpZXcoKSBjb25zdDsKQEAgLTczLDIzICs3MiwxNSBAQCB2b2lkIHRzdF9RVG91Y2hXZWJWaWV3
OjphY2Nlc3NQYWdlKCkKICAgICBRQ09NUEFSRShwYWdlUHJvcGVydHlBY2Nlc3MsIHBhZ2VEaXJl
Y3RBY2Nlc3MpOwogfQogCi12b2lkIHRzdF9RVG91Y2hXZWJWaWV3OjpuYXZpZ2F0aW9uQWN0aW9u
c1N0YXR1c0F0U3RhcnR1cCgpCit2b2lkIHRzdF9RVG91Y2hXZWJWaWV3OjpuYXZpZ2F0aW9uU3Rh
dHVzQXRTdGFydHVwKCkKIHsKLSAgICBRQWN0aW9uKiBiYWNrQWN0aW9uID0gd2ViVmlldygpLT5w
YWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmJhY2tBY3Rpb24oKTsKLSAgICBRVkVSSUZZ
KGJhY2tBY3Rpb24pOwotICAgIFFDT01QQVJFKGJhY2tBY3Rpb24tPmlzRW5hYmxlZCgpLCBmYWxz
ZSk7CisgICAgUUNPTVBBUkUod2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVy
KCktPmNhbkdvQmFjaygpLCBmYWxzZSk7CiAKLSAgICBRQWN0aW9uKiBmb3J3YXJkQWN0aW9uID0g
d2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmZvcndhcmRBY3Rpb24o
KTsKLSAgICBRVkVSSUZZKGZvcndhcmRBY3Rpb24pOwotICAgIFFDT01QQVJFKGZvcndhcmRBY3Rp
b24tPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUod2ViVmlldygpLT5wYWdlKCkt
Pm5hdmlnYXRpb25Db250cm9sbGVyKCktPmNhbkdvRm9yd2FyZCgpLCBmYWxzZSk7CiAKLSAgICBR
QWN0aW9uKiBzdG9wQWN0aW9uID0gd2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9s
bGVyKCktPnN0b3BBY3Rpb24oKTsKLSAgICBRVkVSSUZZKHN0b3BBY3Rpb24pOwotICAgIFFDT01Q
QVJFKHN0b3BBY3Rpb24tPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUod2ViVmll
dygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmNhblN0b3AoKSwgZmFsc2UpOwog
Ci0gICAgUUFjdGlvbiogcmVsb2FkQWN0aW9uID0gd2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRp
b25Db250cm9sbGVyKCktPnJlbG9hZEFjdGlvbigpOwotICAgIFFWRVJJRlkocmVsb2FkQWN0aW9u
KTsKLSAgICBRQ09NUEFSRShyZWxvYWRBY3Rpb24tPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAg
UUNPTVBBUkUod2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmNhblJl
bG9hZCgpLCBmYWxzZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L0NsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVu
dEltcGwuY3BwCmluZGV4IDNjNTQ0ODguLjlhM2E5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hMb2FkU3VjY2VlZGVkKFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47
CiAKLSAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uQWN0
aW9ucygpOworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmlnYXRp
b25TdGF0ZSgpOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmxvYWREaWRTdWNj
ZWVkKCk7CiB9CiAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2FkRmFp
bGVkKFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8sIFdLRXJyb3IKICAg
ICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7
CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+dXBkYXRlTmF2aWdhdGlvblN0YXRl
KCk7CiAKICAgICBpbnQgZXJyb3JDb2RlID0gV0tFcnJvckdldEVycm9yQ29kZShlcnJvcik7CiAg
ICAgaWYgKHRvSW1wbChlcnJvciktPnBsYXRmb3JtRXJyb3IoKS5pc0NhbmNlbGxhdGlvbigpIHx8
IGVycm9yQ29kZSA9PSBrV0tFcnJvckNvZGVGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hh
bmdlIHx8IGVycm9yQ29kZSA9PSBrV0tFcnJvckNvZGVQbHVnSW5XaWxsSGFuZGxlTG9hZCkKQEAg
LTg2LDcgKzg2LDcgQEAgdm9pZCBxdF93a19kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1QKICAgICBpZiAoIVdLRnJhbWVJ
c01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRvUXRXZWJQYWdlUHJv
eHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisgICAgdG9RdFdlYlBh
Z2VQcm94eShjbGllbnRJbmZvKS0+dXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7CiAgICAgdG9RdFdl
YlBhZ2VQcm94eShjbGllbnRJbmZvKS0+bG9hZERpZEJlZ2luKCk7CiB9CiAKQEAgLTEwMiw3ICsx
MDIsNyBAQCB2b2lkIHF0X3drX2RpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZQogICAgIFdlYkZyYW1lUHJveHkqIHdrZnJh
bWUgPSB0b0ltcGwoZnJhbWUpOwogICAgIFFTdHJpbmcgdXJsU3RyKHdrZnJhbWUtPnVybCgpKTsK
ICAgICBRVXJsIHFVcmwgPSB1cmxTdHI7Ci0gICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZv
KS0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVu
dEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB0b1F0V2ViUGFnZVByb3h5KGNs
aWVudEluZm8pLT5kaWRDaGFuZ2VVcmwocVVybCk7CiAgICAgdG9RdFdlYlBhZ2VQcm94eShjbGll
bnRJbmZvKS0+bG9hZERpZENvbW1pdCgpOwogfQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgcXRf
d2tfZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXCiAgICAgV2ViRnJhbWVQcm94eSogd2tmcmFtZSA9IHRvSW1wbChmcmFt
ZSk7CiAgICAgUVN0cmluZyB1cmxTdHIod2tmcmFtZS0+dXJsKCkpOwogICAgIFFVcmwgcVVybCA9
IHVybFN0cjsKLSAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZpZ2F0
aW9uQWN0aW9ucygpOworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVwZGF0ZU5h
dmlnYXRpb25TdGF0ZSgpOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmRpZENo
YW5nZVVybChxVXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5jcHAKaW5kZXggNTViMzA2Zi4uY2Y5MDkwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCkBAIC00MiwxMiArNDIsMTAgQEAK
ICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eVF0LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmdRdC5o
IgogI2luY2x1ZGUgIldLVVJMUXQuaCIKLSNpbmNsdWRlIDxRQWN0aW9uPgogI2luY2x1ZGUgPFFB
cHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ+CiAjaW5jbHVk
ZSA8UUpTRW5naW5lPgogI2luY2x1ZGUgPFFNaW1lRGF0YT4KLSNpbmNsdWRlIDxRU3R5bGU+CiAj
aW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAjaW5jbHVkZSA8UVVuZG9TdGFjaz4KICNpbmNsdWRlIDxR
dERlYnVnPgpAQCAtMTExLDcgKzEwOSw2IEBAIFF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94
eShRdFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFF0UG9saWN5SW50ZXJmYWNlCiAgICAg
LCBtX2xvYWRQcm9ncmVzcygwKQogewogICAgIEFTU0VSVCh2aWV3SW50ZXJmYWNlKTsKLSAgICBt
ZW1zZXQobV9hY3Rpb25zLCAwLCBzaXplb2YobV9hY3Rpb25zKSk7CiAgICAgbV93ZWJQYWdlUHJv
eHkgPSBtX2NvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgdG9JbXBsKHBhZ2VHcm91cFJlZikp
OwogICAgIG1faGlzdG9yeSA9IFFXS0hpc3RvcnlQcml2YXRlOjpjcmVhdGVIaXN0b3J5KHRoaXMs
IG1fd2ViUGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSk7CiAgICAgaWYgKCFjb250ZXh0UmVm
KQpAQCAtNDMwLDY2ICs0MjcsNjUgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6cGFpbnQoUVBhaW50
ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0JiBhcmVhKQogICAgICAgICBwYWludGVyLT5maWxsUmVj
dChhcmVhLCBRdDo6d2hpdGUpOwogfQogCi12b2lkIFF0V2ViUGFnZVByb3h5Ojp1cGRhdGVBY3Rp
b24oUXRXZWJQYWdlUHJveHk6OldlYkFjdGlvbiBhY3Rpb24pCitib29sIFF0V2ViUGFnZVByb3h5
OjpjYW5Hb0JhY2soKSBjb25zdAogewotICAgIFFBY3Rpb24qIGEgPSBtX2FjdGlvbnNbYWN0aW9u
XTsKLSAgICBpZiAoIWEpCi0gICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJv
eHktPmNhbkdvQmFjaygpOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpnb0JhY2soKQorewor
ICAgIG1fd2ViUGFnZVByb3h5LT5nb0JhY2soKTsKK30KKworYm9vbCBRdFdlYlBhZ2VQcm94eTo6
Y2FuR29Gb3J3YXJkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHktPmNhbkdv
Rm9yd2FyZCgpOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpnb0ZvcndhcmQoKQoreworICAg
IG1fd2ViUGFnZVByb3h5LT5nb0ZvcndhcmQoKTsKK30KIAorYm9vbCBRdFdlYlBhZ2VQcm94eTo6
Y2FuU3RvcCgpIGNvbnN0Cit7CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViRnJhbWVQcm94eT4gbWFp
bkZyYW1lID0gbV93ZWJQYWdlUHJveHktPm1haW5GcmFtZSgpOworICAgIHJldHVybiBtYWluRnJh
bWUgJiYgIShXZWJGcmFtZVByb3h5OjpMb2FkU3RhdGVGaW5pc2hlZCA9PSBtYWluRnJhbWUtPmxv
YWRTdGF0ZSgpKTsKK30KIAotICAgIGJvb2wgZW5hYmxlZCA9IGEtPmlzRW5hYmxlZCgpOwotCi0g
ICAgc3dpdGNoIChhY3Rpb24pIHsKLSAgICBjYXNlIFF0V2ViUGFnZVByb3h5OjpCYWNrOgotICAg
ICAgICBlbmFibGVkID0gbV93ZWJQYWdlUHJveHktPmNhbkdvQmFjaygpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFF0V2ViUGFnZVByb3h5OjpGb3J3YXJkOgotICAgICAgICBlbmFibGVkID0g
bV93ZWJQYWdlUHJveHktPmNhbkdvRm9yd2FyZCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFF0V2ViUGFnZVByb3h5OjpTdG9wOgotICAgICAgICBlbmFibGVkID0gbWFpbkZyYW1lICYmICEo
V2ViRnJhbWVQcm94eTo6TG9hZFN0YXRlRmluaXNoZWQgPT0gbWFpbkZyYW1lLT5sb2FkU3RhdGUo
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUXRXZWJQYWdlUHJveHk6OlJlbG9hZDoKLSAg
ICAgICAgaWYgKG1haW5GcmFtZSkKLSAgICAgICAgICAgIGVuYWJsZWQgPSAoV2ViRnJhbWVQcm94
eTo6TG9hZFN0YXRlRmluaXNoZWQgPT0gbWFpbkZyYW1lLT5sb2FkU3RhdGUoKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGVuYWJsZWQgPSBtX3dlYlBhZ2VQcm94eS0+YmFja0ZvcndhcmRM
aXN0KCktPmN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KK3ZvaWQgUXRXZWJQYWdlUHJveHk6OnN0
b3AoKQoreworICAgIG1fd2ViUGFnZVByb3h5LT5zdG9wTG9hZGluZygpOworfQogCi0gICAgYS0+
c2V0RW5hYmxlZChlbmFibGVkKTsKK2Jvb2wgUXRXZWJQYWdlUHJveHk6OmNhblJlbG9hZCgpIGNv
bnN0Cit7CisgICAgUmVmUHRyPFdlYktpdDo6V2ViRnJhbWVQcm94eT4gbWFpbkZyYW1lID0gbV93
ZWJQYWdlUHJveHktPm1haW5GcmFtZSgpOworICAgIGlmIChtYWluRnJhbWUpCisgICAgICAgIHJl
dHVybiAoV2ViRnJhbWVQcm94eTo6TG9hZFN0YXRlRmluaXNoZWQgPT0gbWFpbkZyYW1lLT5sb2Fk
U3RhdGUoKSk7CisgICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKS0+
Y3VycmVudEl0ZW0oKTsKIH0KIAotdm9pZCBRdFdlYlBhZ2VQcm94eTo6dXBkYXRlTmF2aWdhdGlv
bkFjdGlvbnMoKQordm9pZCBRdFdlYlBhZ2VQcm94eTo6cmVsb2FkKCkKIHsKLSAgICB1cGRhdGVB
Y3Rpb24oUXRXZWJQYWdlUHJveHk6OkJhY2spOwotICAgIHVwZGF0ZUFjdGlvbihRdFdlYlBhZ2VQ
cm94eTo6Rm9yd2FyZCk7Ci0gICAgdXBkYXRlQWN0aW9uKFF0V2ViUGFnZVByb3h5OjpTdG9wKTsK
LSAgICB1cGRhdGVBY3Rpb24oUXRXZWJQYWdlUHJveHk6OlJlbG9hZCk7CisgICAgbV93ZWJQYWdl
UHJveHktPnJlbG9hZCgvKiByZWxvYWRGcm9tT3JpZ2luICovIHRydWUpOwogfQogCi12b2lkIFF0
V2ViUGFnZVByb3h5Ojp3ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKQordm9pZCBRdFdl
YlBhZ2VQcm94eTo6bmF2aWdhdGlvblN0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgUUFjdGlvbiogYSA9
IHFvYmplY3RfY2FzdDxRQWN0aW9uKj4oc2VuZGVyKCkpOwotICAgIGlmICghYSkKLSAgICAgICAg
cmV0dXJuOwotICAgIFF0V2ViUGFnZVByb3h5OjpXZWJBY3Rpb24gYWN0aW9uID0gc3RhdGljX2Nh
c3Q8UXRXZWJQYWdlUHJveHk6OldlYkFjdGlvbj4oYS0+ZGF0YSgpLnRvSW50KCkpOwotICAgIHRy
aWdnZXJBY3Rpb24oYWN0aW9uLCBjaGVja2VkKTsKKyAgICBlbWl0IHVwZGF0ZU5hdmlnYXRpb25T
dGF0ZSgpOwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRSZWxhdW5jaFByb2Nlc3MoKQog
ewotICAgIHVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisgICAgdXBkYXRlTmF2aWdhdGlvblN0
YXRlKCk7CiAgICAgbV92aWV3SW50ZXJmYWNlLT5kaWRSZWxhdW5jaFByb2Nlc3MoKTsKICAgICBz
ZXREcmF3aW5nQXJlYVNpemUobV92aWV3SW50ZXJmYWNlLT5kcmF3aW5nQXJlYVNpemUoKSk7CiB9
CiAKIHZvaWQgUXRXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCgpCiB7Ci0gICAgdXBkYXRl
TmF2aWdhdGlvbkFjdGlvbnMoKTsKKyAgICB1cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICBt
X3ZpZXdJbnRlcmZhY2UtPnByb2Nlc3NEaWRDcmFzaCgpOwogfQogCkBAIC01NzAsMTA0ICs1NjYs
NiBAQCBRV0tIaXN0b3J5KiBRdFdlYlBhZ2VQcm94eTo6aGlzdG9yeSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1faGlzdG9yeTsKIH0KIAotdm9pZCBRdFdlYlBhZ2VQcm94eTo6dHJpZ2dlckFjdGlvbihX
ZWJBY3Rpb24gd2ViQWN0aW9uLCBib29sKQotewotICAgIHN3aXRjaCAod2ViQWN0aW9uKSB7Ci0g
ICAgY2FzZSBCYWNrOgotICAgICAgICBtX3dlYlBhZ2VQcm94eS0+Z29CYWNrKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEZvcndhcmQ6Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LT5nb0Zv
cndhcmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgU3RvcDoKLSAgICAgICAgbV93ZWJQ
YWdlUHJveHktPnN0b3BMb2FkaW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFJlbG9h
ZDoKLSAgICAgICAgbV93ZWJQYWdlUHJveHktPnJlbG9hZCgvKiByZWxvYWRGcm9tT3JpZ2luICov
IHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1RQWN0aW9uKiBRdFdlYlBhZ2VQcm94eTo6bmF2aWdh
dGlvbkFjdGlvbihRdFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbiB3aGljaCkgY29uc3QKLXsKLSAg
ICBzd2l0Y2ggKHdoaWNoKSB7Ci0gICAgY2FzZSBRdFdlYktpdDo6QmFjazoKLSAgICAgICAgcmV0
dXJuIGFjdGlvbihRdFdlYlBhZ2VQcm94eTo6QmFjayk7Ci0gICAgY2FzZSBRdFdlYktpdDo6Rm9y
d2FyZDoKLSAgICAgICAgcmV0dXJuIGFjdGlvbihRdFdlYlBhZ2VQcm94eTo6Rm9yd2FyZCk7Ci0g
ICAgY2FzZSBRdFdlYktpdDo6UmVsb2FkOgotICAgICAgICByZXR1cm4gYWN0aW9uKFF0V2ViUGFn
ZVByb3h5OjpSZWxvYWQpOwotICAgIGNhc2UgUXRXZWJLaXQ6OlN0b3A6Ci0gICAgICAgIHJldHVy
biBhY3Rpb24oUXRXZWJQYWdlUHJveHk6OlN0b3ApOwotICAgIH0KLQotICAgIHJldHVybiAwOwot
fQotCi1RQWN0aW9uKiBRdFdlYlBhZ2VQcm94eTo6YWN0aW9uKFdlYkFjdGlvbiBhY3Rpb24pIGNv
bnN0Ci17Ci0gICAgaWYgKGFjdGlvbiA9PSBRdFdlYlBhZ2VQcm94eTo6Tm9XZWJBY3Rpb24gfHwg
YWN0aW9uID49IFdlYkFjdGlvbkNvdW50KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICht
X2FjdGlvbnNbYWN0aW9uXSkKLSAgICAgICAgcmV0dXJuIG1fYWN0aW9uc1thY3Rpb25dOwotCi0g
ICAgUVN0cmluZyB0ZXh0OwotICAgIFFJY29uIGljb247Ci0gICAgUVN0eWxlKiBzdHlsZSA9IHFv
YmplY3RfY2FzdDxRQXBwbGljYXRpb24qPihRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpKS0+
c3R5bGUoKTsKLSAgICBib29sIGNoZWNrYWJsZSA9IGZhbHNlOwotICAgIFF0V2ViUGFnZVByb3h5
KiBtdXRhYmxlU2VsZiA9IGNvbnN0X2Nhc3Q8UXRXZWJQYWdlUHJveHkqPih0aGlzKTsKLQotICAg
IHN3aXRjaCAoYWN0aW9uKSB7Ci0gICAgY2FzZSBCYWNrOgotICAgICAgICB0ZXh0ID0gY29udGV4
dE1lbnVJdGVtVGFnR29CYWNrKCk7Ci0gICAgICAgIGljb24gPSBzdHlsZS0+c3RhbmRhcmRJY29u
KFFTdHlsZTo6U1BfQXJyb3dCYWNrKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb3J3YXJk
OgotICAgICAgICB0ZXh0ID0gY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCk7Ci0gICAgICAg
IGljb24gPSBzdHlsZS0+c3RhbmRhcmRJY29uKFFTdHlsZTo6U1BfQXJyb3dGb3J3YXJkKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdG9wOgotICAgICAgICB0ZXh0ID0gY29udGV4dE1lbnVJ
dGVtVGFnU3RvcCgpOwotICAgICAgICBpY29uID0gc3R5bGUtPnN0YW5kYXJkSWNvbihRU3R5bGU6
OlNQX0Jyb3dzZXJTdG9wKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWxvYWQ6Ci0gICAg
ICAgIHRleHQgPSBjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKTsKLSAgICAgICAgaWNvbiA9IHN0
eWxlLT5zdGFuZGFyZEljb24oUVN0eWxlOjpTUF9Ccm93c2VyUmVsb2FkKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBVbmRvOiB7Ci0gICAgICAgIFFBY3Rpb24qIHVuZG9BY3Rpb24gPSBtX3Vu
ZG9TdGFjay0+Y3JlYXRlVW5kb0FjdGlvbihtdXRhYmxlU2VsZik7Ci0gICAgICAgIG1fYWN0aW9u
c1thY3Rpb25dID0gdW5kb0FjdGlvbjsKLSAgICAgICAgcmV0dXJuIHVuZG9BY3Rpb247Ci0gICAg
fQotICAgIGNhc2UgUmVkbzogewotICAgICAgICBRQWN0aW9uKiByZWRvQWN0aW9uID0gbV91bmRv
U3RhY2stPmNyZWF0ZVJlZG9BY3Rpb24obXV0YWJsZVNlbGYpOwotICAgICAgICBtX2FjdGlvbnNb
YWN0aW9uXSA9IHJlZG9BY3Rpb247Ci0gICAgICAgIHJldHVybiByZWRvQWN0aW9uOwotICAgIH0K
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgaWYgKHRleHQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIFFBY3Rpb24qIGEgPSBuZXcgUUFjdGlvbihtdXRhYmxlU2VsZik7Ci0gICAgYS0+c2V0
VGV4dCh0ZXh0KTsKLSAgICBhLT5zZXREYXRhKGFjdGlvbik7Ci0gICAgYS0+c2V0Q2hlY2thYmxl
KGNoZWNrYWJsZSk7Ci0gICAgYS0+c2V0SWNvbihpY29uKTsKLQotICAgIGNvbm5lY3QoYSwgU0lH
TkFMKHRyaWdnZXJlZChib29sKSksIHRoaXMsIFNMT1Qod2ViQWN0aW9uVHJpZ2dlcmVkKGJvb2wp
KSk7Ci0KLSAgICBtX2FjdGlvbnNbYWN0aW9uXSA9IGE7Ci0gICAgbXV0YWJsZVNlbGYtPnVwZGF0
ZUFjdGlvbihhY3Rpb24pOwotICAgIHJldHVybiBhOwotfQotCiB2b2lkIFF0V2ViUGFnZVByb3h5
OjpzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBQYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlKQogewogICAgIFFJbWFnZSBkcmFnUUltYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCAzNDA0
ZmY3Li43NjVlMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuaApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNs
dWRlICJRdFBvbGljeUludGVyZmFjZS5oIgogI2luY2x1ZGUgIlF0Vmlld0ludGVyZmFjZS5oIgot
I2luY2x1ZGUgInF3ZWJraXR0eXBlcy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgog
I2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgpA
QCAtMTM5LDggKzEzOCwxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50KFFQYWludGVyKiwg
Y29uc3QgUVJlY3QmKTsKIAotICAgIHZvaWQgdXBkYXRlQWN0aW9uKFF0V2ViUGFnZVByb3h5OjpX
ZWJBY3Rpb24gYWN0aW9uKTsKLSAgICB2b2lkIHVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7Cisg
ICAgYm9vbCBjYW5Hb0JhY2soKSBjb25zdDsKKyAgICB2b2lkIGdvQmFjaygpOworICAgIGJvb2wg
Y2FuR29Gb3J3YXJkKCkgY29uc3Q7CisgICAgdm9pZCBnb0ZvcndhcmQoKTsKKyAgICBib29sIGNh
blN0b3AoKSBjb25zdDsKKyAgICB2b2lkIHN0b3AoKTsKKyAgICBib29sIGNhblJlbG9hZCgpIGNv
bnN0OworICAgIHZvaWQgcmVsb2FkKCk7CisKICAgICB2b2lkIHVwZGF0ZUVkaXRvckFjdGlvbnMo
KTsKIAogICAgIFdLUGFnZVJlZiBwYWdlUmVmKCkgY29uc3Q7CkBAIC0xNTQsMTEgKzE2MCw2IEBA
IHB1YmxpYzoKIAogICAgIFFTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAotICAgIFFBY3Rpb24qIG5h
dmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24pIGNvbnN0OwotCi0gICAg
UUFjdGlvbiogYWN0aW9uKFdlYkFjdGlvbiBhY3Rpb24pIGNvbnN0OwotICAgIHZvaWQgdHJpZ2dl
ckFjdGlvbihXZWJBY3Rpb24gYWN0aW9uLCBib29sIGNoZWNrZWQgPSBmYWxzZSk7Ci0KICAgICB2
b2lkIHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBRU3RyaW5nJik7CiAgICAgUVN0cmluZyBjdXN0
b21Vc2VyQWdlbnQoKSBjb25zdDsKIApAQCAtMTczLDExICsxNzQsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UGFnZUlzVmlzaWJsZShib29sKTsKIAogcHVibGljIFFfU0xPVFM6Ci0gICAgdm9p
ZCB3ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKTsKKyAgICB2b2lkIG5hdmlnYXRpb25T
dGF0ZUNoYW5nZWQoKTsKIAogcHVibGljOgogICAgIFFfU0lHTkFMIHZvaWQgc2Nyb2xsUmVxdWVz
dGVkKGludCBkeCwgaW50IGR5KTsKICAgICBRX1NJR05BTCB2b2lkIHpvb21hYmxlQXJlYUZvdW5k
KGNvbnN0IFFSZWN0Jik7CisgICAgUV9TSUdOQUwgdm9pZCB1cGRhdGVOYXZpZ2F0aW9uU3RhdGUo
KTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdCgpOwpAQCAtMjAwLDcgKzIwMiw2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvbnRleHQ+IG1fY29udGV4dDsKICAgICBRV0tIaXN0b3J5
KiBtX2hpc3Rvcnk7CiAKLSAgICBtdXRhYmxlIFFBY3Rpb24qIG1fYWN0aW9uc1tRdFdlYlBhZ2VQ
cm94eTo6V2ViQWN0aW9uQ291bnRdOwogICAgIG11dGFibGUgUVdlYlByZWZlcmVuY2VzKiBtX3By
ZWZlcmVuY2VzOwogCiAgICAgT3duUHRyPFFVbmRvU3RhY2s+IG1fdW5kb1N0YWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyQVBJLnByaQppbmRleCA5NzFkMGE3Li42NmVjZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyQVBJLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQpA
QCAtMTM2LDcgKzEzNiw2IEBAIFdFQktJVDJfQVBJX0hFQURFUlMgKz0gXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmggXAogICAgICQk
U09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5oIFwKICAg
ICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5o
IFwKLSAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0eXBl
cy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZp
Z2F0aW9uY29udHJvbGxlci5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXAogICAgICQk
U09VUkNFX0RJUi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtLmggXApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJlNzIwMTcuLmJkNmIwZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0x
MC0yNCAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgorCisgICAgICAg
IFtRdF1bV0syXSBSZW1vdmUgUUFjdGlvbiBmcm9tIE1pbmlCcm93c2VyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDUyNQorCisgICAgICAgIEluIG9y
ZGVyIHRvIHJld3JpdGUgTWluaUJyb3dzZXIgaW4gUU1MIHdlIG5lZWQgYSBzdWl0YWJsZQorICAg
ICAgICBtZWNoYW5pc20gZm9yIHRyaWdnZXJpbmcgbmF2aWdhdGlvbiBhY3Rpb25zLgorICAgICAg
ICBEdWUgdG8gdGhlIFF0V2lkZ2V0cyBkZXBlbmRlbmN5IG9mIFFBY3Rpb24gdGhlIGN1cnJlbnQK
KyAgICAgICAgc29sdXRpb24gaXMgbm90IHN1aXRhYmxlIGFueW1vcmUuIFRoZXJlZm9yZSB3ZSBp
bnRyb2R1Y2UKKyAgICAgICAgaW52b2thYmxlIG1ldGhvZHMgYW5kIGV4cG9ydCBwcm9wZXJ0aWVz
IGluIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlci4KKworICAgICAgICBQYXRjaCBieSBKb2NlbHlu
IFR1cmNvdHRlIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4sCisgICAgICAgICAgICAgICAg
IFplbm8gQWxiaXNzZXIgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3Nl
clZpZXcuY3BwOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3Lmg6CisgICAg
ICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHA6CisgICAgICAgIChCcm93c2Vy
V2luZG93OjpCcm93c2VyV2luZG93KToKKwogMjAxMS0xMC0yMSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgd2F0Y2hsaXN0OiBBZGQgYSBuZXcg
ZW50cnkgZm9yIFdlYktpdDIgR1RLKyBwdWJsaWMgQVBJCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyVmlldy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2Vy
Vmlldy5jcHAKaW5kZXggNDFjZWZjNy4uZjFjNmYyYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dz
ZXJWaWV3LmNwcApAQCAtODUsMTIgKzg1LDMgQEAgUURlc2t0b3BXZWJWaWV3KiBCcm93c2VyVmll
dzo6ZGVza3RvcFdlYlZpZXcoKSBjb25zdAogICAgIHJldHVybiBxb2JqZWN0X2Nhc3Q8UURlc2t0
b3BXZWJWaWV3Kj4obV9pdGVtKTsKIH0KIAotUUFjdGlvbiogQnJvd3NlclZpZXc6Om5hdmlnYXRp
b25BY3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hpY2gpIGNvbnN0Ci17Ci0gICAg
aWYgKGRlc2t0b3BXZWJWaWV3KCkpCi0gICAgICAgIHJldHVybiBkZXNrdG9wV2ViVmlldygpLT5u
YXZpZ2F0aW9uQ29udHJvbGxlcigpLT5uYXZpZ2F0aW9uQWN0aW9uKHdoaWNoKTsKLSAgICBpZiAo
dG91Y2hXZWJWaWV3KCkpCi0gICAgICAgIHJldHVybiB0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLT5u
YXZpZ2F0aW9uQ29udHJvbGxlcigpLT5uYXZpZ2F0aW9uQWN0aW9uKHdoaWNoKTsKLSAgICBRX0FT
U0VSVChmYWxzZSk7Ci0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9Ccm93c2VyVmlldy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcu
aAppbmRleCA1MDI5ZGE0Li41ZThiNzM2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9Ccm93c2VyVmlldy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmgK
QEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgPFFBY3Rpb24+CiAjaW5jbHVkZSA8UXREZWNs
YXJhdGl2ZS9xc2djYW52YXMuaD4KLSNpbmNsdWRlIDxxd2Via2l0dHlwZXMuaD4KIAogY2xhc3Mg
UURlc2t0b3BXZWJWaWV3OwogY2xhc3MgUVNHSXRlbTsKQEAgLTQ3LDggKzQ2LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgbG9hZChjb25zdCBRU3RyaW5nJik7CiAgICAgUVNHSXRlbSogdmlldygpIGNv
bnN0OwogCi0gICAgUUFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbiB3aGljaCkgY29uc3Q7Ci0KICAgICBRVG91Y2hXZWJWaWV3KiB0b3VjaFdlYlZpZXco
KSBjb25zdDsKICAgICBRRGVza3RvcFdlYlZpZXcqIGRlc2t0b3BXZWJWaWV3KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggZjJmNDVhYy4uMzExNDU1
MiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTE0MywxMyArMTQz
LDYgQEAgQnJvd3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyhXaW5kb3dPcHRpb25zKiBvcHRpb25z
KQogICAgIG1fYWRkcmVzc0JhciA9IG5ldyBRTGluZUVkaXQoKTsKICAgICBjb25uZWN0KG1fYWRk
cmVzc0JhciwgU0lHTkFMKHJldHVyblByZXNzZWQoKSksIFNMT1QoY2hhbmdlTG9jYXRpb24oKSkp
OwogCi0gICAgUVRvb2xCYXIqIGJhciA9IGFkZFRvb2xCYXIoIk5hdmlnYXRpb24iKTsKLSAgICBi
YXItPmFkZEFjdGlvbihtX2Jyb3dzZXItPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OkJhY2sp
KTsKLSAgICBiYXItPmFkZEFjdGlvbihtX2Jyb3dzZXItPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJL
aXQ6OkZvcndhcmQpKTsKLSAgICBiYXItPmFkZEFjdGlvbihtX2Jyb3dzZXItPm5hdmlnYXRpb25B
Y3Rpb24oUXRXZWJLaXQ6OlJlbG9hZCkpOwotICAgIGJhci0+YWRkQWN0aW9uKG1fYnJvd3Nlci0+
bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6U3RvcCkpOwotICAgIGJhci0+YWRkV2lkZ2V0KG1f
YWRkcmVzc0Jhcik7Ci0KICAgICBRU2hvcnRjdXQqIHNlbGVjdEFkZHJlc3NCYXIgPSBuZXcgUVNo
b3J0Y3V0KFF0OjpDVFJMIHwgUXQ6OktleV9MLCB0aGlzKTsKICAgICBjb25uZWN0KHNlbGVjdEFk
ZHJlc3NCYXIsIFNJR05BTChhY3RpdmF0ZWQoKSksIHRoaXMsIFNMT1Qob3BlbkxvY2F0aW9uKCkp
KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112615</attachid>
            <date>2011-10-26 16:27:46 -0700</date>
            <delta_ts>2011-10-27 06:20:03 -0700</delta_ts>
            <desc>patch for review. - fix failing tests after r98447.</desc>
            <filename>70525_20111027-012418.patch</filename>
            <type>text/plain</type>
            <size>2036</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0NDA3ZDdkLi45MWRkNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMTAtMjYgIFplbm8gQWxiaXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdW1dLMl0gUmVtb3ZlIFFBY3Rpb24gZnJvbSBNaW5pQnJvd3NlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA1MjUKKworICAg
ICAgICBUaGlzIGZpeGVzIHRoZSBjb21tb252aWV3IHRlc3RzIHRoYXQgd2VyZSBmYWlsaW5nCisg
ICAgICAgIGFmdGVyIHI5ODQ0Ny4KKyAgICAgICAgV2ViVmlld0Fic3RyYWN0aW9uIG11c3QgZm9y
d2FyZCBhY3Rpb25zIHRvIGJvdGgKKyAgICAgICAgdGhlIFRvdWNoV2ViVmlldyBhbmQgdGhlIERl
c2t0b3BXZWJWaWV3LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fi
c3RyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6Z29CYWNrKToKKyAg
ICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6Z29Gb3J3YXJkKToKKyAgICAgICAgKFdlYlZpZXdB
YnN0cmFjdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OnJlbG9hZCk6
CisKIDIwMTEtMTAtMjYgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPgogCiAgICAg
ICAgIE5hbWUgdmlld3BvcnQgY2hhbmdlIGV2ZW50IGNvbnNpc3RlbnRseS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dl
YnZpZXdhYnN0cmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uY3BwCmluZGV4IDhkNDUzNzMu
LjQ3ZjI2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3Ry
YWN0aW9uLmNwcApAQCAtMTAwLDIxICsxMDAsMjUgQEAgaW50IFdlYlZpZXdBYnN0cmFjdGlvbjo6
bG9hZFByb2dyZXNzKCkgY29uc3QKIHZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjpnb0JhY2soKQog
ewogICAgIHRvdWNoV2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmdv
QmFjaygpOworICAgIGRlc2t0b3BXZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmdv
QmFjaygpOwogfQogCiB2b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6Z29Gb3J3YXJkKCkKIHsKICAg
ICB0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5nb0Zvcndh
cmQoKTsKKyAgICBkZXNrdG9wV2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5nb0Zv
cndhcmQoKTsKIH0KIAogdm9pZCBXZWJWaWV3QWJzdHJhY3Rpb246OnN0b3AoKQogewogICAgIHRv
dWNoV2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPnN0b3AoKTsKKyAg
ICBkZXNrdG9wV2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5zdG9wKCk7CiB9CiAK
IHZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjpyZWxvYWQoKQogewogICAgIHRvdWNoV2ViVmlldygp
LT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPnJlbG9hZCgpOworICAgIGRlc2t0b3BX
ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPnJlbG9hZCgpOwogfQogCiB2b2lkIFdl
YlZpZXdBYnN0cmFjdGlvbjo6dG91Y2hWaWV3TG9hZFN0YXJ0ZWQoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>