<?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>128156</bug_id>
          
          <creation_ts>2014-02-03 20:30:39 -0800</creation_ts>
          <short_desc>[EFL][WK2] Stop using COMPILE_ASSERT_MATCHING_ENUM macros in EFL WebKit2</short_desc>
          <delta_ts>2014-02-04 00:15:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jinwoo Song">jinwoo7.song</reporter>
          <assigned_to name="Jinwoo Song">jinwoo7.song</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>ryuan.choi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>976180</commentid>
    <comment_count>0</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-02-03 20:30:39 -0800</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976181</commentid>
    <comment_count>1</comment_count>
      <attachid>223067</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-02-03 20:33:00 -0800</bug_when>
    <thetext>Created attachment 223067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976183</commentid>
    <comment_count>2</comment_count>
      <attachid>223067</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-02-03 20:46:56 -0800</bug_when>
    <thetext>Comment on attachment 223067
Patch

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

Thanks. I commented bit.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision_private.h:69
&gt; +    Ewk_Navigation_Type toEwkNavigationType(WKFrameNavigationType navigationType) const;
&gt; +    Event_Mouse_Button toEventMouseButton(WKEventMouseButton mouseButton) const;
&gt; +    Event_Modifier_Keys toEventModifierKeys(WKEventModifiers modifiers) const;

I am not sure why we should add these as methods?

Can we make them as static inline function?

At least, they can be static methods.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:29
&gt;  #include &lt;wtf/Assertions.h&gt;

Does we need to keep this?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:399
&gt; +inline WKFindOptions toWKFindOptions(Ewk_Find_Options options)
&gt; +{
&gt; +    unsigned wkFindOptions = 0;
&gt; +
&gt; +    if (options &amp; EWK_FIND_OPTIONS_CASE_INSENSITIVE)
&gt; +        wkFindOptions |= kWKFindOptionsCaseInsensitive;
&gt; +    if (options &amp; EWK_FIND_OPTIONS_AT_WORD_STARTS)
&gt; +        wkFindOptions |= kWKFindOptionsAtWordStarts;
&gt; +    if (options &amp; EWK_FIND_OPTIONS_TREAT_MEDIAL_CAPITAL_AS_WORD_START)
&gt; +        wkFindOptions |= kWKFindOptionsTreatMedialCapitalAsWordStart;
&gt; +    if (options &amp; EWK_FIND_OPTIONS_BACKWARDS)
&gt; +        wkFindOptions |= kWKFindOptionsBackwards;
&gt; +    if (options &amp; EWK_FIND_OPTIONS_WRAP_AROUND)
&gt; +        wkFindOptions |= kWKFindOptionsWrapAround;
&gt; +    if (options &amp; EWK_FIND_OPTIONS_SHOW_OVERLAY)
&gt; +        wkFindOptions |= kWKFindOptionsShowOverlay;
&gt; +    if (options &amp; EWK_FIND_OPTIONS_SHOW_FIND_INDICATOR)
&gt; +        wkFindOptions |= kWKFindOptionsShowFindIndicator;
&gt; +    if (options &amp; EWK_FIND_OPTIONS_SHOW_HIGHLIGHT)
&gt; +        wkFindOptions |= kWKFindOptionsShowHighlight;
&gt; +
&gt; +    return static_cast&lt;WKFindOptions&gt;(wkFindOptions);
&gt; +}

I didn&apos;t check whether it is correct. but it looks changed the logic, right?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:529
&gt; +    switch (mode) {
&gt; +    case EWK_PAGINATION_MODE_INVALID:
&gt; +        break;

Should we keep EWK_PAGINATION_MODE_INVALID if it is not in kWK&apos;s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976185</commentid>
    <comment_count>3</comment_count>
      <attachid>223067</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-02-03 20:51:52 -0800</bug_when>
    <thetext>Comment on attachment 223067
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:215
&gt; +        return kWKCacheModelPrimaryWebBrowser;
&gt; +    }
&gt; +    ASSERT_NOT_REACHED();
&gt; +
&gt; +    return kWKCacheModelDocumentViewer;
&gt; +}

I don&apos;t know whether we have rules.

But, you did it as two ways in a patch. any reason?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:47
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return EWK_POPUP_MENU_ITEM;
&gt; +    }

here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976210</commentid>
    <comment_count>4</comment_count>
      <attachid>223067</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-03 22:20:35 -0800</bug_when>
    <thetext>Comment on attachment 223067
Patch

Patch looks good. Feel free to land as is, or address Ryan&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976219</commentid>
    <comment_count>5</comment_count>
      <attachid>223067</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-02-03 23:24:37 -0800</bug_when>
    <thetext>Comment on attachment 223067
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:215
&gt;&gt; +}
&gt; 
&gt; I don&apos;t know whether we have rules.
&gt; 
&gt; But, you did it as two ways in a patch. any reason?

As there is no concrete rules as I know, I added functions when there are more than three or four enum values.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision_private.h:69
&gt;&gt; +    Event_Modifier_Keys toEventModifierKeys(WKEventModifiers modifiers) const;
&gt; 
&gt; I am not sure why we should add these as methods?
&gt; 
&gt; Can we make them as static inline function?
&gt; 
&gt; At least, they can be static methods.

Exactly. I&apos;ll fix it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp:47
&gt;&gt; +    }
&gt; 
&gt; here

I&apos;ll fix it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:29
&gt;&gt;  #include &lt;wtf/Assertions.h&gt;
&gt; 
&gt; Does we need to keep this?

No, I&apos;ll remove this line.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:399
&gt;&gt; +}
&gt; 
&gt; I didn&apos;t check whether it is correct. but it looks changed the logic, right?

As several find options may be mixed, we have to do &apos;|&apos; operation. In previous code, static_cast converts the Ewk_Find_Options to WKFindOptions
and in WKSahredAPICast, find options are mixed similarly like this.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:529
&gt;&gt; +        break;
&gt; 
&gt; Should we keep EWK_PAGINATION_MODE_INVALID if it is not in kWK&apos;s?

Because of [-Werror=switch] error, we have to keep this value in switch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976220</commentid>
    <comment_count>6</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-02-03 23:25:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 223067 [details])
&gt; Patch looks good. Feel free to land as is, or address Ryan&apos;s comments.

Thanks for review, Andersca! I&apos;ll land a patch with Ryuan&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976222</commentid>
    <comment_count>7</comment_count>
      <attachid>223075</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-02-03 23:31:10 -0800</bug_when>
    <thetext>Created attachment 223075
Patch

Patch for landing after applying Ryuan&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976223</commentid>
    <comment_count>8</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-02-03 23:35:51 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=223075) [details]
&gt; Patch
&gt; 
&gt; Patch for landing after applying Ryuan&apos;s comments.

Looks fine to me. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976230</commentid>
    <comment_count>9</comment_count>
      <attachid>223075</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-04 00:15:27 -0800</bug_when>
    <thetext>Comment on attachment 223075
Patch

Clearing flags on attachment: 223075

Committed r163367: &lt;http://trac.webkit.org/changeset/163367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976231</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-04 00:15:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223067</attachid>
            <date>2014-02-03 20:33:00 -0800</date>
            <delta_ts>2014-02-03 23:31:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128156-20140204133257.patch</filename>
            <type>text/plain</type>
            <size>24059</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGY5Njg2ZmU5ODFiMzZj
