From 24b7d8282a45649ea26b89146a37810085c6d96e Mon Sep 17 00:00:00 2001
From: Maxime Graulich <maxime.graulich@gmail.com>
Date: Wed, 3 Jul 2013 11:16:21 +0000
Subject: [PATCH] Files used in native code are now in a zip file

---
 contrib/mobile/Android/res/raw/bh_pro         |  59 --
 .../Android/res/raw/machine_magstadyn_a_pro   | 938 ------------------
 .../mobile/Android/res/raw/magnet_data_pro    |  16 -
 contrib/mobile/Android/res/raw/magnet_geo     |  93 --
 contrib/mobile/Android/res/raw/magnet_pro     |  69 --
 .../mobile/Android/res/raw/magnetostatics_pro | 209 ----
 contrib/mobile/Android/res/raw/models.zip     | Bin 0 -> 23732 bytes
 .../Android/res/raw/pmsm_8p_circuit_pro       | 123 ---
 contrib/mobile/Android/res/raw/pmsm_data_geo  | 104 --
 contrib/mobile/Android/res/raw/pmsm_geo       |  95 --
 contrib/mobile/Android/res/raw/pmsm_geo_pro   | 211 ----
 contrib/mobile/Android/res/raw/pmsm_pro       | 211 ----
 contrib/mobile/Android/res/raw/pmsm_rotor_geo | 163 ---
 .../mobile/Android/res/raw/pmsm_stator_geo    | 215 ----
 .../src/org/geuz/onelab/ModelList.java        |   2 +-
 .../src/org/geuz/onelab/SplashScreen.java     |  46 +-
 16 files changed, 17 insertions(+), 2537 deletions(-)
 delete mode 100644 contrib/mobile/Android/res/raw/bh_pro
 delete mode 100644 contrib/mobile/Android/res/raw/machine_magstadyn_a_pro
 delete mode 100644 contrib/mobile/Android/res/raw/magnet_data_pro
 delete mode 100644 contrib/mobile/Android/res/raw/magnet_geo
 delete mode 100644 contrib/mobile/Android/res/raw/magnet_pro
 delete mode 100644 contrib/mobile/Android/res/raw/magnetostatics_pro
 create mode 100644 contrib/mobile/Android/res/raw/models.zip
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_8p_circuit_pro
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_data_geo
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_geo
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_geo_pro
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_pro
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_rotor_geo
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_stator_geo

