<?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>164503</bug_id>
          
          <creation_ts>2016-11-07 20:44:43 -0800</creation_ts>
          <short_desc>Move RenderNamedFlowThread nextRendererForElement logic to RenderTreeUpdater.</short_desc>
          <delta_ts>2016-11-09 12:41:37 -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>Layout and Rendering</component>
          <version>WebKit 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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1248953</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-11-07 20:44:43 -0800</bug_when>
    <thetext>This logic has no render tree dependency. Also by moving the logic to RenderTreeUpdate, we can remove RenderNamedFlowThread::m_flowThreadChildList -&gt; more secure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248954</commentid>
    <comment_count>1</comment_count>
      <attachid>294129</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-11-07 20:49:15 -0800</bug_when>
    <thetext>Created attachment 294129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248962</commentid>
    <comment_count>2</comment_count>
      <attachid>294129</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-07 21:42:29 -0800</bug_when>
    <thetext>Comment on attachment 294129
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        No change in functionality.

Moar words here pls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248976</commentid>
    <comment_count>3</comment_count>
      <attachid>294129</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-07 22:41:15 -0800</bug_when>
    <thetext>Comment on attachment 294129
Patch

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

&gt; Source/WebCore/style/RenderTreeUpdater.cpp:335
&gt;      renderTreePosition().computeNextSibling(element);
&gt; -
&gt; -    RenderTreePosition insertionPosition = parentFlowRenderer
&gt; -        ? RenderTreePosition(*parentFlowRenderer, parentFlowRenderer-&gt;nextRendererForElement(element))
&gt; -        : renderTreePosition();
&gt; -
&gt; +    RenderTreePosition insertionPosition = !parentFlowRenderer ? renderTreePosition() : RenderTreePosition(*parentFlowRenderer,
&gt; +        renderTreePosition().nextSiblingRenderer(element, m_styleUpdate-&gt;elementStyle(element)));

Wouldn&apos;t just using &apos;style&apos; here work instead of &apos;m_styleUpdate-&gt;elementStyle(element)&apos;?

Could we just provide style or Style::Update&amp; to computeNextSibling() above and eliminate the parentFlowRenderer special case completely?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249231</commentid>
    <comment_count>4</comment_count>
      <attachid>294217</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-11-08 22:26:14 -0800</bug_when>
    <thetext>Created attachment 294217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249374</commentid>
    <comment_count>5</comment_count>
      <attachid>294252</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-11-09 11:18:23 -0800</bug_when>
    <thetext>Created attachment 294252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249380</commentid>
    <comment_count>6</comment_count>
      <attachid>294252</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-11-09 11:23:54 -0800</bug_when>
    <thetext>Comment on attachment 294252
Patch

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

&gt; Source/WebCore/style/RenderTreeUpdater.cpp:324
&gt; +        bool willMoveToFlowThread = element.shouldMoveToFlowThread(style);
&gt; +        
&gt; +        if (willMoveToFlowThread)

Doesn&apos;t really need boolean here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249387</commentid>
    <comment_count>7</comment_count>
      <attachid>294255</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-11-09 11:35:58 -0800</bug_when>
    <thetext>Created attachment 294255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249388</commentid>
    <comment_count>8</comment_count>
      <attachid>294256</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-11-09 11:37:12 -0800</bug_when>
    <thetext>Created attachment 294256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249437</commentid>
    <comment_count>9</comment_count>
      <attachid>294256</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 12:41:32 -0800</bug_when>
    <thetext>Comment on attachment 294256
Patch

Clearing flags on attachment: 294256

Committed r208470: &lt;http://trac.webkit.org/changeset/208470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249438</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 12:41:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294129</attachid>
            <date>2016-11-07 20:49:15 -0800</date>
            <delta_ts>2016-11-08 22:26:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164503-20161107204507.patch</filename>
            <type>text/plain</type>
            <size>12648</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uMDczZGZjMmIxYmJmMTAxZGM3NDk2Y2M3MjRhZmRk
YjhlYzkxMTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTExLTA3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQgbmV4dFJlbmRlcmVyRm9yRWxlbWVudCBsb2dpYyB0byBSZW5kZXJUcmVlVXBkYXRl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDUw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojp3aWxsQmVEZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cmVtb3ZlRnJvbVJlbmRlckZsb3dUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cmVuZGVyTmFtZWRGbG93VGhy
ZWFkV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFk
ZEZsb3dDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OnJlbW92ZUZsb3dDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd1RocmVhZC5oOgorICAgICAgICAqIHN0eWxlL1JlbmRlclRyZWVQb3NpdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlUG9zaXRpb246OnByZXZpb3VzU2li
bGluZ1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6bmV4
dFNpYmxpbmdSZW5kZXJlcik6CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmg6
CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKToKKwogMjAxNi0xMS0wNyAgUnlh
biBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMjA4MzgyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCmluZGV4IDcxMGM5N2NhZGRjYjk3NWE3MzExOGE3YzU5NTA5Y2UyZTZlNjM3ZTAuLmQx
OTIyMzllZGY5MDE0ZDNhNGU0OTc4NmE2NTA0M2Y2MjVhMmMzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEwNDQsOSArMTA0NCw2IEBAIHZvaWQg
UmVuZGVyRWxlbWVudDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTCiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJl
ZSgpCiB7Ci0gICAgaWYgKGF1dG8qIGNvbnRhaW5lckZsb3dUaHJlYWQgPSBwYXJlbnQoKS0+cmVu
ZGVyTmFtZWRGbG93VGhyZWFkV3JhcHBlcigpKQotICAgICAgICBjb250YWluZXJGbG93VGhyZWFk
LT5hZGRGbG93Q2hpbGQoKnRoaXMpOwotCiAgICAgLy8gS2VlcCBvdXIgbGF5ZXIgaGllcmFyY2h5
IHVwZGF0ZWQuIE9wdGltaXplIGZvciB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2
ZSBhbnkgY2hpbGRyZW4KICAgICAvLyBhbmQgZG9uJ3QgaGF2ZSBhIGxheWVyIGF0dGFjaGVkIHRv
IG91cnNlbHZlcy4KICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBudWxscHRyOwpAQCAtMTEyNCw3
ICsxMTIxLDYgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIGlm
ICghZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpICYmIHZpZXcoKS5oYXNSZW5kZXJOYW1lZEZsb3dU
aHJlYWRzKCkpIHsKICAgICAgICAgLy8gQWZ0ZXIgcmVtb3ZlLCB0aGUgb2JqZWN0IGFuZCB0aGUg
YXNzb2NpYXRlZCBpbmZvcm1hdGlvbiBzaG91bGQgbm90IGJlIGluIGFueSBmbG93IHRocmVhZC4K
ICAgICAgICAgZm9yIChhdXRvJiBmbG93VGhyZWFkIDogKnZpZXcoKS5mbG93VGhyZWFkQ29udHJv
bGxlcigpLnJlbmRlck5hbWVkRmxvd1RocmVhZExpc3QoKSkgewotICAgICAgICAgICAgQVNTRVJU
KCFmbG93VGhyZWFkLT5oYXNDaGlsZCgqdGhpcykpOwogICAgICAgICAgICAgQVNTRVJUKCFmbG93
VGhyZWFkLT5oYXNDaGlsZEluZm8odGhpcykpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTUyNSwx
NCArMTUyMSw2IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEZvclBhdXNlZEltYWdlQW5p
bWF0aW9uc0lmTmVlZGVkKGNvbnN0IEludFJlY3QmIHZpc2liCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZCogUmVuZGVyRWxlbWVudDo6cmVuZGVyTmFtZWRGbG93
VGhyZWFkV3JhcHBlcigpCi17Ci0gICAgYXV0byogcmVuZGVyZXIgPSB0aGlzOwotICAgIHdoaWxl
IChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpICYmICFpczxSZW5kZXJO
YW1lZEZsb3dUaHJlYWQ+KCpyZW5kZXJlcikpCi0gICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXIt
PnBhcmVudCgpOwotICAgIHJldHVybiBpczxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KHJlbmRlcmVy
KSA/IGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVhZD4ocmVuZGVyZXIpIDogbnVsbHB0cjsK
LX0KLQogY29uc3QgUmVuZGVyU3R5bGUqIFJlbmRlckVsZW1lbnQ6OmdldENhY2hlZFBzZXVkb1N0
eWxlKFBzZXVkb0lkIHBzZXVkbywgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKSBjb25z
dAogewogICAgIGlmIChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCAmJiAhc3R5bGUo
KS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG8pKQpAQCAtMjIwNyw4ICsyMTk1LDYgQEAgUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtIFJlbmRlckVsZW1lbnQ6OnNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCkgY29uc3QKIHZvaWQgUmVuZGVyRWxlbWVudDo6cmVtb3ZlRnJvbVJlbmRlckZsb3dU
aHJlYWQoKQogewogICAgIEFTU0VSVChmbG93VGhyZWFkU3RhdGUoKSAhPSBOb3RJbnNpZGVGbG93
VGhyZWFkKTsKLSAgICBpZiAoYXV0byogY29udGFpbmVyRmxvd1RocmVhZCA9IHBhcmVudCgpLT5y
ZW5kZXJOYW1lZEZsb3dUaHJlYWRXcmFwcGVyKCkpCi0gICAgICAgIGNvbnRhaW5lckZsb3dUaHJl
YWQtPnJlbW92ZUZsb3dDaGlsZCgqdGhpcyk7CiAgICAgLy8gU29tZXRpbWVzIHdlIHJlbW92ZSB0
aGUgZWxlbWVudCBmcm9tIHRoZSBmbG93LCBidXQgaXQncyBub3QgZGVzdHJveWVkIGF0IHRoYXQg
dGltZS4KICAgICAvLyBJdCdzIG9ubHkgdW50aWwgbGF0ZXIgd2hlbiB3ZSBhY3R1YWxseSBkZXN0
cm95IGl0IGFuZCByZW1vdmUgYWxsIHRoZSBjaGlsZHJlbiBmcm9tIGl0LgogICAgIC8vIEN1cnJl
bnRseSwgdGhhdCBoYXBwZW5zIGZvciBmaXJzdExldHRlciBlbGVtZW50cyBhbmQgbGlzdCBtYXJr
ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggMDBiM2Q3
MTk0ZDMwMmQ5YmUyMWU5NmZkNTkxZTI0MDU5YzI0OGMyMC4uYWUzYWEyYzIxN2I5YThlNmUzZjIz
Nzk0ZWQ3OWZkMWY0NThhYjk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCkBAIC0xOTksOCArMTk5LDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGF1c2VkSW1h
Z2VBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9oYXNQYXVzZWRJbWFnZUFuaW1hdGlvbnM7
IH0KICAgICB2b2lkIHNldEhhc1BhdXNlZEltYWdlQW5pbWF0aW9ucyhib29sIGIpIHsgbV9oYXNQ
YXVzZWRJbWFnZUFuaW1hdGlvbnMgPSBiOyB9CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQq
IHJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBwZXIoKTsKLQogICAgIHZvaWQgc2V0UmVuZGVyQm94
TmVlZHNMYXp5UmVwYWludChib29sIGIpIHsgbV9yZW5kZXJCb3hOZWVkc0xhenlSZXBhaW50ID0g
YjsgfQogICAgIGJvb2wgcmVuZGVyQm94TmVlZHNMYXp5UmVwYWludCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyQm94TmVlZHNMYXp5UmVwYWludDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IDk0MWIwZWE4OGI3NDE3
MzkwYWZhNjdiMjIzNWYwMzllY2FlMWZlOTYuLjhhZjA4MGEwZjE5Yzc3ZWUwMTc5NDRhMzE5YjE2
ZDdjMWVmOWE2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwCkBAIC05Nyw0MCArOTcsNiBAQCB2b2lkIFJlbmRlck5hbWVkRmxv
d1RocmVhZDo6dXBkYXRlV3JpdGluZ01vZGUoKQogICAgIHNldFN0eWxlKFdURk1vdmUobmV3U3R5
bGUpKTsKIH0KIAotUmVuZGVyRWxlbWVudCogUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpuZXh0UmVu
ZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRv
JiBjaGlsZCA6IG1fZmxvd1RocmVhZENoaWxkTGlzdCkgewotICAgICAgICBBU1NFUlQoIWNoaWxk
LT5pc0Fub255bW91cygpKTsKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShjaGlsZC0+ZWxl
bWVudCgpLCAiQ2FuIG9ubHkgYmUgbnVsbCBmb3IgYW5vbnltb3VzIHJlbmRlcmVycyIpOwotCi0g
ICAgICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9uID0gZWxlbWVudC5jb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbigqY2hpbGQtPmVsZW1lbnQoKSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6
OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykKLSAgICAgICAgICAgIHJldHVybiBjaGlsZDsK
LSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmFkZEZsb3dDaGlsZChSZW5kZXJFbGVtZW50JiBuZXdDaGlsZCkKLXsKLSAgICAvLyBU
aGUgY2hpbGQgbGlzdCBpcyB1c2VkIHRvIHNvcnQgdGhlIGZsb3cgdGhyZWFkJ3MgY2hpbGRyZW4g
cmVuZGVyIG9iamVjdHMgCi0gICAgLy8gYmFzZWQgb24gdGhlaXIgY29ycmVzcG9uZGluZyBub2Rl
cyBET00gb3JkZXIuIFRoZSBsaXN0IGlzIG5lZWRlZCB0byBhdm9pZCBzZWFyY2hpbmcgdGhlIHdo
b2xlIERPTS4KLQotICAgIGlmIChuZXdDaGlsZC5pc0Fub255bW91cygpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvKiBiZWZvcmVDaGlsZCA9IG5leHRSZW5kZXJlckZvckVsZW1lbnQoKm5l
d0NoaWxkLmVsZW1lbnQoKSk7Ci0gICAgaWYgKGJlZm9yZUNoaWxkKQotICAgICAgICBtX2Zsb3dU
aHJlYWRDaGlsZExpc3QuaW5zZXJ0QmVmb3JlKGJlZm9yZUNoaWxkLCAmbmV3Q2hpbGQpOwotICAg
IGVsc2UKLSAgICAgICAgbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmFkZCgmbmV3Q2hpbGQpOwotfQot
Ci12b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVtb3ZlRmxvd0NoaWxkKFJlbmRlckVsZW1l
bnQmIGNoaWxkKQotewotICAgIG1fZmxvd1RocmVhZENoaWxkTGlzdC5yZW1vdmUoJmNoaWxkKTsK
LX0KLQogYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmRlcGVuZHNPbihSZW5kZXJOYW1lZEZs
b3dUaHJlYWQqIG90aGVyUmVuZGVyRmxvd1RocmVhZCkgY29uc3QKIHsKICAgICBpZiAobV9sYXlv
dXRCZWZvcmVUaHJlYWRzU2V0LmNvbnRhaW5zKG90aGVyUmVuZGVyRmxvd1RocmVhZCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXgg
NTg0Njg2YThkY2QzNWIwNTQyOTA0ZDA1MzIwMGMyNmY5YmRiNzAyNi4uOGMxZWYwYTdiYjZhNjhk
YTVhZDZhNDRiYTljYTQ4ZmFhMWMzOGNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtNTMsMTUgKzUzLDYgQEAgcHVibGljOgog
CiAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgaW52YWxpZFJlbmRlclJlZ2lvbkxpc3QoKSBj
b25zdCB7IHJldHVybiBtX2ludmFsaWRSZWdpb25MaXN0OyB9CiAKLSAgICBSZW5kZXJFbGVtZW50
KiBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmKSBjb25zdDsKLQotICAgIHZvaWQgYWRk
Rmxvd0NoaWxkKFJlbmRlckVsZW1lbnQmKTsKLSAgICB2b2lkIHJlbW92ZUZsb3dDaGlsZChSZW5k
ZXJFbGVtZW50Jik7Ci0gICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICFtX2Zs
b3dUaHJlYWRDaGlsZExpc3QuaXNFbXB0eSgpOyB9Ci0jaWZuZGVmIE5ERUJVRwotICAgIGJvb2wg
aGFzQ2hpbGQoUmVuZGVyRWxlbWVudCYgY2hpbGQpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVh
ZENoaWxkTGlzdC5jb250YWlucygmY2hpbGQpOyB9Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBSZW5k
ZXJCbG9jayogZnJhZ21lbnRGcm9tUmVuZGVyQm94QXNSZW5kZXJCbG9jayhSZW5kZXJCb3gqLCBj
b25zdCBJbnRQb2ludCYgYWJzb2x1dGVQb2ludCwgY29uc3QgUmVuZGVyQm94JiBmbG93ZWRCb3gp
OwogCiAgICAgdm9pZCBwdXNoRGVwZW5kZW5jaWVzKFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3Qm
KTsKQEAgLTE0MSw5ICsxMzIsNiBAQCBwcml2YXRlOgogICAgIC8vIGVhc3kgdG8gc29ydCB0aGUg
b3JkZXIgb2YgdGhyZWFkcyBsYXlvdXQuCiAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkQ291bnRl
ZFNldCBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQ7CiAKLSAgICAvLyBIb2xkcyB0aGUgc29ydGVk
IGNoaWxkcmVuIG9mIGEgbmFtZWQgZmxvdy4gVGhpcyBpcyB0aGUgb25seSB3YXkgd2UgY2FuIGdl
dCB0aGUgb3JkZXJpbmcgcmlnaHQuCi0gICAgTGlzdEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+IG1f
Zmxvd1RocmVhZENoaWxkTGlzdDsKLQogICAgIE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50cyBtX2Nv
bnRlbnRFbGVtZW50czsKIAogICAgIFJlbmRlclJlZ2lvbkxpc3QgbV9pbnZhbGlkUmVnaW9uTGlz
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3BwCmluZGV4IDg4
NTRlY2NlYzMyN2UyMmIyMmRiNzNkMjVlNzZkY2MzZDQzZGIxY2IuLjNmNzhiMDNlNGVhMzRkMmVl
MjFiM2Q5NWNiYjc2ODI2YTUzMGYyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVy
VHJlZVBvc2l0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRy
ZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIoY29uc3QgVGV4dCYgdGV4dE5vZGUp
CiAgICAgYXV0byBjb21wb3NlZENoaWxkcmVuID0gY29tcG9zZWRUcmVlQ2hpbGRyZW4oKnBhcmVu
dEVsZW1lbnQpOwogICAgIGZvciAoYXV0byBpdCA9IGNvbXBvc2VkQ2hpbGRyZW4uYXQodGV4dE5v
ZGUpLCBlbmQgPSBjb21wb3NlZENoaWxkcmVuLmVuZCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpOwotICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgIVJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQo
KnJlbmRlcmVyKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmICFpc1JlbmRlcmVyUmVwYXJlbnRl
ZCgqcmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KICAgICBp
ZiAoYXV0byogYmVmb3JlID0gcGFyZW50RWxlbWVudC0+YmVmb3JlUHNldWRvRWxlbWVudCgpKQpA
QCAtNzQsNyArNzQsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlv
dXNTaWJsaW5nUmVuZGVyZXIoY29uc3QgVGV4dCYgdGV4dE5vZGUpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLVJlbmRlck9iamVjdCogUmVuZGVyVHJlZVBvc2l0aW9uOjpuZXh0U2libGluZ1Jl
bmRlcmVyKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CitSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQ
b3NpdGlvbjo6bmV4dFNpYmxpbmdSZW5kZXJlcihjb25zdCBOb2RlJiBub2RlLCBjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgYXV0byogcGFyZW50RWxlbWVudCA9IG1fcGFy
ZW50LmVsZW1lbnQoKTsKICAgICBpZiAoIXBhcmVudEVsZW1lbnQpCkBAIC04NSwxOCArODUsNDIg
QEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVlUG9zaXRpb246Om5leHRTaWJsaW5nUmVuZGVyZXIo
Y29uc3QgTm9kZSYgbm9kZSkgY29uc3QKICAgICBhdXRvIGNvbXBvc2VkRGVzY2VuZGFudHMgPSBj
b21wb3NlZFRyZWVEZXNjZW5kYW50cygqcGFyZW50RWxlbWVudCk7CiAgICAgYXV0byBpdCA9IG5v
ZGUuaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgPyBjb21wb3NlZERlc2NlbmRhbnRzLmJlZ2luKCkg
OiBjb21wb3NlZERlc2NlbmRhbnRzLmF0KG5vZGUpOwogICAgIGF1dG8gZW5kID0gY29tcG9zZWRE
ZXNjZW5kYW50cy5lbmQoKTsKKyAgICBib29sIGluc2lkZUZsb3cgPSBzdHlsZSAmJiBzdHlsZS0+
aGFzRmxvd0ludG8oKTsKIAogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKLSAgICAgICAgYXV0byYg
bm9kZSA9ICppdDsKLSAgICAgICAgYm9vbCBoYXNEaXNwbGF5Q29udGVudHMgPSBpczxFbGVtZW50
Pihub2RlKSAmJiBkb3duY2FzdDxFbGVtZW50Pihub2RlKS5oYXNEaXNwbGF5Q29udGVudHMoKTsK
KyAgICAgICAgYXV0byYgY3VycmVudE5vZGUgPSAqaXQ7CisgICAgICAgIGJvb2wgaGFzRGlzcGxh
eUNvbnRlbnRzID0gaXM8RWxlbWVudD4oY3VycmVudE5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+
KGN1cnJlbnROb2RlKS5oYXNEaXNwbGF5Q29udGVudHMoKTsKICAgICAgICAgaWYgKGhhc0Rpc3Bs
YXlDb250ZW50cykgewogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0KCk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bm9kZS5yZW5kZXJlcigpOwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgIWlzUmVuZGVyZXJSZXBh
cmVudGVkKCpyZW5kZXJlcikpCisKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGN1
cnJlbnROb2RlLnJlbmRlcmVyKCk7CisgICAgICAgIGlmICghcmVuZGVyZXIpIHsKKyAgICAgICAg
ICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpbnNpZGVGbG93KSB7CisgICAgICAgICAg
ICBpZiAoIWlzUmVuZGVyZXJSZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlbmRlcmVyOworICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGls
ZHJlbigpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJ
bnNpZGUgZmxvdyBzZWFyY2hpbmcuCisgICAgICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4oKnJl
bmRlcmVyKSkgeworICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0KCk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vZGUgaXMgdGhlIGxhc3QgY2hpbGQg
aW4gdGhpcyBmbG93LgorICAgICAgICBpZiAoIWlzUmVuZGVyZXJSZXBhcmVudGVkKCpyZW5kZXJl
cikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBpZiAoc3R5bGUtPmZs
b3dUaHJlYWQoKSA9PSByZW5kZXJlci0+c3R5bGUoKS5mbG93VGhyZWFkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgICAgIAorICAgICAgICAvLyBOZXN0ZWQgZmxvd3MsIHNr
aXAuCiAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKICAgICB9CiAg
ICAgaWYgKFBzZXVkb0VsZW1lbnQqIGFmdGVyID0gcGFyZW50RWxlbWVudC0+YWZ0ZXJQc2V1ZG9F
bGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9z
aXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oCmluZGV4
IGYzNzllOTM0ZTQwY2VkYzg2MTBmNjA4NDFiM2E4NjAxODI2ZTk3NzYuLjIzMjY2YmVhNjQ0OTlk
YzczNDhlYzA4ZmUwYTE3NGMwZGI1NjU3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVQb3NpdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFs
aWRhdGVOZXh0U2libGluZyhjb25zdCBSZW5kZXJPYmplY3QmKTsKIAogICAgIFJlbmRlck9iamVj
dCogcHJldmlvdXNTaWJsaW5nUmVuZGVyZXIoY29uc3QgVGV4dCYpIGNvbnN0OwotICAgIFJlbmRl
ck9iamVjdCogbmV4dFNpYmxpbmdSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Q7CisgICAgUmVu
ZGVyT2JqZWN0KiBuZXh0U2libGluZ1JlbmRlcmVyKGNvbnN0IE5vZGUmLCBjb25zdCBSZW5kZXJT
dHlsZSogPSBudWxscHRyKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBpc1JlbmRlcmVyUmVwYXJl
bnRlZChjb25zdCBSZW5kZXJPYmplY3QmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCBjMGI1MzNmY2I5OTNlN2RiNjViMWQ0NThl
YmY4NzZkOWM1ZWMxM2MyLi41MjI1M2U4YTgyNDFmZDcyZjEzMThhNDUwMTU1MzczMTdhYTg2YzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC0zMzAs
MTMgKzMzMCw5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OmNyZWF0ZVJlbmRlcmVyKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAKICAgICBpZiAoIWVsZW1lbnQucmVu
ZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVybjsKLQogICAgIHJlbmRlclRyZWVQ
b3NpdGlvbigpLmNvbXB1dGVOZXh0U2libGluZyhlbGVtZW50KTsKLQotICAgIFJlbmRlclRyZWVQ
b3NpdGlvbiBpbnNlcnRpb25Qb3NpdGlvbiA9IHBhcmVudEZsb3dSZW5kZXJlcgotICAgICAgICA/
IFJlbmRlclRyZWVQb3NpdGlvbigqcGFyZW50Rmxvd1JlbmRlcmVyLCBwYXJlbnRGbG93UmVuZGVy
ZXItPm5leHRSZW5kZXJlckZvckVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgIDogcmVuZGVyVHJl
ZVBvc2l0aW9uKCk7Ci0KKyAgICBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb24g
PSAhcGFyZW50Rmxvd1JlbmRlcmVyID8gcmVuZGVyVHJlZVBvc2l0aW9uKCkgOiBSZW5kZXJUcmVl
UG9zaXRpb24oKnBhcmVudEZsb3dSZW5kZXJlciwKKyAgICAgICAgcmVuZGVyVHJlZVBvc2l0aW9u
KCkubmV4dFNpYmxpbmdSZW5kZXJlcihlbGVtZW50LCBtX3N0eWxlVXBkYXRlLT5lbGVtZW50U3R5
bGUoZWxlbWVudCkpKTsKICAgICBSZW5kZXJFbGVtZW50KiBuZXdSZW5kZXJlciA9IGVsZW1lbnQu
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbiku
bGVha1B0cigpOwogICAgIGlmICghbmV3UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294217</attachid>
            <date>2016-11-08 22:26:14 -0800</date>
            <delta_ts>2016-11-09 11:03:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164503-20161108222204.patch</filename>
            <type>text/plain</type>
            <size>15961</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uYWJkZmFkNzQ4NGY2NDQyNGU0ZTM5NDE3NTQ2MjQ5
ZmRjZTRmNzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQgbmV4dFJlbmRlcmVyRm9yRWxlbWVudCBsb2dpYyB0byBSZW5kZXJUcmVlVXBkYXRl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDUw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
d2UgaW5zZXJ0IGEgcmVuZGVyZXIgaW50byB0aGUgcmVuZGVyIHRyZWUsIHdlIG5lZWQgdG8ga25v
dyBib3RoIGl0cyBwYXJlbnQKKyAgICAgICAgYW5kIGl0cyBuZXh0IHNpYmxpbmcuIE5vcm1hbGx5
IHRoZSBwYXJlbnQgYW5kIHRoZSBzaWJsaW5nIGFyZSBiYXNlZCBvbiB0aGUgRE9NLCBidXQKKyAg
ICAgICAgd2hlbiB0aGlzIHJlbmRlcmVyIGlzIHBhcnQgb2YgYSBmbG93IHRocmVhZCwgaXRzIGlu
c2VydGlvbiBzaWJsaW5nIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgRE9NIHNpYmxpbmcuCisgICAg
ICAgIFRvIGZpbmQgdGhlIGNvcnJlY3Qgc2libGluZywgd2UgY2FsbCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQncyBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KCkuCisgICAgICAgIFJlbmRlck5hbWVkRmxv
d1RocmVhZCBrZWVwcyB0cmFjayBvZiBpdHMgY2hpbGRyZW4gc28gdGhhdCBpdCBjYW4gY29tcHV0
ZSB0aGUgbmV4dCBzaWJsaW5nCisgICAgICAgIGZvciB0aGUgaW5zZXJ0aW9uIHBvaW50LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZWxpbWluYXRlcyB0aGUgbmVlZCBmb3Iga2VlcGluZyB0cmFjayBv
ZiB0aGUgY2hpbGQgcmVuZGVyZXJzIG9mIGVhY2gKKyAgICAgICAgZmxvdyBieSBtb3ZpbmcgdGhl
ICduZXh0IHNpYmxpbmcnIGxvZ2ljIHRvIFJlbmRlclRyZWVQb3NpdGlvbi4KKworICAgICAgICBO
byBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50
b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6d2lsbEJlRGVzdHJveWVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92ZUZyb21SZW5kZXJGbG93
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxv
d1RocmVhZFdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVt
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Om5leHRSZW5kZXJlckZvckVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjphZGRGbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpyZW1vdmVGbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlUG9z
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpwcmV2aW91
c1NpYmxpbmdSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlUG9zaXRpb246
OmZsb3dUaHJlYWRJbnNlcnRpb25Db250ZXh0KToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVl
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6UmVuZGVy
VHJlZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cGFy
ZW50KToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZWdpc3RlckVsZW1lbnRGb3JGbG93VGhyZWFkSWZOZWVkZWQpOiBXZSBuZWVkIHRv
IHJlZ2lzdGVkIHRoZSBlbGVtZW50IGV2ZW4gd2hlbiBpdCBkb2VzIG5vdCBjcmVhdGUgcmVuZGVy
ZXIgKGRpc3BsYXk6IG5vbmUpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1vdmVUb0Zsb3dUaHJlYWRJZk5l
ZWRlZCk6IERlbGV0ZWQuCisKIDIwMTYtMTEtMDcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM4Mi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA3MTBjOTdjYWRk
Y2I5NzVhNzMxMThhN2M1OTUwOWNlMmU2ZTYzN2UwLi5kMTkyMjM5ZWRmOTAxNGQzYTRlNDk3ODZh
NjUwNDNmNjI1YTJjM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCkBAIC0xMDQ0LDkgKzEwNDQsNiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkUwogCiB2
b2lkIFJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoKQogewotICAgIGlmIChhdXRvKiBj
b250YWluZXJGbG93VGhyZWFkID0gcGFyZW50KCktPnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBw
ZXIoKSkKLSAgICAgICAgY29udGFpbmVyRmxvd1RocmVhZC0+YWRkRmxvd0NoaWxkKCp0aGlzKTsK
LQogICAgIC8vIEtlZXAgb3VyIGxheWVyIGhpZXJhcmNoeSB1cGRhdGVkLiBPcHRpbWl6ZSBmb3Ig
dGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuCiAgICAgLy8g
YW5kIGRvbid0IGhhdmUgYSBsYXllciBhdHRhY2hlZCB0byBvdXJzZWx2ZXMuCiAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gbnVsbHB0cjsKQEAgLTExMjQsNyArMTEyMSw2IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95
ZWQoKSAmJiB2aWV3KCkuaGFzUmVuZGVyTmFtZWRGbG93VGhyZWFkcygpKSB7CiAgICAgICAgIC8v
IEFmdGVyIHJlbW92ZSwgdGhlIG9iamVjdCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24g
c2hvdWxkIG5vdCBiZSBpbiBhbnkgZmxvdyB0aHJlYWQuCiAgICAgICAgIGZvciAoYXV0byYgZmxv
d1RocmVhZCA6ICp2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5yZW5kZXJOYW1lZEZsb3dU
aHJlYWRMaXN0KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghZmxvd1RocmVhZC0+aGFzQ2hpbGQo
KnRoaXMpKTsKICAgICAgICAgICAgIEFTU0VSVCghZmxvd1RocmVhZC0+aGFzQ2hpbGRJbmZvKHRo
aXMpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1MjUsMTQgKzE1MjEsNiBAQCBib29sIFJlbmRl
ckVsZW1lbnQ6OnJlcGFpbnRGb3JQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJ
bnRSZWN0JiB2aXNpYgogICAgIHJldHVybiB0cnVlOwogfQogCi1SZW5kZXJOYW1lZEZsb3dUaHJl
YWQqIFJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBwZXIoKQotewotICAg
IGF1dG8qIHJlbmRlcmVyID0gdGhpczsKLSAgICB3aGlsZSAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
PmlzQW5vbnltb3VzQmxvY2soKSAmJiAhaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqcmVuZGVy
ZXIpKQotICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICByZXR1cm4g
aXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ+KHJlbmRlcmVyKSA6IG51bGxwdHI7Ci19Ci0KIGNvbnN0IFJlbmRlclN0eWxl
KiBSZW5kZXJFbGVtZW50OjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8sIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAocHNldWRvIDwg
RklSU1RfSU5URVJOQUxfUFNFVURPSUQgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRv
KSkKQEAgLTIyMDcsOCArMjE5NSw2IEBAIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5k
ZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CiB2b2lkIFJl
bmRlckVsZW1lbnQ6OnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkKCkKIHsKICAgICBBU1NFUlQo
Zmxvd1RocmVhZFN0YXRlKCkgIT0gTm90SW5zaWRlRmxvd1RocmVhZCk7Ci0gICAgaWYgKGF1dG8q
IGNvbnRhaW5lckZsb3dUaHJlYWQgPSBwYXJlbnQoKS0+cmVuZGVyTmFtZWRGbG93VGhyZWFkV3Jh
cHBlcigpKQotICAgICAgICBjb250YWluZXJGbG93VGhyZWFkLT5yZW1vdmVGbG93Q2hpbGQoKnRo
aXMpOwogICAgIC8vIFNvbWV0aW1lcyB3ZSByZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSB0aGUgZmxv
dywgYnV0IGl0J3Mgbm90IGRlc3Ryb3llZCBhdCB0aGF0IHRpbWUuCiAgICAgLy8gSXQncyBvbmx5
IHVudGlsIGxhdGVyIHdoZW4gd2UgYWN0dWFsbHkgZGVzdHJveSBpdCBhbmQgcmVtb3ZlIGFsbCB0
aGUgY2hpbGRyZW4gZnJvbSBpdC4KICAgICAvLyBDdXJyZW50bHksIHRoYXQgaGFwcGVucyBmb3Ig
Zmlyc3RMZXR0ZXIgZWxlbWVudHMgYW5kIGxpc3QgbWFya2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDAwYjNkNzE5NGQzMDJkOWJlMjFlOTZmZDU5MWUy
NDA1OWMyNDhjMjAuLmFlM2FhMmMyMTdiOWE4ZTZlM2YyMzc5NGVkNzlmZDFmNDU4YWI5NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMTk5LDggKzE5OSw2
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BhdXNlZEltYWdlQW5pbWF0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zOyB9CiAgICAgdm9pZCBzZXRIYXNQYXVz
ZWRJbWFnZUFuaW1hdGlvbnMoYm9vbCBiKSB7IG1faGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zID0g
YjsgfQogCi0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiByZW5kZXJOYW1lZEZsb3dUaHJlYWRX
cmFwcGVyKCk7Ci0KICAgICB2b2lkIHNldFJlbmRlckJveE5lZWRzTGF6eVJlcGFpbnQoYm9vbCBi
KSB7IG1fcmVuZGVyQm94TmVlZHNMYXp5UmVwYWludCA9IGI7IH0KICAgICBib29sIHJlbmRlckJv
eE5lZWRzTGF6eVJlcGFpbnQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlckJveE5lZWRzTGF6eVJl
cGFpbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAppbmRleCA5NDFiMGVhODhiNzQxNzM5MGFmYTY3YjIyMzVmMDM5ZWNhZTFm
ZTk2Li44YWYwODBhMGYxOWM3N2VlMDE3OTQ0YTMxOWIxNmQ3YzFlZjlhNmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAt
OTcsNDAgKzk3LDYgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdN
b2RlKCkKICAgICBzZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CiB9CiAKLVJlbmRlckVsZW1l
bnQqIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtZW50KSBjb25zdAotewotICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2Zsb3dUaHJlYWRD
aGlsZExpc3QpIHsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+aXNBbm9ueW1vdXMoKSk7Ci0gICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY2hpbGQtPmVsZW1lbnQoKSwgIkNhbiBvbmx5IGJlIG51
bGwgZm9yIGFub255bW91cyByZW5kZXJlcnMiKTsKLQotICAgICAgICB1bnNpZ25lZCBzaG9ydCBw
b3NpdGlvbiA9IGVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oKmNoaWxkLT5lbGVtZW50
KCkpOwotICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xM
T1dJTkcpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGRGbG93Q2hpbGQoUmVu
ZGVyRWxlbWVudCYgbmV3Q2hpbGQpCi17Ci0gICAgLy8gVGhlIGNoaWxkIGxpc3QgaXMgdXNlZCB0
byBzb3J0IHRoZSBmbG93IHRocmVhZCdzIGNoaWxkcmVuIHJlbmRlciBvYmplY3RzIAotICAgIC8v
IGJhc2VkIG9uIHRoZWlyIGNvcnJlc3BvbmRpbmcgbm9kZXMgRE9NIG9yZGVyLiBUaGUgbGlzdCBp
cyBuZWVkZWQgdG8gYXZvaWQgc2VhcmNoaW5nIHRoZSB3aG9sZSBET00uCi0KLSAgICBpZiAobmV3
Q2hpbGQuaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogYmVmb3Jl
Q2hpbGQgPSBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KCpuZXdDaGlsZC5lbGVtZW50KCkpOwotICAg
IGlmIChiZWZvcmVDaGlsZCkKLSAgICAgICAgbV9mbG93VGhyZWFkQ2hpbGRMaXN0Lmluc2VydEJl
Zm9yZShiZWZvcmVDaGlsZCwgJm5ld0NoaWxkKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZmxvd1Ro
cmVhZENoaWxkTGlzdC5hZGQoJm5ld0NoaWxkKTsKLX0KLQotdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OnJlbW92ZUZsb3dDaGlsZChSZW5kZXJFbGVtZW50JiBjaGlsZCkKLXsKLSAgICBtX2Zs
b3dUaHJlYWRDaGlsZExpc3QucmVtb3ZlKCZjaGlsZCk7Ci19Ci0KIGJvb2wgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpkZXBlbmRzT24oUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBvdGhlclJlbmRlckZs
b3dUaHJlYWQpIGNvbnN0CiB7CiAgICAgaWYgKG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5jb250
YWlucyhvdGhlclJlbmRlckZsb3dUaHJlYWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IDU4NDY4NmE4ZGNkMzViMDU0MjkwNGQw
NTMyMDBjMjZmOWJkYjcwMjYuLjhjMWVmMGE3YmI2YTY4ZGE1YWQ2YTQ0YmE5Y2E0OGZhYTFjMzhj
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgKQEAgLTUzLDE1ICs1Myw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFJlbmRlclJlZ2lv
bkxpc3QmIGludmFsaWRSZW5kZXJSZWdpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV9pbnZhbGlk
UmVnaW9uTGlzdDsgfQogCi0gICAgUmVuZGVyRWxlbWVudCogbmV4dFJlbmRlcmVyRm9yRWxlbWVu
dChFbGVtZW50JikgY29uc3Q7Ci0KLSAgICB2b2lkIGFkZEZsb3dDaGlsZChSZW5kZXJFbGVtZW50
Jik7Ci0gICAgdm9pZCByZW1vdmVGbG93Q2hpbGQoUmVuZGVyRWxlbWVudCYpOwotICAgIGJvb2wg
aGFzQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAhbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmlzRW1w
dHkoKTsgfQotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc0NoaWxkKFJlbmRlckVsZW1lbnQm
IGNoaWxkKSBjb25zdCB7IHJldHVybiBtX2Zsb3dUaHJlYWRDaGlsZExpc3QuY29udGFpbnMoJmNo
aWxkKTsgfQotI2VuZGlmCi0KICAgICBzdGF0aWMgUmVuZGVyQmxvY2sqIGZyYWdtZW50RnJvbVJl
bmRlckJveEFzUmVuZGVyQmxvY2soUmVuZGVyQm94KiwgY29uc3QgSW50UG9pbnQmIGFic29sdXRl
UG9pbnQsIGNvbnN0IFJlbmRlckJveCYgZmxvd2VkQm94KTsKIAogICAgIHZvaWQgcHVzaERlcGVu
ZGVuY2llcyhSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0Jik7CkBAIC0xNDEsOSArMTMyLDYgQEAg
cHJpdmF0ZToKICAgICAvLyBlYXN5IHRvIHNvcnQgdGhlIG9yZGVyIG9mIHRocmVhZHMgbGF5b3V0
LgogICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQgbV9sYXlvdXRCZWZvcmVUaHJl
YWRzU2V0OwogCi0gICAgLy8gSG9sZHMgdGhlIHNvcnRlZCBjaGlsZHJlbiBvZiBhIG5hbWVkIGZs
b3cuIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHdlIGNhbiBnZXQgdGhlIG9yZGVyaW5nIHJpZ2h0Lgot
ICAgIExpc3RIYXNoU2V0PFJlbmRlckVsZW1lbnQqPiBtX2Zsb3dUaHJlYWRDaGlsZExpc3Q7Ci0K
ICAgICBOYW1lZEZsb3dDb250ZW50RWxlbWVudHMgbV9jb250ZW50RWxlbWVudHM7CiAKICAgICBS
ZW5kZXJSZWdpb25MaXN0IG1faW52YWxpZFJlZ2lvbkxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAppbmRleCA4ODU0ZWNjZWMzMjdlMjJiMjJkYjczZDI1
ZTc2ZGNjM2Q0M2RiMWNiLi41NTdiYzFjZTg3MGJiN2I0ZGZiYzU2Y2EwNjkxNTg4N2UyZDg3YWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlUG9zaXRpb24uaCIKIAogI2luY2x1ZGUg
IkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtNjYsNyArNjcsNyBAQCBSZW5kZXJPYmplY3Qq
IFJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIoY29uc3QgVGV4dCYg
dGV4dE5vZGUpCiAgICAgYXV0byBjb21wb3NlZENoaWxkcmVuID0gY29tcG9zZWRUcmVlQ2hpbGRy
ZW4oKnBhcmVudEVsZW1lbnQpOwogICAgIGZvciAoYXV0byBpdCA9IGNvbXBvc2VkQ2hpbGRyZW4u
YXQodGV4dE5vZGUpLCBlbmQgPSBjb21wb3NlZENoaWxkcmVuLmVuZCgpOyBpdCAhPSBlbmQ7IC0t
aXQpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpOwot
ICAgICAgICBpZiAocmVuZGVyZXIgJiYgIVJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJl
cGFyZW50ZWQoKnJlbmRlcmVyKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmICFpc1JlbmRlcmVy
UmVwYXJlbnRlZCgqcmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAg
IH0KICAgICBpZiAoYXV0byogYmVmb3JlID0gcGFyZW50RWxlbWVudC0+YmVmb3JlUHNldWRvRWxl
bWVudCgpKQpAQCAtMTA0LDYgKzEwNSw1MCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3Np
dGlvbjo6bmV4dFNpYmxpbmdSZW5kZXJlcihjb25zdCBOb2RlJiBub2RlKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorUmVuZGVyVHJlZVBv
c2l0aW9uOjpGbG93VGhyZWFkSW5zZXJ0aW9uUG9pbnRDb250ZXh0IFJlbmRlclRyZWVQb3NpdGlv
bjo6Zmxvd1RocmVhZEluc2VydGlvbkNvbnRleHQoRWxlbWVudCogaW5zZXJ0aW9uUGFyZW50LCBF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgQVNTRVJU
KGVsZW1lbnQuc2hvdWxkTW92ZVRvRmxvd1RocmVhZChzdHlsZSkpOworICAgIGF1dG8mIHBhcmVu
dEZsb3dUaHJlYWQgPSBlbGVtZW50LmRvY3VtZW50KCkucmVuZGVyVmlldygpLT5mbG93VGhyZWFk
Q29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZS5mbG93VGhy
ZWFkKCkpOworCisgICAgaWYgKCFpbnNlcnRpb25QYXJlbnQpCisgICAgICAgIHJldHVybiB7IHBh
cmVudEZsb3dUaHJlYWQsIG51bGxwdHIgfTsKKworICAgIGF1dG8gY29tcG9zZWREZXNjZW5kYW50
cyA9IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCppbnNlcnRpb25QYXJlbnQpOworICAgIGF1dG8g
aXQgPSBlbGVtZW50LmlzQmVmb3JlUHNldWRvRWxlbWVudCgpID8gY29tcG9zZWREZXNjZW5kYW50
cy5iZWdpbigpIDogY29tcG9zZWREZXNjZW5kYW50cy5hdChlbGVtZW50KTsKKyAgICBhdXRvIGVu
ZCA9IGNvbXBvc2VkRGVzY2VuZGFudHMuZW5kKCk7CisgICAgd2hpbGUgKGl0ICE9IGVuZCkgewor
ICAgICAgICBhdXRvJiBjdXJyZW50Tm9kZSA9ICppdDsKKyAgICAgICAgYm9vbCBoYXNEaXNwbGF5
Q29udGVudHMgPSBpczxFbGVtZW50PihjdXJyZW50Tm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4o
Y3VycmVudE5vZGUpLmhhc0Rpc3BsYXlDb250ZW50cygpOworICAgICAgICBpZiAoaGFzRGlzcGxh
eUNvbnRlbnRzKSB7CisgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHQoKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgYXV0byogcmVuZGVyZXIgPSBjdXJyZW50
Tm9kZS5yZW5kZXJlcigpOworICAgICAgICBpZiAoIXJlbmRlcmVyKSB7CisgICAgICAgICAgICBp
dC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4oKnJlbmRlcmVyKSkg
eworICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0KCk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGFyZSB0aGUgbGFzdCBjaGlsZCBpbiB0aGlzIGZs
b3cuCisgICAgICAgIGlmICghaXNSZW5kZXJlclJlcGFyZW50ZWQoKnJlbmRlcmVyKSkKKyAgICAg
ICAgICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJlYWQsIG51bGxwdHIgfTsKKworICAgICAgICBp
ZiAocmVuZGVyZXItPnN0eWxlKCkuaGFzRmxvd0ludG8oKSAmJiBzdHlsZS5mbG93VGhyZWFkKCkg
PT0gcmVuZGVyZXItPnN0eWxlKCkuZmxvd1RocmVhZCgpKQorICAgICAgICAgICAgcmV0dXJuIHsg
cGFyZW50Rmxvd1RocmVhZCwgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpIH07Cisg
ICAgICAgIC8vIE5lc3RlZCBmbG93cywgc2tpcC4KKyAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tp
cHBpbmdDaGlsZHJlbigpOworICAgIH0KKyAgICByZXR1cm4geyBwYXJlbnRGbG93VGhyZWFkLCBu
dWxscHRyIH07Cit9CisjZW5kaWYKKyAgICAKIGJvb2wgUmVuZGVyVHJlZVBvc2l0aW9uOjppc1Jl
bmRlcmVyUmVwYXJlbnRlZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIGlm
ICghcmVuZGVyZXIubm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1JlbmRlclRyZWVQb3NpdGlvbi5oCmluZGV4IGYzNzllOTM0ZTQwY2VkYzg2MTBmNjA4NDFiM2E4
NjAxODI2ZTk3NzYuLjY1MDEyNjc5MGYyZDdhM2NjYTI0MWNiZDcyNzZmN2E4YzljZjlhYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIFJlbmRlclRyZWVQb3NpdGlvbl9oCiAKICNpbmNsdWRlICJSZW5kZXJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKIApAQCAtNDUsMTUgKzQ2LDIxIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIFJlbmRlclRyZWVQb3NpdGlvbihSZW5k
ZXJFbGVtZW50JiBwYXJlbnQsIFJlbmRlck9iamVjdCogbmV4dFNpYmxpbmcpCi0gICAgICAgIDog
bV9wYXJlbnQocGFyZW50KQotICAgICAgICAsIG1fbmV4dFNpYmxpbmcobmV4dFNpYmxpbmcpCisj
aWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIHN0cnVjdCBGbG93VGhyZWFkSW5zZXJ0aW9uUG9p
bnRDb250ZXh0IHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCYgbV9wYXJlbnQ7CisgICAgICAg
IFJlbmRlckVsZW1lbnQqIG1fbmV4dFNpYmxpbmcgeyBudWxscHRyIH07CisgICAgfTsKKyAgICBl
eHBsaWNpdCBSZW5kZXJUcmVlUG9zaXRpb24oY29uc3QgRmxvd1RocmVhZEluc2VydGlvblBvaW50
Q29udGV4dCYgY29udGV4dCkKKyAgICAgICAgOiBtX3BhcmVudChjb250ZXh0Lm1fcGFyZW50KQor
ICAgICAgICAsIG1fbmV4dFNpYmxpbmcoY29udGV4dC5tX25leHRTaWJsaW5nKQogICAgICAgICAs
IG1faGFzVmFsaWROZXh0U2libGluZyh0cnVlKQogICAgIHsKICAgICB9CisgICAgc3RhdGljIEZs
b3dUaHJlYWRJbnNlcnRpb25Qb2ludENvbnRleHQgZmxvd1RocmVhZEluc2VydGlvbkNvbnRleHQo
RWxlbWVudCogaW5zZXJ0aW9uUGFyZW50LCBFbGVtZW50JiBjaGlsZCwgY29uc3QgUmVuZGVyU3R5
bGUmKTsKKyNlbmRpZgogCiAgICAgUmVuZGVyRWxlbWVudCYgcGFyZW50KCkgY29uc3QgeyByZXR1
cm4gbV9wYXJlbnQ7IH0KLQogICAgIHZvaWQgaW5zZXJ0KFJlbmRlck9iamVjdCYpOwogICAgIGJv
b2wgY2FuSW5zZXJ0KFJlbmRlckVsZW1lbnQmKSBjb25zdDsKICAgICBib29sIGNhbkluc2VydChS
ZW5kZXJUZXh0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5k
ZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRl
ci5jcHAKaW5kZXggYzBiNTMzZmNiOTkzZTdkYjY1YjFkNDU4ZWJmODc2ZDljNWVjMTNjMi4uYjI1
Zjc5YTlhOWQyMGI0MWI0MWJjYTVlZGU2NzdkZWEzN2QyNDFkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtMzA2LDM3ICszMDYsNDAgQEAgdm9pZCBS
ZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQs
IFN0eWxlOjpFbGVtZW50VXAKIH0KIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLXN0YXRpYyBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMgdm9pZCByZWdpc3RlckVs
ZW1lbnRGb3JGbG93VGhyZWFkSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogewogICAgIGlmICghZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFk
KHN0eWxlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICAgICAgcmV0dXJuOwogICAg
IEZsb3dUaHJlYWRDb250cm9sbGVyJiBmbG93VGhyZWFkQ29udHJvbGxlciA9IGVsZW1lbnQuZG9j
dW1lbnQoKS5yZW5kZXJWaWV3KCktPmZsb3dUaHJlYWRDb250cm9sbGVyKCk7Ci0gICAgUmVuZGVy
TmFtZWRGbG93VGhyZWFkJiBwYXJlbnRGbG93UmVuZGVyZXIgPSBmbG93VGhyZWFkQ29udHJvbGxl
ci5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKTsKLSAg
ICBmbG93VGhyZWFkQ29udHJvbGxlci5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGVs
ZW1lbnQsIHBhcmVudEZsb3dSZW5kZXJlcik7Ci0gICAgcmV0dXJuICZwYXJlbnRGbG93UmVuZGVy
ZXI7CisgICAgZmxvd1RocmVhZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudChlbGVtZW50LCBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5kZXJGbG93VGhyZWFk
V2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKSk7CiB9CiAjZW5kaWYKIAogdm9pZCBSZW5kZXJU
cmVlVXBkYXRlcjo6Y3JlYXRlUmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKIHsKKyAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlzLCAm
ZWxlbWVudCwgJnN0eWxlXSAoKSB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICAgICBi
b29sIHdpbGxNb3ZlVG9GbG93VGhyZWFkID0gZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFk
KHN0eWxlKTsKKyAgICAgICAgCisgICAgICAgIGlmICh3aWxsTW92ZVRvRmxvd1RocmVhZCkKKyAg
ICAgICAgICAgIHJldHVybiBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyVHJlZVBvc2l0aW9uOjpm
bG93VGhyZWFkSW5zZXJ0aW9uQ29udGV4dChyZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKS5l
bGVtZW50KCksIGVsZW1lbnQsIHN0eWxlKSk7CisjZW5kaWYKKyAgICAgICAgcmVuZGVyVHJlZVBv
c2l0aW9uKCkuY29tcHV0ZU5leHRTaWJsaW5nKGVsZW1lbnQpOworICAgICAgICByZXR1cm4gcmVu
ZGVyVHJlZVBvc2l0aW9uKCk7CisgICAgfTsKKyAgICAKICAgICBpZiAoIXNob3VsZENyZWF0ZVJl
bmRlcmVyKGVsZW1lbnQsIHJlbmRlclRyZWVQb3NpdGlvbigpLnBhcmVudCgpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBwYXJlbnRGbG93UmVuZGVyZXIg
PSBudWxscHRyOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBwYXJlbnRGbG93UmVuZGVy
ZXIgPSBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoZWxlbWVudCwgc3R5bGUpOworICAgIC8vIEV2
ZW4gZGlzcGxheTogbm9uZSBlbGVtZW50cyBuZWVkIHRvIGJlIHJlZ2lzdGVyZWQgaW4gRmxvd1Ro
cmVhZENvbnRyb2xsZXIuCisgICAgcmVnaXN0ZXJFbGVtZW50Rm9yRmxvd1RocmVhZElmTmVlZGVk
KGVsZW1lbnQsIHN0eWxlKTsKICNlbmRpZgogCiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVySXNO
ZWVkZWQoc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZW5kZXJUcmVlUG9zaXRpb24o
KS5jb21wdXRlTmV4dFNpYmxpbmcoZWxlbWVudCk7Ci0KLSAgICBSZW5kZXJUcmVlUG9zaXRpb24g
aW5zZXJ0aW9uUG9zaXRpb24gPSBwYXJlbnRGbG93UmVuZGVyZXIKLSAgICAgICAgPyBSZW5kZXJU
cmVlUG9zaXRpb24oKnBhcmVudEZsb3dSZW5kZXJlciwgcGFyZW50Rmxvd1JlbmRlcmVyLT5uZXh0
UmVuZGVyZXJGb3JFbGVtZW50KGVsZW1lbnQpKQotICAgICAgICA6IHJlbmRlclRyZWVQb3NpdGlv
bigpOwotCisgICAgUmVuZGVyVHJlZVBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uID0gY29tcHV0
ZUluc2VydGlvblBvc2l0aW9uKCk7CiAgICAgUmVuZGVyRWxlbWVudCogbmV3UmVuZGVyZXIgPSBl
bGVtZW50LmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9z
aXRpb24pLmxlYWtQdHIoKTsKICAgICBpZiAoIW5ld1JlbmRlcmVyKQogICAgICAgICByZXR1cm47
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294252</attachid>
            <date>2016-11-09 11:18:23 -0800</date>
            <delta_ts>2016-11-09 11:35:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164503-20161109111413.patch</filename>
            <type>text/plain</type>
            <size>16047</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uYWJkZmFkNzQ4NGY2NDQyNGU0ZTM5NDE3NTQ2MjQ5
ZmRjZTRmNzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQgbmV4dFJlbmRlcmVyRm9yRWxlbWVudCBsb2dpYyB0byBSZW5kZXJUcmVlVXBkYXRl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDUw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
d2UgaW5zZXJ0IGEgcmVuZGVyZXIgaW50byB0aGUgcmVuZGVyIHRyZWUsIHdlIG5lZWQgdG8ga25v
dyBib3RoIGl0cyBwYXJlbnQKKyAgICAgICAgYW5kIGl0cyBuZXh0IHNpYmxpbmcuIE5vcm1hbGx5
IHRoZSBwYXJlbnQgYW5kIHRoZSBzaWJsaW5nIGFyZSBiYXNlZCBvbiB0aGUgRE9NLCBidXQKKyAg
ICAgICAgd2hlbiB0aGlzIHJlbmRlcmVyIGlzIHBhcnQgb2YgYSBmbG93IHRocmVhZCwgaXRzIGlu
c2VydGlvbiBzaWJsaW5nIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgRE9NIHNpYmxpbmcuCisgICAg
ICAgIFRvIGZpbmQgdGhlIGNvcnJlY3Qgc2libGluZywgd2UgY2FsbCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQncyBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KCkuCisgICAgICAgIFJlbmRlck5hbWVkRmxv
d1RocmVhZCBrZWVwcyB0cmFjayBvZiBpdHMgY2hpbGRyZW4gc28gdGhhdCBpdCBjYW4gY29tcHV0
ZSB0aGUgbmV4dCBzaWJsaW5nCisgICAgICAgIGZvciB0aGUgaW5zZXJ0aW9uIHBvaW50LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZWxpbWluYXRlcyB0aGUgbmVlZCBmb3Iga2VlcGluZyB0cmFjayBv
ZiB0aGUgY2hpbGQgcmVuZGVyZXJzIG9mIGVhY2gKKyAgICAgICAgZmxvdyBieSBtb3ZpbmcgdGhl
ICduZXh0IHNpYmxpbmcnIGxvZ2ljIHRvIFJlbmRlclRyZWVQb3NpdGlvbi4KKworICAgICAgICBO
byBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50
b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6d2lsbEJlRGVzdHJveWVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92ZUZyb21SZW5kZXJGbG93
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxv
d1RocmVhZFdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVt
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Om5leHRSZW5kZXJlckZvckVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjphZGRGbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpyZW1vdmVGbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlUG9z
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpwcmV2aW91
c1NpYmxpbmdSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlUG9zaXRpb246
OmZsb3dUaHJlYWRJbnNlcnRpb25Db250ZXh0KToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVl
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6UmVuZGVy
VHJlZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cGFy
ZW50KToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZWdpc3RlckVsZW1lbnRGb3JGbG93VGhyZWFkSWZOZWVkZWQpOiBXZSBuZWVkIHRv
IHJlZ2lzdGVkIHRoZSBlbGVtZW50IGV2ZW4gd2hlbiBpdCBkb2VzIG5vdCBjcmVhdGUgcmVuZGVy
ZXIgKGRpc3BsYXk6IG5vbmUpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1vdmVUb0Zsb3dUaHJlYWRJZk5l
ZWRlZCk6IERlbGV0ZWQuCisKIDIwMTYtMTEtMDcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM4Mi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA3MTBjOTdjYWRk
Y2I5NzVhNzMxMThhN2M1OTUwOWNlMmU2ZTYzN2UwLi5kMTkyMjM5ZWRmOTAxNGQzYTRlNDk3ODZh
NjUwNDNmNjI1YTJjM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCkBAIC0xMDQ0LDkgKzEwNDQsNiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkUwogCiB2
b2lkIFJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoKQogewotICAgIGlmIChhdXRvKiBj
b250YWluZXJGbG93VGhyZWFkID0gcGFyZW50KCktPnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBw
ZXIoKSkKLSAgICAgICAgY29udGFpbmVyRmxvd1RocmVhZC0+YWRkRmxvd0NoaWxkKCp0aGlzKTsK
LQogICAgIC8vIEtlZXAgb3VyIGxheWVyIGhpZXJhcmNoeSB1cGRhdGVkLiBPcHRpbWl6ZSBmb3Ig
dGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuCiAgICAgLy8g
YW5kIGRvbid0IGhhdmUgYSBsYXllciBhdHRhY2hlZCB0byBvdXJzZWx2ZXMuCiAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gbnVsbHB0cjsKQEAgLTExMjQsNyArMTEyMSw2IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95
ZWQoKSAmJiB2aWV3KCkuaGFzUmVuZGVyTmFtZWRGbG93VGhyZWFkcygpKSB7CiAgICAgICAgIC8v
IEFmdGVyIHJlbW92ZSwgdGhlIG9iamVjdCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24g
c2hvdWxkIG5vdCBiZSBpbiBhbnkgZmxvdyB0aHJlYWQuCiAgICAgICAgIGZvciAoYXV0byYgZmxv
d1RocmVhZCA6ICp2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5yZW5kZXJOYW1lZEZsb3dU
aHJlYWRMaXN0KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghZmxvd1RocmVhZC0+aGFzQ2hpbGQo
KnRoaXMpKTsKICAgICAgICAgICAgIEFTU0VSVCghZmxvd1RocmVhZC0+aGFzQ2hpbGRJbmZvKHRo
aXMpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1MjUsMTQgKzE1MjEsNiBAQCBib29sIFJlbmRl
ckVsZW1lbnQ6OnJlcGFpbnRGb3JQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJ
bnRSZWN0JiB2aXNpYgogICAgIHJldHVybiB0cnVlOwogfQogCi1SZW5kZXJOYW1lZEZsb3dUaHJl
YWQqIFJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBwZXIoKQotewotICAg
IGF1dG8qIHJlbmRlcmVyID0gdGhpczsKLSAgICB3aGlsZSAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
PmlzQW5vbnltb3VzQmxvY2soKSAmJiAhaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqcmVuZGVy
ZXIpKQotICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICByZXR1cm4g
aXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ+KHJlbmRlcmVyKSA6IG51bGxwdHI7Ci19Ci0KIGNvbnN0IFJlbmRlclN0eWxl
KiBSZW5kZXJFbGVtZW50OjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8sIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAocHNldWRvIDwg
RklSU1RfSU5URVJOQUxfUFNFVURPSUQgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRv
KSkKQEAgLTIyMDcsOCArMjE5NSw2IEBAIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5k
ZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CiB2b2lkIFJl
bmRlckVsZW1lbnQ6OnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkKCkKIHsKICAgICBBU1NFUlQo
Zmxvd1RocmVhZFN0YXRlKCkgIT0gTm90SW5zaWRlRmxvd1RocmVhZCk7Ci0gICAgaWYgKGF1dG8q
IGNvbnRhaW5lckZsb3dUaHJlYWQgPSBwYXJlbnQoKS0+cmVuZGVyTmFtZWRGbG93VGhyZWFkV3Jh
cHBlcigpKQotICAgICAgICBjb250YWluZXJGbG93VGhyZWFkLT5yZW1vdmVGbG93Q2hpbGQoKnRo
aXMpOwogICAgIC8vIFNvbWV0aW1lcyB3ZSByZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSB0aGUgZmxv
dywgYnV0IGl0J3Mgbm90IGRlc3Ryb3llZCBhdCB0aGF0IHRpbWUuCiAgICAgLy8gSXQncyBvbmx5
IHVudGlsIGxhdGVyIHdoZW4gd2UgYWN0dWFsbHkgZGVzdHJveSBpdCBhbmQgcmVtb3ZlIGFsbCB0
aGUgY2hpbGRyZW4gZnJvbSBpdC4KICAgICAvLyBDdXJyZW50bHksIHRoYXQgaGFwcGVucyBmb3Ig
Zmlyc3RMZXR0ZXIgZWxlbWVudHMgYW5kIGxpc3QgbWFya2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDAwYjNkNzE5NGQzMDJkOWJlMjFlOTZmZDU5MWUy
NDA1OWMyNDhjMjAuLmFlM2FhMmMyMTdiOWE4ZTZlM2YyMzc5NGVkNzlmZDFmNDU4YWI5NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMTk5LDggKzE5OSw2
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BhdXNlZEltYWdlQW5pbWF0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zOyB9CiAgICAgdm9pZCBzZXRIYXNQYXVz
ZWRJbWFnZUFuaW1hdGlvbnMoYm9vbCBiKSB7IG1faGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zID0g
YjsgfQogCi0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiByZW5kZXJOYW1lZEZsb3dUaHJlYWRX
cmFwcGVyKCk7Ci0KICAgICB2b2lkIHNldFJlbmRlckJveE5lZWRzTGF6eVJlcGFpbnQoYm9vbCBi
KSB7IG1fcmVuZGVyQm94TmVlZHNMYXp5UmVwYWludCA9IGI7IH0KICAgICBib29sIHJlbmRlckJv
eE5lZWRzTGF6eVJlcGFpbnQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlckJveE5lZWRzTGF6eVJl
cGFpbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAppbmRleCA5NDFiMGVhODhiNzQxNzM5MGFmYTY3YjIyMzVmMDM5ZWNhZTFm
ZTk2Li44YWYwODBhMGYxOWM3N2VlMDE3OTQ0YTMxOWIxNmQ3YzFlZjlhNmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAt
OTcsNDAgKzk3LDYgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdN
b2RlKCkKICAgICBzZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CiB9CiAKLVJlbmRlckVsZW1l
bnQqIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtZW50KSBjb25zdAotewotICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2Zsb3dUaHJlYWRD
aGlsZExpc3QpIHsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+aXNBbm9ueW1vdXMoKSk7Ci0gICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY2hpbGQtPmVsZW1lbnQoKSwgIkNhbiBvbmx5IGJlIG51
bGwgZm9yIGFub255bW91cyByZW5kZXJlcnMiKTsKLQotICAgICAgICB1bnNpZ25lZCBzaG9ydCBw
b3NpdGlvbiA9IGVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oKmNoaWxkLT5lbGVtZW50
KCkpOwotICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xM
T1dJTkcpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGRGbG93Q2hpbGQoUmVu
ZGVyRWxlbWVudCYgbmV3Q2hpbGQpCi17Ci0gICAgLy8gVGhlIGNoaWxkIGxpc3QgaXMgdXNlZCB0
byBzb3J0IHRoZSBmbG93IHRocmVhZCdzIGNoaWxkcmVuIHJlbmRlciBvYmplY3RzIAotICAgIC8v
IGJhc2VkIG9uIHRoZWlyIGNvcnJlc3BvbmRpbmcgbm9kZXMgRE9NIG9yZGVyLiBUaGUgbGlzdCBp
cyBuZWVkZWQgdG8gYXZvaWQgc2VhcmNoaW5nIHRoZSB3aG9sZSBET00uCi0KLSAgICBpZiAobmV3
Q2hpbGQuaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogYmVmb3Jl
Q2hpbGQgPSBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KCpuZXdDaGlsZC5lbGVtZW50KCkpOwotICAg
IGlmIChiZWZvcmVDaGlsZCkKLSAgICAgICAgbV9mbG93VGhyZWFkQ2hpbGRMaXN0Lmluc2VydEJl
Zm9yZShiZWZvcmVDaGlsZCwgJm5ld0NoaWxkKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZmxvd1Ro
cmVhZENoaWxkTGlzdC5hZGQoJm5ld0NoaWxkKTsKLX0KLQotdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OnJlbW92ZUZsb3dDaGlsZChSZW5kZXJFbGVtZW50JiBjaGlsZCkKLXsKLSAgICBtX2Zs
b3dUaHJlYWRDaGlsZExpc3QucmVtb3ZlKCZjaGlsZCk7Ci19Ci0KIGJvb2wgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpkZXBlbmRzT24oUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBvdGhlclJlbmRlckZs
b3dUaHJlYWQpIGNvbnN0CiB7CiAgICAgaWYgKG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5jb250
YWlucyhvdGhlclJlbmRlckZsb3dUaHJlYWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IDU4NDY4NmE4ZGNkMzViMDU0MjkwNGQw
NTMyMDBjMjZmOWJkYjcwMjYuLjhjMWVmMGE3YmI2YTY4ZGE1YWQ2YTQ0YmE5Y2E0OGZhYTFjMzhj
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgKQEAgLTUzLDE1ICs1Myw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFJlbmRlclJlZ2lv
bkxpc3QmIGludmFsaWRSZW5kZXJSZWdpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV9pbnZhbGlk
UmVnaW9uTGlzdDsgfQogCi0gICAgUmVuZGVyRWxlbWVudCogbmV4dFJlbmRlcmVyRm9yRWxlbWVu
dChFbGVtZW50JikgY29uc3Q7Ci0KLSAgICB2b2lkIGFkZEZsb3dDaGlsZChSZW5kZXJFbGVtZW50
Jik7Ci0gICAgdm9pZCByZW1vdmVGbG93Q2hpbGQoUmVuZGVyRWxlbWVudCYpOwotICAgIGJvb2wg
aGFzQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAhbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmlzRW1w
dHkoKTsgfQotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc0NoaWxkKFJlbmRlckVsZW1lbnQm
IGNoaWxkKSBjb25zdCB7IHJldHVybiBtX2Zsb3dUaHJlYWRDaGlsZExpc3QuY29udGFpbnMoJmNo
aWxkKTsgfQotI2VuZGlmCi0KICAgICBzdGF0aWMgUmVuZGVyQmxvY2sqIGZyYWdtZW50RnJvbVJl
bmRlckJveEFzUmVuZGVyQmxvY2soUmVuZGVyQm94KiwgY29uc3QgSW50UG9pbnQmIGFic29sdXRl
UG9pbnQsIGNvbnN0IFJlbmRlckJveCYgZmxvd2VkQm94KTsKIAogICAgIHZvaWQgcHVzaERlcGVu
ZGVuY2llcyhSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0Jik7CkBAIC0xNDEsOSArMTMyLDYgQEAg
cHJpdmF0ZToKICAgICAvLyBlYXN5IHRvIHNvcnQgdGhlIG9yZGVyIG9mIHRocmVhZHMgbGF5b3V0
LgogICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQgbV9sYXlvdXRCZWZvcmVUaHJl
YWRzU2V0OwogCi0gICAgLy8gSG9sZHMgdGhlIHNvcnRlZCBjaGlsZHJlbiBvZiBhIG5hbWVkIGZs
b3cuIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHdlIGNhbiBnZXQgdGhlIG9yZGVyaW5nIHJpZ2h0Lgot
ICAgIExpc3RIYXNoU2V0PFJlbmRlckVsZW1lbnQqPiBtX2Zsb3dUaHJlYWRDaGlsZExpc3Q7Ci0K
ICAgICBOYW1lZEZsb3dDb250ZW50RWxlbWVudHMgbV9jb250ZW50RWxlbWVudHM7CiAKICAgICBS
ZW5kZXJSZWdpb25MaXN0IG1faW52YWxpZFJlZ2lvbkxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAppbmRleCA4ODU0ZWNjZWMzMjdlMjJiMjJkYjczZDI1
ZTc2ZGNjM2Q0M2RiMWNiLi4yYjkwZDY4NDdhNTkyODM5MzNjYWZmMGRjN2E1M2ZmMjVmOWU2NjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlUG9zaXRpb24uaCIKIAogI2luY2x1ZGUg
IkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtNjYsNyArNjcsNyBAQCBSZW5kZXJPYmplY3Qq
IFJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIoY29uc3QgVGV4dCYg
dGV4dE5vZGUpCiAgICAgYXV0byBjb21wb3NlZENoaWxkcmVuID0gY29tcG9zZWRUcmVlQ2hpbGRy
ZW4oKnBhcmVudEVsZW1lbnQpOwogICAgIGZvciAoYXV0byBpdCA9IGNvbXBvc2VkQ2hpbGRyZW4u
YXQodGV4dE5vZGUpLCBlbmQgPSBjb21wb3NlZENoaWxkcmVuLmVuZCgpOyBpdCAhPSBlbmQ7IC0t
aXQpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpOwot
ICAgICAgICBpZiAocmVuZGVyZXIgJiYgIVJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJl
cGFyZW50ZWQoKnJlbmRlcmVyKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmICFpc1JlbmRlcmVy
UmVwYXJlbnRlZCgqcmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAg
IH0KICAgICBpZiAoYXV0byogYmVmb3JlID0gcGFyZW50RWxlbWVudC0+YmVmb3JlUHNldWRvRWxl
bWVudCgpKQpAQCAtMTA0LDYgKzEwNSw1MCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3Np
dGlvbjo6bmV4dFNpYmxpbmdSZW5kZXJlcihjb25zdCBOb2RlJiBub2RlKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorUmVuZGVyVHJlZVBv
c2l0aW9uIFJlbmRlclRyZWVQb3NpdGlvbjo6aW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFk
KEVsZW1lbnQqIGluc2VydGlvblBhcmVudCwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQoreworICAgIEFTU0VSVChlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJl
YWQoc3R5bGUpKTsKKyAgICBhdXRvJiBwYXJlbnRGbG93VGhyZWFkID0gZWxlbWVudC5kb2N1bWVu
dCgpLnJlbmRlclZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xsZXIoKS5lbnN1cmVSZW5kZXJGbG93
VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKTsKKworICAgIGlmICghaW5zZXJ0aW9u
UGFyZW50KQorICAgICAgICByZXR1cm4geyBwYXJlbnRGbG93VGhyZWFkLCBudWxscHRyIH07CisK
KyAgICBhdXRvIGNvbXBvc2VkRGVzY2VuZGFudHMgPSBjb21wb3NlZFRyZWVEZXNjZW5kYW50cygq
aW5zZXJ0aW9uUGFyZW50KTsKKyAgICBhdXRvIGl0ID0gZWxlbWVudC5pc0JlZm9yZVBzZXVkb0Vs
ZW1lbnQoKSA/IGNvbXBvc2VkRGVzY2VuZGFudHMuYmVnaW4oKSA6IGNvbXBvc2VkRGVzY2VuZGFu
dHMuYXQoZWxlbWVudCk7CisgICAgYXV0byBlbmQgPSBjb21wb3NlZERlc2NlbmRhbnRzLmVuZCgp
OworICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKKyAgICAgICAgYXV0byYgY3VycmVudE5vZGUgPSAq
aXQ7CisgICAgICAgIGJvb2wgaGFzRGlzcGxheUNvbnRlbnRzID0gaXM8RWxlbWVudD4oY3VycmVu
dE5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KGN1cnJlbnROb2RlKS5oYXNEaXNwbGF5Q29udGVu
dHMoKTsKKyAgICAgICAgaWYgKGhhc0Rpc3BsYXlDb250ZW50cykgeworICAgICAgICAgICAgaXQu
dHJhdmVyc2VOZXh0KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGF1dG8qIHJlbmRlcmVyID0gY3VycmVudE5vZGUucmVuZGVyZXIoKTsKKyAgICAgICAgaWYg
KCFyZW5kZXJlcikgeworICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJl
bigpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlz
PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4
dCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBh
cmUgdGhlIGxhc3QgY2hpbGQgaW4gdGhpcyBmbG93LgorICAgICAgICBpZiAoIWlzUmVuZGVyZXJS
ZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgICAgICByZXR1cm4geyBwYXJlbnRGbG93VGhy
ZWFkLCBudWxscHRyIH07CisKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhhc0Zsb3dJ
bnRvKCkgJiYgc3R5bGUuZmxvd1RocmVhZCgpID09IHJlbmRlcmVyLT5zdHlsZSgpLmZsb3dUaHJl
YWQoKSkKKyAgICAgICAgICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJlYWQsIGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KHJlbmRlcmVyKSB9OworICAgICAgICAvLyBOZXN0ZWQgZmxvd3MsIHNraXAu
CisgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKKyAgICB9CisgICAg
cmV0dXJuIHsgcGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OworfQorI2VuZGlmCisgICAgCiBi
b29sIFJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVyLm5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uaAppbmRleCBm
Mzc5ZTkzNGU0MGNlZGM4NjEwZjYwODQxYjNhODYwMTgyNmU5Nzc2Li5iOGZiYTRjOTcxMTQ4N2Qy
Mzg1MGM2MWUyMzZkMzA0ZGE3ZWQ4Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9SZW5kZXJUcmVlUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJU
cmVlUG9zaXRpb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBSZW5kZXJUcmVlUG9zaXRp
b25faAogCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlck5hbWVk
Rmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAKQEAgLTQ1LDE1ICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAK
LSAgICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJPYmpl
Y3QqIG5leHRTaWJsaW5nKQotICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBt
X25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQotICAgICAgICAsIG1faGFzVmFsaWROZXh0U2libGlu
Zyh0cnVlKQotICAgIHsKLSAgICB9CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIHN0YXRp
YyBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFkKEVsZW1l
bnQqIGluc2VydGlvblBhcmVudCwgRWxlbWVudCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJik7
CisjZW5kaWYKIAogICAgIFJlbmRlckVsZW1lbnQmIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyZW50OyB9Ci0KICAgICB2b2lkIGluc2VydChSZW5kZXJPYmplY3QmKTsKICAgICBib29sIGNh
bkluc2VydChSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBjYW5JbnNlcnQoUmVuZGVy
VGV4dCYpIGNvbnN0OwpAQCAtNjcsNiArNjQsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGlzUmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0IFJlbmRlck9iamVjdCYpOwogCiBwcml2YXRlOgor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRmxv
d1RocmVhZCYgcGFyZW50LCBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nKQorICAgICAgICA6IG1f
cGFyZW50KHBhcmVudCkKKyAgICAgICAgLCBtX25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQorICAg
ICAgICAsIG1faGFzVmFsaWROZXh0U2libGluZyh0cnVlKQorICAgIHsKKyAgICB9CisjZW5kaWYK
KwogICAgIFJlbmRlckVsZW1lbnQmIG1fcGFyZW50OwogICAgIFJlbmRlck9iamVjdCogbV9uZXh0
U2libGluZyB7IG51bGxwdHIgfTsKICAgICBib29sIG1faGFzVmFsaWROZXh0U2libGluZyB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXgg
YzBiNTMzZmNiOTkzZTdkYjY1YjFkNDU4ZWJmODc2ZDljNWVjMTNjMi4uNWU4ZmFhMjEyMzRhMmM3
MzIyNjhjNmM4MWE0YjIyZjNmNjZkY2NjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVVcGRhdGVyLmNwcApAQCAtMzA2LDM3ICszMDYsNDAgQEAgdm9pZCBSZW5kZXJUcmVlVXBk
YXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIFN0eWxlOjpFbGVt
ZW50VXAKIH0KIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLXN0YXRpYyBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQqIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMgdm9pZCByZWdpc3RlckVsZW1lbnRGb3JGbG93
VGhyZWFkSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewogICAgIGlmICghZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICAgICAgcmV0dXJuOwogICAgIEZsb3dUaHJlYWRD
b250cm9sbGVyJiBmbG93VGhyZWFkQ29udHJvbGxlciA9IGVsZW1lbnQuZG9jdW1lbnQoKS5yZW5k
ZXJWaWV3KCktPmZsb3dUaHJlYWRDb250cm9sbGVyKCk7Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkJiBwYXJlbnRGbG93UmVuZGVyZXIgPSBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5k
ZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKTsKLSAgICBmbG93VGhyZWFk
Q29udHJvbGxlci5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGVsZW1lbnQsIHBhcmVu
dEZsb3dSZW5kZXJlcik7Ci0gICAgcmV0dXJuICZwYXJlbnRGbG93UmVuZGVyZXI7CisgICAgZmxv
d1RocmVhZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChlbGVtZW50
LCBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5
bGUuZmxvd1RocmVhZCgpKSk7CiB9CiAjZW5kaWYKIAogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
Y3JlYXRlUmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsK
KyAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudCwgJnN0
eWxlXSAoKSB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICAgICBib29sIHdpbGxNb3Zl
VG9GbG93VGhyZWFkID0gZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKTsKKyAg
ICAgICAgCisgICAgICAgIGlmICh3aWxsTW92ZVRvRmxvd1RocmVhZCkKKyAgICAgICAgICAgIHJl
dHVybiBSZW5kZXJUcmVlUG9zaXRpb246Omluc2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChy
ZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKS5lbGVtZW50KCksIGVsZW1lbnQsIHN0eWxlKTsK
KyNlbmRpZgorICAgICAgICByZW5kZXJUcmVlUG9zaXRpb24oKS5jb21wdXRlTmV4dFNpYmxpbmco
ZWxlbWVudCk7CisgICAgICAgIHJldHVybiByZW5kZXJUcmVlUG9zaXRpb24oKTsKKyAgICB9Owor
ICAgIAogICAgIGlmICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBv
c2l0aW9uKCkucGFyZW50KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQqIHBhcmVudEZsb3dSZW5kZXJlciA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKENTU19S
RUdJT05TKQotICAgIHBhcmVudEZsb3dSZW5kZXJlciA9IG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRl
ZChlbGVtZW50LCBzdHlsZSk7CisgICAgLy8gRXZlbiBkaXNwbGF5OiBub25lIGVsZW1lbnRzIG5l
ZWQgdG8gYmUgcmVnaXN0ZXJlZCBpbiBGbG93VGhyZWFkQ29udHJvbGxlci4KKyAgICByZWdpc3Rl
ckVsZW1lbnRGb3JGbG93VGhyZWFkSWZOZWVkZWQoZWxlbWVudCwgc3R5bGUpOwogI2VuZGlmCiAK
ICAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHJlbmRlclRyZWVQb3NpdGlvbigpLmNvbXB1dGVOZXh0U2libGluZyhlbGVtZW50
KTsKLQotICAgIFJlbmRlclRyZWVQb3NpdGlvbiBpbnNlcnRpb25Qb3NpdGlvbiA9IHBhcmVudEZs
b3dSZW5kZXJlcgotICAgICAgICA/IFJlbmRlclRyZWVQb3NpdGlvbigqcGFyZW50Rmxvd1JlbmRl
cmVyLCBwYXJlbnRGbG93UmVuZGVyZXItPm5leHRSZW5kZXJlckZvckVsZW1lbnQoZWxlbWVudCkp
Ci0gICAgICAgIDogcmVuZGVyVHJlZVBvc2l0aW9uKCk7Ci0KKyAgICBSZW5kZXJUcmVlUG9zaXRp
b24gaW5zZXJ0aW9uUG9zaXRpb24gPSBjb21wdXRlSW5zZXJ0aW9uUG9zaXRpb24oKTsKICAgICBS
ZW5kZXJFbGVtZW50KiBuZXdSZW5kZXJlciA9IGVsZW1lbnQuY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbikubGVha1B0cigpOwogICAgIGlmICgh
bmV3UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294255</attachid>
            <date>2016-11-09 11:35:58 -0800</date>
            <delta_ts>2016-11-09 11:36:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164503-20161109113148.patch</filename>
            <type>text/plain</type>
            <size>15978</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uYWJkZmFkNzQ4NGY2NDQyNGU0ZTM5NDE3NTQ2MjQ5
ZmRjZTRmNzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQgbmV4dFJlbmRlcmVyRm9yRWxlbWVudCBsb2dpYyB0byBSZW5kZXJUcmVlVXBkYXRl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDUw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
d2UgaW5zZXJ0IGEgcmVuZGVyZXIgaW50byB0aGUgcmVuZGVyIHRyZWUsIHdlIG5lZWQgdG8ga25v
dyBib3RoIGl0cyBwYXJlbnQKKyAgICAgICAgYW5kIGl0cyBuZXh0IHNpYmxpbmcuIE5vcm1hbGx5
IHRoZSBwYXJlbnQgYW5kIHRoZSBzaWJsaW5nIGFyZSBiYXNlZCBvbiB0aGUgRE9NLCBidXQKKyAg
ICAgICAgd2hlbiB0aGlzIHJlbmRlcmVyIGlzIHBhcnQgb2YgYSBmbG93IHRocmVhZCwgaXRzIGlu
c2VydGlvbiBzaWJsaW5nIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgRE9NIHNpYmxpbmcuCisgICAg
ICAgIFRvIGZpbmQgdGhlIGNvcnJlY3Qgc2libGluZywgd2UgY2FsbCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQncyBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KCkuCisgICAgICAgIFJlbmRlck5hbWVkRmxv
d1RocmVhZCBrZWVwcyB0cmFjayBvZiBpdHMgY2hpbGRyZW4gc28gdGhhdCBpdCBjYW4gY29tcHV0
ZSB0aGUgbmV4dCBzaWJsaW5nCisgICAgICAgIGZvciB0aGUgaW5zZXJ0aW9uIHBvaW50LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZWxpbWluYXRlcyB0aGUgbmVlZCBmb3Iga2VlcGluZyB0cmFjayBv
ZiB0aGUgY2hpbGQgcmVuZGVyZXJzIG9mIGVhY2gKKyAgICAgICAgZmxvdyBieSBtb3ZpbmcgdGhl
ICduZXh0IHNpYmxpbmcnIGxvZ2ljIHRvIFJlbmRlclRyZWVQb3NpdGlvbi4KKworICAgICAgICBO
byBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50
b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6d2lsbEJlRGVzdHJveWVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92ZUZyb21SZW5kZXJGbG93
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxv
d1RocmVhZFdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVt
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Om5leHRSZW5kZXJlckZvckVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjphZGRGbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpyZW1vdmVGbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlUG9z
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpwcmV2aW91
c1NpYmxpbmdSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlUG9zaXRpb246
OmZsb3dUaHJlYWRJbnNlcnRpb25Db250ZXh0KToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVl
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6UmVuZGVy
VHJlZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cGFy
ZW50KToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZWdpc3RlckVsZW1lbnRGb3JGbG93VGhyZWFkSWZOZWVkZWQpOiBXZSBuZWVkIHRv
IHJlZ2lzdGVkIHRoZSBlbGVtZW50IGV2ZW4gd2hlbiBpdCBkb2VzIG5vdCBjcmVhdGUgcmVuZGVy
ZXIgKGRpc3BsYXk6IG5vbmUpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1vdmVUb0Zsb3dUaHJlYWRJZk5l
ZWRlZCk6IERlbGV0ZWQuCisKIDIwMTYtMTEtMDcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM4Mi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA3MTBjOTdjYWRk
Y2I5NzVhNzMxMThhN2M1OTUwOWNlMmU2ZTYzN2UwLi5kMTkyMjM5ZWRmOTAxNGQzYTRlNDk3ODZh
NjUwNDNmNjI1YTJjM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCkBAIC0xMDQ0LDkgKzEwNDQsNiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkUwogCiB2
b2lkIFJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoKQogewotICAgIGlmIChhdXRvKiBj
b250YWluZXJGbG93VGhyZWFkID0gcGFyZW50KCktPnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBw
ZXIoKSkKLSAgICAgICAgY29udGFpbmVyRmxvd1RocmVhZC0+YWRkRmxvd0NoaWxkKCp0aGlzKTsK
LQogICAgIC8vIEtlZXAgb3VyIGxheWVyIGhpZXJhcmNoeSB1cGRhdGVkLiBPcHRpbWl6ZSBmb3Ig
dGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuCiAgICAgLy8g
YW5kIGRvbid0IGhhdmUgYSBsYXllciBhdHRhY2hlZCB0byBvdXJzZWx2ZXMuCiAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gbnVsbHB0cjsKQEAgLTExMjQsNyArMTEyMSw2IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95
ZWQoKSAmJiB2aWV3KCkuaGFzUmVuZGVyTmFtZWRGbG93VGhyZWFkcygpKSB7CiAgICAgICAgIC8v
IEFmdGVyIHJlbW92ZSwgdGhlIG9iamVjdCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24g
c2hvdWxkIG5vdCBiZSBpbiBhbnkgZmxvdyB0aHJlYWQuCiAgICAgICAgIGZvciAoYXV0byYgZmxv
d1RocmVhZCA6ICp2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5yZW5kZXJOYW1lZEZsb3dU
aHJlYWRMaXN0KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghZmxvd1RocmVhZC0+aGFzQ2hpbGQo
KnRoaXMpKTsKICAgICAgICAgICAgIEFTU0VSVCghZmxvd1RocmVhZC0+aGFzQ2hpbGRJbmZvKHRo
aXMpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1MjUsMTQgKzE1MjEsNiBAQCBib29sIFJlbmRl
ckVsZW1lbnQ6OnJlcGFpbnRGb3JQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJ
bnRSZWN0JiB2aXNpYgogICAgIHJldHVybiB0cnVlOwogfQogCi1SZW5kZXJOYW1lZEZsb3dUaHJl
YWQqIFJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBwZXIoKQotewotICAg
IGF1dG8qIHJlbmRlcmVyID0gdGhpczsKLSAgICB3aGlsZSAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
PmlzQW5vbnltb3VzQmxvY2soKSAmJiAhaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqcmVuZGVy
ZXIpKQotICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICByZXR1cm4g
aXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ+KHJlbmRlcmVyKSA6IG51bGxwdHI7Ci19Ci0KIGNvbnN0IFJlbmRlclN0eWxl
KiBSZW5kZXJFbGVtZW50OjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8sIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAocHNldWRvIDwg
RklSU1RfSU5URVJOQUxfUFNFVURPSUQgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRv
KSkKQEAgLTIyMDcsOCArMjE5NSw2IEBAIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5k
ZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CiB2b2lkIFJl
bmRlckVsZW1lbnQ6OnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkKCkKIHsKICAgICBBU1NFUlQo
Zmxvd1RocmVhZFN0YXRlKCkgIT0gTm90SW5zaWRlRmxvd1RocmVhZCk7Ci0gICAgaWYgKGF1dG8q
IGNvbnRhaW5lckZsb3dUaHJlYWQgPSBwYXJlbnQoKS0+cmVuZGVyTmFtZWRGbG93VGhyZWFkV3Jh
cHBlcigpKQotICAgICAgICBjb250YWluZXJGbG93VGhyZWFkLT5yZW1vdmVGbG93Q2hpbGQoKnRo
aXMpOwogICAgIC8vIFNvbWV0aW1lcyB3ZSByZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSB0aGUgZmxv
dywgYnV0IGl0J3Mgbm90IGRlc3Ryb3llZCBhdCB0aGF0IHRpbWUuCiAgICAgLy8gSXQncyBvbmx5
IHVudGlsIGxhdGVyIHdoZW4gd2UgYWN0dWFsbHkgZGVzdHJveSBpdCBhbmQgcmVtb3ZlIGFsbCB0
aGUgY2hpbGRyZW4gZnJvbSBpdC4KICAgICAvLyBDdXJyZW50bHksIHRoYXQgaGFwcGVucyBmb3Ig
Zmlyc3RMZXR0ZXIgZWxlbWVudHMgYW5kIGxpc3QgbWFya2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDAwYjNkNzE5NGQzMDJkOWJlMjFlOTZmZDU5MWUy
NDA1OWMyNDhjMjAuLmFlM2FhMmMyMTdiOWE4ZTZlM2YyMzc5NGVkNzlmZDFmNDU4YWI5NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMTk5LDggKzE5OSw2
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BhdXNlZEltYWdlQW5pbWF0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zOyB9CiAgICAgdm9pZCBzZXRIYXNQYXVz
ZWRJbWFnZUFuaW1hdGlvbnMoYm9vbCBiKSB7IG1faGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zID0g
YjsgfQogCi0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiByZW5kZXJOYW1lZEZsb3dUaHJlYWRX
cmFwcGVyKCk7Ci0KICAgICB2b2lkIHNldFJlbmRlckJveE5lZWRzTGF6eVJlcGFpbnQoYm9vbCBi
KSB7IG1fcmVuZGVyQm94TmVlZHNMYXp5UmVwYWludCA9IGI7IH0KICAgICBib29sIHJlbmRlckJv
eE5lZWRzTGF6eVJlcGFpbnQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlckJveE5lZWRzTGF6eVJl
cGFpbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAppbmRleCA5NDFiMGVhODhiNzQxNzM5MGFmYTY3YjIyMzVmMDM5ZWNhZTFm
ZTk2Li44YWYwODBhMGYxOWM3N2VlMDE3OTQ0YTMxOWIxNmQ3YzFlZjlhNmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAt
OTcsNDAgKzk3LDYgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdN
b2RlKCkKICAgICBzZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CiB9CiAKLVJlbmRlckVsZW1l
bnQqIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtZW50KSBjb25zdAotewotICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2Zsb3dUaHJlYWRD
aGlsZExpc3QpIHsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+aXNBbm9ueW1vdXMoKSk7Ci0gICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY2hpbGQtPmVsZW1lbnQoKSwgIkNhbiBvbmx5IGJlIG51
bGwgZm9yIGFub255bW91cyByZW5kZXJlcnMiKTsKLQotICAgICAgICB1bnNpZ25lZCBzaG9ydCBw
b3NpdGlvbiA9IGVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oKmNoaWxkLT5lbGVtZW50
KCkpOwotICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xM
T1dJTkcpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGRGbG93Q2hpbGQoUmVu
ZGVyRWxlbWVudCYgbmV3Q2hpbGQpCi17Ci0gICAgLy8gVGhlIGNoaWxkIGxpc3QgaXMgdXNlZCB0
byBzb3J0IHRoZSBmbG93IHRocmVhZCdzIGNoaWxkcmVuIHJlbmRlciBvYmplY3RzIAotICAgIC8v
IGJhc2VkIG9uIHRoZWlyIGNvcnJlc3BvbmRpbmcgbm9kZXMgRE9NIG9yZGVyLiBUaGUgbGlzdCBp
cyBuZWVkZWQgdG8gYXZvaWQgc2VhcmNoaW5nIHRoZSB3aG9sZSBET00uCi0KLSAgICBpZiAobmV3
Q2hpbGQuaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogYmVmb3Jl
Q2hpbGQgPSBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KCpuZXdDaGlsZC5lbGVtZW50KCkpOwotICAg
IGlmIChiZWZvcmVDaGlsZCkKLSAgICAgICAgbV9mbG93VGhyZWFkQ2hpbGRMaXN0Lmluc2VydEJl
Zm9yZShiZWZvcmVDaGlsZCwgJm5ld0NoaWxkKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZmxvd1Ro
cmVhZENoaWxkTGlzdC5hZGQoJm5ld0NoaWxkKTsKLX0KLQotdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OnJlbW92ZUZsb3dDaGlsZChSZW5kZXJFbGVtZW50JiBjaGlsZCkKLXsKLSAgICBtX2Zs
b3dUaHJlYWRDaGlsZExpc3QucmVtb3ZlKCZjaGlsZCk7Ci19Ci0KIGJvb2wgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpkZXBlbmRzT24oUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBvdGhlclJlbmRlckZs
b3dUaHJlYWQpIGNvbnN0CiB7CiAgICAgaWYgKG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5jb250
YWlucyhvdGhlclJlbmRlckZsb3dUaHJlYWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IDU4NDY4NmE4ZGNkMzViMDU0MjkwNGQw
NTMyMDBjMjZmOWJkYjcwMjYuLjhjMWVmMGE3YmI2YTY4ZGE1YWQ2YTQ0YmE5Y2E0OGZhYTFjMzhj
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgKQEAgLTUzLDE1ICs1Myw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFJlbmRlclJlZ2lv
bkxpc3QmIGludmFsaWRSZW5kZXJSZWdpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV9pbnZhbGlk
UmVnaW9uTGlzdDsgfQogCi0gICAgUmVuZGVyRWxlbWVudCogbmV4dFJlbmRlcmVyRm9yRWxlbWVu
dChFbGVtZW50JikgY29uc3Q7Ci0KLSAgICB2b2lkIGFkZEZsb3dDaGlsZChSZW5kZXJFbGVtZW50
Jik7Ci0gICAgdm9pZCByZW1vdmVGbG93Q2hpbGQoUmVuZGVyRWxlbWVudCYpOwotICAgIGJvb2wg
aGFzQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAhbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmlzRW1w
dHkoKTsgfQotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc0NoaWxkKFJlbmRlckVsZW1lbnQm
IGNoaWxkKSBjb25zdCB7IHJldHVybiBtX2Zsb3dUaHJlYWRDaGlsZExpc3QuY29udGFpbnMoJmNo
aWxkKTsgfQotI2VuZGlmCi0KICAgICBzdGF0aWMgUmVuZGVyQmxvY2sqIGZyYWdtZW50RnJvbVJl
bmRlckJveEFzUmVuZGVyQmxvY2soUmVuZGVyQm94KiwgY29uc3QgSW50UG9pbnQmIGFic29sdXRl
UG9pbnQsIGNvbnN0IFJlbmRlckJveCYgZmxvd2VkQm94KTsKIAogICAgIHZvaWQgcHVzaERlcGVu
ZGVuY2llcyhSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0Jik7CkBAIC0xNDEsOSArMTMyLDYgQEAg
cHJpdmF0ZToKICAgICAvLyBlYXN5IHRvIHNvcnQgdGhlIG9yZGVyIG9mIHRocmVhZHMgbGF5b3V0
LgogICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQgbV9sYXlvdXRCZWZvcmVUaHJl
YWRzU2V0OwogCi0gICAgLy8gSG9sZHMgdGhlIHNvcnRlZCBjaGlsZHJlbiBvZiBhIG5hbWVkIGZs
b3cuIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHdlIGNhbiBnZXQgdGhlIG9yZGVyaW5nIHJpZ2h0Lgot
ICAgIExpc3RIYXNoU2V0PFJlbmRlckVsZW1lbnQqPiBtX2Zsb3dUaHJlYWRDaGlsZExpc3Q7Ci0K
ICAgICBOYW1lZEZsb3dDb250ZW50RWxlbWVudHMgbV9jb250ZW50RWxlbWVudHM7CiAKICAgICBS
ZW5kZXJSZWdpb25MaXN0IG1faW52YWxpZFJlZ2lvbkxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAppbmRleCA4ODU0ZWNjZWMzMjdlMjJiMjJkYjczZDI1
ZTc2ZGNjM2Q0M2RiMWNiLi4yYjkwZDY4NDdhNTkyODM5MzNjYWZmMGRjN2E1M2ZmMjVmOWU2NjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlUG9zaXRpb24uaCIKIAogI2luY2x1ZGUg
IkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtNjYsNyArNjcsNyBAQCBSZW5kZXJPYmplY3Qq
IFJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIoY29uc3QgVGV4dCYg
dGV4dE5vZGUpCiAgICAgYXV0byBjb21wb3NlZENoaWxkcmVuID0gY29tcG9zZWRUcmVlQ2hpbGRy
ZW4oKnBhcmVudEVsZW1lbnQpOwogICAgIGZvciAoYXV0byBpdCA9IGNvbXBvc2VkQ2hpbGRyZW4u
YXQodGV4dE5vZGUpLCBlbmQgPSBjb21wb3NlZENoaWxkcmVuLmVuZCgpOyBpdCAhPSBlbmQ7IC0t
aXQpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpOwot
ICAgICAgICBpZiAocmVuZGVyZXIgJiYgIVJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJl
cGFyZW50ZWQoKnJlbmRlcmVyKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmICFpc1JlbmRlcmVy
UmVwYXJlbnRlZCgqcmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAg
IH0KICAgICBpZiAoYXV0byogYmVmb3JlID0gcGFyZW50RWxlbWVudC0+YmVmb3JlUHNldWRvRWxl
bWVudCgpKQpAQCAtMTA0LDYgKzEwNSw1MCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3Np
dGlvbjo6bmV4dFNpYmxpbmdSZW5kZXJlcihjb25zdCBOb2RlJiBub2RlKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorUmVuZGVyVHJlZVBv
c2l0aW9uIFJlbmRlclRyZWVQb3NpdGlvbjo6aW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFk
KEVsZW1lbnQqIGluc2VydGlvblBhcmVudCwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQoreworICAgIEFTU0VSVChlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJl
YWQoc3R5bGUpKTsKKyAgICBhdXRvJiBwYXJlbnRGbG93VGhyZWFkID0gZWxlbWVudC5kb2N1bWVu
dCgpLnJlbmRlclZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xsZXIoKS5lbnN1cmVSZW5kZXJGbG93
VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKTsKKworICAgIGlmICghaW5zZXJ0aW9u
UGFyZW50KQorICAgICAgICByZXR1cm4geyBwYXJlbnRGbG93VGhyZWFkLCBudWxscHRyIH07CisK
KyAgICBhdXRvIGNvbXBvc2VkRGVzY2VuZGFudHMgPSBjb21wb3NlZFRyZWVEZXNjZW5kYW50cygq
aW5zZXJ0aW9uUGFyZW50KTsKKyAgICBhdXRvIGl0ID0gZWxlbWVudC5pc0JlZm9yZVBzZXVkb0Vs
ZW1lbnQoKSA/IGNvbXBvc2VkRGVzY2VuZGFudHMuYmVnaW4oKSA6IGNvbXBvc2VkRGVzY2VuZGFu
dHMuYXQoZWxlbWVudCk7CisgICAgYXV0byBlbmQgPSBjb21wb3NlZERlc2NlbmRhbnRzLmVuZCgp
OworICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKKyAgICAgICAgYXV0byYgY3VycmVudE5vZGUgPSAq
aXQ7CisgICAgICAgIGJvb2wgaGFzRGlzcGxheUNvbnRlbnRzID0gaXM8RWxlbWVudD4oY3VycmVu
dE5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KGN1cnJlbnROb2RlKS5oYXNEaXNwbGF5Q29udGVu
dHMoKTsKKyAgICAgICAgaWYgKGhhc0Rpc3BsYXlDb250ZW50cykgeworICAgICAgICAgICAgaXQu
dHJhdmVyc2VOZXh0KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGF1dG8qIHJlbmRlcmVyID0gY3VycmVudE5vZGUucmVuZGVyZXIoKTsKKyAgICAgICAgaWYg
KCFyZW5kZXJlcikgeworICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJl
bigpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlz
PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4
dCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBh
cmUgdGhlIGxhc3QgY2hpbGQgaW4gdGhpcyBmbG93LgorICAgICAgICBpZiAoIWlzUmVuZGVyZXJS
ZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgICAgICByZXR1cm4geyBwYXJlbnRGbG93VGhy
ZWFkLCBudWxscHRyIH07CisKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhhc0Zsb3dJ
bnRvKCkgJiYgc3R5bGUuZmxvd1RocmVhZCgpID09IHJlbmRlcmVyLT5zdHlsZSgpLmZsb3dUaHJl
YWQoKSkKKyAgICAgICAgICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJlYWQsIGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KHJlbmRlcmVyKSB9OworICAgICAgICAvLyBOZXN0ZWQgZmxvd3MsIHNraXAu
CisgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKKyAgICB9CisgICAg
cmV0dXJuIHsgcGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OworfQorI2VuZGlmCisgICAgCiBi
b29sIFJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVyLm5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uaAppbmRleCBm
Mzc5ZTkzNGU0MGNlZGM4NjEwZjYwODQxYjNhODYwMTgyNmU5Nzc2Li5iOGZiYTRjOTcxMTQ4N2Qy
Mzg1MGM2MWUyMzZkMzA0ZGE3ZWQ4Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9SZW5kZXJUcmVlUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJU
cmVlUG9zaXRpb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBSZW5kZXJUcmVlUG9zaXRp
b25faAogCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlck5hbWVk
Rmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAKQEAgLTQ1LDE1ICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAK
LSAgICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJPYmpl
Y3QqIG5leHRTaWJsaW5nKQotICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBt
X25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQotICAgICAgICAsIG1faGFzVmFsaWROZXh0U2libGlu
Zyh0cnVlKQotICAgIHsKLSAgICB9CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIHN0YXRp
YyBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFkKEVsZW1l
bnQqIGluc2VydGlvblBhcmVudCwgRWxlbWVudCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJik7
CisjZW5kaWYKIAogICAgIFJlbmRlckVsZW1lbnQmIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyZW50OyB9Ci0KICAgICB2b2lkIGluc2VydChSZW5kZXJPYmplY3QmKTsKICAgICBib29sIGNh
bkluc2VydChSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBjYW5JbnNlcnQoUmVuZGVy
VGV4dCYpIGNvbnN0OwpAQCAtNjcsNiArNjQsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGlzUmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0IFJlbmRlck9iamVjdCYpOwogCiBwcml2YXRlOgor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRmxv
d1RocmVhZCYgcGFyZW50LCBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nKQorICAgICAgICA6IG1f
cGFyZW50KHBhcmVudCkKKyAgICAgICAgLCBtX25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQorICAg
ICAgICAsIG1faGFzVmFsaWROZXh0U2libGluZyh0cnVlKQorICAgIHsKKyAgICB9CisjZW5kaWYK
KwogICAgIFJlbmRlckVsZW1lbnQmIG1fcGFyZW50OwogICAgIFJlbmRlck9iamVjdCogbV9uZXh0
U2libGluZyB7IG51bGxwdHIgfTsKICAgICBib29sIG1faGFzVmFsaWROZXh0U2libGluZyB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXgg
YzBiNTMzZmNiOTkzZTdkYjY1YjFkNDU4ZWJmODc2ZDljNWVjMTNjMi4uM2EzOWUyMzY3YWJmMzU4
NzhkNmM2NDk4MDVlNWM5YTFlNTVkNGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVVcGRhdGVyLmNwcApAQCAtMzA2LDM3ICszMDYsMzggQEAgdm9pZCBSZW5kZXJUcmVlVXBk
YXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIFN0eWxlOjpFbGVt
ZW50VXAKIH0KIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLXN0YXRpYyBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQqIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMgdm9pZCByZWdpc3RlckVsZW1lbnRGb3JGbG93
VGhyZWFkSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewogICAgIGlmICghZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICAgICAgcmV0dXJuOwogICAgIEZsb3dUaHJlYWRD
b250cm9sbGVyJiBmbG93VGhyZWFkQ29udHJvbGxlciA9IGVsZW1lbnQuZG9jdW1lbnQoKS5yZW5k
ZXJWaWV3KCktPmZsb3dUaHJlYWRDb250cm9sbGVyKCk7Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkJiBwYXJlbnRGbG93UmVuZGVyZXIgPSBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5k
ZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKTsKLSAgICBmbG93VGhyZWFk
Q29udHJvbGxlci5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGVsZW1lbnQsIHBhcmVu
dEZsb3dSZW5kZXJlcik7Ci0gICAgcmV0dXJuICZwYXJlbnRGbG93UmVuZGVyZXI7CisgICAgZmxv
d1RocmVhZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChlbGVtZW50
LCBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5
bGUuZmxvd1RocmVhZCgpKSk7CiB9CiAjZW5kaWYKIAogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
Y3JlYXRlUmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsK
KyAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudCwgJnN0
eWxlXSAoKSB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICAgICBpZiAoZWxlbWVudC5z
aG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJU
cmVlUG9zaXRpb246Omluc2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChyZW5kZXJUcmVlUG9z
aXRpb24oKS5wYXJlbnQoKS5lbGVtZW50KCksIGVsZW1lbnQsIHN0eWxlKTsKKyNlbmRpZgorICAg
ICAgICByZW5kZXJUcmVlUG9zaXRpb24oKS5jb21wdXRlTmV4dFNpYmxpbmcoZWxlbWVudCk7Cisg
ICAgICAgIHJldHVybiByZW5kZXJUcmVlUG9zaXRpb24oKTsKKyAgICB9OworICAgIAogICAgIGlm
ICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFy
ZW50KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIHBh
cmVudEZsb3dSZW5kZXJlciA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAg
IHBhcmVudEZsb3dSZW5kZXJlciA9IG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChlbGVtZW50LCBz
dHlsZSk7CisgICAgLy8gRXZlbiBkaXNwbGF5OiBub25lIGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVn
aXN0ZXJlZCBpbiBGbG93VGhyZWFkQ29udHJvbGxlci4KKyAgICByZWdpc3RlckVsZW1lbnRGb3JG
bG93VGhyZWFkSWZOZWVkZWQoZWxlbWVudCwgc3R5bGUpOwogI2VuZGlmCiAKICAgICBpZiAoIWVs
ZW1lbnQucmVuZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJl
bmRlclRyZWVQb3NpdGlvbigpLmNvbXB1dGVOZXh0U2libGluZyhlbGVtZW50KTsKLQotICAgIFJl
bmRlclRyZWVQb3NpdGlvbiBpbnNlcnRpb25Qb3NpdGlvbiA9IHBhcmVudEZsb3dSZW5kZXJlcgot
ICAgICAgICA/IFJlbmRlclRyZWVQb3NpdGlvbigqcGFyZW50Rmxvd1JlbmRlcmVyLCBwYXJlbnRG
bG93UmVuZGVyZXItPm5leHRSZW5kZXJlckZvckVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgIDog
cmVuZGVyVHJlZVBvc2l0aW9uKCk7Ci0KKyAgICBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0aW9u
UG9zaXRpb24gPSBjb21wdXRlSW5zZXJ0aW9uUG9zaXRpb24oKTsKICAgICBSZW5kZXJFbGVtZW50
KiBuZXdSZW5kZXJlciA9IGVsZW1lbnQuY3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5
bGUpLCBpbnNlcnRpb25Qb3NpdGlvbikubGVha1B0cigpOwogICAgIGlmICghbmV3UmVuZGVyZXIp
CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294256</attachid>
            <date>2016-11-09 11:37:12 -0800</date>
            <delta_ts>2016-11-09 12:41:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164503-20161109113302.patch</filename>
            <type>text/plain</type>
            <size>15978</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uZDIyYjM1ODJhYjI3NjBjMzI5ZWI0ZTExYTQ4M2Zj
