<?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>260693</bug_id>
          
          <creation_ts>2023-08-24 20:53:38 -0700</creation_ts>
          <short_desc>[IFC] Introduce InlineItem type &apos;opaque&apos;</short_desc>
          <delta_ts>2023-08-26 08:53:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</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>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>ntim</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1973431</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-08-24 20:53:38 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973433</commentid>
    <comment_count>1</comment_count>
      <attachid>467428</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-24 20:58:41 -0700</bug_when>
    <thetext>Created attachment 467428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973449</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2023-08-24 22:07:35 -0700</bug_when>
    <thetext>What is an opaque box?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973704</commentid>
    <comment_count>3</comment_count>
      <attachid>467447</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-25 18:45:13 -0700</bug_when>
    <thetext>Created attachment 467447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973707</commentid>
    <comment_count>4</comment_count>
      <attachid>467447</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2023-08-25 18:52:31 -0700</bug_when>
    <thetext>Comment on attachment 467447
Patch

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

&gt; Source/WebCore/layout/formattingContexts/inline/InlineItem.h:39
&gt; -    enum class Type : uint8_t {
&gt; +    enum class Type : uint16_t {

I don&apos;t think this enum type needs to grow. uint8_t does fit 9 values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973711</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-08-25 18:54:50 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; Comment on attachment 467447 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=467447&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineItem.h:39
&gt; &gt; -    enum class Type : uint8_t {
&gt; &gt; +    enum class Type : uint16_t {
&gt; 
&gt; I don&apos;t think this enum type needs to grow. uint8_t does fit 9 values.
oh you are right, I was fixing some crash which ended up being the other enum and forgot to undo this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973720</commentid>
    <comment_count>6</comment_count>
      <attachid>467449</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-25 19:22:22 -0700</bug_when>
    <thetext>Created attachment 467449
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973724</commentid>
    <comment_count>7</comment_count>
      <attachid>467449</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2023-08-25 19:35:22 -0700</bug_when>
    <thetext>Comment on attachment 467449
[fast-cq]Patch

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

&gt; COMMIT_MESSAGE:13
&gt; +An opaque item:
&gt; +  - does not introduce a soft wrap opportunity
&gt; +  - does not participate in line breaking (zero logical width)
&gt; +  - has the bidi level of 0xff
&gt; +  - does not affect parent inline box/line box height
&gt; +  - does not create display box

Can we have this comment in the code? It would be helpful for someone new to this code, especially if this is not a spec concept</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973725</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-08-25 19:38:08 -0700</bug_when>
    <thetext>(In reply to Tim Nguyen (:ntim) from comment #7)
&gt; Comment on attachment 467449 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=467449&amp;action=review
&gt; 
&gt; &gt; COMMIT_MESSAGE:13
&gt; &gt; +An opaque item:
&gt; &gt; +  - does not introduce a soft wrap opportunity
&gt; &gt; +  - does not participate in line breaking (zero logical width)
&gt; &gt; +  - has the bidi level of 0xff
&gt; &gt; +  - does not affect parent inline box/line box height
&gt; &gt; +  - does not create display box
&gt; 
&gt; Can we have this comment in the code? It would be helpful for someone new to
&gt; this code, especially if this is not a spec concept
This will get clear when we start using this type for a particular box type (out-of-flow). That&apos;s a spec concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973776</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-08-26 08:52:06 -0700</bug_when>
    <thetext>Committed 267327@main (b82a10b890c0): &lt;https://commits.webkit.org/267327@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 467449.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973777</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-08-26 08:53:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/114498075&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467428</attachid>
            <date>2023-08-24 20:58:41 -0700</date>
            <delta_ts>2023-08-25 18:45:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260693-20230824205841.patch</filename>
            <type>text/plain</type>
            <size>24286</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkNzlkOGQxNTg5MmJmYmZkMzhlNmUyODI0MTgwYmU4NDJmNzllNGY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMjQgQXVnIDIwMjMgMjA6NTU6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bnRyb2R1Y2UgSW5saW5lSXRlbSB0eXBlICdvcGFxdWUnCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYwNjkzCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29u
dGVudEJyZWFrZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpoYXNMZWFkaW5nVGV4dENvbnRlbnQp
OgooV2ViQ29yZTo6TGF5b3V0Ojppc1doaXRlc3BhY2VPbmx5Q29udGVudCk6CihXZWJDb3JlOjpM
YXlvdXQ6OmlzTm9uQ29udGVudFJ1bnNPbmx5KToKKFdlYkNvcmU6OkxheW91dDo6aXNXcmFwcGFi
bGVSdW4pOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91
c0NvbnRlbnQ6OmFwcGVuZCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0RmxvYXRDb250ZW50T25seSk6CiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5OjppbmxpbmVJdGVtV2lkdGggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0Ojppc0F0U29mdFdy
YXBPcHBvcnR1bml0eSk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdHZW9tZXRy
eTo6bmV4dFdyYXBPcHBvcnR1bml0eSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbS5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJ
dGVtOjppc09wYXF1ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lSXRlbXNCdWlsZGVyOjpidWlsZCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1z
QnVpbGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKToKKFdlYkNvcmU6OkxheW91dDo6YnVpbGRCaWRp
UGFyYWdyYXBoKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kKToKKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0
OjpMaW5lOjphcHBlbmRPcGFxdWVCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpUcmltbWFi
bGVUcmFpbGluZ0NvbnRlbnQ6OnJlbW92ZSk6CihXZWJDb3JlOjpMYXlvdXQ6OnRvTGluZVJ1blR5
cGUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmUuaDoKKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjppc091dE9mRmxvd1Bvc2l0
aW9uZWQgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJv
eEJ1aWxkZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKFdl
YkNvcmU6OkxheW91dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6YXBwZW5kSW5saW5l
SXRlbSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpsZWFkaW5nUHVuY3R1YXRpb25X
aWR0aEZvckxpbmVDYW5kaWF0ZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVy
Ojp0cmFpbGluZ1B1bmN0dWF0aW9uT3JTdG9wT3JDb21tYVdpZHRoRm9yTGluZUNhbmRpYXRlIGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JM
aW5lKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KToKKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzQmlkaUNv
bnRlbnQpOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwICAgICAgICAg
ICB8IDEwICsrKystLS0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAg
ICAgICAgIHwgIDMgKystCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAg
ICAgICAgfCAxMSArKysrKysrLS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtLmggICAgfCAgOCArKysrLS0tCiAuLi4vaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAgICAgICAgICAgICAgfCAgNSArKysrKwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZS5jcHAgIHwgMjEgKysrKysrKysrKysrKysrLS0tLQogLi4uL2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oICAgIHwgIDUgKysrKy0KIC4uLi9pbmxpbmUvSW5s
aW5lTGluZUJveEJ1aWxkZXIuY3BwICAgICAgICAgICB8ICA0ICsrLS0KIC4uLi9pbmxpbmUvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0tCiAuLi4v
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICAgfCAgNCArKy0tCiAxMCBm
aWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVDb250ZW50QnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKaW5kZXggNjFjY2UxMTQzNDg5
Li5kNzhlZGM1NGU1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc0xlYWRpbmdU
ZXh0Q29udGVudChjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0MKIHsKICAg
ICBmb3IgKGF1dG8mIHJ1biA6IGNvbnRpbnVvdXNDb250ZW50LnJ1bnMoKSkgewogICAgICAgICBh
dXRvJiBpbmxpbmVJdGVtID0gcnVuLmlubGluZUl0ZW07Ci0gICAgICAgIGlmIChpbmxpbmVJdGVt
LmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCisgICAg
ICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5s
aW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbS5pc09wYXF1ZSgpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIHJldHVybiBpbmxpbmVJdGVtLmlzVGV4dCgpOwogICAgIH0KQEAgLTY1LDcg
KzY1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFjZU9ubHlDb250ZW50KGNvbnN0
IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3UKICAgICBhdXRvIGhhc1doaXRlc3BhY2Ug
PSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHJ1biA6IGNvbnRpbnVvdXNDb250ZW50LnJ1bnMoKSkg
ewogICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gcnVuLmlubGluZUl0ZW07Ci0gICAgICAgIGlm
IChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94
RW5kKCkpCisgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxp
bmVJdGVtLmlzSW5saW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbS5pc09wYXF1ZSgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8gaXNXaGl0ZXNwYWNlID0gaW5saW5lSXRlbS5p
c1RleHQoKSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkuaXNXaGl0ZXNw
YWNlKCk7CiAgICAgICAgIGlmICghaXNXaGl0ZXNwYWNlKQpAQCAtODAsNyArODAsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNOb25Db250ZW50UnVuc09ubHkoY29uc3QgSW5saW5lQ29udGVudEJy
ZWFrZXI6OkNvbnRpbnVvdXNDbwogICAgIC8vIDxzcGFuPjwvc3Bhbj4gPC0gbm9uIGNvbnRlbnQg
cnVucy4KICAgICBmb3IgKGF1dG8mIHJ1biA6IGNvbnRpbnVvdXNDb250ZW50LnJ1bnMoKSkgewog
ICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gcnVuLmlubGluZUl0ZW07Ci0gICAgICAgIGlmIChp
bmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5k
KCkpCisgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJ
dGVtLmlzSW5saW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbS5pc09wYXF1ZSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yOTEsNyArMjkx
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kVHJhaWxpbmdSdW5JbmRleChj
b25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q28KIAogc3RhdGljIGJvb2wgaXNXcmFwcGFibGVS
dW4oY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHJ1
bikKIHsKLSAgICBBU1NFUlQocnVuLmlubGluZUl0ZW0uaXNUZXh0KCkgfHwgcnVuLmlubGluZUl0
ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkg
fHwgcnVuLmlubGluZUl0ZW0ubGF5b3V0Qm94KCkuaXNJbWFnZSgpIHx8IHJ1bi5pbmxpbmVJdGVt
LmxheW91dEJveCgpLmlzTGlzdE1hcmtlckJveCgpKTsKKyAgICBBU1NFUlQocnVuLmlubGluZUl0
ZW0uaXNUZXh0KCkgfHwgcnVuLmlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5p
bmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgfHwgcnVuLmlubGluZUl0ZW0uaXNPcGFxdWUoKSB8
fCBydW4uaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc0ltYWdlKCkgfHwgcnVuLmlubGluZUl0ZW0u
bGF5b3V0Qm94KCkuaXNMaXN0TWFya2VyQm94KCkpOwogICAgIGlmICghcnVuLmlubGluZUl0ZW0u
aXNUZXh0KCkpIHsKICAgICAgICAgLy8gQ2FuJ3QgYnJlYWsgaG9yaXpvbnRhbCBzcGFjaW5nIC0+
IGUuZy4gPHNwYW4gc3R5bGU9InBhZGRpbmctcmlnaHQ6IDEwMHB4OyI+dGV4dGNvbnRlbnQ8L3Nw
YW4+LCBpZiB0aGUgW2lubGluZSBib3ggZW5kXSBpcyB0aGUgb3ZlcmZsb3duIGlubGluZSBpdGVt
CiAgICAgICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUncyBhbm90aGVyIGlubGluZSBp
dGVtIGJleW9uZCB0aGUgW2lubGluZSBib3ggZW5kXSB0byBzcGxpdC4KQEAgLTgxMSw3ICs4MTEs
NyBAQCB2b2lkIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6cmVzZXRU
cmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQoKQogCiB2b2lkIElubGluZUNvbnRlbnRCcmVha2VyOjpD
b250aW51b3VzQ29udGVudDo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiB7
Ci0gICAgQVNTRVJUKGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94
U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOworICAgIEFTU0VSVChpbmxp
bmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5l
SXRlbS5pc0lubGluZUJveEVuZCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSk7CiAgICAgbV9p
c1RleHRPbmx5Q29udGVudCA9IGZhbHNlOwogICAgIGFwcGVuZFRvUnVuTGlzdChpbmxpbmVJdGVt
LCBzdHlsZSwgbG9naWNhbFdpZHRoKTsKICAgICBpZiAoaW5saW5lSXRlbS5pc0JveCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXgg
YWM4MzM3ZGVlYTQxLi45MTU4MmZhNGY3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTIyOCw3ICsyMjgsOCBAQCB2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGbG9hdENvbnRlbnRPbmx5KGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5saW5lQwogCiAgICAgZm9yIChhdXRvJiBpbmxpbmVJdGVtIDogaW5saW5lRm9ybWF0
dGluZ1N0YXRlLmlubGluZUl0ZW1zKCkpIHsKICAgICAgICAgaWYgKCFpbmxpbmVJdGVtLmlzRmxv
YXQoKSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAv
LyBGSVhNRSEhIQorICAgICAgICAgICAgQVNTRVJUKGlubGluZUl0ZW0uaXNPcGFxdWUoKSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBhdXRvJiBmbG9hdEJveCA9
IGlubGluZUl0ZW0ubGF5b3V0Qm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAyNjhjMzZkNzI3ODMuLmJmZDhlZWZkMTcwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
CkBAIC01MjgsNiArNTI4LDkgQEAgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnk6OmlubGluZUl0ZW1XaWR0aChjb25zdCBJbmxpbmVJdGVtJiBpbmwKICAgICBpZiAoaW5s
aW5lSXRlbS5pc0lubGluZUJveEVuZCgpKQogICAgICAgICByZXR1cm4gYm94R2VvbWV0cnkubWFy
Z2luRW5kKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJFbmQoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdF
bmQoKS52YWx1ZV9vcigwKTsKIAorICAgIGlmIChpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCisgICAg
ICAgIHJldHVybiB7IH07CisKICAgICAvLyBGSVhNRTogVGhlIG92ZXJoYW5nIHNob3VsZCBiZSBj
b21wdXRlZCB0byBub3Qgb3ZlcmxhcCB0aGUgbmVpZ2hib3JpbmcgcnVucyBvciBvdmVyZmxvdyB0
aGUgbGluZS4KICAgICBpZiAoYXV0byogcnVieUFkanVzdG1lbnRzID0gbGF5b3V0Qm94LnJ1YnlB
ZGp1c3RtZW50cygpKSB7CiAgICAgICAgIGF1dG8mIG92ZXJoYW5nID0gdXNlRmlyc3RMaW5lU3R5
bGUgPyBydWJ5QWRqdXN0bWVudHMtPmZpcnN0TGluZU92ZXJoYW5nIDogcnVieUFkanVzdG1lbnRz
LT5vdmVyaGFuZzsKQEAgLTU3MSw4ICs1NzQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNv
ZnRXcmFwT3Bwb3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbSYgY3VycmVudCwgY29uc3QgSW5saQog
ICAgIC8vIGUuZy4gW2lubGluZSBib3ggc3RhcnRdW3ByaW9yX2NvbnRpbnVvdXNfY29udGVudF1b
aW5saW5lIGJveCBlbmRdICg8c3Bhbj5wcmlvcl9jb250aW51b3VzX2NvbnRlbnQ8L3NwYW4+KQog
ICAgIC8vIEFuIGluY29taW5nIDxpbWc+IGJveCB3b3VsZCBlbmFibGUgdXMgdG8gY29tbWl0IHRo
ZSAiPHNwYW4+cHJpb3JfY29udGludW91c19jb250ZW50PC9zcGFuPiIgY29udGVudAogICAgIC8v
IGJ1dCBhbiBpbmNvbWluZyB0ZXh0IGNvbnRlbnQgd291bGQgbm90IG5lY2Vzc2FyaWx5LgotICAg
IEFTU0VSVChjdXJyZW50LmlzVGV4dCgpIHx8IGN1cnJlbnQuaXNCb3goKSk7Ci0gICAgQVNTRVJU
KG5leHQuaXNUZXh0KCkgfHwgbmV4dC5pc0JveCgpKTsKKyAgICBBU1NFUlQoY3VycmVudC5pc1Rl
eHQoKSB8fCBjdXJyZW50LmlzQm94KCkgfHwgY3VycmVudC5pc09wYXF1ZSgpKTsKKyAgICBBU1NF
UlQobmV4dC5pc1RleHQoKSB8fCBuZXh0LmlzQm94KCkgfHwgbmV4dC5pc09wYXF1ZSgpKTsKICAg
ICBpZiAoY3VycmVudC5pc1RleHQoKSAmJiBuZXh0LmlzVGV4dCgpKSB7CiAgICAgICAgIGF1dG8m
IGN1cnJlbnRJbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihjdXJyZW50
KTsKICAgICAgICAgYXV0byYgbmV4dElubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4
dEl0ZW0+KG5leHQpOwpAQCAtNjAwLDYgKzYwMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0F0
U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiBjdXJyZW50LCBjb25zdCBJbmxp
CiAgICAgICAgIC8vIFt0ZXh0LV1bdGV4dF0gOiBhZnRlciBbaHlwaGVuXSBwb3NpdGlvbiBpcyBh
IHNvZnQgd3JhcCBvcHBvcnR1bml0eS4KICAgICAgICAgcmV0dXJuIGVuZHNXaXRoU29mdFdyYXBP
cHBvcnR1bml0eShjdXJyZW50SW5saW5lVGV4dEl0ZW0sIG5leHRJbmxpbmVUZXh0SXRlbSk7CiAg
ICAgfQorICAgIGlmIChjdXJyZW50LmlzT3BhcXVlKCkgfHwgbmV4dC5pc09wYXF1ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGN1cnJlbnQubGF5b3V0Qm94KCkuaXNMaXN0TWFy
a2VyQm94KCkgfHwgbmV4dC5sYXlvdXRCb3goKS5pc0xpc3RNYXJrZXJCb3goKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKGN1cnJlbnQuaXNCb3goKSB8fCBuZXh0LmlzQm94KCkpIHsK
QEAgLTYzNSw3ICs2NDAsNyBAQCBzaXplX3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpuZXh0
V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydEluZGV4LCBjb25zdCBJbgogICAgICAgICAgICAg
Ly8gTmVlZCB0byBzZWUgd2hhdCBjb21lcyBuZXh0IHRvIGRlY2lkZS4KICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChpbmxpbmVJdGVtLmlzVGV4dCgpIHx8
IGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzRmxvYXQoKSk7CisgICAgICAgIEFT
U0VSVChpbmxpbmVJdGVtLmlzVGV4dCgpIHx8IGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJ
dGVtLmlzRmxvYXQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpOwogICAgICAgICBpZiAoaW5s
aW5lSXRlbS5pc0Zsb2F0KCkpIHsKICAgICAgICAgICAgIC8vIFdoaWxlIGZsb2F0cyBhcmUgbm90
IHBhcnQgb2YgdGhlIGlubGluZSBjb250ZW50IGFuZCB0aGV5IGFyZSBub3Qgc3VwcG9zZWQgdG8g
aW50cm9kdWNlIHNvZnQgd3JhcCBvcHBvcnR1bml0aWVzLAogICAgICAgICAgICAgLy8gZS5nLiBb
dGV4dF1bZmxvYXQgYm94XVtmbG9hdCBib3hdW3RleHRdW2Zsb2F0IGJveF1bdGV4dF0gaXMgZXNz
ZW50aWFsbHkganVzdCBbdGV4dF1bdGV4dF1bdGV4dF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaApp
bmRleCA2NmUwMGI2YWMyOTQuLjNjMTY4ZWMxNzk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0u
aApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbmxpbmVJdGVtc0J1aWxkZXI7CiAKIGNsYXNzIElu
bGluZUl0ZW0gewogcHVibGljOgotICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAg
IGVudW0gY2xhc3MgVHlwZSA6IHVpbnQxNl90IHsKICAgICAgICAgVGV4dCwKICAgICAgICAgSGFy
ZExpbmVCcmVhaywKICAgICAgICAgU29mdExpbmVCcmVhaywKQEAgLTQ0LDcgKzQ0LDggQEAgcHVi
bGljOgogICAgICAgICBCb3gsCiAgICAgICAgIElubGluZUJveFN0YXJ0LAogICAgICAgICBJbmxp
bmVCb3hFbmQsCi0gICAgICAgIEZsb2F0CisgICAgICAgIEZsb2F0LAorICAgICAgICBPcGFxdWUK
ICAgICB9OwogICAgIElubGluZUl0ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIFR5cGUsIFVCaURp
TGV2ZWwgPSBVQklESV9ERUZBVUxUX0xUUik7CiAKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNIYXJkTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFR5cGU6
OkhhcmRMaW5lQnJlYWs7IH0KICAgICBib29sIGlzSW5saW5lQm94U3RhcnQoKSBjb25zdCB7IHJl
dHVybiB0eXBlKCkgPT0gVHlwZTo6SW5saW5lQm94U3RhcnQ7IH0KICAgICBib29sIGlzSW5saW5l
Qm94RW5kKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFR5cGU6OklubGluZUJveEVuZDsgfQor
ICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6T3BhcXVl
OyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElubGluZUl0ZW1zQnVpbGRlcjsKQEAg
LTgyLDcgKzg0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVQmlEaUxldmVsIG1fYmlk
aUxldmVsIHsgVUJJRElfREVGQVVMVF9MVFIgfTsKIAotICAgIFR5cGUgbV90eXBlIDogMyB7IH07
CisgICAgVHlwZSBtX3R5cGUgOiA0IHsgfTsKIAogcHJvdGVjdGVkOgogICAgIC8vIEZvciBJbmxp
bmVUZXh0SXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAKaW5k
ZXggOWRkYzEwZDViNWU3Li43NTdjNjBlOGJiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lSXRlbXNCdWlsZGVyLmNwcApAQCAtMjM2LDYgKzIzNiw3IEBAIHZvaWQgSW5saW5lSXRlbXNC
dWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBGb3Jt
YXR0aW5nCiAgICAgICAgICAgICAgICAgLy8gTGV0J3Mgbm90IGNvbnN0cnVjdCBJbmxpbmVJdGVt
cyBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBhcyB0aGV5IGRvbid0IHBhcnRpY2lwYXRlIGluIHRo
ZSBpbmxpbmUgbGF5b3V0LgogICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIgdG8gYmUgYWJsZSB0
byBzdGF0aWMgcG9zaXRpb25pbmcgdGhlbSwgd2UgbmVlZCB0byBjb21wdXRlIHRoZWlyIGFwcHJv
eGltYXRlIHBvc2l0aW9ucy4KICAgICAgICAgICAgICAgICBvdXRPZkZsb3dCb3hlcy5hcHBlbmQo
bGF5b3V0Qm94KTsKKyAgICAgICAgICAgICAgICBtX2lzTm9uQmlkaVRleHRBbmRGb3JjZWRMaW5l
QnJlYWtPbmx5Q29udGVudCA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRC
b3gtPmlzSW5saW5lVGV4dEJveCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgaW5saW5lVGV4
dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KGxheW91dEJveCk7CiAgICAgICAgICAgICAg
ICAgaGFuZGxlVGV4dENvbnRlbnQoaW5saW5lVGV4dEJveCwgaW5saW5lSXRlbXMsIHBhcnRpYWxD
b250ZW50T2Zmc2V0KGlubGluZVRleHRCb3gpKTsKQEAgLTQ2MCw4ICs0NjEsMTIgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGJ1aWxkQmlkaVBhcmFncmFwaChjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0
eWxlLCBjb25zdCBJbmxpbmUKICAgICAgICAgfSBlbHNlIGlmIChpbmxpbmVJdGVtLmlzRmxvYXQo
KSkgewogICAgICAgICAgICAgLy8gRmxvYXRzIGFyZSBub3QgcGFydCBvZiB0aGUgaW5saW5lIGNv
bnRlbnQgd2hpY2ggbWFrZSB0aGVtIG9wYXF1ZSB0byBiaWRpLgogICAgICAgICAgICAgaW5saW5l
SXRlbU9mZnNldExpc3QudW5jaGVja2VkQXBwZW5kKHsgfSk7CisgICAgICAgIH0gZWxzZSBpZiAo
aW5saW5lSXRlbS5pc09wYXF1ZSgpKSB7CisgICAgICAgICAgICAvLyBvcGFxdWUgaXRlbXMgYXJl
IGFsc28gb3BhcXVlIHRvIGJpZGkuCisgICAgICAgICAgICBpbmxpbmVJdGVtT2Zmc2V0TGlzdC51
bmNoZWNrZWRBcHBlbmQoeyB9KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX0lNUExFTUVOVEVEX1lFVCgpOworCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmUuY3BwCmluZGV4IGFhNmMwZmY5Y2NkZC4uZDkwOTUwZDFhNWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lLmNwcApAQCAtMzYwLDYgKzM2MCwxMCBAQCB2b2lkIExpbmU6OmFwcGVuZChjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElubGlu
ZQogICAgICAgICBhcHBlbmRSZXBsYWNlZElubGluZUxldmVsQm94KGlubGluZUl0ZW0sIHN0eWxl
LCBsb2dpY2FsV2lkdGgpOwogICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNCb3goKSkKICAgICAg
ICAgYXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVMZXZlbEJveChpbmxpbmVJdGVtLCBzdHlsZSwgbG9n
aWNhbFdpZHRoKTsKKyAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzT3BhcXVlKCkpIHsKKyAgICAg
ICAgQVNTRVJUKCFsb2dpY2FsV2lkdGgpOworICAgICAgICBhcHBlbmRPcGFxdWVCb3goaW5saW5l
SXRlbSwgc3R5bGUpOworICAgIH0KICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIG1faGFzTm9uRGVmYXVsdEJpZGlMZXZlbFJ1biA9IG1faGFzTm9uRGVmYXVsdEJp
ZGlMZXZlbFJ1biB8fCBpbmxpbmVJdGVtLmJpZGlMZXZlbCgpICE9IFVCSURJX0RFRkFVTFRfTFRS
OwpAQCAtNDM5LDcgKzQ0Myw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3Qg
SW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBjb25zdCBSZW5kZXJTCiAgICAgICAgICAg
ICAvLyBwcm92aWRlZCBib3RoIHNwYWNlcyBhcmUgd2l0aGluIHRoZSBzYW1lIGlubGluZSBmb3Jt
YXR0aW5nIGNvbnRleHTigJRpcyBjb2xsYXBzZWQgdG8gaGF2ZSB6ZXJvIGFkdmFuY2Ugd2lkdGgu
CiAgICAgICAgICAgICBpZiAocnVuLmlzVGV4dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBy
dW4uaGFzQ29sbGFwc2libGVUcmFpbGluZ1doaXRlc3BhY2UoKTsKLSAgICAgICAgICAgIEFTU0VS
VChydW4uaXNMaXN0TWFya2VyKCkgfHwgcnVuLmlzTGluZVNwYW5uaW5nSW5saW5lQm94U3RhcnQo
KSB8fCBydW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGluZUJveEVuZCgpIHx8IHJ1
bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpOworICAgICAgICAgICAgQVNTRVJUKHJ1bi5pc0xp
c3RNYXJrZXIoKSB8fCBydW4uaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5p
c0lubGluZUJveFN0YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94RW5kKCkgfHwgcnVuLmlzV29yZEJy
ZWFrT3Bwb3J0dW5pdHkoKSB8fCBydW4uaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogICAgICAg
ICB9CiAgICAgICAgIC8vIExlYWRpbmcgd2hpdGVzcGFjZS4KICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC02NzEsNiArNjc1LDExIEBAIHZvaWQgTGluZTo6YXBwZW5kV29yZEJyZWFrT3Bwb3J0dW5p
dHkoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVyCiAgICAgbV9ydW5z
LmFwcGVuZCh7IGlubGluZUl0ZW0sIHN0eWxlLCBsYXN0UnVuTG9naWNhbFJpZ2h0KCkgfSk7CiB9
CiAKK3ZvaWQgTGluZTo6YXBwZW5kT3BhcXVlQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBtX3J1bnMuYXBwZW5kKHsgaW5s
aW5lSXRlbSwgc3R5bGUsIGxhc3RSdW5Mb2dpY2FsUmlnaHQoKSB9KTsKK30KKwogSW5saW5lTGF5
b3V0VW5pdCBMaW5lOjphZGRCb3JkZXJBbmRQYWRkaW5nRW5kRm9ySW5saW5lQm94RGVjb3JhdGlv
bkNsb25lKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUJveFN0YXJ0SXRlbSkKIHsKICAgICBBU1NF
UlQoaW5saW5lQm94U3RhcnRJdGVtLmlzSW5saW5lQm94U3RhcnQoKSk7CkBAIC03OTgsNyArODA3
LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lOjpUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQ6OnJl
bW92ZSgpCiAgICAgLy8gbm90IHByb2R1Y2UgYSBydW4gc2luY2UgaW4gOjphcHBlbmRUZXh0KCkg
d2Ugc2VlIGl0IGFzIGEgZnVsbHkgdHJpbW1hYmxlIHJ1bi4KICAgICBmb3IgKGF1dG8gaW5kZXgg
PSAqbV9maXJzdFRyaW1tYWJsZVJ1bkluZGV4ICsgMTsgaW5kZXggPCBtX3J1bnMuc2l6ZSgpOyAr
K2luZGV4KSB7CiAgICAgICAgIGF1dG8mIHJ1biA9IG1fcnVuc1tpbmRleF07Ci0gICAgICAgIEFT
U0VSVChydW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpIHx8IHJ1bi5pc0xpbmVTcGFubmluZ0lu
bGluZUJveFN0YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxpbmVC
b3hFbmQoKSB8fCBydW4uaXNMaW5lQnJlYWsoKSk7CisgICAgICAgIEFTU0VSVChydW4uaXNXb3Jk
QnJlYWtPcHBvcnR1bml0eSgpIHx8IHJ1bi5pc0xpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0KCkg
fHwgcnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxpbmVCb3hFbmQoKSB8fCBydW4u
aXNMaW5lQnJlYWsoKSB8fCBydW4uaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogICAgICAgICBy
dW4ubW92ZUhvcml6b250YWxseSgtdHJpbW1lZFdpZHRoKTsKICAgICB9CiAgICAgaWYgKCF0cmlt
bWFibGVSdW4udGV4dENvbnRlbnQoKS0+bGVuZ3RoKSB7CkBAIC04MzMsMTAgKzg0MiwxNCBAQCBp
bmxpbmUgc3RhdGljIExpbmU6OlJ1bjo6VHlwZSB0b0xpbmVSdW5UeXBlKGNvbnN0IElubGluZUl0
ZW0mIGlubGluZUl0ZW0pCiAgICAgICAgIHJldHVybiBMaW5lOjpSdW46OlR5cGU6OklubGluZUJv
eFN0YXJ0OwogICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6SW5saW5lQm94RW5kOgogICAgICAg
ICByZXR1cm4gTGluZTo6UnVuOjpUeXBlOjpJbmxpbmVCb3hFbmQ7CisgICAgY2FzZSBJbmxpbmVJ
dGVtOjpUeXBlOjpPcGFxdWU6CisgICAgICAgIGlmIChpbmxpbmVJdGVtLmxheW91dEJveCgpLmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgcmV0dXJuIExpbmU6OlJ1bjo6VHlw
ZTo6T3V0T2ZGbG93UG9zaXRpb25lZDsKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQotICAgIHJldHVybiB7
IH07CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGluZTo6UnVuOjpUcmFpbGluZ1doaXRlc3BhY2U6OlR5
cGU+IExpbmU6OlJ1bjo6dHJhaWxpbmdXaGl0ZXNwYWNlVHlwZShjb25zdCBJbmxpbmVUZXh0SXRl
bSYgaW5saW5lVGV4dEl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKaW5kZXggYWM5YTk3NDQ5
YTU2Li4yNzc0YjA5ODAwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKQEAgLTg2LDcgKzg2
LDggQEAgcHVibGljOgogICAgICAgICAgICAgTGlzdE1hcmtlck91dHNpZGUsCiAgICAgICAgICAg
ICBJbmxpbmVCb3hTdGFydCwKICAgICAgICAgICAgIElubGluZUJveEVuZCwKLSAgICAgICAgICAg
IExpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0CisgICAgICAgICAgICBMaW5lU3Bhbm5pbmdJbmxp
bmVCb3hTdGFydCwKKyAgICAgICAgICAgIE91dE9mRmxvd1Bvc2l0aW9uZWQKICAgICAgICAgfTsK
IAogICAgICAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpU
ZXh0IHx8IGlzV29yZFNlcGFyYXRvcigpIHx8IGlzTm9uQnJlYWtpbmdTcGFjZSgpOyB9CkBAIC0x
MDQsNiArMTA1LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlzSW5saW5lQm94U3RhcnQoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94U3RhcnQ7IH0KICAgICAgICAg
Ym9vbCBpc0xpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6OkxpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0OyB9CiAgICAgICAgIGJvb2wgaXNJ
bmxpbmVCb3hFbmQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94RW5k
OyB9CisgICAgICAgIGJvb2wgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFR5cGU6Ok91dE9mRmxvd1Bvc2l0aW9uZWQ7IH0KIAogICAgICAgICBib29sIGlz
Q29udGVudGZ1bCgpIGNvbnN0IHsgcmV0dXJuIChpc1RleHQoKSAmJiB0ZXh0Q29udGVudCgpLT5s
ZW5ndGgpIHx8IGlzQm94KCkgfHwgaXNMaW5lQnJlYWsoKSB8fCBpc0xpc3RNYXJrZXIoKTsgfQog
ICAgICAgICBib29sIGlzR2VuZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gaXNMaXN0TWFya2VyKCk7
IH0KQEAgLTIwOSw2ICsyMTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kSW5saW5lQm94
RW5kKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVu
aXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lkIGFwcGVuZExpbmVCcmVhayhjb25zdCBJbmxpbmVJ
dGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIGFwcGVuZFdvcmRCcmVha09wcG9y
dHVuaXR5KGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHZvaWQg
YXBwZW5kT3BhcXVlQm94KGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYpOwog
CiAgICAgSW5saW5lTGF5b3V0VW5pdCBhZGRCb3JkZXJBbmRQYWRkaW5nRW5kRm9ySW5saW5lQm94
RGVjb3JhdGlvbkNsb25lKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUJveFN0YXJ0SXRlbSk7CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCByZW1vdmVCb3JkZXJBbmRQYWRkaW5nRW5kRm9ySW5saW5lQm94
RGVjb3JhdGlvbkNsb25lKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUJveEVuZEl0ZW0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCmluZGV4IDFjMmE4ZjY5
MjgzZC4uNjI1MjRlYzNlOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJv
eEJ1aWxkZXIuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29u
c3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94KQogICAgICAgICAgICAgQVNT
RVJUKCFsaW5lSGFzQ29udGVudCk7CiAgICAgICAgICAgICBpZiAocnVuLmlzQ29udGVudGZ1bCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKHJ1bi5pc1Rl
eHQoKSB8fCBydW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKQorICAgICAgICAgICAgaWYgKHJ1
bi5pc1RleHQoKSB8fCBydW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpIHx8IHJ1bi5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgICAgIEFTU0VSVChydW4uaXNJbmxpbmVCb3goKSk7CkBAIC00NTUsNyArNDU1LDcgQEAgdm9p
ZCBMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5l
Qm94KQogICAgICAgICAgICAgbGluZUJveC5hZGRJbmxpbmVMZXZlbEJveChJbmxpbmVMZXZlbEJv
eDo6Y3JlYXRlR2VuZXJpY0lubGluZUxldmVsQm94KGxheW91dEJveCwgc3R5bGUsIGxvZ2ljYWxM
ZWZ0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQVNTRVJUKHJ1bi5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSk7CiAgICAgfQogICAgIGxpbmVCb3guc2V0SGFzQ29udGVudChsaW5lSGFzQ29udGVudCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggYTE3N2FlYmVl
NmY4Li4xYzNiMzEzNmM0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAKQEAgLTE2NCw5ICsxNjQsOSBAQCBzdHJ1Y3QgTGluZUNhbmRpZGF0ZSB7CiAKIGlubGlu
ZSB2b2lkIExpbmVDYW5kaWRhdGU6OklubGluZUNvbnRlbnQ6OmFwcGVuZElubGluZUl0ZW0oY29u
c3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxp
bmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKLSAgICBBU1NFUlQoaW5saW5lSXRlbS5pc1Rl
eHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0
KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKTsKKyAgICBBU1NFUlQoaW5saW5lSXRl
bS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJv
eFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8IGlubGluZUl0ZW0uaXNP
cGFxdWUoKSk7CiAKLSAgICBpZiAoaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKKyAgICBpZiAo
aW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlu
bGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAg
ICAgIHJldHVybiBtX2NvbnRpbnVvdXNDb250ZW50LmFwcGVuZChpbmxpbmVJdGVtLCBzdHlsZSwg
bG9naWNhbFdpZHRoKTsKIAogICAgIGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpKQpAQCAtNDkyLDcg
KzQ5Miw3IEBAIElubGluZUxheW91dFVuaXQgTGluZUJ1aWxkZXI6OmxlYWRpbmdQdW5jdHVhdGlv
bldpZHRoRm9yTGluZUNhbmRpYXRlKHNpemVfdCBmaXJzCiAgICAgICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gZmlyc3RJbmxpbmVUZXh0SXRlbUluZGV4OyBpbmRleC0tID4gY2FuZGlkYXRlQ29udGVu
dFN0YXJ0SW5kZXg7KSB7CiAgICAgICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gbV9pbmxpbmVJ
dGVtc1tpbmRleF07CiAgICAgICAgICAgICBBU1NFUlQoIWlubGluZUl0ZW0uaXNUZXh0KCkgJiYg
IWlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSAmJiAhaW5saW5lSXRlbS5pc1dvcmRCcmVha09wcG9y
dHVuaXR5KCkpOwotICAgICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpKQorICAgICAg
ICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8gaXNDb250ZW50ZnVs
ID0gaW5saW5lSXRlbS5pc0JveCgpCiAgICAgICAgICAgICAgICAgfHwgKGlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hTdGFydCgpICYmIGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5s
aW5lSXRlbS5sYXlvdXRCb3goKSkubWFyZ2luQm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCkpCkBAIC01
MjMsNyArNTIzLDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQnVpbGRlcjo6dHJhaWxpbmdQdW5j
dHVhdGlvbk9yU3RvcE9yQ29tbWFXaWR0aEZvckxpbmVDYW5kaWEKICAgICAgICAgZm9yIChhdXRv
IGluZGV4ID0gbGFzdElubGluZVRleHRJdGVtSW5kZXggKyAxOyBpbmRleCA8IGxheW91dFJhbmdl
RW5kOyArK2luZGV4KSB7CiAgICAgICAgICAgICBhdXRvIGlzQ29udGVudGZ1bElubGluZUl0ZW0g
PSBbJl0gewogICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBtX2lubGluZUl0ZW1z
W2luZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoaW5saW5lSXRlbS5pc0Zsb2F0KCkpCisgICAg
ICAgICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpIHx8IGlubGluZUl0ZW0uaXNPcGFx
dWUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGlu
bGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pOwpAQCAt
NjIzLDYgKzYyMywxMCBAQCB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGlu
ZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzaXplX3QgYwogICAgICAgICAgICAgaW5s
aW5lSXRlbS5pc0xpbmVCcmVhaygpID8gbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmFwcGVu
ZFRyYWlsaW5nTGluZUJyZWFrKGlubGluZUl0ZW0pIDogbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250
ZW50LmFwcGVuZHRyYWlsaW5nV29yZEJyZWFrT3Bwb3J0dW5pdHkoaW5saW5lSXRlbSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBpZiAoaW5saW5lSXRlbS5pc09w
YXF1ZSgpKSB7CisgICAgICAgICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5k
SW5saW5lSXRlbShpbmxpbmVJdGVtLCBzdHlsZSwgeyB9KTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBs
aW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuc2V0QWNjdW11bGF0ZWRDbG9uZWREZWNvcmF0aW9u
RW5kKGFjY3VtdWxhdGVkRGVjb3JhdGlvbkVuZFdpZHRoKTsKQEAgLTY3MSw4ICs2NzUsOCBAQCB2
b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBs
aW5lQ2FuZGlkYXRlLCBzaXplX3QgYwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHRyYWlsaW5nSW5saW5lSXRlbS5pc0lubGlu
ZUJveFN0YXJ0KCkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hl
biB0aGUgaW5saW5lIGJveCdzIGZpc3QgY2hpbGQgaXMgYSBmbG9hdCBib3guCisgICAgICAgIGlm
ICh0cmFpbGluZ0lubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHRyYWlsaW5nSW5saW5l
SXRlbS5pc09wYXF1ZSgpKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNl
IHdoZW4gdGhlIGlubGluZSBib3gncyBmaXN0IGNoaWxkIGlzIGFuIG91ci1vZi1mbG93L2Zsb2F0
IGJveC4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCAxZDRkYjViNDcxYTQu
Ljc5OWQzMTJjMDZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtNDk2LDcgKzQ5Niw3IEBA
IHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQo
Y29uc3QgTGluZUxheW91dFJlc3VsdCYKICAgICAgICAgICAgICAgICAsIGJveGVzKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChsaW5lUnVuLmlzSW5s
aW5lQm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpOworICAgICAg
ICBBU1NFUlQobGluZVJ1bi5pc0lubGluZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJlYWtP
cHBvcnR1bml0eSgpIHx8IGxpbmVSdW4uaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogICAgIH0K
IH0KIApAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
Ojpwcm9jZXNzQmlkaUNvbnRlbnQoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluCiAgICAgICAg
ICAgICBhdXRvJiBsaW5lUnVuID0gaW5saW5lQ29udGVudFt2aXN1YWxPcmRlcl07CiAgICAgICAg
ICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwogCi0gICAgICAgICAg
ICBhdXRvIG5lZWRzRGlzcGxheUJveCA9ICFsaW5lUnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHko
KSAmJiAhbGluZVJ1bi5pc0lubGluZUJveEVuZCgpOworICAgICAgICAgICAgYXV0byBuZWVkc0Rp
c3BsYXlCb3ggPSAhbGluZVJ1bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkgJiYgIWxpbmVSdW4u
aXNJbmxpbmVCb3hFbmQoKSAmJiAhbGluZVJ1bi5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsKICAg
ICAgICAgICAgIGlmICghbmVlZHNEaXNwbGF5Qm94KQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467447</attachid>
            <date>2023-08-25 18:45:13 -0700</date>
            <delta_ts>2023-08-25 19:22:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260693-20230825184512.patch</filename>
            <type>text/plain</type>
            <size>41229</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBmNjE4NDgzZTk4MTg5Yzk2NjNhOTA0OTkwZGEzZmU0ZDIxYTVmY2QxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMjQgQXVnIDIwMjMgMjA6NTU6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bnRyb2R1Y2UgSW5saW5lSXRlbSB0eXBlICdvcGFxdWUnCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYwNjkzCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRo
aXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGltcGxlbWVudGluZyBvdXQtb2YtZmxvdyBzdGF0aWMg
cG9zaXRpb25pbmcgYnkgcGxhY2luZyBvcGFxdWUgaXRlbXMgb24gdGhlIGxpbmUuCgpBbiBvcGFx
dWUgaXRlbToKICAtIGRvZXMgbm90IGludHJvZHVjZSBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eQog
IC0gZG9lcyBub3QgcGFydGljaXBhdGUgaW4gbGluZSBicmVha2luZyAoemVybyBsb2dpY2FsIHdp
ZHRoKQogIC0gaGFzIHRoZSBiaWRpIGxldmVsIG9mIDB4ZmYKICAtIGRvZXMgbm90IGFmZmVjdCBw
YXJlbnQgaW5saW5lIGJveC9saW5lIGJveCBoZWlnaHQKICAtIGRvZXMgbm90IGNyZWF0ZSBkaXNw
bGF5IGJveAoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6Omhhc0xlYWRpbmdU
ZXh0Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OmlzV2hpdGVzcGFjZU9ubHlDb250ZW50KToK
KFdlYkNvcmU6OkxheW91dDo6aXNOb25Db250ZW50UnVuc09ubHkpOgooV2ViQ29yZTo6TGF5b3V0
Ojppc1dyYXBwYWJsZVJ1bik6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2Vy
OjpDb250aW51b3VzQ29udGVudDo6YXBwZW5kKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGbG9hdENvbnRlbnRP
bmx5KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnk6OmlubGluZUl0ZW1XaWR0aCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6
OmlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtLmg6CihXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUl0ZW06OmlzT3BhcXVlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lSXRlbXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMpOgooV2ViQ29yZTo6TGF5b3V0
OjpidWlsZEJpZGlQYXJhZ3JhcGgpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjph
cHBlbmQpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRUZXh0Q29udGVudCk6CihXZWJD
b3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZE9wYXF1ZUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OlRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDo6cmVtb3ZlKToKKFdlYkNvcmU6OkxheW91dDo6
dG9MaW5lUnVuVHlwZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmlzT3V0
T2ZGbG93UG9zaXRpb25lZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyk6CiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50Ojph
cHBlbmRJbmxpbmVJdGVtKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmxlYWRpbmdQ
dW5jdHVhdGlvbldpZHRoRm9yTGluZUNhbmRpYXRlIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6
TGluZUJ1aWxkZXI6OnRyYWlsaW5nUHVuY3R1YXRpb25PclN0b3BPckNvbW1hV2lkdGhGb3JMaW5l
Q2FuZGlhdGUgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2FuZGlkYXRl
Q29udGVudEZvckxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNv
bnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnBy
b2Nlc3NCaWRpQ29udGVudCk6Ci0tLQogLi4uL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5j
cHAgICAgICAgICAgIHwgIDM3ICsrKystLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwICAgICAgICB8ICAyOSArKystLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwICAgICAgIHwgIDM4ICsrKystLS0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUl0ZW0uaCAgICB8ICAgOCArLQogLi4uL2lubGluZS9JbmxpbmVJdGVtc0J1
aWxkZXIuY3BwICAgICAgICAgICAgIHwgICA0ICsKIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmUuY3BwICB8ICAxOSArKystCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lLmggICAgfCAgIDUgKy0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveEJ1
aWxkZXIuY3BwICAgICAgICAgICB8ICAgNCArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgICAgICAgICAgICAgIHwgMTAyICsrKysrKysrKystLS0tLS0tLQogLi4uL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCAgIHwgIDEyICsrLQogMTAgZmlsZXMgY2hh
bmdlZCwgMTU5IGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCA2MWNjZTExNDM0ODkuLjdmYzYy
MTQxOTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzTGVhZGluZ1RleHRDb250
ZW50KGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQwogewogICAgIGZvciAo
YXV0byYgcnVuIDogY29udGludW91c0NvbnRlbnQucnVucygpKSB7CiAgICAgICAgIGF1dG8mIGlu
bGluZUl0ZW0gPSBydW4uaW5saW5lSXRlbTsKLSAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxp
bmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKKyAgICAgICAgaWYg
KGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hF
bmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgcmV0dXJuIGlubGluZUl0ZW0uaXNUZXh0KCk7CiAgICAgfQpAQCAtNjUsNyArNjUsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlT25seUNvbnRlbnQoY29uc3QgSW5saW5l
Q29udGVudEJyZWFrZXI6OkNvbnRpbnVvdQogICAgIGF1dG8gaGFzV2hpdGVzcGFjZSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgcnVuIDogY29udGludW91c0NvbnRlbnQucnVucygpKSB7CiAgICAg
ICAgIGF1dG8mIGlubGluZUl0ZW0gPSBydW4uaW5saW5lSXRlbTsKLSAgICAgICAgaWYgKGlubGlu
ZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkK
KyAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0u
aXNJbmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgYXV0byBpc1doaXRlc3BhY2UgPSBpbmxpbmVJdGVtLmlzVGV4dCgp
ICYmIGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKS5pc1doaXRlc3BhY2UoKTsK
ICAgICAgICAgaWYgKCFpc1doaXRlc3BhY2UpCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc05vbkNvbnRlbnRSdW5zT25seShjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6
Q29udGludW91c0NvCiAgICAgLy8gPHNwYW4+PC9zcGFuPiA8LSBub24gY29udGVudCBydW5zLgog
ICAgIGZvciAoYXV0byYgcnVuIDogY29udGludW91c0NvbnRlbnQucnVucygpKSB7CiAgICAgICAg
IGF1dG8mIGlubGluZUl0ZW0gPSBydW4uaW5saW5lSXRlbTsKLSAgICAgICAgaWYgKGlubGluZUl0
ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKKyAg
ICAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE5MCwxMCArMTkwLDExIEBA
IElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nl
c3NPdmVyZmxvd2luZ0NvbnRlbnQoY29uCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBy
dW5zID0gY29udGludW91c0NvbnRlbnQucnVucygpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxlYWRpbmdUZXh0UnVuSW5kZXggPT0gcnVucy5zaXplKCkgLSAxKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXJ1bnNbbGVhZGluZ1RleHRSdW5JbmRleCArIDFdLmlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVhZGluZ1RleHRSdW5JbmRl
eDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byBydW5JbmRleCA9IGxlYWRpbmdU
ZXh0UnVuSW5kZXggKyAxOyBydW5JbmRleCA8IHJ1bnMuc2l6ZSgpOyArK3J1bkluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFydW5zW3J1bkluZGV4XS5pbmxpbmVJdGVt
LmlzSW5saW5lQm94RW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgaW5s
aW5lSXRlbSA9IHJ1bnNbcnVuSW5kZXhdLmlubGluZUl0ZW07CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFp
bmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBydW5JbmRleCAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjgxLDE3ICsyODIsMjQgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kVHJhaWxpbmdSdW5JbmRleChjb25zdCBJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q28KICAgICAvLyBUcnkgbm90IGJyZWFrIGNvbnRlbnQgYXQgaW5s
aW5lIGJveCBib3VuZGFyeQogICAgIC8vIGUuZy4gPHNwYW4+Zml0czwvc3Bhbj48c3Bhbj5vdmVy
Zmxvd3M8L3NwYW4+CiAgICAgLy8gd2hlbiB0aGUgdGV4dCAib3ZlcmZsb3dzIiBjb21wbGV0ZWx5
IG92ZXJmbG93cywgbGV0J3MgYnJlYWsgdGhlIGNvbnRlbnQgcmlnaHQgYmVmb3JlIHRoZSAnPHNw
YW4+Jy4KKyAgICBhdXRvIGxhc3RPcGFxdWVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4geyB9OwogICAgIGZvciAoYXV0byB0cmFpbGluZ0NhbmRpZGF0ZUluZGV4ID0gYnJlYWthYmxl
UnVuSW5kZXg7IHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXgtLTspIHsKLSAgICAgICAgYXV0byBpc0F0
SW5saW5lQm94ID0gcnVuc1t0cmFpbGluZ0NhbmRpZGF0ZUluZGV4XS5pbmxpbmVJdGVtLmlzSW5s
aW5lQm94U3RhcnQoKTsKKyAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IHJ1bnNbdHJhaWxpbmdD
YW5kaWRhdGVJbmRleF0uaW5saW5lSXRlbTsKKyAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNPcGFx
dWUoKSkgeworICAgICAgICAgICAgbGFzdE9wYXF1ZUl0ZW1JbmRleCA9IHRyYWlsaW5nQ2FuZGlk
YXRlSW5kZXg7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBhdXRv
IGlzQXRJbmxpbmVCb3ggPSBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKTsKICAgICAgICAg
aWYgKCFpc0F0SW5saW5lQm94KQotICAgICAgICAgICAgcmV0dXJuIHRyYWlsaW5nQ2FuZGlkYXRl
SW5kZXg7CisgICAgICAgICAgICByZXR1cm4gbGFzdE9wYXF1ZUl0ZW1JbmRleC52YWx1ZV9vcih0
cmFpbGluZ0NhbmRpZGF0ZUluZGV4KTsKKyAgICAgICAgbGFzdE9wYXF1ZUl0ZW1JbmRleCA9IHsg
fTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGJvb2wgaXNXcmFwcGFibGVS
dW4oY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHJ1
bikKK3N0YXRpYyBib29sIGlzQnJlYWthYmxlUnVuKGNvbnN0IElubGluZUNvbnRlbnRCcmVha2Vy
OjpDb250aW51b3VzQ29udGVudDo6UnVuJiBydW4pCiB7Ci0gICAgQVNTRVJUKHJ1bi5pbmxpbmVJ
dGVtLmlzVGV4dCgpIHx8IHJ1bi5pbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4u
aW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8IHJ1bi5pbmxpbmVJdGVtLmxheW91dEJveCgp
LmlzSW1hZ2UoKSB8fCBydW4uaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc0xpc3RNYXJrZXJCb3go
KSk7CisgICAgQVNTRVJUKHJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpIHx8IHJ1bi5pbmxpbmVJdGVt
LmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8
IHJ1bi5pbmxpbmVJdGVtLmlzT3BhcXVlKCkgfHwgcnVuLmlubGluZUl0ZW0ubGF5b3V0Qm94KCku
aXNJbWFnZSgpIHx8IHJ1bi5pbmxpbmVJdGVtLmxheW91dEJveCgpLmlzTGlzdE1hcmtlckJveCgp
KTsKICAgICBpZiAoIXJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKSB7CiAgICAgICAgIC8vIENhbid0
IGJyZWFrIGhvcml6b250YWwgc3BhY2luZyAtPiBlLmcuIDxzcGFuIHN0eWxlPSJwYWRkaW5nLXJp
Z2h0OiAxMDBweDsiPnRleHRjb250ZW50PC9zcGFuPiwgaWYgdGhlIFtpbmxpbmUgYm94IGVuZF0g
aXMgdGhlIG92ZXJmbG93biBpbmxpbmUgaXRlbQogICAgICAgICAvLyB3ZSBuZWVkIHRvIGNoZWNr
IGlmIHRoZXJlJ3MgYW5vdGhlciBpbmxpbmUgaXRlbSBiZXlvbmQgdGhlIFtpbmxpbmUgYm94IGVu
ZF0gdG8gc3BsaXQuCkBAIC01NDUsNyArNTUzLDggQEAgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250
ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW4K
IHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29udGVudEJyZWFrZXI6Ok92ZXJmbG93aW5nVGV4dENvbnRl
bnQ6OkJyZWFraW5nUG9zaXRpb24+IElubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luZ092
ZXJmbG93aW5nUnVuKGNvbnN0IExpbmVTdGF0dXMmIGxpbmVTdGF0dXMsIGNvbnN0IENvbnRpbnVv
dXNDb250ZW50OjpSdW5MaXN0JiBydW5zLCBzaXplX3Qgb3ZlcmZsb3dpbmdSdW5JbmRleCwgSW5s
aW5lTGF5b3V0VW5pdCBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkgY29uc3QKIHsKICAgICBh
dXRvIG92ZXJmbG93aW5nUnVuID0gcnVuc1tvdmVyZmxvd2luZ1J1bkluZGV4XTsKLSAgICBpZiAo
IWlzV3JhcHBhYmxlUnVuKG92ZXJmbG93aW5nUnVuKSkKKyAgICBBU1NFUlQoIW92ZXJmbG93aW5n
UnVuLmlubGluZUl0ZW0uaXNPcGFxdWUoKSk7CisgICAgaWYgKCFpc0JyZWFrYWJsZVJ1bihvdmVy
Zmxvd2luZ1J1bikpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIGF2YWlsYWJsZVdp
ZHRoID0gc3RkOjptYXgoMC5mLCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gbm9uT3ZlcmZs
b3dpbmdDb250ZW50V2lkdGgpOwpAQCAtNTY4LDcgKzU3Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8SW5s
aW5lQ29udGVudEJyZWFrZXI6Ok92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRp
b24+IEluCiAgICAgZm9yIChhdXRvIGluZGV4ID0gb3ZlcmZsb3dpbmdSdW5JbmRleDsgaW5kZXgt
LTspIHsKICAgICAgICAgYXV0byYgcnVuID0gcnVuc1tpbmRleF07CiAgICAgICAgIHByZXZpb3Vz
Q29udGVudFdpZHRoIC09IHJ1bi5sb2dpY2FsV2lkdGg7Ci0gICAgICAgIGlmICghaXNXcmFwcGFi
bGVSdW4ocnVuKSkKKyAgICAgICAgaWYgKCFpc0JyZWFrYWJsZVJ1bihydW4pKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7CiAg
ICAgICAgIGF1dG8gYXZhaWxhYmxlV2lkdGggPSBzdGQ6Om1heCgwLmYsIGxpbmVTdGF0dXMuYXZh
aWxhYmxlV2lkdGggLSBwcmV2aW91c0NvbnRlbnRXaWR0aCk7CkBAIC02MDcsNyArNjE2LDcgQEAg
c3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6T3ZlcmZsb3dpbmdUZXh0Q29udGVu
dDo6QnJlYWtpbmdQb3NpdGlvbj4gSW4KICAgICBhdXRvIG5leHRDb250ZW50V2lkdGggPSBub25P
dmVyZmxvd2luZ0NvbnRlbnRXaWR0aCArIHJ1bnNbb3ZlcmZsb3dpbmdSdW5JbmRleF0ubG9naWNh
bFdpZHRoOwogICAgIGZvciAoYXV0byBpbmRleCA9IG92ZXJmbG93aW5nUnVuSW5kZXggKyAxOyBp
bmRleCA8IHJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNb
aW5kZXhdOwotICAgICAgICBpZiAoIWlzV3JhcHBhYmxlUnVuKHJ1bikpIHsKKyAgICAgICAgaWYg
KCFpc0JyZWFrYWJsZVJ1bihydW4pKSB7CiAgICAgICAgICAgICBuZXh0Q29udGVudFdpZHRoICs9
IHJ1bi5sb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAt
ODExLDcgKzgyMCw3IEBAIHZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250
ZW50OjpyZXNldFRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpCiAKIHZvaWQgSW5saW5lQ29udGVu
dEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aCkKIHsKLSAgICBBU1NFUlQoaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0u
aXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSk7CisgICAg
QVNTRVJUKGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQo
KSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbS5pc09wYXF1ZSgp
KTsKICAgICBtX2lzVGV4dE9ubHlDb250ZW50ID0gZmFsc2U7CiAgICAgYXBwZW5kVG9SdW5MaXN0
KGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgIGlmIChpbmxpbmVJdGVtLmlz
Qm94KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcAppbmRleCBhYzgzMzdkZWVhNDEuLjM0ZGE2NjUyNjFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjI3LDE5ICsyMjcsMjYg
QEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0RmxvYXRDb250ZW50T25seShj
b25zdCBDb25zdHJhaW50c0ZvcklubGluZUMKICAgICBJbmxpbmVJdGVtc0J1aWxkZXIgeyByb290
KCksIGlubGluZUZvcm1hdHRpbmdTdGF0ZSB9LmJ1aWxkKHsgfSk7CiAKICAgICBmb3IgKGF1dG8m
IGlubGluZUl0ZW0gOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKSkgewotICAg
ICAgICBpZiAoIWlubGluZUl0ZW0uaXNGbG9hdCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpKSB7CisgICAgICAg
ICAgICBhdXRvJiBmbG9hdEJveCA9IGlubGluZUl0ZW0ubGF5b3V0Qm94KCk7CisgICAgICAgICAg
ICBhdXRvJiBmbG9hdEJveEdlb21ldHJ5ID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmJveEdlb21l
dHJ5KGZsb2F0Qm94KTsKKyAgICAgICAgICAgIGF1dG8gc3RhdGljUG9zaXRpb24gPSBMYXlvdXRQ
b2ludCB7IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMu
bG9naWNhbFRvcCgpIH07CisgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbi5tb3ZlKGZsb2F0Qm94
R2VvbWV0cnkubWFyZ2luU3RhcnQoKSwgZmxvYXRCb3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSk7
CisgICAgICAgICAgICBmbG9hdEJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHN0YXRpY1Bv
c2l0aW9uKTsKKworICAgICAgICAgICAgYXV0byBmbG9hdEJveFRvcExlZnQgPSBmbG9hdGluZ0Nv
bnRleHQucG9zaXRpb25Gb3JGbG9hdChmbG9hdEJveCwgZmxvYXRCb3hHZW9tZXRyeSwgY29uc3Ry
YWludHMuaG9yaXpvbnRhbCgpKTsKKyAgICAgICAgICAgIGZsb2F0Qm94R2VvbWV0cnkuc2V0TG9n
aWNhbFRvcExlZnQoZmxvYXRCb3hUb3BMZWZ0KTsKKyAgICAgICAgICAgIGZsb2F0aW5nU3RhdGUu
YXBwZW5kKGZsb2F0aW5nQ29udGV4dC50b0Zsb2F0SXRlbShmbG9hdEJveCwgZmxvYXRCb3hHZW9t
ZXRyeSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byYg
ZmxvYXRCb3ggPSBpbmxpbmVJdGVtLmxheW91dEJveCgpOwotICAgICAgICBhdXRvJiBmbG9hdEJv
eEdlb21ldHJ5ID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGZsb2F0Qm94KTsK
LSAgICAgICAgYXV0byBzdGF0aWNQb3NpdGlvbiA9IExheW91dFBvaW50IHsgY29uc3RyYWludHMu
aG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkgfTsKLSAg
ICAgICAgc3RhdGljUG9zaXRpb24ubW92ZShmbG9hdEJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCks
IGZsb2F0Qm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkpOwotICAgICAgICBmbG9hdEJveEdlb21l
dHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHN0YXRpY1Bvc2l0aW9uKTsKLQotICAgICAgICBhdXRvIGZs
b2F0Qm94VG9wTGVmdCA9IGZsb2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvckZsb2F0KGZsb2F0Qm94
LCBmbG9hdEJveEdlb21ldHJ5LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwotICAgICAgICBm
bG9hdEJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KGZsb2F0Qm94VG9wTGVmdCk7Ci0gICAg
ICAgIGZsb2F0aW5nU3RhdGUuYXBwZW5kKGZsb2F0aW5nQ29udGV4dC50b0Zsb2F0SXRlbShmbG9h
dEJveCwgZmxvYXRCb3hHZW9tZXRyeSkpOworICAgICAgICBpZiAoaW5saW5lSXRlbS5pc09wYXF1
ZSgpKSB7CisgICAgICAgICAgICBhdXRvJiBvcGFxdWVCb3ggPSBpbmxpbmVJdGVtLmxheW91dEJv
eCgpOworICAgICAgICAgICAgaWYgKG9wYXF1ZUJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkg
eworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQgdGhlIHN0YXRpYyBwb3NpdGlvbi4KKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDI2OGMzNmQ3Mjc4My4uM2Vj
YWMzY2M3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAKQEAgLTUyOCw2ICs1MjgsOSBAQCBJbmxpbmVMYXlvdXRVbml0IElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lSXRlbVdpZHRoKGNvbnN0IElubGluZUl0ZW0mIGlubAog
ICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCiAgICAgICAgIHJldHVybiBib3hH
ZW9tZXRyeS5tYXJnaW5FbmQoKSArIGJveEdlb21ldHJ5LmJvcmRlckVuZCgpICsgYm94R2VvbWV0
cnkucGFkZGluZ0VuZCgpLnZhbHVlX29yKDApOwogCisgICAgaWYgKGlubGluZUl0ZW0uaXNPcGFx
dWUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIC8vIEZJWE1FOiBUaGUgb3Zlcmhhbmcg
c2hvdWxkIGJlIGNvbXB1dGVkIHRvIG5vdCBvdmVybGFwIHRoZSBuZWlnaGJvcmluZyBydW5zIG9y
IG92ZXJmbG93IHRoZSBsaW5lLgogICAgIGlmIChhdXRvKiBydWJ5QWRqdXN0bWVudHMgPSBsYXlv
dXRCb3gucnVieUFkanVzdG1lbnRzKCkpIHsKICAgICAgICAgYXV0byYgb3ZlcmhhbmcgPSB1c2VG
aXJzdExpbmVTdHlsZSA/IHJ1YnlBZGp1c3RtZW50cy0+Zmlyc3RMaW5lT3ZlcmhhbmcgOiBydWJ5
QWRqdXN0bWVudHMtPm92ZXJoYW5nOwpAQCAtNTU5LDEwICs1NjIsMTAgQEAgc3RhdGljIGlubGlu
ZSBib29sIGVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVUZXh0SXRlbSYg
cHJldmlvdXNJbmwKICAgICByZXR1cm4gVGV4dFV0aWw6Om1heUJyZWFrSW5CZXR3ZWVuKHByZXZp
b3VzSW5saW5lVGV4dEl0ZW0sIG5leHRJbmxpbmVUZXh0SXRlbSk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgYm9vbCBpc0F0U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiBjdXJyZW50
LCBjb25zdCBJbmxpbmVJdGVtJiBuZXh0KQorc3RhdGljIGlubGluZSBib29sIGlzQXRTb2Z0V3Jh
cE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW0mIHByZXZpb3VzLCBjb25zdCBJbmxpbmVJdGVt
JiBuZXh0KQogewogICAgIC8vIEZJWE1FOiBUcmFuc2l0aW9uIG5vLXdyYXBwaW5nIGxvZ2ljIGZy
b20gSW5saW5lQ29udGVudEJyZWFrZXIgdG8gaGVyZSB3aGVyZSB3ZSBjb21wdXRlIHRoZSBzb2Z0
IHdyYXAgb3Bwb3J0dW5pdHkgaW5kZXhlcy4KLSAgICAvLyAiaXMgYXQiIHNpbXBsZSBtZWFucyB0
aGF0IHRoZXJlJ3MgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgcmlnaHQgYWZ0ZXIgdGhlIFtjdXJy
ZW50XS4KKyAgICAvLyAiaXMgYXQiIHNpbXBsZSBtZWFucyB0aGF0IHRoZXJlJ3MgYSBzb2Z0IHdy
YXAgb3Bwb3J0dW5pdHkgcmlnaHQgYWZ0ZXIgdGhlIFtwcmV2aW91c10uCiAgICAgLy8gW3RleHRd
WyBdW3RleHRdW2lubGluZSBib3ggc3RhcnRdLi4uICg8ZGl2PnRleHQgY29udGVudDxzcGFuPi4u
PC9kaXY+KQogICAgIC8vIHNvZnQgd3JhcCBpbmRleGVzOiAwIGFuZCAxIGRlZmluaXRlbHksIDIg
ZGVwZW5kcyBvbiB0aGUgY29udGVudCBhZnRlciB0aGUgW2lubGluZSBib3ggc3RhcnRdLgogCkBA
IC01NzEsMTAgKzU3NCwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNvZnRXcmFwT3Bwb3J0
dW5pdHkoY29uc3QgSW5saW5lSXRlbSYgY3VycmVudCwgY29uc3QgSW5saQogICAgIC8vIGUuZy4g
W2lubGluZSBib3ggc3RhcnRdW3ByaW9yX2NvbnRpbnVvdXNfY29udGVudF1baW5saW5lIGJveCBl
bmRdICg8c3Bhbj5wcmlvcl9jb250aW51b3VzX2NvbnRlbnQ8L3NwYW4+KQogICAgIC8vIEFuIGlu
Y29taW5nIDxpbWc+IGJveCB3b3VsZCBlbmFibGUgdXMgdG8gY29tbWl0IHRoZSAiPHNwYW4+cHJp
b3JfY29udGludW91c19jb250ZW50PC9zcGFuPiIgY29udGVudAogICAgIC8vIGJ1dCBhbiBpbmNv
bWluZyB0ZXh0IGNvbnRlbnQgd291bGQgbm90IG5lY2Vzc2FyaWx5LgotICAgIEFTU0VSVChjdXJy
ZW50LmlzVGV4dCgpIHx8IGN1cnJlbnQuaXNCb3goKSk7CisgICAgQVNTRVJUKHByZXZpb3VzLmlz
VGV4dCgpIHx8IHByZXZpb3VzLmlzQm94KCkpOwogICAgIEFTU0VSVChuZXh0LmlzVGV4dCgpIHx8
IG5leHQuaXNCb3goKSk7Ci0gICAgaWYgKGN1cnJlbnQuaXNUZXh0KCkgJiYgbmV4dC5pc1RleHQo
KSkgewotICAgICAgICBhdXRvJiBjdXJyZW50SW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxp
bmVUZXh0SXRlbT4oY3VycmVudCk7CisgICAgaWYgKHByZXZpb3VzLmlzVGV4dCgpICYmIG5leHQu
aXNUZXh0KCkpIHsKKyAgICAgICAgYXV0byYgY3VycmVudElubGluZVRleHRJdGVtID0gZG93bmNh
c3Q8SW5saW5lVGV4dEl0ZW0+KHByZXZpb3VzKTsKICAgICAgICAgYXV0byYgbmV4dElubGluZVRl
eHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG5leHQpOwogICAgICAgICBpZiAoY3Vy
cmVudElubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpICYmIG5leHRJbmxpbmVUZXh0SXRlbS5p
c1doaXRlc3BhY2UoKSkgewogICAgICAgICAgICAgLy8gPHNwYW4+IDwvc3Bhbj48c3Bhbj4gPC9z
cGFuPi4gRGVwZW5kaW5nIG9uIHRoZSBzdHlsZXMsIHRoZXJlIG1heSBvciBtYXkgbm90IGJlIGEg
c29mdCB3cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4gdGhlc2UgMiB3aGl0ZXNwYWNlIGNvbnRlbnQu
CkBAIC01OTAsMTkgKzU5MywxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNvZnRXcmFwT3Bw
b3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbSYgY3VycmVudCwgY29uc3QgSW5saQogICAgICAgICAg
ICAgYXV0byYgc3R5bGUgPSBuZXh0SW5saW5lVGV4dEl0ZW0uc3R5bGUoKTsKICAgICAgICAgICAg
IHJldHVybiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQoc3R5bGUpICYmIHN0eWxlLndoaXRl
U3BhY2VDb2xsYXBzZSgpICE9IFdoaXRlU3BhY2VDb2xsYXBzZTo6QnJlYWtTcGFjZXMgJiYgc3R5
bGUubGluZUJyZWFrKCkgIT0gTGluZUJyZWFrOjpBZnRlcldoaXRlU3BhY2U7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKGN1cnJlbnQuc3R5bGUoKS5saW5lQnJlYWsoKSA9PSBMaW5lQnJlYWs6OkFu
eXdoZXJlIHx8IG5leHQuc3R5bGUoKS5saW5lQnJlYWsoKSA9PSBMaW5lQnJlYWs6OkFueXdoZXJl
KSB7CisgICAgICAgIGlmIChwcmV2aW91cy5zdHlsZSgpLmxpbmVCcmVhaygpID09IExpbmVCcmVh
azo6QW55d2hlcmUgfHwgbmV4dC5zdHlsZSgpLmxpbmVCcmVhaygpID09IExpbmVCcmVhazo6QW55
d2hlcmUpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5
IGFyb3VuZCBldmVyeSB0eXBvZ3JhcGhpYyBjaGFyYWN0ZXIgdW5pdCwgaW5jbHVkaW5nIGFyb3Vu
ZCBhbnkgcHVuY3R1YXRpb24gY2hhcmFjdGVyCiAgICAgICAgICAgICAvLyBvciBwcmVzZXJ2ZWQg
d2hpdGUgc3BhY2VzLCBvciBpbiB0aGUgbWlkZGxlIG9mIHdvcmRzLgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgLy8gQm90aCBjdXJyZW50IGFuZCBuZXh0IGl0
ZW1zIGFyZSBub24td2hpdGVzcGFjZSB0ZXh0LgorICAgICAgICAvLyBCb3RoIHByZXZpb3VzIGFu
ZCBuZXh0IGl0ZW1zIGFyZSBub24td2hpdGVzcGFjZSB0ZXh0LgogICAgICAgICAvLyBbdGV4dF1b
dGV4dF0gOiBpcyBhIGNvbnRpbnVvdXMgY29udGVudC4KICAgICAgICAgLy8gW3RleHQtXVt0ZXh0
XSA6IGFmdGVyIFtoeXBoZW5dIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5Lgog
ICAgICAgICByZXR1cm4gZW5kc1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5KGN1cnJlbnRJbmxpbmVU
ZXh0SXRlbSwgbmV4dElubGluZVRleHRJdGVtKTsKICAgICB9Ci0gICAgaWYgKGN1cnJlbnQubGF5
b3V0Qm94KCkuaXNMaXN0TWFya2VyQm94KCkgfHwgbmV4dC5sYXlvdXRCb3goKS5pc0xpc3RNYXJr
ZXJCb3goKSkKKyAgICBpZiAocHJldmlvdXMubGF5b3V0Qm94KCkuaXNMaXN0TWFya2VyQm94KCkg
fHwgbmV4dC5sYXlvdXRCb3goKS5pc0xpc3RNYXJrZXJCb3goKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGN1cnJlbnQuaXNCb3goKSB8fCBuZXh0LmlzQm94KCkpIHsKKyAgICBpZiAo
cHJldmlvdXMuaXNCb3goKSB8fCBuZXh0LmlzQm94KCkpIHsKICAgICAgICAgLy8gW3RleHRdW2lu
bGluZSBib3ggc3RhcnRdW2lubGluZSBib3ggZW5kXVtpbmxpbmUgYm94XSAodGV4dDxzcGFuPjwv
c3Bhbj48aW1nPikgOiB0aGVyZSdzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4gdGhl
IFt0ZXh0XSBhbmQgW2ltZ10uCiAgICAgICAgIC8vIFRoZSBsaW5lIGJyZWFraW5nIGJlaGF2aW9y
IG9mIGEgcmVwbGFjZWQgZWxlbWVudCBvciBvdGhlciBhdG9taWMgaW5saW5lIGlzIGVxdWl2YWxl
bnQgdG8gYW4gaWRlb2dyYXBoaWMgY2hhcmFjdGVyLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTYyMywyMCArNjI2LDI0IEBAIHNpemVfdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Om5leHRX
cmFwT3Bwb3J0dW5pdHkoc2l6ZV90IHN0YXJ0SW5kZXgsIGNvbnN0IEluCiAgICAgLy8gW2V4LV1b
aW5saW5lIGJveCBzdGFydF1bbGluZSBicmVha11bYW1wbGVdIChleC08c3Bhbj48YnI+YW1wbGUp
LiBXcmFwIGluZGV4IGlzIGFmdGVyIFticl0uCiAgICAgYXV0byBwcmV2aW91c0lubGluZUl0ZW1J
bmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CiAgICAgZm9yIChhdXRvIGluZGV4ID0g
c3RhcnRJbmRleDsgaW5kZXggPCBsYXlvdXRSYW5nZS5lbmRJbmRleCgpOyArK2luZGV4KSB7Ci0g
ICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBpbmxpbmVJdGVtc1tpbmRleF07Ci0gICAgICAgIGlm
IChpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkgfHwgaW5saW5lSXRlbS5pc1dvcmRCcmVha09wcG9y
dHVuaXR5KCkpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEl0ZW0gPSBpbmxpbmVJdGVtc1tpbmRl
eF07CisgICAgICAgIGlmIChjdXJyZW50SXRlbS5pc0xpbmVCcmVhaygpIHx8IGN1cnJlbnRJdGVt
LmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgYWx3YXlzIHN0
b3AgYXQgZXhwbGljaXQgd3JhcHBpbmcgb3Bwb3J0dW5pdGllcyBlLmcuIDxicj4uIEhvd2V2ZXIg
dGhlIHdyYXAgcG9zaXRpb24gbWF5IGJlIGF0IGxhdGVyIHBvc2l0aW9uLgogICAgICAgICAgICAg
Ly8gZS5nLiA8c3Bhbj48c3Bhbj48YnI+PC9zcGFuPjwvc3Bhbj4gPC0gd3JhcCBwb3NpdGlvbiBp
cyBhZnRlciB0aGUgc2Vjb25kIDwvc3Bhbj4KICAgICAgICAgICAgIC8vIGJ1dCBpbiBjYXNlIG9m
IDxzcGFuPjxicj48c3Bhbj48L3NwYW4+PC9zcGFuPiA8LSB3cmFwIHBvc2l0aW9uIGlzIHJpZ2h0
IGFmdGVyIDxicj4uCiAgICAgICAgICAgICBmb3IgKCsraW5kZXg7IGluZGV4IDwgbGF5b3V0UmFu
Z2UuZW5kSW5kZXgoKSAmJiBpbmxpbmVJdGVtc1tpbmRleF0uaXNJbmxpbmVCb3hFbmQoKTsgKytp
bmRleCkgeyB9CiAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVC
b3hFbmQoKSkgeworICAgICAgICBpZiAoY3VycmVudEl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8
IGN1cnJlbnRJdGVtLmlzSW5saW5lQm94RW5kKCkpIHsKICAgICAgICAgICAgIC8vIE5lZWQgdG8g
c2VlIHdoYXQgY29tZXMgbmV4dCB0byBkZWNpZGUuCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICBBU1NFUlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVt
LmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0Zsb2F0KCkpOwotICAgICAgICBpZiAoaW5saW5lSXRl
bS5pc0Zsb2F0KCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVtLmlzT3BhcXVlKCkpIHsKKyAg
ICAgICAgICAgIC8vIFRoaXMgaXRlbSBpcyBpbnZpc2libGUgdG8gbGluZSBicmVha2luZy4gTmVl
ZCB0byBwcmV0ZW5kIGl0J3Mgbm90IGhlcmUuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoY3VycmVudEl0ZW0uaXNUZXh0KCkgfHwgY3VycmVudEl0ZW0u
aXNCb3goKSB8fCBjdXJyZW50SXRlbS5pc0Zsb2F0KCkpOworICAgICAgICBpZiAoY3VycmVudEl0
ZW0uaXNGbG9hdCgpKSB7CiAgICAgICAgICAgICAvLyBXaGlsZSBmbG9hdHMgYXJlIG5vdCBwYXJ0
IG9mIHRoZSBpbmxpbmUgY29udGVudCBhbmQgdGhleSBhcmUgbm90IHN1cHBvc2VkIHRvIGludHJv
ZHVjZSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGllcywKICAgICAgICAgICAgIC8vIGUuZy4gW3RleHRd
W2Zsb2F0IGJveF1bZmxvYXQgYm94XVt0ZXh0XVtmbG9hdCBib3hdW3RleHRdIGlzIGVzc2VudGlh
bGx5IGp1c3QgW3RleHRdW3RleHRdW3RleHRdCiAgICAgICAgICAgICAvLyBmaWd1cmluZyBvdXQg
d2hldGhlciBhIGZsb2F0IChvciBzZXQgb2YgZmxvYXRzKSBzaG91bGQgc3RheSBvbiB0aGUgbGlu
ZSBvciBub3QgKGFuZCBoYW5kbGUgcG90ZW50aWFsbHkgb3V0IG9mIG9yZGVyIGlubGluZSBpdGVt
cykKQEAgLTY1MSw3ICs2NTgsNiBAQCBzaXplX3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpu
ZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydEluZGV4LCBjb25zdCBJbgogICAgICAgICB9
CiAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgcHJldmlvdXMgYW5kIGN1cnJlbnQgaXRlbXMgYXJl
IG5vdCBuZWNlc3NhcmlseSBhZGphY2VudCBpdGVtcyBlLmcgInByZXZpb3VzPHNwYW4+Y3VycmVu
dDwvc3Bhbj4iCiAgICAgICAgIGF1dG8mIHByZXZpb3VzSXRlbSA9IGlubGluZUl0ZW1zWypwcmV2
aW91c0lubGluZUl0ZW1JbmRleF07Ci0gICAgICAgIGF1dG8mIGN1cnJlbnRJdGVtID0gaW5saW5l
SXRlbXNbaW5kZXhdOwogICAgICAgICBpZiAoaXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHkocHJldmlv
dXNJdGVtLCBjdXJyZW50SXRlbSkpIHsKICAgICAgICAgICAgIGlmICgqcHJldmlvdXNJbmxpbmVJ
dGVtSW5kZXggKyAxID09IGluZGV4ICYmICghcHJldmlvdXNJdGVtLmlzVGV4dCgpIHx8ICFjdXJy
ZW50SXRlbS5pc1RleHQoKSkpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGtub3cgdGhl
IGV4YWN0IHNvZnQgd3JhcCBvcHBvcnR1bml0eSBpbmRleCB3aGVuIHRoZSBwcmV2aW91cyBhbmQg
Y3VycmVudCBpdGVtcyBhcmUgbmV4dCB0byBlYWNoIG90aGVyLgpAQCAtNjc5LDcgKzY4NSw3IEBA
IHNpemVfdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Om5leHRXcmFwT3Bwb3J0dW5pdHkoc2l6
ZV90IHN0YXJ0SW5kZXgsIGNvbnN0IEluCiAgICAgICAgICAgICAvLyBTb2Z0IHdyYXAgb3Bwb3J0
dW5pdHkgaXMgYXQgdGhlIGZpcnN0IGlubGluZSBib3ggdGhhdCBlbmNsb3NlcyB0aGUgdHJhaWxp
bmcgY29udGVudC4KICAgICAgICAgICAgIGZvciAoYXV0byBjYW5kaWRhdGVJbmRleCA9IHN0YXJ0
ICsgMTsgY2FuZGlkYXRlSW5kZXggPCBlbmQ7ICsrY2FuZGlkYXRlSW5kZXgpIHsKICAgICAgICAg
ICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gaW5saW5lSXRlbXNbY2FuZGlkYXRlSW5kZXhdOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBp
bmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChpbmxp
bmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkg
fHwgaW5saW5lSXRlbS5pc09wYXF1ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lSXRl
bS5pc0lubGluZUJveFN0YXJ0KCkpCiAgICAgICAgICAgICAgICAgICAgIGlubGluZUJveFN0YWNr
LmFwcGVuZCh7ICZpbmxpbmVJdGVtLmxheW91dEJveCgpLCBjYW5kaWRhdGVJbmRleCB9KTsKICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgJiYgIWlu
bGluZUJveFN0YWNrLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaAppbmRleCA2NmUw
MGI2YWMyOTQuLjNjMTY4ZWMxNzk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaApAQCAtMzYs
NyArMzYsNyBAQCBjbGFzcyBJbmxpbmVJdGVtc0J1aWxkZXI7CiAKIGNsYXNzIElubGluZUl0ZW0g
ewogcHVibGljOgotICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgIGVudW0gY2xh
c3MgVHlwZSA6IHVpbnQxNl90IHsKICAgICAgICAgVGV4dCwKICAgICAgICAgSGFyZExpbmVCcmVh
aywKICAgICAgICAgU29mdExpbmVCcmVhaywKQEAgLTQ0LDcgKzQ0LDggQEAgcHVibGljOgogICAg
ICAgICBCb3gsCiAgICAgICAgIElubGluZUJveFN0YXJ0LAogICAgICAgICBJbmxpbmVCb3hFbmQs
Ci0gICAgICAgIEZsb2F0CisgICAgICAgIEZsb2F0LAorICAgICAgICBPcGFxdWUKICAgICB9Owog
ICAgIElubGluZUl0ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIFR5cGUsIFVCaURpTGV2ZWwgPSBV
QklESV9ERUZBVUxUX0xUUik7CiAKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNIYXJkTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFR5cGU6OkhhcmRMaW5l
QnJlYWs7IH0KICAgICBib29sIGlzSW5saW5lQm94U3RhcnQoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gVHlwZTo6SW5saW5lQm94U3RhcnQ7IH0KICAgICBib29sIGlzSW5saW5lQm94RW5kKCkg
Y29uc3QgeyByZXR1cm4gdHlwZSgpID09IFR5cGU6OklubGluZUJveEVuZDsgfQorICAgIGJvb2wg
aXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6T3BhcXVlOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElubGluZUl0ZW1zQnVpbGRlcjsKQEAgLTgyLDcgKzg0
LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVQmlEaUxldmVsIG1fYmlkaUxldmVsIHsg
VUJJRElfREVGQVVMVF9MVFIgfTsKIAotICAgIFR5cGUgbV90eXBlIDogMyB7IH07CisgICAgVHlw
ZSBtX3R5cGUgOiA0IHsgfTsKIAogcHJvdGVjdGVkOgogICAgIC8vIEZvciBJbmxpbmVUZXh0SXRl
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAKaW5kZXggOWRkYzEw
ZDViNWU3Li4yM2FlNmQ4MDgwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNC
dWlsZGVyLmNwcApAQCAtNDYwLDggKzQ2MCwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnVpbGRC
aWRpUGFyYWdyYXBoKGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIGNvbnN0IElubGluZQog
ICAgICAgICB9IGVsc2UgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpKSB7CiAgICAgICAgICAgICAv
LyBGbG9hdHMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBpbmxpbmUgY29udGVudCB3aGljaCBtYWtlIHRo
ZW0gb3BhcXVlIHRvIGJpZGkuCiAgICAgICAgICAgICBpbmxpbmVJdGVtT2Zmc2V0TGlzdC51bmNo
ZWNrZWRBcHBlbmQoeyB9KTsKKyAgICAgICAgfSBlbHNlIGlmIChpbmxpbmVJdGVtLmlzT3BhcXVl
KCkpIHsKKyAgICAgICAgICAgIC8vIG9wYXF1ZSBpdGVtcyBhcmUgYWxzbyBvcGFxdWUgdG8gYmlk
aS4KKyAgICAgICAgICAgIGlubGluZUl0ZW1PZmZzZXRMaXN0LnVuY2hlY2tlZEFwcGVuZCh7IH0p
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVU
KCk7CisKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKaW5kZXggYWE2YzBm
ZjljY2RkLi43NjI1NjRlYmQxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCkBAIC0z
NjAsNiArMzYwLDEwIEBAIHZvaWQgTGluZTo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGlu
ZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lCiAgICAgICAgIGFwcGVuZFJl
cGxhY2VkSW5saW5lTGV2ZWxCb3goaW5saW5lSXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7CiAg
ICAgZWxzZSBpZiAoaW5saW5lSXRlbS5pc0JveCgpKQogICAgICAgICBhcHBlbmROb25SZXBsYWNl
ZElubGluZUxldmVsQm94KGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOworICAgIGVs
c2UgaWYgKGlubGluZUl0ZW0uaXNPcGFxdWUoKSkgeworICAgICAgICBBU1NFUlQoIWxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIGFwcGVuZE9wYXF1ZUJveChpbmxpbmVJdGVtLCBzdHlsZSk7CisgICAg
fQogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgbV9oYXNOb25E
ZWZhdWx0QmlkaUxldmVsUnVuID0gbV9oYXNOb25EZWZhdWx0QmlkaUxldmVsUnVuIHx8IGlubGlu
ZUl0ZW0uYmlkaUxldmVsKCkgIT0gVUJJRElfREVGQVVMVF9MVFI7CkBAIC00MzksNyArNDQzLDcg
QEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5s
aW5lVGV4dEl0ZW0sIGNvbnN0IFJlbmRlclMKICAgICAgICAgICAgIC8vIHByb3ZpZGVkIGJvdGgg
c3BhY2VzIGFyZSB3aXRoaW4gdGhlIHNhbWUgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dOKAlGlz
IGNvbGxhcHNlZCB0byBoYXZlIHplcm8gYWR2YW5jZSB3aWR0aC4KICAgICAgICAgICAgIGlmIChy
dW4uaXNUZXh0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bi5oYXNDb2xsYXBzaWJsZVRy
YWlsaW5nV2hpdGVzcGFjZSgpOwotICAgICAgICAgICAgQVNTRVJUKHJ1bi5pc0xpc3RNYXJrZXIo
KSB8fCBydW4uaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGluZUJv
eFN0YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94RW5kKCkgfHwgcnVuLmlzV29yZEJyZWFrT3Bwb3J0
dW5pdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQocnVuLmlzTGlzdE1hcmtlcigpIHx8IHJ1bi5p
c0xpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94U3RhcnQoKSB8
fCBydW4uaXNJbmxpbmVCb3hFbmQoKSB8fCBydW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpIHx8
IHJ1bi5pc09wYXF1ZSgpKTsKICAgICAgICAgfQogICAgICAgICAvLyBMZWFkaW5nIHdoaXRlc3Bh
Y2UuCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjcxLDYgKzY3NSwxMSBAQCB2b2lkIExpbmU6
OmFwcGVuZFdvcmRCcmVha09wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0s
IGNvbnN0IFJlbmRlcgogICAgIG1fcnVucy5hcHBlbmQoeyBpbmxpbmVJdGVtLCBzdHlsZSwgbGFz
dFJ1bkxvZ2ljYWxSaWdodCgpIH0pOwogfQogCit2b2lkIExpbmU6OmFwcGVuZE9wYXF1ZUJveChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7
CisgICAgbV9ydW5zLmFwcGVuZCh7IGlubGluZUl0ZW0sIHN0eWxlLCBsYXN0UnVuTG9naWNhbFJp
Z2h0KCkgfSk7Cit9CisKIElubGluZUxheW91dFVuaXQgTGluZTo6YWRkQm9yZGVyQW5kUGFkZGlu
Z0VuZEZvcklubGluZUJveERlY29yYXRpb25DbG9uZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVC
b3hTdGFydEl0ZW0pCiB7CiAgICAgQVNTRVJUKGlubGluZUJveFN0YXJ0SXRlbS5pc0lubGluZUJv
eFN0YXJ0KCkpOwpAQCAtNzk4LDcgKzgwNyw3IEBAIElubGluZUxheW91dFVuaXQgTGluZTo6VHJp
bW1hYmxlVHJhaWxpbmdDb250ZW50OjpyZW1vdmUoKQogICAgIC8vIG5vdCBwcm9kdWNlIGEgcnVu
IHNpbmNlIGluIDo6YXBwZW5kVGV4dCgpIHdlIHNlZSBpdCBhcyBhIGZ1bGx5IHRyaW1tYWJsZSBy
dW4uCiAgICAgZm9yIChhdXRvIGluZGV4ID0gKm1fZmlyc3RUcmltbWFibGVSdW5JbmRleCArIDE7
IGluZGV4IDwgbV9ydW5zLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBhdXRvJiBydW4gPSBt
X3J1bnNbaW5kZXhdOwotICAgICAgICBBU1NFUlQocnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHko
KSB8fCBydW4uaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGluZUJv
eFN0YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94RW5kKCkgfHwgcnVuLmlzTGluZUJyZWFrKCkpOwor
ICAgICAgICBBU1NFUlQocnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSB8fCBydW4uaXNMaW5l
U3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGluZUJveFN0YXJ0KCkgfHwgcnVu
LmlzSW5saW5lQm94RW5kKCkgfHwgcnVuLmlzTGluZUJyZWFrKCkgfHwgcnVuLmlzT3BhcXVlKCkp
OwogICAgICAgICBydW4ubW92ZUhvcml6b250YWxseSgtdHJpbW1lZFdpZHRoKTsKICAgICB9CiAg
ICAgaWYgKCF0cmltbWFibGVSdW4udGV4dENvbnRlbnQoKS0+bGVuZ3RoKSB7CkBAIC04MzMsMTAg
Kzg0MiwxMiBAQCBpbmxpbmUgc3RhdGljIExpbmU6OlJ1bjo6VHlwZSB0b0xpbmVSdW5UeXBlKGNv
bnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgICAgIHJldHVybiBMaW5lOjpSdW46OlR5
cGU6OklubGluZUJveFN0YXJ0OwogICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6SW5saW5lQm94
RW5kOgogICAgICAgICByZXR1cm4gTGluZTo6UnVuOjpUeXBlOjpJbmxpbmVCb3hFbmQ7CisgICAg
Y2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpPcGFxdWU6CisgICAgICAgIHJldHVybiBMaW5lOjpSdW46
OlR5cGU6Ok9wYXF1ZTsKICAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9Ci0gICAgcmV0dXJuIHsgfTsKIH0KIAogc3RkOjpvcHRpb25hbDxMaW5lOjpS
dW46OlRyYWlsaW5nV2hpdGVzcGFjZTo6VHlwZT4gTGluZTo6UnVuOjp0cmFpbGluZ1doaXRlc3Bh
Y2VUeXBlKGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmUuaAppbmRleCBhYzlhOTc0NDlhNTYuLjM1YjM0ZGMxYTNlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmUuaApAQCAtODYsNyArODYsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBMaXN0
TWFya2VyT3V0c2lkZSwKICAgICAgICAgICAgIElubGluZUJveFN0YXJ0LAogICAgICAgICAgICAg
SW5saW5lQm94RW5kLAotICAgICAgICAgICAgTGluZVNwYW5uaW5nSW5saW5lQm94U3RhcnQKKyAg
ICAgICAgICAgIExpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0LAorICAgICAgICAgICAgT3BhcXVl
CiAgICAgICAgIH07CiAKICAgICAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6VGV4dCB8fCBpc1dvcmRTZXBhcmF0b3IoKSB8fCBpc05vbkJyZWFraW5nU3Bh
Y2UoKTsgfQpAQCAtMTA0LDYgKzEwNSw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0lubGlu
ZUJveFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OklubGluZUJveFN0YXJ0
OyB9CiAgICAgICAgIGJvb2wgaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydDsgfQogICAg
ICAgICBib29sIGlzSW5saW5lQm94RW5kKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6
OklubGluZUJveEVuZDsgfQorICAgICAgICBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFR5cGU6Ok9wYXF1ZTsgfQogCiAgICAgICAgIGJvb2wgaXNDb250ZW50ZnVsKCkg
Y29uc3QgeyByZXR1cm4gKGlzVGV4dCgpICYmIHRleHRDb250ZW50KCktPmxlbmd0aCkgfHwgaXNC
b3goKSB8fCBpc0xpbmVCcmVhaygpIHx8IGlzTGlzdE1hcmtlcigpOyB9CiAgICAgICAgIGJvb2wg
aXNHZW5lcmF0ZWQoKSBjb25zdCB7IHJldHVybiBpc0xpc3RNYXJrZXIoKTsgfQpAQCAtMjA5LDYg
KzIxMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRJbmxpbmVCb3hFbmQoY29uc3QgSW5s
aW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lk
dGgpOwogICAgIHZvaWQgYXBwZW5kTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOwogICAgIHZvaWQgYXBwZW5kV29yZEJyZWFrT3Bwb3J0dW5pdHkoY29uc3Qg
SW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgdm9pZCBhcHBlbmRPcGFxdWVC
b3goY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAKICAgICBJbmxpbmVM
YXlvdXRVbml0IGFkZEJvcmRlckFuZFBhZGRpbmdFbmRGb3JJbmxpbmVCb3hEZWNvcmF0aW9uQ2xv
bmUoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lQm94U3RhcnRJdGVtKTsKICAgICBJbmxpbmVMYXlv
dXRVbml0IHJlbW92ZUJvcmRlckFuZFBhZGRpbmdFbmRGb3JJbmxpbmVCb3hEZWNvcmF0aW9uQ2xv
bmUoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lQm94RW5kSXRlbSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKaW5kZXggMWMyYThmNjkyODNkLi4wYmJlMDUx
Y2YxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAK
QEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVM
ZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gpCiAgICAgICAgICAgICBBU1NFUlQoIWxpbmVIYXND
b250ZW50KTsKICAgICAgICAgICAgIGlmIChydW4uaXNDb250ZW50ZnVsKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBpZiAocnVuLmlzVGV4dCgpIHx8IHJ1bi5p
c1dvcmRCcmVha09wcG9ydHVuaXR5KCkpCisgICAgICAgICAgICBpZiAocnVuLmlzVGV4dCgpIHx8
IHJ1bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkgfHwgcnVuLmlzT3BhcXVlKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBBU1NFUlQocnVuLmlzSW5saW5l
Qm94KCkpOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVj
dElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCkKICAgICAgICAgICAgIGxpbmVCb3gu
YWRkSW5saW5lTGV2ZWxCb3goSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUdlbmVyaWNJbmxpbmVMZXZl
bEJveChsYXlvdXRCb3gsIHN0eWxlLCBsb2dpY2FsTGVmdCkpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEFT
U0VSVChydW4uaXNPcGFxdWUoKSk7CiAgICAgfQogICAgIGxpbmVCb3guc2V0SGFzQ29udGVudChs
aW5lSGFzQ29udGVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAKaW5kZXggYTE3N2FlYmVlNmY4Li40MzcwODM3N2VlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTExNCw2ICsxMTQsNTIgQEAgc3RhdGljIGJvb2wg
aXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGluZVJh
bmdlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgaGFzVHJhaWxp
bmdTb2Z0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXgsIHNp
emVfdCBsYXlvdXRSYW5nZUVuZCwgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKQorewor
ICAgIGlmICghc29mdFdyYXBPcHBvcnR1bml0eUluZGV4IHx8IHNvZnRXcmFwT3Bwb3J0dW5pdHlJ
bmRleCA9PSBsYXlvdXRSYW5nZUVuZCkgeworICAgICAgICAvLyBUaGlzIGNhbmRpZGF0ZSBpbmxp
bmUgY29udGVudCBlbmRzIGJlY2F1c2UgdGhlIGVudGlyZSBjb250ZW50IGVuZHMgYW5kIG5vdCBi
ZWNhdXNlIHRoZXJlJ3MgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC0z
LyNsaW5lLWJyZWFrLWRldGFpbHMKKyAgICBhdXRvJiB0cmFpbGluZ0lubGluZUl0ZW0gPSBpbmxp
bmVJdGVtc1tzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggLSAxXTsKKyAgICBpZiAodHJhaWxpbmdJ
bmxpbmVJdGVtLmlzRmxvYXQoKSkgeworICAgICAgICAvLyBXaGlsZSB3ZSBzdG9wIGF0IGZsb2F0
cywgdGhleSBhcmUgbm90IGNvbnNpZGVyZWQgcmVhbCBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGllcy4K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAodHJhaWxpbmdJbmxpbmVJdGVt
LmlzQm94KCkgfHwgdHJhaWxpbmdJbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkgfHwgdHJhaWxpbmdJ
bmxpbmVJdGVtLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSB8fCB0cmFpbGluZ0lubGluZUl0ZW0u
aXNJbmxpbmVCb3hFbmQoKSkgeworICAgICAgICAvLyBGb3IgV2ViLWNvbXBhdGliaWxpdHkgdGhl
cmUgaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYmVmb3JlIGFuZCBhZnRlciBlYWNoIHJlcGxh
Y2VkIGVsZW1lbnQgb3Igb3RoZXIgYXRvbWljIGlubGluZS4KKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGlmICh0cmFpbGluZ0lubGluZUl0ZW0uaXNUZXh0KCkpIHsKKyAgICAgICAg
YXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4odHJhaWxpbmdJ
bmxpbmVJdGVtKTsKKyAgICAgICAgaWYgKGlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIC8vIE5vdyBpbiBjYXNlIG9mIG5vbi13
aGl0ZXNwYWNlIHRyYWlsaW5nIGNvbnRlbnQsIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGFjdHVh
bCBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYmVsb25ncyB0byB0aGUgbmV4dCBzZXQuCisgICAgICAg
IC8vIGUuZy4gInRoaXNfaXNfdGhlX3RyYWlsaW5nX3J1bjxzcGFuPiA8LWJ1dF90aGlzX3NwYWNl
X2hlcmVfaXNfdGhlX3NvZnRfd3JhcF9vcHBvcnR1bml0eSIKKyAgICAgICAgLy8gV2hlbiB0aGVy
ZSdzIGFuIGlubGluZSBib3ggc3RhcnQoPHNwYW4+KS9lbmQoPC9zcGFuPikgYmV0d2VlbiB0aGUg
dHJhaWxpbmcgYW5kIHRoZSAobmV4dClsZWFkaW5nIHJ1biwgd2hpbGUgd2UgYnJlYWsgYmVmb3Jl
IHRoZSBpbmxpbmUgYm94IHN0YXJ0ICg8c3Bhbj4pCisgICAgICAgIC8vIHRoZSBhY3R1YWwgc29m
dCB3cmFwIHBvc2l0aW9uIGlzIGFmdGVyIHRoZSBpbmxpbmUgYm94IHN0YXJ0ICg8c3Bhbj4pIGJ1
dCBpbiB0ZXJtcyBvZiBsaW5lIGJyZWFraW5nIGNvbnRpbnVpdHkgdGhlIGlubGluZSBib3ggc3Rh
cnQgKDxzcGFuPikgYW5kIHRoZSB3aGl0ZXNwYWNlIHJ1biBiZWxvbmcgdG9nZXRoZXIuCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGxheW91dFJhbmdlRW5kIDw9IGlubGluZUl0ZW1zLnNpemUoKSk7
CisgICAgICAgIGZvciAoYXV0byBpbmRleCA9IHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleDsgaW5k
ZXggPCBsYXlvdXRSYW5nZUVuZDsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKGlubGluZUl0
ZW1zW2luZGV4XS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbXNbaW5kZXhdLmlzSW5s
aW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbXNbaW5kZXhdLmlzT3BhcXVlKCkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAvLyBGSVhNRTogQ2hlY2sgaWYgW25vbi13aGl0
ZXNwYWNlXVtpbmxpbmUtYm94XVtuby13aGl0ZXNwYWNlXSBjb250ZW50IGhhcyBydWxlcyBhYm91
dCBpdC4KKyAgICAgICAgICAgIC8vIEZvciBub3cgbGV0J3Mgc2F5IHRoZSBzb2Z0IHdyYXAgcG9z
aXRpb24gYmVsb25ncyB0byB0aGUgbmV4dCBzZXQgb2YgcnVucyB3aGVuIFtub24td2hpdGVzcGFj
ZV1baW5saW5lLWJveF1bd2hpdGVzcGFjZV0sIFtub24td2hpdGVzcGFjZV1baW5saW5lLWJveF1b
Ym94XSBldGMuCisgICAgICAgICAgICByZXR1cm4gaW5saW5lSXRlbXNbaW5kZXhdLmlzVGV4dCgp
ICYmICFkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbXNbaW5kZXhdKS5pc1doaXRl
c3BhY2UoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYg
KHRyYWlsaW5nSW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkpIHsKKyAgICAgICAgLy8gVGhp
cyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVuIHRoZSBpbmxpbmUgYm94J3MgZmlzdCBjaGlsZCBpcyBh
IGZsb2F0IGJveC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAodHJhaWxp
bmdJbmxpbmVJdGVtLmlzT3BhcXVlKCkpIHsKKyAgICAgICAgQVNTRVJUKHNvZnRXcmFwT3Bwb3J0
dW5pdHlJbmRleCA+IDEpOyAvLyBDYW4ndCBoYXZlIG9wYXF1ZSBpdGVtcyBvbmx5IGNhbmRpZGF0
ZSBjb250ZW50LgorICAgICAgICByZXR1cm4gaGFzVHJhaWxpbmdTb2Z0V3JhcE9wcG9ydHVuaXR5
KHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCAtIDEsIGxheW91dFJhbmdlRW5kLCBpbmxpbmVJdGVt
cyk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB0cnVlOwor
fTsKKwogc3RhdGljIFRleHREaXJlY3Rpb24gaW5saW5lQmFzZURpcmVjdGlvbkZvckxpbmVDb250
ZW50KGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnMsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5
bGUsIHN0ZDo6b3B0aW9uYWw8UHJldmlvdXNMaW5lPiBwcmV2aW91c0xpbmUpCiB7CiAgICAgQVNT
RVJUKCFydW5zLmlzRW1wdHkoKSk7CkBAIC0xNjQsOSArMjEwLDkgQEAgc3RydWN0IExpbmVDYW5k
aWRhdGUgewogCiBpbmxpbmUgdm9pZCBMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50OjphcHBl
bmRJbmxpbmVJdGVtKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiB7Ci0gICAgQVNTRVJU
KGlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0u
aXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSk7CisgICAg
QVNTRVJUKGlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGlu
ZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSB8
fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpOwogCi0gICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSB8
fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94
RW5kKCkpCisgICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5l
Qm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbS5p
c09wYXF1ZSgpKQogICAgICAgICByZXR1cm4gbV9jb250aW51b3VzQ29udGVudC5hcHBlbmQoaW5s
aW5lSXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7CiAKICAgICBpZiAoaW5saW5lSXRlbS5pc1Rl
eHQoKSkKQEAgLTQ5Miw3ICs1MzgsNyBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjps
ZWFkaW5nUHVuY3R1YXRpb25XaWR0aEZvckxpbmVDYW5kaWF0ZShzaXplX3QgZmlycwogICAgICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IGZpcnN0SW5saW5lVGV4dEl0ZW1JbmRleDsgaW5kZXgtLSA+
IGNhbmRpZGF0ZUNvbnRlbnRTdGFydEluZGV4OykgewogICAgICAgICAgICAgYXV0byYgaW5saW5l
SXRlbSA9IG1faW5saW5lSXRlbXNbaW5kZXhdOwogICAgICAgICAgICAgQVNTRVJUKCFpbmxpbmVJ
dGVtLmlzVGV4dCgpICYmICFpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkgJiYgIWlubGluZUl0ZW0u
aXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsKLSAgICAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlz
RmxvYXQoKSkKKyAgICAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzRmxvYXQoKSB8fCBpbmxpbmVJ
dGVtLmlzT3BhcXVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBh
dXRvIGlzQ29udGVudGZ1bCA9IGlubGluZUl0ZW0uaXNCb3goKQogICAgICAgICAgICAgICAgIHx8
IChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSAmJiBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGlubGluZUl0ZW0ubGF5b3V0Qm94KCkpLm1hcmdpbkJvcmRlckFuZFBhZGRp
bmdTdGFydCgpKQpAQCAtNTIzLDcgKzU2OSw3IEBAIElubGluZUxheW91dFVuaXQgTGluZUJ1aWxk
ZXI6OnRyYWlsaW5nUHVuY3R1YXRpb25PclN0b3BPckNvbW1hV2lkdGhGb3JMaW5lQ2FuZGlhCiAg
ICAgICAgIGZvciAoYXV0byBpbmRleCA9IGxhc3RJbmxpbmVUZXh0SXRlbUluZGV4ICsgMTsgaW5k
ZXggPCBsYXlvdXRSYW5nZUVuZDsgKytpbmRleCkgewogICAgICAgICAgICAgYXV0byBpc0NvbnRl
bnRmdWxJbmxpbmVJdGVtID0gWyZdIHsKICAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVJdGVt
ID0gbV9pbmxpbmVJdGVtc1tpbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKGlubGluZUl0ZW0u
aXNGbG9hdCgpKQorICAgICAgICAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzRmxvYXQoKSB8fCBp
bmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICBpZiAoaW5saW5lSXRlbS5pc1RleHQoKSkgewogICAgICAgICAgICAg
ICAgICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihp
bmxpbmVJdGVtKTsKQEAgLTYxOCwxMSArNjY0LDE1IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRp
ZGF0ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHNpemVfdCBj
CiAgICAgICAgICAgICAvLyBlLmcuIDxzcGFuPjx3YnI+PC9zcGFuPgogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IGluZGV4ICsgMTsgaSA8IHNvZnRXcmFwT3Bw
b3J0dW5pdHlJbmRleDsgKytpKQotICAgICAgICAgICAgICAgIEFTU0VSVChtX2lubGluZUl0ZW1z
W2ldLmlzSW5saW5lQm94RW5kKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChtX2lubGluZUl0
ZW1zW2ldLmlzSW5saW5lQm94RW5kKCkgfHwgbV9pbmxpbmVJdGVtc1tpXS5pc09wYXF1ZSgpKTsK
ICNlbmRpZgogICAgICAgICAgICAgaW5saW5lSXRlbS5pc0xpbmVCcmVhaygpID8gbGluZUNhbmRp
ZGF0ZS5pbmxpbmVDb250ZW50LmFwcGVuZFRyYWlsaW5nTGluZUJyZWFrKGlubGluZUl0ZW0pIDog
bGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmFwcGVuZHRyYWlsaW5nV29yZEJyZWFrT3Bwb3J0
dW5pdHkoaW5saW5lSXRlbSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoaW5saW5lSXRlbS5pc09wYXF1ZSgpKSB7CisgICAgICAgICAgICBsaW5lQ2FuZGlk
YXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5lSXRlbShpbmxpbmVJdGVtLCBzdHlsZSwgeyB9
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuc2V0QWNj
dW11bGF0ZWRDbG9uZWREZWNvcmF0aW9uRW5kKGFjY3VtdWxhdGVkRGVjb3JhdGlvbkVuZFdpZHRo
KTsKQEAgLTYzOCw0NyArNjg4LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVu
dEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGMKICAgICB9Owog
ICAgIHNldExlYWRpbmdBbmRUcmFpbGluZ0hhbmdpbmdQdW5jdHVhdGlvbigpOwogCi0gICAgYXV0
byBpbmxpbmVDb250ZW50RW5kc0luU29mdFdyYXBPcHBvcnR1bml0eSA9IFsmXSB7Ci0gICAgICAg
IGlmICghc29mdFdyYXBPcHBvcnR1bml0eUluZGV4IHx8IHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRl
eCA9PSBsYXlvdXRSYW5nZS5lbmRJbmRleCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGNhbmRp
ZGF0ZSBpbmxpbmUgY29udGVudCBlbmRzIGJlY2F1c2UgdGhlIGVudGlyZSBjb250ZW50IGVuZHMg
YW5kIG5vdCBiZWNhdXNlIHRoZXJlJ3MgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1faW5saW5lSXRlbXNb
c29mdFdyYXBPcHBvcnR1bml0eUluZGV4IC0gMV0uaXNGbG9hdCgpKSB7Ci0gICAgICAgICAgICAv
LyBXaGlsZSB3ZSBzdG9wIGF0IGZsb2F0cywgdGhleSBhcmUgbm90IGNvbnNpZGVyZWQgcmVhbCBz
b2Z0IHdyYXAgb3Bwb3J0dW5pdGllcy4gCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC0zLyNs
aW5lLWJyZWFrLWRldGFpbHMKLSAgICAgICAgYXV0byYgdHJhaWxpbmdJbmxpbmVJdGVtID0gbV9p
bmxpbmVJdGVtc1tzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggLSAxXTsKLSAgICAgICAgaWYgKHRy
YWlsaW5nSW5saW5lSXRlbS5pc0JveCgpIHx8IHRyYWlsaW5nSW5saW5lSXRlbS5pc0xpbmVCcmVh
aygpIHx8IHRyYWlsaW5nSW5saW5lSXRlbS5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkgfHwgdHJh
aWxpbmdJbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpIHsKLSAgICAgICAgICAgIC8vIEZvciBX
ZWItY29tcGF0aWJpbGl0eSB0aGVyZSBpcyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZWZvcmUg
YW5kIGFmdGVyIGVhY2ggcmVwbGFjZWQgZWxlbWVudCBvciBvdGhlciBhdG9taWMgaW5saW5lLgot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRyYWlsaW5n
SW5saW5lSXRlbS5pc1RleHQoKSkgewotICAgICAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0g
PSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4odHJhaWxpbmdJbmxpbmVJdGVtKTsKLSAgICAgICAg
ICAgIGlmIChpbmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIC8vIE5vdyBpbiBjYXNlIG9mIG5vbi13aGl0ZXNwYWNl
IHRyYWlsaW5nIGNvbnRlbnQsIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGFjdHVhbCBzb2Z0IHdy
YXAgb3Bwb3J0dW5pdHkgYmVsb25ncyB0byB0aGUgbmV4dCBzZXQuCi0gICAgICAgICAgICAvLyBl
LmcuICJ0aGlzX2lzX3RoZV90cmFpbGluZ19ydW48c3Bhbj4gPC1idXRfdGhpc19zcGFjZV9oZXJl
X2lzX3RoZV9zb2Z0X3dyYXBfb3Bwb3J0dW5pdHkiCi0gICAgICAgICAgICAvLyBXaGVuIHRoZXJl
J3MgYW4gaW5saW5lIGJveCBzdGFydCg8c3Bhbj4pL2VuZCg8L3NwYW4+KSBiZXR3ZWVuIHRoZSB0
cmFpbGluZyBhbmQgdGhlIChuZXh0KWxlYWRpbmcgcnVuLCB3aGlsZSB3ZSBicmVhayBiZWZvcmUg
dGhlIGlubGluZSBib3ggc3RhcnQgKDxzcGFuPikKLSAgICAgICAgICAgIC8vIHRoZSBhY3R1YWwg
c29mdCB3cmFwIHBvc2l0aW9uIGlzIGFmdGVyIHRoZSBpbmxpbmUgYm94IHN0YXJ0ICg8c3Bhbj4p
IGJ1dCBpbiB0ZXJtcyBvZiBsaW5lIGJyZWFraW5nIGNvbnRpbnVpdHkgdGhlIGlubGluZSBib3gg
c3RhcnQgKDxzcGFuPikgYW5kIHRoZSB3aGl0ZXNwYWNlIHJ1biBiZWxvbmcgdG9nZXRoZXIuCi0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChsYXlvdXRSYW5nZS5lbmRJbmRleCgpIDw9IG1faW5s
aW5lSXRlbXMuc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvciAoYXV0byBpbmRleCA9IHNvZnRXcmFw
T3Bwb3J0dW5pdHlJbmRleDsgaW5kZXggPCBsYXlvdXRSYW5nZS5lbmRJbmRleCgpOyArK2luZGV4
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5lSXRlbXNbaW5kZXhdLmlzSW5saW5lQm94
U3RhcnQoKSB8fCBtX2lubGluZUl0ZW1zW2luZGV4XS5pc0lubGluZUJveEVuZCgpKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2hlY2sg
aWYgW25vbi13aGl0ZXNwYWNlXVtpbmxpbmUtYm94XVtuby13aGl0ZXNwYWNlXSBjb250ZW50IGhh
cyBydWxlcyBhYm91dCBpdC4KLSAgICAgICAgICAgICAgICAvLyBGb3Igbm93IGxldCdzIHNheSB0
aGUgc29mdCB3cmFwIHBvc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5leHQgc2V0IG9mIHJ1bnMgd2hl
biBbbm9uLXdoaXRlc3BhY2VdW2lubGluZS1ib3hdW3doaXRlc3BhY2VdLCBbbm9uLXdoaXRlc3Bh
Y2VdW2lubGluZS1ib3hdW2JveF0gZXRjLgotICAgICAgICAgICAgICAgIHJldHVybiBtX2lubGlu
ZUl0ZW1zW2luZGV4XS5pc1RleHQoKSAmJiAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG1faW5s
aW5lSXRlbXNbaW5kZXhdKS5pc1doaXRlc3BhY2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0cmFpbGluZ0lubGluZUl0
ZW0uaXNJbmxpbmVCb3hTdGFydCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lh
bCBjYXNlIHdoZW4gdGhlIGlubGluZSBib3gncyBmaXN0IGNoaWxkIGlzIGEgZmxvYXQgYm94Lgot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9OwotICAgIGxpbmVDYW5kaWRh
dGUuaW5saW5lQ29udGVudC5zZXRIYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0dW5pdHkoaW5saW5l
Q29udGVudEVuZHNJblNvZnRXcmFwT3Bwb3J0dW5pdHkoKSk7CisgICAgbGluZUNhbmRpZGF0ZS5p
bmxpbmVDb250ZW50LnNldEhhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eShoYXNUcmFpbGlu
Z1NvZnRXcmFwT3Bwb3J0dW5pdHkoc29mdFdyYXBPcHBvcnR1bml0eUluZGV4LCBsYXlvdXRSYW5n
ZS5lbmRJbmRleCgpLCBtX2lubGluZUl0ZW1zKSk7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZERp
c2FibGVIeXBoZW5hdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCB1bnNpZ25lZCBz
dWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCAx
ZDRkYjViNDcxYTQuLmNmNzdiYzVmNjE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtNDk2
LDYgKzQ5NiwxMCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05v
bkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgICAgICAgICAgICAgLCBi
b3hlcyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBpZiAobGlu
ZVJ1bi5pc09wYXF1ZSgpKSB7CisgICAgICAgICAgICAvLyBTZXQgZ2VvbWV0cnkgZm9yIHRoaXMg
b3BhcXVlIGJveC4KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIEFT
U0VSVChsaW5lUnVuLmlzSW5saW5lQm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRCcmVha09wcG9y
dHVuaXR5KCkpOwogICAgIH0KIH0KQEAgLTY4OSw4ICs2OTMsOCBAQCB2b2lkIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1
bHQmIGxpbgogICAgICAgICAgICAgYXV0byYgbGluZVJ1biA9IGlubGluZUNvbnRlbnRbdmlzdWFs
T3JkZXJdOwogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3go
KTsKIAotICAgICAgICAgICAgYXV0byBuZWVkc0Rpc3BsYXlCb3ggPSAhbGluZVJ1bi5pc1dvcmRC
cmVha09wcG9ydHVuaXR5KCkgJiYgIWxpbmVSdW4uaXNJbmxpbmVCb3hFbmQoKTsKLSAgICAgICAg
ICAgIGlmICghbmVlZHNEaXNwbGF5Qm94KQorICAgICAgICAgICAgYXV0byBuZWVkc0Rpc3BsYXlC
b3hPckdlb21ldHJ5U2V0dGluZyA9ICFsaW5lUnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSAm
JiAhbGluZVJ1bi5pc0lubGluZUJveEVuZCgpOworICAgICAgICAgICAgaWYgKCFuZWVkc0Rpc3Bs
YXlCb3hPckdlb21ldHJ5U2V0dGluZykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgYXV0byB2aXN1YWxSZWN0UmVsYXRpdmVUb1Jvb3QgPSBbJl0oYXV0byBsb2dpY2Fs
UmVjdCkgewpAQCAtNzU5LDYgKzc2MywxMCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVp
bGRlcjo6cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmIGxpbgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChsaW5lUnVuLmlzT3BhcXVlKCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBTZXQgZ2VvbWV0cnkgZm9yIHRoaXMgb3BhcXVlIGJveC4KKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICB9CiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467449</attachid>
            <date>2023-08-25 19:22:22 -0700</date>
            <delta_ts>2023-08-26 08:52:07 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-260693-20230825192221.patch</filename>
            <type>text/plain</type>
            <size>41024</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBhYTY2MDVlMzBhMTk5ZjhlMjM3ZDY0YTM3YjQ2MmMwNTc2MDZjZDJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMjQgQXVnIDIwMjMgMjA6NTU6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bnRyb2R1Y2UgSW5saW5lSXRlbSB0eXBlICdvcGFxdWUnCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYwNjkzCgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KClRo
aXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGltcGxlbWVudGluZyBvdXQtb2YtZmxvdyBzdGF0aWMg
cG9zaXRpb25pbmcgYnkgcGxhY2luZyBvcGFxdWUgaXRlbXMgb24gdGhlIGxpbmUuCgpBbiBvcGFx
dWUgaXRlbToKICAtIGRvZXMgbm90IGludHJvZHVjZSBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eQog
IC0gZG9lcyBub3QgcGFydGljaXBhdGUgaW4gbGluZSBicmVha2luZyAoemVybyBsb2dpY2FsIHdp
ZHRoKQogIC0gaGFzIHRoZSBiaWRpIGxldmVsIG9mIDB4ZmYKICAtIGRvZXMgbm90IGFmZmVjdCBw
YXJlbnQgaW5saW5lIGJveC9saW5lIGJveCBoZWlnaHQKICAtIGRvZXMgbm90IGNyZWF0ZSBkaXNw
bGF5IGJveAoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6Omhhc0xlYWRpbmdU
ZXh0Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OmlzV2hpdGVzcGFjZU9ubHlDb250ZW50KToK
KFdlYkNvcmU6OkxheW91dDo6aXNOb25Db250ZW50UnVuc09ubHkpOgooV2ViQ29yZTo6TGF5b3V0
Ojppc1dyYXBwYWJsZVJ1bik6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2Vy
OjpDb250aW51b3VzQ29udGVudDo6YXBwZW5kKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGbG9hdENvbnRlbnRP
bmx5KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnk6OmlubGluZUl0ZW1XaWR0aCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6
OmlzQXRTb2Z0V3JhcE9wcG9ydHVuaXR5KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtLmg6CihXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUl0ZW06OmlzT3BhcXVlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lSXRlbXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMpOgooV2ViQ29yZTo6TGF5b3V0
OjpidWlsZEJpZGlQYXJhZ3JhcGgpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjph
cHBlbmQpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRUZXh0Q29udGVudCk6CihXZWJD
b3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZE9wYXF1ZUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OlRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDo6cmVtb3ZlKToKKFdlYkNvcmU6OkxheW91dDo6
dG9MaW5lUnVuVHlwZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZS5oOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmlzT3V0
T2ZGbG93UG9zaXRpb25lZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyk6CiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQ2FuZGlkYXRlOjpJbmxpbmVDb250ZW50Ojph
cHBlbmRJbmxpbmVJdGVtKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmxlYWRpbmdQ
dW5jdHVhdGlvbldpZHRoRm9yTGluZUNhbmRpYXRlIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6
TGluZUJ1aWxkZXI6OnRyYWlsaW5nUHVuY3R1YXRpb25PclN0b3BPckNvbW1hV2lkdGhGb3JMaW5l
Q2FuZGlhdGUgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2FuZGlkYXRl
Q29udGVudEZvckxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNv
bnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnBy
b2Nlc3NCaWRpQ29udGVudCk6Ci0tLQogLi4uL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5j
cHAgICAgICAgICAgIHwgIDM3ICsrKystLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwICAgICAgICB8ICAyOSArKystLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwICAgICAgIHwgIDM4ICsrKystLS0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUl0ZW0uaCAgICB8ICAgNiArLQogLi4uL2lubGluZS9JbmxpbmVJdGVtc0J1
aWxkZXIuY3BwICAgICAgICAgICAgIHwgICA0ICsKIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmUuY3BwICB8ICAxOSArKystCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lLmggICAgfCAgIDUgKy0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveEJ1
aWxkZXIuY3BwICAgICAgICAgICB8ICAgNCArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgICAgICAgICAgICAgIHwgMTAyICsrKysrKysrKystLS0tLS0tLQogLi4uL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCAgIHwgIDEyICsrLQogMTAgZmlsZXMgY2hh
bmdlZCwgMTU4IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCA2MWNjZTExNDM0ODkuLjdmYzYy
MTQxOTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzTGVhZGluZ1RleHRDb250
ZW50KGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQwogewogICAgIGZvciAo
YXV0byYgcnVuIDogY29udGludW91c0NvbnRlbnQucnVucygpKSB7CiAgICAgICAgIGF1dG8mIGlu
bGluZUl0ZW0gPSBydW4uaW5saW5lSXRlbTsKLSAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxp
bmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKKyAgICAgICAgaWYg
KGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hF
bmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgcmV0dXJuIGlubGluZUl0ZW0uaXNUZXh0KCk7CiAgICAgfQpAQCAtNjUsNyArNjUsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlT25seUNvbnRlbnQoY29uc3QgSW5saW5l
Q29udGVudEJyZWFrZXI6OkNvbnRpbnVvdQogICAgIGF1dG8gaGFzV2hpdGVzcGFjZSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgcnVuIDogY29udGludW91c0NvbnRlbnQucnVucygpKSB7CiAgICAg
ICAgIGF1dG8mIGlubGluZUl0ZW0gPSBydW4uaW5saW5lSXRlbTsKLSAgICAgICAgaWYgKGlubGlu
ZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkK
KyAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0u
aXNJbmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgYXV0byBpc1doaXRlc3BhY2UgPSBpbmxpbmVJdGVtLmlzVGV4dCgp
ICYmIGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKS5pc1doaXRlc3BhY2UoKTsK
ICAgICAgICAgaWYgKCFpc1doaXRlc3BhY2UpCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc05vbkNvbnRlbnRSdW5zT25seShjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6
Q29udGludW91c0NvCiAgICAgLy8gPHNwYW4+PC9zcGFuPiA8LSBub24gY29udGVudCBydW5zLgog
ICAgIGZvciAoYXV0byYgcnVuIDogY29udGludW91c0NvbnRlbnQucnVucygpKSB7CiAgICAgICAg
IGF1dG8mIGlubGluZUl0ZW0gPSBydW4uaW5saW5lSXRlbTsKLSAgICAgICAgaWYgKGlubGluZUl0
ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKKyAg
ICAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE5MCwxMCArMTkwLDExIEBA
IElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nl
c3NPdmVyZmxvd2luZ0NvbnRlbnQoY29uCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBy
dW5zID0gY29udGludW91c0NvbnRlbnQucnVucygpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxlYWRpbmdUZXh0UnVuSW5kZXggPT0gcnVucy5zaXplKCkgLSAxKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXJ1bnNbbGVhZGluZ1RleHRSdW5JbmRleCArIDFdLmlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVhZGluZ1RleHRSdW5JbmRl
eDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byBydW5JbmRleCA9IGxlYWRpbmdU
ZXh0UnVuSW5kZXggKyAxOyBydW5JbmRleCA8IHJ1bnMuc2l6ZSgpOyArK3J1bkluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFydW5zW3J1bkluZGV4XS5pbmxpbmVJdGVt
LmlzSW5saW5lQm94RW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgaW5s
aW5lSXRlbSA9IHJ1bnNbcnVuSW5kZXhdLmlubGluZUl0ZW07CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFp
bmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBydW5JbmRleCAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjgxLDE3ICsyODIsMjQgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kVHJhaWxpbmdSdW5JbmRleChjb25zdCBJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q28KICAgICAvLyBUcnkgbm90IGJyZWFrIGNvbnRlbnQgYXQgaW5s
aW5lIGJveCBib3VuZGFyeQogICAgIC8vIGUuZy4gPHNwYW4+Zml0czwvc3Bhbj48c3Bhbj5vdmVy
Zmxvd3M8L3NwYW4+CiAgICAgLy8gd2hlbiB0aGUgdGV4dCAib3ZlcmZsb3dzIiBjb21wbGV0ZWx5
IG92ZXJmbG93cywgbGV0J3MgYnJlYWsgdGhlIGNvbnRlbnQgcmlnaHQgYmVmb3JlIHRoZSAnPHNw
YW4+Jy4KKyAgICBhdXRvIGxhc3RPcGFxdWVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4geyB9OwogICAgIGZvciAoYXV0byB0cmFpbGluZ0NhbmRpZGF0ZUluZGV4ID0gYnJlYWthYmxl
UnVuSW5kZXg7IHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXgtLTspIHsKLSAgICAgICAgYXV0byBpc0F0
SW5saW5lQm94ID0gcnVuc1t0cmFpbGluZ0NhbmRpZGF0ZUluZGV4XS5pbmxpbmVJdGVtLmlzSW5s
aW5lQm94U3RhcnQoKTsKKyAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IHJ1bnNbdHJhaWxpbmdD
YW5kaWRhdGVJbmRleF0uaW5saW5lSXRlbTsKKyAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNPcGFx
dWUoKSkgeworICAgICAgICAgICAgbGFzdE9wYXF1ZUl0ZW1JbmRleCA9IHRyYWlsaW5nQ2FuZGlk
YXRlSW5kZXg7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBhdXRv
IGlzQXRJbmxpbmVCb3ggPSBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKTsKICAgICAgICAg
aWYgKCFpc0F0SW5saW5lQm94KQotICAgICAgICAgICAgcmV0dXJuIHRyYWlsaW5nQ2FuZGlkYXRl
SW5kZXg7CisgICAgICAgICAgICByZXR1cm4gbGFzdE9wYXF1ZUl0ZW1JbmRleC52YWx1ZV9vcih0
cmFpbGluZ0NhbmRpZGF0ZUluZGV4KTsKKyAgICAgICAgbGFzdE9wYXF1ZUl0ZW1JbmRleCA9IHsg
fTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGJvb2wgaXNXcmFwcGFibGVS
dW4oY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHJ1
bikKK3N0YXRpYyBib29sIGlzQnJlYWthYmxlUnVuKGNvbnN0IElubGluZUNvbnRlbnRCcmVha2Vy
OjpDb250aW51b3VzQ29udGVudDo6UnVuJiBydW4pCiB7Ci0gICAgQVNTRVJUKHJ1bi5pbmxpbmVJ
dGVtLmlzVGV4dCgpIHx8IHJ1bi5pbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4u
aW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8IHJ1bi5pbmxpbmVJdGVtLmxheW91dEJveCgp
LmlzSW1hZ2UoKSB8fCBydW4uaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc0xpc3RNYXJrZXJCb3go
KSk7CisgICAgQVNTRVJUKHJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpIHx8IHJ1bi5pbmxpbmVJdGVt
LmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8
IHJ1bi5pbmxpbmVJdGVtLmlzT3BhcXVlKCkgfHwgcnVuLmlubGluZUl0ZW0ubGF5b3V0Qm94KCku
aXNJbWFnZSgpIHx8IHJ1bi5pbmxpbmVJdGVtLmxheW91dEJveCgpLmlzTGlzdE1hcmtlckJveCgp
KTsKICAgICBpZiAoIXJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKSB7CiAgICAgICAgIC8vIENhbid0
IGJyZWFrIGhvcml6b250YWwgc3BhY2luZyAtPiBlLmcuIDxzcGFuIHN0eWxlPSJwYWRkaW5nLXJp
Z2h0OiAxMDBweDsiPnRleHRjb250ZW50PC9zcGFuPiwgaWYgdGhlIFtpbmxpbmUgYm94IGVuZF0g
aXMgdGhlIG92ZXJmbG93biBpbmxpbmUgaXRlbQogICAgICAgICAvLyB3ZSBuZWVkIHRvIGNoZWNr
IGlmIHRoZXJlJ3MgYW5vdGhlciBpbmxpbmUgaXRlbSBiZXlvbmQgdGhlIFtpbmxpbmUgYm94IGVu
ZF0gdG8gc3BsaXQuCkBAIC01NDUsNyArNTUzLDggQEAgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250
ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW4K
IHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29udGVudEJyZWFrZXI6Ok92ZXJmbG93aW5nVGV4dENvbnRl
bnQ6OkJyZWFraW5nUG9zaXRpb24+IElubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luZ092
ZXJmbG93aW5nUnVuKGNvbnN0IExpbmVTdGF0dXMmIGxpbmVTdGF0dXMsIGNvbnN0IENvbnRpbnVv
dXNDb250ZW50OjpSdW5MaXN0JiBydW5zLCBzaXplX3Qgb3ZlcmZsb3dpbmdSdW5JbmRleCwgSW5s
aW5lTGF5b3V0VW5pdCBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkgY29uc3QKIHsKICAgICBh
dXRvIG92ZXJmbG93aW5nUnVuID0gcnVuc1tvdmVyZmxvd2luZ1J1bkluZGV4XTsKLSAgICBpZiAo
IWlzV3JhcHBhYmxlUnVuKG92ZXJmbG93aW5nUnVuKSkKKyAgICBBU1NFUlQoIW92ZXJmbG93aW5n
UnVuLmlubGluZUl0ZW0uaXNPcGFxdWUoKSk7CisgICAgaWYgKCFpc0JyZWFrYWJsZVJ1bihvdmVy
Zmxvd2luZ1J1bikpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIGF2YWlsYWJsZVdp
ZHRoID0gc3RkOjptYXgoMC5mLCBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoIC0gbm9uT3ZlcmZs
b3dpbmdDb250ZW50V2lkdGgpOwpAQCAtNTY4LDcgKzU3Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8SW5s
aW5lQ29udGVudEJyZWFrZXI6Ok92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRp
b24+IEluCiAgICAgZm9yIChhdXRvIGluZGV4ID0gb3ZlcmZsb3dpbmdSdW5JbmRleDsgaW5kZXgt
LTspIHsKICAgICAgICAgYXV0byYgcnVuID0gcnVuc1tpbmRleF07CiAgICAgICAgIHByZXZpb3Vz
Q29udGVudFdpZHRoIC09IHJ1bi5sb2dpY2FsV2lkdGg7Ci0gICAgICAgIGlmICghaXNXcmFwcGFi
bGVSdW4ocnVuKSkKKyAgICAgICAgaWYgKCFpc0JyZWFrYWJsZVJ1bihydW4pKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7CiAg
ICAgICAgIGF1dG8gYXZhaWxhYmxlV2lkdGggPSBzdGQ6Om1heCgwLmYsIGxpbmVTdGF0dXMuYXZh
aWxhYmxlV2lkdGggLSBwcmV2aW91c0NvbnRlbnRXaWR0aCk7CkBAIC02MDcsNyArNjE2LDcgQEAg
c3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6T3ZlcmZsb3dpbmdUZXh0Q29udGVu
dDo6QnJlYWtpbmdQb3NpdGlvbj4gSW4KICAgICBhdXRvIG5leHRDb250ZW50V2lkdGggPSBub25P
dmVyZmxvd2luZ0NvbnRlbnRXaWR0aCArIHJ1bnNbb3ZlcmZsb3dpbmdSdW5JbmRleF0ubG9naWNh
bFdpZHRoOwogICAgIGZvciAoYXV0byBpbmRleCA9IG92ZXJmbG93aW5nUnVuSW5kZXggKyAxOyBp
bmRleCA8IHJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNb
aW5kZXhdOwotICAgICAgICBpZiAoIWlzV3JhcHBhYmxlUnVuKHJ1bikpIHsKKyAgICAgICAgaWYg
KCFpc0JyZWFrYWJsZVJ1bihydW4pKSB7CiAgICAgICAgICAgICBuZXh0Q29udGVudFdpZHRoICs9
IHJ1bi5sb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAt
ODExLDcgKzgyMCw3IEBAIHZvaWQgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250
ZW50OjpyZXNldFRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpCiAKIHZvaWQgSW5saW5lQ29udGVu
dEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aCkKIHsKLSAgICBBU1NFUlQoaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0u
aXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSk7CisgICAg
QVNTRVJUKGlubGluZUl0ZW0uaXNCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQo
KSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbS5pc09wYXF1ZSgp
KTsKICAgICBtX2lzVGV4dE9ubHlDb250ZW50ID0gZmFsc2U7CiAgICAgYXBwZW5kVG9SdW5MaXN0
KGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgIGlmIChpbmxpbmVJdGVtLmlz
Qm94KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcAppbmRleCBhYzgzMzdkZWVhNDEuLjM0ZGE2NjUyNjFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjI3LDE5ICsyMjcsMjYg
QEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0RmxvYXRDb250ZW50T25seShj
b25zdCBDb25zdHJhaW50c0ZvcklubGluZUMKICAgICBJbmxpbmVJdGVtc0J1aWxkZXIgeyByb290
KCksIGlubGluZUZvcm1hdHRpbmdTdGF0ZSB9LmJ1aWxkKHsgfSk7CiAKICAgICBmb3IgKGF1dG8m
IGlubGluZUl0ZW0gOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKSkgewotICAg
ICAgICBpZiAoIWlubGluZUl0ZW0uaXNGbG9hdCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpKSB7CisgICAgICAg
ICAgICBhdXRvJiBmbG9hdEJveCA9IGlubGluZUl0ZW0ubGF5b3V0Qm94KCk7CisgICAgICAgICAg
ICBhdXRvJiBmbG9hdEJveEdlb21ldHJ5ID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmJveEdlb21l
dHJ5KGZsb2F0Qm94KTsKKyAgICAgICAgICAgIGF1dG8gc3RhdGljUG9zaXRpb24gPSBMYXlvdXRQ
b2ludCB7IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMu
bG9naWNhbFRvcCgpIH07CisgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbi5tb3ZlKGZsb2F0Qm94
R2VvbWV0cnkubWFyZ2luU3RhcnQoKSwgZmxvYXRCb3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSk7
CisgICAgICAgICAgICBmbG9hdEJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHN0YXRpY1Bv
c2l0aW9uKTsKKworICAgICAgICAgICAgYXV0byBmbG9hdEJveFRvcExlZnQgPSBmbG9hdGluZ0Nv
bnRleHQucG9zaXRpb25Gb3JGbG9hdChmbG9hdEJveCwgZmxvYXRCb3hHZW9tZXRyeSwgY29uc3Ry
YWludHMuaG9yaXpvbnRhbCgpKTsKKyAgICAgICAgICAgIGZsb2F0Qm94R2VvbWV0cnkuc2V0TG9n
aWNhbFRvcExlZnQoZmxvYXRCb3hUb3BMZWZ0KTsKKyAgICAgICAgICAgIGZsb2F0aW5nU3RhdGUu
YXBwZW5kKGZsb2F0aW5nQ29udGV4dC50b0Zsb2F0SXRlbShmbG9hdEJveCwgZmxvYXRCb3hHZW9t
ZXRyeSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byYg
ZmxvYXRCb3ggPSBpbmxpbmVJdGVtLmxheW91dEJveCgpOwotICAgICAgICBhdXRvJiBmbG9hdEJv
eEdlb21ldHJ5ID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGZsb2F0Qm94KTsK
LSAgICAgICAgYXV0byBzdGF0aWNQb3NpdGlvbiA9IExheW91dFBvaW50IHsgY29uc3RyYWludHMu
aG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkgfTsKLSAg
ICAgICAgc3RhdGljUG9zaXRpb24ubW92ZShmbG9hdEJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCks
IGZsb2F0Qm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkpOwotICAgICAgICBmbG9hdEJveEdlb21l
dHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHN0YXRpY1Bvc2l0aW9uKTsKLQotICAgICAgICBhdXRvIGZs
b2F0Qm94VG9wTGVmdCA9IGZsb2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvckZsb2F0KGZsb2F0Qm94
LCBmbG9hdEJveEdlb21ldHJ5LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwotICAgICAgICBm
bG9hdEJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KGZsb2F0Qm94VG9wTGVmdCk7Ci0gICAg
ICAgIGZsb2F0aW5nU3RhdGUuYXBwZW5kKGZsb2F0aW5nQ29udGV4dC50b0Zsb2F0SXRlbShmbG9h
dEJveCwgZmxvYXRCb3hHZW9tZXRyeSkpOworICAgICAgICBpZiAoaW5saW5lSXRlbS5pc09wYXF1
ZSgpKSB7CisgICAgICAgICAgICBhdXRvJiBvcGFxdWVCb3ggPSBpbmxpbmVJdGVtLmxheW91dEJv
eCgpOworICAgICAgICAgICAgaWYgKG9wYXF1ZUJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkg
eworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQgdGhlIHN0YXRpYyBwb3NpdGlvbi4KKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDI2OGMzNmQ3Mjc4My4uM2Vj
YWMzY2M3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAKQEAgLTUyOCw2ICs1MjgsOSBAQCBJbmxpbmVMYXlvdXRVbml0IElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lSXRlbVdpZHRoKGNvbnN0IElubGluZUl0ZW0mIGlubAog
ICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCiAgICAgICAgIHJldHVybiBib3hH
ZW9tZXRyeS5tYXJnaW5FbmQoKSArIGJveEdlb21ldHJ5LmJvcmRlckVuZCgpICsgYm94R2VvbWV0
cnkucGFkZGluZ0VuZCgpLnZhbHVlX29yKDApOwogCisgICAgaWYgKGlubGluZUl0ZW0uaXNPcGFx
dWUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIC8vIEZJWE1FOiBUaGUgb3Zlcmhhbmcg
c2hvdWxkIGJlIGNvbXB1dGVkIHRvIG5vdCBvdmVybGFwIHRoZSBuZWlnaGJvcmluZyBydW5zIG9y
IG92ZXJmbG93IHRoZSBsaW5lLgogICAgIGlmIChhdXRvKiBydWJ5QWRqdXN0bWVudHMgPSBsYXlv
dXRCb3gucnVieUFkanVzdG1lbnRzKCkpIHsKICAgICAgICAgYXV0byYgb3ZlcmhhbmcgPSB1c2VG
aXJzdExpbmVTdHlsZSA/IHJ1YnlBZGp1c3RtZW50cy0+Zmlyc3RMaW5lT3ZlcmhhbmcgOiBydWJ5
QWRqdXN0bWVudHMtPm92ZXJoYW5nOwpAQCAtNTU5LDEwICs1NjIsMTAgQEAgc3RhdGljIGlubGlu
ZSBib29sIGVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVUZXh0SXRlbSYg
cHJldmlvdXNJbmwKICAgICByZXR1cm4gVGV4dFV0aWw6Om1heUJyZWFrSW5CZXR3ZWVuKHByZXZp
b3VzSW5saW5lVGV4dEl0ZW0sIG5leHRJbmxpbmVUZXh0SXRlbSk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgYm9vbCBpc0F0U29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiBjdXJyZW50
LCBjb25zdCBJbmxpbmVJdGVtJiBuZXh0KQorc3RhdGljIGlubGluZSBib29sIGlzQXRTb2Z0V3Jh
cE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW0mIHByZXZpb3VzLCBjb25zdCBJbmxpbmVJdGVt
JiBuZXh0KQogewogICAgIC8vIEZJWE1FOiBUcmFuc2l0aW9uIG5vLXdyYXBwaW5nIGxvZ2ljIGZy
b20gSW5saW5lQ29udGVudEJyZWFrZXIgdG8gaGVyZSB3aGVyZSB3ZSBjb21wdXRlIHRoZSBzb2Z0
IHdyYXAgb3Bwb3J0dW5pdHkgaW5kZXhlcy4KLSAgICAvLyAiaXMgYXQiIHNpbXBsZSBtZWFucyB0
aGF0IHRoZXJlJ3MgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgcmlnaHQgYWZ0ZXIgdGhlIFtjdXJy
ZW50XS4KKyAgICAvLyAiaXMgYXQiIHNpbXBsZSBtZWFucyB0aGF0IHRoZXJlJ3MgYSBzb2Z0IHdy
YXAgb3Bwb3J0dW5pdHkgcmlnaHQgYWZ0ZXIgdGhlIFtwcmV2aW91c10uCiAgICAgLy8gW3RleHRd
WyBdW3RleHRdW2lubGluZSBib3ggc3RhcnRdLi4uICg8ZGl2PnRleHQgY29udGVudDxzcGFuPi4u
PC9kaXY+KQogICAgIC8vIHNvZnQgd3JhcCBpbmRleGVzOiAwIGFuZCAxIGRlZmluaXRlbHksIDIg
ZGVwZW5kcyBvbiB0aGUgY29udGVudCBhZnRlciB0aGUgW2lubGluZSBib3ggc3RhcnRdLgogCkBA
IC01NzEsMTAgKzU3NCwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNvZnRXcmFwT3Bwb3J0
dW5pdHkoY29uc3QgSW5saW5lSXRlbSYgY3VycmVudCwgY29uc3QgSW5saQogICAgIC8vIGUuZy4g
W2lubGluZSBib3ggc3RhcnRdW3ByaW9yX2NvbnRpbnVvdXNfY29udGVudF1baW5saW5lIGJveCBl
bmRdICg8c3Bhbj5wcmlvcl9jb250aW51b3VzX2NvbnRlbnQ8L3NwYW4+KQogICAgIC8vIEFuIGlu
Y29taW5nIDxpbWc+IGJveCB3b3VsZCBlbmFibGUgdXMgdG8gY29tbWl0IHRoZSAiPHNwYW4+cHJp
b3JfY29udGludW91c19jb250ZW50PC9zcGFuPiIgY29udGVudAogICAgIC8vIGJ1dCBhbiBpbmNv
bWluZyB0ZXh0IGNvbnRlbnQgd291bGQgbm90IG5lY2Vzc2FyaWx5LgotICAgIEFTU0VSVChjdXJy
ZW50LmlzVGV4dCgpIHx8IGN1cnJlbnQuaXNCb3goKSk7CisgICAgQVNTRVJUKHByZXZpb3VzLmlz
VGV4dCgpIHx8IHByZXZpb3VzLmlzQm94KCkpOwogICAgIEFTU0VSVChuZXh0LmlzVGV4dCgpIHx8
IG5leHQuaXNCb3goKSk7Ci0gICAgaWYgKGN1cnJlbnQuaXNUZXh0KCkgJiYgbmV4dC5pc1RleHQo
KSkgewotICAgICAgICBhdXRvJiBjdXJyZW50SW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxp
bmVUZXh0SXRlbT4oY3VycmVudCk7CisgICAgaWYgKHByZXZpb3VzLmlzVGV4dCgpICYmIG5leHQu
aXNUZXh0KCkpIHsKKyAgICAgICAgYXV0byYgY3VycmVudElubGluZVRleHRJdGVtID0gZG93bmNh
c3Q8SW5saW5lVGV4dEl0ZW0+KHByZXZpb3VzKTsKICAgICAgICAgYXV0byYgbmV4dElubGluZVRl
eHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG5leHQpOwogICAgICAgICBpZiAoY3Vy
cmVudElubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpICYmIG5leHRJbmxpbmVUZXh0SXRlbS5p
c1doaXRlc3BhY2UoKSkgewogICAgICAgICAgICAgLy8gPHNwYW4+IDwvc3Bhbj48c3Bhbj4gPC9z
cGFuPi4gRGVwZW5kaW5nIG9uIHRoZSBzdHlsZXMsIHRoZXJlIG1heSBvciBtYXkgbm90IGJlIGEg
c29mdCB3cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4gdGhlc2UgMiB3aGl0ZXNwYWNlIGNvbnRlbnQu
CkBAIC01OTAsMTkgKzU5MywxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNvZnRXcmFwT3Bw
b3J0dW5pdHkoY29uc3QgSW5saW5lSXRlbSYgY3VycmVudCwgY29uc3QgSW5saQogICAgICAgICAg
ICAgYXV0byYgc3R5bGUgPSBuZXh0SW5saW5lVGV4dEl0ZW0uc3R5bGUoKTsKICAgICAgICAgICAg
IHJldHVybiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQoc3R5bGUpICYmIHN0eWxlLndoaXRl
U3BhY2VDb2xsYXBzZSgpICE9IFdoaXRlU3BhY2VDb2xsYXBzZTo6QnJlYWtTcGFjZXMgJiYgc3R5
bGUubGluZUJyZWFrKCkgIT0gTGluZUJyZWFrOjpBZnRlcldoaXRlU3BhY2U7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKGN1cnJlbnQuc3R5bGUoKS5saW5lQnJlYWsoKSA9PSBMaW5lQnJlYWs6OkFu
eXdoZXJlIHx8IG5leHQuc3R5bGUoKS5saW5lQnJlYWsoKSA9PSBMaW5lQnJlYWs6OkFueXdoZXJl
KSB7CisgICAgICAgIGlmIChwcmV2aW91cy5zdHlsZSgpLmxpbmVCcmVhaygpID09IExpbmVCcmVh
azo6QW55d2hlcmUgfHwgbmV4dC5zdHlsZSgpLmxpbmVCcmVhaygpID09IExpbmVCcmVhazo6QW55
d2hlcmUpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5
IGFyb3VuZCBldmVyeSB0eXBvZ3JhcGhpYyBjaGFyYWN0ZXIgdW5pdCwgaW5jbHVkaW5nIGFyb3Vu
ZCBhbnkgcHVuY3R1YXRpb24gY2hhcmFjdGVyCiAgICAgICAgICAgICAvLyBvciBwcmVzZXJ2ZWQg
d2hpdGUgc3BhY2VzLCBvciBpbiB0aGUgbWlkZGxlIG9mIHdvcmRzLgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgLy8gQm90aCBjdXJyZW50IGFuZCBuZXh0IGl0
ZW1zIGFyZSBub24td2hpdGVzcGFjZSB0ZXh0LgorICAgICAgICAvLyBCb3RoIHByZXZpb3VzIGFu
ZCBuZXh0IGl0ZW1zIGFyZSBub24td2hpdGVzcGFjZSB0ZXh0LgogICAgICAgICAvLyBbdGV4dF1b
dGV4dF0gOiBpcyBhIGNvbnRpbnVvdXMgY29udGVudC4KICAgICAgICAgLy8gW3RleHQtXVt0ZXh0
XSA6IGFmdGVyIFtoeXBoZW5dIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5Lgog
ICAgICAgICByZXR1cm4gZW5kc1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5KGN1cnJlbnRJbmxpbmVU
ZXh0SXRlbSwgbmV4dElubGluZVRleHRJdGVtKTsKICAgICB9Ci0gICAgaWYgKGN1cnJlbnQubGF5
b3V0Qm94KCkuaXNMaXN0TWFya2VyQm94KCkgfHwgbmV4dC5sYXlvdXRCb3goKS5pc0xpc3RNYXJr
ZXJCb3goKSkKKyAgICBpZiAocHJldmlvdXMubGF5b3V0Qm94KCkuaXNMaXN0TWFya2VyQm94KCkg
fHwgbmV4dC5sYXlvdXRCb3goKS5pc0xpc3RNYXJrZXJCb3goKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGN1cnJlbnQuaXNCb3goKSB8fCBuZXh0LmlzQm94KCkpIHsKKyAgICBpZiAo
cHJldmlvdXMuaXNCb3goKSB8fCBuZXh0LmlzQm94KCkpIHsKICAgICAgICAgLy8gW3RleHRdW2lu
bGluZSBib3ggc3RhcnRdW2lubGluZSBib3ggZW5kXVtpbmxpbmUgYm94XSAodGV4dDxzcGFuPjwv
c3Bhbj48aW1nPikgOiB0aGVyZSdzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IGJldHdlZW4gdGhl
IFt0ZXh0XSBhbmQgW2ltZ10uCiAgICAgICAgIC8vIFRoZSBsaW5lIGJyZWFraW5nIGJlaGF2aW9y
IG9mIGEgcmVwbGFjZWQgZWxlbWVudCBvciBvdGhlciBhdG9taWMgaW5saW5lIGlzIGVxdWl2YWxl
bnQgdG8gYW4gaWRlb2dyYXBoaWMgY2hhcmFjdGVyLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTYyMywyMCArNjI2LDI0IEBAIHNpemVfdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Om5leHRX
cmFwT3Bwb3J0dW5pdHkoc2l6ZV90IHN0YXJ0SW5kZXgsIGNvbnN0IEluCiAgICAgLy8gW2V4LV1b
aW5saW5lIGJveCBzdGFydF1bbGluZSBicmVha11bYW1wbGVdIChleC08c3Bhbj48YnI+YW1wbGUp
LiBXcmFwIGluZGV4IGlzIGFmdGVyIFticl0uCiAgICAgYXV0byBwcmV2aW91c0lubGluZUl0ZW1J
bmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CiAgICAgZm9yIChhdXRvIGluZGV4ID0g
c3RhcnRJbmRleDsgaW5kZXggPCBsYXlvdXRSYW5nZS5lbmRJbmRleCgpOyArK2luZGV4KSB7Ci0g
ICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBpbmxpbmVJdGVtc1tpbmRleF07Ci0gICAgICAgIGlm
IChpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkgfHwgaW5saW5lSXRlbS5pc1dvcmRCcmVha09wcG9y
dHVuaXR5KCkpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEl0ZW0gPSBpbmxpbmVJdGVtc1tpbmRl
eF07CisgICAgICAgIGlmIChjdXJyZW50SXRlbS5pc0xpbmVCcmVhaygpIHx8IGN1cnJlbnRJdGVt
LmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgYWx3YXlzIHN0
b3AgYXQgZXhwbGljaXQgd3JhcHBpbmcgb3Bwb3J0dW5pdGllcyBlLmcuIDxicj4uIEhvd2V2ZXIg
dGhlIHdyYXAgcG9zaXRpb24gbWF5IGJlIGF0IGxhdGVyIHBvc2l0aW9uLgogICAgICAgICAgICAg
Ly8gZS5nLiA8c3Bhbj48c3Bhbj48YnI+PC9zcGFuPjwvc3Bhbj4gPC0gd3JhcCBwb3NpdGlvbiBp
cyBhZnRlciB0aGUgc2Vjb25kIDwvc3Bhbj4KICAgICAgICAgICAgIC8vIGJ1dCBpbiBjYXNlIG9m
IDxzcGFuPjxicj48c3Bhbj48L3NwYW4+PC9zcGFuPiA8LSB3cmFwIHBvc2l0aW9uIGlzIHJpZ2h0
IGFmdGVyIDxicj4uCiAgICAgICAgICAgICBmb3IgKCsraW5kZXg7IGluZGV4IDwgbGF5b3V0UmFu
Z2UuZW5kSW5kZXgoKSAmJiBpbmxpbmVJdGVtc1tpbmRleF0uaXNJbmxpbmVCb3hFbmQoKTsgKytp
bmRleCkgeyB9CiAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVC
b3hFbmQoKSkgeworICAgICAgICBpZiAoY3VycmVudEl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8
IGN1cnJlbnRJdGVtLmlzSW5saW5lQm94RW5kKCkpIHsKICAgICAgICAgICAgIC8vIE5lZWQgdG8g
c2VlIHdoYXQgY29tZXMgbmV4dCB0byBkZWNpZGUuCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICBBU1NFUlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVt
LmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0Zsb2F0KCkpOwotICAgICAgICBpZiAoaW5saW5lSXRl
bS5pc0Zsb2F0KCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVtLmlzT3BhcXVlKCkpIHsKKyAg
ICAgICAgICAgIC8vIFRoaXMgaXRlbSBpcyBpbnZpc2libGUgdG8gbGluZSBicmVha2luZy4gTmVl
ZCB0byBwcmV0ZW5kIGl0J3Mgbm90IGhlcmUuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoY3VycmVudEl0ZW0uaXNUZXh0KCkgfHwgY3VycmVudEl0ZW0u
aXNCb3goKSB8fCBjdXJyZW50SXRlbS5pc0Zsb2F0KCkpOworICAgICAgICBpZiAoY3VycmVudEl0
ZW0uaXNGbG9hdCgpKSB7CiAgICAgICAgICAgICAvLyBXaGlsZSBmbG9hdHMgYXJlIG5vdCBwYXJ0
IG9mIHRoZSBpbmxpbmUgY29udGVudCBhbmQgdGhleSBhcmUgbm90IHN1cHBvc2VkIHRvIGludHJv
ZHVjZSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdGllcywKICAgICAgICAgICAgIC8vIGUuZy4gW3RleHRd
W2Zsb2F0IGJveF1bZmxvYXQgYm94XVt0ZXh0XVtmbG9hdCBib3hdW3RleHRdIGlzIGVzc2VudGlh
bGx5IGp1c3QgW3RleHRdW3RleHRdW3RleHRdCiAgICAgICAgICAgICAvLyBmaWd1cmluZyBvdXQg
d2hldGhlciBhIGZsb2F0IChvciBzZXQgb2YgZmxvYXRzKSBzaG91bGQgc3RheSBvbiB0aGUgbGlu
ZSBvciBub3QgKGFuZCBoYW5kbGUgcG90ZW50aWFsbHkgb3V0IG9mIG9yZGVyIGlubGluZSBpdGVt
cykKQEAgLTY1MSw3ICs2NTgsNiBAQCBzaXplX3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpu
ZXh0V3JhcE9wcG9ydHVuaXR5KHNpemVfdCBzdGFydEluZGV4LCBjb25zdCBJbgogICAgICAgICB9
CiAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgcHJldmlvdXMgYW5kIGN1cnJlbnQgaXRlbXMgYXJl
IG5vdCBuZWNlc3NhcmlseSBhZGphY2VudCBpdGVtcyBlLmcgInByZXZpb3VzPHNwYW4+Y3VycmVu
dDwvc3Bhbj4iCiAgICAgICAgIGF1dG8mIHByZXZpb3VzSXRlbSA9IGlubGluZUl0ZW1zWypwcmV2
aW91c0lubGluZUl0ZW1JbmRleF07Ci0gICAgICAgIGF1dG8mIGN1cnJlbnRJdGVtID0gaW5saW5l
SXRlbXNbaW5kZXhdOwogICAgICAgICBpZiAoaXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHkocHJldmlv
dXNJdGVtLCBjdXJyZW50SXRlbSkpIHsKICAgICAgICAgICAgIGlmICgqcHJldmlvdXNJbmxpbmVJ
dGVtSW5kZXggKyAxID09IGluZGV4ICYmICghcHJldmlvdXNJdGVtLmlzVGV4dCgpIHx8ICFjdXJy
ZW50SXRlbS5pc1RleHQoKSkpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGtub3cgdGhl
IGV4YWN0IHNvZnQgd3JhcCBvcHBvcnR1bml0eSBpbmRleCB3aGVuIHRoZSBwcmV2aW91cyBhbmQg
Y3VycmVudCBpdGVtcyBhcmUgbmV4dCB0byBlYWNoIG90aGVyLgpAQCAtNjc5LDcgKzY4NSw3IEBA
IHNpemVfdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Om5leHRXcmFwT3Bwb3J0dW5pdHkoc2l6
ZV90IHN0YXJ0SW5kZXgsIGNvbnN0IEluCiAgICAgICAgICAgICAvLyBTb2Z0IHdyYXAgb3Bwb3J0
dW5pdHkgaXMgYXQgdGhlIGZpcnN0IGlubGluZSBib3ggdGhhdCBlbmNsb3NlcyB0aGUgdHJhaWxp
bmcgY29udGVudC4KICAgICAgICAgICAgIGZvciAoYXV0byBjYW5kaWRhdGVJbmRleCA9IHN0YXJ0
ICsgMTsgY2FuZGlkYXRlSW5kZXggPCBlbmQ7ICsrY2FuZGlkYXRlSW5kZXgpIHsKICAgICAgICAg
ICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gaW5saW5lSXRlbXNbY2FuZGlkYXRlSW5kZXhdOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBp
bmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChpbmxp
bmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkg
fHwgaW5saW5lSXRlbS5pc09wYXF1ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lSXRl
bS5pc0lubGluZUJveFN0YXJ0KCkpCiAgICAgICAgICAgICAgICAgICAgIGlubGluZUJveFN0YWNr
LmFwcGVuZCh7ICZpbmxpbmVJdGVtLmxheW91dEJveCgpLCBjYW5kaWRhdGVJbmRleCB9KTsKICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgJiYgIWlu
bGluZUJveFN0YWNrLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaAppbmRleCA2NmUw
MGI2YWMyOTQuLjQzNWQ2NWYzOGE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uaApAQCAtNDQs
NyArNDQsOCBAQCBwdWJsaWM6CiAgICAgICAgIEJveCwKICAgICAgICAgSW5saW5lQm94U3RhcnQs
CiAgICAgICAgIElubGluZUJveEVuZCwKLSAgICAgICAgRmxvYXQKKyAgICAgICAgRmxvYXQsCisg
ICAgICAgIE9wYXF1ZQogICAgIH07CiAgICAgSW5saW5lSXRlbShjb25zdCBCb3gmIGxheW91dEJv
eCwgVHlwZSwgVUJpRGlMZXZlbCA9IFVCSURJX0RFRkFVTFRfTFRSKTsKIApAQCAtNjQsNiArNjUs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0hhcmRMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiB0
eXBlKCkgPT0gVHlwZTo6SGFyZExpbmVCcmVhazsgfQogICAgIGJvb2wgaXNJbmxpbmVCb3hTdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBUeXBlOjpJbmxpbmVCb3hTdGFydDsgfQogICAg
IGJvb2wgaXNJbmxpbmVCb3hFbmQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6SW5s
aW5lQm94RW5kOyB9CisgICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9
PSBUeXBlOjpPcGFxdWU7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSW5saW5lSXRl
bXNCdWlsZGVyOwpAQCAtODIsNyArODQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVC
aURpTGV2ZWwgbV9iaWRpTGV2ZWwgeyBVQklESV9ERUZBVUxUX0xUUiB9OwogCi0gICAgVHlwZSBt
X3R5cGUgOiAzIHsgfTsKKyAgICBUeXBlIG1fdHlwZSA6IDQgeyB9OwogCiBwcm90ZWN0ZWQ6CiAg
ICAgLy8gRm9yIElubGluZVRleHRJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNC
dWlsZGVyLmNwcAppbmRleCA5ZGRjMTBkNWI1ZTcuLjIzYWU2ZDgwODAyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRl
bXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCkBAIC00NjAsOCArNDYwLDEyIEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBidWlsZEJpZGlQYXJhZ3JhcGgoY29uc3QgUmVuZGVyU3R5bGUmIHJv
b3RTdHlsZSwgY29uc3QgSW5saW5lCiAgICAgICAgIH0gZWxzZSBpZiAoaW5saW5lSXRlbS5pc0Zs
b2F0KCkpIHsKICAgICAgICAgICAgIC8vIEZsb2F0cyBhcmUgbm90IHBhcnQgb2YgdGhlIGlubGlu
ZSBjb250ZW50IHdoaWNoIG1ha2UgdGhlbSBvcGFxdWUgdG8gYmlkaS4KICAgICAgICAgICAgIGlu
bGluZUl0ZW1PZmZzZXRMaXN0LnVuY2hlY2tlZEFwcGVuZCh7IH0pOworICAgICAgICB9IGVsc2Ug
aWYgKGlubGluZUl0ZW0uaXNPcGFxdWUoKSkgeworICAgICAgICAgICAgLy8gb3BhcXVlIGl0ZW1z
IGFyZSBhbHNvIG9wYXF1ZSB0byBiaWRpLgorICAgICAgICAgICAgaW5saW5lSXRlbU9mZnNldExp
c3QudW5jaGVja2VkQXBwZW5kKHsgfSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNT
RVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmNwcAppbmRleCBhYTZjMGZmOWNjZGQuLjc2MjU2NGViZDE5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZS5jcHAKQEAgLTM2MCw2ICszNjAsMTAgQEAgdm9pZCBMaW5lOjphcHBlbmQo
Y29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJ
bmxpbmUKICAgICAgICAgYXBwZW5kUmVwbGFjZWRJbmxpbmVMZXZlbEJveChpbmxpbmVJdGVtLCBz
dHlsZSwgbG9naWNhbFdpZHRoKTsKICAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzQm94KCkpCiAg
ICAgICAgIGFwcGVuZE5vblJlcGxhY2VkSW5saW5lTGV2ZWxCb3goaW5saW5lSXRlbSwgc3R5bGUs
IGxvZ2ljYWxXaWR0aCk7CisgICAgZWxzZSBpZiAoaW5saW5lSXRlbS5pc09wYXF1ZSgpKSB7Cisg
ICAgICAgIEFTU0VSVCghbG9naWNhbFdpZHRoKTsKKyAgICAgICAgYXBwZW5kT3BhcXVlQm94KGlu
bGluZUl0ZW0sIHN0eWxlKTsKKyAgICB9CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICBtX2hhc05vbkRlZmF1bHRCaWRpTGV2ZWxSdW4gPSBtX2hhc05vbkRlZmF1
bHRCaWRpTGV2ZWxSdW4gfHwgaW5saW5lSXRlbS5iaWRpTGV2ZWwoKSAhPSBVQklESV9ERUZBVUxU
X0xUUjsKQEAgLTQzOSw3ICs0NDMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50KGNv
bnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSwgY29uc3QgUmVuZGVyUwogICAgICAg
ICAgICAgLy8gcHJvdmlkZWQgYm90aCBzcGFjZXMgYXJlIHdpdGhpbiB0aGUgc2FtZSBpbmxpbmUg
Zm9ybWF0dGluZyBjb250ZXh04oCUaXMgY29sbGFwc2VkIHRvIGhhdmUgemVybyBhZHZhbmNlIHdp
ZHRoLgogICAgICAgICAgICAgaWYgKHJ1bi5pc1RleHQoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gcnVuLmhhc0NvbGxhcHNpYmxlVHJhaWxpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAgICAgICBB
U1NFUlQocnVuLmlzTGlzdE1hcmtlcigpIHx8IHJ1bi5pc0xpbmVTcGFubmluZ0lubGluZUJveFN0
YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxpbmVCb3hFbmQoKSB8
fCBydW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChydW4u
aXNMaXN0TWFya2VyKCkgfHwgcnVuLmlzTGluZVNwYW5uaW5nSW5saW5lQm94U3RhcnQoKSB8fCBy
dW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGluZUJveEVuZCgpIHx8IHJ1bi5pc1dv
cmRCcmVha09wcG9ydHVuaXR5KCkgfHwgcnVuLmlzT3BhcXVlKCkpOwogICAgICAgICB9CiAgICAg
ICAgIC8vIExlYWRpbmcgd2hpdGVzcGFjZS4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NzEs
NiArNjc1LDExIEBAIHZvaWQgTGluZTo6YXBwZW5kV29yZEJyZWFrT3Bwb3J0dW5pdHkoY29uc3Qg
SW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVyCiAgICAgbV9ydW5zLmFwcGVuZCh7
IGlubGluZUl0ZW0sIHN0eWxlLCBsYXN0UnVuTG9naWNhbFJpZ2h0KCkgfSk7CiB9CiAKK3ZvaWQg
TGluZTo6YXBwZW5kT3BhcXVlQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBtX3J1bnMuYXBwZW5kKHsgaW5saW5lSXRlbSwg
c3R5bGUsIGxhc3RSdW5Mb2dpY2FsUmlnaHQoKSB9KTsKK30KKwogSW5saW5lTGF5b3V0VW5pdCBM
aW5lOjphZGRCb3JkZXJBbmRQYWRkaW5nRW5kRm9ySW5saW5lQm94RGVjb3JhdGlvbkNsb25lKGNv
bnN0IElubGluZUl0ZW0mIGlubGluZUJveFN0YXJ0SXRlbSkKIHsKICAgICBBU1NFUlQoaW5saW5l
Qm94U3RhcnRJdGVtLmlzSW5saW5lQm94U3RhcnQoKSk7CkBAIC03OTgsNyArODA3LDcgQEAgSW5s
aW5lTGF5b3V0VW5pdCBMaW5lOjpUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQ6OnJlbW92ZSgpCiAg
ICAgLy8gbm90IHByb2R1Y2UgYSBydW4gc2luY2UgaW4gOjphcHBlbmRUZXh0KCkgd2Ugc2VlIGl0
IGFzIGEgZnVsbHkgdHJpbW1hYmxlIHJ1bi4KICAgICBmb3IgKGF1dG8gaW5kZXggPSAqbV9maXJz
dFRyaW1tYWJsZVJ1bkluZGV4ICsgMTsgaW5kZXggPCBtX3J1bnMuc2l6ZSgpOyArK2luZGV4KSB7
CiAgICAgICAgIGF1dG8mIHJ1biA9IG1fcnVuc1tpbmRleF07Ci0gICAgICAgIEFTU0VSVChydW4u
aXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpIHx8IHJ1bi5pc0xpbmVTcGFubmluZ0lubGluZUJveFN0
YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxpbmVCb3hFbmQoKSB8
fCBydW4uaXNMaW5lQnJlYWsoKSk7CisgICAgICAgIEFTU0VSVChydW4uaXNXb3JkQnJlYWtPcHBv
cnR1bml0eSgpIHx8IHJ1bi5pc0xpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0KCkgfHwgcnVuLmlz
SW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxpbmVCb3hFbmQoKSB8fCBydW4uaXNMaW5lQnJl
YWsoKSB8fCBydW4uaXNPcGFxdWUoKSk7CiAgICAgICAgIHJ1bi5tb3ZlSG9yaXpvbnRhbGx5KC10
cmltbWVkV2lkdGgpOwogICAgIH0KICAgICBpZiAoIXRyaW1tYWJsZVJ1bi50ZXh0Q29udGVudCgp
LT5sZW5ndGgpIHsKQEAgLTgzMywxMCArODQyLDEyIEBAIGlubGluZSBzdGF0aWMgTGluZTo6UnVu
OjpUeXBlIHRvTGluZVJ1blR5cGUoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICAg
ICAgcmV0dXJuIExpbmU6OlJ1bjo6VHlwZTo6SW5saW5lQm94U3RhcnQ7CiAgICAgY2FzZSBJbmxp
bmVJdGVtOjpUeXBlOjpJbmxpbmVCb3hFbmQ6CiAgICAgICAgIHJldHVybiBMaW5lOjpSdW46OlR5
cGU6OklubGluZUJveEVuZDsKKyAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6Ok9wYXF1ZToKKyAg
ICAgICAgcmV0dXJuIExpbmU6OlJ1bjo6VHlwZTo6T3BhcXVlOwogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICByZXR1cm4geyB9OwogfQog
CiBzdGQ6Om9wdGlvbmFsPExpbmU6OlJ1bjo6VHJhaWxpbmdXaGl0ZXNwYWNlOjpUeXBlPiBMaW5l
OjpSdW46OnRyYWlsaW5nV2hpdGVzcGFjZVR5cGUoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGlu
ZVRleHRJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCmluZGV4IGFjOWE5NzQ0OWE1Ni4uMzVi
MzRkYzFhM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCkBAIC04Niw3ICs4Niw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIExpc3RNYXJrZXJPdXRzaWRlLAogICAgICAgICAgICAgSW5saW5l
Qm94U3RhcnQsCiAgICAgICAgICAgICBJbmxpbmVCb3hFbmQsCi0gICAgICAgICAgICBMaW5lU3Bh
bm5pbmdJbmxpbmVCb3hTdGFydAorICAgICAgICAgICAgTGluZVNwYW5uaW5nSW5saW5lQm94U3Rh
cnQsCisgICAgICAgICAgICBPcGFxdWUKICAgICAgICAgfTsKIAogICAgICAgICBib29sIGlzVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpUZXh0IHx8IGlzV29yZFNlcGFyYXRv
cigpIHx8IGlzTm9uQnJlYWtpbmdTcGFjZSgpOyB9CkBAIC0xMDQsNiArMTA1LDcgQEAgcHVibGlj
OgogICAgICAgICBib29sIGlzSW5saW5lQm94U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gVHlwZTo6SW5saW5lQm94U3RhcnQ7IH0KICAgICAgICAgYm9vbCBpc0xpbmVTcGFubmluZ0lu
bGluZUJveFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkxpbmVTcGFubmlu
Z0lubGluZUJveFN0YXJ0OyB9CiAgICAgICAgIGJvb2wgaXNJbmxpbmVCb3hFbmQoKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94RW5kOyB9CisgICAgICAgIGJvb2wgaXNP
cGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6T3BhcXVlOyB9CiAKICAgICAg
ICAgYm9vbCBpc0NvbnRlbnRmdWwoKSBjb25zdCB7IHJldHVybiAoaXNUZXh0KCkgJiYgdGV4dENv
bnRlbnQoKS0+bGVuZ3RoKSB8fCBpc0JveCgpIHx8IGlzTGluZUJyZWFrKCkgfHwgaXNMaXN0TWFy
a2VyKCk7IH0KICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGlzTGlz
dE1hcmtlcigpOyB9CkBAIC0yMDksNiArMjExLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVu
ZElubGluZUJveEVuZChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxp
bmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBhcHBlbmRMaW5lQnJlYWsoY29u
c3QgSW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgdm9pZCBhcHBlbmRXb3Jk
QnJlYWtPcHBvcnR1bml0eShjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsK
KyAgICB2b2lkIGFwcGVuZE9wYXF1ZUJveChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVy
U3R5bGUmKTsKIAogICAgIElubGluZUxheW91dFVuaXQgYWRkQm9yZGVyQW5kUGFkZGluZ0VuZEZv
cklubGluZUJveERlY29yYXRpb25DbG9uZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVCb3hTdGFy
dEl0ZW0pOwogICAgIElubGluZUxheW91dFVuaXQgcmVtb3ZlQm9yZGVyQW5kUGFkZGluZ0VuZEZv
cklubGluZUJveERlY29yYXRpb25DbG9uZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVCb3hFbmRJ
dGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRl
eCAxYzJhOGY2OTI4M2QuLjBiYmUwNTFjZjFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCb3hCdWlsZGVyLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgTGluZUJveEJ1
aWxkZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCkKICAgICAg
ICAgICAgIEFTU0VSVCghbGluZUhhc0NvbnRlbnQpOwogICAgICAgICAgICAgaWYgKHJ1bi5pc0Nv
bnRlbnRmdWwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGlm
IChydW4uaXNUZXh0KCkgfHwgcnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSkKKyAgICAgICAg
ICAgIGlmIChydW4uaXNUZXh0KCkgfHwgcnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSB8fCBy
dW4uaXNPcGFxdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
ICAgIEFTU0VSVChydW4uaXNJbmxpbmVCb3goKSk7CkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBM
aW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94
KQogICAgICAgICAgICAgbGluZUJveC5hZGRJbmxpbmVMZXZlbEJveChJbmxpbmVMZXZlbEJveDo6
Y3JlYXRlR2VuZXJpY0lubGluZUxldmVsQm94KGxheW91dEJveCwgc3R5bGUsIGxvZ2ljYWxMZWZ0
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgQVNTRVJUKHJ1bi5pc09wYXF1ZSgpKTsKICAgICB9CiAgICAg
bGluZUJveC5zZXRIYXNDb250ZW50KGxpbmVIYXNDb250ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBhMTc3YWViZWU2ZjguLjQzNzA4Mzc3ZWVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMTE0LDYg
KzExNCw1MiBAQCBzdGF0aWMgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQoY29uc3Qg
SW5saW5lSXRlbVJhbmdlJiBsaW5lUmFuZ2UsIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CitzdGF0aWMgYm9vbCBoYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0dW5pdHkoc2l6ZV90IHNvZnRX
cmFwT3Bwb3J0dW5pdHlJbmRleCwgc2l6ZV90IGxheW91dFJhbmdlRW5kLCBjb25zdCBJbmxpbmVJ
dGVtcyYgaW5saW5lSXRlbXMpCit7CisgICAgaWYgKCFzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXgg
fHwgc29mdFdyYXBPcHBvcnR1bml0eUluZGV4ID09IGxheW91dFJhbmdlRW5kKSB7CisgICAgICAg
IC8vIFRoaXMgY2FuZGlkYXRlIGlubGluZSBjb250ZW50IGVuZHMgYmVjYXVzZSB0aGUgZW50aXJl
IGNvbnRlbnQgZW5kcyBhbmQgbm90IGJlY2F1c2UgdGhlcmUncyBhIHNvZnQgd3JhcCBvcHBvcnR1
bml0eS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTZWUgaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy10ZXh0LTMvI2xpbmUtYnJlYWstZGV0YWlscworICAgIGF1dG8mIHRy
YWlsaW5nSW5saW5lSXRlbSA9IGlubGluZUl0ZW1zW3NvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCAt
IDFdOworICAgIGlmICh0cmFpbGluZ0lubGluZUl0ZW0uaXNGbG9hdCgpKSB7CisgICAgICAgIC8v
IFdoaWxlIHdlIHN0b3AgYXQgZmxvYXRzLCB0aGV5IGFyZSBub3QgY29uc2lkZXJlZCByZWFsIHNv
ZnQgd3JhcCBvcHBvcnR1bml0aWVzLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGlmICh0cmFpbGluZ0lubGluZUl0ZW0uaXNCb3goKSB8fCB0cmFpbGluZ0lubGluZUl0ZW0uaXNM
aW5lQnJlYWsoKSB8fCB0cmFpbGluZ0lubGluZUl0ZW0uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgp
IHx8IHRyYWlsaW5nSW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKSB7CisgICAgICAgIC8vIEZv
ciBXZWItY29tcGF0aWJpbGl0eSB0aGVyZSBpcyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZWZv
cmUgYW5kIGFmdGVyIGVhY2ggcmVwbGFjZWQgZWxlbWVudCBvciBvdGhlciBhdG9taWMgaW5saW5l
LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHRyYWlsaW5nSW5saW5lSXRl
bS5pc1RleHQoKSkgeworICAgICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElu
bGluZVRleHRJdGVtPih0cmFpbGluZ0lubGluZUl0ZW0pOworICAgICAgICBpZiAoaW5saW5lVGV4
dEl0ZW0uaXNXaGl0ZXNwYWNlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
Ly8gTm93IGluIGNhc2Ugb2Ygbm9uLXdoaXRlc3BhY2UgdHJhaWxpbmcgY29udGVudCwgd2UgbmVl
ZCB0byBjaGVjayBpZiB0aGUgYWN0dWFsIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZWxvbmdzIHRv
IHRoZSBuZXh0IHNldC4KKyAgICAgICAgLy8gZS5nLiAidGhpc19pc190aGVfdHJhaWxpbmdfcnVu
PHNwYW4+IDwtYnV0X3RoaXNfc3BhY2VfaGVyZV9pc190aGVfc29mdF93cmFwX29wcG9ydHVuaXR5
IgorICAgICAgICAvLyBXaGVuIHRoZXJlJ3MgYW4gaW5saW5lIGJveCBzdGFydCg8c3Bhbj4pL2Vu
ZCg8L3NwYW4+KSBiZXR3ZWVuIHRoZSB0cmFpbGluZyBhbmQgdGhlIChuZXh0KWxlYWRpbmcgcnVu
LCB3aGlsZSB3ZSBicmVhayBiZWZvcmUgdGhlIGlubGluZSBib3ggc3RhcnQgKDxzcGFuPikKKyAg
ICAgICAgLy8gdGhlIGFjdHVhbCBzb2Z0IHdyYXAgcG9zaXRpb24gaXMgYWZ0ZXIgdGhlIGlubGlu
ZSBib3ggc3RhcnQgKDxzcGFuPikgYnV0IGluIHRlcm1zIG9mIGxpbmUgYnJlYWtpbmcgY29udGlu
dWl0eSB0aGUgaW5saW5lIGJveCBzdGFydCAoPHNwYW4+KSBhbmQgdGhlIHdoaXRlc3BhY2UgcnVu
IGJlbG9uZyB0b2dldGhlci4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobGF5b3V0UmFuZ2VFbmQg
PD0gaW5saW5lSXRlbXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIGluZGV4ID0gc29mdFdy
YXBPcHBvcnR1bml0eUluZGV4OyBpbmRleCA8IGxheW91dFJhbmdlRW5kOyArK2luZGV4KSB7Cisg
ICAgICAgICAgICBpZiAoaW5saW5lSXRlbXNbaW5kZXhdLmlzSW5saW5lQm94U3RhcnQoKSB8fCBp
bmxpbmVJdGVtc1tpbmRleF0uaXNJbmxpbmVCb3hFbmQoKSB8fCBpbmxpbmVJdGVtc1tpbmRleF0u
aXNPcGFxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBDaGVjayBpZiBbbm9uLXdoaXRlc3BhY2VdW2lubGluZS1ib3hdW25vLXdoaXRlc3BhY2Vd
IGNvbnRlbnQgaGFzIHJ1bGVzIGFib3V0IGl0LgorICAgICAgICAgICAgLy8gRm9yIG5vdyBsZXQn
cyBzYXkgdGhlIHNvZnQgd3JhcCBwb3NpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXh0IHNldCBvZiBy
dW5zIHdoZW4gW25vbi13aGl0ZXNwYWNlXVtpbmxpbmUtYm94XVt3aGl0ZXNwYWNlXSwgW25vbi13
aGl0ZXNwYWNlXVtpbmxpbmUtYm94XVtib3hdIGV0Yy4KKyAgICAgICAgICAgIHJldHVybiBpbmxp
bmVJdGVtc1tpbmRleF0uaXNUZXh0KCkgJiYgIWRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxp
bmVJdGVtc1tpbmRleF0pLmlzV2hpdGVzcGFjZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBpZiAodHJhaWxpbmdJbmxpbmVJdGVtLmlzSW5saW5lQm94U3Rh
cnQoKSkgeworICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHdoZW4gdGhlIGlubGlu
ZSBib3gncyBmaXN0IGNoaWxkIGlzIGEgZmxvYXQgYm94LgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIGlmICh0cmFpbGluZ0lubGluZUl0ZW0uaXNPcGFxdWUoKSkgeworICAgICAg
ICBBU1NFUlQoc29mdFdyYXBPcHBvcnR1bml0eUluZGV4ID4gMSk7IC8vIENhbid0IGhhdmUgb3Bh
cXVlIGl0ZW1zIG9ubHkgY2FuZGlkYXRlIGNvbnRlbnQuCisgICAgICAgIHJldHVybiBoYXNUcmFp
bGluZ1NvZnRXcmFwT3Bwb3J0dW5pdHkoc29mdFdyYXBPcHBvcnR1bml0eUluZGV4IC0gMSwgbGF5
b3V0UmFuZ2VFbmQsIGlubGluZUl0ZW1zKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIHRydWU7Cit9OworCiBzdGF0aWMgVGV4dERpcmVjdGlvbiBpbmxpbmVC
YXNlRGlyZWN0aW9uRm9yTGluZUNvbnRlbnQoY29uc3QgTGluZTo6UnVuTGlzdCYgcnVucywgY29u
c3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+IHBy
ZXZpb3VzTGluZSkKIHsKICAgICBBU1NFUlQoIXJ1bnMuaXNFbXB0eSgpKTsKQEAgLTE2NCw5ICsy
MTAsOSBAQCBzdHJ1Y3QgTGluZUNhbmRpZGF0ZSB7CiAKIGlubGluZSB2b2lkIExpbmVDYW5kaWRh
dGU6OklubGluZUNvbnRlbnQ6OmFwcGVuZElubGluZUl0ZW0oY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aCkKIHsKLSAgICBBU1NFUlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVt
LmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5p
c0lubGluZUJveEVuZCgpKTsKKyAgICBBU1NFUlQoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxp
bmVJdGVtLmlzQm94KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5l
SXRlbS5pc0lubGluZUJveEVuZCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSk7CiAKLSAgICBp
ZiAoaW5saW5lSXRlbS5pc0JveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8
IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKKyAgICBpZiAoaW5saW5lSXRlbS5pc0JveCgp
IHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVC
b3hFbmQoKSB8fCBpbmxpbmVJdGVtLmlzT3BhcXVlKCkpCiAgICAgICAgIHJldHVybiBtX2NvbnRp
bnVvdXNDb250ZW50LmFwcGVuZChpbmxpbmVJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRoKTsKIAog
ICAgIGlmIChpbmxpbmVJdGVtLmlzVGV4dCgpKQpAQCAtNDkyLDcgKzUzOCw3IEBAIElubGluZUxh
eW91dFVuaXQgTGluZUJ1aWxkZXI6OmxlYWRpbmdQdW5jdHVhdGlvbldpZHRoRm9yTGluZUNhbmRp
YXRlKHNpemVfdCBmaXJzCiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gZmlyc3RJbmxpbmVU
ZXh0SXRlbUluZGV4OyBpbmRleC0tID4gY2FuZGlkYXRlQ29udGVudFN0YXJ0SW5kZXg7KSB7CiAg
ICAgICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gbV9pbmxpbmVJdGVtc1tpbmRleF07CiAgICAg
ICAgICAgICBBU1NFUlQoIWlubGluZUl0ZW0uaXNUZXh0KCkgJiYgIWlubGluZUl0ZW0uaXNMaW5l
QnJlYWsoKSAmJiAhaW5saW5lSXRlbS5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpOwotICAgICAg
ICAgICAgaWYgKGlubGluZUl0ZW0uaXNGbG9hdCgpKQorICAgICAgICAgICAgaWYgKGlubGluZUl0
ZW0uaXNGbG9hdCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGF1dG8gaXNDb250ZW50ZnVsID0gaW5saW5lSXRlbS5pc0Jv
eCgpCiAgICAgICAgICAgICAgICAgfHwgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpICYm
IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lSXRlbS5sYXlvdXRCb3go
KSkubWFyZ2luQm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCkpCkBAIC01MjMsNyArNTY5LDcgQEAgSW5s
aW5lTGF5b3V0VW5pdCBMaW5lQnVpbGRlcjo6dHJhaWxpbmdQdW5jdHVhdGlvbk9yU3RvcE9yQ29t
bWFXaWR0aEZvckxpbmVDYW5kaWEKICAgICAgICAgZm9yIChhdXRvIGluZGV4ID0gbGFzdElubGlu
ZVRleHRJdGVtSW5kZXggKyAxOyBpbmRleCA8IGxheW91dFJhbmdlRW5kOyArK2luZGV4KSB7CiAg
ICAgICAgICAgICBhdXRvIGlzQ29udGVudGZ1bElubGluZUl0ZW0gPSBbJl0gewogICAgICAgICAg
ICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBtX2lubGluZUl0ZW1zW2luZGV4XTsKLSAgICAgICAg
ICAgICAgICBpZiAoaW5saW5lSXRlbS5pc0Zsb2F0KCkpCisgICAgICAgICAgICAgICAgaWYgKGlu
bGluZUl0ZW0uaXNGbG9hdCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlz
VGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93
bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pOwpAQCAtNjE4LDExICs2NjQsMTUgQEAg
dm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYg
bGluZUNhbmRpZGF0ZSwgc2l6ZV90IGMKICAgICAgICAgICAgIC8vIGUuZy4gPHNwYW4+PHdicj48
L3NwYW4+CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gaW5k
ZXggKyAxOyBpIDwgc29mdFdyYXBPcHBvcnR1bml0eUluZGV4OyArK2kpCi0gICAgICAgICAgICAg
ICAgQVNTRVJUKG1faW5saW5lSXRlbXNbaV0uaXNJbmxpbmVCb3hFbmQoKSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKG1faW5saW5lSXRlbXNbaV0uaXNJbmxpbmVCb3hFbmQoKSB8fCBtX2lubGlu
ZUl0ZW1zW2ldLmlzT3BhcXVlKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBpbmxpbmVJdGVtLmlz
TGluZUJyZWFrKCkgPyBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kVHJhaWxpbmdM
aW5lQnJlYWsoaW5saW5lSXRlbSkgOiBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5k
dHJhaWxpbmdXb3JkQnJlYWtPcHBvcnR1bml0eShpbmxpbmVJdGVtKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CisgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzT3BhcXVlKCkpIHsK
KyAgICAgICAgICAgIGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudC5hcHBlbmRJbmxpbmVJdGVt
KGlubGluZUl0ZW0sIHN0eWxlLCB7IH0pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIGxpbmVDYW5kaWRh
dGUuaW5saW5lQ29udGVudC5zZXRBY2N1bXVsYXRlZENsb25lZERlY29yYXRpb25FbmQoYWNjdW11
bGF0ZWREZWNvcmF0aW9uRW5kV2lkdGgpOwpAQCAtNjM4LDQ3ICs2ODgsNyBAQCB2b2lkIExpbmVC
dWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlk
YXRlLCBzaXplX3QgYwogICAgIH07CiAgICAgc2V0TGVhZGluZ0FuZFRyYWlsaW5nSGFuZ2luZ1B1
bmN0dWF0aW9uKCk7CiAKLSAgICBhdXRvIGlubGluZUNvbnRlbnRFbmRzSW5Tb2Z0V3JhcE9wcG9y
dHVuaXR5ID0gWyZdIHsKLSAgICAgICAgaWYgKCFzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggfHwg
c29mdFdyYXBPcHBvcnR1bml0eUluZGV4ID09IGxheW91dFJhbmdlLmVuZEluZGV4KCkpIHsKLSAg
ICAgICAgICAgIC8vIFRoaXMgY2FuZGlkYXRlIGlubGluZSBjb250ZW50IGVuZHMgYmVjYXVzZSB0
aGUgZW50aXJlIGNvbnRlbnQgZW5kcyBhbmQgbm90IGJlY2F1c2UgdGhlcmUncyBhIHNvZnQgd3Jh
cCBvcHBvcnR1bml0eS4KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAobV9pbmxpbmVJdGVtc1tzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggLSAxXS5pc0Zs
b2F0KCkpIHsKLSAgICAgICAgICAgIC8vIFdoaWxlIHdlIHN0b3AgYXQgZmxvYXRzLCB0aGV5IGFy
ZSBub3QgY29uc2lkZXJlZCByZWFsIHNvZnQgd3JhcCBvcHBvcnR1bml0aWVzLiAKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAvLyBTZWUgaHR0cHM6Ly93d3cu
dzMub3JnL1RSL2Nzcy10ZXh0LTMvI2xpbmUtYnJlYWstZGV0YWlscwotICAgICAgICBhdXRvJiB0
cmFpbGluZ0lubGluZUl0ZW0gPSBtX2lubGluZUl0ZW1zW3NvZnRXcmFwT3Bwb3J0dW5pdHlJbmRl
eCAtIDFdOwotICAgICAgICBpZiAodHJhaWxpbmdJbmxpbmVJdGVtLmlzQm94KCkgfHwgdHJhaWxp
bmdJbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkgfHwgdHJhaWxpbmdJbmxpbmVJdGVtLmlzV29yZEJy
ZWFrT3Bwb3J0dW5pdHkoKSB8fCB0cmFpbGluZ0lubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkg
ewotICAgICAgICAgICAgLy8gRm9yIFdlYi1jb21wYXRpYmlsaXR5IHRoZXJlIGlzIGEgc29mdCB3
cmFwIG9wcG9ydHVuaXR5IGJlZm9yZSBhbmQgYWZ0ZXIgZWFjaCByZXBsYWNlZCBlbGVtZW50IG9y
IG90aGVyIGF0b21pYyBpbmxpbmUuCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICBpZiAodHJhaWxpbmdJbmxpbmVJdGVtLmlzVGV4dCgpKSB7Ci0gICAgICAgICAg
ICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPih0cmFpbGlu
Z0lubGluZUl0ZW0pOwotICAgICAgICAgICAgaWYgKGlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFj
ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgLy8gTm93IGlu
IGNhc2Ugb2Ygbm9uLXdoaXRlc3BhY2UgdHJhaWxpbmcgY29udGVudCwgd2UgbmVlZCB0byBjaGVj
ayBpZiB0aGUgYWN0dWFsIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZWxvbmdzIHRvIHRoZSBuZXh0
IHNldC4KLSAgICAgICAgICAgIC8vIGUuZy4gInRoaXNfaXNfdGhlX3RyYWlsaW5nX3J1bjxzcGFu
PiA8LWJ1dF90aGlzX3NwYWNlX2hlcmVfaXNfdGhlX3NvZnRfd3JhcF9vcHBvcnR1bml0eSIKLSAg
ICAgICAgICAgIC8vIFdoZW4gdGhlcmUncyBhbiBpbmxpbmUgYm94IHN0YXJ0KDxzcGFuPikvZW5k
KDwvc3Bhbj4pIGJldHdlZW4gdGhlIHRyYWlsaW5nIGFuZCB0aGUgKG5leHQpbGVhZGluZyBydW4s
IHdoaWxlIHdlIGJyZWFrIGJlZm9yZSB0aGUgaW5saW5lIGJveCBzdGFydCAoPHNwYW4+KQotICAg
ICAgICAgICAgLy8gdGhlIGFjdHVhbCBzb2Z0IHdyYXAgcG9zaXRpb24gaXMgYWZ0ZXIgdGhlIGlu
bGluZSBib3ggc3RhcnQgKDxzcGFuPikgYnV0IGluIHRlcm1zIG9mIGxpbmUgYnJlYWtpbmcgY29u
dGludWl0eSB0aGUgaW5saW5lIGJveCBzdGFydCAoPHNwYW4+KSBhbmQgdGhlIHdoaXRlc3BhY2Ug
cnVuIGJlbG9uZyB0b2dldGhlci4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxheW91dFJh
bmdlLmVuZEluZGV4KCkgPD0gbV9pbmxpbmVJdGVtcy5zaXplKCkpOwotICAgICAgICAgICAgZm9y
IChhdXRvIGluZGV4ID0gc29mdFdyYXBPcHBvcnR1bml0eUluZGV4OyBpbmRleCA8IGxheW91dFJh
bmdlLmVuZEluZGV4KCk7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9pbmxpbmVJ
dGVtc1tpbmRleF0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IG1faW5saW5lSXRlbXNbaW5kZXhdLmlz
SW5saW5lQm94RW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDaGVjayBpZiBbbm9uLXdoaXRlc3BhY2VdW2lubGluZS1ib3hdW25v
LXdoaXRlc3BhY2VdIGNvbnRlbnQgaGFzIHJ1bGVzIGFib3V0IGl0LgotICAgICAgICAgICAgICAg
IC8vIEZvciBub3cgbGV0J3Mgc2F5IHRoZSBzb2Z0IHdyYXAgcG9zaXRpb24gYmVsb25ncyB0byB0
aGUgbmV4dCBzZXQgb2YgcnVucyB3aGVuIFtub24td2hpdGVzcGFjZV1baW5saW5lLWJveF1bd2hp
dGVzcGFjZV0sIFtub24td2hpdGVzcGFjZV1baW5saW5lLWJveF1bYm94XSBldGMuCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1faW5saW5lSXRlbXNbaW5kZXhdLmlzVGV4dCgpICYmICFkb3duY2Fz
dDxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtc1tpbmRleF0pLmlzV2hpdGVzcGFjZSgpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHRyYWlsaW5nSW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkpIHsKLSAgICAgICAg
ICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hlbiB0aGUgaW5saW5lIGJveCdzIGZpc3Qg
Y2hpbGQgaXMgYSBmbG9hdCBib3guCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH07Ci0gICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LnNldEhhc1RyYWlsaW5nU29m
dFdyYXBPcHBvcnR1bml0eShpbmxpbmVDb250ZW50RW5kc0luU29mdFdyYXBPcHBvcnR1bml0eSgp
KTsKKyAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuc2V0SGFzVHJhaWxpbmdTb2Z0V3Jh
cE9wcG9ydHVuaXR5KGhhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eShzb2Z0V3JhcE9wcG9y
dHVuaXR5SW5kZXgsIGxheW91dFJhbmdlLmVuZEluZGV4KCksIG1faW5saW5lSXRlbXMpKTsKIH0K
IAogc3RhdGljIGJvb2wgc2hvdWxkRGlzYWJsZUh5cGhlbmF0aW9uKGNvbnN0IFJlbmRlclN0eWxl
JiByb290U3R5bGUsIHVuc2lnbmVkIHN1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNvdW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuY3BwCmluZGV4IDFkNGRiNWI0NzFhNC4uY2Y3N2JjNWY2MThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuY3BwCkBAIC00OTYsNiArNDk2LDEwIEBAIHZvaWQgSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQoY29uc3QgTGluZUxheW91dFJlc3Vs
dCYKICAgICAgICAgICAgICAgICAsIGJveGVzKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CisgICAgICAgIGlmIChsaW5lUnVuLmlzT3BhcXVlKCkpIHsKKyAgICAgICAgICAgIC8v
IFNldCBnZW9tZXRyeSBmb3IgdGhpcyBvcGFxdWUgYm94LgorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KICAgICAgICAgQVNTRVJUKGxpbmVSdW4uaXNJbmxpbmVCb3hFbmQoKSB8fCBs
aW5lUnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSk7CiAgICAgfQogfQpAQCAtNjg5LDggKzY5
Myw4IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzQmlkaUNvbnRl
bnQoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluCiAgICAgICAgICAgICBhdXRvJiBsaW5lUnVu
ID0gaW5saW5lQ29udGVudFt2aXN1YWxPcmRlcl07CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwogCi0gICAgICAgICAgICBhdXRvIG5lZWRzRGlzcGxh
eUJveCA9ICFsaW5lUnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSAmJiAhbGluZVJ1bi5pc0lu
bGluZUJveEVuZCgpOwotICAgICAgICAgICAgaWYgKCFuZWVkc0Rpc3BsYXlCb3gpCisgICAgICAg
ICAgICBhdXRvIG5lZWRzRGlzcGxheUJveE9yR2VvbWV0cnlTZXR0aW5nID0gIWxpbmVSdW4uaXNX
b3JkQnJlYWtPcHBvcnR1bml0eSgpICYmICFsaW5lUnVuLmlzSW5saW5lQm94RW5kKCk7CisgICAg
ICAgICAgICBpZiAoIW5lZWRzRGlzcGxheUJveE9yR2VvbWV0cnlTZXR0aW5nKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvIHZpc3VhbFJlY3RSZWxhdGl2ZVRv
Um9vdCA9IFsmXShhdXRvIGxvZ2ljYWxSZWN0KSB7CkBAIC03NTksNiArNzYzLDEwIEBAIHZvaWQg
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzQmlkaUNvbnRlbnQoY29uc3QgTGlu
ZUxheW91dFJlc3VsdCYgbGluCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNPcGFxdWUo
KSkgeworICAgICAgICAgICAgICAgIC8vIFNldCBnZW9tZXRyeSBmb3IgdGhpcyBvcGFxdWUgYm94
LgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>