diff --git a/contrib/mobile/Android/res/raw/bh_pro b/contrib/mobile/Android/res/raw/bh_pro
deleted file mode 100644
index 1458d87c83..0000000000
--- a/contrib/mobile/Android/res/raw/bh_pro
+++ /dev/null
@@ -1,59 +0,0 @@
-Function{
-  // nu = 100. + 10. * exp ( 1.8 * b * b )
-  // analytical
-  nu_1a[] = 100. + 10. * Exp[1.8*SquNorm[$1]] ;
-  dnudb2_1a[] = 18. * Exp[1.8*SquNorm[$1]] ;
-  h_1a[] = nu_1a[$1]*$1 ;
-  dhdb_1a[] = TensorDiag[1,1,1] * nu_1a[$1#1] + 2*dnudb2_1a[#1] * SquDyadicProduct[#1]  ;
-  dhdb_1a_NL[] = 2*dnudb2_1a[$1] * SquDyadicProduct[$1]  ;
-
-  // interpolated
-  Mat1_h = {
-    0.0000e+00, 5.5023e+00, 1.1018e+01, 1.6562e+01, 2.2149e+01, 2.7798e+01, 3.3528e+01,
-    3.9363e+01, 4.5335e+01, 5.1479e+01, 5.7842e+01, 6.4481e+01, 7.1470e+01, 7.8906e+01,
-    8.6910e+01, 9.5644e+01, 1.0532e+02, 1.1620e+02, 1.2868e+02, 1.4322e+02, 1.6050e+02,
-    1.8139e+02, 2.0711e+02, 2.3932e+02, 2.8028e+02, 3.3314e+02, 4.0231e+02, 4.9395e+02,
-    6.1678e+02, 7.8320e+02, 1.0110e+03, 1.3257e+03, 1.7645e+03, 2.3819e+03, 3.2578e+03,
-    4.5110e+03, 6.3187e+03, 8.9478e+03, 1.2802e+04, 1.8500e+04, 2.6989e+04, 3.9739e+04,
-    5.9047e+04, 8.8520e+04, 1.3388e+05, 2.0425e+05, 3.1434e+05, 4.8796e+05, 7.6403e+05
-  } ;
-  Mat1_b = {
-    0.0000e+00, 5.0000e-02, 1.0000e-01, 1.5000e-01, 2.0000e-01, 2.5000e-01, 3.0000e-01,
-    3.5000e-01, 4.0000e-01, 4.5000e-01, 5.0000e-01, 5.5000e-01, 6.0000e-01, 6.5000e-01,
-    7.0000e-01, 7.5000e-01, 8.0000e-01, 8.5000e-01, 9.0000e-01, 9.5000e-01, 1.0000e+00,
-    1.0500e+00, 1.1000e+00, 1.1500e+00, 1.2000e+00, 1.2500e+00, 1.3000e+00, 1.3500e+00,
-    1.4000e+00, 1.4500e+00, 1.5000e+00, 1.5500e+00, 1.6000e+00, 1.6500e+00, 1.7000e+00,
-    1.7500e+00, 1.8000e+00, 1.8500e+00, 1.9000e+00, 1.9500e+00, 2.0000e+00, 2.0500e+00,
-    2.1000e+00, 2.1500e+00, 2.2000e+00, 2.2500e+00, 2.3000e+00, 2.3500e+00, 2.4000e+00
-  } ;
-  Mat1_b2 = {
-    0.0000e+00, 2.5000e-03, 1.0000e-02, 2.2500e-02, 4.0000e-02, 6.2500e-02, 9.0000e-02,
-    1.2250e-01, 1.6000e-01, 2.0250e-01, 2.5000e-01, 3.0250e-01, 3.6000e-01, 4.2250e-01,
-    4.9000e-01, 5.6250e-01, 6.4000e-01, 7.2250e-01, 8.1000e-01, 9.0250e-01, 1.0000e+00,
-    1.1025e+00, 1.2100e+00, 1.3225e+00, 1.4400e+00, 1.5625e+00, 1.6900e+00, 1.8225e+00,
-    1.9600e+00, 2.1025e+00, 2.2500e+00, 2.4025e+00, 2.5600e+00, 2.7225e+00, 2.8900e+00,
-    3.0625e+00, 3.2400e+00, 3.4225e+00, 3.6100e+00, 3.8025e+00, 4.0000e+00, 4.2025e+00,
-    4.4100e+00, 4.6225e+00, 4.8400e+00, 5.0625e+00, 5.2900e+00, 5.5225e+00, 5.7600e+00
-  } ;
-  Mat1_nu = {
-    1.1005e+02, 1.1005e+02, 1.1018e+02, 1.1041e+02, 1.1075e+02, 1.1119e+02, 1.1176e+02,
-    1.1247e+02, 1.1334e+02, 1.1440e+02, 1.1568e+02, 1.1724e+02, 1.1912e+02, 1.2139e+02,
-    1.2416e+02, 1.2752e+02, 1.3165e+02, 1.3671e+02, 1.4297e+02, 1.5076e+02, 1.6050e+02,
-    1.7275e+02, 1.8829e+02, 2.0810e+02, 2.3356e+02, 2.6651e+02, 3.0947e+02, 3.6589e+02,
-    4.4056e+02, 5.4014e+02, 6.7397e+02, 8.5528e+02, 1.1028e+03, 1.4436e+03, 1.9164e+03,
-    2.5777e+03, 3.5104e+03, 4.8366e+03, 6.7381e+03, 9.4870e+03, 1.3494e+04, 1.9385e+04,
-    2.8118e+04, 4.1172e+04, 6.0854e+04, 9.0779e+04, 1.3667e+05, 2.0764e+05, 3.1835e+05
-  } ;
-
-  Mat1_nu_b2  = ListAlt[Mat1_b2, Mat1_nu] ;
-  nu_1[] = InterpolationLinear[$1]{List[Mat1_nu_b2]} ;
-  dnudb2_1[] = dInterpolationLinear[$1]{List[Mat1_nu_b2]} ;
-  h_1[] = nu_1[(SquNorm[$1])] * $1 ;
-  dhdb_1[] = TensorDiag[1,1,1] * nu_1[SquNorm[$1]#1] + 2*dnudb2_1[#1] * SquDyadicProduct[$1]  ;
-}
-
-
-
-
-
-
diff --git a/contrib/mobile/Android/res/raw/machine_magstadyn_a_pro b/contrib/mobile/Android/res/raw/machine_magstadyn_a_pro
deleted file mode 100644
index f58a22b84a..0000000000
--- a/contrib/mobile/Android/res/raw/machine_magstadyn_a_pro
+++ /dev/null
@@ -1,938 +0,0 @@
-Group {
-  DefineGroup[ DomainM, DomainB, DomainS ];
-  DefineGroup[ DomainL, DomainNL, Dummy ];
-  DefineGroup[ Rotor_Inds, Rotor_IndsP, Rotor_IndsN, Rotor_Magnets, Rotor_Bars ];
-  DefineGroup[ Surf_bn0, Rotor_Bnd_MBaux] ;
-  DefineGroup[ Resistance_Cir, Inductance_Cir, Capacitance_Cir, DomainZt_Cir, DomainSource_Cir ];
-}
-
-Function{
-
-  DefineConstant[ Flag_Cir, Flag_NL, Flag_ParkTransformation ];
-  DefineConstant[ Term_vxb ];
-  DefineConstant[ AxialLength        = {1, Visible 0},
-                  FillFactor_Winding = {1, Visible 0},
-                  Factor_R_3DEffects = {1, Visible 0},
-                  SymmetryFactor     = {1, Visible 0} ];
-
-  Flag_Symmetry = (SymmetryFactor==1) ? 0 : 1 ;
-
-  DefineConstant[ Nb_max_iter        = {20, Visible 0},
-                  relaxation_factor  = {1, Visible 0},
-                  stop_criterion     = {1e-5, Visible 0},
-                  reltol             = {1e-7, Visible 0},
-                  abstol             = {1e-5, Visible 0} ];
-
-  DefineConstant[ II, VV, pA, pB, pC, Ie, ID, IQ, I0 ];
-  DefineFunction[ br, js, Resistance, Inductance, Capacitance ];
-  DefineFunction[ Theta_Park, Theta_Park_deg, RotorPosition, RotorPosition_deg ] ;
-
-
-  DefineConstant[ Flag_SrcType_Rotor = {0, Visible 0} ];
-
-  DefineConstant[ Clean_Results = { 1, Choices {0,1},
-    Label "Remove previous result files",
-    Path "Input/1", Visible 1 } ] ;
-
-  DefineConstant[ Flag_SaveAllSteps = {0, Label "Save all time steps",
-      Path "Input/0", Choices {0,1}} ];
-
-  DefineConstant[ my_output={"Output/40T_rotor", Visible 0}];
-
-}
-
-Include "bh.pro"; // nonlinear BH caracteristic of magnetic material
-
-Group {
-
-  Inds = Region[ {Stator_Inds, Rotor_Inds} ] ;
-
-  DomainB = Region[ {Inds} ] ;
-  DomainM = Region[ {Rotor_Magnets} ] ;
-
-  Stator  = Region[{ StatorC, StatorCC }] ;
-  Rotor   = Region[{ RotorC,  RotorCC }] ;
-
-  Rotor_Moving = Region[{ Rotor, Rotor_Air, Rotor_Airgap, Rotor_Inds, Rotor_Bnd_MBaux} ] ; // Use in ChangeOfCoordinates
-
-  MB  = MovingBand2D[ MovingBand_PhysicalNb, Stator_Bnd_MB, Rotor_Bnd_MB, SymmetryFactor] ;
-  Air = Region[{ Rotor_Air, Rotor_Airgap, Stator_Air, Stator_Airgap, MB } ] ;
-  Inds = Region[{ Rotor_Inds, Stator_Inds } ] ;
-
-  DomainV = Region[{}]; // Speed considered either with term v/\b
-  If(Term_vxb) // or not dynamics in time domain + mechanics
-    DomainV = Region[{ RotorC }];
-  EndIf
-
-  DomainCC = Region[{ Air, Inds, StatorCC, RotorCC }];
-  DomainC  = Region[{ StatorC, RotorC }];
-  Domain  = Region[{ DomainCC, DomainC }] ;
-
-  If(Flag_NL)
-    DomainNL = Region[ {Stator_Fe, Rotor_Fe } ];
-    DomainL  = Region[ {Domain,-DomainNL} ];
-  EndIf
-
-  DomainKin = #1234 ; // Dummy region number for mechanical equation
-  DomainDummy = #12345 ; // Dummy region number for mechanical equation
-}
-
-Function {
-  mu0 = 4.e-7 * Pi ;
-
-  sigma_al = 3.72e7 ; // conductivity of aluminum [S/m]
-  sigma_cu = 5.9e7  ; // conductivity of copper [S/m]
-
-  nu [#{Air, Inds, Stator_Al, Rotor_Al, Stator_Cu, Rotor_Cu, Rotor_Magnets, Rotor_Bars}]  = 1. / mu0 ;
-
-  If(!Flag_NL)
-    nu [#{Stator_Fe, Rotor_Fe }]  = 1 / (mur_fe * mu0) ;
-  EndIf
-  If(Flag_NL)
-   nu [#{Stator_Fe, Rotor_Fe }] = nu_1a[$1] ;
-  EndIf
-  dhdb_NL [ DomainNL ] = dhdb_1a_NL[$1];
-
-  sigma[#{Rotor_Fe}] = sigma_fe ;
-  sigma[#{Rotor_Al, Stator_Al}] = sigma_al ;
-  sigma[#{Rotor_Cu, Stator_Cu}] = sigma_cu ;
-  sigma[#{Inds}] = sigma_cu ;
-
-  rho[] = 1/sigma[] ;
-
-  Rb[] = Factor_R_3DEffects*AxialLength*FillFactor_Winding*NbWires[]^2/SurfCoil[]/sigma[] ;
-  Resistance[#{Stator_Inds, Rotor_Inds}] = Rb[] ;
-
-  T = 1/Freq ; // Fundamental period in s
-
-  Idir[#{Stator_IndsP, Rotor_IndsP}] =  1 ;
-  Idir[#{Stator_IndsN, Rotor_IndsN}] = -1 ;
-
-  // Functions for Park transformation
-  Idq0[] = Vector[ ID, IQ, I0 ] ;
-  Pinv[] = Tensor[ Sin[Theta_Park[]],        Cos[Theta_Park[]],        1,
-                   Sin[Theta_Park[]-2*Pi/3], Cos[Theta_Park[]-2*Pi/3], 1,
-                   Sin[Theta_Park[]+2*Pi/3], Cos[Theta_Park[]+2*Pi/3], 1 ];
-
-  P[] = 2/3 * Tensor[ Sin[Theta_Park[]], Sin[Theta_Park[]-2*Pi/3], Sin[Theta_Park[]+2*Pi/3],
-                      Cos[Theta_Park[]], Cos[Theta_Park[]-2*Pi/3], Cos[Theta_Park[]+2*Pi/3],
-                      1/2, 1/2, 1/2 ] ;
-
-  Iabc[]     = Pinv[] * Idq0[] ;
-  Flux_dq0[] = P[] * Vector[#11, #22, #33] ;
-
-  If(Flag_ParkTransformation)
-    II = 1 ;
-    IA[] = CompX[ Iabc[] ] ;
-    IB[] = CompY[ Iabc[] ] ;
-    IC[] = CompZ[ Iabc[] ] ;
-  EndIf
-  If(!Flag_ParkTransformation)
-    IA[] = F_Sin_wt_p[]{2*Pi*Freq, pA} ;
-    IB[] = F_Sin_wt_p[]{2*Pi*Freq, pB} ;
-    IC[] = F_Sin_wt_p[]{2*Pi*Freq, pC} ;
-
-    js[PhaseA] = II * NbWires[]/SurfCoil[] * IA[] * Idir[] * Vector[0, 0, 1] ;
-    js[PhaseB] = II * NbWires[]/SurfCoil[] * IB[] * Idir[] * Vector[0, 0, 1] ;
-    js[PhaseC] = II * NbWires[]/SurfCoil[] * IC[] * Idir[] * Vector[0, 0, 1] ;
-  EndIf
-
-  Velocity[] = wr*XYZ[]/\Vector[0,0,1] ;
-
-  // Maxwell stress tensor
-  T_max[] = ( SquDyadicProduct[$1] - SquNorm[$1] * TensorDiag[0.5, 0.5, 0.5] ) / mu0 ;
-  T_max_cplx[] = ( TensorV[CompX[$1]*Conj[$1],CompY[$1]*Conj[$1],CompZ[$1]*Conj[$1]] - $1*Conj[$1] * TensorDiag[0.5, 0.5, 0.5] ) / mu0 ; // Check if valid
-
-
-  AngularPosition[] = (Atan2[$Y,$X]#7 >= 0.)? #7 : #7+2*Pi ;
-
-  RotatePZ[] = Rotate[ Vector[$X,$Y,$Z], 0, 0, $1 ] ;//Watch out: Do not use XYZ[]!
-
-  // Kinematics
-  Inertia = 8.3e-3 ; //87
-  Friction[] = 0 ;
-
-  Fmag[] = #55 ; // Computed in postprocessing
-}
-
-//-------------------------------------------------------------------------------------
-
-Jacobian {
-  { Name Vol; Case { { Region All ; Jacobian Vol; } } }
-}
-
-Integration {
-  { Name I1 ; Case {
-      { Type Gauss ;
-        Case {
-          { GeoElement Triangle   ; NumberOfPoints  6 ; }
-	  { GeoElement Quadrangle ; NumberOfPoints  4 ; }
-	  { GeoElement Line       ; NumberOfPoints  13 ; }
-        }
-      }
-    }
-  }
-}
-
-//-------------------------------------------------------------------------------------
-
-Constraint {
-
-  { Name MVP_2D ;
-    Case {
-      { Region Surf_Inf ; Type Assign; Value 0. ; }
-      { Region Surf_bn0 ; Type Assign; Value 0. ; }
-
-      If(Flag_Symmetry)
-        { Region Surf_cutA1; SubRegion Region[{Surf_Inf,Surf_bn0}]; Type Link;
-          RegionRef Surf_cutA0; SubRegionRef Region[{Surf_Inf,Surf_bn0}];
-          Coefficient (NbrPoles%2)?-1:1 ; Function RotatePZ[-NbrPoles*2*Pi/NbrPolesTot]; }
-        { Region Surf_cutA1; Type Link; RegionRef Surf_cutA0;
-          Coefficient (NbrPoles%2)?-1:1 ; Function RotatePZ[-NbrPoles*2*Pi/NbrPolesTot]; }
-
-        //For the moving band
-        For k In {1:SymmetryFactor-1}
-        { Region Rotor_Bnd_MB~{k+1} ; SubRegion Rotor_Bnd_MB~{(k!=SymmetryFactor-1)?k+2:1}; Type Link;
-          RegionRef Rotor_Bnd_MB_1; SubRegionRef Rotor_Bnd_MB_2;
-          Coefficient ((NbrPoles%2)?-1:1)^(k); Function RotatePZ[-k*NbrPoles*2*Pi/NbrPolesTot]; }
-        EndFor
-
-      EndIf
-    }
-  }
-
-  { Name Current_2D ;
-    Case {
-      If(Flag_SrcType_Stator==1)
-        { Region PhaseA     ; Value II*Idir[] ; TimeFunction IA[]; }
-        { Region PhaseB     ; Value II*Idir[] ; TimeFunction IB[]; }
-        { Region PhaseC     ; Value II*Idir[] ; TimeFunction IC[]; }
-      EndIf
-      If(Flag_SrcType_Rotor==1)
-        { Region Rotor_Inds ; Value Ie*Idir[] ; }
-      EndIf
-    }
-  }
-
-  { Name Voltage_2D ;
-    Case {
-      { Region RotorC  ; Value 0. ; } // Not needed if Global equation not in formulation
-      { Region StatorC ; Value 0. ; } // Not needed if Global equation not in formulation
-    }
-  }
-
-  { Name Current_Cir ;
-    Case {
-      If(Flag_Cir && Flag_SrcType_Stator==1)
-        { Region Input1  ; Value II  ; TimeFunction IA[]; }
-        { Region Input2  ; Value II  ; TimeFunction IB[]; }
-        { Region Input3  ; Value II  ; TimeFunction IC[]; }
-      EndIf
-    }
-  }
-
-  { Name Voltage_Cir ; // Example induction machine
-    Case {
-      If(Flag_Cir && Flag_SrcType_Stator==2 && !Flag_NL)
-        { Region Input1  ; Value VV  ; TimeFunction IA[]; }
-        { Region Input2  ; Value VV  ; TimeFunction IB[]; }
-        { Region Input3  ; Value VV  ; TimeFunction IC[]; }
-      EndIf
-      If(Flag_Cir && Flag_SrcType_Stator==2 && Flag_NL)
-        { Region Input1  ; Value VV  ; TimeFunction IA[]*Frelax[]; }
-        { Region Input2  ; Value VV  ; TimeFunction IB[]*Frelax[]; }
-        { Region Input3  ; Value VV  ; TimeFunction IC[]*Frelax[]; }
-      EndIf
-    }
-  }
-
-
-  //Kinetics
-  { Name CurrentPosition ;
-    Case {
-      { Region DomainKin ; Type Init ; Value 0.#66 ; }
-    }
-  }
-
-  { Name CurrentVelocity ;
-    Case {
-      { Region DomainKin ; Type Init ; Value wr ; } // wr in [0,1200] rad/s
-    }
-  }
-
-}
-
-//-----------------------------------------------------------------------------------------------
-
-FunctionSpace {
-
-  { Name Hcurl_a_2D ; Type Form1P ;
-    BasisFunction {
-      { Name se1 ; NameOfCoef ae1 ; Function BF_PerpendicularEdge ;
-        Support Region[{ Domain, Rotor_Bnd_MBaux }] ; Entity NodesOf [ All ] ; }
-   }
-    Constraint {
-      { NameOfCoef ae1 ; EntityType NodesOf ; NameOfConstraint MVP_2D ; }
-    }
-  }
-
-  // Gradient of Electric scalar potential (2D)
-  { Name Hregion_u_Mag_2D ; Type Form1P ;
-    BasisFunction {
-      { Name sr ; NameOfCoef ur ; Function BF_RegionZ ;
-        Support DomainC ; Entity DomainC ; }
-    }
-    GlobalQuantity {
-      { Name U ; Type AliasOf        ; NameOfCoef ur ; }
-      { Name I ; Type AssociatedWith ; NameOfCoef ur ; }
-    }
-    Constraint {
-      { NameOfCoef U ; EntityType GroupsOfNodesOf ; NameOfConstraint Voltage_2D ; }
-      { NameOfCoef I ; EntityType GroupsOfNodesOf ; NameOfConstraint Current_2D ; }
-    }
-  }
-
-  { Name Hregion_i_Mag_2D ; Type Vector ;
-    BasisFunction {
-      { Name sr ; NameOfCoef ir ; Function BF_RegionZ ;
-        Support DomainB ; Entity DomainB ; }
-    }
-    GlobalQuantity {
-      { Name Ib ; Type AliasOf        ; NameOfCoef ir ; }
-      { Name Ub ; Type AssociatedWith ; NameOfCoef ir ; }
-    }
-    Constraint {
-      { NameOfCoef Ub ; EntityType Region ; NameOfConstraint Voltage_2D ; }
-      { NameOfCoef Ib ; EntityType Region ; NameOfConstraint Current_2D ; }
-    }
-  }
-
-  { Name Hregion_Z ; Type Scalar ; // Circuit equations
-    BasisFunction {
-      { Name sr ; NameOfCoef ir ; Function BF_Region ;
-        Support DomainZt_Cir ; Entity DomainZt_Cir ; }
-    }
-    GlobalQuantity {
-      { Name Iz ; Type AliasOf        ; NameOfCoef ir ; }
-      { Name Uz ; Type AssociatedWith ; NameOfCoef ir ; }
-    }
-    Constraint {
-      { NameOfCoef Uz ; EntityType Region ; NameOfConstraint Voltage_Cir ; }
-      { NameOfCoef Iz ; EntityType Region ; NameOfConstraint Current_Cir ; }
-    }
-  }
-
-  // For use in Mechanical equation
-  { Name Position ; Type Scalar ;
-    BasisFunction {
-      { Name sr ; NameOfCoef ir ; Function BF_Region ;
-        Support DomainKin ; Entity DomainKin ; }
-    }
-    GlobalQuantity {
-      { Name P ; Type AliasOf  ; NameOfCoef ir ; }
-    }
-    Constraint {
-      { NameOfCoef P ; EntityType Region ; NameOfConstraint CurrentPosition ; }
-    }
-  }
-
-
-  { Name Velocity ; Type Scalar ;
-    BasisFunction {
-      { Name sr ; NameOfCoef ir ; Function BF_Region ;
-        Support DomainKin ; Entity DomainKin ; } }
-    GlobalQuantity {
-      { Name V ; Type AliasOf ; NameOfCoef ir ; }
-    }
-    Constraint {
-      { NameOfCoef V ; EntityType Region ; NameOfConstraint CurrentVelocity ; }
-    }
-  }
-
-}
-
-//-----------------------------------------------------------------------------------------------
-
-Formulation {
-
-  { Name MagSta_a_2D ; Type FemEquation ;
-    Quantity {
-      { Name a  ; Type Local  ; NameOfSpace Hcurl_a_2D ; }
-
-      { Name ir ; Type Local  ; NameOfSpace Hregion_i_Mag_2D ; }
-      { Name Ub ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ub] ; }
-      { Name Ib ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ib] ; }
-
-      { Name Uz ; Type Global ; NameOfSpace Hregion_Z [Uz] ; }
-      { Name Iz ; Type Global ; NameOfSpace Hregion_Z [Iz] ; }
-    }
-
-    Equation {
-      Galerkin { [ nu[{d a}] * Dof{d a}  , {d a} ] ;
-        In Domain ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { JacNL [ dhdb_NL[{d a}] * Dof{d a} , {d a} ] ;
-        In DomainNL ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin {  [  0*Dof{d a} , {d a} ]  ; // DO NOT REMOVE!!! - Keeping track of Dofs in auxiliary line of MB if Symmetry=1
-        In Rotor_Bnd_MBaux; Jacobian Vol; Integration I1; }
-
-      Galerkin { [ -nu[] * br[] , {d a} ] ;
-        In DomainM ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { [ -js[] , {a} ] ;
-        In DomainS ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { [ -NbWires[]/SurfCoil[] * Dof{ir} , {a} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { DtDof [ AxialLength * NbWires[]/SurfCoil[] * Dof{a} , {ir} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-      GlobalTerm { [ Dof{Ub}/SymmetryFactor, {Ib} ] ; In DomainB ; }
-      Galerkin { [ Rb[]/SurfCoil[]* Dof{ir} , {ir} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-
-      // GlobalTerm { [ Resistance[]  * Dof{Ib} , {Ib} ] ; In DomainB ; }
-      // The above term can replace:
-      // Galerkin{ [ NbWires[]/SurfCoil[] / sigma[] * NbWires[]/SurfCoil[] * Dof{ir}, {ir} ]
-      // if we have an estimation of the resistance of DomainB, via e.g. measurements
-
-      If(Flag_Cir)
-	GlobalTerm { NeverDt[ Dof{Uz}                , {Iz} ] ; In Resistance_Cir ; }
-        GlobalTerm { NeverDt[ Resistance[] * Dof{Iz} , {Iz} ] ; In Resistance_Cir ; }
-
-	GlobalTerm { [ 0. * Dof{Iz} , {Iz} ] ; In DomainSource_Cir ; }
-        GlobalTerm { [ 0. * Dof{Uz} , {Iz} ] ; In DomainZt_Cir ; }
-
-        GlobalEquation {
-          Type Network ; NameOfConstraint ElectricalCircuit ;
-          { Node {Iz}; Loop {Uz}; Equation {Uz}; In DomainZt_Cir ; }
-          { Node {Ib}; Loop {Ub}; Equation {Ub}; In DomainB ; }
-         }
-      EndIf
-    }
-  }
-
-  { Name MagDyn_a_2D ; Type FemEquation ;
-    Quantity {
-      { Name a  ; Type Local  ; NameOfSpace Hcurl_a_2D ; }
-      { Name ur ; Type Local  ; NameOfSpace Hregion_u_Mag_2D ; }
-      { Name I  ; Type Global ; NameOfSpace Hregion_u_Mag_2D [I] ; }
-      { Name U  ; Type Global ; NameOfSpace Hregion_u_Mag_2D [U] ; }
-
-      { Name ir ; Type Local  ; NameOfSpace Hregion_i_Mag_2D ; }
-      { Name Ub ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ub] ; }
-      { Name Ib ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ib] ; }
-
-      { Name Uz ; Type Global ; NameOfSpace Hregion_Z [Uz] ; }
-      { Name Iz ; Type Global ; NameOfSpace Hregion_Z [Iz] ; }
-    }
-    Equation {
-      Galerkin { [ nu[{d a}] * Dof{d a}  , {d a} ] ;
-        In Domain ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { JacNL [ dhdb_NL[{d a}] * Dof{d a} , {d a} ] ;
-        In DomainNL ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin {  [  0*Dof{d a} , {d a} ]  ; // DO NOT REMOVE!!! - Keeping track of Dofs in auxiliary line of MB if Symmetry=1
-        In Rotor_Bnd_MBaux; Jacobian Vol; Integration I1; }
-
-      Galerkin { [ -nu[] * br[] , {d a} ] ;
-        In DomainM ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { DtDof[ sigma[] * Dof{a} , {a} ] ;
-        In DomainC ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { [ sigma[] * Dof{ur}, {a} ] ;
-        In DomainC ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { [ -sigma[] * (Velocity[] *^ Dof{d a}) , {a} ] ;
-        In DomainV ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { [ -js[] , {a} ] ;
-        In DomainS ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { DtDof[ sigma[] * Dof{a} , {ur} ] ;
-        In DomainC ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { [ sigma[] * Dof{ur} , {ur} ] ;
-        In DomainC ; Jacobian Vol ; Integration I1 ; }
-      GlobalTerm { [ Dof{I} , {U} ] ; In DomainC ; }
-
-      Galerkin { [ -NbWires[]/SurfCoil[] * Dof{ir} , {a} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { DtDof [ AxialLength * NbWires[]/SurfCoil[] * Dof{a} , {ir} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-      GlobalTerm { [ Dof{Ub}/SymmetryFactor , {Ib} ] ; In DomainB ; }
-      Galerkin { [ Rb[]/SurfCoil[]* Dof{ir} , {ir} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; } // Resistance term
-
-      // GlobalTerm { [ Resistance[]  * Dof{Ib} , {Ib} ] ; In DomainB ; }
-      // The above term can replace the resistance term:
-      // if we have an estimation of the resistance of DomainB, via e.g. measurements
-      // which is better to account for the end windings...
-
-      If(Flag_Cir)
-	GlobalTerm { NeverDt[ Dof{Uz}                , {Iz} ] ; In Resistance_Cir ; }
-        GlobalTerm { NeverDt[ Resistance[] * Dof{Iz} , {Iz} ] ; In Resistance_Cir ; }
-
-	GlobalTerm { [ Dof{Uz}                      , {Iz} ] ; In Inductance_Cir ; }
-	GlobalTerm { DtDof [ Inductance[] * Dof{Iz} , {Iz} ] ; In Inductance_Cir ; }
-
-	GlobalTerm { NeverDt[ Dof{Iz}        , {Iz} ] ; In Capacitance_Cir ; }
-	GlobalTerm { DtDof [ Capacitance[] * Dof{Uz} , {Iz} ] ; In Capacitance_Cir ; }
-
-	GlobalTerm { [ 0. * Dof{Iz} , {Iz} ] ; In DomainZt_Cir ; }
-        GlobalTerm { [ 0. * Dof{Uz} , {Iz} ] ; In DomainZt_Cir ; }
-
-        GlobalEquation {
-          Type Network ; NameOfConstraint ElectricalCircuit ;
-          { Node {I};  Loop {U};  Equation {I};  In DomainC ; }
-          { Node {Ib}; Loop {Ub}; Equation {Ub}; In DomainB ; }
-          { Node {Iz}; Loop {Uz}; Equation {Uz}; In DomainZt_Cir ; }
-         }
-      EndIf
-    }
-  }
-
-
- //--------------------------------------------------------------------------
-  // Mechanics
-  //--------------------------------------------------------------------------
-  { Name Mechanical ; Type FemEquation ;
-    Quantity {
-      { Name V ; Type Global ; NameOfSpace Velocity [V] ; } // velocity
-      { Name P ; Type Global ; NameOfSpace Position [P] ; } // position
-    }
-    Equation {
-      GlobalTerm { DtDof [ Inertia * Dof{V} , {V} ] ; In DomainKin ; }
-      GlobalTerm { [ Friction[] * Dof{V} , {V} ] ; In DomainKin ; }
-      GlobalTerm { [             -Fmag[] , {V} ] ; In DomainKin ; }
-
-      GlobalTerm { DtDof [ Dof{P} , {P} ] ; In DomainKin ; }
-      GlobalTerm {       [-Dof{V} , {P} ] ; In DomainKin ; }
-    }
-  }
-
-}
-
-//-----------------------------------------------------------------------------------------------
-
-Resolution {
-
-  { Name TimeDomain ;
-    System {
-      { Name A ; NameOfFormulation MagDyn_a_2D ; }
-    }
-    Operation {
-      CreateDir["res/"];
-      If[ Clean_Results==1 ]{
-        DeleteFile["res/temp.dat"];
-        DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"];
-        DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"];
-        DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"];
-        DeleteFile["res/Flux_a.dat"]; DeleteFile["res/Flux_b.dat"]; DeleteFile["res/Flux_c.dat"];
-        DeleteFile["res/Flux_d.dat"]; DeleteFile["res/Flux_q.dat"]; DeleteFile["res/Flux_0.dat"];
-      }
-      InitMovingBand2D[MB] ;
-      MeshMovingBand2D[MB] ;
-      InitSolution[A] ;
-      If[Flag_ParkTransformation && Flag_SrcType_Stator==1]{ PostOperation[ThetaPark_IABC] ; }
-      If[!Flag_NL]{
-        Generate[A] ; Solve[A] ;
-      }
-      Else{
-        //IterativeLoop[Nb_max_iter, stop_criterion, relaxation_factor]
-        // { GenerateJac[A] ; SolveJac[A] ; }
-        IterativeLoopN[ Nb_max_iter, relaxation_factor,
-                        System { {A, reltol, abstol, Solution MeanL2Norm}} ]
-          { GenerateJac[A] ; SolveJac[A] ; }
-      }
-      SaveSolution[A] ;
-      PostOperation[Get_LocalFields] ;
-      PostOperation[Get_GlobalQuantities] ;
-    }
-  }
-
-  { Name TimeDomain_Loop ;
-    System {
-      { Name A ; NameOfFormulation MagDyn_a_2D ; }
-    }
-    Operation {
-      CreateDir["res/"];
-      If[ Clean_Results==1 ]{
-        DeleteFile["res/temp.dat"];
-        DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"];
-        DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"];
-        DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"];
-        DeleteFile["res/Flux_a.dat"]; DeleteFile["res/Flux_b.dat"]; DeleteFile["res/Flux_c.dat"];
-        DeleteFile["res/Flux_d.dat"]; DeleteFile["res/Flux_q.dat"]; DeleteFile["res/Flux_0.dat"];
-      }
-      InitMovingBand2D[MB] ;
-      MeshMovingBand2D[MB] ;
-      InitSolution[A] ;
-      TimeLoopTheta[time0, timemax, delta_time, 1.]{ // Euler implicit (1) -- Crank-Nicolson (0.5)
-        If[Flag_ParkTransformation && Flag_SrcType_Stator==1]{ PostOperation[ThetaPark_IABC] ; }
-        If[!Flag_NL]{
-	  Generate[A]; Solve[A];
-        }
-        Else{
-          // IterativeLoop[Nb_max_iter, stop_criterion, relaxation_factor] {
-            //  GenerateJac[A] ; SolveJac[A] ; }
-          IterativeLoopN[
-            Nb_max_iter, relaxation_factor, System { {A, reltol, abstol, Solution MeanL2Norm}} ]{
-            GenerateJac[A] ; SolveJac[A] ; }
-        }
-        SaveSolution[A];
-
-        PostOperation[Get_LocalFields] ;
-        If[ $TimeStep > 1 ]{
-          PostOperation[Get_GlobalQuantities] ;
-        }
-        ChangeOfCoordinates[ NodesOf[Rotor_Moving], RotatePZ[delta_theta]] ;
-        MeshMovingBand2D[MB] ;
-      }
-    }
-  }
-
-  { Name FrequencyDomain ;
-    System {
-      { Name A ; NameOfFormulation MagDyn_a_2D ; Type ComplexValue ; Frequency Freq ; }
-    }
-    Operation {
-      If[ Clean_Results==1 && wr == 0.]{
-        DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"];
-        DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"];
-        DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"];
-      }
-      SetTime[wr];
-      InitMovingBand2D[MB] ;
-      MeshMovingBand2D[MB] ;
-      Generate[A] ; Solve[A] ; SaveSolution[A];
-      PostOperation[Map_LocalFields] ;
-      PostOperation[Torque_Emf_Flux] ;
-    }
-  }
-
-  /*
-  { Name  MagDyn_Kin ;
-    System {
-      { Name A ; NameOfFormulation MagDyn_a_2D ; }
-      { Name M ; NameOfFormulation Mechanical ; }
-    }
-    Operation {
-      ChangeOfCoordinates [ NodesOf[Rotor_Moving], RotatePZ[theta0] ] ; // Initial position (supposing initial mesh with angleR=0)
-      InitMovingBand2D[MB] ; MeshMovingBand2D[MB] ;
-
-      InitSolution[A] ; SaveSolution[A] ;
-      InitSolution[M] ; SaveSolution[M] ;
-
-      TimeLoopTheta[time0, timemax, delta_time, 1.]{
-	Generate[A] ; Solve[A] ;  SaveSolution[A] ;
-        PostOperation[MagDyn_a_2D] ;
-
-        Generate[M] ; Solve[M] ; SaveSolution[M] ;
-        PostOperation[Mechanical] ;
-
-        ChangeOfCoordinates [ NodesOf[Rotor_Moving], RotatePZ[#77-#66] ] ;
-        Evaluate[ #77#66 ] ; //Keep track of previous angular position
-        MeshMovingBand2D[MB] ;
-      }
-    }
-  }
-  */
-
-}
-
-//-----------------------------------------------------------------------------------------------
-
-PostProcessing {
-
- { Name MagSta_a_2D ; NameOfFormulation MagSta_a_2D ;
-   PostQuantity {
-     { Name a ; Value { Term { [  {a} ]   ; In Domain ; Jacobian Vol ; } } }
-     { Name az ; Value { Term { [  CompZ[{a}] ]   ; In Domain ; Jacobian Vol ; } } }
-     { Name b  ; Value { Term { [ {d a} ] ; In Domain ; Jacobian Vol ; } } }
-     { Name boundary  ; Value { Term { [ {d a} ] ; In Dummy ; Jacobian Vol ; } } }
-     { Name br  ; Value { Term { [ br[] ] ; In DomainM ; Jacobian Vol ; } } }
-
-     { Name Flux ; Value { Integral { [ SymmetryFactor*AxialLength*Idir[]*NbWires[]/SurfCoil[]* CompZ[{a}] ] ;
-           In Inds  ; Jacobian Vol ; Integration I1 ; } } }
-     { Name Force_vw ; Value {
-         Integral { Type Global ; [ 0.5 * nu[] * VirtualWork [{d a}] * AxialLength ];
-           In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB];
-           Jacobian Vol ; Integration I1 ; } } }
-
-     { Name Torque_Maxwell ;  Value {
-         Integral {
-           [ CompZ [ XYZ[] /\ (T_max[{d a}] * XYZ[]) ]*2*Pi*AxialLength/SurfaceArea[]  ] ;
-           In Domain ; Jacobian Vol  ; Integration I1; } } }
-
-     { Name Torque_vw ; Value {
-         Integral { Type Global ;
-           [ CompZ[ 0.5 * nu[] * XYZ[] /\ VirtualWork[{d a}] ] * AxialLength ];
-           In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB];
-           Jacobian Vol ; Integration I1 ; } } }
-
-     { Name U ; Value {
-         Term { [ {Ub} ]  ; In DomainB ; }
-         Term { [ {Uz} ]  ; In DomainZt_Cir ; }
-     } }
-
-     { Name I ; Value {
-         Term { [ {Ib} ]  ; In DomainB ; }
-         Term { [ {Iz} ]  ; In DomainZt_Cir ; }
-     } }
-
-   }
- }
-
- { Name MagDyn_a_2D ; NameOfFormulation MagDyn_a_2D ;
-   PostQuantity {
-     { Name a  ; Value { Term { [ {a} ] ; In Domain ; Jacobian Vol ; } } }
-     { Name az ; Value { Term { [ CompZ[{a}] ] ; In Domain ; Jacobian Vol ; } } }
-
-     { Name b  ; Value { Term { [ {d a} ] ; In Domain ; Jacobian Vol ; } } }
-     { Name boundary  ; Value { Term { [ 1 ] ; In Dummy ; Jacobian Vol ; } } } // Dummy quantity
-     { Name b_radial  ; Value { Term { [ {d a}* Vector[  Cos[AngularPosition[]#4], Sin[#4], 0.] ] ; In Domain ; Jacobian Vol ; } } }
-     { Name b_tangent ; Value { Term { [ {d a}* Vector[ -Sin[AngularPosition[]#4], Cos[#4], 0.] ] ; In Domain ; Jacobian Vol ; } } }
-
-     { Name js ; Value { Term { [ js[] ] ; In DomainS ; Jacobian Vol ; } } }
-     { Name br ; Value { Term { [ br[] ] ; In DomainM ; Jacobian Vol ; } } }
-
-     { Name j  ; Value {
-         Term { [ -sigma[]*(Dt[{a}]+{ur}) ]        ; In DomainC ; Jacobian Vol ; }
-         Term { [  sigma[]*(Velocity[] *^ {d a}) ] ; In DomainV ; Jacobian Vol ; }
-       }
-     }
-     { Name ir ; Value { Term { [ {ir} ] ; In Inds ; Jacobian Vol ; } } }
-
-     { Name jz ; Value {
-         Term { [ CompZ[-sigma[]*(Dt[{a}]+{ur})] ]       ; In DomainC ; Jacobian Vol ; }
-         Term { [ CompZ[ sigma[]*(Velocity[]*^{d a}) ] ] ; In DomainV ; Jacobian Vol ; }
-       }
-     }
-
-     { Name rhoj2 ;
-       Value {
-         Term { [ sigma[]*SquNorm[ Dt[{a}]+{ur}] ] ; In Region[{DomainC,-DomainV}] ; Jacobian Vol ; }
-         Term { [ sigma[]*SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ] ; In DomainV ; Jacobian Vol ; }
-         Term { [ 1./sigma[]*SquNorm[ IA[]*{ir} ] ] ; In PhaseA  ; Jacobian Vol ; }
-         Term { [ 1./sigma[]*SquNorm[ IB[]*{ir} ] ] ; In PhaseB  ; Jacobian Vol ; }
-         Term { [ 1./sigma[]*SquNorm[ IC[]*{ir} ] ] ; In PhaseC  ; Jacobian Vol ; }
-       }
-     }
-
-     { Name JouleLosses ;
-       Value {
-         Integral { [ sigma[] * SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ]   ; In Region[{DomainC,-DomainV}] ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ sigma[] * SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ]   ; In DomainV ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ 1./sigma[]*SquNorm[ IA[]*{ir} ] ] ; In PhaseA  ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ 1./sigma[]*SquNorm[ IB[]*{ir} ] ] ; In PhaseB  ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ 1./sigma[]*SquNorm[ IC[]*{ir} ] ] ; In PhaseC  ; Jacobian Vol ; Integration I1 ; }
-       }
-     }
-
-     { Name Flux ; Value { Integral { [ SymmetryFactor*AxialLength*Idir[]*NbWires[]/SurfCoil[]* CompZ[{a}] ] ;
-           In Inds  ; Jacobian Vol ; Integration I1 ; } } }
-
-     { Name Force_vw ; // Force computation by Virtual Works
-       Value {
-         Integral {
-           Type Global ; [ 0.5 * nu[] * VirtualWork [{d a}] * AxialLength ];
-           In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; Jacobian Vol ; Integration I1 ; }
-       }
-     }
-
-     { Name Torque_vw ; Value { // Torque computation via Virtual Works
-         Integral { Type Global ;
-           [ CompZ[ 0.5 * nu[] * XYZ[] /\ VirtualWork[{d a}] ] * AxialLength ];
-           In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; Jacobian Vol ; Integration I1 ; }
-       }
-     }
-
-
-     { Name Torque_Maxwell ; // Torque computation via Maxwell stress tensor
-       Value {
-         Integral {
-           [ CompZ [ XYZ[] /\ (T_max[{d a}] * XYZ[]) ] * 2*Pi*AxialLength/SurfaceArea[] ] ;
-           In Domain ; Jacobian Vol  ; Integration I1; }
-       }
-     }
-
-     { Name Torque_Maxwell_cplx ; // Torque computation via Maxwell stress tensor
-       Value {
-         Integral {
-           [ CompZ [ XYZ[] /\ (T_max_cplx[{d a}] * XYZ[]) ] * 2*Pi*AxialLength/SurfaceArea[] ] ;
-           In Domain ; Jacobian Vol  ; Integration I1; }
-       }
-     }
-
-     { Name ComplexPower ; // S = P + i*Q
-       Value {
-         Integral { [ Complex[ sigma[]*SquNorm[Dt[{a}]+{ur}], nu[]*SquNorm[{d a}] ] ] ;
-           In Region[{DomainC,-DomainV}] ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ Complex[ sigma[]*SquNorm[Dt[{a}]+{ur}-Velocity[]*^{d a}], nu[]*SquNorm[{d a}] ] ] ;
-           In DomainV ; Jacobian Vol ; Integration I1 ; }
-       }
-     }
-
-     { Name U ; Value {
-         Term { [ {U} ]   ; In DomainC ; }
-         Term { [ {Ub} ]  ; In DomainB ; }
-         Term { [ {Uz} ]  ; In DomainZt_Cir ; }
-     } }
-
-     { Name I ; Value {
-         Term { [ {I} ]   ; In DomainC ; }
-         Term { [ {Ib} ]  ; In DomainB ; }
-         Term { [ {Iz} ]  ; In DomainZt_Cir ; }
-     } }
-
-     { Name S ; Value {
-         Term { [ {U}*Conj[{I}] ]    ; In DomainC ; }
-         Term { [ {Ub}*Conj[{Ib}] ]  ; In DomainB ; }
-         Term { [ {Uz}*Conj[{Iz}] ]  ; In DomainZt_Cir ; }
-     } }
-
-     { Name Velocity  ; Value {
-         Term { [ Velocity[] ] ; In Domain ; Jacobian Vol ; }
-       }
-     }
-
-     // For getting the value of some functions:
-     { Name RotorPosition_deg ; Value { Term { Type Global; [ RotorPosition_deg[] ] ; In DomainDummy ; } } }
-     { Name Theta_Park_deg    ; Value { Term { Type Global; [ Theta_Park_deg[] ] ; In DomainDummy ; } } }
-     { Name IA  ; Value { Term { Type Global; [ IA[] ] ; In DomainDummy ; } } }
-     { Name IB  ; Value { Term { Type Global; [ IB[] ] ; In DomainDummy ; } } }
-     { Name IC  ; Value { Term { Type Global; [ IC[] ] ; In DomainDummy ; } } }
-
-     { Name Flux_d  ; Value { Term { Type Global; [ CompX[Flux_dq0[]] ] ; In DomainDummy ; } } }
-     { Name Flux_q  ; Value { Term { Type Global; [ CompY[Flux_dq0[]] ] ; In DomainDummy ; } } }
-     { Name Flux_0  ; Value { Term { Type Global; [ CompZ[Flux_dq0[]] ] ; In DomainDummy ; } } }
-   }
- }
-
- { Name Mechanical ; NameOfFormulation Mechanical ;
-   PostQuantity {
-     { Name P ; Value { Term { [ {P} ]  ; In DomainKin ; } } } //Position
-     { Name V ; Value { Term { [ {V} ]  ; In DomainKin ; } } } //Velocity
-     { Name Vrpm ; Value { Term { [ {V}*30/Pi ]  ; In DomainKin ; } } } //Velocity in rpm
-   }
- }
-
-}
-
-//-----------------------------------------------------------------------------------------------
-//-----------------------------------------------------------------------------------------------
-
-If (Flag_ParkTransformation)
-PostOperation ThetaPark_IABC UsingPost MagDyn_a_2D {
-  Print[ RotorPosition_deg, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]],
-         SendToServer "Output/1RotorPosition", Color "LightYellow" ];
-  Print[ Theta_Park_deg, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]],
-         SendToServer "Output/1Theta_Park", Color "LightYellow" ];
-  Print[ IA, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IA", Color "Pink" ];
-  Print[ IB, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IB", Color "Yellow" ];
-  Print[ IC, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IC", Color "LightGreen"  ];
-}
-EndIf
-PostOperation Get_LocalFields UsingPost MagDyn_a_2D {
-  Print[ ir, OnElementsOf Stator_Inds, File StrCat[Dir, StrCat["ir_stator",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  Print[ ir, OnElementsOf Rotor_Inds,  File StrCat[Dir, StrCat["ir_rotor",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  //Print[ br,  OnElementsOf #{DomainM}, File StrCat[Dir, StrCat["b",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  Print[ b,  OnElementsOf Domain, File StrCat[Dir, StrCat["b",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  Print[ boundary, OnElementsOf Dummy,  File StrCat[Dir, StrCat["bnd",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  Print[ az, OnElementsOf Domain, File StrCat[Dir, StrCat["a",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps ] ;
-}
-
-PostOperation Get_GlobalQuantities UsingPost MagDyn_a_2D {
-  If(!Flag_Cir)
-  If(!Flag_ParkTransformation)
-    Print[ I, OnRegion PhaseA_pos, Format Table,
-           File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ];
-    Print[ I, OnRegion PhaseB_pos, Format Table,
-           File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ];
-    Print[ I, OnRegion PhaseC_pos, Format Table,
-           File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ];
-  EndIf
-
-  Print[ U, OnRegion PhaseA_pos, Format Table,
-         File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ];
-  Print[ U, OnRegion PhaseB_pos, Format Table,
-         File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ];
-  Print[ U, OnRegion PhaseC_pos, Format Table,
-         File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ];
-  EndIf
-  If(Flag_Cir && Flag_SrcType_Stator==2)
-    Print[ I, OnRegion Input1, Format Table,
-           File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ];
-    Print[ I, OnRegion Input2, Format Table,
-           File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ];
-    Print[ I, OnRegion Input3, Format Table,
-           File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ];
-    Print[ U, OnRegion Input1, Format Table,
-           File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ];
-    Print[ U, OnRegion Input2, Format Table,
-           File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ];
-    Print[ U, OnRegion Input3, Format Table,
-           File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ];
-  EndIf
-  If(Flag_Cir && Flag_SrcType_Stator==0)
-    Print[ I, OnRegion R1, Format Table,
-           File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ];
-    Print[ I, OnRegion R2, Format Table,
-           File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ];
-    Print[ I, OnRegion R3, Format Table,
-           File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ];
-    Print[ U, OnRegion R1, Format Table,
-           File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ];
-    Print[ U, OnRegion R2, Format Table,
-           File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ];
-    Print[ U, OnRegion R3, Format Table,
-           File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ];
-  EndIf
-
-
-  Print[ I, OnRegion RotorC, Format Table,
-         File > StrCat[Dir, StrCat["Irotor",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2Ir", Color "LightYellow" ];
-
-  Print[ Torque_Maxwell[Rotor_Airgap], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Tr",ExtGnuplot]], LastTimeStepOnly, Store 54, SendToServer my_output, Color "LightYellow" ];
-  Print[ Torque_Maxwell[Stator_Airgap], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Ts",ExtGnuplot]], LastTimeStepOnly, Store 55, SendToServer "Output/41T_stator", Color "LightYellow" ];
-  Print[ Torque_Maxwell[MB], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Tmb",ExtGnuplot]], LastTimeStepOnly, Store 56, SendToServer "Output/42T_mb", Color "LightYellow" ];
-  //Print[ Torque_vw, OnRegion NodesOf[Rotor_Bnd_MB], Format RegionValue,
-  //       File > StrCat[Dir, StrCat["Tr_vw",ExtGnuplot]], LastTimeStepOnly, Store 54, SendToServer "Output/1T_rotor_vw" ];
-
-  If(Flag_SrcType_Stator)
-  Print[ Flux[PhaseA], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Flux_a",ExtGnuplot]], LastTimeStepOnly, Store 11, SendToServer "Output/50Flux_a",  Color "Pink" ];
-  Print[ Flux[PhaseB], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Flux_b",ExtGnuplot]], LastTimeStepOnly, Store 22, SendToServer "Output/51Flux_b",  Color "Yellow" ];
-  Print[ Flux[PhaseC], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Flux_c",ExtGnuplot]], LastTimeStepOnly, Store 33, SendToServer "Output/52Flux_c", Color "LightGreen"];
-
-  If(Flag_ParkTransformation && Flag_SrcType_Stator)
-    Print[ Flux_d, OnRegion DomainDummy, Format TimeTable,
-           File > StrCat[Dir, StrCat["Flux_d",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/60Flux_d", Color "LightYellow" ];
-    Print[ Flux_q, OnRegion DomainDummy, Format TimeTable,
-           File > StrCat[Dir, StrCat["Flux_q",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/61Flux_q", Color "LightYellow" ];
-    Print[ Flux_0, OnRegion DomainDummy, Format TimeTable,
-           File > StrCat[Dir, StrCat["Flux_0",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/62Flux_0", Color "LightYellow" ];
-  EndIf
-  EndIf
-}
-
-
-PostOperation Joule_Losses UsingPost MagDyn_a_2D {
-  Print[ JouleLosses[Rotor], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["P",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/3P_rotor" ];
-  Print[ JouleLosses[Rotor_Fe], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["P_Fe",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/3P_rotor_fe" ];
-}
-
-/*
-PostOperation Mechanical UsingPost Mechanical {
-  Print[ P, OnRegion DomainKin, File > StrCat[Dir, StrCat["P", ExtGnuplot]],
-         Format Table, Store 77, LastTimeStepOnly, SendToServer "Output/3Position"] ;
-  Print[ V, OnRegion DomainKin, File > StrCat[Dir, StrCat["V", ExtGnuplot]],
-         Format Table, LastTimeStepOnly, SendToServer "Output/4Velocity"] ;
-}
-*/
diff --git a/contrib/mobile/Android/res/raw/magnet_data_pro b/contrib/mobile/Android/res/raw/magnet_data_pro
deleted file mode 100644
index 3e0a76ce52..0000000000
--- a/contrib/mobile/Android/res/raw/magnet_data_pro
+++ /dev/null
@@ -1,16 +0,0 @@
-
-DefineConstant[ Val_Rint = {0.15, Min 0.2, Max 1, Step 0.1,
-                            Path "Parameters/Geometry/1",
-                            Label "Internal shell radius (m)"} ];
-
-DefineConstant[ Val_Rext = {0.25, Min Val_Rint, Max 0.5, Step 0.1,
-                            Path "Parameters/Geometry/2",
-                            Label "External shell radius (m)"}];
-
-AIR = 100;
-AIR_INF = 101;
-AIR_GAP = 102;
-MAGNET = 103;
-CORE = 104;
-LINE_INF = 105;
-LINE_X = 106;
diff --git a/contrib/mobile/Android/res/raw/magnet_geo b/contrib/mobile/Android/res/raw/magnet_geo
deleted file mode 100644
index c0c7815711..0000000000
--- a/contrib/mobile/Android/res/raw/magnet_geo
+++ /dev/null
@@ -1,93 +0,0 @@
-Include "magnet_data.pro";
-
-DefineConstant[ h = {0.14, Min 0.1, Max 0.2, Step 0.01,
-                     Path "Parameters/Geometry",
-                     Label "Core height (m)"} ] ;
-
-DefineConstant[ l = {0.14, Min 0.05, Max 0.2, Step 0.01,
-                     Path "Parameters/Geometry",
-                     Label "Core width (m)"} ] ;
-
-DefineConstant[ d = {0.03, Min 0.01, Max 0.05, Step 0.002,
-                     Path "Parameters/Geometry",
-                     Label "Core tickness (m)"} ] ;
-
-DefineConstant[ e = {5e-3, Min 5e-4, Max d, Step 1e-3,
-                     Path "Parameters/Geometry",
-                     Label "Air gap (m)", Highlight "LightYellow"} ] ;
-
-DefineConstant[ ha = {0.03, Min 0.01, Max 0.1, Step 0.01,
-                     Path "Parameters/Geometry",
-                     Label "Magnet height (m)"} ] ;
-
-lc0 = d / 5 ;
-lc1 = e / 2 ;
-lc2 = (Val_Rext - Val_Rint) / 8. ;
-
-Point(1) = {0, 0, 0, lc0};
-Point(2) = {-l/2, 0, 0, lc0};
-Point(3) = {-l/2, h/2, 0, lc0};
-Point(4) = {l/2, 0, 0, lc1};
-Point(5) = {l/2, h/2, 0, lc0};
-Point(6) = {-l/2, ha/2, 0, lc0};
-Point(7) = {-l/2+d, ha/2, 0, lc0};
-Point(8) = {-l/2+d, 0, 0, lc0};
-Point(9) = {l/2-d, 0, 0, lc1};
-Point(10) = {l/2-d, h/2-d, 0, lc0};
-Point(11) = {-l/2+d, h/2-d, 0, lc0};
-Point(12) = {l/2, e/2, 0, lc1};
-Point(13) = {l/2-d, e/2, 0, lc1};
-
-Point(30) = {Val_Rint, 0, 0, lc2};
-Point(31) = {Val_Rext, 0, 0, lc2};
-Point(32) = {0, Val_Rint, 0, lc2};
-Point(33) = {0, Val_Rext, 0, lc2};
-Point(34) = {-Val_Rext, 0, 0, lc2};
-Point(35) = {-Val_Rint, 0, 0, lc2};
-
-Line(1) = {34, 35};
-Line(2) = {35, 2};
-Line(3) = {2, 8};
-Line(4) = {8, 1};
-Line(5) = {1, 9};
-Line(6) = {9, 4};
-Line(7) = {4, 30};
-Line(8) = {30, 31};
-Line(9) = {2, 6};
-Line(10) = {6, 3};
-Line(11) = {3, 5};
-Line(12) = {5, 12};
-Line(13) = {12, 4};
-Line(14) = {9, 13};
-Line(15) = {13, 10};
-Line(16) = {10, 11};
-Line(17) = {11, 7};
-Line(18) = {7, 8};
-Line(19) = {7, 6};
-Line(20) = {13, 12};
-Circle(21) = {35, 1, 32};
-Circle(22) = {32, 1, 30};
-Circle(23) = {34, 1, 33};
-Circle(24) = {33, 1, 31};
-
-Line Loop(25) = {21, 22, 8, -24, -23, 1};
-Plane Surface(26) = {25};
-Line Loop(27) = - {22, -7, -13, -12, -11, -10, -9, -2, 21};
-Plane Surface(28) = {27};
-Line Loop(29) = - {11, 12, -20, 15, 16, 17, 19, 10};
-Plane Surface(30) = {29};
-Line Loop(31) = {19, -9, 3, -18};
-Plane Surface(32) = {31};
-Line Loop(33) = - {20, 13, -6, 14};
-Plane Surface(34) = {33};
-Line Loop(35) = {15, 16, 17, 18, 4, 5, 14};
-Plane Surface(36) = {35};
-
-// physical entities (for which elements will be saved)
-Physical Surface(AIR) = {28, 36};
-Physical Surface(AIR_INF) = {26};
-Physical Surface(AIR_GAP) = {34};
-Physical Surface(MAGNET) = {32};
-Physical Surface(CORE) = {30};
-Physical Line(LINE_INF) = {23, 24};
-Physical Line(LINE_X) = {1:8};
diff --git a/contrib/mobile/Android/res/raw/magnet_pro b/contrib/mobile/Android/res/raw/magnet_pro
deleted file mode 100644
index a18c7cdf4f..0000000000
--- a/contrib/mobile/Android/res/raw/magnet_pro
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-   To solve the problem
-   with scalar potential, type 'getdp test -solve MagSta_phi -pos phi'
-   with vector potential, type 'getdp test -solve MagSta_a -pos a'
-*/
-
-Include "magnet_data.pro";
-
-Group {
-  // AIR, AIR_INF, etc. are variables defined in core.txt, and correspond to the
-  // tags of physical regions in the mesh
-  Air     = Region[ AIR ];
-  AirInf  = Region[ AIR_INF ];
-  Core    = Region[ CORE ];
-  AirGap  = Region[ AIR_GAP ];
-  Magnet  = Region[ MAGNET ];
-
-  // These are the generic group names that are used in "Magnetostatics.pro"
-  Domain_S = Region[ {} ] ;
-  Domain_Inf = Region[ AirInf ] ;
-  Domain_M   = Region[ Magnet ] ;
-  Domain_Mag = Region[ {Air, Core, AirGap} ] ;
-  Dirichlet_a_0   = Region[ LINE_INF ] ;
-  Dirichlet_phi_0 = Region[ {LINE_X, LINE_INF} ] ;
-}
-
-Function {
-  mu0 = 4.e-7 * Pi ;
-
-  // DefineConstant is used to define a default value for murCore; this value
-  // can be changed interactively by the ONELAB server
-  DefineConstant[ murCore = {200., Min 1, Max 1000, Step 10,
-                             Label "Core relative permeability",
-                             Path "Parameters/Materials"} ];
-
-  nu [ Region[{Air, AirInf, AirGap, Magnet}] ] = 1. / mu0 ;
-  nu [ Core ]  = 1. / (murCore * mu0) ;
-
-  mu [ Region[{Air, AirInf, AirGap, Magnet}] ] = mu0 ;
-  mu [ Core ]  = murCore * mu0;
-
-  DefineConstant[ Hc = {920000, Label "Magnet coercive field (A/m)",
-                        Path "Parameters/Materials"} ];
-  hc [ Magnet ] = Vector[0., Hc, 0.] ;
-}
-
-Include "magnetostatics.pro"
-
-eps = 1.e-5 ;
-
-Printf[ "murCore: %f",murCore ] ;
-
-PostOperation {
-  { Name phi ; NameOfPostProcessing MagSta_phi;
-    Operation {
-      Print[ phi, OnElementsOf Domain, File "phi.pos" ] ;
-      Print[ b, OnElementsOf Domain, File "b_phi.pos" ] ;
-      Print[ b, OnLine {{-0.07,eps,0}{0.09,eps,0}} {500}, File "b_phi.txt", Format Table ] ;
-    }
-  }
-  { Name a ; NameOfPostProcessing MagSta_a;
-    Operation {
-      Print[ a, OnElementsOf Domain, File "a.pos"] ;
-      Print[ b, OnElementsOf Domain, File "b_a.pos" ] ;
-      Print[ h, OnElementsOf Domain, File "h_a.pos" ] ;
-      Print[ b, OnLine {{-0.07,eps,0}{0.09,eps,0}} {500}, File "b_a.txt" , Format Table ] ;
-    }
-  }
-}
diff --git a/contrib/mobile/Android/res/raw/magnetostatics_pro b/contrib/mobile/Android/res/raw/magnetostatics_pro
deleted file mode 100644
index 4c9c07d5c5..0000000000
--- a/contrib/mobile/Android/res/raw/magnetostatics_pro
+++ /dev/null
@@ -1,209 +0,0 @@
-Group {
-  // Input groups:
-  DefineGroup[ Domain_M = {{}, Label "Permanent magnets",
-                           Path "Regions/0Sources"},
-               Domain_S = {{}, Label "Inductor (imposed j_s)",
-                           Path "Regions/0Sources"},
-               Domain_Inf = {{}, Label "Infinite domain (spherical shell)",
-                             Path "Regions/0Special regions", Closed "1"},
-               Domain_Mag = {{}, Label "Passive magnetic regions",
-                             Path "Regions/Other regions"},
-               Dirichlet_phi_0 = {{}, Label "h_t = 0", Closed "1",
-                                  Path "Regions/0Boundary conditions"},
-               Dirichlet_a_0 = {{}, Label "b_n = 0",
-                                Path "Regions/0Boundary conditions"} ];
-
-  DefineGroup[ Domain = {{Domain_Mag, Domain_M, Domain_S, Domain_Inf},
-                         Label "Computational domain", Path "Regions", Visible 0} ];
-}
-
-Function{
-  // Input constants:
-  DefineConstant[ Val_Rint, Val_Rext // interior/exterior radius of Domain_Inf
-                  ];
-
-  // Input functions:
-  DefineFunction[ mu, // magnetic permeability
-                  nu, // magnetic reluctivity
-                  hc, // coercive magnetic field
-                  js // source current density
-                  ];
-
-  // remove this: only for demo
-  //DefineConstant[ hcx = {0, Label "Coercive field h_x", Path "Sources"}];
-  //DefineConstant[ hcy = {1000, Label "Coercive field h_y", Path "Sources"}];
-  //hc[] = Vector[hcx,hcy,0];
-  //mu[] = 4*Pi*10^-7;
-  //nu[] = 1/mu[];
-}
-
-Jacobian {
-  { Name JVol ;
-    Case {
-      { Region Domain_Inf ; Jacobian VolSphShell{Val_Rint, Val_Rext} ; }
-      { Region All ; Jacobian Vol ; }
-    }
-  }
-}
-
-Integration {
-  { Name I1 ;
-    Case {
-      { Type Gauss ;
-        Case {
-	  { GeoElement Triangle ; NumberOfPoints 4 ; }
-	  { GeoElement Quadrangle  ; NumberOfPoints 4 ; }
-	}
-      }
-    }
-  }
-}
-
-
-/* --------------------------------------------------------------------------
-   MagSta_phi : Magnetic scalar potential phi formulation
-   -------------------------------------------------------------------------- */
-
-Constraint {
-  { Name phi ;
-    Case {
-      { Region Dirichlet_phi_0 ; Value 0. ; }
-    }
-  }
-}
-
-FunctionSpace {
-  { Name Hgrad_phi ; Type Form0 ;
-    BasisFunction {
-      { Name sn ; NameOfCoef phin ; Function BF_Node ;
-        Support Domain ; Entity NodesOf[ All ] ; }
-    }
-    Constraint {
-      { NameOfCoef phin ; EntityType NodesOf ; NameOfConstraint phi ; }
-    }
-  }
-}
-
-Formulation {
-  { Name MagSta_phi ; Type FemEquation ;
-    Quantity {
-      { Name phi ; Type Local ; NameOfSpace Hgrad_phi ; }
-    }
-    Equation {
-      Galerkin { [ - mu[] * Dof{d phi} , {d phi} ] ;
-                 In Domain ; Jacobian JVol ; Integration I1 ; }
-
-      Galerkin { [ - mu[] * hc[] , {d phi} ] ;
-                 In Domain_M ; Jacobian JVol ; Integration I1 ; }
-    }
-  }
-}
-
-Resolution {
-  { Name MagSta_phi ;
-    System {
-      { Name A ; NameOfFormulation MagSta_phi ; }
-    }
-    Operation {
-      Generate[A] ; Solve[A] ; SaveSolution[A] ;
-    }
-  }
-}
-
-PostProcessing {
-  { Name MagSta_phi ; NameOfFormulation MagSta_phi ;
-    Quantity {
-      { Name b   ; Value { Local { [ - mu[] * {d phi} ] ; In Domain ; Jacobian JVol ; }
-                           Local { [ - mu[] * hc[] ]    ; In Domain_M ; Jacobian JVol ; } } }
-      { Name h   ; Value { Local { [ - {d phi} ]        ; In Domain ; Jacobian JVol ; } } }
-      { Name phi ; Value { Local { [ {phi} ]            ; In Domain ; Jacobian JVol ; } } }
-    }
-  }
-}
-
-PostOperation {
-  { Name MagSta_phi ; NameOfPostProcessing MagSta_phi;
-    Operation {
-      Print[ b, OnElementsOf Domain, File "MagSta_phi_b.pos" ] ;
-      Print[ h, OnElementsOf Domain, File "MagSta_phi_h.pos" ] ;
-      Print[ phi, OnElementsOf Domain, File "MagSta_phi_phi.pos" ] ;
-    }
-  }
-}
-
-/* --------------------------------------------------------------------------
-   MagSta_a : Magnetic vector potential a formulation (2D)
-   -------------------------------------------------------------------------- */
-
-Constraint {
-  { Name a ;
-    Case {
-      { Region Dirichlet_a_0 ; Value 0. ; }
-    }
-  }
-}
-
-FunctionSpace {
-
-  { Name Hcurl_a ; Type Form1P ;
-    BasisFunction {
-      { Name se ; NameOfCoef ae ; Function BF_PerpendicularEdge ;
-        Support Domain ; Entity NodesOf[ All ] ; }
-    }
-    Constraint {
-      { NameOfCoef ae ; EntityType NodesOf ; NameOfConstraint a ; }
-    }
-  }
-
-}
-
-Formulation {
-  { Name MagSta_a ; Type FemEquation ;
-    Quantity {
-      { Name a  ; Type Local ; NameOfSpace Hcurl_a ; }
-    }
-    Equation {
-      Galerkin { [ nu[] * Dof{d a} , {d a} ] ;
-                 In Domain ; Jacobian JVol ; Integration I1 ; }
-
-      Galerkin { [ hc[] , {d a} ] ;
-                 In Domain_M ; Jacobian JVol ; Integration I1 ; }
-
-      Galerkin { [ -js[] , {a} ] ;
-                 In Domain_S ; Jacobian JVol ; Integration I1 ; }
-    }
-  }
-}
-
-Resolution {
-  { Name MagSta_a ;
-    System {
-      { Name A ; NameOfFormulation MagSta_a ; }
-    }
-    Operation {
-      Generate[A] ; Solve[A] ; SaveSolution[A];
-    }
-  }
-}
-
-PostProcessing {
-  { Name MagSta_a ; NameOfFormulation MagSta_a ;
-    Quantity {
-      { Name a ; Value { Local { [ CompZ[{a}] ]   ; In Domain ; Jacobian JVol ; } } }
-      { Name b ; Value { Local { [ {d a} ]        ; In Domain ; Jacobian JVol ; } } }
-      { Name a ; Value { Local { [ {a} ]          ; In Domain ; Jacobian JVol ; } } }
-      { Name h ; Value { Local { [ nu[] * {d a} ] ; In Domain ; Jacobian JVol ; }
-                         Local { [ hc[] ]         ; In Domain_M ; Jacobian JVol ; } } }
-    }
-  }
-}
-
-PostOperation {
-  { Name MagSta_a ; NameOfPostProcessing MagSta_a;
-    Operation {
-      Print[ b, OnElementsOf Domain, File "MagSta_a_b.pos" ] ;
-      Print[ h, OnElementsOf Domain, File "MagSta_a_h.pos" ] ;
-      Print[ a, OnElementsOf Domain, File "MagSta_a_a.pos" ] ;
-    }
-  }
-}
diff --git a/contrib/mobile/Android/res/raw/models.zip b/contrib/mobile/Android/res/raw/models.zip
new file mode 100644
index 0000000000000000000000000000000000000000..de8f6ff724bec17b9e76ab05fdbd88d6f17e3578
GIT binary patch
literal 23732
zcmWIWW@Zs#W?<l8hzgzV<o9^-n-|Os4BL1Z7}yvX7@R!x3X1ZlPK)ghHWX-k&-(u`
z<K7FQ$<LH0vwU<4a10RqvQFe>UUziF?p@m!bo{@&<g&`;Qqi27Pan=*uafSku3tWT
z^V?rVpFe+Fn_2az;?|pG%Y`f6FJl*;@?ZV(tKZXK-eb`dwY&TOuKf=^v+i#B+h1=!
zTEwCHNm(cD^XrHD`|4*-eK7fZe0je9db{)Q4%OJ%u4FuYHm|bFR^#vO-+L^x<|bL}
z<ZgF)e)@9S-wn5FcJHa$7gsau;Neem{nc$B@trxn=|hUhzRlaGC!Md?nf7{fdHD3x
zcW;*I%P;-+<J(ue-MxFOi{IRJe)F*B+U&QlUY&k=G--EK*vqp?-16tWS5-ZD`gpGX
z{Hx6G<^2w__AlY#vsrQ|AhKzJkrm6i-sCgv@<k#6k;0Qtt1NLVYt+zSXO}5{JVRpY
zQA72BzN^R0{cd)9&Y6>9A+eeJ(4DZC%!!F>c$)SZs(JR#-0-`D|JCBogQ^SGxRuy3
znJn|UVNvOG>Pbh#)SHzm8FMt*Cr8M5Tv@P7R!aLb!_<{Vi5<O*3j*|x3a6wN9aRmr
zQ%MuAVk%_O)KZ@wDO>tmj=T7&$ewUFb<5P$BFjme)cEwO`?7pgIcmKfrer<ZV6Sv+
zfe+t|h?%inky926e+$|9?60ZqOWlfJ)5SvSw%E@*7GPQ8ws`Tyl`j{wwomjG;NL4I
zlT%{2YlWSVdvcGOhNP{et+cJQ?6Gsv+`p1!^A{v8UTmII@~Q3c)+0GRIZa%AX1gj5
zyY*iWm+3XEJnVM<Ucu$Bj(m1;hJA0t%^Y9wO3&T%aN+m4|1UOGB=h&pQ@Y%|;;Pi<
zi$`BnzIa<B;9P$vX|}}SUSFFMqklG^wv^k?J~mZOrO!Qo)}xb+Z{2z7-#cntyBD8O
z#npb!=8J;!bek_r{wWtuD?GON#K+*2#q5ve3twp77QJqqt*z1XrZ)N5LT(=0uS&lZ
zq?0e-mNe#B{D8x2uZP4@?qs>D0}I`E?qoOLeXse~q1ShQG%NC^NyxPGJIKkTp0_nD
zdgG?_?#vr&c1c$yzWF>iBpN>jCZ$Zs>se?m<ncmBP|En(4T~Qd^|D6=k6#NqWH?Ru
z$1xX2scx2x<eTYzy{am^lgi#i2WarD(a{Tvjx17KV444B@|2lN3fU5kyDqj$B+tIg
zXrsN^TO}y6TP5IJU$D&P`NrEhXKS{evMprt$a?ZCB`|W1f8*56pADbcEpkngzZkfq
z|AouL43XJ-YwX*W3dgVCpF2M`C%ygt@%FPdJDA1oZ`^l|-x{5|ch~;7{IKrTRUiLE
zK2BGD`e*vyO!=hg|0QeI6-ND;w{yn*_22J5w*Fzi{(-S@^<OQ!-Jjpz{<6L*>hW)B
zL|JelBGM`L@f>$GRt5$OaRvq<1_lP-#Pqz>lKkS5#FEV9Vo<rTH{yQ&Wdnh_W%Wl_
z`WvubQ&Le;lS{~1+_BN=qTC9%65l(=Cfqpaw=6XDfBCt*NxLF{b(gXjrk=Z7KL7o>
z?~%I$jQkU?F<IEP&GY!oqn75mf8kR8oHMMO)trAQ2tPTrzh%3@?6bB%dX&YScb^Yw
zYU<<>n!_>e<+kfhU;X7bbKJUrqs4n+zcusB)eSGd?Rgi{CVl15SC<*=GebU1QD1pQ
zrzL)0UD=Hpwubw}rwSc3W?Q(mVYyZBj7N;e7AT7yXKlQzxkTr|lQnOcmh$)|@19v!
zZoAfd&XwZ+sL#=1Df8G>@73k3GrHyd@|MWF%YKVzq}E9l?hk$}@KbVa$sOG(55J#0
zQ9ZL;;Hn6drqjIKrA^;EdTKT*T(WY>*kPGzI-fzhEK+E_mj73?4|Duxt$!YDWIvU2
zuC>WTL%paqZ`WR0a)15KXNzYz9-lOOd(`ut96gs$z2rS%;XKij{l}IFsY9m6{+a6;
z<$pZ(&giiRw@=~9zL({{nYf(iWlu;>SLVH~AeHx`@ZfRI*dQ6FN!2MkbFNNV+48XC
zxXo-chwfQBlM4Mjwx7Kgn6Q@lWXOghg=2G$CN>||&waCXE{nhuubGTuMhiLXFT06)
zt2|5>yq@pSRl$|KQejEx@4fThYwR$7d+Fn<py@oih8=%)uexwGVo}1`h~Va{Z%fP$
z_+CHcdhkQrpY=0m&U03JCb;0b=03HZe}BDNalU`o-1+C@^`{+8+L^uo_PpOMjWUHI
zVMb{mScTc<uS?}Q#`r+Qbn|?MGtXT=?<)SvqQ&w_YRSa|XU^aJdu-0+mwWiW==EiD
zES>t-(wwLI%30x5|H<B)uIDcMQ9H|M$AOsFk9H@2J|YogP${<gh{=g^*Fbf{#S7v;
zr5w3(b%%cE*0%6z?sxxX_brU7SW~L`E#kiG>mMBR<lh+HFj>teIZKi+|G_33g;^#%
zqDzdF54lZxvHRsqmHu3=lb;)G9=zCbb(8Me36maNYk!pYX5lWbxikDuN|wZ3i8>(J
z(=5XLjP0jKui!7UD~mon-*VYc@Vjl+I`8oIhObwc{NCKYI)m@-jSHsQQ-A(0{@=|r
z^RjcZjqlP^IiI6%8&AAg!kD~l{W0g;XUz2~tETNN<lK=ctFgIRXkF5Cg$aeudDFI*
z8U>fN&z71t=kLk2i5s=E(xtc0lRo}(^OCw%J7)Z`_FVsVtIPTadIo8)%$KuD94g*m
z{IcVd`Mg%OV=^`x_w#s`{<^HK-fOJf^^oOV$cs|l$-RMRcigd@SHIKr(O;*U<fvmm
zmsv&pJ{Xd&vvT>L*s00O=XpP`TD9IIH+yH=A)Sp6tuHq*OWvQhzTz|+tKsfVr*`R=
zUJIWz#kJTlGi_h%?P+;Zj3MpSVJ1_erM9a{d;86~Zl|{{x`@g2;r1zIdH>dK>bthF
z?8T*E=li^~??`V<_r9}t!|ShWb|rgTW^av;nzJTz)4oT~o*8|5;3YE4WAUm7&ktJm
zOKzEN@b87IR_Se#GEs$Fq6$&W4)@Di7yK9Pn7!(Fa7xM7AJ^`jkFj+N?|u04H2?X3
zvsE7VHT6`V+PL_*<GLjISkrgk$|ogn(>i`4E9p+UR;tny##Fz#t&`ou(^9No8(j<9
z5<9K1KF}><{mIZr--A*fzA_Zc>giv8)SL5|GiSl#C;u;XTijmE!>9ZC$9tuI_Q^kL
zMdi#d-MTid*DLKG)2Cz)(G5&{_B-{>3dntK<5Ip+a_fOV;a64&hK7_&*PJ+;*7+hP
z{lUGt&kV|$?-UsyaK6L+A#poXOtt!fyLUGJH2WZqC{;l%EcXc)d#oiH7*<YWU=U|u
zV8~5O&dAJ5jn7R?FD^+;smzN{1Qo4sVyc55n+g2iUDKsoduAe=lhgd;G1e*$v$qwz
zWX$ZIotEOxD0<xQZ^L4rUpIGayH1m}R0~+QJ~PVV=B0n%G&94?ei(6G*1WTp@y+Lr
z96R=uCD_j~5R|$4ymwpPoC68lYu;?HI$^l=(#a>=QeLb!;9Q(&E^+j0%<k#?Ev|{X
zzfpSNX}00)q8%(BReFy(o8LIs#=7`n;OwRA*%OMNZ|o2jtEjml7$`d-_SMsM);Xta
zCf>ckHCO%T>d6MZA@-ie(b3jE%=&_f1>2{6eBHwM(No6a%gxp$VY*v-v%W->luB(>
zkZZr#B51kr=9lF*vv}6W?|!<sdOhps{Z9|N7IA()&%Go2+Cu%LhreXDrGGWuVAp==
zJO51gXTRcDlm%nfxGnRD<1PQje=PZ(>PN2>_3e{6{TD^M#%ZZ!Zf84XRAs?e6{b@A
zanVl3_ycA(?P_nPMgG1a>v!YzLXV0mo87a2+X*Va+kE{J_u-8xTW85WR++=Mx8sIl
z<}%6qe==CxJYS?wZ~HX)x5iBA=qYCY5>sw1zkSs4ua(dD56gS)W#_QS)PMW<-1^VW
zbH``$<*>)}+>d`$mB;i{-9Pcs6y`Z`pIS~XSpWRiVZr?~&fkuc;Fj7|;Hlh@_UY2j
zQlZM_+k@?<q@;Ac6@7Ezqa}CS3g1_&724Fa3MIMvkGEWyGy7lkvm*Ix@gF@a&L&EI
z%obc`=rT#**rDeicS+q$wqU)!`=E)h)Y(#HC*d@e|3x2fn%@8XcXEq=vg+P6FWUn(
z@<N6W1s*e;U40_Ay4LYas+WIWd*UpGlij<&PTzF#N5StBiHQ%deRgv$in_k5@%eIP
zzSnQpZ(A0)V;^@f8%yE?Wv%W7e?=>FlH^$H=Wy^JGW5wfdCbi0h1uup*S`GQ#3o|6
z<gs?0V)CPRDv7DP8_j0itNNs}EWTX+>F&?c?FR#E4)E-megD;!(#6citg8;KFqoEi
zF(7NkLX)sU?)8O?TRFD4RV&@!lW=*@s%y(!jl8YrAC+-w=u17wT5tKTC9&nTNtCJD
zIrrR20fl*+6RzAUFA6_=?`f`%%`^GkL5_zPo>;$cgNZixf+^FCwuwp2&<nj?GO;2^
z@bvR?*1N_3+F6%>FE-iSxaGvjDW3%^B+exrQO+rv81soE?}Pk-jM)cDAFEG~=$rpC
zwz!$&;(W&$2VR&Z2tPcU5oWs7ZIW;egYdhBGdFT~<}z-%@TC0G3k8YN<8GJy)a@s&
zQ7ko^7<&Hb*>#HAyzYlj_UQ0jv3b2~Y4gM_^U@`x-FVL&^-{Z|sP49kwP>pW%YCPL
z4tH1QXKj$2GV_77pu$D#v)9hGYgL4P6ZaJ1xYXI5cgRNF*yMBL|5>O0nlVo_k$Se6
z{qYlF!<lFOF6FxXF5uoCvcl0{L;L8Xq(g0Ij<1`$)<5cx@X-_8Pt(-axfXf9miT<R
z)1mFb922$Xo^#$4-z{Eye!`k5eCwA7%V}yQi7$Dur#PMUXu<jOX_M#QeY2z_c&k>?
zgPRR8SMD^iy_{kB|LvadqK}K}wTqV2nRzaLIK#QO!0dp<HLhh|Tf}eJ<`_M{`)omj
z;Vzk-91MM&u2MeR3oX70v=(w1U0A`gDsNK7?rR*$#yQW}jPJ|&Y%^gy$NTNlp@gFI
zN&02((-%6I&*n7^SpR3;o^16aTVvefHeY^oYvb>|9TjhQ>heri6uoRYRL*8uaN=pi
zv1ixBI`0H>=$>0S<%7Ya{i`+{=`=_ZmQ%@?sQGl6a@3b3Nlj%z$(YqYUU{Z?t@l1I
zC(dPRSr)wX(UGw8`y>2<ygn#sPO%XBd_6aFx1IW7i`FZ_MQ=MFMD<xbb@Wm8b9pdh
z&P7R{R|fw}4pn&iZ`LW@Ho+`<>%5FN3Nzg{RfW0yI^eXade-MXYt*-9o0csITbSIs
z;q;8#lcvpH=@tK~QlMh<#Z~G19rE4Ie4W#%<+sH-`_}i}n=X0B^OtITSrN{D#M;;A
z=>5#CAFiM4yLo$>$l0u|ugjiJ+O}Hn8;8i(89wy|TU40u-aKbjzs1@*^7+n}F)<SN
z*9o~6+siDP+-82V;1$oi6HTVG=7v<9?NOP^eEa4Bzpn@Qc&8}Wch0@1+Wk|mPkr_k
zh3LGZZr&?XCYW08|Gez@E$08rQ}-}j-zUEAufUFTdkf}f?WkdEnp^kc;XCcz65*?L
zKR(KQtUHylK|v~o`-)(7?crMaM=UpwO*nDV{k8gBDUX))f=}7I>QB2JdhM$C_H9x8
z?IpL5zsTHmYT4U;3F7CziHY6&b)CWN%eFO%?f0%+ztOek{fQeYE2P5G_XjN2Q@*sX
zG;W7$)1KQ?rmyC9>MGaUS<afobN!6Ca-`3DR`HeRH#tRn?wGz|!P7mzlmFh8XM116
zG=IOtnqGZ|+2=n_kKx*Msa<tXx!%but&3&9zT+=-vN(R!<rk0ZvdAkLHRpxi3vFPl
z?bB>LbMo?x<}WvH7xO1-oy@eV+_*-zVhTr_jNRQ^4`*8kP4~B7_*7XaPR&$u_PfN7
zn(OcX%$R34iScsF>9hG#$2i3{%Kei4o_I=3y7#R4$H?g4vnm&A&+u}7|6qo%#TVy#
zaVv?x6_4}g#WP>~tFc0E-LW$->_cnS|0pe*x|HEcZWG(2&0SV6{xI)L$&?AcvC_Y;
zNA9~SKYxv1CF2~o6CV#fXW%H;F@8P$ahyhz3fm8fvcR_OVjlavZ)ya&n4N52s&apk
zd1tBS^k;k*GZ;56{eN|Tdj1vfPcbS<8r)GQZ+u^IUwYfOi+$60x8A<eS!^zGc-^Ky
zaXl}iH*nWJTP~yC6L|W<i{MvYQl2Sg*0FO|_a1Hgd?{u9&hFgsyJuIq=qAJ#&*c?~
zE;=!lQ*cJ`o=3^eJ8}h9F6J`nzry*mLdV82ufFWfqg{_a|JZx&nE33o&qX#_nVV=I
zUnUniS+Z@P6|eA=vaq$A1DA!gnrlV0-OZ3`6I7WlqxOp9MCw6}*Gu<lzj*W{*G^w<
zbB<Z=TdwCu`|rorUYOHZ)^hjnn^$keyJtwp$JAb^x;N+U^OsCl0*?D<rf08|)pgGM
z^XE<0;wv-4w@&@zV{J9dCo=r~`!rPp;VqNh1WzUS2icZ$Ek6{pdj&iDwv(ajRNlYr
zyz%y0$SuduAwD~<wHv7^uVuXyC%7b*^-`qZ5@kmn>zljwb4_2B*JW{df^^$vE&UgN
zbrQwzd~%YM4_UM0!o_<vGHL<^c8l&-^2GmIINSQn#GQ>C4Mnf7Oy4dx;cMs3U`74z
zO?@4!4)yH1UoRiVXIYta|4g;yDy6f_azig~Tb)s^6Q#W_?E9WgJU4$oFrDpFYqeHx
zDOc8^J>G&Jj?Y}{YWvF|n^pMR?|xIoi+0yq+P2+l;Sc@e|2o!s%6X&za~OF}Jl0KY
zz7e=|Qr)Sanvb`q&0pucYMMkb%i7@8c?y&6Z2EBSxY69Tv!3p1`y*VFr?mG^0{3x?
zi1KaQwzCUt3{*a6Sl?{9_UDYnA0}&lu24Mq_msDC{fUgHVO;^sj55DHJGDJhC&_p1
z+69@(ev-nbFFQr#nIE@`tg5wm^D*NTv(EgLJ8UFkKg4(zP4ZiwI7P?q>;}1}lj%|t
zI-EbBSjc?*@l--4QZIG)<f0Xxk9t>ZtKsS_xtig|&Ah;<UOVi>^7uvKsgH#F7_+7I
zJ6qT{9uIJx(Z=as^X%~EYyaHNott>2XvQVUe~;J5iuTTR<K7llX0u&)jXa;E_AF^P
z>lyid5jRdccK<oQDe0(qPtP(tRj0FEEq7z4HVbzra{k-vp?8`y{M*yWi<3X?H1Z04
z7&v)}MwnUJ_k}a6PHs>>`fX3dhdowul|9doI@{il`%?4Uao+n~t9Qgr+41j8?9uO!
z4(==O?hE>5f9bhsME|$1JHvjvtmS(3$I~TFYm&~-p801!Z+pzWepM=$*gHENmb&T^
zjz8bhoE~g%Z)*s=+1D6)u&cFUujvUR`_T7UGB^E~`Yw18vrItUf2YI^#l)a#K9R+*
z9S>gEob>Sg&rRPQUQ0g~wM{s)I(SF@q{?uk-1>uC>Mw2j%N}KxzWwI?2}@^b?Wy26
zt+zo-OKoLMk;CLuJCbI)N@mQ;ckW>lUaci=_H+G}ogUhYxT31l*Wda-<@S5#f^&Bo
zdoR^$c$N1htv#~(z?{V*`=@$tG^)HlAzN|FW~28tCu`(lIrlK~v8*gMXKJgg<9&W6
zVjJVD1yap-QeMA0mHp6@Gw#{^2_>^t8jf~(ybu-nYt(gi>nzPn>keIe)~%DcJM2)(
zzog6F7Il?e>-qZPzVY9y`<;8ECEsHHB}Joi{_nfEcvbos4{lHp+Lv%q_d@sdE5%pX
z4A0%WTYd4&$-NO?qD$jN_QjO3n_aX|Q86!KyUJ!&HK(@Yxc)|_c(&S46)z^SpT6~6
zX;!FVuD#xwZ^B2~9{v7dx<bJDXiLXDCmu`7m%Z*maf{~f-0b%8Cxg-JU6Udwo?LUL
zZvCC66SoTd6+g{ccQHc1`v0}d3{xg9IdZj0SZJ?5-<hT2TZElHPpCh#-0t&_Vq*{O
zjy<RTUSjww6vn&iv3vBvhHk?<1v^qSn2eqmDyezBF3_3J?>e)n;&{#CXHf<ZqQ#>P
z9_sih|2$(7x4ECk{MtROh}SdXKWEs_{QYaYq=@~cwEda0B~R<69btI7qRk=Ox8VC?
zJ&%_U9^N)8`n}p@TZGw}nXJiE&ABD6>AA?43LKd{+hCWLckdTY{?Db1+h;G{H#yxS
zs4Mo2&>_tQF*i)seApDS!${zI!wyz~T{`_04Xc8yCOf{p&sOir7OLPI?!DmBQqB<Z
zFfXg1$-j8KHf?Bcn#23gpY6Vn(T{q)AN6_}w~zbHliB-MOlV2!8ms>923NIAli!zp
zymHfS*jyGhi~T#N^_JVzvcL6lL9q`Pn^ZmatFkgHTX$#bi*z9y_Fwgd8><Q#|4(?u
z6dpWz`l_r4`g#^V+wxs1{<Xbo;raS3sA9T8QbA=Ck0NJdW!wxl&b`l+8Y>N&q`!(z
zsmRWLZ6A^>a%8nwP<`Uf1ELqsxLjt=eYonPmXF7jr$H;%`>j`)CYkv}>8kbzx%ioL
z)&E~w#j{#1HX!iwhDo+*we`1}-gvG$)U`cj-Y1>9f1w<o=U!j#c3pKvrOdYnTwCHp
zb7r*L`qeME{`d9Iy-I%TxsKaRF0PV1S5mirRgLD{xxY?xWd(hCI_Je}%|!e1&FWKr
z`W=33_-VfH*VYcL9<5rBrg>8qY~RK5>TyoiNAJ%6^U{5H%xtO4vdvm_{o0ZgD;58|
z$1VP1%tiX#bMF|hKBVcr@ky=a(?G)vE5UTm`{ENf%YEFj(eB1svxlww-5b~U9Xg=X
z`}@vwPJ0o%@F^O1OR|p$H7E32_C8a7Gp{1^{E@x<-+FYF?TV*=tN6aKZ2F?IyGw1q
zFFKVkk@e(L-1bf7rhJRNdg8UKw|C2Y=~*Ps&0T-%;fma%N6K>Xx8_=&np`=>x_amD
z<n)u%#isAyYqMkVSHqJ`k+qsr1lsQIEpykK!4|iF!|d+c`jrk#Vz`(zu5HcH%c_2G
z{EmRB)Lj>&J<qmuTkW)e5gh-c*t+!h`fof%76sEi8(NzM55>$}yZylD8;v&Mvrliz
zKQwDA^Sgf;?@!H|-PZWQ_^;@!L(DBxWS-7wY@DekBdj2BX$eougOiB|9vnMbrg{9s
z{fk~<W}9@P%jTFF9B{sLBd)eOBQ-O8b#qq8qvc$z)i;(0@Ps~0`M8I3H|N3-ZXsiL
z9lM1tK9lyP9<|-*+`Trzt}LfqZpmG>r&<<fce>|UUCfSB*z|wh=l!q$xW}qTSk18b
zT&KK3I(WU%j|F^-yq<08_t*Kc*-Og&*!~-J9l_VXbvl1{u`pIw375Wp;+|Y)@b=%S
z?^}&O-)WfjEp(T=_@vhJN9~W>eo;MXxj3I~Uf?{#?>&8`y8OCUrjv}zF0WcV%_G&~
zt<$+krffcu{U_ySU9UIzcJalNbq$hEy#}8e7PK3eKhoN?<W!LIL^=DYwK=Bi9_8&j
zaqr-zV;*LEvonp-7gilyxp&52jhAnwtJrUUe0%Hu&v`x7H`snJlTQz76MoT<Znu-)
z`r+~Y|N5m0`>QkB6J{?quCK|@RbNw`8nQcZ(%W)%b+z}F%;%T8CE8m3OE?&?XwRc7
zS{X|Y9h)~bVZp|REc2g&F(wzIS8rpU{6_A~ue@5FQ)e32&FS17^GzX~`9vPC!mk%D
z*ZWqUs+elJ?f3rr{dKybm#t*g`?jnqGfgfE-?_QlrI_!s_4F;%mN74mlGX};Fd=tG
z_Y~m`uQ?ZUD%?HvYG2Lsb8>eXkALY+{$>73o>6Jx^p{spNGQD8!(*Ae@ieEt$R?AC
zfBfc8@OryvTBXCZy{U8gw_RDRCi=QcJMMnx6(#+Eq_&<LKiumN95t8wq5LE+YT2Ru
zANs<-XL|HbuU}|#+_l5clPR$0-gA{_j*f=^+ZlaV+(>u1<gdaO$!4@~UEeGhJ{!wR
z!W$i@U!2lBHK^5W-{ZZLM7-B}a7}394g8_5pyufLL*MzU!t=McB@ek?>agCHW81XI
zZi&;Plpf{d{Qm0ivOA_G$eqq=sE}coxtbz)j;XtJU(BAE8|~-r)M-wypP(V}Nz+h@
zcgvm^LN-&5z0ZnP)~hmlw6)RWt?bTIS(=Kg-yAYEN;6dr3q56GG4m$-K3+|hu4g4_
z>pv_>*IfTeC}Q%}&YX2GLO<+k?UGe1?EjZ=;?VP5KX%q=b4x8_k-K`#`ekqV8R_>k
z%=qdLiJNXWdb;&|fr4k*$_D|bCEYG`&J5hMz;Q{UQA2{~jr9{vp0erOSY})Jb;0zl
zPbz#}ma^P>Iy<n`^#_yiKBkx`#XZY)otOoxFN7#@G_)&x(tcMw;fjq)`%$3{XWL#G
zxxYHEvXnXbRm{^@hbPQ@TYBQpqIq)P=Vux3H<6voF==Cr&Ablv&jm}=HTRu3R4CM{
zEHv}T?53G1by=#-wvo#60j`2S6&|W+hTh|rd^&B?8R;t*|K2&WFyOfAB7v`BC$(k^
z@~kNl`xtq*yWpaANJ?e&&0v-VAM&qxJ$CcW?6{i2_*uYYBVTCYthFh#)|O^$o1D4L
zGw-hbSHD;*OMWKl*TS#v&r6bAP-)_Frq}uZuFae-f(=P$rzd%-@lH*O2N5N|+I~#m
zpVPKtw$in%Kl(<=M}2-4UzSf==8&*T;6uCb^YGgSTXoj>{&nGTIa)U@h4tj-O&k6l
z<BVo3TzdZK*F%>?J=^MM&p3E_{mbGXkAf?dwVhUO@H#85E|pPt`iXGs<*Iu#-xeQ~
zaoSl{G}mHkxSR4$g@yZyJl~gw-rD$KmVncot-ZYO)D*5N+VQ{Pc>3#b#I;-9o0#sh
z&APqaXL8TyJ7Fc$EciD+Ik|dm@PP$k#TP#vXZUj?=G4XD1II1Ym1l^|Jtc6f;MJ<8
zdwi~E7x$M*I5n`AO?R;9d>g@O!}X-ug7wL|7Ju7ozVpmaHyiAkrs03Yv3sjh=}9NM
zBtE?q(>DJn*(-}Dc+S2zxjF81L!37I-ffI~x3$gFyOeZxbLS^xz7KQwlaJW^KE0;V
zyj6O|Y|{_dHZYb>l{maZvhm*;(?|2VN<>tz9XEbmxG?04^i6k_AS<usDlu(7C+#h-
z39No|J=^wphswhJK~6Ch&$o#teAazaVkhvo(==$u{1chgDIAH}JDj<c8yvsXqzkH5
zxXv)|klLCtBlOdZtsZQXS7skxILT3C(up{|m>utSl>FfS`%OjW;+<Qoe(d9p+_d|u
z`~Ab}-Is;0b01%w{$J)+_s;{?TmI&6^FLxZiI?+=o=*I3xxIhx{QRL=le~Lf`8Mz8
zjwe{EZs$H^5R^RdUS<yalawWA&oL^!xv2HuFk@|Z%QdHr&Z6vil^tb1oBeBU$Gs7%
z>oUGyqF#PBA}Foweo4&({^#FUtH&(+@Zd+-fxIU@GVJpkxI;PE)dQj;|CoJfP^d`$
zsuF1x@G{Udy<pj*PkTQ(Ud`eWvk#6qR%$uxYH9s)j_fESxkfd<Hs_rT3V}0BmTg`!
zf60N!Gv>@0pEl15Hky2?VS-`fxs_kMO;1MNxBPg<?8dWswQbT>+7F_ww2xSQY?`tD
zP@(Fjv&}9OOVl<^4mvvN^4-^g+palS>UITv{WH_zcJ_lgk`GPfS)L^4vOZZjk#Pot
zoLK1py4o2_>TQpNC3ak1Bp~hV`cqQjcB|vLuBIHm&8GPke(kSRmMB|oyXk1qa`tT*
zAJ5}|VU}!Lo=n;jyU*UCLv>}f@IMB}X-nSceqb+MYyTpDtNx4po$@dKv)V1#fA{bH
z{cmgc@1Od&F5TVG!{*Go6WQME>X%&4T)M9BsTgEAO*d7nr;*bx(do;UhcYreJ{K;F
z<rck8>*;?iKkc~1MZ<+p8>?;<&E)8rxnpVIv9re<)?9s(w*0nMbNl0!hQixReN5QJ
zCR{XZ=r);=-u&0$Ua?wG$h1EnW=A9}IHfUDLOgfDhT4ZhdeQ5dqV{CJ@MGTFCe`%7
zuOzLCbJxRCVIRp%6O*1htGJz9O224*GFsDRnvoN6b{Su#vw+eki3Nx6>2d!)Bl7#-
zKECS7!d^167v>aA&75$Lr&1wsKf}6Dd1wCad2pd<_c{6NyO>!2U+;bJKT4#&**>pt
z|31M#Ul;wD{io2jZcf*S^Y^Vc9u1fmo4fJLt2Z1+v-Hfq-&ZX;5O=YBqg?ro0~uUS
zuQ$fBd3dGy&bh`ey<n3<DeG1N{^yJNJ{%7f{c?fD&?4@vfWbu;<EJ|$%L~ijJxTCA
zlCxCx|Kd9W{bv-Un0IRiv6NM^G~_A#XGYAoDD0Z##FIED(-^d(g^PiK3q0Qfn#I;j
zPtD&O8tZ@CK&1Bl`W>%=S1&awo3u^xmh)A^u$3FSd@nD{bXsPp5;ZHtGs02$f9>`7
zp9}Q-lRG4S-+5fz|9<OHquWcq3%388b~km;uD*z)er2xr?B9O9_xZNU<8B*m?P;O*
z3T@>dj@v5kV;1*hvpCFIeSov{LGjUYi{j49%(u_a3N`$4eN94i+{Z;S^FPa^A5H#$
zqD^%7L(MPZl?N4{os5k+m|*?J{-FPc3h(*V#m)ay^X9vR{+YDhqq2DKt=XC~yK>I#
z{9<}1v~bhUsUJ7hoKzI&W461*SNKf3ed0EEgKzzJ&rW7~cf;>i(F0{Oi>bcv)*qSw
z-p2RyU&H-|)^S0fs^0FKkbk5|`f_h~o05bx!}1+UJ09&=RODJ{`s384*V_LA4stv(
zIk`&FC`~=-zt!=l4Lna*$^`7!_*JsXIi$_)<&0a4;<Tk6f3SIXx+2|pWpg9vt?z!f
zZk=(OajnJtqTs1Dt{Z>y_qGP66noq$v$?iq9gCuG-(!_qbEZBnm~bLn$TodOkhcD^
z*524#CC-r-dAA3z$lNMuwWOkLQLBzf{M?^MeHtI#;Qb!<W6hVnpKI9nFgSJwwzBdC
zFl#zTOrGf&@^2>d5d|&jLWL_G`|KAo?{oXoDtI%7`D}=p_{JzLlb32zhTjvK)<|8t
zCu?xdck)F`!)w0DoVhm@_7%EGS-!pRd|~auPNrBEPhLOK4)?j&W>_8D5~?VawZf9M
zw3IKmV4}!uk;I^I8PmOGF5jD0b=>Z%*j23cXsgn`t_m$DpY@4TpYLW2J-$R@(W3c$
zJuCFtmYlvm!Dva{KK;C#Y+Kd3)@tXNq%gX51mCed+Fy~hAW0#qppfIEb4yf6x>xC~
zP~NSpCQOJ5nG!3K+H_xJf56ve+UfUHd2bgz)0`9#Igu^By}Go~vwZ#XwI1wAs|y~;
zzcX9<?p>JbJB#C1$y1qkpK{qAUy^0h7W*ecO?n#B`Bh82Dma^O?`g38XWrkqyr#Q?
z^S6rc!#3xWb)PeCM9=nhE8VvzDD~hKxqA-UkE<$wI&SPUI`=%g_Hs^7_s^eCZ;HDv
zFgx_<^3|Dj58rO6;amOmY2;&u(>}G<&u44Bh`zXgKO$>^7KnUG;k@h3%)n5`fs(Zf
zit^V^&F#MIAaMNt^I)FJ#d4Wau7aBTRz#gY^p(-p#iGy1clk-DP10rCuLga(JNK^2
z){hI@lNO#eGyZ&k=KV8jhgUN&<cUgzzTwRA3&`B6x1!|xey-Wgo*Nx_r*2YNdq9b)
zdIg7EYKpmNgpnAV?-!oU{$k;wdI<rV%zG+ICfy9qx_bXaf^t)T)9OS4pVX)~W-N)F
zGgWrqT5xnmFt58~!P=|qnw0ZRWe!#RGAy!R{qj#OOUh-50O2=*+)sA#<YZ{8<T`kG
zOkH-PZnNNmJ3H!U`7Eu-oa%g$BkBy#3f=HxgQm!aWj-325eGhNoqY1fQcUX3bJLnH
z->j#z-07FP9Fq52ZGL=m-Ra0L%J=o`{QMSPkN7K7WgBPqY-W35-n`!R&nHKx=Wg16
z_T&WR2gPSSCW&dL%$wnIZtnZVU-_&r2XIP<rs_mZl=7c>^xjIL)|gtW+ixNc+xFDm
zh?%OM9bI-m`P%BuzWd)d-u%g@BUI@Wc>2+nr4O7wHMui}d-{J(vzl*G^1Cn3;O1AK
zJJofaeuBMavMle*jkdmd+`j70&IQj6dE*X=>adpN-2drWwOVEJB(auEfvBtJBo;(J
zShr!r@g(;Rp|h@T(M~^dr#17Pd6uSEgzyr}Q)kQ%O>#Sz<bRa$8vFhIM{A0V>zLcV
z%rj~KYP{q15zD)eH>-3i&*0?r|Jii^LFObC!J17WAC0&kTzbxSJ;dR~Ruj<|n;N=G
zJa>q-ZfO6&*r<9-=8$TZPUmZb!;+s|6A};YlJ(o!ynCJKzO!!+l=Sx9`ncl#!+G3Q
zQim^WPr7n+*P9zxZpxJ(jknyc?mPX|{@Y6~>;L{`n|kf9=%4m0hV@4;NEWrPmwg{H
z(NFfk+676>{l^b~;{5zOyo8~W>+a2uk@esDuUWq{e=g`K^jp);*0{cY0rRRJclT!T
zzN?eYa_1S&d-ji`*pKnf<C-VayVn*+Wlf!A=#-Yu|7W89a{2e&7n?p>^m2$51qFCs
znss!W?OVY;;;iZ?zU>H7D|x<Ne&;@k?QymOm5=)#ezfp-^d$9&sJmzFldr4GVh?|G
zophzvvQDw3#{H#`?wwuJk9qFl`?KA-nZMy6`-TTcA6*dtcHQLzzs;xa!k=9K)!n~{
zJXAVn^@9&J%cVM7mS16DV7SG|z`zf$&EiuMOTeoJmi9Y#A2JYdd;e3^*?)JymX~>Z
zS@>PEH8XTWT?8fyy6YU#$ZhHRalbdvW+lh7FLDo?&DVIpb_z^iuGQ;xKB1{-qPUl{
zv|n5^yB-f0YusV;2Gas@w^`p3_QkN}$F)^4`?aa&c?L(CCf}0O>i2!OC;nTZr_dai
znKPX@ueL2|5eh%Luxb9=^~G&F6V4xAxv%~A_7BG`x7`b2zyJOB{IBj`PyfrVoAG4X
zl<Ijq9w~WNhyC<@Y_Rziw;9J{6RGIm!fTArD4+h{^mVdH6;JbS|Fv6Lb~7LX0JMDK
zxOLpawag3*!JMEas|*YUxy8Al%6w~RZ2v3=k=p0scYXwI6=mH0SII6Xcf0D%t!}gT
z<@87<Oz|vaOLyCy_PGANY=p~#%-<I_1zs;cZ~49Xw8RIEyT?VWZieNC8(uteFW}-w
z-Pe7qj_mU@cQTrrlgP6!zjjfQ_g0%*!V_hA8$X_vz1rE~yGO)VNXc`_$`r57FQ$F!
z^~)0wxU}Jow!<P*nI=W&5M}3Co2M?F@al&C#93$W7KWeO+c;<U-iO+|*YiBvYM>o0
z@#xW42R(tBSOM{Stk0_aADn1dFCe4%LgZ7XhW&=acdLEgd{v*a^m|<Wv0p`g@?Soj
z6*wL7%Rpw=Ve<lYz8e-TEytHlJZQh~U;9$gz`nVKzm%Ef)0ztJx~?#<D~X$7pY#4n
z^c+_c;Vjiwu}^iKO~<)IGK)B)x8Bt>Ir_;&X~k-%pL6#M3iW8q%(yjqisqu354Pos
zbC;Yp>ontLu-jCev2l8~&_(H*l{MEN2>p}DUm<1v;@`}~TgMk2T+Ux{t)5L?-Y@mT
zw8E%8;R{`r>gG828t!R$#=_NW>fP7ns&Y2<Zl=Lci{G1GBv#g^C%Pr7HExhg2};Q3
z`hKeCq4Z+=cXLxsIsfzc9(Let*`vL=&){ypvzFr;#^|M=9D+)hv8jIgI^*JU^)Jk^
z$s2_aZWLJe{-K)c?5m|R>@~SDg|Z2gING*8*#GWjE9?IKd7d7@FBUKxBs)57ygotI
zC6Kk{xP#n`SAQ<1xs@=@ZAh=SEwNUQNLra@#>2$dZ#?J18mS8=CbFv<x!)f+c>RFw
z!uk#G^tS9tw0ZZ8Il=pPRQAb3dzZapE%{>h`b$-%qI`yzX{-9I{u}Oc?AhG+4OgZv
zy!tez$3v`rdO2(Dfnw&K6Cyus^)FPmA3yH1Bt&#8gN?wR<L8gBc<tZvYFEWHp1sr0
z@1K2sy6uOD5rSep+c{gkBZ?)r#vYn=`o(p<z_U+Ry%o9|GvPv!raN=m%L2V;3?WJ0
zAO8hSJ%9XU|C>O&`PUyjpOM`bcDQ6ymmrVD<(?(QpDSWM`+A*zz;}%Gxn;$?+-0(t
zd(}OATACau7#6K^Sji*!zE4JE*SzM`?UEN~KHQsQIAK%VbKN~>_uCx#!Ex}0$u$47
zBB^Pu*Ee#_tem>g=}8jH++R0pe9PCg&e|2LeRG}9wrthgQx~~y@+x1`nq{S|vSezX
zh_z?bNuLE5M5evCej%iBnHo=Y<)NhP!(sC_T$)nG>noa(wP?jub**n!Sx-B)d^16c
zW*zf+_vdihxm{No&-Z^yUu)rT=BqGjmTnF8j9?UHV0c%Kl%)%bQbTT@?$UJ?XnnZT
zUr~djX-47M6FbkzbQTMS2<&P6_3u?zDhr?4mG9-@*R5Qy+xdP!9{>Nt@qGLLU!VK$
z|NHCV^Z9i@PMX{Q{d8D-|KCq{{rA`XzM8-P@4u7n^XvXK)@aDr{CT?m{`=*1A3loj
z|NG-;d41jY_m=W=|1J64SYKf`h5xH_^9QX?{-be!7uWw;`0umT|1z1sx1Y>Ue*L-N
zPW<5l8H+NR=l{>`lb=@~H~(b&FaE9rrT6PU)GIu<Kf3?df2P1mZ$ukccQW7Pcwi>9
z;uve(Vg}2#a+kux-YsBJ+G6h_=~7YO@k;d4cAw&R4u70qe_T{+|J-GBz2yJj?NO7S
zybWIKzjoU8IBf;{wK<-zw`~d4&E7lBxhm@7q_AyUN~5o>0!c2gK$a{+le9sWtV5Hm
zj=DMNT5jg*sB2Za?T@xBQeB&q`Fh)$P~H5!VGgBW$+O#Q@6~4>{x#jM=D*Ru$F~2C
z+J6L<ulT>I?VJAn3;!QlAO11j=uG{}!@u=&BmQ4%e;<EtmDPWv_D}ln|IgbLuJUu%
zk~z%lD>uJ#X59MIgZcA>dm=`&ywWb8xLvYomgBxOv!^EdnrD?ja_<%QYNnV>J+o}$
z_LnK9%{6CpUS-Aw&2r89Jdy1hhTJW<+&<^3;1d~IGkulwFQ3d}`#J08m&<#Wm~>xx
zrp!B~IAeJ$U)0Mbz5BLYc4hzjBIo!*ech6aUiP<c6`@N#hf7tVOWk*lk9x6aYTcHt
zZ!h?9%Wk>kDP5bnyqmA;UiQ%sW?|{g3MbfHFYvY{NXr~FXK~8$Xt`4$_^!=q1uuW%
zbgOCmHaiNWG%LMebKbz)_duFS(M-iDZwE)Yv*MMu_6^?5_U7~Ps}S~nnj^q+a{<S$
zg916t%0Jp1I(R!LNb4QC8^E#kq2ilM-Ak*?IGS<-SneipY&$4e<E(I`&E>$QI);bV
zVmpp;?KjlROn<YXhxuCJA+voO`nmf)HmA>*|Ix>~ZsVc+p4z%&e5WlEWYu#XbN}A)
zK*GM_+tJ4N5f7xa{~Ws^j-fGL4z95hL*rfM`x_6KhW+T>_<r8T!$y1&$2s3CC$S$i
z=WxmiXt|TXQQoY4rOly2y5Odjv|dw=2Fu+K0%a@ZS?()vY;+VXYF50%+ZQ0s^f33p
zrE;?vmYV?_yFfm);MnIVkkqX7gw1(}w9G;?mP5%87AHK<*}<`Cp+L!D=Nn5a1!|fV
zj<C6&;B6}~w{XhkXxYx_{S-;TcZDBpjvc&R6Qp?_<`uNu65z;Zp7v_rT=|G&Os^vn
zrKR5_w<pUK^a<~K%zb^w1M_3K8*e^mpSJOURoIPVY`<?jlwhCpxaIwiL#BE^dN-a=
zkC(xvao>#E$^=R7HOZ~HIUD+A`w9<O`u*tBk9pj5U*dPsx4X=z?ekD&E93>OIkq|q
z++&ORG>^AUL0ZPqoTVw(gXMmKV3M=q6Hq$&t8j(Qu|j&omUC>*6L|X;NHZNYQ)$ZI
z!Lf0nKoKYe3I(#7754B({KBQ65~RR}%}$^Wmx}LDJ3^2Z9NITm-r^Y3^N5GmW;>4Y
z?Kjk0kv?ZbkN%p+O}T#_+<ea7xAA~w*pEKmbsG=o_tcgh<2?Q2kd@wzWBl`K3m-^u
z&q;25f8&9a^`B!mo+E3Vj;65?S>yKuhGG`Sx$bW~Xj=B8cccD!i-)x?ZxmjzId0(X
zdLYfCXlCJ*$I-G|Q84SUYlU<{^1GXmgmhPdW1FL3O|#+=Hun>}jRoc^PPsckQGE@h
zAXA0~r-FT(K`G6KW0#{qPP5VvHs=oBz6sJy5A!@)ZWRd1G0S&bq=UlwJ2qGR*d2PB
zpSA8w?&*cyV!tll`sOUHyXCSMdv3`kzj&(`ize5Ze18d%>cb*+6C!mEi_}ku)V_AJ
zsEp-P`EI>fGIw9e1y}XI8SlEC#dW_d-Wm&*5?%M}`X6o$nGaSEzqVdyT`%vupLsoN
zoc12GinkxE9+Vz>&ApyGu2}x>xyI{E>qX<F_mox0A{3v-DyqF-{<NJ)1gga^Zr8Qz
zMZIv(zRj1r<$|BK?3Rn3*0nEx>OXzyc!Ia7z+A&A*Pvzl!T-E<|I}{v<*KwLYIJOK
z>00FT?fwnMZpoM*@g^IXttb3jSU=(ahq{7)4}UxUJ^bgvzr+6)w66Ve@OS&4gWvg|
zvw!CQ+WfaYKJ&LlrS04|sl{v>O|frM;=d)D@4nGrdsBY*&BJwXQa@M4ZD^nSCiU|4
zgL-9~^nY)d9sB0^zBm1M-z3_9+w}5xlkJ-n{n`73-z2I3-o(HA=Fz%0r~lnJEB7r~
zfA&7kZyP4>&H1Hu<EY=aRQa;a-G6UP|GROv?VICqX0_6964k43ez}_<Zhdol?Txc~
z-;(3M9nbr=L4LMf-F_pb20@{S#v^<S8$|R9TG+fQ4v5+<Xl0zYp<$`y0S?YJ4llW}
zNU4K$UD9u13fgf%P)g$=WB88-F}8|BOw+;`lvOq`EfscR)Qow+!8_$cgLaJrH?vJ5
zqjx?;N*arlHQ2zz^8~TT#Y417Vv*X<;O3FQ>gCVDx}=~{*(Bf)^STd=x;!6RSas$?
zq_nX(F%M#(Ii}Q<G!_FVChdS*iXsyZvG!eX;N;(Nh<%H}0b#KXCd?9wjiMU0Sfsu{
zbp2`#aNrWRaAH=qdB7!q;Shs=#DPm(2`wyP3rd_c6k54u7B&jW6}0kaBsQq)B)sH>
zNI7FlWwL{uQNXEyO&d2@n+X<eFU28I#)&1$guzmotpN;6Ez#Wwambf84Cgmo5@zg~
zaDZz{8I}+}3kl(PEK;@*U3FN(Y6}xM80QLbc|2rt&sfmH9`lenO5y=0cSIE=gzsXJ
zx&<~cro0P_+%JfUXR%4Kg2FMN3R^Hj;w%b_6H6fO*o!H(U<)L_TpAqt<@EZ2&M)^k
zz=?4Smc*FJ1`hjQ*utI@tm_M?Xwi5o{ndT*-rEr(haGrwQ@uB=vzzuiKj$NZk*(n7
zPPJFr3ayM@I~=&Vdp<CDe`e5T`M~1!orAL_;DEZxghLFfF$-E*-6|TEmNtkoRWL1m
zk437sL6m93l-^y>vB(uev=z3nIB7f(mhwn!5YoGFh)LPzz@=)4)O|rAj)e{W8OZMV
z4spk4EC#-ZNWI38Vpv+sx50_Qf5Ddi2@V{rHBQW$JOPJTqaqSo*dwIaBNQ9d1FYOV
z6k3?<7B-5oX*^`o)iF54tn(M5>x-OXqX5^B7PcUX1ufiLHXPvK-(bQIHn0SXfl&|x
zfAwM7b&EYhk-_`s3R^6e&1GIAa6nk2S6M~CiE;h~2QKC*1&v~25)T=t-GfN|#bV+v
zh-I^|7+4FDio%rAm<tX2S}b92ae#}_rty-c6O*FI2TtB41`eF!8HtU8atSZXA<=>@
z4OBv;s<9Yo1u?K3i<I2~F2;ycZhMQd$XP<PSwP+Kguf2SCAJVrY)KB9b}F$L33Y!d
zhE&6)YDiQMjs)^IdS3CA5GT#2!BL*6Q-aoAI;FMP=IA5KQ(6mcjy|*S(pos>ljhnb
zMqZlXnW<9)=Oul%g-E^ESlJSEYWbE)r!<zvES(zaR@rs7dP=BMW!KqCOaq^lL!?SE
zq*|ZZx<{%`S$^Y=yQk`uAiJegL)<i<YOP&kbSgNfZ}A$TQ^7g&7B3O<(wu+EOKb6z
zqN!nFl20|w>LI#n`X_m5EUod<UfC0LDl{rGb;|M^b0AWCuo$=wVqhH>sdr$hj6N*E
z@r+Kv@$YYVDZ6^v0Rs`&?<*gf3rx^CJ?(eC4v%rW%5CPR-PPWIPbkiM`=DFFd6Lbd
zoy{Vin@%eEcFAlysp{J%^Qq$*kCDnr<yrm{lswHMmv~NeHru)6<OFBAi+h@QJU?|j
zlV0L6$yY2h=*a|My-cGg6WmS0Cn$Q#U9@rRQn{HjQO%X_=95Wk&U}?FpZUNh#bcOs
z$FWW2Vh(#ai{_-1$*!|REK??X&*HIsB6wE)!~~W8jB^UElX5nBOjc^oDe|1G*lx4v
zC!6G?CxU0SJtnHm*15FggyQU&ODQK5`!nW2e9?sA3-J_>N$w`^(M|evcaIXpAACV7
zC)K)5G>cBCO*fG&I-xwv7;L#6ra!pA{>aDhM~q{eN~OzZOmA3&O{&8%shC}IlFMe<
zH5?dr`-8)94u+1;ykNV-G3>Sh+g;3x5rq0+yYHcybTNnBm_mQoeu{=iZ80l2K7>)z
z!s?y&tCJ@F{`uFrmF=k8`|fx9+x6}2L4J+D`T6BLzmWO&b2k3H-t~2Q>Yw@=yOUzO
z>(}0>*=PU#U(M^kU)fQINv+o2YW>B;z%YfMfkBu7GV>8{Q4pV;S(IFwSpwQLdNnLJ
z`?i6=zjyJ4De+d*1WvzOa3S@=5`FEGSkG@OQ(2A%CK*R_ZSvtf_P<s=y6>@0?yCzI
zz8&D0``+^Y+<DeJZ*ScdE5UNfn~Bv}@nPS|j-q3tf0h)V6X}_D=kwABN}Uh83e{FR
zZRV?(+;L7YH!?g(rTYq#L-=z~5#2`hi!CQD%3nx64>sejSip4fVv)xJ_WAo330PdM
zUVg{==sn%<dhY@Y&x&`Ray+svmu0He@++28&*_%tEw$DwJ>Gg)vAa1U@ZCnkW&9VM
z&&o7cd$cd<{rKQ<TD{4i7#EWV-*2ti)U@TD0`rzw$$l3l+ijf=vz6xEyqN0o{PDyu
zb^78tHbJ|V+&`IKv;FAd>89eYlDE`KH}6{dnA>jeyvWcKt2}tGHAkFY7W+SJrfXWJ
zUrC&A+|AjgGYkALbMQQ^)0K$dxQ2P*g5a2>c#qIkrJg2#Z#WdxroCc(*B&wT%Eq_b
zSa<T&2v+F$alW3j#c@BwA-_##cP?;pFDzaB_te#e+ix+Hhy1*7>imN4-|`3V@P7=v
zV8wkg+}<a`d-@i)?d|@iZH!+^bl5d^PgU3c*dRJh>$$8<@3g=pQ)1$R_$|M`bt!(Q
z>GrM4Y~MN6)@Uii9UL>4r#!g0K}K@<0>*;VR~ApGH|6f-$vAT$La;VO+mlyv;g3^4
zX89ja=l*hKdW5`uP}5fRZIc&j-EQs9viKf(XM%(3|A%j^^ls1U+-y9#ZmOrF{`1tC
zUlvQ9s}*a1ylIl}ozq5z<!MF{=Z_rqxidZ0r~{-;hVPe`Sz)xX;p&-XZTmLN-G9#U
zXZAZ4<=KB!)xN3iQJ3%e{*29R)4}TC#<agqb`kq${O47c{+pzAVa@py)o(Y~=)RlS
zo4w@v?aKZq;->u56)c)t_xF?vH|aESTb!B6Al3FrP|W9$O8>hFd#j%>K6~@py}O&I
z&-q)uvTMcut<%3f*|yn!`|1w1=$(7jug_64{@Xe6-@6r8zDV8hb^PQel4EtQJb3yZ
z!P41%Pw!4CH+eT<ivG1ToBlDPW|f&Iu0EK;!oV<#mw|y7mQ}!Wr0J>oTf?&RZyAXE
zoflttbotii2^M?Ij;ZaM#+MnuvSyZv?+F%X9ad?}zA&@5``_PEjAgnim$5lyYIV)K
zo&7P^E3YRWx-yMR%_Qfgn*s01xR!~NoR)DqB_3fdo>2bTVf*eGjWLH^PHyGCeyUZ_
zSCoHeOSP1-U=bJdGLgq!hq?~^{-SLoeI%$*>xthno0U%Xcb9as357IP>??mL@pfX&
zN7Hoe1xc)m?@sIbUx@K$EpIwn!g<=(Cs_92UT))EOS(4qx)g2;(G0ED7F%$mjNA4@
zq;A8y%}LUWUT`&XuKz8|ulRh{+KuzJ2dT{B`pbFD+jOF#_k=IJf3)`Ws_<X@^X$7;
z-O^VF=IdQrJz@Vt^Qx)G?tie}>$UvTUvs|qFDD%hkX(LSHTaq5+nn5(0}t4?6&-za
zzjaQ)o5EC$vX$$S|9<GpUnKG0BxK#ADT+nsh4=MH{<#0}bFi!|*E-AI<w4$8#b?jZ
z{a`uc+qS!DrsoTmt-Q2=hh1Y*zz&gF6;E&cozZ?qts!uCT3Xis3d?hzk1ka2nsK^j
z!>)$Sr;WWf&d{njaNWVM@?cos<$8xh)oNx|PG=WXb_Q342|nNPMA&Y+RCD>JB}ZSj
zv|N(OKdTU8<eA0EZ94r>VcPGv(=xZpUl8DS>1;}{{onhPCuvvYlawX4+ScEy{vDNm
zzqH?H@+F?9feUoX=R~W%UYX|OKK0J&T~Gc^-&y|GKeem<;r^bBk^Z6|91{A{EyQQd
z%w#a@FzJh$kn!tA(;emI%KsxCpWOD(>C=95(|fa4-C5xI=H@}4PuoL}oZ)?VX0a=q
zg1$oDYTnl1t}kyAX4wda^{75Ls9o{p(EZ+L|96I6nPQtUx%P5y;-^@a8k5@dxpF>9
ze%(v2K6=}#*~g-n$+G4dYnuI!o$q(PUGVwQC-t?Ll`Pi=E)u--PNYJ=C`>qVT8g>B
z@|?qg#*;-ecgmf-G;89Syr*RoZt6#|-#)@^wQm0HvuD)aHs5vH{qXOVY-#DQw%OL(
zOWGOQ)+Pq2HEPQXI6St@yV|_YaazX%`_HpQ%Je&L9`C;D%rjpm#_6TszeA-gR*yJa
zzSYLD{%UaBZ?HWhh_`Y2dFN+~Z?vrv&ET9E@@KWktYg=%zx=HxQgM9Yo7IZ-oKM2-
z-lQ}&h=g(kFP(9rpCjn3&Z60WKdqd*u_yjpm;W2_OM17|ZI*02DW`nn_MN*1nfsUB
znLBC2vx=7UeAB~U`n-QuewkISB&MvzmVX!f7W+ANi|PdTzV$bnVzX%Rzqdcq@&fOl
zzGWez{Vid2WbxDtiPYntX2!oyx$gCL>;2YJspC6u?kwOd3V;0i=!<uC7W-mjz8=5s
zCVtp<t#t9hy0uXPTOU6aUL5LD+kHzbU4B{f(E^+E)=oK7Te)k^-cPS`%Q?>zlO=Vi
zj&1rbw@vGw{>WT-M64=qu11uGNxa*Yu$Wul`@j8l3OlSb`N4%xk9{uasR~UIR_yI=
zx^QS(tUw)~1Q%D!>WhYq)*(0QtCa*Cwu?M;Sx_kQ&}Cs{UxCtvLmW3X?$nqh%U1mS
zaWcf1)q7@_XlV7Gji>tGv+6yzmfN>?=AE+wAKyB?L96L6NL<)s&&I&uEy2LR#{jMA
zi}FkIi$E(Kjz;+A-*OPx`#ap{DmP0^g!2_Gy|q5VT1y-RJgYkeiVmn~&o<raJDcO<
zee2C}^{Q$rzKe=FrlmeRd)xf+%wB2Uzf<j_7BeQ>e`1#4J;#1anq|WR=GueGdDTV}
zRM*+M=gXV*H190VW%(wPm0&15;iSCW-2+E^g>PP-D7#~pSdrtu=P@B`R&g5JFIj*8
z&xCzh+Je3M>RbB?{;lzm_!;9O8WnCmJK+r9iCuhKoFrmQUvH4w{8r9h`K$4~r`P@d
z-a7xu+UGCd{KwaQ&tKP_bKb#zZTruXz|tEg{r8S*?Amzsz~iJlAszELm&aI$Mui1l
z>D^MSUfLmUYUa2?*wEd;cQ;3lpq|CEixcx^ORTcI8DuB(E;cN{K=$Z5vk8A#&cy1i
zd2s34#oYPbfd!UVF6Pen)_#8})oRyLJ=e-9YF5F&Hk{_XV)Z592FK2uCQCQuM6++r
zd2}i3n$EUXUYYgba`SIa+<TI>JaDJ(lPjBbSX?``!-Dtkn5p+R`=QI#wnl|g5A#<6
zpMFo{P+r4gv9q`7YmK?Kw_1wu^e!Kb+!-#Z$Cx9%S&phbGggS?6WSZcc(Fohk=VLs
zR;gG&t551KiKWTbj5l@G{n<L>_CeV)R>S9l-(6Q^u5P@-*ZIa*u`|>s(a&sI(2ssA
zO{tS7jiN%LK2E$^I9ax&K5<!Zk?2B`vby5^0c%1uI=|M;?Gc(Awe(K>GWXX<OMl60
z@8{ULoL}_(-8z=yoHw;br*>U<7q)#NyHPmv<7@vIeqCnXki@WSZGiuVbUzNpyJ{vz
zt-<%>Pdcip&s^koH>vxv&#Mc^TIIMe_<W1nF=5K)wa!M~%;qO!`=k2<r{ACGqQShF
z-}j=x^G)f>t)FLvss0T$nmDIq)>GF-UCW;wp7cO|@`JTH6>cGg>P#C8c1x_7@2$bn
zDE*#u(lgl^OCKFQF6v~j!X)Wx`*)%0%#{~)IB(i?^xLkS8nkFH(@fiiw>>l37>gEO
zG``&NH~WQq*0QNjoI2JBMY(dhs~i+m5`Cn<e%`@`R}uAh`5pQG+>ePlJXQDEg_jLS
zo8N!qQnBUud8e{_1OK~tFT2YBQgN)u|9oE%ovgrr_whV;p2gDa>n7eh#Q)^i`QG=I
z2{JtvUj@=HglfK3S(UGz_U_uTK7ooBy@##xC%dJe+<Eg=cj=>#a?j-=&R&`~*;PO8
z(LJs7U$5)7{99C1w>`!xu;BXU^oqXo^H+&1|Ni)k2wVDb_2m&#@sHTf)-wKMDoRRX
zlgiE1^G@@8^x?%j4yH}Zujp0?xEW=}xcD8o*mvse&d~TPYkRC0E@S*6UeJF|JnU#~
z1ABSFvUd+YDVs0z-#J&pWv7JGa_2Wv8aJQLd9>orGR4e_r3Wvz@ciPo@{IhdT5~!3
zRo$+42c3%)ZmKG*a5wuP)b^X>MAzTvKUM|jPP#cYTw|u%WN|0$8A@f>_B?F8Vyt2L
z&3m!V`nZ}dnUK$peUG9lSGyVR+Q~h!kG-+j_y6lXt`fSOllazuym|Cy#VzZVlO~xQ
zIkd&{)Z8auFY5WPwqK{^FQi|p<}VfSd(Qr7<ymtppPsaRuG4<v6u)!bQ_BYF{nz-;
z{CS$S)@n}8N|O!w|1IXRCyH1ka!gcqdiC<KVpDk4yjok|Dvz((pGuxC?}@C)G>|#w
ze~<4T^XuOqo-BGM^m)stSSwTB%%7${$Gy4~?;o4<U*h|+zYke=F4J|a44Sa7!=!gs
z%|zpqp8pnxD2Lp>a`KLiuTh}P?!%8)UUfO{_bKc|&6!C{r}5~9u3Vis*K|I6vV_m0
zU+X-+O|)p<Jpb>*@0r)7<W4tyXWPW(GlO5j)nWSWroEoGlUjc(WrP&n%z5zZ&P>-(
zgZHJ^<~?7W-uY7H-IjITUxNzy1;X5Y_bC*K?t2tJ_n_d4+Rk4~oUg?=X}&1ix$=UV
zqU_FhWlXJ_4~(|l^Sz`Z?7a7<*7ks4$+i0wqQ1WL=?z-tc4(`{-g8FJ{<eBW7i|=%
zd3GRQZe4DF`zOV}A09Tl9bKx`$@f5iy+Fae(ELiX?`<Nb@sn$c^lOZ6Ke`flOzP-S
zKf|-4Z`d|%C_Qm_;$idq&byvZd|VOBf7?s4^T>(4+B2Tqj@@g~Y_xoHLfPTx9~$)U
zc3zpaBt)D^>vxW{eh^pc7QV1~!A*xw1%&ARV?u2yPdL7}bQe1V!!8BLdP2~0x_HnD
zZ;-m?YGh>oWe0(}@9QOwc;A+(Fn8~tuxQD2t*uM5xSX5<pQ`0;d~@qyS>vfw_33GQ
zcdvQ9#FM%5Ktsg(^nI4)X>ayavu~}hj^wD6`}^Tg^^Vd*h9$c%e10UH&gA)ONgz+B
zdD&Xi6LVW$p1hv8RC<@ay6ldgJqC9dd{rw^?EbxntIYPlx#WgS_5fD(5AU4IdF=Oo
zkzR5?X5}K&PmeBMSNtUV*X!}|joguG;f((`Wr{wzbS(A!Jf~^hr&=niI}Tj#yVlxJ
zusNAE?!~<C#Xr^`u9^SvU+J5clXJzZR&u9%OrF`o((V;==UDr_{?B!-j>nzO%T_Z6
z-Q{k5e{p?zpw2b>{jQDNHLovi?khaqep$e1Tl<^oKNNQMU6Ps|#juRy`A6}WoZ*7^
z&TYMX|CFw6%^a3{Cp_ooEL%5M^Jbk$U*MjteFDl)96X}gEm(6E7R8-fkSE3;@s4+<
ztw?~cOo_{z4zmS0!8-$3n~t<DihuL6vQ94Jzn86G*0Nc*L#6-wu+7;tK~8l>-rpC7
zGS(j_Galzyw|Jw9=2DfFyPQ5fpRhzh%{-}0^E`*Z6rNqnH!r9)JYLHD(295Gj5*q$
z*e0#l{n(`8d#y3|t3_1O^|yUjUoX6W?451@+>c?$Uf;ewRc^i0=DhCz(O<>FySK$`
ziB8%Woxj3$^GY%6q=OOv<kx>@TemF2rRP_|`@O0wD^n$0Iq!z-Vh`NZs9nF~X5$g=
z&u1IOSNYbSxcK(TjGZrU+!C6hw5Y^Ap=3E%Ve+lWj*Al{d=gAl*s4X@CQHO57<3+t
zZ#}5$=A2N_d9gy&ZF9rL7|zAIhO?MJgm&T<E{U~Mb27zqGS@!{ZapY^%xmLay(4AS
zOJ#0rKDp7?xv^y3d$FS0>qi8Rp8S~PA;2+1RH3s`vLW!kK(OZ$o6zi4g{ME6^4OWR
zzh`itxZsHA^6V#VY`gbviBU3RdB3Nr@c4t<wNnr6J}>%gk@y4wi|$383(i-!9aHII
zSv;{rdPPUtJO(zif(f}FB<@=(mpf0s;e1ekLY9wPu}Ed3;JMU2$r3B~{F>Cez|wcS
zS#K$K;53nYMmKJGbDTHXc(5bgTl(;{X}(+1oX+wF^eQb8n!liQgP3bp-HaEWOfoN~
zE}6JJ=Gv`Ed$%o?p4ofng6Sj=`RcHmP2K(>;zt!{2mihz;T&P};^U(Q>d!S=A6%a?
z>${2G@9dbg2dl*5HaS@oiUt~S&1BGsa&UjKK2i0Uj<j3ax0O74{8OKDZR`lP_A7oZ
zu<`na%|gFdFDagEn=ZP3il@@&wcP9%59_|``MQSxRH4zLl*YhQ4D60A7d3J$MbZ{+
z5aNpGYn`nTv*?UI+p}mjQ5H#`P~q%0?M=^0BDOB5@hob4(suUdyVFnZs62P^Ybq^X
z%b7YOOXY`|->N{9$wlH9&!7Di(v`B7`}`Th<|Ujy%v}HUg$g_kPH(Q4$?#Gs-}A!G
z`4>}Cp3rC3BfWDfCj1WF<9zGZ;h2huX9sN9UmssqfBm~t#P99XQy*@ZFu8U-+##{}
z*eYHg*##@)Hm|w7yZ7Mb!_Bjg`5!;W!CSk3b0(v$?Z1*Tw&(Kv{pS|kzI%T4YVlTq
zyNw^;vfFd-&GusZDEh9EYt3}Kw~jtCueyb{ahrde&}6mrxA(m}&(v=g3!iSfY+bSJ
zw4HJ+1K0bhx8!=7diLDe6}gPR;L;9_Wo~9?emE>r`MK-y1J&wg#c5fS7cxx}y!di%
zYj<S)nJM?C^qkIklRxz<^TGuVC*G{Q<e$0SVT0GphhB?HFJ4tYT++YFy`Fbnflo>7
zo&T)64jgQGbh)Xeo@xEY(+elA{J4J#f6Jaf-=-{RWIXcDR;*!b&DtpDB}>0tTUt|a
zclW=F(&CyeoF%1>%MIK(9qQTUoxW+k_g2UpE8*ppx?dk1J)^$YJ4?xGr}vphi+`(l
z3B5NfU^L%nzssOYPOX2_kFNP5=jO)S-&JT(>D|cb^s0^1ceS{9$KFC2i|^*E_T|<c
z*lb_mp2@dg{rx)SofjRC&p!I~QBxL67R%=~7JDt${77k;b-Y;E@37(1R;fAh5B9yB
zEBz+uS=?;CQ{6f2)77M-r>%{jaE#Y1tCscso8nhy`m5qDEKF?BO|a3(xEM2UWBi00
zMiQZlmK{ty4^+R&1%xj<{%F$V##4f+F}_AgJMO61cE*~|Ie5aWhh0?lBIljS8WOt`
zWqQ4P_8hsfKJv<g`=^+8-_OnWTB2QU6aLvPvUur%1fj<TiYEFSO;1;8H+w#>ycCtX
zR{PX>tJ9zI1)BZCkDI&4uhX=-(*8A4&F4?2vrpL3%^m)orh@G@6L&iVH?t-zdd>49
z_}onuCHcE=w2ohV>zdVe<ygX^%S(O)EBeYlm4D+fr_<bZZTzINe;+@;JbKc1e|e$C
zpMVJqi?_Vt)b^S1CwJnW<klo>pLxCME2deV6_LN>^7wbece6jbPu4H|`<r7Ur+mY^
z1pX&>CDXPnd2~JE=B%9NZJb%>zaRa1dGWOK6Mk8AOgJUcbN}QmrAJSTt7=R4Cg`!w
z<y~^i-K6N}rd6L}u0LN@v^4wTaT6ncNB$L7=1)GzRVj<tRh(QbT+#W${A<-*A@%kB
zo9`d&%?xP0`=e-k1FNS>v+JRapYP6)oF%zwb-lvGn5zv}N}KB%e2bRJb)Bl$x*&0O
zch<H?n!6sE2Y53w*)xmaJlL553=|rcG=dnAW1f-qfcE#G9{>wd$-n^8!^48@I9O!;
zptbtwM;#*cCvoCD_z>9;1uXmb5Qbb*0vQ6^&4;WH<aqSWNeF$qYH)o8MfvFZ(05oM
z^exbY>4WdLK-LWMG5YQVgyw}>kbXR<2am1`eE~E=SBV}}S3yxKx-Rtj0EDjD&JbN_
zvjgY`ppTLw3^?WnH2^kdimnxXgaV<p)f=i6K3;*Y7rn`e(EA|}su$4!4e(|K9YfB*
Q!@$FEoQZ+qdL&3W02M`x?EnA(

literal 0
HcmV?d00001

diff --git a/contrib/mobile/Android/res/raw/pmsm_8p_circuit_pro b/contrib/mobile/Android/res/raw/pmsm_8p_circuit_pro
deleted file mode 100644
index 37e1ac3756..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_8p_circuit_pro
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// Circuit for Permanent Magnet Synchronous Generator - cbmag
-//
-
-Group{
-  // Dummy numbers for circuit definition
-  R1 = #55551 ;
-  R2 = #55552 ;
-  R3 = #55553 ;
-
-  Input1 = #10001 ;
-  Input2 = #10002 ;
-  Input3 = #10003 ;
-  Input4 = #10004 ;
-
-  Resistance_Cir  = Region[{R1, R2, R3}];
-  DomainZ_Cir = Region[ {Resistance_Cir} ];
-
-  DomainSource_Cir = Region[ {} ] ;
-  If(Flag_SrcType_Stator>1)
-    DomainSource_Cir += Region[ {Input1, Input2, Input3} ] ;
-  EndIf
-
-  DomainZt_Cir    = Region[ {DomainZ_Cir, DomainSource_Cir} ];
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Function {
-  // Open circuit - load - short circuit
-  DefineConstant[ ZR = {200,
-      Choices{1e-8, 200, 1e8}, Label "Load resistance",  Path "Input/", Highlight "AliceBlue"} ];
-  Resistance[#{R1, R2, R3}]  = ZR ;
-}
-
-// --------------------------------------------------------------------------
-
-Constraint {
-
-  If (SymmetryFactor<8)
-    If(Flag_SrcType_Stator==0)
-      { Name ElectricalCircuit ; Type Network ;
-        Case Circuit1 {
-          { Region Stator_Ind_Ap ; Branch {100,102} ; }
-          { Region Stator_Ind_Am ; Branch {103,102} ; }
-          { Region R1            ; Branch {103,100} ; }
-        }
-        Case Circuit2 {
-          { Region Stator_Ind_Bp ; Branch {200,202} ; }
-          { Region Stator_Ind_Bm ; Branch {203,202} ; }
-          { Region R2            ; Branch {203,200} ; }
-        }
-        Case Circuit3 {
-          { Region Stator_Ind_Cp ; Branch {300,302} ; }
-          { Region Stator_Ind_Cm ; Branch {303,302} ; }
-          { Region R3            ; Branch {303,300} ; }
-        }
-      }
-    EndIf
-    If (Flag_SrcType_Stator==2)
-      { Name ElectricalCircuit ; Type Network ;
-        Case Circuit1 {
-          { Region Input1        ; Branch {100,101} ; }
-          { Region Stator_Ind_Ap ; Branch {101,102} ; }
-          { Region Stator_Ind_Am ; Branch {103,102} ; }
-          { Region R1            ; Branch {103,100} ; }
-        }
-        Case Circuit2 {
-          { Region Input2        ; Branch {200,201} ; }
-          { Region Stator_Ind_Bp ; Branch {201,202} ; }
-          { Region Stator_Ind_Bm ; Branch {203,202} ; }
-          { Region R2            ; Branch {203,200} ; }
-        }
-        Case Circuit3 {
-          { Region Input3        ; Branch {300,301} ; }
-          { Region Stator_Ind_Cp ; Branch {301,302} ; }
-          { Region Stator_Ind_Cm ; Branch {303,302} ; }
-          { Region R3            ; Branch {303,300} ; }
-        }
-      }
-    EndIf
-  EndIf
-
-  If(SymmetryFactor==8)
-    If(Flag_SrcType_Stator==0) // Only one physical region in geo allow per branch
-      { Name ElectricalCircuit ; Type Network ;
-        Case Circuit1 {
-          { Region PhaseA        ; Branch {100,102} ; }
-          { Region R1            ; Branch {102,100} ; }
-        }
-        Case Circuit2 {
-          { Region PhaseB        ; Branch {200,202} ; }
-          { Region R2            ; Branch {202,200} ; }
-        }
-        Case Circuit3 {
-          { Region PhaseC        ; Branch {300,302} ; }
-          { Region R3            ; Branch {302,300} ; }
-        }
-      }
-    EndIf
-    If(Flag_SrcType_Stator==2) // Only one physical region in geo allow per branch
-      { Name ElectricalCircuit ; Type Network ;
-        Case Circuit1 {
-          { Region Input1        ; Branch {100,101} ; }
-          { Region PhaseA        ; Branch {101,102} ; }
-          { Region R1            ; Branch {102,100} ; }
-        }
-        Case Circuit2 {
-          { Region Input2        ; Branch {200,201} ; }
-          { Region PhaseB        ; Branch {201,202} ; }
-          { Region R2            ; Branch {202,200} ; }
-        }
-        Case Circuit3 {
-          { Region Input3        ; Branch {300,301} ; }
-          { Region PhaseC        ; Branch {302,301} ; }
-          { Region R3            ; Branch {302,300} ; }
-        }
-      }
-    EndIf
-  EndIf
-}
-
diff --git a/contrib/mobile/Android/res/raw/pmsm_data_geo b/contrib/mobile/Android/res/raw/pmsm_data_geo
deleted file mode 100644
index c2760986cf..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_data_geo
+++ /dev/null
@@ -1,104 +0,0 @@
-// Permanent magnet synchronous machine
-// Example of Prof. Dr. Mauricio Valencia Ferreira da Luz (Florianopolis, August 23, 2010)
-
-// Modified and customised for Onelab by Ruth V. Sabariego (February, 2013)
-
-mm = 1e-3 ;
-deg2rad = Pi/180 ;
-
-DefineConstant[ NbrPoles = { 1, Choices {1="1",
-                                         2="2",
-                                         4="4",
-                                         8="8"},
-                             Label "Number of poles in FE model",
-                             Path "Input/1", Highlight "Blue", Visible 1} ] ;
-
-DefineConstant[ InitialRotorAngle_deg = {7.5, Label "Start rotor angle", Path "Input/20", Highlight "AliceBlue"} ];
-
-//--------------------------------------------------------------------------------
-
-InitialRotorAngle = InitialRotorAngle_deg*deg2rad ; // initial rotor angle, 0 if aligned
-
-AxialLength = 35*mm ;
-
-//------------------------------------------------
-//------------------------------------------------
-NbrPolesTot = 8 ; // number of poles in complete cross-section
-
-SymmetryFactor = NbrPolesTot/NbrPoles ;
-Flag_Symmetry = (SymmetryFactor==1)?0:1 ;
-
-NbrSectTot = NbrPolesTot ; // number of "rotor teeth"
-NbrSect = NbrSectTot*NbrPoles/NbrPolesTot ; // number of "rotor teeth" in FE model
-//--------------------------------------------------------------------------------
-
-//------------------------------------------------
-// Stator
-//------------------------------------------------
-NbrSectTotStator  = 24; // number of stator teeth
-NbrSectStator   = NbrSectTotStator*NbrPoles/NbrPolesTot; // number of stator teeth in FE model
-//--------------------------------------------------------------------------------
-
-lm = 2.352*mm ; // magnet height
-Th_magnet = 32.67 *deg2rad ;  // angle in degrees 0 < Th_magnet < 45
-
-//--------------------------------------------------------------------------------
-
-rRext = 25.6*mm;
-rR1 = 10.5*mm;
-rR2 = (rRext-lm); //23.243e-03;
-rR3 = (rRext-0.7389*lm); //23.862e-03;
-rR4 = (rRext-0.72278*lm); //23.9e-03;
-rR5 = rRext; //25.6e-03;
-
-rS1 = 26.02*mm;
-rS2 = 26.62*mm;
-rS3 = 26.96*mm;
-rS4 = 38.16*mm;
-rS5 = 38.27*mm;
-rS6 = 40.02*mm;
-rS7 = 46.00*mm;
-
-Gap = rS1-rR5;
-
-rB1  = rR5+Gap/3;
-rB1b = rB1;
-rB2  = rR5+Gap*2/3;
-
-
-A0 =  45 * deg2rad ; // with this choice, axis A of stator is at 30 degrees with regard to horizontal axis
-A1 =   0 * deg2rad ; // Rotor initial aligned position, current position in angRot
-
-// ----------------------------------------------------
-// Numbers for physical regions in .geo and .pro files
-// ----------------------------------------------------
-// Rotor
-ROTOR_FE     = 1000 ;
-ROTOR_AIR    = 1001 ;
-ROTOR_AIRGAP = 1002 ;
-ROTOR_MAGNET = 1010 ; // Index for first Magnet (1/8 model->1; full model->8)
-
-ROTOR_BND_MOVING_BAND = 1100 ; // Index for first line (1/8 model->1; full model->8)
-ROTOR_BND_A0 = 1200 ;
-ROTOR_BND_A1 = 1201 ;
-SURF_INT     = 1202 ;
-
-// Stator
-STATOR_FE     = 2000 ;
-STATOR_AIR    = 2001 ;
-STATOR_AIRGAP = 2002 ;
-
-STATOR_BND_MOVING_BAND = 2100 ;// Index for first line (1/8 model->1; full model->8)
-STATOR_BND_A0          = 2200 ;
-STATOR_BND_A1          = 2201 ;
-
-STATOR_IND = 2300 ; //Index for first Ind (1/8 model->3; full model->24)
-STATOR_IND_AP = STATOR_IND + 1 ; STATOR_IND_BM = STATOR_IND + 2 ;STATOR_IND_CP = STATOR_IND + 3 ;
-STATOR_IND_AM = STATOR_IND + 4 ; STATOR_IND_BP = STATOR_IND + 5 ;STATOR_IND_CM = STATOR_IND + 6 ;
-
-SURF_EXT = 3000 ; // outer boundary
-
-
-MOVING_BAND = 9999 ;
-
-NICEPOS = 111111 ;
diff --git a/contrib/mobile/Android/res/raw/pmsm_geo b/contrib/mobile/Android/res/raw/pmsm_geo
deleted file mode 100644
index efade112ec..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_geo
+++ /dev/null
@@ -1,95 +0,0 @@
-Include "pmsm_data.geo";
-
-Mesh.Algorithm = 1;
-Geometry.CopyMeshingMethod = 1;
-
-Mesh.CharacteristicLengthFactor = 1.5 ;
-
-
-// Mesh characteristic lengths
-s = 0.4 ;
-pR1=(rR2-rR1)/6.*s;
-pR2=(rR2-rR1)/6.*s;
-
-pS1=(rS7-rS1)/7.*s;
-pS2=(rS7-rS1)/12.*s;
-pS3=(rS6-rS3)/10.*s;
-
-NbrDivMB = 2*Ceil[2*Pi*rRext/8/pR1]; //1/8 Moving band
-
-//--------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------
-
-cen = newp ; Point(cen)={0,0,0,pR1};
-nicepos_rotor[] = {};
-nicepos_stator[] = {};
-
-Include "pmsm_rotor.geo";
-Include "pmsm_stator.geo";
-
-
-// For nice visualisation...
-Mesh.Light = 0 ;
-//Mesh.SurfaceFaces = 1; Mesh.SurfaceEdges=0;
-
-Hide { Point{ Point '*' }; }
-Hide { Line{ Line '*' }; }
-Show { Line{ nicepos_rotor[], nicepos_stator[] }; }
-
-Physical Line(NICEPOS) = { nicepos_rotor[], nicepos_stator[] };
-
-//For post-processing...
-View[0].Light = 0;
-View[0].NbIso = 25; // Number of intervals
-View[0].IntervalsType = 1;
-
-DefineConstant[ Flag_AddInfo = {0, Choices{0,1},
-                               Label "Add info about phases and axis",
-                               Path "Input/1"} ];
-
-For i In {PostProcessing.NbViews-1 : 0 : -1}
-  If(StrFind(View[i].Attributes, "tmp"))
-    Delete View[i];
-  EndIf
-EndFor
-
-If(Flag_AddInfo)
-  rr = 1.25 * rS3 ;
-  For k In {0:NbrPoles-1}
-    xa[] += rr*Cos(1*Pi/24+k*Pi/4) ; ya[] += rr*Sin(1*Pi/24+k*Pi/4) ;
-    xb[] += rr*Cos(3*Pi/24+k*Pi/4) ; yb[] += rr*Sin(3*Pi/24+k*Pi/4) ;
-    xc[] += rr*Cos(5*Pi/24+k*Pi/4) ; yc[] += rr*Sin(5*Pi/24+k*Pi/4) ;
-  EndFor
-
-  // Adding some axes
-  rr0 = 0.3 * rS7 ;
-  rr1 = 1.3 * rS7 ;
-  th_d = InitialRotorAngle ;
-  th_q = th_d + 22.5 * deg2rad ;
-
-  th_a = 30 * deg2rad ;
-  th_b = (30 + 120/4) * deg2rad ;
-  th_c = (30 + 240/4) * deg2rad ;
-
-  ff = 0.9;
-
-  xd[0] = rr0*Cos(th_d) ;    yd[0] = rr0*Sin(th_d) ;
-  xd[1] = ff*rr1*Cos(th_d) ; yd[1] = ff*rr1*Sin(th_d) ;
-  xq[0] = rr0*Cos(th_q) ;    yq[0] = rr0*Sin(th_q) ;
-  xq[1] = ff*rr1*Cos(th_q) ; yq[1] = ff*rr1*Sin(th_q) ;
-
-  xaa[0] = rr0*Cos(th_a) ; yaa[0] = rr0*Sin(th_a) ;
-  xaa[1] = rr1*Cos(th_a) ; yaa[1] = rr1*Sin(th_a) ;
-  xbb[0] = rr0*Cos(th_b) ; ybb[0] = rr0*Sin(th_b) ;
-  xbb[1] = rr1*Cos(th_b) ; ybb[1] = rr1*Sin(th_b) ;
-  xcc[0] = rr0*Cos(th_c) ; ycc[0] = rr0*Sin(th_c) ;
-  xcc[1] = rr1*Cos(th_c) ; ycc[1] = rr1*Sin(th_c) ;
-
-
-  Include "info_view.geo";
-
-EndIf
-
-
-
-
diff --git a/contrib/mobile/Android/res/raw/pmsm_geo_pro b/contrib/mobile/Android/res/raw/pmsm_geo_pro
deleted file mode 100644
index 225b29dd4f..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_geo_pro
+++ /dev/null
@@ -1,211 +0,0 @@
-//
-// Permanent Magnet Synchronous Generator
-//
-
-Include "pmsm_data.geo";
-
-DefineConstant[ Flag_NL = {0,
-    Choices{ 0="Linear",
-             1="Nonlinear BH curve"},
-    Label "Fe magnetic law",
-    Path "Input/3", Highlight "Blue"} ] ;
-
-DefineConstant[ Flag_SrcType_Stator = {0,
-    Choices{ 0="None",
-      1="Current" },
-    Label "Source Type in Stator",
-    Path "Input/4", Highlight "Blue", Visible 1} ] ;
-
-DefineConstant[ Flag_SrcType_Rotor = {0,
-    Choices{ 0="None",
-      1="Current" },
-    Label "Source Type in Rotor",
-    Path "Input/5", Highlight "Blue", Visible 0} ] ;
-
-DefineConstant[ Flag_Cir = {!Flag_SrcType_Stator, Choices{0,1},
-    Label "Use circuit in Stator", ReadOnly 1, Visible 0} ] ;
-
-Group {
-  Stator_Fe     = #STATOR_FE ;
-  Stator_Al     = #{};
-  Stator_Cu     = #{};
-  Stator_Air    = #STATOR_AIR ;
-  Stator_Airgap = #STATOR_AIRGAP ;
-
-  Stator_Bnd_A0 = #STATOR_BND_A0 ;
-  Stator_Bnd_A1 = #STATOR_BND_A1 ;
-
-  Rotor_Fe     = #ROTOR_FE ;
-  Rotor_Al     = #{};
-  Rotor_Cu     = #{};
-  Stator_Air    = #STATOR_AIR ;
-  Stator_Airgap = #STATOR_AIRGAP ;
-  Stator_Bnd_MB = #STATOR_BND_MOVING_BAND ;
-  Stator_Bnd_A0 = #STATOR_BND_A0 ;
-  Stator_Bnd_A1 = #STATOR_BND_A1 ;
-
-  Rotor_Fe     = #ROTOR_FE ;
-  Rotor_Air    = #ROTOR_AIR ;
-  Rotor_Airgap = #ROTOR_AIRGAP ;
-
-  Rotor_Bnd_A0 = #ROTOR_BND_A0 ;
-  Rotor_Bnd_A1 = #ROTOR_BND_A1 ;
-
-  MovingBand_PhysicalNb = #MOVING_BAND ;  // Fictitious number for moving band, not in the geo file
-  Surf_Inf = #SURF_EXT ;
-  Surf_bn0 = #SURF_INT ;
-  Surf_cutA0 = #{STATOR_BND_A0, ROTOR_BND_A0};
-  Surf_cutA1 = #{STATOR_BND_A1, ROTOR_BND_A1};
-
-  Dummy = #NICEPOS;
-
-  nbMagnets = NbrPolesTot/SymmetryFactor ;
-  For k In {1:nbMagnets}
-    Rotor_Magnet~{k} = Region[ (ROTOR_MAGNET+k-1) ];
-    Rotor_Magnets += Region[ Rotor_Magnet~{k} ];
-  EndFor
-
-  nbInds = (Flag_Symmetry) ? NbrPoles*NbrSectTotStator/NbrPolesTot : NbrSectTotStator ;
-  Printf("NbrPoles=%g, nbInds=%g SymmetryFactor=%g", NbrPoles, nbInds, SymmetryFactor);
-
-  Stator_Ind_Ap = #{};              Stator_Ind_Am = #{STATOR_IND_AM};
-  Stator_Ind_Bp = #{};              Stator_Ind_Bm = #{STATOR_IND_BM};
-  Stator_Ind_Cp = #{STATOR_IND_CP}; Stator_Ind_Cm = #{};
-  If(NbrPoles > 1)
-    Stator_Ind_Ap += #STATOR_IND_AP;
-    Stator_Ind_Bp += #STATOR_IND_BP;
-    Stator_Ind_Cm += #STATOR_IND_CM;
-  EndIf
-
-  PhaseA = Region[{ Stator_Ind_Ap, Stator_Ind_Am }];
-  PhaseB = Region[{ Stator_Ind_Bp, Stator_Ind_Bm }];
-  PhaseC = Region[{ Stator_Ind_Cp, Stator_Ind_Cm }];
-
-  // Provisional: Just one physical region for nice graph in Onelab
-  PhaseA_pos = Region[{ Stator_Ind_Am }];
-  PhaseB_pos = Region[{ Stator_Ind_Bm }];
-  PhaseC_pos = Region[{ Stator_Ind_Cp }];
-
-  Stator_IndsP = Region[{ Stator_Ind_Ap, Stator_Ind_Bp, Stator_Ind_Cp }];
-  Stator_IndsN = Region[{ Stator_Ind_Am, Stator_Ind_Bm, Stator_Ind_Cm }];
-
-  Stator_Inds = Region[ {PhaseA, PhaseB, PhaseC} ] ;
-  Rotor_Inds  = Region[ {} ] ;
-
-  StatorC  = Region[{ }] ;
-  StatorCC = Region[{ Stator_Fe }] ;
-  RotorC   = Region[{ }] ;
-  RotorCC  = Region[{ Rotor_Fe, Rotor_Magnets }] ;
-
-  // Moving band:  with or without symmetry, these BND lines must be complete
-  Stator_Bnd_MB = #STATOR_BND_MOVING_BAND;
-  For k In {1:SymmetryFactor}
-    Rotor_Bnd_MB~{k} = Region[ (ROTOR_BND_MOVING_BAND+k-1) ];
-    Rotor_Bnd_MB += Region[ Rotor_Bnd_MB~{k} ];
-  EndFor
-  Rotor_Bnd_MBaux = Region[ {Rotor_Bnd_MB, -Rotor_Bnd_MB~{1}}];
-
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Function {
-
-  mur_fe = 1000 ;
-  sigma_fe = 0 ;
-
-  NbrPhases = 3 ;
-  NbrPolePairs = NbrPolesTot/2 ;
-
-  DefineConstant[ b_remanent = { 1.2, Label "Remanent induction", Path "Input/3", Highlight "AliceBlue"} ] ;
-  // For a radial remanent b
-  For k In {1:nbMagnets}
-    br[ Rotor_Magnet~{k} ] = (-1)^(k-1) * b_remanent * Vector[ Cos[Atan2[Y[],X[]]], Sin[Atan2[Y[],X[]]], 0 ];
-  EndFor
-
-  Inominal = 3.9 ; // Nominal current
-  Tnominal = 2.5 ; // Nominal torque
-
-  //Data for modeling a stranded inductor
-  NbWires[]  = 104 ; // Number of wires per slot
-  // STATOR_IND_AM comprises all the slots in that phase, we need thus to divide by the number of slots
-  nbSlots[] = Ceil[nbInds/NbrPhases/2] ;
-  SurfCoil[] = SurfaceArea[]{STATOR_IND_AM}/nbSlots[] ;//All inductors have the same surface
-
-  FillFactor_Winding = 0.5 ; // percentage of Cu in the surface coil side, smaller than 1
-  Factor_R_3DEffects = 1.5 ; // bigger than Adding 50% of resistance
-
-  DefineConstant[ rpm = { 500,
-                          Label "speed in rpm",
-                          Path "Input/7", Highlight "AliceBlue"} ]; // speed in rpm
-  wr = rpm/60*2*Pi ; // speed in rad_mec/s
-
-  // supply at fixed position
-  DefineConstant[ Freq = {wr*NbrPolePairs/(2*Pi), ReadOnly 1,
-                          Path "Output/1", Highlight "LightYellow" } ];
-  Omega = 2*Pi*Freq ;
-  T = 1/Freq ;
-
-  DefineConstant[ thetaMax_deg = { 180, Label "End rotor angle (loop)",
-      Path "Input/21", Highlight "AliceBlue" } ];
-
-  theta0   = InitialRotorAngle + 0. ;
-  thetaMax = thetaMax_deg * deg2rad ; // end rotor angle (used in doing a loop)
-
-  DefineConstant[ NbTurns  = { (thetaMax-theta0)/(2*Pi), Label "Number of revolutions",
-      Path "Input/24", Highlight "LightGrey", ReadOnly 1} ];
-
-  DefineConstant[ delta_theta_deg = { 1., Label "step in degrees",
-      Path "Input/22", Highlight "AliceBlue"} ];
-
-  delta_theta = delta_theta_deg * deg2rad ;
-
-  time0 = 0 ; // at initial rotor position
-  delta_time = delta_theta/wr;
-  timemax = thetaMax/wr;
-
-  DefineConstant[ NbSteps = { Ceil[(timemax-time0)/delta_time], Label "Number of steps",
-      Path "Input/23", Highlight "LightGrey", ReadOnly 1} ];
-
-  RotorPosition[] = InitialRotorAngle + $Time * wr ;
-  RotorPosition_deg[] = RotorPosition[]*180/Pi;
-
-  Flag_ParkTransformation = 1 ;
-  Theta_Park[] = ((RotorPosition[] + Pi/8) - Pi/6) * NbrPolePairs; // electrical degrees
-  Theta_Park_deg[] = Theta_Park[]*180/Pi;
-
-  DefineConstant[ ID = { 0, Path "Input/60", Label "Id stator current", Highlight "AliceBlue"},
-    IQ = { Inominal, Path "Input/61", Label "Iq stator current", Highlight "AliceBlue"},
-    I0 = { 0, Visible 0} ] ;
-
-  If(Flag_SrcType_Stator==0)
-    UndefineConstant["Input/60ID"];
-    UndefineConstant["Input/61IQ"];
-  EndIf
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Dir="res/";
-ExtGmsh     = ".pos";
-ExtGnuplot  = ".dat";
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-If(Flag_SrcType_Stator==1)
-    UndefineConstant["Input/ZR"];
-EndIf
-
-If(Flag_Cir)
-  Include "pmsm_8p_circuit.pro" ;
-EndIf
-Include "machine_magstadyn_a.pro" ;
-
-DefineConstant[ ResolutionChoices    = {"TimeDomain_Loop", Path "GetDP/1"} ];
-DefineConstant[ PostOperationChoices = {"Map_LocalFields", Path "GetDP/2"} ];
-DefineConstant[ ComputeCommand       = {"-solve -v 1 -v2", Path "GetDP/9"} ];
diff --git a/contrib/mobile/Android/res/raw/pmsm_pro b/contrib/mobile/Android/res/raw/pmsm_pro
deleted file mode 100644
index b9ee5ce16a..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_pro
+++ /dev/null
@@ -1,211 +0,0 @@
-//
-// Permanent Magnet Synchronous Generator
-//
-
-Include "pmsm_data.geo";
-
-DefineConstant[ Flag_NL = {0,
-    Choices{ 0="Linear",
-             1="Nonlinear BH curve"},
-    Label "Fe magnetic law",
-    Path "Input/3", Highlight "Blue"} ] ;
-
-DefineConstant[ Flag_SrcType_Stator = {1,
-    Choices{ 0="None",
-      1="Current" },
-    Label "Source Type in Stator",
-    Path "Input/4", Highlight "Blue", Visible 1} ] ;
-
-DefineConstant[ Flag_SrcType_Rotor = {0,
-    Choices{ 0="None",
-      1="Current" },
-    Label "Source Type in Rotor",
-    Path "Input/5", Highlight "Blue", Visible 0} ] ;
-
-DefineConstant[ Flag_Cir = {!Flag_SrcType_Stator, Choices{0,1},
-    Label "Use circuit in Stator", ReadOnly 1, Visible 0} ] ;
-
-Group {
-  Stator_Fe     = #STATOR_FE ;
-  Stator_Al     = #{};
-  Stator_Cu     = #{};
-  Stator_Air    = #STATOR_AIR ;
-  Stator_Airgap = #STATOR_AIRGAP ;
-
-  Stator_Bnd_A0 = #STATOR_BND_A0 ;
-  Stator_Bnd_A1 = #STATOR_BND_A1 ;
-
-  Rotor_Fe     = #ROTOR_FE ;
-  Rotor_Al     = #{};
-  Rotor_Cu     = #{};
-  Stator_Air    = #STATOR_AIR ;
-  Stator_Airgap = #STATOR_AIRGAP ;
-  Stator_Bnd_MB = #STATOR_BND_MOVING_BAND ;
-  Stator_Bnd_A0 = #STATOR_BND_A0 ;
-  Stator_Bnd_A1 = #STATOR_BND_A1 ;
-
-  Rotor_Fe     = #ROTOR_FE ;
-  Rotor_Air    = #ROTOR_AIR ;
-  Rotor_Airgap = #ROTOR_AIRGAP ;
-
-  Rotor_Bnd_A0 = #ROTOR_BND_A0 ;
-  Rotor_Bnd_A1 = #ROTOR_BND_A1 ;
-
-  MovingBand_PhysicalNb = #MOVING_BAND ;  // Fictitious number for moving band, not in the geo file
-  Surf_Inf = #SURF_EXT ;
-  Surf_bn0 = #SURF_INT ;
-  Surf_cutA0 = #{STATOR_BND_A0, ROTOR_BND_A0};
-  Surf_cutA1 = #{STATOR_BND_A1, ROTOR_BND_A1};
-
-  Dummy = #NICEPOS;
-
-  nbMagnets = NbrPolesTot/SymmetryFactor ;
-  For k In {1:nbMagnets}
-    Rotor_Magnet~{k} = Region[ (ROTOR_MAGNET+k-1) ];
-    Rotor_Magnets += Region[ Rotor_Magnet~{k} ];
-  EndFor
-
-  nbInds = (Flag_Symmetry) ? NbrPoles*NbrSectTotStator/NbrPolesTot : NbrSectTotStator ;
-  Printf("NbrPoles=%g, nbInds=%g SymmetryFactor=%g", NbrPoles, nbInds, SymmetryFactor);
-
-  Stator_Ind_Ap = #{};              Stator_Ind_Am = #{STATOR_IND_AM};
-  Stator_Ind_Bp = #{};              Stator_Ind_Bm = #{STATOR_IND_BM};
-  Stator_Ind_Cp = #{STATOR_IND_CP}; Stator_Ind_Cm = #{};
-  If(NbrPoles > 1)
-    Stator_Ind_Ap += #STATOR_IND_AP;
-    Stator_Ind_Bp += #STATOR_IND_BP;
-    Stator_Ind_Cm += #STATOR_IND_CM;
-  EndIf
-
-  PhaseA = Region[{ Stator_Ind_Ap, Stator_Ind_Am }];
-  PhaseB = Region[{ Stator_Ind_Bp, Stator_Ind_Bm }];
-  PhaseC = Region[{ Stator_Ind_Cp, Stator_Ind_Cm }];
-
-  // Provisional: Just one physical region for nice graph in Onelab
-  PhaseA_pos = Region[{ Stator_Ind_Am }];
-  PhaseB_pos = Region[{ Stator_Ind_Bm }];
-  PhaseC_pos = Region[{ Stator_Ind_Cp }];
-
-  Stator_IndsP = Region[{ Stator_Ind_Ap, Stator_Ind_Bp, Stator_Ind_Cp }];
-  Stator_IndsN = Region[{ Stator_Ind_Am, Stator_Ind_Bm, Stator_Ind_Cm }];
-
-  Stator_Inds = Region[ {PhaseA, PhaseB, PhaseC} ] ;
-  Rotor_Inds  = Region[ {} ] ;
-
-  StatorC  = Region[{ }] ;
-  StatorCC = Region[{ Stator_Fe }] ;
-  RotorC   = Region[{ }] ;
-  RotorCC  = Region[{ Rotor_Fe, Rotor_Magnets }] ;
-
-  // Moving band:  with or without symmetry, these BND lines must be complete
-  Stator_Bnd_MB = #STATOR_BND_MOVING_BAND;
-  For k In {1:SymmetryFactor}
-    Rotor_Bnd_MB~{k} = Region[ (ROTOR_BND_MOVING_BAND+k-1) ];
-    Rotor_Bnd_MB += Region[ Rotor_Bnd_MB~{k} ];
-  EndFor
-  Rotor_Bnd_MBaux = Region[ {Rotor_Bnd_MB, -Rotor_Bnd_MB~{1}}];
-
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Function {
-
-  mur_fe = 1000 ;
-  sigma_fe = 0 ;
-
-  NbrPhases = 3 ;
-  NbrPolePairs = NbrPolesTot/2 ;
-
-  DefineConstant[ b_remanent = { 1.2, Label "Remanent induction", Path "Input/3", Highlight "AliceBlue"} ] ;
-  // For a radial remanent b
-  For k In {1:nbMagnets}
-    br[ Rotor_Magnet~{k} ] = (-1)^(k-1) * b_remanent * Vector[ Cos[Atan2[Y[],X[]]], Sin[Atan2[Y[],X[]]], 0 ];
-  EndFor
-
-  Inominal = 3.9 ; // Nominal current
-  Tnominal = 2.5 ; // Nominal torque
-
-  //Data for modeling a stranded inductor
-  NbWires[]  = 104 ; // Number of wires per slot
-  // STATOR_IND_AM comprises all the slots in that phase, we need thus to divide by the number of slots
-  nbSlots[] = Ceil[nbInds/NbrPhases/2] ;
-  SurfCoil[] = SurfaceArea[]{STATOR_IND_AM}/nbSlots[] ;//All inductors have the same surface
-
-  FillFactor_Winding = 0.5 ; // percentage of Cu in the surface coil side, smaller than 1
-  Factor_R_3DEffects = 1.5 ; // bigger than Adding 50% of resistance
-
-  DefineConstant[ rpm = { 500,
-                          Label "speed in rpm",
-                          Path "Input/7", Highlight "AliceBlue"} ]; // speed in rpm
-  wr = rpm/60*2*Pi ; // speed in rad_mec/s
-
-  // supply at fixed position
-  DefineConstant[ Freq = {wr*NbrPolePairs/(2*Pi), ReadOnly 1,
-                          Path "Output/1", Highlight "LightYellow" } ];
-  Omega = 2*Pi*Freq ;
-  T = 1/Freq ;
-
-  DefineConstant[ thetaMax_deg = { 180, Label "End rotor angle (loop)",
-      Path "Input/21", Highlight "AliceBlue" } ];
-
-  theta0   = InitialRotorAngle + 0. ;
-  thetaMax = thetaMax_deg * deg2rad ; // end rotor angle (used in doing a loop)
-
-  DefineConstant[ NbTurns  = { (thetaMax-theta0)/(2*Pi), Label "Number of revolutions",
-      Path "Input/24", Highlight "LightGrey", ReadOnly 1} ];
-
-  DefineConstant[ delta_theta_deg = { 1., Label "step in degrees",
-      Path "Input/22", Highlight "AliceBlue"} ];
-
-  delta_theta = delta_theta_deg * deg2rad ;
-
-  time0 = 0 ; // at initial rotor position
-  delta_time = delta_theta/wr;
-  timemax = thetaMax/wr;
-
-  DefineConstant[ NbSteps = { Ceil[(timemax-time0)/delta_time], Label "Number of steps",
-      Path "Input/23", Highlight "LightGrey", ReadOnly 1} ];
-
-  RotorPosition[] = InitialRotorAngle + $Time * wr ;
-  RotorPosition_deg[] = RotorPosition[]*180/Pi;
-
-  Flag_ParkTransformation = 1 ;
-  Theta_Park[] = ((RotorPosition[] + Pi/8) - Pi/6) * NbrPolePairs; // electrical degrees
-  Theta_Park_deg[] = Theta_Park[]*180/Pi;
-
-  DefineConstant[ ID = { 0, Path "Input/60", Label "Id stator current", Highlight "AliceBlue"},
-    IQ = { Inominal, Path "Input/61", Label "Iq stator current", Highlight "AliceBlue"},
-    I0 = { 0, Visible 0} ] ;
-
-  If(Flag_SrcType_Stator==0)
-    UndefineConstant["Input/60ID"];
-    UndefineConstant["Input/61IQ"];
-  EndIf
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Dir="res/";
-ExtGmsh     = ".pos";
-ExtGnuplot  = ".dat";
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-If(Flag_SrcType_Stator==1)
-    UndefineConstant["Input/ZR"];
-EndIf
-
-If(Flag_Cir)
-  Include "pmsm_8p_circuit.pro" ;
-EndIf
-Include "machine_magstadyn_a.pro" ;
-
-DefineConstant[ ResolutionChoices    = {"TimeDomain_Loop", Path "GetDP/1"} ];
-DefineConstant[ PostOperationChoices = {"Map_LocalFields", Path "GetDP/2"} ];
-DefineConstant[ ComputeCommand       = {"-solve -v 1 -v2", Path "GetDP/9"} ];
diff --git a/contrib/mobile/Android/res/raw/pmsm_rotor_geo b/contrib/mobile/Android/res/raw/pmsm_rotor_geo
deleted file mode 100644
index c051cf1a6d..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_rotor_geo
+++ /dev/null
@@ -1,163 +0,0 @@
-//--------------------------------------------------------------------------------
-// Rotor PMSM
-//--------------------------------------------------------------------------------
-A = InitialRotorAngle-45/2*deg2rad + A1; // with Theta_Park
-
-sinA = Sin(A); cosA = Cos(A);
-pntR[]+=newp; Point(newp)={rR1*cosA, rR1*sinA, 0, pR1};
-pntR[]+=newp; Point(newp)={rR2*cosA, rR2*sinA, 0, pR1};
-pntR[]+=newp; Point(newp)={rR4*cosA, rR4*sinA, 0, pR1};
-pntR[]+=newp; Point(newp)={rR5*cosA, rR5*sinA, 0, pR1};
-pntR[]+=newp; Point(newp)={rB1*cosA, rB1*sinA, 0, pR2};
-
-For k In {0:#pntR[]-2}
- linR0[]+=newl; Line(newl) = {pntR[k], pntR[k+1]};
-EndFor
-
-Transfinite Line{linR0[0]} = Ceil[(rR2-rR1)/pR1] ;
-Transfinite Line{linR0[1]} = Ceil[(rR4-rR2)/pR1] ;
-Transfinite Line{linR0[2]} = Ceil[(rR5-rR4)/pR1] ;
-Transfinite Line{linR0[3]} = Ceil[(rB1-rR5)/pR1] ;
-
-For k In {0:#linR0[]-1}
- linR1[] += Rotate {{0, 0, 1}, {0, 0, 0}, A0+A1} { Duplicata{Line{linR0[k]};} };
-EndFor
-
-AA[] = {(A0-Th_magnet)/2+A1, Th_magnet, (A0-Th_magnet)/2+A1} ;
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[0]} { Point{pntR[0]}; };
-cirR[]+=lin[1];
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[1]} { Point{lin[0]}; };
-cirR[]+=lin[1];
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[2]} { Point{lin[0]}; };
-cirR[]+=lin[1];
-
-surfint[]=cirR[{0,1,2}] ; // boundary conditions
-
-pMagnet[] = Rotate {{0, 0, 1}, {0, 0, 0}, AA[0]} { Duplicata{Point{pntR[1]};} };
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[1]} { Point{pMagnet[0]}; };
-pMagnet[] += lin[0];
-cirR[] += lin[1] ;
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[0]} { Point{pntR[2]}; };
-cirR[]+=lin[1]; pMagnet[] += lin[0];
-pMagnet[] += Rotate {{0, 0, 1}, {0, 0, 0}, AA[1]} { Duplicata{Point{lin[0]};} };
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[2]} { Point{pMagnet[3]}; };
-cirR[]+=lin[1];
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[0]} { Point{pntR[3]}; };
-cirR[]+=lin[1];
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[1]} { Point{lin[0]}; };
-cirR[]+=lin[1];
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[2]} { Point{lin[0]}; };
-cirR[]+=lin[1];
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, A0+A1} { Point{pntR[4]}; };
-cirR[]+=lin[1];
-
-linR2[] = Rotate {{0, 0, 1}, {0, 0, 0}, (A0-Th_magnet)/2+A1} { Duplicata{Line{linR0[{1,2}]};} };
-linR3[] = Rotate {{0, 0, 1}, {0, 0, 0},-(A0-Th_magnet)/2+A1} { Duplicata{Line{linR1[{1,2}]};} };
-
-// surfaces rotor
-Line Loop(newll) = {linR0[{0,1}], cirR[4], -linR2[0], cirR[3], linR3[0], cirR[5], -linR1[{1,0}], -cirR[{2,1,0}]};
-srotor[0]=news; Plane Surface(srotor[0]) = {newll-1};
-
-Line Loop(newl) = {linR2[1], cirR[7], -linR3[{1,0}], -cirR[3], linR2[0]};
-smagnet[0]=news; Plane Surface(smagnet[0]) = {newll-1};
-
-nn = #cirR[]-1 ;
-Line Loop(newll) = {cirR[{nn-5}], linR2[1], -cirR[{nn-3}], -linR0[2]};
-sairrotor[]+=news; Plane Surface(news) = {newll-1};
-Line Loop(newll) = {cirR[{nn-4}], linR1[2], -cirR[{nn-1}], -linR3[1]};
-sairrotor[]+=news; Plane Surface(news) = {newll-1};
-
-Line Loop(newll) = {linR0[3], cirR[nn], -linR1[3], -cirR[{nn-1:nn-3:-1}]};
-sairrotormb[]+=news; Plane Surface(news) = {newll-1};
-
-// -------------------------------------------------------------------------------
-// Moving band == AirGap rotor side
-// -------------------------------------------------------------------------------
-Transfinite Line{cirR[nn]} = NbrDivMB+1 ;
-
-//Filling the gap for the whole 2*Pi
-lineMBrotor[]=cirR[{nn}];
-For k In {1:NbrPolesTot-1}
-  lineMBrotoraux[]+=Rotate {{0, 0, 1}, {0, 0, 0}, k*A0} { Duplicata{Line{lineMBrotor[]};} };
-EndFor
-
-// -------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------
-If(SymmetryFactor<8)
-// FULL MODEL ==> Rotation of NbrPolesTot*Pi/4
-// For simplicity: rotating first the interior and exterior boundaries
-
-  If (SymmetryFactor>1)
-    For k In {0:#linR1[]-1}
-      linR1_[] += Rotate {{0, 0, 1}, {0, 0, 0}, 2*Pi/SymmetryFactor-Pi/4} { Duplicata{Line{linR1[k]};} };
-    EndFor
-    linR1[] = linR1_[];
-  EndIf
-
-  For k In {1:NbrPoles-1}
-    surfint[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Line{surfint[{0:2}]};} };
-  EndFor
-  For k In {1:NbrPoles-1}
-    srotor[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{srotor[0]};} };
-    smagnet[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{smagnet[0]};} };
-    sairrotor[]  += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairrotor[{0,1}]};} };
-    sairrotormb[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairrotormb[0]};} };
-  EndFor
-EndIf
-
-
-// -------------------------------------------------------------------------------
-// Physical regions
-// -------------------------------------------------------------------------------
-
-Physical Surface(ROTOR_FE)     = {srotor[]};     // Rotor
-Physical Surface(ROTOR_AIR)    = {sairrotor[]};  // AirRotor
-Physical Surface(ROTOR_AIRGAP) = {sairrotormb[]};// AirRotor for possible torque computation with Maxwell stress tensor
-
-NN = (Flag_Symmetry)?NbrPoles:NbrPolesTot;
-For k In {0:NN-1}
-  Physical Surface(ROTOR_MAGNET+k) = {smagnet[k]}; // Magnets
-EndFor
-
-Physical Line(SURF_INT) = {surfint[]}; // SurfInt
-
-
-If(Flag_Symmetry)  //Lines for symmetry link
-  Physical Line(ROTOR_BND_A0)  = linR0[];
-  Physical Line(ROTOR_BND_A1)  = linR1[];
-EndIf
-
-lineMBrotor[] += lineMBrotoraux[] ;
-If(!Flag_Symmetry)
-  Physical Line(ROTOR_BND_MOVING_BAND)  = {lineMBrotor[]};
-EndIf
-If(Flag_Symmetry)
-  nr = #lineMBrotor[];
-  nnp = nr/(NbrPolesTot/NbrSect) ;
-  For k In {1:Floor[NbrPolesTot/NbrSect]}
-    kk= ((k*nnp-1) > nr) ? nr-1 : k*nnp-1 ;
-    Physical Line(ROTOR_BND_MOVING_BAND+k-1) = lineMBrotor[{(k-1)*nnp:kk}] ;
-  EndFor
-  k1 = Floor[NbrPolesTot/NbrSect];
-  k2 = Ceil[NbrPolesTot/NbrSect];
-  If (k2 > k1)
-    Physical Line(ROTOR_BND_MOVING_BAND+k2-1) = lineMBrotor[{(k2-1)*nnp:#lineMBrotor[]-1}] ;
-  EndIf
-EndIf
-
-// For nice visualisation...
-linRotor[]  = CombinedBoundary{Surface{srotor[]};};
-linMagnet[] = Boundary{Surface{smagnet[]};};
-
-nicepos_rotor[] += { linRotor[], linMagnet[] };
-
-Color SteelBlue {Surface{srotor[]};}
-Color SkyBlue {Surface{sairrotor[], sairrotormb[]};}
-Color Orchid {Surface{smagnet[{0:#smagnet[]-1:2}]};}
-If(#smagnet[]>1)
-Color Purple {Surface{smagnet[{1:#smagnet[]-1:2}]};}
-EndIf
diff --git a/contrib/mobile/Android/res/raw/pmsm_stator_geo b/contrib/mobile/Android/res/raw/pmsm_stator_geo
deleted file mode 100644
index e928a4a055..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_stator_geo
+++ /dev/null
@@ -1,215 +0,0 @@
-// -------------------------------------------------------------------------------
-// Moving band == AirGap stator side
-// -------------------------------------------------------------------------------
-pntG[]+=newp; Point(newp) = {rB2, 0., 0., pS1}; // aligned with the stator
-circ[] = Extrude {{0, 0, 1}, {0, 0, 0}, A0} { Point{pntG[0]}; };
-pntG[]+=circ[0];
-lineMBstator[]=circ[1];
-Transfinite Line{lineMBstator[0]} = NbrDivMB+1 ;
-
-//Filling the gap for the whole 2*Pi
-For k In {1:NbrPolesTot-1}
-  lineMBstatoraux[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*A0} { Duplicata{Line{lineMBstator[0]};} };
-EndFor
-
-// -------------------------------------------------------------------------------
-// Stator
-// -------------------------------------------------------------------------------
-
-pntS[] = newp; Point(newp)={rS1, 0, 0, pS1};
-linS[] = newl; Line(newl) = {pntG[0], pntS[0]};
-linS[]+= Rotate {{0, 0, 1}, {0, 0, 0}, A0} { Duplicata{Line{linS[0]};} };
-
-pntS[]+=newp; Point(newp)={rS7,0,0,pS2};
-points[]=Boundary{Line{linS[1]};};
-pntS[]+=points[1];
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, A0} { Point{pntS[1]}; };
-cirS[]= lin[1]; pntS[]+=lin[0];
-
-linS[]+=newl; Line(newl) = {pntS[0], pntS[1]};
-linS[]+=newl; Line(newl) = {pntS[2], pntS[3]};
-
-// -------------------------------------------------------------------------------
-// Slots
-// -------------------------------------------------------------------------------
-
-A2 = 0.0;
-AA[]=deg2rad*{2.77+A2, 4.0+A2, 5.52+A2, 5.56+A2, 5.65+A2, 9.35+A2, 9.44+A2, 9.48+A2, 11+A2, 12.23+A2} ;
-
-For k In {0:#AA[]-1}
-  cosAA[]+=Cos(AA[k]); sinAA[]+=Sin(AA[k]);
-EndFor
-
-pntSlot[]+=newp; Point(newp)={rS5*cosAA[0], rS5*sinAA[0], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS3*cosAA[1], rS3*sinAA[1], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS1*cosAA[2], rS1*sinAA[2], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS2*cosAA[3], rS2*sinAA[3], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS4*cosAA[3], rS4*sinAA[3], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS6*cosAA[4], rS6*sinAA[4], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS6*cosAA[5], rS6*sinAA[5], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS4*cosAA[6], rS4*sinAA[6], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS2*cosAA[6], rS2*sinAA[6], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS1*cosAA[7], rS1*sinAA[7], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS3*cosAA[8], rS3*sinAA[8], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS5*cosAA[9], rS5*sinAA[9], 0., pS3};
-
-// air slot 1
-linASlot[]+=newl ; Line(newl)={pntSlot[2], pntSlot[3]};
-linASlot[]+=newl ; Line(newl)={pntSlot[3], pntSlot[1]};
-linASlot[]+=newl ; Circle(newl)={pntSlot[1], cen, pntSlot[10]};
-linASlot[]+=newl ; Line(newl)={pntSlot[10], pntSlot[8]};
-linASlot[]+=newl ; Line(newl)={pntSlot[8], pntSlot[9]};
-linASlot[]+=newl ; Circle(newl)={pntSlot[9], cen, pntSlot[2]};
-
-Line Loop(newll) = {linASlot[]};
-sairslot[] += news ; Plane Surface(sairslot[0]) = {newll-1};
-
-// coil slot 1
-linSlot[]+=newl ; Line(newl)={pntSlot[1], pntSlot[0]};
-linSlot[]+=newl ; Circle(newl)= {pntSlot[0], pntSlot[4], pntSlot[5]};
-linSlot[]+=newl ; Line(newl)={pntSlot[5], pntSlot[6]};
-linSlot[]+=newl ; Circle(newl)={pntSlot[6], pntSlot[7],pntSlot[11]};
-linSlot[]+=newl ; Line(newl)={pntSlot[11], pntSlot[10]};
-
-Line Loop(newll) = {-linASlot[2],linSlot[]};
-sslot[] += news ; Plane Surface(sslot[0]) = {newll-1};
-
-// slots 2 and 3
-A2 = 15*deg2rad;
-
-pntSlot0[0] = pntSlot[2];
-pntSlot1[0] = pntSlot[9];
-For k In{1:2}
-  pntSlot0[] += Rotate {{0, 0, 1}, {0, 0, 0}, A2} { Duplicata{Point{pntSlot0[k-1]};} };
-  pntSlot1[] += Rotate {{0, 0, 1}, {0, 0, 0}, A2} { Duplicata{Point{pntSlot1[k-1]};} };
-EndFor
-
-For k In{1:2}
-  sslot[] += Rotate {{0, 0, 1}, {0, 0, 0}, A2} { Duplicata{Surface{sslot[k-1]};} };
-  sairslot[] += Rotate {{0, 0, 1}, {0, 0, 0}, A2} { Duplicata{Surface{sairslot[k-1]};} };
-EndFor
-
-cSlot[]+=newl; Circle(newl) = {pntS[0], cen, pntSlot[2]};
-cSlot[]+=newl; Circle(newl) = {pntSlot1[0], cen, pntSlot0[1]};
-cSlot[]+=newl; Circle(newl) = {pntSlot1[1], cen, pntSlot0[2]};
-cSlot[]+=newl; Circle(newl) = {pntSlot1[2], cen, pntS[2]};
-
-linesslot0[] = CombinedBoundary{ Surface{ sslot[0], sairslot[0] } ;};
-linesslot1[] = CombinedBoundary{ Surface{ sslot[1], sairslot[1] } ;};
-linesslot2[] = CombinedBoundary{ Surface{ sslot[2], sairslot[2] } ;};
-
-Line Loop(newll) = {-lineMBstator[0],linS[0], cSlot[0],-linesslot0[{4}],
-                    cSlot[1],-linesslot1[{9}],
-                    cSlot[2],-linesslot2[{9}], cSlot[3], -linS[1]};
-sairgapS[0]=news; Plane Surface(sairgapS[0]) = {newll-1};
-
-linesslot0[] -= linesslot0[{4}];
-linesslot1[] -= linesslot1[{9}];
-linesslot2[] -= linesslot2[{9}];
-Line Loop(newll) = { cSlot[0], linesslot0[],
-                     cSlot[1], linesslot1[],
-                     cSlot[2], linesslot2[],
-                     cSlot[3], linS[3], -cirS[0], -linS[2]};
-sstator[0]=news; Plane Surface(sstator[0]) = {newll-1};
-
-// -------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------
-
-auxlink[]=linS[{1,3}]; // A1
-
-If(SymmetryFactor<8)
-  // FULL MODEL ==> Rotation of NbrPolesTot*Pi/4
-  // For simplicity: rotating the interior and exterior boundaries
-
- If (SymmetryFactor>1)
-    For k In {0:#auxlink[]-1}
-      auxlink_[] += Rotate {{0, 0, 1}, {0, 0, 0}, 2*Pi/SymmetryFactor-Pi/4} { Duplicata{Line{auxlink[k]};} };
-    EndFor
-    auxlink[] = auxlink_[];
-  EndIf
-
-  For k In {1:NbrPoles-1}
-    cirS[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Line{cirS[{0}]};} };
-  EndFor
-  For k In {1:NbrPoles-1}
-    sstator[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sstator[0]};} };
-    sairgapS[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairgapS[0]};} };
-    sairslot[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairslot[{0:2}]};} };
-    sslot[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sslot[{0:2}]};} };
-  EndFor
-EndIf
-
-
-
-// -------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------
-// Physical regions
-// -------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------
-
-Physical Surface(STATOR_FE)     = {sstator[]};  // Stator
-Physical Surface(STATOR_AIR)    = {sairslot[]}; // AirStator
-Physical Surface(STATOR_AIRGAP) = {sairgapS[]}; // AirStator for possible torque computation with Maxwell stress tensor
-
-NN = (Flag_Symmetry)?NbrSectStator:NbrSectTotStator;
-//For k In {0:NN-1}
-//  Physical Surface(STATOR_IND+k) = {sslot[k]}; //Inds
-//EndFor
-
-Physical Surface(STATOR_IND_AM) = {sslot[{0:NN-1:6}]};
-Physical Surface(STATOR_IND_CP) = {sslot[{1:NN-1:6}]};
-Physical Surface(STATOR_IND_BM) = {sslot[{2:NN-1:6}]};
-If(NbrSectStator>2)
-  Physical Surface(STATOR_IND_AP) = {sslot[{3:NN-1:6}]};
-  Physical Surface(STATOR_IND_CM) = {sslot[{4:NN-1:6}]};
-  Physical Surface(STATOR_IND_BP) = {sslot[{5:NN-1:6}]};
-EndIf
-
-Color Pink         {Surface{ sslot[{0:NN-1:6}] };} // A-
-Color ForestGreen  {Surface{ sslot[{1:NN-1:6}] };} // C+
-Color PaleGoldenrod{Surface{ sslot[{2:NN-1:6}] };} // B-
-If (#sslot[]>=6)
-Color Red        {Surface{ sslot[{3:NN-1:6}] };} // A+
-Color SpringGreen{Surface{ sslot[{4:NN-1:6}] };} // C-
-Color Gold       {Surface{ sslot[{5:NN-1:6}] };} // B+
-EndIf
-
-
-Physical Line(SURF_EXT) = {cirS[]}; // SurfExt
-
-If(Flag_Symmetry) //Lines for symmetry link
-  Physical Line(STATOR_BND_A0) = linS[{0,2}];
-  Physical Line(STATOR_BND_A1) = auxlink[] ;
-EndIf
-
-
-lineMBstator[] += lineMBstatoraux[] ;
-If(!Flag_Symmetry)
-  Physical Line(STATOR_BND_MOVING_BAND) = {lineMBstator[]};
-EndIf
-If(Flag_Symmetry)
-ns = #lineMBstator[];
-nns = ns/SymmetryFactor ;
-For k In {1:SymmetryFactor}
-  kk= ((k*nns-1) > ns) ? ns-1 : k*nns-1 ;
-  Physical Line(STATOR_BND_MOVING_BAND+k-1) = {lineMBstator[{(k-1)*nns:kk}]};
-EndFor
-  k1 = Floor[NbrPolesTot/NbrSect];
-  k2 = Ceil[NbrPolesTot/NbrSect];
-  If (k2 > k1)
-    Physical Line(STATOR_BND_MOVING_BAND+k2-1) = lineMBstator[{(k2-1)*nns:#lineMBstator[]-1}] ;
-  EndIf
-EndIf
-
-
-// For nice visualisation...
-linStator[] = CombinedBoundary{Surface{sstator[]};};
-linSlot[] = CombinedBoundary{Surface{sslot[]};};
-
-nicepos_stator[] += {linStator[],linSlot[] };
-
-Color SteelBlue {Surface{sstator[]};}
-Color SkyBlue {Surface{sairslot[],sairgapS[]};}
-
-
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java b/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
index 87f177f177..1f0a1c6d81 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
@@ -41,7 +41,7 @@ public class ModelList extends Activity {
     	ListView list = new ListView(this);
     	Button loadSD = new Button(this);
     	loadSD.setText(R.string.button_open_external_file);
-    	loadSD.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
+    	loadSD.setLayoutParams(new ListView.LayoutParams(LayoutParams.MATCH_PARENT, ListView.LayoutParams.WRAP_CONTENT));
     	loadSD.setOnClickListener(new View.OnClickListener() {
 			
 			public void onClick(View v) {
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/SplashScreen.java b/contrib/mobile/Android/src/org/geuz/onelab/SplashScreen.java
index 21c8bb7261..56653765f1 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/SplashScreen.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/SplashScreen.java
@@ -1,9 +1,10 @@
 package org.geuz.onelab;
 
+import java.io.BufferedInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
 
 import android.app.Activity;
 import android.content.Context;
@@ -59,34 +60,19 @@ public class SplashScreen extends Activity{
      */
     private void loadNative()
     {
-    	for( Field f : R.raw.class.getFields()) {
-    		try {
-				int Msh = f.getInt(null), i;
-				String androidName = getResources().getResourceEntryName(Msh);
-				StringBuilder tmp = new StringBuilder(androidName);
-				tmp.setCharAt(androidName.lastIndexOf('_'), '.');
-				String nativeName = tmp.toString();
-				/*if(new File(getFilesDir().toString()+"/"+nativeName).exists()){
-					//TODO check if the files are the same
-					continue;
-				}*/
-				InputStream mshFile = getResources().openRawResource(Msh);
-		    	
-		    	FileOutputStream outputStream = openFileOutput(nativeName, Context.MODE_WORLD_READABLE);
-		    	byte[] buffer = new byte[2048];
-		    	
-		    	while ((i = mshFile.read(buffer, 0, buffer.length)) > 0) 
+    	try {
+    		ZipInputStream zipStream = new ZipInputStream(new BufferedInputStream(getResources().openRawResource(R.raw.models)));
+			ZipEntry entry;
+		     while ((entry = zipStream.getNextEntry()) != null) {
+				FileOutputStream outputStream = openFileOutput(entry.getName(), Context.MODE_PRIVATE);
+				byte[] buffer = new byte[2048];
+				for (int i = zipStream.read(buffer, 0, buffer.length); i > 0;i = zipStream.read(buffer, 0, buffer.length)) 
 					outputStream.write(buffer,0,i);
-
-			} catch (IllegalArgumentException e) {
-				Log.e("Load files", "Error " + e.toString());
-				
-			} catch (IllegalAccessException e) {
-				Log.e("Load files", "Error " + e.toString());
-				
-			} catch (IOException e) {
-				Log.e("Load files", "Error " + e.toString());
-			}
-    	}
+				Log.d("Load files", "Add " + entry.getName() + " from the zip file");
+		     }
+		     zipStream.close();
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
     }
 }
-- 
GitLab