MzJiNGNiMmIxYWFjZGE4YmM3NWRiMzk3MS4uMjk5NDQwOGMzNWUxNWY5YmU1OTIzYjVjNWQ2NjBl
MTE3YjFhOTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTAyLTAzICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IFN0b3AgdXNpbmcgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTSBtYWNyb3MgaW4gRUZMIFdl
YktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
ODE1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpyZXF1ZXN0
UG9wdXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHA6
CisgICAgICAgICh0b1dLQ2FjaGVNb2RlbCk6CisgICAgICAgIChFd2tDb250ZXh0OjpzZXRDYWNo
ZU1vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIu
Y3BwOgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX3BlcnNpc3RlbnRfc3RvcmFnZV9zZXQp
OgorICAgICAgICAoZXdrX2Nvb2tpZV9tYW5hZ2VyX2FjY2VwdF9wb2xpY3lfc2V0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3Bw
OgorICAgICAgICAoRXdrTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpFd2tOYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24pOgorICAgICAgICAoRXdrTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpuYXZp
Z2F0aW9uVHlwZSk6CisgICAgICAgIChFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Om1vdXNl
QnV0dG9uKToKKyAgICAgICAgKEV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6bW9kaWZpZXJz
KToKKyAgICAgICAgKEV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6dG9Fd2tOYXZpZ2F0aW9u
VHlwZSk6CisgICAgICAgIChFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OnRvRXZlbnRNb3Vz
ZUJ1dHRvbik6CisgICAgICAgIChFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OnRvRXZlbnRN
b2RpZmllcktleXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9u
X3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmg6CisgICAgICAgIChFd2tOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb246OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVw
X21lbnVfaXRlbS5jcHA6CisgICAgICAgIChFd2tQb3B1cE1lbnVJdGVtOjp0eXBlKToKKyAgICAg
ICAgKEV3a1BvcHVwTWVudUl0ZW06OnRleHREaXJlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwOgorICAgICAgICAodG9XS0ZpbmRPcHRpb25zKToKKyAgICAgICAgKGV3a192aWV3
X3RleHRfZmluZCk6CisgICAgICAgICh0b1dLUGFnaW5hdGlvbk1vZGUpOgorICAgICAgICAodG9F
d2tQYWdpbmF0aW9uTW9kZSk6CisgICAgICAgIChld2tfdmlld19wYWdpbmF0aW9uX21vZGVfc2V0
KToKKyAgICAgICAgKGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9nZXQpOgorCiAyMDE0LTAyLTAz
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktp
dDIgVmlldyBHZXN0dXJlczogVHdvIHNtYXJ0IG1hZ25pZmljYXRpb25zIGluIGEgcm93IHdpdGhv
dXQgbW92aW5nIHRoZSBtb3VzZSBzaG91bGQgem9vbSBvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggOTcwMGM1YzY5NzQxNWUxNGQ5ZjM3M2Vm
OTRiOTRlZTA2Mjc2MjZmOC4uMjc3ZjZhYWJkMjFhY2FkYzA4YjRiMDcyNWMwZTkyNjQ1YzdlNGI2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAg
LTg3Niw5ICs4NzYsNiBAQCB2b2lkIEV3a1ZpZXc6OmRpc21pc3NDb2xvclBpY2tlcigpCiB9CiAj
ZW5kaWYKIAotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05f
UklHSFRfVE9fTEVGVCwgUlRMKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RF
WFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7Ci0KIHZvaWQgRXdrVmlldzo6Y3VzdG9t
Q29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYgY29udGV4dE1lbnVJ
dGVtKQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CkBAIC05
MjQsOSArOTIxLDYgQEAgdm9pZCBFd2tWaWV3OjpoaWRlQ29udGV4dE1lbnUoKQogICAgIG1fY29u
dGV4dE1lbnUuY2xlYXIoKTsKIH0KIAotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
VEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvblJU
TCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9MRUZU
X1RPX1JJR0hULCBrV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uTFRSKTsKLQogdm9pZCBFd2tWaWV3
OjpyZXF1ZXN0UG9wdXBNZW51KFdLUG9wdXBNZW51TGlzdGVuZXJSZWYgcG9wdXBNZW51TGlzdGVu
ZXIsIGNvbnN0IFdLUmVjdCYgcmVjdCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRlbXMsIGludDMyX3Qg
c2VsZWN0ZWRJbmRleCkKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0
YSgpOwpAQCAtOTQ3LDcgKzk0MSwxNCBAQCB2b2lkIEV3a1ZpZXc6OnJlcXVlc3RQb3B1cE1lbnUo
V0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBwb3B1cE1lbnVMaXN0ZW5lciwgY29uc3QgVwogICAgIEVp
bmFfUmVjdGFuZ2xlIGVpbmFSZWN0OwogICAgIEVJTkFfUkVDVEFOR0xFX1NFVCgmZWluYVJlY3Qs
IHBvcHVwTWVudVBvc2l0aW9uLngsIHBvcHVwTWVudVBvc2l0aW9uLnksIHJlY3Quc2l6ZS53aWR0
aCwgcmVjdC5zaXplLmhlaWdodCk7CiAKLSAgICBzZC0+YXBpLT5wb3B1cF9tZW51X3Nob3coc2Qs
IGVpbmFSZWN0LCBzdGF0aWNfY2FzdDxFd2tfVGV4dF9EaXJlY3Rpb24+KHRleHREaXJlY3Rpb24p
LCBwYWdlU2NhbGVGYWN0b3IsIG1fcG9wdXBNZW51LmdldCgpKTsKKyAgICBzd2l0Y2ggKHRleHRE
aXJlY3Rpb24pIHsKKyAgICBjYXNlIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rpb25SVEw6CisgICAg
ICAgIHNkLT5hcGktPnBvcHVwX21lbnVfc2hvdyhzZCwgZWluYVJlY3QsIEVXS19URVhUX0RJUkVD
VElPTl9SSUdIVF9UT19MRUZULCBwYWdlU2NhbGVGYWN0b3IsIG1fcG9wdXBNZW51LmdldCgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdI
VDoKKyAgICAgICAgc2QtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNkLCBlaW5hUmVjdCwgRVdLX1RF
WFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIHBhZ2VTY2FsZUZhY3RvciwgbV9wb3B1cE1lbnUu
Z2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgRXdrVmlldzo6Y2xvc2VQ
b3B1cE1lbnUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHQuY3BwCmluZGV4IGU0M2VhOTc1YWQ2MDQ4Njc3YmVkMGY1YmFmNWY3Yzk1ZjIzNzQ1OWMu
LmM4NjJiOThiY2IzZmFiNjY2ODcxMTVkNTQ1YmE4ZTYxMWQ5MGFkN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTE5OCw5ICsx
OTgsMjUgQEAgdm9pZCBFd2tDb250ZXh0OjphZGRWaXNpdGVkTGluayhjb25zdCBTdHJpbmcmIHZp
c2l0ZWRVUkwpCiAgICAgV0tDb250ZXh0QWRkVmlzaXRlZExpbmsobV9jb250ZXh0LmdldCgpLCBh
ZG9wdFdLKHRvQ29waWVkQVBJKHZpc2l0ZWRVUkwpKS5nZXQoKSk7CiB9CiAKKy8vIEV3a19DYWNo
ZV9Nb2RlbCBlbnVtIHZhbGlkYXRpb24KK2lubGluZSBXS0NhY2hlTW9kZWwgdG9XS0NhY2hlTW9k
ZWwoRXdrX0NhY2hlX01vZGVsIGNhY2hlTW9kZWwpCit7CisgICAgc3dpdGNoIChjYWNoZU1vZGVs
KSB7CisgICAgY2FzZSBFV0tfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VSOgorICAgICAgICBy
ZXR1cm4ga1dLQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOworICAgIGNhc2UgRVdLX0NBQ0hFX01P
REVMX0RPQ1VNRU5UX0JST1dTRVI6CisgICAgICAgIHJldHVybiBrV0tDYWNoZU1vZGVsRG9jdW1l
bnRCcm93c2VyOworICAgIGNhc2UgRVdLX0NBQ0hFX01PREVMX1BSSU1BUllfV0VCQlJPV1NFUjoK
KyAgICAgICAgcmV0dXJuIGtXS0NhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICByZXR1cm4ga1dLQ2FjaGVNb2RlbERvY3Vt
ZW50Vmlld2VyOworfQorCiB2b2lkIEV3a0NvbnRleHQ6OnNldENhY2hlTW9kZWwoRXdrX0NhY2hl
X01vZGVsIGNhY2hlTW9kZWwpCiB7Ci0gICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChtX2NvbnRl
eHQuZ2V0KCksIHN0YXRpY19jYXN0PFdlYktpdDo6Q2FjaGVNb2RlbD4oY2FjaGVNb2RlbCkpOwor
ICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwobV9jb250ZXh0LmdldCgpLCB0b1dLQ2FjaGVNb2Rl
bChjYWNoZU1vZGVsKSk7CiB9CiAKIEV3a19DYWNoZV9Nb2RlbCBFd2tDb250ZXh0OjpjYWNoZU1v
ZGVsKCkgY29uc3QKQEAgLTMxOCwxMSArMzM0LDYgQEAgdm9pZCBld2tfY29udGV4dF92aXNpdGVk
X2xpbmtfYWRkKEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBjb25zdCBjaGFyKiB2aXNpdGVkVVIK
ICAgICBpbXBsLT5hZGRWaXNpdGVkTGluayh2aXNpdGVkVVJMKTsKIH0KIAotLy8gRXdrX0NhY2hl
X01vZGVsIGVudW0gdmFsaWRhdGlvbgotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VSLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIp
OwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ0FDSEVfTU9ERUxfRE9DVU1FTlRf
QlJPV1NFUiwga1dLQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcik7Ci1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DQUNIRV9NT0RFTF9QUklNQVJZX1dFQkJST1dTRVIsIGtXS0NhY2hl
TW9kZWxQcmltYXJ5V2ViQnJvd3Nlcik7Ci0KIEVpbmFfQm9vbCBld2tfY29udGV4dF9jYWNoZV9t
b2RlbF9zZXQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIEV3a19DYWNoZV9Nb2RlbCBjYWNoZU1v
ZGVsKQogewogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a0NvbnRleHQsIGV3a0Nv
bnRleHQsIGltcGwsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCmluZGV4IDVmMWQ0MDNhYWQwODliM2I2
ODIxMTgxNmIyMTU0NDhmYzc1ZjcxOTYuLmVjNGYyODcxNjJiMjJlYWE2N2Y5ZGE1ZTBiMjRiMDg2
NWU1MzM4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb29raWVfbWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImV3
a19jb29raWVfbWFuYWdlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAt
MTIwLDI4ICsxMjEsNDggQEAgdm9pZCBFd2tDb29raWVNYW5hZ2VyOjpjb29raWVzRGlkQ2hhbmdl
KFdLQ29va2llTWFuYWdlclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW4KICAgICBtYW5hZ2VyLT5t
X2NoYW5nZUhhbmRsZXIuY2FsbGJhY2sobWFuYWdlci0+bV9jaGFuZ2VIYW5kbGVyLnVzZXJEYXRh
KTsKIH0KIAotLy8gRXdrX0Nvb2tpZV9QZXJzaXN0ZW50X1N0b3JhZ2UgZW51bSB2YWxpZGF0aW9u
LgotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RP
UkFHRV9URVhULCBrV0tDb29raWVTdG9yYWdlVHlwZVRleHQpOwotQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEUsIGtXS0Nvb2tp
ZVN0b3JhZ2VUeXBlU1FMaXRlKTsKLQogdm9pZCBld2tfY29va2llX21hbmFnZXJfcGVyc2lzdGVu
dF9zdG9yYWdlX3NldChFd2tfQ29va2llX01hbmFnZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIGZp
bGVuYW1lLCBFd2tfQ29va2llX1BlcnNpc3RlbnRfU3RvcmFnZSBzdG9yYWdlKQogewogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG1hbmFnZXIpOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKGZpbGVuYW1lKTsKIAotICAgIG1hbmFnZXItPnNldFBlcnNpc3RlbnRTdG9yYWdl
KGZpbGVuYW1lLCBzdGF0aWNfY2FzdDxXS0Nvb2tpZVN0b3JhZ2VUeXBlPihzdG9yYWdlKSk7Ci19
CisgICAgV0tDb29raWVTdG9yYWdlVHlwZSB3a0Nvb2tpZVN0b3JhZ2VUeXBlID0ga1dLQ29va2ll
U3RvcmFnZVR5cGVUZXh0OworCisgICAgc3dpdGNoIChzdG9yYWdlKSB7CisgICAgY2FzZSBFV0tf
Q09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUOgorICAgICAgICB3a0Nvb2tpZVN0b3JhZ2VU
eXBlID0ga1dLQ29va2llU3RvcmFnZVR5cGVUZXh0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURToKKyAgICAgICAgd2tDb29raWVT
dG9yYWdlVHlwZSA9IGtXS0Nvb2tpZVN0b3JhZ2VUeXBlU1FMaXRlOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLS8v
IEV3a19Db29raWVfQWNjZXB0X1BvbGljeSBlbnVtIHZhbGlkYXRpb24uCi1DT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9BTFdBWVMsIGtXS0hUVFBD
b29raWVBY2NlcHRQb2xpY3lBbHdheXMpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lfTkVWRVIsIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lO
ZXZlcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfQUNDRVBUX1BP
TElDWV9OT19USElSRF9QQVJUWSwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluKTsKKyAgICBtYW5hZ2VyLT5zZXRQZXJzaXN0ZW50U3RvcmFnZShmaWxl
bmFtZSwgd2tDb29raWVTdG9yYWdlVHlwZSk7Cit9CiAKIHZvaWQgZXdrX2Nvb2tpZV9tYW5hZ2Vy
X2FjY2VwdF9wb2xpY3lfc2V0KEV3a19Db29raWVfTWFuYWdlciogbWFuYWdlciwgRXdrX0Nvb2tp
ZV9BY2NlcHRfUG9saWN5IHBvbGljeSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihtYW5hZ2VyKTsKIAotICAgIG1hbmFnZXItPnNldEhUVFBBY2NlcHRQb2xpY3koc3RhdGljX2Nh
c3Q8V0tIVFRQQ29va2llQWNjZXB0UG9saWN5Pihwb2xpY3kpKTsKKyAgICBXS0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kgd2tQb2xpY3kgPSBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzOwor
CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIEVXS19DT09LSUVfQUNDRVBUX1BPTElD
WV9BTFdBWVM6CisgICAgICAgIHdrUG9saWN5ID0ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUFs
d2F5czsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFV0tfQ09PS0lFX0FDQ0VQVF9QT0xJQ1lf
TkVWRVI6CisgICAgICAgIHdrUG9saWN5ID0ga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9OT19U
SElSRF9QQVJUWToKKyAgICAgICAgd2tQb2xpY3kgPSBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5
T25seUZyb21NYWluRG9jdW1lbnREb21haW47CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIG1hbmFnZXItPnNl
dEhUVFBBY2NlcHRQb2xpY3kod2tQb2xpY3kpOwogfQogCiBzdHJ1Y3QgR2V0X1BvbGljeV9Bc3lu
Y19EYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCmluZGV4IDM3ODY4
MWVjNzU1NDY1MGZiYmM1M2NlOGMxYmI2ZWM3NGFmNzBmYjUuLmFmYmUzOTYwMGQwODQ2YTE4NDU0
YWE1NTZiOTdkNTUxMTI4N2ZkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
LmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1Fd2tO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OkV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihXS0Zy
YW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIEV3a19OYXZpZ2F0aW9uX1R5cGUgbmF2aWdh
dGlvblR5cGUsIEV2ZW50X01vdXNlX0J1dHRvbiBtb3VzZUJ1dHRvbiwgRXZlbnRfTW9kaWZpZXJf
S2V5cyBtb2RpZmllcnMsIFBhc3NSZWZQdHI8RXdrVXJsUmVxdWVzdD4gcmVxdWVzdCwgY29uc3Qg
Y2hhciogZnJhbWVOYW1lKQorRXdrTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpFd2tOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS0Zy
YW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3Vz
ZUJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFBhc3NSZWZQdHI8RXdrVXJsUmVx
dWVzdD4gcmVxdWVzdCwgY29uc3QgY2hhciogZnJhbWVOYW1lKQogICAgIDogbV9saXN0ZW5lcihs
aXN0ZW5lcikKICAgICAsIG1fYWN0ZWRVcG9uQnlDbGllbnQoZmFsc2UpCiAgICAgLCBtX25hdmln
YXRpb25UeXBlKG5hdmlnYXRpb25UeXBlKQpAQCAtNTEsMTcgKzUxLDE3IEBAIEV3a05hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbjo6fkV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpCiAKIEV3a19O
YXZpZ2F0aW9uX1R5cGUgRXdrTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpuYXZpZ2F0aW9uVHlw
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbmF2aWdhdGlvblR5cGU7CisgICAgcmV0dXJuIHRv
RXdrTmF2aWdhdGlvblR5cGUobV9uYXZpZ2F0aW9uVHlwZSk7CiB9CiAKIEV2ZW50X01vdXNlX0J1
dHRvbiBFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Om1vdXNlQnV0dG9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9tb3VzZUJ1dHRvbjsKKyAgICByZXR1cm4gdG9FdmVudE1vdXNlQnV0dG9u
KG1fbW91c2VCdXR0b24pOwogfQogCiBFdmVudF9Nb2RpZmllcl9LZXlzIEV3a05hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbjo6bW9kaWZpZXJzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tb2RpZmll
cnM7CisgICAgcmV0dXJuIHRvRXZlbnRNb2RpZmllcktleXMobV9tb2RpZmllcnMpOwogfQogCiBj
b25zdCBjaGFyKiBFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OmZyYW1lTmFtZSgpIGNvbnN0
CkBAIC0xNDgsMjIgKzE0OCw1NCBAQCB2b2lkIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lv
bl9kb3dubG9hZChFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlYwogICAgIGltcGwt
PmRvd25sb2FkKCk7CiB9CiAKLS8vIEV3a19OYXZpZ2F0aW9uX1R5cGUgZW51bSB2YWxpZGF0aW9u
Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJR0FUSU9OX1RZUEVfTElOS19B
Q1RJVkFURUQsIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCk7Ci1DT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJR0FUSU9OX1RZUEVfRk9STV9TVUJNSVRURUQsIGtX
S0ZyYW1lTmF2aWdhdGlvblR5cGVGb3JtU3VibWl0dGVkKTsKLUNPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX05BVklHQVRJT05fVFlQRV9CQUNLX0ZPUldBUkQsIGtXS0ZyYW1lTmF2aWdh
dGlvblR5cGVCYWNrRm9yd2FyZCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19O
QVZJR0FUSU9OX1RZUEVfUkVMT0FELCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlUmVsb2FkKTsKLUNP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX05BVklHQVRJT05fVFlQRV9GT1JNX1JFU1VC
TUlUVEVELCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKTsKLUNPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX05BVklHQVRJT05fVFlQRV9PVEhFUiwga1dLRnJhbWVO
YXZpZ2F0aW9uVHlwZU90aGVyKTsKLQotLy8gRXZlbnRfTW91c2VfQnV0dG9uIGVudW0gdmFsaWRh
dGlvbgotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVOVF9NT1VTRV9CVVRUT05fTk9O
RSwga1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9uKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVZFTlRfTU9VU0VfQlVUVE9OX0xFRlQsIGtXS0V2ZW50TW91c2VCdXR0b25MZWZ0QnV0
dG9uKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVZFTlRfTU9VU0VfQlVUVE9OX01J
RERMRSwga1dLRXZlbnRNb3VzZUJ1dHRvbk1pZGRsZUJ1dHRvbik7Ci1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVWRU5UX01PVVNFX0JVVFRPTl9SSUdIVCwga1dLRXZlbnRNb3VzZUJ1dHRv
blJpZ2h0QnV0dG9uKTsKLQotLy8gRXZlbnRfTW9kaWZpZXJfS2V5cyB2YWxpZGF0aW9uCi1DT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVWRU5UX01PRElGSUVSX0tFWV9TSElGVCwga1dLRXZl
bnRNb2RpZmllcnNTaGlmdEtleSk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVWRU5U
X01PRElGSUVSX0tFWV9DVFJMLCBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpOwotQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVOVF9NT0RJRklFUl9LRVlfQUxULCBrV0tFdmVudE1v
ZGlmaWVyc0FsdEtleSk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVWRU5UX01PRElG
SUVSX0tFWV9NRVRBLCBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpOworaW5saW5lIEV3a19OYXZp
Z2F0aW9uX1R5cGUgRXdrTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjp0b0V3a05hdmlnYXRpb25U
eXBlKFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSkgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKG5hdmlnYXRpb25UeXBlKSB7CisgICAgY2FzZSBrV0tGcmFtZU5hdmlnYXRpb25UeXBl
TGlua0NsaWNrZWQ6CisgICAgICAgIHJldHVybiBFV0tfTkFWSUdBVElPTl9UWVBFX0xJTktfQUNU
SVZBVEVEOworICAgIGNhc2Uga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQ6Cisg
ICAgICAgIHJldHVybiBFV0tfTkFWSUdBVElPTl9UWVBFX0ZPUk1fU1VCTUlUVEVEOworICAgIGNh
c2Uga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJkOgorICAgICAgICByZXR1cm4gRVdL
X05BVklHQVRJT05fVFlQRV9CQUNLX0ZPUldBUkQ7CisgICAgY2FzZSBrV0tGcmFtZU5hdmlnYXRp
b25UeXBlUmVsb2FkOgorICAgICAgICByZXR1cm4gRVdLX05BVklHQVRJT05fVFlQRV9SRUxPQUQ7
CisgICAgY2FzZSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkOgorICAgICAg
ICByZXR1cm4gRVdLX05BVklHQVRJT05fVFlQRV9GT1JNX1JFU1VCTUlUVEVEOworICAgIGNhc2Ug
a1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyOgorICAgICAgICByZXR1cm4gRVdLX05BVklHQVRJ
T05fVFlQRV9PVEhFUjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBy
ZXR1cm4gRVdLX05BVklHQVRJT05fVFlQRV9MSU5LX0FDVElWQVRFRDsKK30KKworaW5saW5lIEV2
ZW50X01vdXNlX0J1dHRvbiBFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OnRvRXZlbnRNb3Vz
ZUJ1dHRvbihXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24pIGNvbnN0Cit7CisgICAgc3dp
dGNoIChtb3VzZUJ1dHRvbikgeworICAgIGNhc2Uga1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9u
OgorICAgICAgICByZXR1cm4gRVZFTlRfTU9VU0VfQlVUVE9OX05PTkU7CisgICAgY2FzZSBrV0tF
dmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIEVWRU5UX01PVVNFX0JV
VFRPTl9MRUZUOworICAgIGNhc2Uga1dLRXZlbnRNb3VzZUJ1dHRvbk1pZGRsZUJ1dHRvbjoKKyAg
ICAgICAgcmV0dXJuIEVWRU5UX01PVVNFX0JVVFRPTl9NSURETEU7CisgICAgY2FzZSBrV0tFdmVu
dE1vdXNlQnV0dG9uUmlnaHRCdXR0b246CisgICAgICAgIHJldHVybiBFVkVOVF9NT1VTRV9CVVRU
T05fUklHSFQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJu
IEVWRU5UX01PVVNFX0JVVFRPTl9OT05FOworfQorCitpbmxpbmUgRXZlbnRfTW9kaWZpZXJfS2V5
cyBFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OnRvRXZlbnRNb2RpZmllcktleXMoV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMpIGNvbnN0Cit7CisgICAgdW5zaWduZWQga2V5cyA9IDA7Cisg
ICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIGtl
eXMgfD0gRVZFTlRfTU9ESUZJRVJfS0VZX1NISUZUOworICAgIGlmIChtb2RpZmllcnMgJiBrV0tF
dmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAgIGtleXMgfD0ga1dLRXZlbnRNb2RpZmll
cnNDb250cm9sS2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtl
eSkKKyAgICAgICAga2V5cyB8PSBFVkVOVF9NT0RJRklFUl9LRVlfQUxUOworICAgIGlmIChtb2Rp
ZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAgIGtleXMgfD0gRVZFTlRf
TU9ESUZJRVJfS0VZX01FVEE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2ZW50X01vZGlmaWVy
X0tleXM+KGtleXMpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9w
cml2YXRlLmgKaW5kZXggNzE0ZGJjY2JlODRlNzZkODJhNTFlNDBmNzQ1YzRmOWQ4YjBmZDQ5NS4u
ZTJmYWNmYmExMGRhYTRjZjgxMzU0MjIxMTYwYTg2MDVmMTgxZDUyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bj4gY3JlYXRlKFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1v
dXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3RSZWYsIGNvbnN0IGNoYXIqIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmIGxpc3RlbmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24obGlzdGVuZXIsIHN0YXRpY19jYXN0PEV3a19O
YXZpZ2F0aW9uX1R5cGU+KG5hdmlnYXRpb25UeXBlKSwgc3RhdGljX2Nhc3Q8RXZlbnRfTW91c2Vf
QnV0dG9uPihtb3VzZUJ1dHRvbiksIHN0YXRpY19jYXN0PEV2ZW50X01vZGlmaWVyX0tleXM+KG1v
ZGlmaWVycyksIEV3a1VybFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0UmVmKSwgZnJhbWVOYW1lKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
KGxpc3RlbmVyLCBuYXZpZ2F0aW9uVHlwZSwgbW91c2VCdXR0b24sIG1vZGlmaWVycywgRXdrVXJs
UmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3RSZWYpLCBmcmFtZU5hbWUpKTsKICAgICB9CiAKICAgICB2
b2lkIGFjY2VwdCgpOwpAQCAtNjIsMTMgKzYyLDE3IEBAIHB1YmxpYzoKICAgICBFd2tVcmxSZXF1
ZXN0KiByZXF1ZXN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRXdrTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgRXdrX05hdmlnYXRp
b25fVHlwZSBuYXZpZ2F0aW9uVHlwZSwgRXZlbnRfTW91c2VfQnV0dG9uIG1vdXNlQnV0dG9uLCBF
dmVudF9Nb2RpZmllcl9LZXlzIG1vZGlmaWVycywgUGFzc1JlZlB0cjxFd2tVcmxSZXF1ZXN0PiBy
ZXF1ZXN0LCBjb25zdCBjaGFyKiBmcmFtZU5hbWUpOworICAgIEV3a05hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbihXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLRnJhbWVOYXZpZ2F0
aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBX
S0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgUGFzc1JlZlB0cjxFd2tVcmxSZXF1ZXN0PiByZXF1
ZXN0LCBjb25zdCBjaGFyKiBmcmFtZU5hbWUpOworCisgICAgRXdrX05hdmlnYXRpb25fVHlwZSB0
b0V3a05hdmlnYXRpb25UeXBlKFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSkg
Y29uc3Q7CisgICAgRXZlbnRfTW91c2VfQnV0dG9uIHRvRXZlbnRNb3VzZUJ1dHRvbihXS0V2ZW50
TW91c2VCdXR0b24gbW91c2VCdXR0b24pIGNvbnN0OworICAgIEV2ZW50X01vZGlmaWVyX0tleXMg
dG9FdmVudE1vZGlmaWVyS2V5cyhXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycykgY29uc3Q7CiAK
ICAgICBXS1JldGFpblB0cjxXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWY+IG1fbGlzdGVuZXI7CiAg
ICAgYm9vbCBtX2FjdGVkVXBvbkJ5Q2xpZW50OwotICAgIEV3a19OYXZpZ2F0aW9uX1R5cGUgbV9u
YXZpZ2F0aW9uVHlwZTsKLSAgICBFdmVudF9Nb3VzZV9CdXR0b24gbV9tb3VzZUJ1dHRvbjsKLSAg
ICBFdmVudF9Nb2RpZmllcl9LZXlzIG1fbW9kaWZpZXJzOworICAgIFdLRnJhbWVOYXZpZ2F0aW9u
VHlwZSBtX25hdmlnYXRpb25UeXBlOworICAgIFdLRXZlbnRNb3VzZUJ1dHRvbiBtX21vdXNlQnV0
dG9uOworICAgIFdLRXZlbnRNb2RpZmllcnMgbV9tb2RpZmllcnM7CiAgICAgUmVmUHRyPEV3a1Vy
bFJlcXVlc3Q+IG1fcmVxdWVzdDsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV9mcmFtZU5hbWU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnVfaXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
cG9wdXBfbWVudV9pdGVtLmNwcAppbmRleCBjOGFjMDYwNTExMjU1N2U1Y2UzZWMwMTlhYTIzOTJl
YTYzNGNiZTFjLi4zNWI0NzRkMTAwOWViNmQyOWZkNjZhMjAyNzkwM2MxMDllOGQ4NDc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9p
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBf
bWVudV9pdGVtLmNwcApAQCAtMzQsMTcgKzM0LDMwIEBAIEV3a1BvcHVwTWVudUl0ZW06OkV3a1Bv
cHVwTWVudUl0ZW0oV0tQb3B1cEl0ZW1SZWYgaXRlbSkKICAgICA6IG1fd2tJdGVtKGl0ZW0pCiB7
IH0KIAotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUE9QVVBfTUVOVV9TRVBBUkFU
T1IsIGtXS1BvcHVwSXRlbVR5cGVTZXBhcmF0b3IpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfUE9QVVBfTUVOVV9JVEVNLCBrV0tQb3B1cEl0ZW1UeXBlSXRlbSk7Ci0KIEV3a19Q
b3B1cF9NZW51X0l0ZW1fVHlwZSBFd2tQb3B1cE1lbnVJdGVtOjp0eXBlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlPihXS1BvcHVwSXRl
bUdldFR5cGUobV93a0l0ZW0uZ2V0KCkpKTsKKyAgICBzd2l0Y2ggKFdLUG9wdXBJdGVtR2V0VHlw
ZShtX3drSXRlbS5nZXQoKSkpIHsKKyAgICBjYXNlIGtXS1BvcHVwSXRlbVR5cGVTZXBhcmF0b3I6
CisgICAgICAgIHJldHVybiBFV0tfUE9QVVBfTUVOVV9TRVBBUkFUT1I7CisgICAgY2FzZSBrV0tQ
b3B1cEl0ZW1UeXBlSXRlbToKKyAgICAgICAgcmV0dXJuIEVXS19QT1BVUF9NRU5VX0lURU07Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBFV0tfUE9QVVBfTUVOVV9JVEVNOworICAgIH0KIH0KIAogRXdrX1RleHRfRGlyZWN0aW9uIEV3
a1BvcHVwTWVudUl0ZW06OnRleHREaXJlY3Rpb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFd2tfVGV4dF9EaXJlY3Rpb24+KFdLUG9wdXBJdGVtR2V0VGV4dERpcmVjdGlvbiht
X3drSXRlbS5nZXQoKSkpOworICAgIHN3aXRjaCAoV0tQb3B1cEl0ZW1HZXRUZXh0RGlyZWN0aW9u
KG1fd2tJdGVtLmdldCgpKSkgeworICAgIGNhc2Uga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvblJU
TDoKKyAgICAgICAgcmV0dXJuIEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZUOworICAg
IGNhc2Uga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUjoKKyAgICAgICAgcmV0dXJuIEVXS19U
RVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRf
VE9fUklHSFQ7CisgICAgfQogfQogCiBjb25zdCBjaGFyKiBFd2tQb3B1cE1lbnVJdGVtOjp0ZXh0
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0
ZS5oCmluZGV4IDRiZGIyNWI2ODlmYjg2Y2ZlMmMxMzk5ZmYzMTJiNTUxOGY3MmNjMzYuLmFkNDMw
MjQzMWRhZjI0M2NmOTk1MDlhYjA2MTkzOTM3YzFkNjliOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaApAQCAtMjgsOSArMjgsNiBAQAogCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAotI2RlZmluZSBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKGV3a05hbWUsIHdlYmNvcmVOYW1lKSBcCi0gICAgICAgIENPTVBJTEVfQVNTRVJU
KGludChld2tOYW1lKSA9PSBpbnQod2ViY29yZU5hbWUpLCBtaXNtYXRjaGluZ0VudW1zKQotCiBl
eHRlcm4gaW50IF9ld2tfbG9nX2RvbTsKIAogI2RlZmluZSBDUklUSUNBTCguLi4pIEVJTkFfTE9H
X0RPTV9DUklUKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggYTgzZjQ0MWJjNDFiNTkzM2FlN2Uw
ZDhlNjY2YzY0M2QwZTEyZTc2Yy4uNjJiN2IzNDE5NjA3MTFiMGM1ODRiNzAyMWQ0NDM0Y2I4ZTQy
NDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cApAQCAtMzc0LDE1ICszNzQsMjkgQEAgRWluYV9Cb29sIGV3a192aWV3X3VzZXJfYWdlbnRfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1c2VyQWdlbnQpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLS8vIEV3a0ZpbmRPcHRpb25zIHNob3VsZCBiZSBtYXRjaGVkIHVwIG9yZGVy
cyB3aXRoIFdrRmluZE9wdGlvbnMuCi1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19G
SU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRSwga1dLRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRp
dmUpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfRklORF9PUFRJT05TX0FUX1dP
UkRfU1RBUlRTLCBrV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyk7Ci1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19GSU5EX09QVElPTlNfVFJFQVRfTUVESUFMX0NBUElUQUxfQVNfV09S
RF9TVEFSVCwga1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7Ci1D
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19GSU5EX09QVElPTlNfQkFDS1dBUkRTLCBr
V0tGaW5kT3B0aW9uc0JhY2t3YXJkcyk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19GSU5EX09QVElPTlNfV1JBUF9BUk9VTkQsIGtXS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCk7Ci1D
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19GSU5EX09QVElPTlNfU0hPV19PVkVSTEFZ
LCBrV0tGaW5kT3B0aW9uc1Nob3dPdmVybGF5KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0ZJTkRfT1BUSU9OU19TSE9XX0ZJTkRfSU5ESUNBVE9SLCBrV0tGaW5kT3B0aW9uc1No
b3dGaW5kSW5kaWNhdG9yKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0ZJTkRf
T1BUSU9OU19TSE9XX0hJR0hMSUdIVCwga1dLRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0KTsKK2lu
bGluZSBXS0ZpbmRPcHRpb25zIHRvV0tGaW5kT3B0aW9ucyhFd2tfRmluZF9PcHRpb25zIG9wdGlv
bnMpCit7CisgICAgdW5zaWduZWQgd2tGaW5kT3B0aW9ucyA9IDA7CisKKyAgICBpZiAob3B0aW9u
cyAmIEVXS19GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRSkKKyAgICAgICAgd2tGaW5kT3B0
aW9ucyB8PSBrV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZTsKKyAgICBpZiAob3B0aW9ucyAm
IEVXS19GSU5EX09QVElPTlNfQVRfV09SRF9TVEFSVFMpCisgICAgICAgIHdrRmluZE9wdGlvbnMg
fD0ga1dLRmluZE9wdGlvbnNBdFdvcmRTdGFydHM7CisgICAgaWYgKG9wdGlvbnMgJiBFV0tfRklO
RF9PUFRJT05TX1RSRUFUX01FRElBTF9DQVBJVEFMX0FTX1dPUkRfU1RBUlQpCisgICAgICAgIHdr
RmluZE9wdGlvbnMgfD0ga1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFy
dDsKKyAgICBpZiAob3B0aW9ucyAmIEVXS19GSU5EX09QVElPTlNfQkFDS1dBUkRTKQorICAgICAg
ICB3a0ZpbmRPcHRpb25zIHw9IGtXS0ZpbmRPcHRpb25zQmFja3dhcmRzOworICAgIGlmIChvcHRp
b25zICYgRVdLX0ZJTkRfT1BUSU9OU19XUkFQX0FST1VORCkKKyAgICAgICAgd2tGaW5kT3B0aW9u
cyB8PSBrV0tGaW5kT3B0aW9uc1dyYXBBcm91bmQ7CisgICAgaWYgKG9wdGlvbnMgJiBFV0tfRklO
RF9PUFRJT05TX1NIT1dfT1ZFUkxBWSkKKyAgICAgICAgd2tGaW5kT3B0aW9ucyB8PSBrV0tGaW5k
T3B0aW9uc1Nob3dPdmVybGF5OworICAgIGlmIChvcHRpb25zICYgRVdLX0ZJTkRfT1BUSU9OU19T
SE9XX0ZJTkRfSU5ESUNBVE9SKQorICAgICAgICB3a0ZpbmRPcHRpb25zIHw9IGtXS0ZpbmRPcHRp
b25zU2hvd0ZpbmRJbmRpY2F0b3I7CisgICAgaWYgKG9wdGlvbnMgJiBFV0tfRklORF9PUFRJT05T
X1NIT1dfSElHSExJR0hUKQorICAgICAgICB3a0ZpbmRPcHRpb25zIHw9IGtXS0ZpbmRPcHRpb25z
U2hvd0hpZ2hsaWdodDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXS0ZpbmRPcHRpb25zPih3
a0ZpbmRPcHRpb25zKTsKK30KIAogRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCwgRXdrX0ZpbmRfT3B0aW9ucyBvcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewpAQCAtMzkwLDcgKzQwNCw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRl
eHQsIEV3a19GaW5kX09wCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRleHQs
IGZhbHNlKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1RleHQgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRleHQpKTsKLSAgICBXS1BhZ2VGaW5kU3Ry
aW5nKGltcGwtPndrUGFnZSgpLCB3a1RleHQuZ2V0KCksIHN0YXRpY19jYXN0PFdlYktpdDo6Rmlu
ZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBXS1BhZ2VGaW5kU3RyaW5n
KGltcGwtPndrUGFnZSgpLCB3a1RleHQuZ2V0KCksIHRvV0tGaW5kT3B0aW9ucyhvcHRpb25zKSwg
bWF4TWF0Y2hDb3VudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTUwOCwxOCArNTIyLDUx
IEBAIEVpbmFfQm9vbCBld2tfdmlld19pbnNwZWN0b3JfY2xvc2UoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCiAjZW5kaWYKIH0KIAotLy8gRXdrX1BhZ2luYXRpb25fTW9kZSBzaG91bGQgYmUgbWF0Y2hl
ZCB1cCBvcmRlcnMgd2l0aCBXS1BhZ2luYXRpb25Nb2RlLgotQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfUEFHSU5BVElPTl9NT0RFX1VOUEFHSU5BVEVELCBrV0tQYWdpbmF0aW9uTW9k
ZVVucGFnaW5hdGVkKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BBR0lOQVRJ
T05fTU9ERV9MRUZUX1RPX1JJR0hULCBrV0tQYWdpbmF0aW9uTW9kZUxlZnRUb1JpZ2h0KTsKLUNP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BBR0lOQVRJT05fTU9ERV9SSUdIVF9UT19M
RUZULCBrV0tQYWdpbmF0aW9uTW9kZVJpZ2h0VG9MZWZ0KTsKLUNPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX1BBR0lOQVRJT05fTU9ERV9UT1BfVE9fQk9UVE9NLCBrV0tQYWdpbmF0aW9u
TW9kZVRvcFRvQm90dG9tKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BBR0lO
QVRJT05fTU9ERV9CT1RUT01fVE9fVE9QLCBrV0tQYWdpbmF0aW9uTW9kZUJvdHRvbVRvVG9wKTsK
K2lubGluZSBXS1BhZ2luYXRpb25Nb2RlIHRvV0tQYWdpbmF0aW9uTW9kZShFd2tfUGFnaW5hdGlv
bl9Nb2RlIG1vZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBFV0tfUEFHSU5B
VElPTl9NT0RFX0lOVkFMSUQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVdLX1BBR0lOQVRJ
T05fTU9ERV9VTlBBR0lOQVRFRDoKKyAgICAgICAgcmV0dXJuIGtXS1BhZ2luYXRpb25Nb2RlVW5w
YWdpbmF0ZWQ7CisgICAgY2FzZSBFV0tfUEFHSU5BVElPTl9NT0RFX0xFRlRfVE9fUklHSFQ6Cisg
ICAgICAgIHJldHVybiBrV0tQYWdpbmF0aW9uTW9kZUxlZnRUb1JpZ2h0OworICAgIGNhc2UgRVdL
X1BBR0lOQVRJT05fTU9ERV9SSUdIVF9UT19MRUZUOgorICAgICAgICByZXR1cm4ga1dLUGFnaW5h
dGlvbk1vZGVSaWdodFRvTGVmdDsKKyAgICBjYXNlIEVXS19QQUdJTkFUSU9OX01PREVfVE9QX1RP
X0JPVFRPTToKKyAgICAgICAgcmV0dXJuIGtXS1BhZ2luYXRpb25Nb2RlVG9wVG9Cb3R0b207Cisg
ICAgY2FzZSBFV0tfUEFHSU5BVElPTl9NT0RFX0JPVFRPTV9UT19UT1A6CisgICAgICAgIHJldHVy
biBrV0tQYWdpbmF0aW9uTW9kZUJvdHRvbVRvVG9wOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKworICAgIHJldHVybiBFV0tfUEFHSU5BVElPTl9NT0RFX1VOUEFHSU5BVEVEOwor
fQorCitpbmxpbmUgRXdrX1BhZ2luYXRpb25fTW9kZSB0b0V3a1BhZ2luYXRpb25Nb2RlKFdLUGFn
aW5hdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIGtXS1Bh
Z2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ6CisgICAgICAgIHJldHVybiBFV0tfUEFHSU5BVElPTl9N
T0RFX1VOUEFHSU5BVEVEOworICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVMZWZ0VG9SaWdodDoK
KyAgICAgICAgcmV0dXJuIEVXS19QQUdJTkFUSU9OX01PREVfTEVGVF9UT19SSUdIVDsKKyAgICBj
YXNlIGtXS1BhZ2luYXRpb25Nb2RlUmlnaHRUb0xlZnQ6CisgICAgICAgIHJldHVybiBFV0tfUEFH
SU5BVElPTl9NT0RFX1JJR0hUX1RPX0xFRlQ7CisgICAgY2FzZSBrV0tQYWdpbmF0aW9uTW9kZVRv
cFRvQm90dG9tOgorICAgICAgICByZXR1cm4gRVdLX1BBR0lOQVRJT05fTU9ERV9UT1BfVE9fQk9U
VE9NOworICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVCb3R0b21Ub1RvcDoKKyAgICAgICAgcmV0
dXJuIEVXS19QQUdJTkFUSU9OX01PREVfQk9UVE9NX1RPX1RPUDsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisKKyAgICByZXR1cm4gRVdLX1BBR0lOQVRJT05fTU9ERV9VTlBBR0lO
QVRFRDsKK30KIAogRWluYV9Cb29sIGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV3a19QYWdpbmF0aW9uX01vZGUgbW9kZSkKIHsKICAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOwogCi0gICAgV0tQYWdl
U2V0UGFnaW5hdGlvbk1vZGUoaW1wbC0+d2tQYWdlKCksIHN0YXRpY19jYXN0PFdLUGFnaW5hdGlv
bk1vZGU+KG1vZGUpKTsKKyAgICBXS1BhZ2VTZXRQYWdpbmF0aW9uTW9kZShpbXBsLT53a1BhZ2Uo
KSwgdG9XS1BhZ2luYXRpb25Nb2RlKG1vZGUpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
NTI4LDcgKzU3NSw3IEBAIEV3a19QYWdpbmF0aW9uX01vZGUgZXdrX3ZpZXdfcGFnaW5hdGlvbl9t
b2RlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19JTVBM
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgRVdLX1BBR0lOQVRJT05fTU9ERV9JTlZBTElE
KTsKICAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXdrX1BhZ2luYXRpb25fTW9kZT4oV0tQ
YWdlR2V0UGFnaW5hdGlvbk1vZGUoaW1wbC0+d2tQYWdlKCkpKTsKKyAgICByZXR1cm4gdG9Fd2tQ
YWdpbmF0aW9uTW9kZShXS1BhZ2VHZXRQYWdpbmF0aW9uTW9kZShpbXBsLT53a1BhZ2UoKSkpOwog
fQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KEV2YXNfT2JqZWN0KiBld2tW
aWV3KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223075</attachid>
            <date>2014-02-03 23:31:10 -0800</date>
            <delta_ts>2014-02-04 00:15:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128156-20140204163106.patch</filename>
            <type>text/plain</type>
            <size>23699</size>
            <attacher name="Jinwoo Song">jinwoo7.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGY5Njg2ZmU5ODFiMzZj