YTg0ZDk5YTlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQgbmV4dFJlbmRlcmVyRm9yRWxlbWVudCBsb2dpYyB0byBSZW5kZXJUcmVlVXBkYXRl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDUw
MworCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFdoZW4g
d2UgaW5zZXJ0IGEgcmVuZGVyZXIgaW50byB0aGUgcmVuZGVyIHRyZWUsIHdlIG5lZWQgdG8ga25v
dyBib3RoIGl0cyBwYXJlbnQKKyAgICAgICAgYW5kIGl0cyBuZXh0IHNpYmxpbmcuIE5vcm1hbGx5
IHRoZSBwYXJlbnQgYW5kIHRoZSBzaWJsaW5nIGFyZSBiYXNlZCBvbiB0aGUgRE9NLCBidXQKKyAg
ICAgICAgd2hlbiB0aGlzIHJlbmRlcmVyIGlzIHBhcnQgb2YgYSBmbG93IHRocmVhZCwgaXRzIGlu
c2VydGlvbiBzaWJsaW5nIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgRE9NIHNpYmxpbmcuCisgICAg
ICAgIFRvIGZpbmQgdGhlIGNvcnJlY3Qgc2libGluZywgd2UgY2FsbCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQncyBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KCkuCisgICAgICAgIFJlbmRlck5hbWVkRmxv
d1RocmVhZCBrZWVwcyB0cmFjayBvZiBpdHMgY2hpbGRyZW4gc28gdGhhdCBpdCBjYW4gY29tcHV0
ZSB0aGUgbmV4dCBzaWJsaW5nCisgICAgICAgIGZvciB0aGUgaW5zZXJ0aW9uIHBvaW50LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggZWxpbWluYXRlcyB0aGUgbmVlZCBmb3Iga2VlcGluZyB0cmFjayBv
ZiB0aGUgY2hpbGQgcmVuZGVyZXJzIG9mIGVhY2gKKyAgICAgICAgZmxvdyBieSBtb3ZpbmcgdGhl
ICduZXh0IHNpYmxpbmcnIGxvZ2ljIHRvIFJlbmRlclRyZWVQb3NpdGlvbi4KKworICAgICAgICBO
byBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50
b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6d2lsbEJlRGVzdHJveWVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92ZUZyb21SZW5kZXJGbG93
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxv
d1RocmVhZFdyYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVt
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Om5leHRSZW5kZXJlckZvckVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjphZGRGbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpyZW1vdmVGbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaDoKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlUG9z
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVBvc2l0aW9uOjpwcmV2aW91
c1NpYmxpbmdSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlUG9zaXRpb246
OmZsb3dUaHJlYWRJbnNlcnRpb25Db250ZXh0KToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVl
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6UmVuZGVy
VHJlZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6cGFy
ZW50KToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZWdpc3RlckVsZW1lbnRGb3JGbG93VGhyZWFkSWZOZWVkZWQpOiBXZSBuZWVkIHRv
IHJlZ2lzdGVkIHRoZSBlbGVtZW50IGV2ZW4gd2hlbiBpdCBkb2VzIG5vdCBjcmVhdGUgcmVuZGVy
ZXIgKGRpc3BsYXk6IG5vbmUpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1vdmVUb0Zsb3dUaHJlYWRJZk5l
ZWRlZCk6IERlbGV0ZWQuCisKIDIwMTYtMTEtMDcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM4Mi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA3MTBjOTdjYWRk
Y2I5NzVhNzMxMThhN2M1OTUwOWNlMmU2ZTYzN2UwLi5kMTkyMjM5ZWRmOTAxNGQzYTRlNDk3ODZh
NjUwNDNmNjI1YTJjM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCkBAIC0xMDQ0LDkgKzEwNDQsNiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkUwogCiB2
b2lkIFJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoKQogewotICAgIGlmIChhdXRvKiBj
b250YWluZXJGbG93VGhyZWFkID0gcGFyZW50KCktPnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBw
ZXIoKSkKLSAgICAgICAgY29udGFpbmVyRmxvd1RocmVhZC0+YWRkRmxvd0NoaWxkKCp0aGlzKTsK
LQogICAgIC8vIEtlZXAgb3VyIGxheWVyIGhpZXJhcmNoeSB1cGRhdGVkLiBPcHRpbWl6ZSBmb3Ig
dGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuCiAgICAgLy8g
YW5kIGRvbid0IGhhdmUgYSBsYXllciBhdHRhY2hlZCB0byBvdXJzZWx2ZXMuCiAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gbnVsbHB0cjsKQEAgLTExMjQsNyArMTEyMSw2IEBAIHZvaWQgUmVuZGVy
RWxlbWVudDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95
ZWQoKSAmJiB2aWV3KCkuaGFzUmVuZGVyTmFtZWRGbG93VGhyZWFkcygpKSB7CiAgICAgICAgIC8v
IEFmdGVyIHJlbW92ZSwgdGhlIG9iamVjdCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24g
c2hvdWxkIG5vdCBiZSBpbiBhbnkgZmxvdyB0aHJlYWQuCiAgICAgICAgIGZvciAoYXV0byYgZmxv
d1RocmVhZCA6ICp2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5yZW5kZXJOYW1lZEZsb3dU
aHJlYWRMaXN0KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghZmxvd1RocmVhZC0+aGFzQ2hpbGQo
KnRoaXMpKTsKICAgICAgICAgICAgIEFTU0VSVCghZmxvd1RocmVhZC0+aGFzQ2hpbGRJbmZvKHRo
aXMpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1MjUsMTQgKzE1MjEsNiBAQCBib29sIFJlbmRl
ckVsZW1lbnQ6OnJlcGFpbnRGb3JQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZChjb25zdCBJ
bnRSZWN0JiB2aXNpYgogICAgIHJldHVybiB0cnVlOwogfQogCi1SZW5kZXJOYW1lZEZsb3dUaHJl
YWQqIFJlbmRlckVsZW1lbnQ6OnJlbmRlck5hbWVkRmxvd1RocmVhZFdyYXBwZXIoKQotewotICAg
IGF1dG8qIHJlbmRlcmVyID0gdGhpczsKLSAgICB3aGlsZSAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
PmlzQW5vbnltb3VzQmxvY2soKSAmJiAhaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqcmVuZGVy
ZXIpKQotICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKLSAgICByZXR1cm4g
aXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihyZW5kZXJlcikgPyBkb3duY2FzdDxSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ+KHJlbmRlcmVyKSA6IG51bGxwdHI7Ci19Ci0KIGNvbnN0IFJlbmRlclN0eWxl
KiBSZW5kZXJFbGVtZW50OjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8sIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAocHNldWRvIDwg
RklSU1RfSU5URVJOQUxfUFNFVURPSUQgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRv
KSkKQEAgLTIyMDcsOCArMjE5NSw2IEBAIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5k
ZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CiB2b2lkIFJl
bmRlckVsZW1lbnQ6OnJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkKCkKIHsKICAgICBBU1NFUlQo
Zmxvd1RocmVhZFN0YXRlKCkgIT0gTm90SW5zaWRlRmxvd1RocmVhZCk7Ci0gICAgaWYgKGF1dG8q
IGNvbnRhaW5lckZsb3dUaHJlYWQgPSBwYXJlbnQoKS0+cmVuZGVyTmFtZWRGbG93VGhyZWFkV3Jh
cHBlcigpKQotICAgICAgICBjb250YWluZXJGbG93VGhyZWFkLT5yZW1vdmVGbG93Q2hpbGQoKnRo
aXMpOwogICAgIC8vIFNvbWV0aW1lcyB3ZSByZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSB0aGUgZmxv
dywgYnV0IGl0J3Mgbm90IGRlc3Ryb3llZCBhdCB0aGF0IHRpbWUuCiAgICAgLy8gSXQncyBvbmx5
IHVudGlsIGxhdGVyIHdoZW4gd2UgYWN0dWFsbHkgZGVzdHJveSBpdCBhbmQgcmVtb3ZlIGFsbCB0
aGUgY2hpbGRyZW4gZnJvbSBpdC4KICAgICAvLyBDdXJyZW50bHksIHRoYXQgaGFwcGVucyBmb3Ig
Zmlyc3RMZXR0ZXIgZWxlbWVudHMgYW5kIGxpc3QgbWFya2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDAwYjNkNzE5NGQzMDJkOWJlMjFlOTZmZDU5MWUy
NDA1OWMyNDhjMjAuLmFlM2FhMmMyMTdiOWE4ZTZlM2YyMzc5NGVkNzlmZDFmNDU4YWI5NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMTk5LDggKzE5OSw2
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BhdXNlZEltYWdlQW5pbWF0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zOyB9CiAgICAgdm9pZCBzZXRIYXNQYXVz
ZWRJbWFnZUFuaW1hdGlvbnMoYm9vbCBiKSB7IG1faGFzUGF1c2VkSW1hZ2VBbmltYXRpb25zID0g
YjsgfQogCi0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiByZW5kZXJOYW1lZEZsb3dUaHJlYWRX
cmFwcGVyKCk7Ci0KICAgICB2b2lkIHNldFJlbmRlckJveE5lZWRzTGF6eVJlcGFpbnQoYm9vbCBi
KSB7IG1fcmVuZGVyQm94TmVlZHNMYXp5UmVwYWludCA9IGI7IH0KICAgICBib29sIHJlbmRlckJv
eE5lZWRzTGF6eVJlcGFpbnQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlckJveE5lZWRzTGF6eVJl
cGFpbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAppbmRleCA5NDFiMGVhODhiNzQxNzM5MGFmYTY3YjIyMzVmMDM5ZWNhZTFm
ZTk2Li44YWYwODBhMGYxOWM3N2VlMDE3OTQ0YTMxOWIxNmQ3YzFlZjlhNmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAt
OTcsNDAgKzk3LDYgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdN
b2RlKCkKICAgICBzZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CiB9CiAKLVJlbmRlckVsZW1l
bnQqIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6bmV4dFJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtZW50KSBjb25zdAotewotICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2Zsb3dUaHJlYWRD
aGlsZExpc3QpIHsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+aXNBbm9ueW1vdXMoKSk7Ci0gICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY2hpbGQtPmVsZW1lbnQoKSwgIkNhbiBvbmx5IGJlIG51
bGwgZm9yIGFub255bW91cyByZW5kZXJlcnMiKTsKLQotICAgICAgICB1bnNpZ25lZCBzaG9ydCBw
b3NpdGlvbiA9IGVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oKmNoaWxkLT5lbGVtZW50
KCkpOwotICAgICAgICBpZiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xM
T1dJTkcpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGRGbG93Q2hpbGQoUmVu
ZGVyRWxlbWVudCYgbmV3Q2hpbGQpCi17Ci0gICAgLy8gVGhlIGNoaWxkIGxpc3QgaXMgdXNlZCB0
byBzb3J0IHRoZSBmbG93IHRocmVhZCdzIGNoaWxkcmVuIHJlbmRlciBvYmplY3RzIAotICAgIC8v
IGJhc2VkIG9uIHRoZWlyIGNvcnJlc3BvbmRpbmcgbm9kZXMgRE9NIG9yZGVyLiBUaGUgbGlzdCBp
cyBuZWVkZWQgdG8gYXZvaWQgc2VhcmNoaW5nIHRoZSB3aG9sZSBET00uCi0KLSAgICBpZiAobmV3
Q2hpbGQuaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogYmVmb3Jl
Q2hpbGQgPSBuZXh0UmVuZGVyZXJGb3JFbGVtZW50KCpuZXdDaGlsZC5lbGVtZW50KCkpOwotICAg
IGlmIChiZWZvcmVDaGlsZCkKLSAgICAgICAgbV9mbG93VGhyZWFkQ2hpbGRMaXN0Lmluc2VydEJl
Zm9yZShiZWZvcmVDaGlsZCwgJm5ld0NoaWxkKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZmxvd1Ro
cmVhZENoaWxkTGlzdC5hZGQoJm5ld0NoaWxkKTsKLX0KLQotdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OnJlbW92ZUZsb3dDaGlsZChSZW5kZXJFbGVtZW50JiBjaGlsZCkKLXsKLSAgICBtX2Zs
b3dUaHJlYWRDaGlsZExpc3QucmVtb3ZlKCZjaGlsZCk7Ci19Ci0KIGJvb2wgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpkZXBlbmRzT24oUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBvdGhlclJlbmRlckZs
b3dUaHJlYWQpIGNvbnN0CiB7CiAgICAgaWYgKG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5jb250
YWlucyhvdGhlclJlbmRlckZsb3dUaHJlYWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IDU4NDY4NmE4ZGNkMzViMDU0MjkwNGQw
NTMyMDBjMjZmOWJkYjcwMjYuLjhjMWVmMGE3YmI2YTY4ZGE1YWQ2YTQ0YmE5Y2E0OGZhYTFjMzhj
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmgKQEAgLTUzLDE1ICs1Myw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFJlbmRlclJlZ2lv
bkxpc3QmIGludmFsaWRSZW5kZXJSZWdpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV9pbnZhbGlk
UmVnaW9uTGlzdDsgfQogCi0gICAgUmVuZGVyRWxlbWVudCogbmV4dFJlbmRlcmVyRm9yRWxlbWVu
dChFbGVtZW50JikgY29uc3Q7Ci0KLSAgICB2b2lkIGFkZEZsb3dDaGlsZChSZW5kZXJFbGVtZW50
Jik7Ci0gICAgdm9pZCByZW1vdmVGbG93Q2hpbGQoUmVuZGVyRWxlbWVudCYpOwotICAgIGJvb2wg
aGFzQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAhbV9mbG93VGhyZWFkQ2hpbGRMaXN0LmlzRW1w
dHkoKTsgfQotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc0NoaWxkKFJlbmRlckVsZW1lbnQm
IGNoaWxkKSBjb25zdCB7IHJldHVybiBtX2Zsb3dUaHJlYWRDaGlsZExpc3QuY29udGFpbnMoJmNo
aWxkKTsgfQotI2VuZGlmCi0KICAgICBzdGF0aWMgUmVuZGVyQmxvY2sqIGZyYWdtZW50RnJvbVJl
bmRlckJveEFzUmVuZGVyQmxvY2soUmVuZGVyQm94KiwgY29uc3QgSW50UG9pbnQmIGFic29sdXRl
UG9pbnQsIGNvbnN0IFJlbmRlckJveCYgZmxvd2VkQm94KTsKIAogICAgIHZvaWQgcHVzaERlcGVu
ZGVuY2llcyhSZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0Jik7CkBAIC0xNDEsOSArMTMyLDYgQEAg
cHJpdmF0ZToKICAgICAvLyBlYXN5IHRvIHNvcnQgdGhlIG9yZGVyIG9mIHRocmVhZHMgbGF5b3V0
LgogICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQgbV9sYXlvdXRCZWZvcmVUaHJl
YWRzU2V0OwogCi0gICAgLy8gSG9sZHMgdGhlIHNvcnRlZCBjaGlsZHJlbiBvZiBhIG5hbWVkIGZs
b3cuIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHdlIGNhbiBnZXQgdGhlIG9yZGVyaW5nIHJpZ2h0Lgot
ICAgIExpc3RIYXNoU2V0PFJlbmRlckVsZW1lbnQqPiBtX2Zsb3dUaHJlYWRDaGlsZExpc3Q7Ci0K
ICAgICBOYW1lZEZsb3dDb250ZW50RWxlbWVudHMgbV9jb250ZW50RWxlbWVudHM7CiAKICAgICBS
ZW5kZXJSZWdpb25MaXN0IG1faW52YWxpZFJlZ2lvbkxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAppbmRleCA4ODU0ZWNjZWMzMjdlMjJiMjJkYjczZDI1
ZTc2ZGNjM2Q0M2RiMWNiLi4yYjkwZDY4NDdhNTkyODM5MzNjYWZmMGRjN2E1M2ZmMjVmOWU2NjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlUG9zaXRpb24uaCIKIAogI2luY2x1ZGUg
IkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtNjYsNyArNjcsNyBAQCBSZW5kZXJPYmplY3Qq
IFJlbmRlclRyZWVQb3NpdGlvbjo6cHJldmlvdXNTaWJsaW5nUmVuZGVyZXIoY29uc3QgVGV4dCYg
dGV4dE5vZGUpCiAgICAgYXV0byBjb21wb3NlZENoaWxkcmVuID0gY29tcG9zZWRUcmVlQ2hpbGRy
ZW4oKnBhcmVudEVsZW1lbnQpOwogICAgIGZvciAoYXV0byBpdCA9IGNvbXBvc2VkQ2hpbGRyZW4u
YXQodGV4dE5vZGUpLCBlbmQgPSBjb21wb3NlZENoaWxkcmVuLmVuZCgpOyBpdCAhPSBlbmQ7IC0t
aXQpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5yZW5kZXJlcigpOwot
ICAgICAgICBpZiAocmVuZGVyZXIgJiYgIVJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJl
cGFyZW50ZWQoKnJlbmRlcmVyKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmICFpc1JlbmRlcmVy
UmVwYXJlbnRlZCgqcmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAg
IH0KICAgICBpZiAoYXV0byogYmVmb3JlID0gcGFyZW50RWxlbWVudC0+YmVmb3JlUHNldWRvRWxl
bWVudCgpKQpAQCAtMTA0LDYgKzEwNSw1MCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVQb3Np
dGlvbjo6bmV4dFNpYmxpbmdSZW5kZXJlcihjb25zdCBOb2RlJiBub2RlKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorUmVuZGVyVHJlZVBv
c2l0aW9uIFJlbmRlclRyZWVQb3NpdGlvbjo6aW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFk
KEVsZW1lbnQqIGluc2VydGlvblBhcmVudCwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQoreworICAgIEFTU0VSVChlbGVtZW50LnNob3VsZE1vdmVUb0Zsb3dUaHJl
YWQoc3R5bGUpKTsKKyAgICBhdXRvJiBwYXJlbnRGbG93VGhyZWFkID0gZWxlbWVudC5kb2N1bWVu
dCgpLnJlbmRlclZpZXcoKS0+Zmxvd1RocmVhZENvbnRyb2xsZXIoKS5lbnN1cmVSZW5kZXJGbG93
VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKTsKKworICAgIGlmICghaW5zZXJ0aW9u
UGFyZW50KQorICAgICAgICByZXR1cm4geyBwYXJlbnRGbG93VGhyZWFkLCBudWxscHRyIH07CisK
KyAgICBhdXRvIGNvbXBvc2VkRGVzY2VuZGFudHMgPSBjb21wb3NlZFRyZWVEZXNjZW5kYW50cygq
aW5zZXJ0aW9uUGFyZW50KTsKKyAgICBhdXRvIGl0ID0gZWxlbWVudC5pc0JlZm9yZVBzZXVkb0Vs
ZW1lbnQoKSA/IGNvbXBvc2VkRGVzY2VuZGFudHMuYmVnaW4oKSA6IGNvbXBvc2VkRGVzY2VuZGFu
dHMuYXQoZWxlbWVudCk7CisgICAgYXV0byBlbmQgPSBjb21wb3NlZERlc2NlbmRhbnRzLmVuZCgp
OworICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKKyAgICAgICAgYXV0byYgY3VycmVudE5vZGUgPSAq
aXQ7CisgICAgICAgIGJvb2wgaGFzRGlzcGxheUNvbnRlbnRzID0gaXM8RWxlbWVudD4oY3VycmVu
dE5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KGN1cnJlbnROb2RlKS5oYXNEaXNwbGF5Q29udGVu
dHMoKTsKKyAgICAgICAgaWYgKGhhc0Rpc3BsYXlDb250ZW50cykgeworICAgICAgICAgICAgaXQu
dHJhdmVyc2VOZXh0KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGF1dG8qIHJlbmRlcmVyID0gY3VycmVudE5vZGUucmVuZGVyZXIoKTsKKyAgICAgICAgaWYg
KCFyZW5kZXJlcikgeworICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJl
bigpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlz
PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4
dCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBh
cmUgdGhlIGxhc3QgY2hpbGQgaW4gdGhpcyBmbG93LgorICAgICAgICBpZiAoIWlzUmVuZGVyZXJS
ZXBhcmVudGVkKCpyZW5kZXJlcikpCisgICAgICAgICAgICByZXR1cm4geyBwYXJlbnRGbG93VGhy
ZWFkLCBudWxscHRyIH07CisKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmhhc0Zsb3dJ
bnRvKCkgJiYgc3R5bGUuZmxvd1RocmVhZCgpID09IHJlbmRlcmVyLT5zdHlsZSgpLmZsb3dUaHJl
YWQoKSkKKyAgICAgICAgICAgIHJldHVybiB7IHBhcmVudEZsb3dUaHJlYWQsIGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KHJlbmRlcmVyKSB9OworICAgICAgICAvLyBOZXN0ZWQgZmxvd3MsIHNraXAu
CisgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKKyAgICB9CisgICAg
cmV0dXJuIHsgcGFyZW50Rmxvd1RocmVhZCwgbnVsbHB0ciB9OworfQorI2VuZGlmCisgICAgCiBi
b29sIFJlbmRlclRyZWVQb3NpdGlvbjo6aXNSZW5kZXJlclJlcGFyZW50ZWQoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVyLm5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRpb24uaAppbmRleCBm
Mzc5ZTkzNGU0MGNlZGM4NjEwZjYwODQxYjNhODYwMTgyNmU5Nzc2Li5iOGZiYTRjOTcxMTQ4N2Qy
Mzg1MGM2MWUyMzZkMzA0ZGE3ZWQ4Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9SZW5kZXJUcmVlUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJU
cmVlUG9zaXRpb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBSZW5kZXJUcmVlUG9zaXRp
b25faAogCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlck5hbWVk
Rmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAKQEAgLTQ1LDE1ICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAK
LSAgICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJPYmpl
Y3QqIG5leHRTaWJsaW5nKQotICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBt
X25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQotICAgICAgICAsIG1faGFzVmFsaWROZXh0U2libGlu
Zyh0cnVlKQotICAgIHsKLSAgICB9CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgIHN0YXRp
YyBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0aW9uUG9zaXRpb25Gb3JGbG93VGhyZWFkKEVsZW1l
bnQqIGluc2VydGlvblBhcmVudCwgRWxlbWVudCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJik7
CisjZW5kaWYKIAogICAgIFJlbmRlckVsZW1lbnQmIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyZW50OyB9Ci0KICAgICB2b2lkIGluc2VydChSZW5kZXJPYmplY3QmKTsKICAgICBib29sIGNh
bkluc2VydChSZW5kZXJFbGVtZW50JikgY29uc3Q7CiAgICAgYm9vbCBjYW5JbnNlcnQoUmVuZGVy
VGV4dCYpIGNvbnN0OwpAQCAtNjcsNiArNjQsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IGlzUmVuZGVyZXJSZXBhcmVudGVkKGNvbnN0IFJlbmRlck9iamVjdCYpOwogCiBwcml2YXRlOgor
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKKyAgICBSZW5kZXJUcmVlUG9zaXRpb24oUmVuZGVyRmxv
d1RocmVhZCYgcGFyZW50LCBSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5nKQorICAgICAgICA6IG1f
cGFyZW50KHBhcmVudCkKKyAgICAgICAgLCBtX25leHRTaWJsaW5nKG5leHRTaWJsaW5nKQorICAg
ICAgICAsIG1faGFzVmFsaWROZXh0U2libGluZyh0cnVlKQorICAgIHsKKyAgICB9CisjZW5kaWYK
KwogICAgIFJlbmRlckVsZW1lbnQmIG1fcGFyZW50OwogICAgIFJlbmRlck9iamVjdCogbV9uZXh0
U2libGluZyB7IG51bGxwdHIgfTsKICAgICBib29sIG1faGFzVmFsaWROZXh0U2libGluZyB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXgg
YzBiNTMzZmNiOTkzZTdkYjY1YjFkNDU4ZWJmODc2ZDljNWVjMTNjMi4uM2EzOWUyMzY3YWJmMzU4
NzhkNmM2NDk4MDVlNWM5YTFlNTVkNGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRl
clRyZWVVcGRhdGVyLmNwcApAQCAtMzA2LDM3ICszMDYsMzggQEAgdm9pZCBSZW5kZXJUcmVlVXBk
YXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIFN0eWxlOjpFbGVt
ZW50VXAKIH0KIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLXN0YXRpYyBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQqIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGF0aWMgdm9pZCByZWdpc3RlckVsZW1lbnRGb3JGbG93
VGhyZWFkSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewogICAgIGlmICghZWxlbWVudC5zaG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICAgICAgcmV0dXJuOwogICAgIEZsb3dUaHJlYWRD
b250cm9sbGVyJiBmbG93VGhyZWFkQ29udHJvbGxlciA9IGVsZW1lbnQuZG9jdW1lbnQoKS5yZW5k
ZXJWaWV3KCktPmZsb3dUaHJlYWRDb250cm9sbGVyKCk7Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkJiBwYXJlbnRGbG93UmVuZGVyZXIgPSBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5k
ZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUuZmxvd1RocmVhZCgpKTsKLSAgICBmbG93VGhyZWFk
Q29udHJvbGxlci5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGVsZW1lbnQsIHBhcmVu
dEZsb3dSZW5kZXJlcik7Ci0gICAgcmV0dXJuICZwYXJlbnRGbG93UmVuZGVyZXI7CisgICAgZmxv
d1RocmVhZENvbnRyb2xsZXIucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChlbGVtZW50
LCBmbG93VGhyZWFkQ29udHJvbGxlci5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5
bGUuZmxvd1RocmVhZCgpKSk7CiB9CiAjZW5kaWYKIAogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
Y3JlYXRlUmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKIHsK
KyAgICBhdXRvIGNvbXB1dGVJbnNlcnRpb25Qb3NpdGlvbiA9IFt0aGlzLCAmZWxlbWVudCwgJnN0
eWxlXSAoKSB7CisjaWYgRU5BQkxFKENTU19SRUdJT05TKQorICAgICAgICBpZiAoZWxlbWVudC5z
aG91bGRNb3ZlVG9GbG93VGhyZWFkKHN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBSZW5kZXJU
cmVlUG9zaXRpb246Omluc2VydGlvblBvc2l0aW9uRm9yRmxvd1RocmVhZChyZW5kZXJUcmVlUG9z
aXRpb24oKS5wYXJlbnQoKS5lbGVtZW50KCksIGVsZW1lbnQsIHN0eWxlKTsKKyNlbmRpZgorICAg
ICAgICByZW5kZXJUcmVlUG9zaXRpb24oKS5jb21wdXRlTmV4dFNpYmxpbmcoZWxlbWVudCk7Cisg
ICAgICAgIHJldHVybiByZW5kZXJUcmVlUG9zaXRpb24oKTsKKyAgICB9OworICAgIAogICAgIGlm
ICghc2hvdWxkQ3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFy
ZW50KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIHBh
cmVudEZsb3dSZW5kZXJlciA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAg
IHBhcmVudEZsb3dSZW5kZXJlciA9IG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZChlbGVtZW50LCBz
dHlsZSk7CisgICAgLy8gRXZlbiBkaXNwbGF5OiBub25lIGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVn
aXN0ZXJlZCBpbiBGbG93VGhyZWFkQ29udHJvbGxlci4KKyAgICByZWdpc3RlckVsZW1lbnRGb3JG
bG93VGhyZWFkSWZOZWVkZWQoZWxlbWVudCwgc3R5bGUpOwogI2VuZGlmCiAKICAgICBpZiAoIWVs
ZW1lbnQucmVuZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJl
bmRlclRyZWVQb3NpdGlvbigpLmNvbXB1dGVOZXh0U2libGluZyhlbGVtZW50KTsKLQotICAgIFJl
bmRlclRyZWVQb3NpdGlvbiBpbnNlcnRpb25Qb3NpdGlvbiA9IHBhcmVudEZsb3dSZW5kZXJlcgot
ICAgICAgICA/IFJlbmRlclRyZWVQb3NpdGlvbigqcGFyZW50Rmxvd1JlbmRlcmVyLCBwYXJlbnRG
bG93UmVuZGVyZXItPm5leHRSZW5kZXJlckZvckVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgIDog
cmVuZGVyVHJlZVBvc2l0aW9uKCk7Ci0KKyAgICBSZW5kZXJUcmVlUG9zaXRpb24gaW5zZXJ0aW9u
UG9zaXRpb24gPSBjb21wdXRlSW5zZXJ0aW9uUG9zaXRpb24oKTsKICAgICBSZW5kZXJFbGVtZW50
KiBuZXdSZW5kZXJlciA9IGVsZW1lbnQuY3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5
bGUpLCBpbnNlcnRpb25Qb3NpdGlvbikubGVha1B0cigpOwogICAgIGlmICghbmV3UmVuZGVyZXIp
CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>