<?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>209097</bug_id>
          
          <creation_ts>2020-03-13 17:05:05 -0700</creation_ts>
          <short_desc>Fix the &quot;deliver cached ranges&quot; logic in PDFPlugin (and other small cleanups)</short_desc>
          <delta_ts>2020-03-14 20:40:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1629952</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-13 17:05:05 -0700</bug_when>
    <thetext>Fix the &quot;deliver cached ranges&quot; logic in PDFPlugin (and other small cleanups)

It was pretty broken, but not noticed because we rarely hit that code path.

Now we do, so the brokenness was obvious.

Noticed at the same time was needing to respond to some requests on the main thread after all data was loaded, along with a new PDFKit SPI to allow for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629957</commentid>
    <comment_count>1</comment_count>
      <attachid>393561</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-13 17:16:50 -0700</bug_when>
    <thetext>Created attachment 393561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629958</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-13 17:17:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/60396297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629961</commentid>
    <comment_count>3</comment_count>
      <attachid>393561</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-03-13 17:27:01 -0700</bug_when>
    <thetext>Comment on attachment 393561
Patch

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

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1441
&gt; +    if ([m_pdfDocument.get() respondsToSelector:NSSelectorFromString(@&quot;setHasHighLatencyDataProvider:&quot;)])
&gt; +        [m_pdfDocument.get() setHasHighLatencyDataProvider:NO];