MzJiNGNiMmIxYWFjZGE4YmM3NWRiMzk3MS4uMjRjNDc0ODFiNjExMGMzNmU5YTJmOTQ1ZWI0ZWU2
MzRhMWMxNDU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE0LTAyLTAzICBKaW53
b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IFN0b3AgdXNpbmcgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTSBtYWNyb3MgaW4gRUZMIFdl
YktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
ODE1NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6cmVxdWVz
dFBvcHVwTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3Bw
OgorICAgICAgICAodG9XS0NhY2hlTW9kZWwpOgorICAgICAgICAoRXdrQ29udGV4dDo6c2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKGV3a19jb29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0
KToKKyAgICAgICAgKGV3a19jb29raWVfbWFuYWdlcl9hY2NlcHRfcG9saWN5X3NldCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNw
cDoKKyAgICAgICAgKHRvRXdrTmF2aWdhdGlvblR5cGUpOgorICAgICAgICAodG9FdmVudE1vdXNl
QnV0dG9uKToKKyAgICAgICAgKHRvRXZlbnRNb2RpZmllcktleXMpOgorICAgICAgICAoRXdrTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uOjpFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pOgorICAg
ICAgICAoRXdrTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpuYXZpZ2F0aW9uVHlwZSk6CisgICAg
ICAgIChFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Om1vdXNlQnV0dG9uKToKKyAgICAgICAg
KEV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6bW9kaWZpZXJzKToKKyAgICAgICAgKGV3a19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3ByaXZhdGUuaDoKKyAgICAg
ICAgKEV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcDoKKyAgICAgICAgKEV3a1BvcHVw
TWVudUl0ZW06OnR5cGUpOgorICAgICAgICAoRXdrUG9wdXBNZW51SXRlbTo6dGV4dERpcmVjdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b1dLRmluZE9wdGlv
bnMpOgorICAgICAgICAoZXdrX3ZpZXdfdGV4dF9maW5kKToKKyAgICAgICAgKHRvV0tQYWdpbmF0
aW9uTW9kZSk6CisgICAgICAgICh0b0V3a1BhZ2luYXRpb25Nb2RlKToKKyAgICAgICAgKGV3a192
aWV3X3BhZ2luYXRpb25fbW9kZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcGFnaW5hdGlvbl9t
b2RlX2dldCk6CisKIDIwMTQtMDItMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzOiBUd28gc21hcnQgbWFnbmlm
aWNhdGlvbnMgaW4gYSByb3cgd2l0aG91dCBtb3ZpbmcgdGhlIG1vdXNlIHNob3VsZCB6b29tIG91
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCA5
NzAwYzVjNjk3NDE1ZTE0ZDlmMzczZWY5NGI5NGVlMDYyNzYyNmY4Li4yNzdmNmFhYmQyMWFjYWRj
MDhiNGIwNzI1YzBlOTI2NDVjN2U0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtODc2LDkgKzg3Niw2IEBAIHZvaWQgRXdrVmlldzo6ZGlz
bWlzc0NvbG9yUGlja2VyKCkKIH0KICNlbmRpZgogCi1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBSVEwpOwotQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgTFRSKTsK
LQogdm9pZCBFd2tWaWV3OjpjdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZChXS0NvbnRleHRN
ZW51SXRlbVJlZiBjb250ZXh0TWVudUl0ZW0pCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSBzbWFydERhdGEoKTsKQEAgLTkyNCw5ICs5MjEsNiBAQCB2b2lkIEV3a1ZpZXc6OmhpZGVD
b250ZXh0TWVudSgpCiAgICAgbV9jb250ZXh0TWVudS5jbGVhcigpOwogfQogCi1DT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBrV0tQ
b3B1cEl0ZW1UZXh0RGlyZWN0aW9uUlRMKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rp
b25MVFIpOwotCiB2b2lkIEV3a1ZpZXc6OnJlcXVlc3RQb3B1cE1lbnUoV0tQb3B1cE1lbnVMaXN0
ZW5lclJlZiBwb3B1cE1lbnVMaXN0ZW5lciwgY29uc3QgV0tSZWN0JiByZWN0LCBXS1BvcHVwSXRl
bVRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgV0tB
cnJheVJlZiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQogewogICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CkBAIC05NDcsNyArOTQxLDE0IEBAIHZvaWQgRXdr
Vmlldzo6cmVxdWVzdFBvcHVwTWVudShXS1BvcHVwTWVudUxpc3RlbmVyUmVmIHBvcHVwTWVudUxp
c3RlbmVyLCBjb25zdCBXCiAgICAgRWluYV9SZWN0YW5nbGUgZWluYVJlY3Q7CiAgICAgRUlOQV9S
RUNUQU5HTEVfU0VUKCZlaW5hUmVjdCwgcG9wdXBNZW51UG9zaXRpb24ueCwgcG9wdXBNZW51UG9z
aXRpb24ueSwgcmVjdC5zaXplLndpZHRoLCByZWN0LnNpemUuaGVpZ2h0KTsKIAotICAgIHNkLT5h
cGktPnBvcHVwX21lbnVfc2hvdyhzZCwgZWluYVJlY3QsIHN0YXRpY19jYXN0PEV3a19UZXh0X0Rp
cmVjdGlvbj4odGV4dERpcmVjdGlvbiksIHBhZ2VTY2FsZUZhY3RvciwgbV9wb3B1cE1lbnUuZ2V0
KCkpOworICAgIHN3aXRjaCAodGV4dERpcmVjdGlvbikgeworICAgIGNhc2Uga1dLUG9wdXBJdGVt
VGV4dERpcmVjdGlvblJUTDoKKyAgICAgICAgc2QtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNkLCBl
aW5hUmVjdCwgRVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIHBhZ2VTY2FsZUZhY3Rv
ciwgbV9wb3B1cE1lbnUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVXS19URVhU
X0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUOgorICAgICAgICBzZC0+YXBpLT5wb3B1cF9tZW51X3No
b3coc2QsIGVpbmFSZWN0LCBFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgcGFnZVNj
YWxlRmFjdG9yLCBtX3BvcHVwTWVudS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0K
IAogdm9pZCBFd2tWaWV3OjpjbG9zZVBvcHVwTWVudSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggZTQzZWE5NzVhZDYwNDg2Nzdi
ZWQwZjViYWY1ZjdjOTVmMjM3NDU5Yy4uYzg2MmI5OGJjYjNmYWI2NjY4NzExNWQ1NDViYThlNjEx
ZDkwYWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcApAQCAtMTk4LDkgKzE5OCwyNSBAQCB2b2lkIEV3a0NvbnRleHQ6OmFkZFZpc2l0
ZWRMaW5rKGNvbnN0IFN0cmluZyYgdmlzaXRlZFVSTCkKICAgICBXS0NvbnRleHRBZGRWaXNpdGVk
TGluayhtX2NvbnRleHQuZ2V0KCksIGFkb3B0V0sodG9Db3BpZWRBUEkodmlzaXRlZFVSTCkpLmdl
dCgpKTsKIH0KIAorLy8gRXdrX0NhY2hlX01vZGVsIGVudW0gdmFsaWRhdGlvbgoraW5saW5lIFdL
Q2FjaGVNb2RlbCB0b1dLQ2FjaGVNb2RlbChFd2tfQ2FjaGVfTW9kZWwgY2FjaGVNb2RlbCkKK3sK
KyAgICBzd2l0Y2ggKGNhY2hlTW9kZWwpIHsKKyAgICBjYXNlIEVXS19DQUNIRV9NT0RFTF9ET0NV
TUVOVF9WSUVXRVI6CisgICAgICAgIHJldHVybiBrV0tDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7
CisgICAgY2FzZSBFV0tfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfQlJPV1NFUjoKKyAgICAgICAgcmV0
dXJuIGtXS0NhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXI7CisgICAgY2FzZSBFV0tfQ0FDSEVfTU9E
RUxfUFJJTUFSWV9XRUJCUk9XU0VSOgorICAgICAgICByZXR1cm4ga1dLQ2FjaGVNb2RlbFByaW1h
cnlXZWJCcm93c2VyOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJl
dHVybiBrV0tDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7Cit9CisKIHZvaWQgRXdrQ29udGV4dDo6
c2V0Q2FjaGVNb2RlbChFd2tfQ2FjaGVfTW9kZWwgY2FjaGVNb2RlbCkKIHsKLSAgICBXS0NvbnRl
eHRTZXRDYWNoZU1vZGVsKG1fY29udGV4dC5nZXQoKSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpDYWNo
ZU1vZGVsPihjYWNoZU1vZGVsKSk7CisgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChtX2NvbnRl
eHQuZ2V0KCksIHRvV0tDYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsKIH0KIAogRXdrX0NhY2hlX01v
ZGVsIEV3a0NvbnRleHQ6OmNhY2hlTW9kZWwoKSBjb25zdApAQCAtMzE4LDExICszMzQsNiBAQCB2
b2lkIGV3a19jb250ZXh0X3Zpc2l0ZWRfbGlua19hZGQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQs
IGNvbnN0IGNoYXIqIHZpc2l0ZWRVUgogICAgIGltcGwtPmFkZFZpc2l0ZWRMaW5rKHZpc2l0ZWRV
UkwpOwogfQogCi0vLyBFd2tfQ2FjaGVfTW9kZWwgZW51bSB2YWxpZGF0aW9uCi1DT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVIsIGtXS0Nh
Y2hlTW9kZWxEb2N1bWVudFZpZXdlcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DQUNIRV9NT0RFTF9ET0NVTUVOVF9CUk9XU0VSLCBrV0tDYWNoZU1vZGVsRG9jdW1lbnRCcm93
c2VyKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NBQ0hFX01PREVMX1BSSU1B
UllfV0VCQlJPV1NFUiwga1dLQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKLQogRWluYV9C
b29sIGV3a19jb250ZXh0X2NhY2hlX21vZGVsX3NldChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwg
RXdrX0NhY2hlX01vZGVsIGNhY2hlTW9kZWwpCiB7CiAgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9S
RVRVUk4oRXdrQ29udGV4dCwgZXdrQ29udGV4dCwgaW1wbCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAK
aW5kZXggNWYxZDQwM2FhZDA4OWIzYjY4MjExODE2YjIxNTQ0OGZjNzVmNzE5Ni4uZWM0ZjI4NzE2
MmIyMmVhYTY3ZjlkYTVlMGIyNGIwODY1ZTUzMzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyX3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xMjAsMjggKzEyMSw0OCBAQCB2b2lkIEV3a0Nvb2tpZU1h
bmFnZXI6OmNvb2tpZXNEaWRDaGFuZ2UoV0tDb29raWVNYW5hZ2VyUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbgogICAgIG1hbmFnZXItPm1fY2hhbmdlSGFuZGxlci5jYWxsYmFjayhtYW5hZ2VyLT5t
X2NoYW5nZUhhbmRsZXIudXNlckRhdGEpOwogfQogCi0vLyBFd2tfQ29va2llX1BlcnNpc3RlbnRf
U3RvcmFnZSBlbnVtIHZhbGlkYXRpb24uCi1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQsIGtXS0Nvb2tpZVN0b3JhZ2VUeXBlVGV4
dCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfUEVSU0lTVEVOVF9T
VE9SQUdFX1NRTElURSwga1dLQ29va2llU3RvcmFnZVR5cGVTUUxpdGUpOwotCiB2b2lkIGV3a19j
b29raWVfbWFuYWdlcl9wZXJzaXN0ZW50X3N0b3JhZ2Vfc2V0KEV3a19Db29raWVfTWFuYWdlciog
bWFuYWdlciwgY29uc3QgY2hhciogZmlsZW5hbWUsIEV3a19Db29raWVfUGVyc2lzdGVudF9TdG9y
YWdlIHN0b3JhZ2UpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4obWFuYWdlcik7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZmlsZW5hbWUpOwogCi0gICAgbWFuYWdl
ci0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoZmlsZW5hbWUsIHN0YXRpY19jYXN0PFdLQ29va2llU3Rv
cmFnZVR5cGU+KHN0b3JhZ2UpKTsKLX0KKyAgICBXS0Nvb2tpZVN0b3JhZ2VUeXBlIHdrQ29va2ll
U3RvcmFnZVR5cGUgPSBrV0tDb29raWVTdG9yYWdlVHlwZVRleHQ7CisKKyAgICBzd2l0Y2ggKHN0
b3JhZ2UpIHsKKyAgICBjYXNlIEVXS19DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQ6Cisg
ICAgICAgIHdrQ29va2llU3RvcmFnZVR5cGUgPSBrV0tDb29raWVTdG9yYWdlVHlwZVRleHQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRVdLX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FM
SVRFOgorICAgICAgICB3a0Nvb2tpZVN0b3JhZ2VUeXBlID0ga1dLQ29va2llU3RvcmFnZVR5cGVT
UUxpdGU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KIAotLy8gRXdrX0Nvb2tpZV9BY2NlcHRfUG9saWN5IGVudW0gdmFs
aWRhdGlvbi4KLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPT0tJRV9BQ0NFUFRf
UE9MSUNZX0FMV0FZUywga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cyk7Ci1DT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT09LSUVfQUNDRVBUX1BPTElDWV9ORVZFUiwga1dL
SFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyKTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX05PX1RISVJEX1BBUlRZLCBrV0tIVFRQQ29va2ll
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pOworICAgIG1hbmFnZXItPnNl
dFBlcnNpc3RlbnRTdG9yYWdlKGZpbGVuYW1lLCB3a0Nvb2tpZVN0b3JhZ2VUeXBlKTsKK30KIAog
dm9pZCBld2tfY29va2llX21hbmFnZXJfYWNjZXB0X3BvbGljeV9zZXQoRXdrX0Nvb2tpZV9NYW5h
Z2VyKiBtYW5hZ2VyLCBFd2tfQ29va2llX0FjY2VwdF9Qb2xpY3kgcG9saWN5KQogewogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG1hbmFnZXIpOwogCi0gICAgbWFuYWdlci0+c2V0SFRU
UEFjY2VwdFBvbGljeShzdGF0aWNfY2FzdDxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHBvbGlj
eSkpOworICAgIFdLSFRUUENvb2tpZUFjY2VwdFBvbGljeSB3a1BvbGljeSA9IGtXS0hUVFBDb29r
aWVBY2NlcHRQb2xpY3lBbHdheXM7CisKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2Ug
RVdLX0NPT0tJRV9BQ0NFUFRfUE9MSUNZX0FMV0FZUzoKKyAgICAgICAgd2tQb2xpY3kgPSBrV0tI
VFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVX
S19DT09LSUVfQUNDRVBUX1BPTElDWV9ORVZFUjoKKyAgICAgICAgd2tQb2xpY3kgPSBrV0tIVFRQ
Q29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVdLX0NP
T0tJRV9BQ0NFUFRfUE9MSUNZX05PX1RISVJEX1BBUlRZOgorICAgICAgICB3a1BvbGljeSA9IGtX
S0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorCisgICAgbWFuYWdlci0+c2V0SFRUUEFjY2VwdFBvbGljeSh3a1BvbGljeSk7CiB9CiAK
IHN0cnVjdCBHZXRfUG9saWN5X0FzeW5jX0RhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5jcHAKaW5kZXggMzc4NjgxZWM3NTU0NjUwZmJiYzUzY2U4YzFiYjZlYzc0YWY3MGZi
NS4uMzc0MGVlNzc1ZjY4ODAyMzA2YzkxMGJmMmQxZWRkZGYwYTM5ODJiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2Rl
Y2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCkBAIC0zMiw3ICszMiw1OSBAQAogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCi1Fd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OkV3a05hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbihXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIEV3
a19OYXZpZ2F0aW9uX1R5cGUgbmF2aWdhdGlvblR5cGUsIEV2ZW50X01vdXNlX0J1dHRvbiBtb3Vz
ZUJ1dHRvbiwgRXZlbnRfTW9kaWZpZXJfS2V5cyBtb2RpZmllcnMsIFBhc3NSZWZQdHI8RXdrVXJs
UmVxdWVzdD4gcmVxdWVzdCwgY29uc3QgY2hhciogZnJhbWVOYW1lKQoraW5saW5lIHN0YXRpYyBF
d2tfTmF2aWdhdGlvbl9UeXBlIHRvRXdrTmF2aWdhdGlvblR5cGUoV0tGcmFtZU5hdmlnYXRpb25U
eXBlIG5hdmlnYXRpb25UeXBlKQoreworICAgIHN3aXRjaCAobmF2aWdhdGlvblR5cGUpIHsKKyAg
ICBjYXNlIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDoKKyAgICAgICAgcmV0dXJu
IEVXS19OQVZJR0FUSU9OX1RZUEVfTElOS19BQ1RJVkFURUQ7CisgICAgY2FzZSBrV0tGcmFtZU5h
dmlnYXRpb25UeXBlRm9ybVN1Ym1pdHRlZDoKKyAgICAgICAgcmV0dXJuIEVXS19OQVZJR0FUSU9O
X1RZUEVfRk9STV9TVUJNSVRURUQ7CisgICAgY2FzZSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlQmFj
a0ZvcndhcmQ6CisgICAgICAgIHJldHVybiBFV0tfTkFWSUdBVElPTl9UWVBFX0JBQ0tfRk9SV0FS
RDsKKyAgICBjYXNlIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVSZWxvYWQ6CisgICAgICAgIHJldHVy
biBFV0tfTkFWSUdBVElPTl9UWVBFX1JFTE9BRDsKKyAgICBjYXNlIGtXS0ZyYW1lTmF2aWdhdGlv
blR5cGVGb3JtUmVzdWJtaXR0ZWQ6CisgICAgICAgIHJldHVybiBFV0tfTkFWSUdBVElPTl9UWVBF
X0ZPUk1fUkVTVUJNSVRURUQ7CisgICAgY2FzZSBrV0tGcmFtZU5hdmlnYXRpb25UeXBlT3RoZXI6
CisgICAgICAgIHJldHVybiBFV0tfTkFWSUdBVElPTl9UWVBFX09USEVSOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVybiBFV0tfTkFWSUdBVElPTl9UWVBFX0xJ
TktfQUNUSVZBVEVEOworfQorCitpbmxpbmUgc3RhdGljIEV2ZW50X01vdXNlX0J1dHRvbiB0b0V2
ZW50TW91c2VCdXR0b24oV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uKQoreworICAgIHN3
aXRjaCAobW91c2VCdXR0b24pIHsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRv
bjoKKyAgICAgICAgcmV0dXJuIEVWRU5UX01PVVNFX0JVVFRPTl9OT05FOworICAgIGNhc2Uga1dL
RXZlbnRNb3VzZUJ1dHRvbkxlZnRCdXR0b246CisgICAgICAgIHJldHVybiBFVkVOVF9NT1VTRV9C
VVRUT05fTEVGVDsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b246Cisg
ICAgICAgIHJldHVybiBFVkVOVF9NT1VTRV9CVVRUT05fTUlERExFOworICAgIGNhc2Uga1dLRXZl
bnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uOgorICAgICAgICByZXR1cm4gRVZFTlRfTU9VU0VfQlVU
VE9OX1JJR0hUOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVy
biBFVkVOVF9NT1VTRV9CVVRUT05fTk9ORTsKK30KKworaW5saW5lIHN0YXRpYyBFdmVudF9Nb2Rp
Zmllcl9LZXlzIHRvRXZlbnRNb2RpZmllcktleXMoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMp
Cit7CisgICAgdW5zaWduZWQga2V5cyA9IDA7CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50
TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIGtleXMgfD0gRVZFTlRfTU9ESUZJRVJfS0VZX1NI
SUZUOworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisg
ICAgICAgIGtleXMgfD0ga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5OworICAgIGlmIChtb2Rp
ZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAga2V5cyB8PSBFVkVOVF9N
T0RJRklFUl9LRVlfQUxUOworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc01l
dGFLZXkpCisgICAgICAgIGtleXMgfD0gRVZFTlRfTU9ESUZJRVJfS0VZX01FVEE7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEV2ZW50X01vZGlmaWVyX0tleXM+KGtleXMpOworfQorCitFd2tOYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb246OkV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihXS0ZyYW1l
UG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0
aW9uVHlwZSwgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycywgUGFzc1JlZlB0cjxFd2tVcmxSZXF1ZXN0PiByZXF1ZXN0LCBjb25zdCBjaGFy
KiBmcmFtZU5hbWUpCiAgICAgOiBtX2xpc3RlbmVyKGxpc3RlbmVyKQogICAgICwgbV9hY3RlZFVw
b25CeUNsaWVudChmYWxzZSkKICAgICAsIG1fbmF2aWdhdGlvblR5cGUobmF2aWdhdGlvblR5cGUp
CkBAIC01MSwxNyArMTAzLDE3IEBAIEV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6fkV3a05h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpCiAKIEV3a19OYXZpZ2F0aW9uX1R5cGUgRXdrTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uOjpuYXZpZ2F0aW9uVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fbmF2aWdhdGlvblR5cGU7CisgICAgcmV0dXJuIHRvRXdrTmF2aWdhdGlvblR5cGUobV9uYXZp
Z2F0aW9uVHlwZSk7CiB9CiAKIEV2ZW50X01vdXNlX0J1dHRvbiBFd2tOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb246Om1vdXNlQnV0dG9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tb3VzZUJ1dHRv
bjsKKyAgICByZXR1cm4gdG9FdmVudE1vdXNlQnV0dG9uKG1fbW91c2VCdXR0b24pOwogfQogCiBF
dmVudF9Nb2RpZmllcl9LZXlzIEV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6bW9kaWZpZXJz
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tb2RpZmllcnM7CisgICAgcmV0dXJuIHRvRXZlbnRN
b2RpZmllcktleXMobV9tb2RpZmllcnMpOwogfQogCiBjb25zdCBjaGFyKiBFd2tOYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb246OmZyYW1lTmFtZSgpIGNvbnN0CkBAIC0xNDcsMjMgKzE5OSwzIEBAIHZv
aWQgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKEV3a19OYXZpZ2F0aW9u
X1BvbGljeV9EZWNpc2lvbiogZGVjCiAKICAgICBpbXBsLT5kb3dubG9hZCgpOwogfQotCi0vLyBF
d2tfTmF2aWdhdGlvbl9UeXBlIGVudW0gdmFsaWRhdGlvbgotQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfTkFWSUdBVElPTl9UWVBFX0xJTktfQUNUSVZBVEVELCBrV0tGcmFtZU5hdmln
YXRpb25UeXBlTGlua0NsaWNrZWQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
TkFWSUdBVElPTl9UWVBFX0ZPUk1fU1VCTUlUVEVELCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlRm9y
bVN1Ym1pdHRlZCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJR0FUSU9O
X1RZUEVfQkFDS19GT1JXQVJELCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlQmFja0ZvcndhcmQpOwot
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfTkFWSUdBVElPTl9UWVBFX1JFTE9BRCwg
a1dLRnJhbWVOYXZpZ2F0aW9uVHlwZVJlbG9hZCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19OQVZJR0FUSU9OX1RZUEVfRk9STV9SRVNVQk1JVFRFRCwga1dLRnJhbWVOYXZpZ2F0
aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19OQVZJR0FUSU9OX1RZUEVfT1RIRVIsIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVPdGhlcik7Ci0K
LS8vIEV2ZW50X01vdXNlX0J1dHRvbiBlbnVtIHZhbGlkYXRpb24KLUNPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVZFTlRfTU9VU0VfQlVUVE9OX05PTkUsIGtXS0V2ZW50TW91c2VCdXR0b25O
b0J1dHRvbik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVWRU5UX01PVVNFX0JVVFRP
Tl9MRUZULCBrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbik7Ci1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVWRU5UX01PVVNFX0JVVFRPTl9NSURETEUsIGtXS0V2ZW50TW91c2VCdXR0
b25NaWRkbGVCdXR0b24pOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVOVF9NT1VT
RV9CVVRUT05fUklHSFQsIGtXS0V2ZW50TW91c2VCdXR0b25SaWdodEJ1dHRvbik7Ci0KLS8vIEV2
ZW50X01vZGlmaWVyX0tleXMgdmFsaWRhdGlvbgotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFVkVOVF9NT0RJRklFUl9LRVlfU0hJRlQsIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpOwot
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVOVF9NT0RJRklFUl9LRVlfQ1RSTCwga1dL
RXZlbnRNb2RpZmllcnNDb250cm9sS2V5KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVZFTlRfTU9ESUZJRVJfS0VZX0FMVCwga1dLRXZlbnRNb2RpZmllcnNBbHRLZXkpOwotQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVOVF9NT0RJRklFUl9LRVlfTUVUQSwga1dLRXZlbnRN
b2RpZmllcnNNZXRhS2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25f
cHJpdmF0ZS5oCmluZGV4IDcxNGRiY2NiZTg0ZTc2ZDgyYTUxZTQwZjc0NWM0ZjlkOGIwZmQ0OTUu
LjdiOTc0NDQ2MGRmODBlMjI0OTczZWJhYjJjODNiZTFiODUwYTNiZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNp
c2lvbl9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3ByaXZhdGUuaApAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tOYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24+IGNyZWF0ZShXS0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRN
b3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLVVJM
UmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCBjaGFyKiBmcmFtZU5hbWUsIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclJlZiBsaXN0ZW5lcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRXdrTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKGxpc3RlbmVyLCBzdGF0aWNfY2FzdDxFd2tf
TmF2aWdhdGlvbl9UeXBlPihuYXZpZ2F0aW9uVHlwZSksIHN0YXRpY19jYXN0PEV2ZW50X01vdXNl
X0J1dHRvbj4obW91c2VCdXR0b24pLCBzdGF0aWNfY2FzdDxFdmVudF9Nb2RpZmllcl9LZXlzPiht
b2RpZmllcnMpLCBFd2tVcmxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdFJlZiksIGZyYW1lTmFtZSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a05hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bihsaXN0ZW5lciwgbmF2aWdhdGlvblR5cGUsIG1vdXNlQnV0dG9uLCBtb2RpZmllcnMsIEV3a1Vy
bFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0UmVmKSwgZnJhbWVOYW1lKSk7CiAgICAgfQogCiAgICAg
dm9pZCBhY2NlcHQoKTsKQEAgLTYyLDEzICs2MiwxMyBAQCBwdWJsaWM6CiAgICAgRXdrVXJsUmVx
dWVzdCogcmVxdWVzdCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEV3a05hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbihXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIEV3a19OYXZpZ2F0
aW9uX1R5cGUgbmF2aWdhdGlvblR5cGUsIEV2ZW50X01vdXNlX0J1dHRvbiBtb3VzZUJ1dHRvbiwg
RXZlbnRfTW9kaWZpZXJfS2V5cyBtb2RpZmllcnMsIFBhc3NSZWZQdHI8RXdrVXJsUmVxdWVzdD4g
cmVxdWVzdCwgY29uc3QgY2hhciogZnJhbWVOYW1lKTsKKyAgICBFd2tOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24oV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS0ZyYW1lTmF2aWdh
dGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFBhc3NSZWZQdHI8RXdrVXJsUmVxdWVzdD4gcmVx
dWVzdCwgY29uc3QgY2hhciogZnJhbWVOYW1lKTsKIAogICAgIFdLUmV0YWluUHRyPFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lclJlZj4gbV9saXN0ZW5lcjsKICAgICBib29sIG1fYWN0ZWRVcG9uQnlDbGll
bnQ7Ci0gICAgRXdrX05hdmlnYXRpb25fVHlwZSBtX25hdmlnYXRpb25UeXBlOwotICAgIEV2ZW50
X01vdXNlX0J1dHRvbiBtX21vdXNlQnV0dG9uOwotICAgIEV2ZW50X01vZGlmaWVyX0tleXMgbV9t
b2RpZmllcnM7CisgICAgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG1fbmF2aWdhdGlvblR5cGU7Cisg
ICAgV0tFdmVudE1vdXNlQnV0dG9uIG1fbW91c2VCdXR0b247CisgICAgV0tFdmVudE1vZGlmaWVy
cyBtX21vZGlmaWVyczsKICAgICBSZWZQdHI8RXdrVXJsUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAg
IFdLRWluYVNoYXJlZFN0cmluZyBtX2ZyYW1lTmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCmluZGV4
IGM4YWMwNjA1MTEyNTU3ZTVjZTNlYzAxOWFhMjM5MmVhNjM0Y2JlMWMuLjY2ZWYwYzdmYThhNWI2
NGQ0YWRjZmMyYzU3MzFmMmQ5YmJkOTY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwCkBAIC0zNCwxNyAr
MzQsMzAgQEAgRXdrUG9wdXBNZW51SXRlbTo6RXdrUG9wdXBNZW51SXRlbShXS1BvcHVwSXRlbVJl
ZiBpdGVtKQogICAgIDogbV93a0l0ZW0oaXRlbSkKIHsgfQogCi1DT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19QT1BVUF9NRU5VX1NFUEFSQVRPUiwga1dLUG9wdXBJdGVtVHlwZVNlcGFy
YXRvcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19QT1BVUF9NRU5VX0lURU0s
IGtXS1BvcHVwSXRlbVR5cGVJdGVtKTsKLQogRXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIEV3a1Bv
cHVwTWVudUl0ZW06OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tf
UG9wdXBfTWVudV9JdGVtX1R5cGU+KFdLUG9wdXBJdGVtR2V0VHlwZShtX3drSXRlbS5nZXQoKSkp
OworICAgIHN3aXRjaCAoV0tQb3B1cEl0ZW1HZXRUeXBlKG1fd2tJdGVtLmdldCgpKSkgeworICAg
IGNhc2Uga1dLUG9wdXBJdGVtVHlwZVNlcGFyYXRvcjoKKyAgICAgICAgcmV0dXJuIEVXS19QT1BV
UF9NRU5VX1NFUEFSQVRPUjsKKyAgICBjYXNlIGtXS1BvcHVwSXRlbVR5cGVJdGVtOgorICAgICAg
ICByZXR1cm4gRVdLX1BPUFVQX01FTlVfSVRFTTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisKKyAgICByZXR1cm4gRVdLX1BPUFVQX01FTlVfVU5LTk9XTjsKIH0KIAogRXdrX1Rl
eHRfRGlyZWN0aW9uIEV3a1BvcHVwTWVudUl0ZW06OnRleHREaXJlY3Rpb24oKSBjb25zdAogewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfVGV4dF9EaXJlY3Rpb24+KFdLUG9wdXBJdGVtR2V0
VGV4dERpcmVjdGlvbihtX3drSXRlbS5nZXQoKSkpOworICAgIHN3aXRjaCAoV0tQb3B1cEl0ZW1H
ZXRUZXh0RGlyZWN0aW9uKG1fd2tJdGVtLmdldCgpKSkgeworICAgIGNhc2Uga1dLUG9wdXBJdGVt
VGV4dERpcmVjdGlvblJUTDoKKyAgICAgICAgcmV0dXJuIEVXS19URVhUX0RJUkVDVElPTl9SSUdI
VF9UT19MRUZUOworICAgIGNhc2Uga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUjoKKyAgICAg
ICAgcmV0dXJuIEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hUOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVybiBFV0tfVEVYVF9ESVJFQ1RJT05fTEVG
VF9UT19SSUdIVDsKIH0KIAogY29uc3QgY2hhciogRXdrUG9wdXBNZW51SXRlbTo6dGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaApp
bmRleCA0YmRiMjViNjg5ZmI4NmNmZTJjMTM5OWZmMzEyYjU1MThmNzJjYzM2Li5mZDM5NGFhZTZi
ZDE1MmFmYmIzOWMwNDdlN2M0N2JlNDAxYWIwYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmgKQEAgLTI2LDExICsyNiw2IEBACiAjaWZuZGVm
IGV3a19wcml2YXRlX2gKICNkZWZpbmUgZXdrX3ByaXZhdGVfaAogCi0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLQotI2RlZmluZSBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKGV3a05h
bWUsIHdlYmNvcmVOYW1lKSBcCi0gICAgICAgIENPTVBJTEVfQVNTRVJUKGludChld2tOYW1lKSA9
PSBpbnQod2ViY29yZU5hbWUpLCBtaXNtYXRjaGluZ0VudW1zKQotCiBleHRlcm4gaW50IF9ld2tf
bG9nX2RvbTsKIAogI2RlZmluZSBDUklUSUNBTCguLi4pIEVJTkFfTE9HX0RPTV9DUklUKF9ld2tf
bG9nX2RvbSwgX19WQV9BUkdTX18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKaW5kZXggYTgzZjQ0MWJjNDFiNTkzM2FlN2UwZDhlNjY2YzY0M2QwZTEy
ZTc2Yy4uYjU3NGVlYjgzZTc0Y2ZiNjc4Nzg2Y2QyZmYwYjI3ZWE3ZWZiZWJiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMzc0LDE1ICsz
NzQsMjkgQEAgRWluYV9Cb29sIGV3a192aWV3X3VzZXJfYWdlbnRfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBjaGFyKiB1c2VyQWdlbnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8v
IEV3a0ZpbmRPcHRpb25zIHNob3VsZCBiZSBtYXRjaGVkIHVwIG9yZGVycyB3aXRoIFdrRmluZE9w
dGlvbnMuCi1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19GSU5EX09QVElPTlNfQ0FT
RV9JTlNFTlNJVElWRSwga1dLRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpOwotQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfRklORF9PUFRJT05TX0FUX1dPUkRfU1RBUlRTLCBrV0tG
aW5kT3B0aW9uc0F0V29yZFN0YXJ0cyk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19GSU5EX09QVElPTlNfVFJFQVRfTUVESUFMX0NBUElUQUxfQVNfV09SRF9TVEFSVCwga1dLRmlu
ZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7Ci1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19GSU5EX09QVElPTlNfQkFDS1dBUkRTLCBrV0tGaW5kT3B0aW9uc0Jh
Y2t3YXJkcyk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19GSU5EX09QVElPTlNf
V1JBUF9BUk9VTkQsIGtXS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCk7Ci1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19GSU5EX09QVElPTlNfU0hPV19PVkVSTEFZLCBrV0tGaW5kT3B0aW9u
c1Nob3dPdmVybGF5KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0ZJTkRfT1BU
SU9OU19TSE9XX0ZJTkRfSU5ESUNBVE9SLCBrV0tGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9y
KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0ZJTkRfT1BUSU9OU19TSE9XX0hJ
R0hMSUdIVCwga1dLRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0KTsKK2lubGluZSBXS0ZpbmRPcHRp
b25zIHRvV0tGaW5kT3B0aW9ucyhFd2tfRmluZF9PcHRpb25zIG9wdGlvbnMpCit7CisgICAgdW5z
aWduZWQgd2tGaW5kT3B0aW9ucyA9IDA7CisKKyAgICBpZiAob3B0aW9ucyAmIEVXS19GSU5EX09Q
VElPTlNfQ0FTRV9JTlNFTlNJVElWRSkKKyAgICAgICAgd2tGaW5kT3B0aW9ucyB8PSBrV0tGaW5k
T3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZTsKKyAgICBpZiAob3B0aW9ucyAmIEVXS19GSU5EX09QVElP
TlNfQVRfV09SRF9TVEFSVFMpCisgICAgICAgIHdrRmluZE9wdGlvbnMgfD0ga1dLRmluZE9wdGlv
bnNBdFdvcmRTdGFydHM7CisgICAgaWYgKG9wdGlvbnMgJiBFV0tfRklORF9PUFRJT05TX1RSRUFU
X01FRElBTF9DQVBJVEFMX0FTX1dPUkRfU1RBUlQpCisgICAgICAgIHdrRmluZE9wdGlvbnMgfD0g
a1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydDsKKyAgICBpZiAob3B0
aW9ucyAmIEVXS19GSU5EX09QVElPTlNfQkFDS1dBUkRTKQorICAgICAgICB3a0ZpbmRPcHRpb25z
IHw9IGtXS0ZpbmRPcHRpb25zQmFja3dhcmRzOworICAgIGlmIChvcHRpb25zICYgRVdLX0ZJTkRf
T1BUSU9OU19XUkFQX0FST1VORCkKKyAgICAgICAgd2tGaW5kT3B0aW9ucyB8PSBrV0tGaW5kT3B0
aW9uc1dyYXBBcm91bmQ7CisgICAgaWYgKG9wdGlvbnMgJiBFV0tfRklORF9PUFRJT05TX1NIT1df
T1ZFUkxBWSkKKyAgICAgICAgd2tGaW5kT3B0aW9ucyB8PSBrV0tGaW5kT3B0aW9uc1Nob3dPdmVy
bGF5OworICAgIGlmIChvcHRpb25zICYgRVdLX0ZJTkRfT1BUSU9OU19TSE9XX0ZJTkRfSU5ESUNB
VE9SKQorICAgICAgICB3a0ZpbmRPcHRpb25zIHw9IGtXS0ZpbmRPcHRpb25zU2hvd0ZpbmRJbmRp
Y2F0b3I7CisgICAgaWYgKG9wdGlvbnMgJiBFV0tfRklORF9PUFRJT05TX1NIT1dfSElHSExJR0hU
KQorICAgICAgICB3a0ZpbmRPcHRpb25zIHw9IGtXS0ZpbmRPcHRpb25zU2hvd0hpZ2hsaWdodDsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXS0ZpbmRPcHRpb25zPih3a0ZpbmRPcHRpb25zKTsK
K30KIAogRWluYV9Cb29sIGV3a192aWV3X3RleHRfZmluZChFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgY2hhciogdGV4dCwgRXdrX0ZpbmRfT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQogewpAQCAtMzkwLDcgKzQwNCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld190ZXh0
X2ZpbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQsIEV3a19GaW5kX09w
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRleHQsIGZhbHNlKTsKIAogICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1RleHQgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKHRleHQpKTsKLSAgICBXS1BhZ2VGaW5kU3RyaW5nKGltcGwtPndrUGFn
ZSgpLCB3a1RleHQuZ2V0KCksIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlv
bnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBXS1BhZ2VGaW5kU3RyaW5nKGltcGwtPndrUGFnZSgp
LCB3a1RleHQuZ2V0KCksIHRvV0tGaW5kT3B0aW9ucyhvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTUwOCwxOCArNTIyLDUxIEBAIEVpbmFfQm9vbCBl
d2tfdmlld19pbnNwZWN0b3JfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAjZW5kaWYKIH0K
IAotLy8gRXdrX1BhZ2luYXRpb25fTW9kZSBzaG91bGQgYmUgbWF0Y2hlZCB1cCBvcmRlcnMgd2l0
aCBXS1BhZ2luYXRpb25Nb2RlLgotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfUEFH
SU5BVElPTl9NT0RFX1VOUEFHSU5BVEVELCBrV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkKTsK
LUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BBR0lOQVRJT05fTU9ERV9MRUZUX1RP
X1JJR0hULCBrV0tQYWdpbmF0aW9uTW9kZUxlZnRUb1JpZ2h0KTsKLUNPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX1BBR0lOQVRJT05fTU9ERV9SSUdIVF9UT19MRUZULCBrV0tQYWdpbmF0
aW9uTW9kZVJpZ2h0VG9MZWZ0KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BB
R0lOQVRJT05fTU9ERV9UT1BfVE9fQk9UVE9NLCBrV0tQYWdpbmF0aW9uTW9kZVRvcFRvQm90dG9t
KTsKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1BBR0lOQVRJT05fTU9ERV9CT1RU
T01fVE9fVE9QLCBrV0tQYWdpbmF0aW9uTW9kZUJvdHRvbVRvVG9wKTsKK2lubGluZSBXS1BhZ2lu
YXRpb25Nb2RlIHRvV0tQYWdpbmF0aW9uTW9kZShFd2tfUGFnaW5hdGlvbl9Nb2RlIG1vZGUpCit7
CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBFV0tfUEFHSU5BVElPTl9NT0RFX0lOVkFM
SUQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVdLX1BBR0lOQVRJT05fTU9ERV9VTlBBR0lO
QVRFRDoKKyAgICAgICAgcmV0dXJuIGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ7CisgICAg
Y2FzZSBFV0tfUEFHSU5BVElPTl9NT0RFX0xFRlRfVE9fUklHSFQ6CisgICAgICAgIHJldHVybiBr
V0tQYWdpbmF0aW9uTW9kZUxlZnRUb1JpZ2h0OworICAgIGNhc2UgRVdLX1BBR0lOQVRJT05fTU9E
RV9SSUdIVF9UT19MRUZUOgorICAgICAgICByZXR1cm4ga1dLUGFnaW5hdGlvbk1vZGVSaWdodFRv
TGVmdDsKKyAgICBjYXNlIEVXS19QQUdJTkFUSU9OX01PREVfVE9QX1RPX0JPVFRPTToKKyAgICAg
ICAgcmV0dXJuIGtXS1BhZ2luYXRpb25Nb2RlVG9wVG9Cb3R0b207CisgICAgY2FzZSBFV0tfUEFH
SU5BVElPTl9NT0RFX0JPVFRPTV9UT19UT1A6CisgICAgICAgIHJldHVybiBrV0tQYWdpbmF0aW9u
TW9kZUJvdHRvbVRvVG9wOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAg
IHJldHVybiBrV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOworfQorCitpbmxpbmUgRXdrX1Bh
Z2luYXRpb25fTW9kZSB0b0V3a1BhZ2luYXRpb25Nb2RlKFdLUGFnaW5hdGlvbk1vZGUgbW9kZSkK
K3sKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdp
bmF0ZWQ6CisgICAgICAgIHJldHVybiBFV0tfUEFHSU5BVElPTl9NT0RFX1VOUEFHSU5BVEVEOwor
ICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVMZWZ0VG9SaWdodDoKKyAgICAgICAgcmV0dXJuIEVX
S19QQUdJTkFUSU9OX01PREVfTEVGVF9UT19SSUdIVDsKKyAgICBjYXNlIGtXS1BhZ2luYXRpb25N
b2RlUmlnaHRUb0xlZnQ6CisgICAgICAgIHJldHVybiBFV0tfUEFHSU5BVElPTl9NT0RFX1JJR0hU
X1RPX0xFRlQ7CisgICAgY2FzZSBrV0tQYWdpbmF0aW9uTW9kZVRvcFRvQm90dG9tOgorICAgICAg
ICByZXR1cm4gRVdLX1BBR0lOQVRJT05fTU9ERV9UT1BfVE9fQk9UVE9NOworICAgIGNhc2Uga1dL
UGFnaW5hdGlvbk1vZGVCb3R0b21Ub1RvcDoKKyAgICAgICAgcmV0dXJuIEVXS19QQUdJTkFUSU9O
X01PREVfQk9UVE9NX1RPX1RPUDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisK
KyAgICByZXR1cm4gRVdLX1BBR0lOQVRJT05fTU9ERV9VTlBBR0lOQVRFRDsKK30KIAogRWluYV9C
b29sIGV3a192aWV3X3BhZ2luYXRpb25fbW9kZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3
a19QYWdpbmF0aW9uX01vZGUgbW9kZSkKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOwogCi0gICAgV0tQYWdlU2V0UGFnaW5hdGlvbk1vZGUo
aW1wbC0+d2tQYWdlKCksIHN0YXRpY19jYXN0PFdLUGFnaW5hdGlvbk1vZGU+KG1vZGUpKTsKKyAg
ICBXS1BhZ2VTZXRQYWdpbmF0aW9uTW9kZShpbXBsLT53a1BhZ2UoKSwgdG9XS1BhZ2luYXRpb25N
b2RlKG1vZGUpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTI4LDcgKzU3NSw3IEBAIEV3
a19QYWdpbmF0aW9uX01vZGUgZXdrX3ZpZXdfcGFnaW5hdGlvbl9tb2RlX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdr
VmlldywgaW1wbCwgRVdLX1BBR0lOQVRJT05fTU9ERV9JTlZBTElEKTsKICAgICAKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RXdrX1BhZ2luYXRpb25fTW9kZT4oV0tQYWdlR2V0UGFnaW5hdGlvbk1v
ZGUoaW1wbC0+d2tQYWdlKCkpKTsKKyAgICByZXR1cm4gdG9Fd2tQYWdpbmF0aW9uTW9kZShXS1Bh
Z2VHZXRQYWdpbmF0aW9uTW9kZShpbXBsLT53a1BhZ2UoKSkpOwogfQogCiBFaW5hX0Jvb2wgZXdr
X3ZpZXdfZnVsbHNjcmVlbl9leGl0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>