Notes for SRA 2021 Workshop 7, “Monte Carlo simulation and
probability bounds analysis in R with hardly any data (Instructors:
Ferson & Grey)” held 2021-12-05.
Description
Description from https://www.sra.org/events-webinars/annual-meeting/program/annual-meeting-workshops/.
Attend virtual session on Pathable.
Workshop #7: Full Day 8AM-5PM | Monte Carlo
simulation and probability bounds analysis in R with hardly any data
(Instructors: Ferson & Grey)
- Features hands-on examples worked in R on your own laptop, from raw
data to final decision.
- Introduces and compares Monte Carlo simulation and probability
bounds analysis for developing probabilistic risk analyses when little
or no empirical data are available.
- You can use your laptop to work the examples, or just follow along
if you prefer.
- The examples illustrate the basic problems risk analysts face: not
having much data to estimate inputs, not knowing the distribution
shapes, not knowing their correlations, and not even being sure about
the model form.
- Monte Carlo models will be parameterized using the method of
matching moments and other common strategies.
- Probability bounds will be developed from both large and small data
sets, from data with non-negligible measurement uncertainty, and from
published summaries that lack data altogether.
- Explains how to avoid common pitfalls in risk analyses, including
the multiple instantiation problem, unjustified independence
assumptions, repeated variable problem, and what to do when there’s
little or no data.
- The numerical examples will be developed into fully probabilistic
estimates useful for quantitative decisions and other risk-informed
planning.
- Emphasis will be placed on the interpretation of results and on how
defensible decisions can be made even when little information is
available.
- The presentation style will be casual and interactive.
- Participants will receive handouts of the slides and electronic
files with software for the examples.
Presentation
Notes from Slide
Presentation:
Does maximum entropy maximize uncertainty? Arguably yes, but in fact
it can throw out information, see slide 79.
Application of these methods requires judgment; choices of
distributions and methods should be defensible, but ultimately are
analyst opinions.
Monte Carlo assumes that each variable is independent, and different.
Be careful about how values are represented, see slide 88, and be
careful about variables that are not independent.
Probability bounds analysis (slide 111) is more rigorous than Monte
Carlo, and works with even terrible data.
Robust Bayesian analysis (slide 115) addresses the problem of
arbitrary priors by using multiple appropriate priors - this is the
missing piece that has always bothered me about Bayesian math.
PBA is really interesting way to communicate both variability and
ambiguity. Is PBA better at communicating ambiguity than MC? [Quite
possibly]
What if we added a p-box to a Monte Carlo CDF? (or complementary
CDF?) this should add insight into the level of ambiguity (epistemic
uncertainty).
What we’re doing with FAIR and similar analyses is really just
scratching the surface of what’s possible.
Second-order Monte Carlo analysis will be bounded within the p-box,
and it’s highly unlikely it will show the complete p-box.
Are Monte Carlo and PBA combined? Yes, they are “nested” typically.
This is what’s done in Info-Gap
Analysis - first present a more deterministic solution with all
assumptions, then a p-box showing when the assumptions are relaxed.
Summary of the “Neuroscience of Risk”: address people’s perception of
incertitude and variability (which are different) in risk communication
- see slides 231-234.
pba.r
has the ability to constrain bounds based on
dependence and correlation.
This is a bit off-topic, do you have general advice on applying these
principles risk analysis and communication (for people with less
math/statistics training)? Is it just as simple as “work to communicate
both the variability and incertitude?”
“Fermi Estimates” is a pretty good description of FAIR and
Hubbard-style risk quantification.
This paper and podcast make a good case to simply average the expert
estimates - that there’s no clear evidence that there’s anything better.
https://doi.org/10.1016/j.ssci.2017.02.018 - https://safetyofwork.com/episodes/ep40-when-should-we-trust-expert-opinions-about-risk
Paper on elliptical estimates from the Fermi estimation: https://scholarworks.utep.edu/cgi/viewcontent.cgi?article=1130&context=cs_techrep
Recommends Mark
Burgman’s work on expert elicitation.
Overall, Alex and Scott are making the case for using p-boxes to make
better decisions under variability and incertitude (risk).
Workshop Site
Additional links and downloads available at https://sites.google.com/site/hardlyanydata (files have
been downloaded to this repository):
This tutorial explains how you can develop a fully probabilistic risk
analysis even though there may be very little empirical data available
on which to base the analysis. It compares the strengths and weakness of
a traditional Monte Carlo assessment with probability bounds analysis in
the R statistical computing environment which is freely available over
the internet.
Overview of topics
Introduction
Welcome Case studies: civil and aerospace engineering, exposure
analysis, and conservation biology Installation of R and workshop
software
Monte Carlo simulation
Random values and replications Distributions Independent and perfect
sampling Calculations in R Interpreting results: tails are where the
action is
Probability bounds analysis
Kinds of uncertainty: the ‘open question’ Probability boxes
Independent, perfect, and Fréchet Calculation in R Interpreting results:
fully probabilistic answers
Approximation versus enveloping
Integrating Monte Carlo and probability bounding Fixed but unknown,
or actually varying? Distributions, p-boxes, and interval ranges What
you know and what you assume
Correlations and dependencies
Making no assumptions about dependence Perfect correlations
Dispersive Monte Carlo dependence Independence maximizes entropy
Case studies in R
Civil engineering: dam safety Aerospace engineering: spacecraft
design Environmental protection: contaminant exposure analysis
Conservation biology: estimating endangerment
Model uncertainty
What-if studies Stochastic mixtures and Bayes model averaging
Bounding methods Conservative methods for polynomial models
Sensitivity analyses
Bang-for-buck control analysis Value of information: what data to
collect More samples or better measurements
LS0tCnRpdGxlOiBTUkEgV29ya3Nob3AgNyBOb3RlcwphdXRob3I6IEpvaG4gQmVubmluZ2hvZmYKZGF0ZTogJzIwMjEtMTItMDQnCmRhdGUtbW9kaWZpZWQ6ICcyMDIyLTA2LTIxJwpjYXRlZ29yaWVzOiBbXQpvcmRlcjogfgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRoZW1lOgogICAgICB2ZXJzaW9uOiA1CiAgICAgIHByZXNldDogYm9vdHN0cmFwCiAgICBjc3M6IGFzc2V0cy9leHRyYS5jc3MKICAgIHBhbmRvY19hcmdzOiAtLXNoaWZ0LWhlYWRpbmctbGV2ZWwtYnk9MQogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiBubwogICAgICBzbW9vdGhfc2Nyb2xsOiBubwotLS0KCk5vdGVzIGZvciBTUkEgMjAyMSBXb3Jrc2hvcCA3LCAiTW9udGUgQ2FybG8gc2ltdWxhdGlvbiBhbmQgcHJvYmFiaWxpdHkgYm91bmRzIGFuYWx5c2lzIGluIFIgd2l0aCBoYXJkbHkgYW55IGRhdGEgKEluc3RydWN0b3JzOiBGZXJzb24gJiBHcmV5KSIgaGVsZCAyMDIxLTEyLTA1LgoKIyBEZXNjcmlwdGlvbgoKRGVzY3JpcHRpb24gZnJvbSA8aHR0cHM6Ly93d3cuc3JhLm9yZy9ldmVudHMtd2ViaW5hcnMvYW5udWFsLW1lZXRpbmcvcHJvZ3JhbS9hbm51YWwtbWVldGluZy13b3Jrc2hvcHMvPi4gQXR0ZW5kIHZpcnR1YWwgc2Vzc2lvbiBvbiBbUGF0aGFibGVdKGh0dHBzOi8vc3JhMjEudXMyLnBhdGhhYmxlLmNvbS9tZWV0aW5ncy92aXJ0dWFsLzlHOHJpMmlBUHF2VDVpejVxKS4KCioqV29ya3Nob3AgIzc6IEZ1bGwgRGF5IDhBTS01UE0qKiB8IE1vbnRlIENhcmxvIHNpbXVsYXRpb24gYW5kIHByb2JhYmlsaXR5IGJvdW5kcyBhbmFseXNpcyBpbiBSIHdpdGggaGFyZGx5IGFueSBkYXRhIChJbnN0cnVjdG9yczogRmVyc29uICYgR3JleSkKCiogRmVhdHVyZXMgaGFuZHMtb24gZXhhbXBsZXMgd29ya2VkIGluIFIgb24geW91ciBvd24gbGFwdG9wLCBmcm9tIHJhdyBkYXRhIHRvIGZpbmFsIGRlY2lzaW9uLgoqIEludHJvZHVjZXMgYW5kIGNvbXBhcmVzIE1vbnRlIENhcmxvIHNpbXVsYXRpb24gYW5kIHByb2JhYmlsaXR5IGJvdW5kcyBhbmFseXNpcyBmb3IgZGV2ZWxvcGluZyBwcm9iYWJpbGlzdGljIHJpc2sgYW5hbHlzZXMgd2hlbiBsaXR0bGUgb3Igbm8gZW1waXJpY2FsIGRhdGEgYXJlIGF2YWlsYWJsZS4KKiBZb3UgY2FuIHVzZSB5b3VyIGxhcHRvcCB0byB3b3JrIHRoZSBleGFtcGxlcywgb3IganVzdCBmb2xsb3cgYWxvbmcgaWYgeW91IHByZWZlci4KKiBUaGUgZXhhbXBsZXMgaWxsdXN0cmF0ZSB0aGUgYmFzaWMgcHJvYmxlbXMgcmlzayBhbmFseXN0cyBmYWNlOiBub3QgaGF2aW5nIG11Y2ggZGF0YSB0byBlc3RpbWF0ZSBpbnB1dHMsIG5vdCBrbm93aW5nIHRoZSBkaXN0cmlidXRpb24gc2hhcGVzLCBub3Qga25vd2luZyB0aGVpciBjb3JyZWxhdGlvbnMsIGFuZCBub3QgZXZlbiBiZWluZyBzdXJlIGFib3V0IHRoZSBtb2RlbCBmb3JtLgoqIE1vbnRlIENhcmxvIG1vZGVscyB3aWxsIGJlIHBhcmFtZXRlcml6ZWQgdXNpbmcgdGhlIG1ldGhvZCBvZiBtYXRjaGluZyBtb21lbnRzIGFuZCBvdGhlciBjb21tb24gc3RyYXRlZ2llcy4KKiBQcm9iYWJpbGl0eSBib3VuZHMgd2lsbCBiZSBkZXZlbG9wZWQgZnJvbSBib3RoIGxhcmdlIGFuZCBzbWFsbCBkYXRhIHNldHMsIGZyb20gZGF0YSB3aXRoIG5vbi1uZWdsaWdpYmxlIG1lYXN1cmVtZW50IHVuY2VydGFpbnR5LCBhbmQgZnJvbSBwdWJsaXNoZWQgc3VtbWFyaWVzIHRoYXQgbGFjayBkYXRhIGFsdG9nZXRoZXIuCiogRXhwbGFpbnMgaG93IHRvIGF2b2lkIGNvbW1vbiBwaXRmYWxscyBpbiByaXNrIGFuYWx5c2VzLCBpbmNsdWRpbmcgdGhlIG11bHRpcGxlIGluc3RhbnRpYXRpb24gcHJvYmxlbSwgdW5qdXN0aWZpZWQgaW5kZXBlbmRlbmNlIGFzc3VtcHRpb25zLCByZXBlYXRlZCB2YXJpYWJsZSBwcm9ibGVtLCBhbmQgd2hhdCB0byBkbyB3aGVuIHRoZXJl4oCZcyBsaXR0bGUgb3Igbm8gZGF0YS4KKiBUaGUgbnVtZXJpY2FsIGV4YW1wbGVzIHdpbGwgYmUgZGV2ZWxvcGVkIGludG8gZnVsbHkgcHJvYmFiaWxpc3RpYyBlc3RpbWF0ZXMgdXNlZnVsIGZvciBxdWFudGl0YXRpdmUgZGVjaXNpb25zIGFuZCBvdGhlciByaXNrLWluZm9ybWVkIHBsYW5uaW5nLgoqIEVtcGhhc2lzIHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiByZXN1bHRzIGFuZCBvbiBob3cgZGVmZW5zaWJsZSBkZWNpc2lvbnMgY2FuIGJlIG1hZGUgZXZlbiB3aGVuIGxpdHRsZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUuCiogVGhlIHByZXNlbnRhdGlvbiBzdHlsZSB3aWxsIGJlIGNhc3VhbCBhbmQgaW50ZXJhY3RpdmUuCiogUGFydGljaXBhbnRzIHdpbGwgcmVjZWl2ZSBoYW5kb3V0cyBvZiB0aGUgc2xpZGVzIGFuZCBlbGVjdHJvbmljIGZpbGVzIHdpdGggc29mdHdhcmUgZm9yIHRoZSBleGFtcGxlcy4KCiMgUHJlc2VudGF0aW9uCgpOb3RlcyBmcm9tIFtTbGlkZSBQcmVzZW50YXRpb25dKGFzc2V0cy9Ob0RhdGEtMjAyMS1ab29tLnBwdHgpOgoKRG9lcyBtYXhpbXVtIGVudHJvcHkgbWF4aW1pemUgdW5jZXJ0YWludHk/IEFyZ3VhYmx5IHllcywgYnV0IGluIGZhY3QgaXQgY2FuIHRocm93IG91dCBpbmZvcm1hdGlvbiwgc2VlIHNsaWRlIDc5LgoKQXBwbGljYXRpb24gb2YgdGhlc2UgbWV0aG9kcyByZXF1aXJlcyBqdWRnbWVudDsgY2hvaWNlcyBvZiBkaXN0cmlidXRpb25zIGFuZCBtZXRob2RzIHNob3VsZCBiZSBkZWZlbnNpYmxlLCBidXQgdWx0aW1hdGVseSBhcmUgYW5hbHlzdCBvcGluaW9ucy4KCk1vbnRlIENhcmxvIGFzc3VtZXMgdGhhdCBlYWNoIHZhcmlhYmxlIGlzIGluZGVwZW5kZW50LCBhbmQgZGlmZmVyZW50LiBCZSBjYXJlZnVsIGFib3V0IGhvdyB2YWx1ZXMgYXJlIHJlcHJlc2VudGVkLCBzZWUgc2xpZGUgODgsIGFuZCBiZSBjYXJlZnVsIGFib3V0IHZhcmlhYmxlcyB0aGF0IGFyZSBub3QgaW5kZXBlbmRlbnQuCgpQcm9iYWJpbGl0eSBib3VuZHMgYW5hbHlzaXMgKHNsaWRlIDExMSkgaXMgbW9yZSByaWdvcm91cyB0aGFuIE1vbnRlIENhcmxvLCBhbmQgd29ya3Mgd2l0aCBldmVuIHRlcnJpYmxlIGRhdGEuCgpSb2J1c3QgQmF5ZXNpYW4gYW5hbHlzaXMgKHNsaWRlIDExNSkgYWRkcmVzc2VzIHRoZSBwcm9ibGVtIG9mIGFyYml0cmFyeSBwcmlvcnMgYnkgdXNpbmcgbXVsdGlwbGUgYXBwcm9wcmlhdGUgcHJpb3JzIC0gdGhpcyBpcyB0aGUgbWlzc2luZyBwaWVjZSB0aGF0IGhhcyBhbHdheXMgYm90aGVyZWQgbWUgYWJvdXQgQmF5ZXNpYW4gbWF0aC4KClBCQSBpcyByZWFsbHkgaW50ZXJlc3Rpbmcgd2F5IHRvIGNvbW11bmljYXRlIGJvdGggdmFyaWFiaWxpdHkgYW5kIGFtYmlndWl0eS4gSXMgUEJBIGJldHRlciBhdCBjb21tdW5pY2F0aW5nIGFtYmlndWl0eSB0aGFuIE1DPyBbUXVpdGUgcG9zc2libHldCgpXaGF0IGlmIHdlIGFkZGVkIGEgcC1ib3ggdG8gYSBNb250ZSBDYXJsbyBDREY/IChvciBjb21wbGVtZW50YXJ5IENERj8pIHRoaXMgc2hvdWxkIGFkZCBpbnNpZ2h0IGludG8gdGhlIGxldmVsIG9mIGFtYmlndWl0eSAoZXBpc3RlbWljIHVuY2VydGFpbnR5KS4KCldoYXQgd2UncmUgZG9pbmcgd2l0aCBGQUlSIGFuZCBzaW1pbGFyIGFuYWx5c2VzIGlzIHJlYWxseSBqdXN0IHNjcmF0Y2hpbmcgdGhlIHN1cmZhY2Ugb2Ygd2hhdCdzIHBvc3NpYmxlLgoKU2Vjb25kLW9yZGVyIE1vbnRlIENhcmxvIGFuYWx5c2lzIHdpbGwgYmUgYm91bmRlZCB3aXRoaW4gdGhlIHAtYm94LCBhbmQgaXQncyBoaWdobHkgdW5saWtlbHkgaXQgd2lsbCBzaG93IHRoZSBjb21wbGV0ZSBwLWJveC4KCkFyZSBNb250ZSBDYXJsbyBhbmQgUEJBIGNvbWJpbmVkPyBZZXMsIHRoZXkgYXJlICJuZXN0ZWQiIHR5cGljYWxseS4gVGhpcyBpcyB3aGF0J3MgZG9uZSBpbiBbSW5mby1HYXAgQW5hbHlzaXNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZm8tZ2FwX2RlY2lzaW9uX3RoZW9yeSkgLSBmaXJzdCBwcmVzZW50IGEgbW9yZSBkZXRlcm1pbmlzdGljIHNvbHV0aW9uIHdpdGggYWxsIGFzc3VtcHRpb25zLCB0aGVuIGEgcC1ib3ggc2hvd2luZyB3aGVuIHRoZSBhc3N1bXB0aW9ucyBhcmUgcmVsYXhlZC4KClN1bW1hcnkgb2YgdGhlICJOZXVyb3NjaWVuY2Ugb2YgUmlzayI6IGFkZHJlc3MgcGVvcGxlJ3MgcGVyY2VwdGlvbiBvZiBpbmNlcnRpdHVkZSBhbmQgdmFyaWFiaWxpdHkgKHdoaWNoIGFyZSBkaWZmZXJlbnQpIGluIHJpc2sgY29tbXVuaWNhdGlvbiAtIHNlZSBzbGlkZXMgMjMxLTIzNC4KCmBwYmEucmAgaGFzIHRoZSBhYmlsaXR5IHRvIGNvbnN0cmFpbiBib3VuZHMgYmFzZWQgb24gZGVwZW5kZW5jZSBhbmQgY29ycmVsYXRpb24uCgpUaGlzIGlzIGEgYml0IG9mZi10b3BpYywgZG8geW91IGhhdmUgZ2VuZXJhbCBhZHZpY2Ugb24gYXBwbHlpbmcgdGhlc2UgcHJpbmNpcGxlcyByaXNrIGFuYWx5c2lzIGFuZCBjb21tdW5pY2F0aW9uIChmb3IgcGVvcGxlIHdpdGggbGVzcyBtYXRoL3N0YXRpc3RpY3MgdHJhaW5pbmcpPyBJcyBpdCBqdXN0IGFzIHNpbXBsZSBhcyAid29yayB0byBjb21tdW5pY2F0ZSBib3RoIHRoZSB2YXJpYWJpbGl0eSBhbmQgaW5jZXJ0aXR1ZGU/IgoKIkZlcm1pIEVzdGltYXRlcyIgaXMgYSBwcmV0dHkgZ29vZCBkZXNjcmlwdGlvbiBvZiBGQUlSIGFuZCBIdWJiYXJkLXN0eWxlIHJpc2sgcXVhbnRpZmljYXRpb24uCgpUaGlzIHBhcGVyIGFuZCBwb2RjYXN0IG1ha2UgYSBnb29kIGNhc2UgdG8gc2ltcGx5IGF2ZXJhZ2UgdGhlIGV4cGVydCBlc3RpbWF0ZXMgLSB0aGF0IHRoZXJlJ3Mgbm8gY2xlYXIgZXZpZGVuY2UgdGhhdCB0aGVyZeKAmXMgYW55dGhpbmcgYmV0dGVyLiBodHRwczovL2RvaS5vcmcvMTAuMTAxNi9qLnNzY2kuMjAxNy4wMi4wMTggLSBodHRwczovL3NhZmV0eW9md29yay5jb20vZXBpc29kZXMvZXA0MC13aGVuLXNob3VsZC13ZS10cnVzdC1leHBlcnQtb3BpbmlvbnMtYWJvdXQtcmlzawoKUGFwZXIgb24gZWxsaXB0aWNhbCBlc3RpbWF0ZXMgZnJvbSB0aGUgRmVybWkgZXN0aW1hdGlvbjogaHR0cHM6Ly9zY2hvbGFyd29ya3MudXRlcC5lZHUvY2dpL3ZpZXdjb250ZW50LmNnaT9hcnRpY2xlPTExMzAmY29udGV4dD1jc190ZWNocmVwCgpSZWNvbW1lbmRzIFtNYXJrIEJ1cmdtYW4nc10oaHR0cHM6Ly9zY2hvbGFyLmdvb2dsZS5jb20vY2l0YXRpb25zP3VzZXI9TzRZWUtDc0FBQUFKJmhsPWVuJm9pPWFvKSB3b3JrIG9uIGV4cGVydCBlbGljaXRhdGlvbi4KCk92ZXJhbGwsIEFsZXggYW5kIFNjb3R0IGFyZSBtYWtpbmcgdGhlIGNhc2UgZm9yIHVzaW5nIHAtYm94ZXMgdG8gbWFrZSBiZXR0ZXIgZGVjaXNpb25zIHVuZGVyIHZhcmlhYmlsaXR5IGFuZCBpbmNlcnRpdHVkZSAocmlzaykuCgojIE5vdGVzCgpUaGlzIGlzIHRoZSBnYW1lIG9uIEFsZXgncyBzaGVsZi4gUmlzayB3aXRoIGhpZGRlbiBvYmplY3RpdmVzOiA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmlzaUtvIT4KClRoaXMgbG9va3MgdG8gYmUgYSBwcmV0dHkgZ29vZCBpbnRyb2R1Y3Rpb24gdG8gYmFzaWMgTW9udGUgQ2FybG8gdXNpbmcgUi4gaHR0cHM6Ly93d3cuY291bnRiYXllc2llLmNvbS9ibG9nLzIwMTUvMy8zLzYtYW1hemluZy10cmljay13aXRoLW1vbnRlLWNhcmxvLXNpbXVsYXRpb25zCgojIFdvcmtzaG9wIFNpdGUKCkFkZGl0aW9uYWwgbGlua3MgYW5kIGRvd25sb2FkcyBhdmFpbGFibGUgYXQgPGh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9zaXRlL2hhcmRseWFueWRhdGE+IChmaWxlcyBoYXZlIGJlZW4gZG93bmxvYWRlZCB0byB0aGlzIHJlcG9zaXRvcnkpOgoKVGhpcyB0dXRvcmlhbCBleHBsYWlucyBob3cgeW91IGNhbiBkZXZlbG9wIGEgZnVsbHkgcHJvYmFiaWxpc3RpYyByaXNrIGFuYWx5c2lzIGV2ZW4gdGhvdWdoIHRoZXJlIG1heSBiZSB2ZXJ5IGxpdHRsZSBlbXBpcmljYWwgZGF0YSBhdmFpbGFibGUgb24gd2hpY2ggdG8gYmFzZSB0aGUgYW5hbHlzaXMuIEl0IGNvbXBhcmVzIHRoZSBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzIG9mIGEgdHJhZGl0aW9uYWwgTW9udGUgQ2FybG8gYXNzZXNzbWVudCB3aXRoIHByb2JhYmlsaXR5IGJvdW5kcyBhbmFseXNpcyBpbiB0aGUgUiBzdGF0aXN0aWNhbCBjb21wdXRpbmcgZW52aXJvbm1lbnQgd2hpY2ggaXMgZnJlZWx5IGF2YWlsYWJsZSBvdmVyIHRoZSBpbnRlcm5ldC4KCiMjIE92ZXJ2aWV3IG9mIHRvcGljcwoKIyMjIEludHJvZHVjdGlvbgoKV2VsY29tZQpDYXNlIHN0dWRpZXM6IGNpdmlsIGFuZCBhZXJvc3BhY2UgZW5naW5lZXJpbmcsIGV4cG9zdXJlIGFuYWx5c2lzLCBhbmQgY29uc2VydmF0aW9uIGJpb2xvZ3kgCkluc3RhbGxhdGlvbiBvZiBSIGFuZCB3b3Jrc2hvcCBzb2Z0d2FyZQoKIyMjIE1vbnRlIENhcmxvIHNpbXVsYXRpb24KClJhbmRvbSB2YWx1ZXMgYW5kIHJlcGxpY2F0aW9ucwpEaXN0cmlidXRpb25zCkluZGVwZW5kZW50IGFuZCBwZXJmZWN0IHNhbXBsaW5nCkNhbGN1bGF0aW9ucyBpbiBSCkludGVycHJldGluZyByZXN1bHRzOiB0YWlscyBhcmUgd2hlcmUgdGhlIGFjdGlvbiBpcwoKIyMjIFByb2JhYmlsaXR5IGJvdW5kcyBhbmFseXNpcwoKS2luZHMgb2YgdW5jZXJ0YWludHk6IHRoZSDigJhvcGVuIHF1ZXN0aW9u4oCZClByb2JhYmlsaXR5IGJveGVzCkluZGVwZW5kZW50LCBwZXJmZWN0LCBhbmQgRnLDqWNoZXQKQ2FsY3VsYXRpb24gaW4gUgpJbnRlcnByZXRpbmcgcmVzdWx0czogZnVsbHkgcHJvYmFiaWxpc3RpYyBhbnN3ZXJzCgojIyMgQXBwcm94aW1hdGlvbiB2ZXJzdXMgZW52ZWxvcGluZwoKSW50ZWdyYXRpbmcgTW9udGUgQ2FybG8gYW5kIHByb2JhYmlsaXR5IGJvdW5kaW5nCkZpeGVkIGJ1dCB1bmtub3duLCBvciBhY3R1YWxseSB2YXJ5aW5nPwpEaXN0cmlidXRpb25zLCBwLWJveGVzLCBhbmQgaW50ZXJ2YWwgcmFuZ2VzCldoYXQgeW91IGtub3cgYW5kIHdoYXQgeW91IGFzc3VtZQoKIyMjIFNlbGVjdGluZyBpbnB1dCBkaXN0cmlidXRpb25zCgpNb21lbnRzIGFuZCByYW5nZXMKTWF4aW11bSBsaWtlbGlob29kIGFuZCBtYXhpbXVtIGVudHJvcHkKQ29uZmlkZW5jZSBib3hlcwpTaGFwZSBhc3N1bXB0aW9ucyB0byByZWZpbmUgZXN0aW1hdGVzCgojIyMgQ29ycmVsYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMKCk1ha2luZyBubyBhc3N1bXB0aW9ucyBhYm91dCBkZXBlbmRlbmNlClBlcmZlY3QgY29ycmVsYXRpb25zCkRpc3BlcnNpdmUgTW9udGUgQ2FybG8gZGVwZW5kZW5jZQpJbmRlcGVuZGVuY2UgbWF4aW1pemVzIGVudHJvcHkKCiMjIyBDYXNlIHN0dWRpZXMgaW4gUgoKQ2l2aWwgZW5naW5lZXJpbmc6ICBkYW0gc2FmZXR5CkFlcm9zcGFjZSBlbmdpbmVlcmluZzogIHNwYWNlY3JhZnQgZGVzaWduCkVudmlyb25tZW50YWwgcHJvdGVjdGlvbjogY29udGFtaW5hbnQgZXhwb3N1cmUgYW5hbHlzaXMKQ29uc2VydmF0aW9uIGJpb2xvZ3k6IGVzdGltYXRpbmcgZW5kYW5nZXJtZW50CgojIyMgTW9kZWwgdW5jZXJ0YWludHkKCldoYXQtaWYgc3R1ZGllcwpTdG9jaGFzdGljIG1peHR1cmVzIGFuZCBCYXllcyBtb2RlbCBhdmVyYWdpbmcKQm91bmRpbmcgbWV0aG9kcwpDb25zZXJ2YXRpdmUgbWV0aG9kcyBmb3IgcG9seW5vbWlhbCBtb2RlbHMKCiMjIyBTZW5zaXRpdml0eSBhbmFseXNlcwoKQmFuZy1mb3ItYnVjayBjb250cm9sIGFuYWx5c2lzClZhbHVlIG9mIGluZm9ybWF0aW9uOiB3aGF0IGRhdGEgdG8gY29sbGVjdApNb3JlIHNhbXBsZXMgb3IgYmV0dGVyIG1lYXN1cmVtZW50cwoKIyMgUHJlc2VudGVycwoKW0FsZXhhbmRlciBXaW1idXNoXShodHRwczovL3d3dy5yZXNlYXJjaGdhdGUubmV0L3Byb2ZpbGUvQWxleGFuZGVyLVdpbWJ1c2gpLCBQaC5ELiAoMjAyMiksIFVuaXZlcnNpdHkgb2YgTGl2ZXJwb29sLCBvcHRpbWlzaW5nIG1lZGljYWwgZGlhZ25vc3RpYyBhbGdvcml0aG1zIHVuZGVyIHVuY2VydGFpbnR5LCBjb21tdW5pY2F0aW5nIHJpc2tzIHRvIHBhdGllbnRzLCBhbmQgY2FsY3VsYXRpb24gd2l0aCBjb25maWRlbmNlIHN0cnVjdHVyZXMgYW5kIHBvc3NpYmlsaXR5IGRpc3RyaWJ1dGlvbnM7IGh0dHBzOi8vd3d3LnJlc2VhcmNoZ2F0ZS5uZXQvcHJvZmlsZS9BbGV4YW5kZXItV2ltYnVzaAoKW1Njb3R0IEZlcnNvbl0oaHR0cHM6Ly9zaXRlcy5nb29nbGUuY29tL3NpdGUvc2NvdHRmZXJzb25zaXRlLyksIENoYWlyIG9mIFJpc2sgYW5kIFVuY2VydGFpbnR5IGF0IHRoZSBbVW5pdmVyc2l0eSBvZiBMaXZlcnBvb2xdKGh0dHBzOi8vd3d3LmxpdmVycG9vbC5hYy51aykgW1NjaG9vbCBvZiBFbmdpbmVlcmluZ10oaHR0cHM6Ly93d3cubGl2ZXJwb29sLmFjLnVrL2VuZ2luZWVyaW5nLykgYW5kIGRpcmVjdG9yIG9mIHRoZSBbSW5zdGl0dXRlIGZvciBSaXNrIGFuZCBVbmNlcnRhaW50eV0oaHR0cHM6Ly93d3cubGl2ZXJwb29sLmFjLnVrL3Jpc2stYW5kLXVuY2VydGFpbnR5Lyk7IGRldmVsb3BpbmcgcmVsaWFibGUgbWF0aGVtYXRpY2FsIGFuZCBzdGF0aXN0aWNhbCB0b29scyBmb3IgcmlzayBhc3Nlc3NtZW50cyBhbmQgb24gbWV0aG9kcyBmb3IgdW5jZXJ0YWludHkgYW5hbHlzaXMgd2hlbiBlbXBpcmljYWwgaW5mb3JtYXRpb24gaXMgdmVyeSBzcGFyc2UKCiMjIFJlbGF0ZWQgbGlua3MKClNvY2lldHkgZm9yIFJpc2sgQW5hbHlzaXMgaHR0cHM6Ly93d3cuc3JhLm9yZwpTb2NpZXR5IGZvciBSaXNrIEFuYWx5c2lzIEFubnVhbCBNZWV0aW5nIGh0dHBzOi8vd3d3LnNyYS5vcmcvZXZlbnRzLXdlYmluYXJzL2FubnVhbC1tZWV0aW5nLwpPbi1saW5lIHdvcmtzaG9wIHJlZ2lzdHJhdGlvbiBodHRwczovL3NyYS5tZW1iZXJzaGlwc29mdHdhcmUub3JnL2V2X2NhbGVuZGFyX2RheS5hc3A/ZXZlbnRpZD0yMiZldnJlZzE9MiZ0PSZ0ZXN0bXR5cGU9JnB1Yj0xIGh0dHBzOi8vbWVtYmVycy5zcmEub3JnL2V2X2NhbGVuZGFyX2RheS5hc3A/ZXZlbnRpZD0yMiZldnJlZzE9MiZ0PSZ0ZXN0bXR5cGU9JnB1Yj0xClNvY2lldHkgZm9yIEltcHJlY2lzZSBQcm9iYWJpbGl0aWVzIGh0dHBzOi8vc2lwdGEub3JnLwpMaXZlcnBvb2wgSW5zdGl0dXRlIGZvciBSaXNrIGFuZCBVbmNlcnRhaW50eSBodHRwczovL3Jpc2tpbnN0aXR1dGUudWsgaHR0cHM6Ly93d3cubGl2ZXJwb29sLmFjLnVrL3Jpc2stYW5kLXVuY2VydGFpbnR5LwpTYW5kaWEgTmF0aW9uYWwgTGFib3JhdG9yaWVzJyBFcGlzdGVtaWMgVW5jZXJ0YWludHkgUHJvamVjdCBodHRwczovL3NpdGVzLmdvb2dsZS5jb20vc2l0ZS91bmNlcnRhaW50eXByb2plY3Rpb24vCkFwcGxpZWQgQmlvbWF0aGVtYXRpY3MgdW5jZXJ0YWludHkgcHJvamVjdHMgaHR0cHM6Ly9zaXRlcy5nb29nbGUuY29tL3NpdGUvYWJ1bmNlcnRhaW50eS8KTlNGIHdvcmtzaG9wIG9uIHJpc2sgcGVyY2VwdGlvbiBhbmQgY29tbXVuaWNhdGlvbiBodHRwczovL3NpdGVzLmdvb2dsZS5jb20vc2l0ZS9tb250YXVrcmlza2NvbW11bmljYXRpb24vCg==