You might need to forward declare this to call it like this. Otherwise you will need to do an objc_msgSend or performSelector:. If you forward declare, you can just do @selector(setHasHighLatencyDataProvider:) instead of NSSelectorFromString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629962</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2020-03-13 17:27:36 -0700</bug_when>
    <thetext>Needs rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629993</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-13 20:33:58 -0700</bug_when>
    <thetext>(In reply to Timothy Hatcher from comment #3)
&gt; Comment on attachment 393561 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393561&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1441
&gt; &gt; +    if ([m_pdfDocument.get() respondsToSelector:NSSelectorFromString(@&quot;setHasHighLatencyDataProvider:&quot;)])
&gt; &gt; +        [m_pdfDocument.get() setHasHighLatencyDataProvider:NO];
&gt; 
&gt; You might need to forward declare this to call it like this. Otherwise you
&gt; will need to do an objc_msgSend or performSelector:. If you forward declare,
&gt; you can just do @selector(setHasHighLatencyDataProvider:) instead of
&gt; NSSelectorFromString.

Good call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629994</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-13 20:34:52 -0700</bug_when>
    <thetext>Oh I know why everything is red - Locally, it&apos;s built on top of the patch in https://bugs.webkit.org/show_bug.cgi?id=209063

Will figure something out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630123</commentid>
    <comment_count>7</comment_count>
      <attachid>393599</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-14 17:12:17 -0700</bug_when>
    <thetext>Created attachment 393599
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630127</commentid>
    <comment_count>8</comment_count>
      <attachid>393600</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-14 17:39:55 -0700</bug_when>
    <thetext>Created attachment 393600
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630129</commentid>
    <comment_count>9</comment_count>
      <attachid>393602</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-14 18:30:21 -0700</bug_when>
    <thetext>Created attachment 393602
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630132</commentid>
    <comment_count>10</comment_count>
      <attachid>393602</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-14 20:40:48 -0700</bug_when>
    <thetext>Comment on attachment 393602
PFL

Clearing flags on attachment: 393602

Committed r258477: &lt;https://trac.webkit.org/changeset/258477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630133</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-14 20:40:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393561</attachid>
            <date>2020-03-13 17:16:50 -0700</date>
            <delta_ts>2020-03-14 17:12:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>pat</filename>
            <type>text/plain</type>
            <size>8982</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmMwNTRmY2Y4MjMuLjI4NjczNWQ0OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDIwLTAzLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBGaXggdGhlICJkZWxpdmVyIGNhY2hlZCByYW5nZXMiIGxvZ2ljIGluIFBERlBsdWdp
biAoYW5kIG90aGVyIHNtYWxsIGNsZWFudXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3RyZWFtaW5nIGluIGRhdGEgYWx3YXlzIGFwcGVuZGVkIHRv
IHRoZSBidWZmZXIgaW5zdGVhZCBvZiBmaXJzdCBncm93aW5nIHRoZSBidWZmZXIuCisgICAgICAg
IFRoaXMgd2Fzbid0IG5vdGljZWQgZWFybGllciBiZWNhdXNlIHdlIG9mdGVuIGRpZCBub3QgZ3Jv
dyB0aGUgYnVmZmVyIGZvciBzdWNjZXNzZnVsIHJhbmdlIHJlcXVlc3QgY29tcGxldGlvbi4KKyAg
ICAgICAgQnV0IG5vdyB3ZSBvZnRlbiBkbyEKKyAgICAgICAgCisgICAgICAgIFNvIHRoaXMgY2xl
YW5zIHRoYXQgYWxsIHVwLgorICAgICAgICAKKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSBpdCBy
ZXZlYWxlZCBvdGhlciBpbnRlcmFjdGlvbnMgd2l0aCBQREZLaXQgdGhhdCBmb3JjZSB1cyB0byBo
YW5kbGUgZGF0YSByZXF1ZXN0cyBvbiB0aGUgbWFpbgorICAgICAgICB0aHJlYWQgYWZ0ZXIgdGhl
IGRvY3VtZW50IGxvYWQgaXMgY29tcGxldGUgLSBXaGljaCBpcyBmaW5lIQorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6ZGF0YVByb3ZpZGVy
R2V0Qnl0ZXNBdFBvc2l0aW9uQ2FsbGJhY2spOiBJZiBvbiB0aGUgbWFpbiB0aHJlYWQgKGFuZCB0
aGUgZG9jdW1lbnQgbG9hZCBpcyBjb21wbGV0ZSkKKyAgICAgICAgICBoYW5kbGUgdGhlIHJlcXVl
c3QgZGlyZWN0bHkhCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRl
c0F0UG9zaXRpb25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpCeXRl
UmFuZ2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhBY2N1bXVsYXRlZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsZWFy
SGlnaExhdGVuY3lEYXRhUHJvdmlkZXJGbGFnKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
OjpwZGZEb2N1bWVudERpZExvYWQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omluc3Rh
bGxQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZURhdGEpOiBHcm93IHRoZSBidWZmZXIgaW5zdGVhZCBvZiBhcHBlbmQuCisKIDIw
MjAtMDMtMTMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHVudXNlZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIE1hZ25pZnkgbWVzc2Fn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CmluZGV4IDViOWYwMWM0YTBkLi4yOTAzZTY2MWYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTMxLDcgKzEzMSw5IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7
CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQorICAgIHZvaWQgZW5zdXJlRGF0YUJ1
ZmZlckxlbmd0aCh1aW50NjRfdCBsZW5ndGgpOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VCeXRlc0F0
UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90IGNvdW50KT4mJik7CisgICAgc2l6ZV90IGdldFJl
c291cmNlQnl0ZXNBdFBvc2l0aW9uTWFpblRocmVhZCh2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLCBzaXplX3QgY291bnQpOwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHBkZkxvZyhjb25z
dCBTdHJpbmcmIGV2ZW50KTsKICAgICBzaXplX3QgaW5jcmVtZW50VGhyZWFkc1dhaXRpbmdPbkNh
bGxiYWNrKCkgeyByZXR1cm4gKyttX3RocmVhZHNXYWl0aW5nT25DYWxsYmFjazsgfQpAQCAtMzc4
LDYgKzM4MCw3IEBAIHByaXZhdGU6CiAgICAgQnl0ZVJhbmdlUmVxdWVzdCogYnl0ZVJhbmdlUmVx
dWVzdEZvckxvYWRlcihXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciYpOwogICAg
IHZvaWQgZm9yZ2V0TG9hZGVyKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyJik7
CiAgICAgdm9pZCBjYW5jZWxBbmRGb3JnZXRMb2FkZXIoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXImKTsKKyAgICB2b2lkIGNsZWFySGlnaExhdGVuY3lEYXRhUHJvdmlkZXJGbGFn
KCk7CiAKICAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IG1fYmFja2dyb3VuZFRocmVhZERvY3Vt
ZW50OwogICAgIFJlZlB0cjxUaHJlYWQ+IG1fcGRmVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggODBhM2ZkNmYyNjIu
LmM3NDkxMmRkZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KQEAgLTY5Myw3ICs2OTMsMTIgQEAgdm9pZCBQREZQbHVnaW46OnZl
cmJvc2VMb2coKQogCiBzdGF0aWMgc2l6ZV90IGRhdGFQcm92aWRlckdldEJ5dGVzQXRQb3NpdGlv
bkNhbGxiYWNrKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVf
dCBjb3VudCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaXNNYWlu
VGhyZWFkKCkpIHsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgICgoUERGUGx1Z2luKilpbmZv
KS0+cGRmTG9nKG1ha2VTdHJpbmcoIkhhbmRsaW5nIHJlcXVlc3QgZm9yICIsIGNvdW50LCAiIGJ5
dGVzIGF0IHBvc2l0aW9uICIsIHBvc2l0aW9uLCAiIHN5bmNocm9ub3VzbHkgb24gdGhlIG1haW4g
dGhyZWFkIikpOworI2VuZGlmCisgICAgICAgIHJldHVybiAoKFBERlBsdWdpbiopaW5mbyktPmdl
dFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uTWFpblRocmVhZChidWZmZXIsIHBvc2l0aW9uLCBjb3Vu
dCk7CisgICAgfQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFJlZjxQREZQbHVnaW4+IGRlYnVn
UGx1Z2luUmVmID0gKigoUERGUGx1Z2luKilpbmZvKTsKQEAgLTgyMSw2ICs4MjYsMjUgQEAgdm9p
ZCBQREZQbHVnaW46OnVuY29uZGl0aW9uYWxDb21wbGV0ZU91dHN0YW5kaW5nUmFuZ2VSZXF1ZXN0
cygpCiAgICAgbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzLmNsZWFyKCk7CiB9CiAKK3Np
emVfdCBQREZQbHVnaW46OmdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uTWFpblRocmVhZCh2b2lk
KiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudEZpbmlzaGVkTG9hZGluZyk7Cisg
ICAgQVNTRVJUKHBvc2l0aW9uID49IDApOworCisgICAgYXV0byBjZkxlbmd0aCA9IENGRGF0YUdl
dExlbmd0aChtX2RhdGEuZ2V0KCkpOworICAgIEFTU0VSVChjZkxlbmd0aCA+PSAwKTsKKworICAg
IGlmICgodW5zaWduZWQpcG9zaXRpb24gKyBjb3VudCA+ICh1bnNpZ25lZCljZkxlbmd0aCkgewor
ICAgICAgICAvLyBXZSBjb3VsZCByZXR1cm4gcGFydGlhbCBkYXRhLCBidXQgdGhpcyBtZXRob2Qg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkCisgICAgICAgIC8vIG9uY2UgdGhlIGVudGlyZSBidWZmZXIg
aXMga25vd24sIGFuZCB0aGVyZWZvcmUgUERGS2l0IHNob3VsZCBvbmx5CisgICAgICAgIC8vIGJl
IGFza2luZyBmb3IgdmFsaWQgcmFuZ2VzLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAg
bWVtY3B5KGJ1ZmZlciwgQ0ZEYXRhR2V0Qnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgcG9zaXRpb24s
IGNvdW50KTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKIHZvaWQgUERGUGx1Z2luOjpnZXRSZXNv
dXJjZUJ5dGVzQXRQb3NpdGlvbihzaXplX3QgY291bnQsIG9mZl90IHBvc2l0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IApAQCAtOTI0LDIyICs5NDgsMTYg
QEAgdm9pZCBQREZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6OmNvbXBsZXRlV2l0aEFjY3VtdWxh
dGVkRGF0YShQREZQbHVnaW4mIHBsdWdpbikKIAogICAgIG1fY29tcGxldGlvbkhhbmRsZXIobV9h
Y2N1bXVsYXRlZERhdGEuZGF0YSgpLCBtX2FjY3VtdWxhdGVkRGF0YS5zaXplKCkpOwogCi0gICAg
aWYgKG1fc3RyZWFtTG9hZGVyKQotICAgICAgICBwbHVnaW4uZm9yZ2V0TG9hZGVyKCptX3N0cmVh
bUxvYWRlcik7Ci0KICAgICAvLyBGb2xkIHRoaXMgZGF0YSBpbnRvIHRoZSBtYWluIGRhdGEgYnVm
ZmVyIHNvIHRoYXQgaWYgc29tZXRoaW5nIGluIGl0cyByYW5nZSBpcyByZXF1ZXN0ZWQgYWdhaW4g
KHdoaWNoIGhhcHBlbnMgcXVpdGUgb2Z0ZW4pCiAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gaGl0
IHRoZSBuZXR3b3JrIGxheWVyIGFnYWluLgotCi0gICAgYXV0byBsZW5ndGggPSBDRkRhdGFHZXRM
ZW5ndGgocGx1Z2luLm1fZGF0YS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCB0YXJnZXRTaXplID0gbV9w
b3NpdGlvbiArIG1fYWNjdW11bGF0ZWREYXRhLnNpemUoKTsKLSAgICBhdXRvIGRlbHRhID0gdGFy
Z2V0U2l6ZSAtIGxlbmd0aDsKLSAgICBpZiAoZGVsdGEgPiAwKQotICAgICAgICBDRkRhdGFJbmNy
ZWFzZUxlbmd0aChwbHVnaW4ubV9kYXRhLmdldCgpLCBkZWx0YSk7Ci0KKyAgICBwbHVnaW4uZW5z
dXJlRGF0YUJ1ZmZlckxlbmd0aChtX3Bvc2l0aW9uICsgbV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgp
KTsKICAgICBpZiAobV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgpKSB7CiAgICAgICAgIG1lbWNweShD
RkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihwbHVnaW4ubV9kYXRhLmdldCgpKSArIG1fcG9zaXRpb24s
IG1fYWNjdW11bGF0ZWREYXRhLmRhdGEoKSwgbV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgpKTsKICAg
ICAgICAgcGx1Z2luLm1fY29tcGxldGVkUmFuZ2VzLmFkZCh7IG1fcG9zaXRpb24sIG1fcG9zaXRp
b24gKyBtX2FjY3VtdWxhdGVkRGF0YS5zaXplKCkgLSAxfSk7CiAgICAgfQorCisgICAgaWYgKG1f
c3RyZWFtTG9hZGVyKQorICAgICAgICBwbHVnaW4uZm9yZ2V0TG9hZGVyKCptX3N0cmVhbUxvYWRl
cik7CiB9CiAKIGJvb2wgUERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0OjptYXliZUNvbXBsZXRl
KFBERlBsdWdpbiYgcGx1Z2luKQpAQCAtOTcyLDYgKzk5MCwxNiBAQCB2b2lkIFBERlBsdWdpbjo6
Qnl0ZVJhbmdlUmVxdWVzdDo6Y29tcGxldGVVbmNvbmRpdGlvbmFsbHkoUERGUGx1Z2luJiBwbHVn
aW4pCiAgICAgY29tcGxldGVXaXRoQnl0ZXMoQ0ZEYXRhR2V0Qnl0ZVB0cihwbHVnaW4ubV9kYXRh
LmdldCgpKSArIG1fcG9zaXRpb24sIGNvdW50LCBwbHVnaW4pOwogfQogCit2b2lkIFBERlBsdWdp
bjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCit7CisgICAg
QVNTRVJUKG1fZGF0YSk7CisKKyAgICBhdXRvIGN1cnJlbnRMZW5ndGggPSBDRkRhdGFHZXRMZW5n
dGgobV9kYXRhLmdldCgpKTsKKyAgICBBU1NFUlQoY3VycmVudExlbmd0aCA+PSAwKTsKKyAgICBp
ZiAodGFyZ2V0TGVuZ3RoID4gKHVpbnQ2NF90KWN1cnJlbnRMZW5ndGgpCisgICAgICAgIENGRGF0
YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0
aCk7Cit9CisKIHZvaWQgUERGUGx1Z2luOjp3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikKIHsK
ICAgICAvLyBSZWRpcmVjdGlvbnMgZm9yIHJhbmdlIHJlcXVlc3RzIGFyZSB1bmV4cGVjdGVkLgpA
QCAtMTAyMiw3ICsxMDUwLDcgQEAgdm9pZCBQREZQbHVnaW46OmRpZEZhaWwoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYKICAgICAgICAgICAg
IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAg
fQogCi0gICAgY2FuY2VsQW5kRm9yZ2V0TG9hZGVyKCpsb2FkZXIpOworICAgIGZvcmdldExvYWRl
cigqbG9hZGVyKTsKIH0KIAogdm9pZCBQREZQbHVnaW46OmRpZEZpbmlzaExvYWRpbmcoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlcikKQEAgLTE0MDcsNiArMTQzNSwxMiBAQCB2b2lk
IFBERlBsdWdpbjo6Y29udmVydFBvc3RTY3JpcHREYXRhSWZOZWVkZWQoKQogICAgIG1fZGF0YSA9
IFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFdURk1vdmUobV9k
YXRhKSk7CiB9CiAKK3ZvaWQgUERGUGx1Z2luOjpjbGVhckhpZ2hMYXRlbmN5RGF0YVByb3ZpZGVy
RmxhZygpCit7CisgICAgaWYgKFttX3BkZkRvY3VtZW50LmdldCgpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpOU1NlbGVjdG9yRnJvbVN0cmluZyhAInNldEhhc0hpZ2hMYXRlbmN5RGF0YVByb3ZpZGVyOiIp
XSkKKyAgICAgICAgW21fcGRmRG9jdW1lbnQuZ2V0KCkgc2V0SGFzSGlnaExhdGVuY3lEYXRhUHJv
dmlkZXI6Tk9dOworfQorCiB2b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKIHsK
ICAgICBhZGRBcmNoaXZlUmVzb3VyY2UoKTsKQEAgLTE0MTUsMTQgKzE0NDksMTYgQEAgdm9pZCBQ
REZQbHVnaW46OnBkZkRvY3VtZW50RGlkTG9hZCgpCiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BE
Rl9BUElTKQogI2lmICFMT0dfRElTQUJMRUQKLSAgICBwZGZMb2cobWFrZVN0cmluZygiUERGIGRv
Y3VtZW50IGZpbmlzaGVkIGxvYWRpbmcgd2l0aCBhIHRvdGFsIG9mICVsbHUgYnl0ZXMiLCBtX3N0
cmVhbWVkQnl0ZXMpKTsKKyAgICBwZGZMb2cobWFrZVN0cmluZygiUERGIGRvY3VtZW50IGZpbmlz
aGVkIGxvYWRpbmcgd2l0aCBhIHRvdGFsIG9mICIsIG1fc3RyZWFtZWRCeXRlcywgIiBieXRlcyIp
KTsKICNlbmRpZgogICAgIGlmIChtX2luY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQpIHsKICAg
ICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGFsbCBkYXRhIGZvciB0aGUgZG9jdW1lbnQs
IGFuZCB0aGVyZWZvcmUgd2Uga25vdyBob3cgdG8gYW5zd2VyIGFueSBvdXRzdGFuZGluZyByYW5n
ZSByZXF1ZXN0cy4KICAgICAgICAgdW5jb25kaXRpb25hbENvbXBsZXRlT3V0c3RhbmRpbmdSYW5n
ZVJlcXVlc3RzKCk7CiAKLSAgICAgICAgaWYgKG1fcGRmRG9jdW1lbnQpCisgICAgICAgIGlmICht
X3BkZkRvY3VtZW50KSB7CisgICAgICAgICAgICBjbGVhckhpZ2hMYXRlbmN5RGF0YVByb3ZpZGVy
RmxhZygpOwogICAgICAgICAgICAgcnVuU2NyaXB0c0luUERGRG9jdW1lbnRJZk5lZWRlZCgpOwor
ICAgICAgICB9CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICB7CkBAIC0xNDM2LDYgKzE0NzIsMTEg
QEAgdm9pZCBQREZQbHVnaW46Omluc3RhbGxQREZEb2N1bWVudCgpCiAgICAgQVNTRVJUKG1fcGRm
RG9jdW1lbnQpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyNpZiBIQVZFKElOQ1JF
TUVOVEFMX1BERl9BUElTKQorICAgIGlmIChtX2RvY3VtZW50RmluaXNoZWRMb2FkaW5nKQorICAg
ICAgICBjbGVhckhpZ2hMYXRlbmN5RGF0YVByb3ZpZGVyRmxhZygpOworI2VuZGlmCisKICAgICB1
cGRhdGVQYWdlQW5kRGV2aWNlU2NhbGVGYWN0b3JzKCk7CiAKICAgICBbbV9wZGZMYXllckNvbnRy
b2xsZXIgc2V0RnJhbWVTaXplOnNpemUoKV07CkBAIC0xNTIxLDcgKzE1NjIsOCBAQCB2b2lkIFBE
RlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGlu
dCBsZW5ndGgpCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEu
Z2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihieXRlcyksIGxlbmd0aCk7Cisg
ICAgZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aChtX3N0cmVhbWVkQnl0ZXMgKyBsZW5ndGgpOworICAg
IG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgbV9zdHJlYW1l
ZEJ5dGVzLCBieXRlcywgbGVuZ3RoKTsKICAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOwog
CiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykK
</data>
<flag name="review"
          id="408965"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393599</attachid>
            <date>2020-03-14 17:12:17 -0700</date>
            <delta_ts>2020-03-14 17:39:55 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>pat</filename>
            <type>text/plain</type>
            <size>9266</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmNhMjE2MjdjZTguLjEwNGIxN2U3NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDIwLTAzLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBGaXggdGhlICJkZWxpdmVyIGNhY2hlZCByYW5nZXMiIGxvZ2ljIGluIFBERlBsdWdp
biAoYW5kIG90aGVyIHNtYWxsIGNsZWFudXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhh
dGNoZXIuCisKKyAgICAgICAgU3RyZWFtaW5nIGluIGRhdGEgYWx3YXlzIGFwcGVuZGVkIHRvIHRo
ZSBidWZmZXIgaW5zdGVhZCBvZiBmaXJzdCBncm93aW5nIHRoZSBidWZmZXIuCisgICAgICAgIFRo
aXMgd2Fzbid0IG5vdGljZWQgZWFybGllciBiZWNhdXNlIHdlIG9mdGVuIGRpZCBub3QgZ3JvdyB0
aGUgYnVmZmVyIGZvciBzdWNjZXNzZnVsIHJhbmdlIHJlcXVlc3QgY29tcGxldGlvbi4KKyAgICAg
ICAgQnV0IG5vdyB3ZSBvZnRlbiBkbyEKKyAgICAgICAgCisgICAgICAgIFNvIHRoaXMgY2xlYW5z
IHRoYXQgYWxsIHVwLgorICAgICAgICAKKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSBpdCByZXZl
YWxlZCBvdGhlciBpbnRlcmFjdGlvbnMgd2l0aCBQREZLaXQgdGhhdCBmb3JjZSB1cyB0byBoYW5k
bGUgZGF0YSByZXF1ZXN0cyBvbiB0aGUgbWFpbgorICAgICAgICB0aHJlYWQgYWZ0ZXIgdGhlIGRv
Y3VtZW50IGxvYWQgaXMgY29tcGxldGUgLSBXaGljaCBpcyBmaW5lIQorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6ZGF0YVByb3ZpZGVyR2V0
Qnl0ZXNBdFBvc2l0aW9uQ2FsbGJhY2spOiBJZiBvbiB0aGUgbWFpbiB0aHJlYWQgKGFuZCB0aGUg
ZG9jdW1lbnQgbG9hZCBpcyBjb21wbGV0ZSkKKyAgICAgICAgICBoYW5kbGUgdGhlIHJlcXVlc3Qg
ZGlyZWN0bHkhCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0
UG9zaXRpb25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpCeXRlUmFu
Z2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhBY2N1bXVsYXRlZERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1heWJlQ2xl
YXJIaWdoTGF0ZW5jeURhdGFQcm92aWRlckZsYWcpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OmRvY3VtZW50RGF0YURpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46Omluc3RhbGxQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEpOiBHcm93IHRoZSBidWZmZXIgaW5zdGVhZCBvZiBh
cHBlbmQuCisKKwogMjAyMC0wMy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgR2F0aGVyIFBERiBzY3JpcHRzIHRvIHJ1biBvbiBhIGJhY2tncm91bmQgdGhy
ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCmluZGV4IDI3MDQxMTk3MzdkLi4zN2U3MTNhNmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTMxLDcgKzEzMSw5IEBA
IHB1YmxpYzoKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29u
c3Q7CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQorICAgIHZvaWQgZW5zdXJlRGF0
YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCBsZW5ndGgpOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VCeXRl
c0F0UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90IGNvdW50KT4mJik7CisgICAgc2l6ZV90IGdl
dFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uTWFpblRocmVhZCh2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLCBzaXplX3QgY291bnQpOwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHBkZkxvZyhj
b25zdCBTdHJpbmcmIGV2ZW50KTsKICAgICBzaXplX3QgaW5jcmVtZW50VGhyZWFkc1dhaXRpbmdP
bkNhbGxiYWNrKCkgeyByZXR1cm4gKyttX3RocmVhZHNXYWl0aW5nT25DYWxsYmFjazsgfQpAQCAt
Mzc3LDYgKzM3OSw3IEBAIHByaXZhdGU6CiAgICAgQnl0ZVJhbmdlUmVxdWVzdCogYnl0ZVJhbmdl
UmVxdWVzdEZvckxvYWRlcihXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciYpOwog
ICAgIHZvaWQgZm9yZ2V0TG9hZGVyKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Jik7CiAgICAgdm9pZCBjYW5jZWxBbmRGb3JnZXRMb2FkZXIoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXImKTsKKyAgICB2b2lkIG1heWJlQ2xlYXJIaWdoTGF0ZW5jeURhdGFQcm92
aWRlckZsYWcoKTsKIAogICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gbV9iYWNrZ3JvdW5kVGhy
ZWFkRG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRocmVhZD4gbV9wZGZUaHJlYWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA4YTNh
MTdlYjYzOS4uMWNhNDRkOTJiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTgsNiArOTgsNyBAQAogQGludGVyZmFjZSBQ
REZEb2N1bWVudCAoKQogLShpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm92aWRlcjooQ0dEYXRhUHJv
dmlkZXJSZWYpZGF0YVByb3ZpZGVyOwogLSh2b2lkKXByZWxvYWREYXRhT2ZQYWdlc0luUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2Ugb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdClxdWV1ZSBjb21wbGV0aW9u
Oih2b2lkICheKShOU0luZGV4U2V0KiBsb2FkZWRQYWdlSW5kZXhlcykpY29tcGxldGlvbkJsb2Nr
OworQHByb3BlcnR5IChyZWFkd3JpdGUsIG5vbmF0b21pYykgQk9PTCBoYXNIaWdoTGF0ZW5jeURh
dGFQcm92aWRlcjsKIEBlbmQKICNlbmRpZgogCkBAIC02OTMsNyArNjk0LDEyIEBAIHZvaWQgUERG
UGx1Z2luOjp2ZXJib3NlTG9nKCkKIAogc3RhdGljIHNpemVfdCBkYXRhUHJvdmlkZXJHZXRCeXRl
c0F0UG9zaXRpb25DYWxsYmFjayh2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKGlzTWFpblRocmVhZCgpKSB7CisjaWYgIUxPR19ESVNBQkxFRAorICAgICAgICAoKFBERlBs
dWdpbiopaW5mbyktPnBkZkxvZyhtYWtlU3RyaW5nKCJIYW5kbGluZyByZXF1ZXN0IGZvciAiLCBj
b3VudCwgIiBieXRlcyBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIiBzeW5jaHJvbm91c2x5IG9u
IHRoZSBtYWluIHRocmVhZCIpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gKChQREZQbHVnaW4q
KWluZm8pLT5nZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1haW5UaHJlYWQoYnVmZmVyLCBwb3Np
dGlvbiwgY291bnQpOworICAgIH0KIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBSZWY8UERGUGx1
Z2luPiBkZWJ1Z1BsdWdpblJlZiA9ICooKFBERlBsdWdpbiopaW5mbyk7CkBAIC04MjEsNiArODI3
LDI1IEBAIHZvaWQgUERGUGx1Z2luOjp1bmNvbmRpdGlvbmFsQ29tcGxldGVPdXRzdGFuZGluZ1Jh
bmdlUmVxdWVzdHMoKQogICAgIG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5jbGVhcigp
OwogfQogCitzaXplX3QgUERGUGx1Z2luOjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1haW5U
aHJlYWQodm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnRGaW5pc2hlZExv
YWRpbmcpOworICAgIEFTU0VSVChwb3NpdGlvbiA+PSAwKTsKKworICAgIGF1dG8gY2ZMZW5ndGgg
PSBDRkRhdGFHZXRMZW5ndGgobV9kYXRhLmdldCgpKTsKKyAgICBBU1NFUlQoY2ZMZW5ndGggPj0g
MCk7CisKKyAgICBpZiAoKHVuc2lnbmVkKXBvc2l0aW9uICsgY291bnQgPiAodW5zaWduZWQpY2ZM
ZW5ndGgpIHsKKyAgICAgICAgLy8gV2UgY291bGQgcmV0dXJuIHBhcnRpYWwgZGF0YSwgYnV0IHRo
aXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZAorICAgICAgICAvLyBvbmNlIHRoZSBlbnRp
cmUgYnVmZmVyIGlzIGtub3duLCBhbmQgdGhlcmVmb3JlIFBERktpdCBzaG91bGQgb25seQorICAg
ICAgICAvLyBiZSBhc2tpbmcgZm9yIHZhbGlkIHJhbmdlcy4KKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIG1lbWNweShidWZmZXIsIENGRGF0YUdldEJ5dGVQdHIobV9kYXRhLmdldCgpKSAr
IHBvc2l0aW9uLCBjb3VudCk7CisgICAgcmV0dXJuIGNvdW50OworfQorCiB2b2lkIFBERlBsdWdp
bjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlv
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAKQEAgLTkyNCwy
MiArOTQ5LDE2IEBAIHZvaWQgUERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0Ojpjb21wbGV0ZVdp
dGhBY2N1bXVsYXRlZERhdGEoUERGUGx1Z2luJiBwbHVnaW4pCiAKICAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKG1fYWNjdW11bGF0ZWREYXRhLmRhdGEoKSwgbV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgp
KTsKIAotICAgIGlmIChtX3N0cmVhbUxvYWRlcikKLSAgICAgICAgcGx1Z2luLmZvcmdldExvYWRl
cigqbV9zdHJlYW1Mb2FkZXIpOwotCiAgICAgLy8gRm9sZCB0aGlzIGRhdGEgaW50byB0aGUgbWFp
biBkYXRhIGJ1ZmZlciBzbyB0aGF0IGlmIHNvbWV0aGluZyBpbiBpdHMgcmFuZ2UgaXMgcmVxdWVz
dGVkIGFnYWluICh3aGljaCBoYXBwZW5zIHF1aXRlIG9mdGVuKQogICAgIC8vIHdlIGRvIG5vdCBu
ZWVkIHRvIGhpdCB0aGUgbmV0d29yayBsYXllciBhZ2Fpbi4KLQotICAgIGF1dG8gbGVuZ3RoID0g
Q0ZEYXRhR2V0TGVuZ3RoKHBsdWdpbi5tX2RhdGEuZ2V0KCkpOwotICAgIENGSW5kZXggdGFyZ2V0
U2l6ZSA9IG1fcG9zaXRpb24gKyBtX2FjY3VtdWxhdGVkRGF0YS5zaXplKCk7Ci0gICAgYXV0byBk
ZWx0YSA9IHRhcmdldFNpemUgLSBsZW5ndGg7Ci0gICAgaWYgKGRlbHRhID4gMCkKLSAgICAgICAg
Q0ZEYXRhSW5jcmVhc2VMZW5ndGgocGx1Z2luLm1fZGF0YS5nZXQoKSwgZGVsdGEpOwotCisgICAg
cGx1Z2luLmVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9wb3NpdGlvbiArIG1fYWNjdW11bGF0ZWRE
YXRhLnNpemUoKSk7CiAgICAgaWYgKG1fYWNjdW11bGF0ZWREYXRhLnNpemUoKSkgewogICAgICAg
ICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIocGx1Z2luLm1fZGF0YS5nZXQoKSkgKyBt
X3Bvc2l0aW9uLCBtX2FjY3VtdWxhdGVkRGF0YS5kYXRhKCksIG1fYWNjdW11bGF0ZWREYXRhLnNp
emUoKSk7CiAgICAgICAgIHBsdWdpbi5tX2NvbXBsZXRlZFJhbmdlcy5hZGQoeyBtX3Bvc2l0aW9u
LCBtX3Bvc2l0aW9uICsgbV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgpIC0gMX0pOwogICAgIH0KKwor
ICAgIGlmIChtX3N0cmVhbUxvYWRlcikKKyAgICAgICAgcGx1Z2luLmZvcmdldExvYWRlcigqbV9z
dHJlYW1Mb2FkZXIpOwogfQogCiBib29sIFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6bWF5
YmVDb21wbGV0ZShQREZQbHVnaW4mIHBsdWdpbikKQEAgLTk3Miw2ICs5OTEsMTYgQEAgdm9pZCBQ
REZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6OmNvbXBsZXRlVW5jb25kaXRpb25hbGx5KFBERlBs
dWdpbiYgcGx1Z2luKQogICAgIGNvbXBsZXRlV2l0aEJ5dGVzKENGRGF0YUdldEJ5dGVQdHIocGx1
Z2luLm1fZGF0YS5nZXQoKSkgKyBtX3Bvc2l0aW9uLCBjb3VudCwgcGx1Z2luKTsKIH0KIAordm9p
ZCBQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgodWludDY0X3QgdGFyZ2V0TGVuZ3Ro
KQoreworICAgIEFTU0VSVChtX2RhdGEpOworCisgICAgYXV0byBjdXJyZW50TGVuZ3RoID0gQ0ZE
YXRhR2V0TGVuZ3RoKG1fZGF0YS5nZXQoKSk7CisgICAgQVNTRVJUKGN1cnJlbnRMZW5ndGggPj0g
MCk7CisgICAgaWYgKHRhcmdldExlbmd0aCA+ICh1aW50NjRfdCljdXJyZW50TGVuZ3RoKQorICAg
ICAgICBDRkRhdGFJbmNyZWFzZUxlbmd0aChtX2RhdGEuZ2V0KCksIHRhcmdldExlbmd0aCAtIGN1
cnJlbnRMZW5ndGgpOworfQorCiB2b2lkIFBERlBsdWdpbjo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpCiB7CiAgICAgLy8gUmVkaXJlY3Rpb25zIGZvciByYW5nZSByZXF1ZXN0cyBhcmUgdW5l
eHBlY3RlZC4KQEAgLTEwMjIsNyArMTA1MSw3IEBAIHZvaWQgUERGUGx1Z2luOjpkaWRGYWlsKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImCiAg
ICAgICAgICAgICBtX291dHN0YW5kaW5nQnl0ZVJhbmdlUmVxdWVzdHMucmVtb3ZlKGlkZW50aWZp
ZXIpOwogICAgIH0KIAotICAgIGNhbmNlbEFuZEZvcmdldExvYWRlcigqbG9hZGVyKTsKKyAgICBm
b3JnZXRMb2FkZXIoKmxvYWRlcik7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpkaWRGaW5pc2hMb2Fk
aW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIpCkBAIC0xNDA3LDYgKzE0MzYs
MTUgQEAgdm9pZCBQREZQbHVnaW46OmNvbnZlcnRQb3N0U2NyaXB0RGF0YUlmTmVlZGVkKCkKICAg
ICBtX2RhdGEgPSBQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihX
VEZNb3ZlKG1fZGF0YSkpOwogfQogCit2b2lkIFBERlBsdWdpbjo6bWF5YmVDbGVhckhpZ2hMYXRl
bmN5RGF0YVByb3ZpZGVyRmxhZygpCit7CisgICAgaWYgKCFtX3BkZkRvY3VtZW50IHx8ICFtX2Rv
Y3VtZW50RmluaXNoZWRMb2FkaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoW21fcGRm
RG9jdW1lbnQuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRIYXNIaWdoTGF0
ZW5jeURhdGFQcm92aWRlcjopXSkKKyAgICAgICAgW21fcGRmRG9jdW1lbnQuZ2V0KCkgc2V0SGFz
SGlnaExhdGVuY3lEYXRhUHJvdmlkZXI6Tk9dOworfQorCiB2b2lkIFBERlBsdWdpbjo6ZG9jdW1l
bnREYXRhRGlkRmluaXNoTG9hZGluZygpCiB7CiAgICAgYWRkQXJjaGl2ZVJlc291cmNlKCk7CkBA
IC0xNDE1LDExICsxNDUzLDEyIEBAIHZvaWQgUERGUGx1Z2luOjpkb2N1bWVudERhdGFEaWRGaW5p
c2hMb2FkaW5nKCkKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAjaWYgIUxPR19E
SVNBQkxFRAotICAgIHBkZkxvZyhtYWtlU3RyaW5nKCJQREYgZG9jdW1lbnQgZmluaXNoZWQgbG9h
ZGluZyB3aXRoIGEgdG90YWwgb2YgJWxsdSBieXRlcyIsIG1fc3RyZWFtZWRCeXRlcykpOworICAg
IHBkZkxvZyhtYWtlU3RyaW5nKCJQREYgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZyB3aXRoIGEg
dG90YWwgb2YgIiwgbV9zdHJlYW1lZEJ5dGVzLCAiIGJ5dGVzIikpOwogI2VuZGlmCiAgICAgaWYg
KG1faW5jcmVtZW50YWxQREZMb2FkaW5nRW5hYmxlZCkgewogICAgICAgICAvLyBBdCB0aGlzIHBv
aW50IHdlIGtub3cgYWxsIGRhdGEgZm9yIHRoZSBkb2N1bWVudCwgYW5kIHRoZXJlZm9yZSB3ZSBr
bm93IGhvdyB0byBhbnN3ZXIgYW55IG91dHN0YW5kaW5nIHJhbmdlIHJlcXVlc3RzLgogICAgICAg
ICB1bmNvbmRpdGlvbmFsQ29tcGxldGVPdXRzdGFuZGluZ1JhbmdlUmVxdWVzdHMoKTsKKyAgICAg
ICAgbWF5YmVDbGVhckhpZ2hMYXRlbmN5RGF0YVByb3ZpZGVyRmxhZygpOwogICAgIH0gZWxzZQog
I2VuZGlmCiAgICAgewpAQCAtMTQzNSw2ICsxNDc0LDEwIEBAIHZvaWQgUERGUGx1Z2luOjppbnN0
YWxsUERGRG9jdW1lbnQoKQogICAgIEFTU0VSVChtX3BkZkRvY3VtZW50KTsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCisjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKKyAgICBt
YXliZUNsZWFySGlnaExhdGVuY3lEYXRhUHJvdmlkZXJGbGFnKCk7CisjZW5kaWYKKwogICAgIHVw
ZGF0ZVBhZ2VBbmREZXZpY2VTY2FsZUZhY3RvcnMoKTsKIAogICAgIFttX3BkZkxheWVyQ29udHJv
bGxlciBzZXRGcmFtZVNpemU6c2l6ZSgpXTsKQEAgLTE1MTksNyArMTU2Miw4IEBAIHZvaWQgUERG
UGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCkKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5n
ZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVuZ3RoKTsKKyAg
ICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGxlbmd0aCk7CisgICAg
bWVtY3B5KENGRGF0YUdldE11dGFibGVCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyBtX3N0cmVhbWVk
Qnl0ZXMsIGJ5dGVzLCBsZW5ndGgpOwogICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiAK
ICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393600</attachid>
            <date>2020-03-14 17:39:55 -0700</date>
            <delta_ts>2020-03-14 18:30:21 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>pat</filename>
            <type>text/plain</type>
            <size>9288</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmNhMjE2MjdjZTguLjEwNGIxN2U3NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDIwLTAzLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBGaXggdGhlICJkZWxpdmVyIGNhY2hlZCByYW5nZXMiIGxvZ2ljIGluIFBERlBsdWdp
biAoYW5kIG90aGVyIHNtYWxsIGNsZWFudXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhh
dGNoZXIuCisKKyAgICAgICAgU3RyZWFtaW5nIGluIGRhdGEgYWx3YXlzIGFwcGVuZGVkIHRvIHRo
ZSBidWZmZXIgaW5zdGVhZCBvZiBmaXJzdCBncm93aW5nIHRoZSBidWZmZXIuCisgICAgICAgIFRo
aXMgd2Fzbid0IG5vdGljZWQgZWFybGllciBiZWNhdXNlIHdlIG9mdGVuIGRpZCBub3QgZ3JvdyB0
aGUgYnVmZmVyIGZvciBzdWNjZXNzZnVsIHJhbmdlIHJlcXVlc3QgY29tcGxldGlvbi4KKyAgICAg
ICAgQnV0IG5vdyB3ZSBvZnRlbiBkbyEKKyAgICAgICAgCisgICAgICAgIFNvIHRoaXMgY2xlYW5z
IHRoYXQgYWxsIHVwLgorICAgICAgICAKKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSBpdCByZXZl
YWxlZCBvdGhlciBpbnRlcmFjdGlvbnMgd2l0aCBQREZLaXQgdGhhdCBmb3JjZSB1cyB0byBoYW5k
bGUgZGF0YSByZXF1ZXN0cyBvbiB0aGUgbWFpbgorICAgICAgICB0aHJlYWQgYWZ0ZXIgdGhlIGRv
Y3VtZW50IGxvYWQgaXMgY29tcGxldGUgLSBXaGljaCBpcyBmaW5lIQorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6ZGF0YVByb3ZpZGVyR2V0
Qnl0ZXNBdFBvc2l0aW9uQ2FsbGJhY2spOiBJZiBvbiB0aGUgbWFpbiB0aHJlYWQgKGFuZCB0aGUg
ZG9jdW1lbnQgbG9hZCBpcyBjb21wbGV0ZSkKKyAgICAgICAgICBoYW5kbGUgdGhlIHJlcXVlc3Qg
ZGlyZWN0bHkhCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0
UG9zaXRpb25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpCeXRlUmFu
Z2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhBY2N1bXVsYXRlZERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1heWJlQ2xl
YXJIaWdoTGF0ZW5jeURhdGFQcm92aWRlckZsYWcpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OmRvY3VtZW50RGF0YURpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46Omluc3RhbGxQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEpOiBHcm93IHRoZSBidWZmZXIgaW5zdGVhZCBvZiBh
cHBlbmQuCisKKwogMjAyMC0wMy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgR2F0aGVyIFBERiBzY3JpcHRzIHRvIHJ1biBvbiBhIGJhY2tncm91bmQgdGhy
ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCmluZGV4IDI3MDQxMTk3MzdkLi4zN2U3MTNhNmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTMxLDcgKzEzMSw5IEBA
IHB1YmxpYzoKICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29u
c3Q7CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQorICAgIHZvaWQgZW5zdXJlRGF0
YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCBsZW5ndGgpOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VCeXRl
c0F0UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90IGNvdW50KT4mJik7CisgICAgc2l6ZV90IGdl
dFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uTWFpblRocmVhZCh2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLCBzaXplX3QgY291bnQpOwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHBkZkxvZyhj
b25zdCBTdHJpbmcmIGV2ZW50KTsKICAgICBzaXplX3QgaW5jcmVtZW50VGhyZWFkc1dhaXRpbmdP
bkNhbGxiYWNrKCkgeyByZXR1cm4gKyttX3RocmVhZHNXYWl0aW5nT25DYWxsYmFjazsgfQpAQCAt
Mzc3LDYgKzM3OSw3IEBAIHByaXZhdGU6CiAgICAgQnl0ZVJhbmdlUmVxdWVzdCogYnl0ZVJhbmdl
UmVxdWVzdEZvckxvYWRlcihXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciYpOwog
ICAgIHZvaWQgZm9yZ2V0TG9hZGVyKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Jik7CiAgICAgdm9pZCBjYW5jZWxBbmRGb3JnZXRMb2FkZXIoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXImKTsKKyAgICB2b2lkIG1heWJlQ2xlYXJIaWdoTGF0ZW5jeURhdGFQcm92
aWRlckZsYWcoKTsKIAogICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gbV9iYWNrZ3JvdW5kVGhy
ZWFkRG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRocmVhZD4gbV9wZGZUaHJlYWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA4YTNh
MTdlYjYzOS4uNWI5ZDAzNTk2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTgsNiArOTgsNyBAQAogQGludGVyZmFjZSBQ
REZEb2N1bWVudCAoKQogLShpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm92aWRlcjooQ0dEYXRhUHJv
dmlkZXJSZWYpZGF0YVByb3ZpZGVyOwogLSh2b2lkKXByZWxvYWREYXRhT2ZQYWdlc0luUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2Ugb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdClxdWV1ZSBjb21wbGV0aW9u
Oih2b2lkICheKShOU0luZGV4U2V0KiBsb2FkZWRQYWdlSW5kZXhlcykpY29tcGxldGlvbkJsb2Nr
OworQHByb3BlcnR5IChyZWFkd3JpdGUsIG5vbmF0b21pYykgQk9PTCBoYXNIaWdoTGF0ZW5jeURh
dGFQcm92aWRlcjsKIEBlbmQKICNlbmRpZgogCkBAIC02OTMsNyArNjk0LDEyIEBAIHZvaWQgUERG
UGx1Z2luOjp2ZXJib3NlTG9nKCkKIAogc3RhdGljIHNpemVfdCBkYXRhUHJvdmlkZXJHZXRCeXRl
c0F0UG9zaXRpb25DYWxsYmFjayh2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKGlzTWFpblRocmVhZCgpKSB7CisjaWYgIUxPR19ESVNBQkxFRAorICAgICAgICAoKFBERlBs
dWdpbiopaW5mbyktPnBkZkxvZyhtYWtlU3RyaW5nKCJIYW5kbGluZyByZXF1ZXN0IGZvciAiLCBj
b3VudCwgIiBieXRlcyBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIiBzeW5jaHJvbm91c2x5IG9u
IHRoZSBtYWluIHRocmVhZCIpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gKChQREZQbHVnaW4q
KWluZm8pLT5nZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1haW5UaHJlYWQoYnVmZmVyLCBwb3Np
dGlvbiwgY291bnQpOworICAgIH0KIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBSZWY8UERGUGx1
Z2luPiBkZWJ1Z1BsdWdpblJlZiA9ICooKFBERlBsdWdpbiopaW5mbyk7CkBAIC03NzcsNiArNzgz
LDE1IEBAIHN0YXRpYyB2b2lkIGRhdGFQcm92aWRlclJlbGVhc2VJbmZvQ2FsbGJhY2sodm9pZCog
aW5mbykKICAgICBhZG9wdFJlZigoUERGUGx1Z2luKilpbmZvKTsKIH0KIAordm9pZCBQREZQbHVn
aW46Om1heWJlQ2xlYXJIaWdoTGF0ZW5jeURhdGFQcm92aWRlckZsYWcoKQoreworICAgIGlmICgh
bV9wZGZEb2N1bWVudCB8fCAhbV9kb2N1bWVudEZpbmlzaGVkTG9hZGluZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKFttX3BkZkRvY3VtZW50LmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0SGFzSGlnaExhdGVuY3lEYXRhUHJvdmlkZXI6KV0pCisgICAgICAgIFttX3Bk
ZkRvY3VtZW50LmdldCgpIHNldEhhc0hpZ2hMYXRlbmN5RGF0YVByb3ZpZGVyOk5PXTsKK30KKwog
dm9pZCBQREZQbHVnaW46OnRocmVhZEVudHJ5KFJlZjxQREZQbHVnaW4+JiYgcHJvdGVjdGVkUGx1
Z2luKQogewogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0QWNjZXNzUmFuZ2VzQ2FsbGJhY2tzIGRh
dGFQcm92aWRlckNhbGxiYWNrcyB7CkBAIC04MjEsNiArODM2LDI1IEBAIHZvaWQgUERGUGx1Z2lu
Ojp1bmNvbmRpdGlvbmFsQ29tcGxldGVPdXRzdGFuZGluZ1JhbmdlUmVxdWVzdHMoKQogICAgIG1f
b3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5jbGVhcigpOwogfQogCitzaXplX3QgUERGUGx1
Z2luOjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1haW5UaHJlYWQodm9pZCogYnVmZmVyLCBv
ZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKG1fZG9jdW1lbnRGaW5pc2hlZExvYWRpbmcpOworICAgIEFTU0VSVChw
b3NpdGlvbiA+PSAwKTsKKworICAgIGF1dG8gY2ZMZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgobV9k
YXRhLmdldCgpKTsKKyAgICBBU1NFUlQoY2ZMZW5ndGggPj0gMCk7CisKKyAgICBpZiAoKHVuc2ln
bmVkKXBvc2l0aW9uICsgY291bnQgPiAodW5zaWduZWQpY2ZMZW5ndGgpIHsKKyAgICAgICAgLy8g
V2UgY291bGQgcmV0dXJuIHBhcnRpYWwgZGF0YSwgYnV0IHRoaXMgbWV0aG9kIHNob3VsZCBvbmx5
IGJlIGNhbGxlZAorICAgICAgICAvLyBvbmNlIHRoZSBlbnRpcmUgYnVmZmVyIGlzIGtub3duLCBh
bmQgdGhlcmVmb3JlIFBERktpdCBzaG91bGQgb25seQorICAgICAgICAvLyBiZSBhc2tpbmcgZm9y
IHZhbGlkIHJhbmdlcy4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG1lbWNweShidWZm
ZXIsIENGRGF0YUdldEJ5dGVQdHIobV9kYXRhLmdldCgpKSArIHBvc2l0aW9uLCBjb3VudCk7Cisg
ICAgcmV0dXJuIGNvdW50OworfQorCiB2b2lkIFBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0
UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAKQEAgLTkyNCwyMiArOTU4LDE2IEBAIHZvaWQgUERG
UGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhBY2N1bXVsYXRlZERhdGEoUERG
UGx1Z2luJiBwbHVnaW4pCiAKICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fYWNjdW11bGF0ZWRE
YXRhLmRhdGEoKSwgbV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgpKTsKIAotICAgIGlmIChtX3N0cmVh
bUxvYWRlcikKLSAgICAgICAgcGx1Z2luLmZvcmdldExvYWRlcigqbV9zdHJlYW1Mb2FkZXIpOwot
CiAgICAgLy8gRm9sZCB0aGlzIGRhdGEgaW50byB0aGUgbWFpbiBkYXRhIGJ1ZmZlciBzbyB0aGF0
IGlmIHNvbWV0aGluZyBpbiBpdHMgcmFuZ2UgaXMgcmVxdWVzdGVkIGFnYWluICh3aGljaCBoYXBw
ZW5zIHF1aXRlIG9mdGVuKQogICAgIC8vIHdlIGRvIG5vdCBuZWVkIHRvIGhpdCB0aGUgbmV0d29y
ayBsYXllciBhZ2Fpbi4KLQotICAgIGF1dG8gbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKHBsdWdp
bi5tX2RhdGEuZ2V0KCkpOwotICAgIENGSW5kZXggdGFyZ2V0U2l6ZSA9IG1fcG9zaXRpb24gKyBt
X2FjY3VtdWxhdGVkRGF0YS5zaXplKCk7Ci0gICAgYXV0byBkZWx0YSA9IHRhcmdldFNpemUgLSBs
ZW5ndGg7Ci0gICAgaWYgKGRlbHRhID4gMCkKLSAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgo
cGx1Z2luLm1fZGF0YS5nZXQoKSwgZGVsdGEpOwotCisgICAgcGx1Z2luLmVuc3VyZURhdGFCdWZm
ZXJMZW5ndGgobV9wb3NpdGlvbiArIG1fYWNjdW11bGF0ZWREYXRhLnNpemUoKSk7CiAgICAgaWYg
KG1fYWNjdW11bGF0ZWREYXRhLnNpemUoKSkgewogICAgICAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0
YWJsZUJ5dGVQdHIocGx1Z2luLm1fZGF0YS5nZXQoKSkgKyBtX3Bvc2l0aW9uLCBtX2FjY3VtdWxh
dGVkRGF0YS5kYXRhKCksIG1fYWNjdW11bGF0ZWREYXRhLnNpemUoKSk7CiAgICAgICAgIHBsdWdp
bi5tX2NvbXBsZXRlZFJhbmdlcy5hZGQoeyBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9hY2N1
bXVsYXRlZERhdGEuc2l6ZSgpIC0gMX0pOwogICAgIH0KKworICAgIGlmIChtX3N0cmVhbUxvYWRl
cikKKyAgICAgICAgcGx1Z2luLmZvcmdldExvYWRlcigqbV9zdHJlYW1Mb2FkZXIpOwogfQogCiBi
b29sIFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6bWF5YmVDb21wbGV0ZShQREZQbHVnaW4m
IHBsdWdpbikKQEAgLTk3Miw2ICsxMDAwLDE2IEBAIHZvaWQgUERGUGx1Z2luOjpCeXRlUmFuZ2VS
ZXF1ZXN0Ojpjb21wbGV0ZVVuY29uZGl0aW9uYWxseShQREZQbHVnaW4mIHBsdWdpbikKICAgICBj
b21wbGV0ZVdpdGhCeXRlcyhDRkRhdGFHZXRCeXRlUHRyKHBsdWdpbi5tX2RhdGEuZ2V0KCkpICsg
bV9wb3NpdGlvbiwgY291bnQsIHBsdWdpbik7CiB9CiAKK3ZvaWQgUERGUGx1Z2luOjplbnN1cmVE
YXRhQnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdldExlbmd0aCkKK3sKKyAgICBBU1NFUlQobV9k
YXRhKTsKKworICAgIGF1dG8gY3VycmVudExlbmd0aCA9IENGRGF0YUdldExlbmd0aChtX2RhdGEu
Z2V0KCkpOworICAgIEFTU0VSVChjdXJyZW50TGVuZ3RoID49IDApOworICAgIGlmICh0YXJnZXRM
ZW5ndGggPiAodWludDY0X3QpY3VycmVudExlbmd0aCkKKyAgICAgICAgQ0ZEYXRhSW5jcmVhc2VM
ZW5ndGgobV9kYXRhLmdldCgpLCB0YXJnZXRMZW5ndGggLSBjdXJyZW50TGVuZ3RoKTsKK30KKwog
dm9pZCBQREZQbHVnaW46OndpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKQogewogICAgIC8vIFJl
ZGlyZWN0aW9ucyBmb3IgcmFuZ2UgcmVxdWVzdHMgYXJlIHVuZXhwZWN0ZWQuCkBAIC0xMDIyLDcg
KzEwNjAsNyBAQCB2b2lkIFBERlBsdWdpbjo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJgogICAgICAgICAgICAgbV9vdXRzdGFu
ZGluZ0J5dGVSYW5nZVJlcXVlc3RzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBj
YW5jZWxBbmRGb3JnZXRMb2FkZXIoKmxvYWRlcik7CisgICAgZm9yZ2V0TG9hZGVyKCpsb2FkZXIp
OwogfQogCiB2b2lkIFBERlBsdWdpbjo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciogbG9hZGVyKQpAQCAtMTQxNSwxMSArMTQ1MywxMiBAQCB2b2lkIFBERlBsdWdp
bjo6ZG9jdW1lbnREYXRhRGlkRmluaXNoTG9hZGluZygpCiAKICNpZiBIQVZFKElOQ1JFTUVOVEFM
X1BERl9BUElTKQogI2lmICFMT0dfRElTQUJMRUQKLSAgICBwZGZMb2cobWFrZVN0cmluZygiUERG
IGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcgd2l0aCBhIHRvdGFsIG9mICVsbHUgYnl0ZXMiLCBt
X3N0cmVhbWVkQnl0ZXMpKTsKKyAgICBwZGZMb2cobWFrZVN0cmluZygiUERGIGRvY3VtZW50IGZp
bmlzaGVkIGxvYWRpbmcgd2l0aCBhIHRvdGFsIG9mICIsIG1fc3RyZWFtZWRCeXRlcywgIiBieXRl
cyIpKTsKICNlbmRpZgogICAgIGlmIChtX2luY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQpIHsK
ICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGFsbCBkYXRhIGZvciB0aGUgZG9jdW1l
bnQsIGFuZCB0aGVyZWZvcmUgd2Uga25vdyBob3cgdG8gYW5zd2VyIGFueSBvdXRzdGFuZGluZyBy
YW5nZSByZXF1ZXN0cy4KICAgICAgICAgdW5jb25kaXRpb25hbENvbXBsZXRlT3V0c3RhbmRpbmdS
YW5nZVJlcXVlc3RzKCk7CisgICAgICAgIG1heWJlQ2xlYXJIaWdoTGF0ZW5jeURhdGFQcm92aWRl
ckZsYWcoKTsKICAgICB9IGVsc2UKICNlbmRpZgogICAgIHsKQEAgLTE0MzUsNiArMTQ3NCwxMCBA
QCB2b2lkIFBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3VtZW50KCkKICAgICBBU1NFUlQobV9wZGZE
b2N1bWVudCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAorI2lmIEhBVkUoSU5DUkVN
RU5UQUxfUERGX0FQSVMpCisgICAgbWF5YmVDbGVhckhpZ2hMYXRlbmN5RGF0YVByb3ZpZGVyRmxh
ZygpOworI2VuZGlmCisKICAgICB1cGRhdGVQYWdlQW5kRGV2aWNlU2NhbGVGYWN0b3JzKCk7CiAK
ICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RnJhbWVTaXplOnNpemUoKV07CkBAIC0xNTE5
LDcgKzE1NjIsOCBAQCB2b2lkIFBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAg
IG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBDRkRh
dGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihieXRlcyksIGxlbmd0aCk7CisgICAgZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aChtX3N0cmVhbWVk
Qnl0ZXMgKyBsZW5ndGgpOworICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2Rh
dGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5dGVzLCBieXRlcywgbGVuZ3RoKTsKICAgICBtX3N0cmVh
bWVkQnl0ZXMgKz0gbGVuZ3RoOwogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393602</attachid>
            <date>2020-03-14 18:30:21 -0700</date>
            <delta_ts>2020-03-14 20:40:48 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>pat</filename>
            <type>text/plain</type>
            <size>9089</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmNhMjE2MjdjZTguLjEwNGIxN2U3NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDIwLTAzLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBGaXggdGhlICJkZWxpdmVyIGNhY2hlZCByYW5nZXMiIGxvZ2ljIGluIFBERlBsdWdp
biAoYW5kIG90aGVyIHNtYWxsIGNsZWFudXBzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhh
dGNoZXIuCisKKyAgICAgICAgU3RyZWFtaW5nIGluIGRhdGEgYWx3YXlzIGFwcGVuZGVkIHRvIHRo
ZSBidWZmZXIgaW5zdGVhZCBvZiBmaXJzdCBncm93aW5nIHRoZSBidWZmZXIuCisgICAgICAgIFRo
aXMgd2Fzbid0IG5vdGljZWQgZWFybGllciBiZWNhdXNlIHdlIG9mdGVuIGRpZCBub3QgZ3JvdyB0
aGUgYnVmZmVyIGZvciBzdWNjZXNzZnVsIHJhbmdlIHJlcXVlc3QgY29tcGxldGlvbi4KKyAgICAg
ICAgQnV0IG5vdyB3ZSBvZnRlbiBkbyEKKyAgICAgICAgCisgICAgICAgIFNvIHRoaXMgY2xlYW5z
IHRoYXQgYWxsIHVwLgorICAgICAgICAKKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSBpdCByZXZl
YWxlZCBvdGhlciBpbnRlcmFjdGlvbnMgd2l0aCBQREZLaXQgdGhhdCBmb3JjZSB1cyB0byBoYW5k
bGUgZGF0YSByZXF1ZXN0cyBvbiB0aGUgbWFpbgorICAgICAgICB0aHJlYWQgYWZ0ZXIgdGhlIGRv
Y3VtZW50IGxvYWQgaXMgY29tcGxldGUgLSBXaGljaCBpcyBmaW5lIQorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6ZGF0YVByb3ZpZGVyR2V0
Qnl0ZXNBdFBvc2l0aW9uQ2FsbGJhY2spOiBJZiBvbiB0aGUgbWFpbiB0aHJlYWQgKGFuZCB0aGUg
ZG9jdW1lbnQgbG9hZCBpcyBjb21wbGV0ZSkKKyAgICAgICAgICBoYW5kbGUgdGhlIHJlcXVlc3Qg
ZGlyZWN0bHkhCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0
UG9zaXRpb25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpCeXRlUmFu
Z2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhBY2N1bXVsYXRlZERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmVuc3VyZURhdGFCdWZmZXJMZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1heWJlQ2xl
YXJIaWdoTGF0ZW5jeURhdGFQcm92aWRlckZsYWcpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OmRvY3VtZW50RGF0YURpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46Omluc3RhbGxQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEpOiBHcm93IHRoZSBidWZmZXIgaW5zdGVhZCBvZiBh
cHBlbmQuCisKKwogMjAyMC0wMy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgR2F0aGVyIFBERiBzY3JpcHRzIHRvIHJ1biBvbiBhIGJhY2tncm91bmQgdGhy
ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCmluZGV4IDI3MDQxMTk3MzdkLi4yMDQzYzU1MjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTMwLDggKzEzMCwxMSBA
QCBwdWJsaWM6CiAgICAgUERGUGx1Z2luQW5ub3RhdGlvbiogYWN0aXZlQW5ub3RhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZlQW5ub3RhdGlvbi5nZXQoKTsgfQogICAgIFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKIAorICAgIHZvaWQgZW5zdXJlRGF0
YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCBsZW5ndGgpOworCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9Q
REZfQVBJUykKICAgICB2b2lkIGdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uKHNpemVfdCBjb3Vu
dCwgb2ZmX3QgcG9zaXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgdWludDhfdCos
IHNpemVfdCBjb3VudCk+JiYpOworICAgIHNpemVfdCBnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlv
bk1haW5UaHJlYWQodm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KTsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBwZGZMb2coY29uc3QgU3RyaW5nJiBldmVudCk7CiAg
ICAgc2l6ZV90IGluY3JlbWVudFRocmVhZHNXYWl0aW5nT25DYWxsYmFjaygpIHsgcmV0dXJuICsr
bV90aHJlYWRzV2FpdGluZ09uQ2FsbGJhY2s7IH0KQEAgLTM3Nyw2ICszODAsNyBAQCBwcml2YXRl
OgogICAgIEJ5dGVSYW5nZVJlcXVlc3QqIGJ5dGVSYW5nZVJlcXVlc3RGb3JMb2FkZXIoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXImKTsKICAgICB2b2lkIGZvcmdldExvYWRlcihX
ZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciYpOwogICAgIHZvaWQgY2FuY2VsQW5k
Rm9yZ2V0TG9hZGVyKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyJik7CisgICAg
dm9pZCBtYXliZUNsZWFySGlnaExhdGVuY3lEYXRhUHJvdmlkZXJGbGFnKCk7CiAKICAgICBSZXRh
aW5QdHI8UERGRG9jdW1lbnQ+IG1fYmFja2dyb3VuZFRocmVhZERvY3VtZW50OwogICAgIFJlZlB0
cjxUaHJlYWQ+IG1fcGRmVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggOGEzYTE3ZWI2MzkuLjI5ODAyNGZiOTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KQEAgLTk4LDYgKzk4LDcgQEAKIEBpbnRlcmZhY2UgUERGRG9jdW1lbnQgKCkKIC0oaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUHJvdmlkZXI6KENHRGF0YVByb3ZpZGVyUmVmKWRhdGFQcm92aWRlcjsK
IC0odm9pZClwcmVsb2FkRGF0YU9mUGFnZXNJblJhbmdlOihOU1JhbmdlKXJhbmdlIG9uUXVldWU6
KGRpc3BhdGNoX3F1ZXVlX3QpcXVldWUgY29tcGxldGlvbjoodm9pZCAoXikoTlNJbmRleFNldCog
bG9hZGVkUGFnZUluZGV4ZXMpKWNvbXBsZXRpb25CbG9jazsKK0Bwcm9wZXJ0eSAocmVhZHdyaXRl
LCBub25hdG9taWMpIEJPT0wgaGFzSGlnaExhdGVuY3lEYXRhUHJvdmlkZXI7CiBAZW5kCiAjZW5k
aWYKIApAQCAtNjkzLDcgKzY5NCwxMiBAQCB2b2lkIFBERlBsdWdpbjo6dmVyYm9zZUxvZygpCiAK
IHN0YXRpYyBzaXplX3QgZGF0YVByb3ZpZGVyR2V0Qnl0ZXNBdFBvc2l0aW9uQ2FsbGJhY2sodm9p
ZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewot
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChpc01haW5UaHJlYWQoKSkgewor
I2lmICFMT0dfRElTQUJMRUQKKyAgICAgICAgKChQREZQbHVnaW4qKWluZm8pLT5wZGZMb2cobWFr
ZVN0cmluZygiSGFuZGxpbmcgcmVxdWVzdCBmb3IgIiwgY291bnQsICIgYnl0ZXMgYXQgcG9zaXRp
b24gIiwgcG9zaXRpb24sICIgc3luY2hyb25vdXNseSBvbiB0aGUgbWFpbiB0aHJlYWQiKSk7Cisj
ZW5kaWYKKyAgICAgICAgcmV0dXJuICgoUERGUGx1Z2luKilpbmZvKS0+Z2V0UmVzb3VyY2VCeXRl
c0F0UG9zaXRpb25NYWluVGhyZWFkKGJ1ZmZlciwgcG9zaXRpb24sIGNvdW50KTsKKyAgICB9CiAK
ICNpZiAhTE9HX0RJU0FCTEVECiAgICAgUmVmPFBERlBsdWdpbj4gZGVidWdQbHVnaW5SZWYgPSAq
KChQREZQbHVnaW4qKWluZm8pOwpAQCAtNzc3LDYgKzc4MywxNSBAQCBzdGF0aWMgdm9pZCBkYXRh
UHJvdmlkZXJSZWxlYXNlSW5mb0NhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgYWRvcHRSZWYoKFBE
RlBsdWdpbiopaW5mbyk7CiB9CiAKK3ZvaWQgUERGUGx1Z2luOjptYXliZUNsZWFySGlnaExhdGVu
Y3lEYXRhUHJvdmlkZXJGbGFnKCkKK3sKKyAgICBpZiAoIW1fcGRmRG9jdW1lbnQgfHwgIW1fZG9j
dW1lbnRGaW5pc2hlZExvYWRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChbbV9wZGZE
b2N1bWVudC5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEhhc0hpZ2hMYXRl
bmN5RGF0YVByb3ZpZGVyOildKQorICAgICAgICBbbV9wZGZEb2N1bWVudC5nZXQoKSBzZXRIYXNI
aWdoTGF0ZW5jeURhdGFQcm92aWRlcjpOT107Cit9CisKIHZvaWQgUERGUGx1Z2luOjp0aHJlYWRF
bnRyeShSZWY8UERGUGx1Z2luPiYmIHByb3RlY3RlZFBsdWdpbikKIHsKICAgICBDR0RhdGFQcm92
aWRlckRpcmVjdEFjY2Vzc1Jhbmdlc0NhbGxiYWNrcyBkYXRhUHJvdmlkZXJDYWxsYmFja3MgewpA
QCAtODIxLDYgKzgzNiwyNSBAQCB2b2lkIFBERlBsdWdpbjo6dW5jb25kaXRpb25hbENvbXBsZXRl
T3V0c3RhbmRpbmdSYW5nZVJlcXVlc3RzKCkKICAgICBtX291dHN0YW5kaW5nQnl0ZVJhbmdlUmVx
dWVzdHMuY2xlYXIoKTsKIH0KIAorc2l6ZV90IFBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0
UG9zaXRpb25NYWluVGhyZWFkKHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBj
b3VudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2RvY3Vt
ZW50RmluaXNoZWRMb2FkaW5nKTsKKyAgICBBU1NFUlQocG9zaXRpb24gPj0gMCk7CisKKyAgICBh
dXRvIGNmTGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKG1fZGF0YS5nZXQoKSk7CisgICAgQVNTRVJU
KGNmTGVuZ3RoID49IDApOworCisgICAgaWYgKCh1bnNpZ25lZClwb3NpdGlvbiArIGNvdW50ID4g
KHVuc2lnbmVkKWNmTGVuZ3RoKSB7CisgICAgICAgIC8vIFdlIGNvdWxkIHJldHVybiBwYXJ0aWFs
IGRhdGEsIGJ1dCB0aGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQKKyAgICAgICAgLy8g
b25jZSB0aGUgZW50aXJlIGJ1ZmZlciBpcyBrbm93biwgYW5kIHRoZXJlZm9yZSBQREZLaXQgc2hv
dWxkIG9ubHkKKyAgICAgICAgLy8gYmUgYXNraW5nIGZvciB2YWxpZCByYW5nZXMuCisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICBtZW1jcHkoYnVmZmVyLCBDRkRhdGFHZXRCeXRlUHRyKG1f
ZGF0YS5nZXQoKSkgKyBwb3NpdGlvbiwgY291bnQpOworICAgIHJldHVybiBjb3VudDsKK30KKwog
dm9pZCBQREZQbHVnaW46OmdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uKHNpemVfdCBjb3VudCwg
b2ZmX3QgcG9zaXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgdWludDhfdCosIHNp
emVfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsgCkBAIC05MjQsMjIgKzk1OCwxNiBAQCB2b2lkIFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVz
dDo6Y29tcGxldGVXaXRoQWNjdW11bGF0ZWREYXRhKFBERlBsdWdpbiYgcGx1Z2luKQogCiAgICAg
bV9jb21wbGV0aW9uSGFuZGxlcihtX2FjY3VtdWxhdGVkRGF0YS5kYXRhKCksIG1fYWNjdW11bGF0
ZWREYXRhLnNpemUoKSk7CiAKLSAgICBpZiAobV9zdHJlYW1Mb2FkZXIpCi0gICAgICAgIHBsdWdp
bi5mb3JnZXRMb2FkZXIoKm1fc3RyZWFtTG9hZGVyKTsKLQogICAgIC8vIEZvbGQgdGhpcyBkYXRh
IGludG8gdGhlIG1haW4gZGF0YSBidWZmZXIgc28gdGhhdCBpZiBzb21ldGhpbmcgaW4gaXRzIHJh
bmdlIGlzIHJlcXVlc3RlZCBhZ2FpbiAod2hpY2ggaGFwcGVucyBxdWl0ZSBvZnRlbikKICAgICAv
LyB3ZSBkbyBub3QgbmVlZCB0byBoaXQgdGhlIG5ldHdvcmsgbGF5ZXIgYWdhaW4uCi0KLSAgICBh
dXRvIGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChwbHVnaW4ubV9kYXRhLmdldCgpKTsKLSAgICBD
RkluZGV4IHRhcmdldFNpemUgPSBtX3Bvc2l0aW9uICsgbV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgp
OwotICAgIGF1dG8gZGVsdGEgPSB0YXJnZXRTaXplIC0gbGVuZ3RoOwotICAgIGlmIChkZWx0YSA+
IDApCi0gICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKHBsdWdpbi5tX2RhdGEuZ2V0KCksIGRl
bHRhKTsKLQorICAgIHBsdWdpbi5lbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fcG9zaXRpb24gKyBt
X2FjY3VtdWxhdGVkRGF0YS5zaXplKCkpOwogICAgIGlmIChtX2FjY3VtdWxhdGVkRGF0YS5zaXpl
KCkpIHsKICAgICAgICAgbWVtY3B5KENGRGF0YUdldE11dGFibGVCeXRlUHRyKHBsdWdpbi5tX2Rh
dGEuZ2V0KCkpICsgbV9wb3NpdGlvbiwgbV9hY2N1bXVsYXRlZERhdGEuZGF0YSgpLCBtX2FjY3Vt
dWxhdGVkRGF0YS5zaXplKCkpOwogICAgICAgICBwbHVnaW4ubV9jb21wbGV0ZWRSYW5nZXMuYWRk
KHsgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIG1fYWNjdW11bGF0ZWREYXRhLnNpemUoKSAtIDF9
KTsKICAgICB9CisKKyAgICBpZiAobV9zdHJlYW1Mb2FkZXIpCisgICAgICAgIHBsdWdpbi5mb3Jn
ZXRMb2FkZXIoKm1fc3RyZWFtTG9hZGVyKTsKIH0KIAogYm9vbCBQREZQbHVnaW46OkJ5dGVSYW5n
ZVJlcXVlc3Q6Om1heWJlQ29tcGxldGUoUERGUGx1Z2luJiBwbHVnaW4pCkBAIC0xMDIyLDcgKzEw
NTAsNyBAQCB2b2lkIFBERlBsdWdpbjo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJgogICAgICAgICAgICAgbV9vdXRzdGFuZGlu
Z0J5dGVSYW5nZVJlcXVlc3RzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBjYW5j
ZWxBbmRGb3JnZXRMb2FkZXIoKmxvYWRlcik7CisgICAgZm9yZ2V0TG9hZGVyKCpsb2FkZXIpOwog
fQogCiB2b2lkIFBERlBsdWdpbjo6ZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciogbG9hZGVyKQpAQCAtMTQxNSwxMSArMTQ0MywxMiBAQCB2b2lkIFBERlBsdWdpbjo6
ZG9jdW1lbnREYXRhRGlkRmluaXNoTG9hZGluZygpCiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BE
Rl9BUElTKQogI2lmICFMT0dfRElTQUJMRUQKLSAgICBwZGZMb2cobWFrZVN0cmluZygiUERGIGRv
Y3VtZW50IGZpbmlzaGVkIGxvYWRpbmcgd2l0aCBhIHRvdGFsIG9mICVsbHUgYnl0ZXMiLCBtX3N0
cmVhbWVkQnl0ZXMpKTsKKyAgICBwZGZMb2cobWFrZVN0cmluZygiUERGIGRvY3VtZW50IGZpbmlz
aGVkIGxvYWRpbmcgd2l0aCBhIHRvdGFsIG9mICIsIG1fc3RyZWFtZWRCeXRlcywgIiBieXRlcyIp
KTsKICNlbmRpZgogICAgIGlmIChtX2luY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQpIHsKICAg
ICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGFsbCBkYXRhIGZvciB0aGUgZG9jdW1lbnQs
IGFuZCB0aGVyZWZvcmUgd2Uga25vdyBob3cgdG8gYW5zd2VyIGFueSBvdXRzdGFuZGluZyByYW5n
ZSByZXF1ZXN0cy4KICAgICAgICAgdW5jb25kaXRpb25hbENvbXBsZXRlT3V0c3RhbmRpbmdSYW5n
ZVJlcXVlc3RzKCk7CisgICAgICAgIG1heWJlQ2xlYXJIaWdoTGF0ZW5jeURhdGFQcm92aWRlckZs
YWcoKTsKICAgICB9IGVsc2UKICNlbmRpZgogICAgIHsKQEAgLTE0MzUsNiArMTQ2NCwxMCBAQCB2
b2lkIFBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3VtZW50KCkKICAgICBBU1NFUlQobV9wZGZEb2N1
bWVudCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAorI2lmIEhBVkUoSU5DUkVNRU5U
QUxfUERGX0FQSVMpCisgICAgbWF5YmVDbGVhckhpZ2hMYXRlbmN5RGF0YVByb3ZpZGVyRmxhZygp
OworI2VuZGlmCisKICAgICB1cGRhdGVQYWdlQW5kRGV2aWNlU2NhbGVGYWN0b3JzKCk7CiAKICAg
ICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RnJhbWVTaXplOnNpemUoKV07CkBAIC0xNTE0LDEy
ICsxNTQ3LDIzIEBAIHZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3QKICAgICAgICAgbV9pc1Bvc3RTY3Jp
cHQgPSB0cnVlOwogfQogCit2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1
aW50NjRfdCB0YXJnZXRMZW5ndGgpCit7CisgICAgQVNTRVJUKG1fZGF0YSk7CisKKyAgICBhdXRv
IGN1cnJlbnRMZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgobV9kYXRhLmdldCgpKTsKKyAgICBBU1NF
UlQoY3VycmVudExlbmd0aCA+PSAwKTsKKyAgICBpZiAodGFyZ2V0TGVuZ3RoID4gKHVpbnQ2NF90
KWN1cnJlbnRMZW5ndGgpCisgICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQo
KSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7Cit9CisKIHZvaWQgUERGUGx1Z2luOjpt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkK
IHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVNdXRhYmxlKDAsIDApKTsKIAotICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVuZ3RoKTsKKyAgICBlbnN1
cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGxlbmd0aCk7CisgICAgbWVtY3B5
KENGRGF0YUdldE11dGFibGVCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMs
IGJ5dGVzLCBsZW5ndGgpOwogICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiAKICNpZiBI
QVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>