diff --git a/README.md b/README.md index cdbeb37a5..b26f23121 100644 --- a/README.md +++ b/README.md @@ -69,10 +69,16 @@ analisi_traj = pyanalisi.Trajectory( pos, #shape (ntimesteps, natoms, 3) vel, #same shape as pos types, #shape (natoms) - box, #shape (ntimesteps, 3,3) or (ntimesteps, 6) - True, # if True, box for a single frame is 3,3, - # if False is 6 - False # don't apply pbc + box, #shape (ntimesteps, 3,3) + # or (ntimesteps, 6) + # or (ntimesteps, 9) + pyanalisi.BoxFormat.CellVectors, + # input box format is + # matrix of cell vectors + False, # don't wrap atoms around the center of + # the cell + False # don't save rotation matrix that is used + # internally if the cell is triclinic ) #do the calculation that you want @@ -266,22 +272,34 @@ Where meaningful, the following arguments are shared by all calculation performe You can create a trajectory python object to be used in this library in two ways: - start from python arrays generated by other code - use a LAMMPS binary file that you have on the filesystem. This is the same file that is used by the command line interface. + +to access the positions, velocities and cell data you can use in both the python buffer protocol interface and the lammps binary one the functions `get_positions_copy()`, `get_velocities_copy()` and `get_box_copy()`. Note that each call of these functions allocates more memory, as needed. + +### Internal format used to store the cell information + +Internally the format used for storing the cell information is: + +`[x_low, y_low, z_low, lx/2, ly/2, lz/2, xy, xz, yz]` + +and is accessible by using the python function `get_box_copy()` common to the trajectory objects. Note that internally the first cell vector is always in the same direction of the x axis, the second one is on the xy plane while the third has an arbitrary direction. This is equivalent to requiring that the cell matrix is triangular. If necessary, this is achieved by doing a QR decomposition of the input cell matrix and then rotating everything with the Q matrix. -#### using Python arrays: the buffer protocol interface +### using Python arrays: the buffer protocol interface You must have 4 arrays. In general the interface supports any object that supports python's buffer protocol. This include, among others, numpy arrays. Suppose you have a trajectory of `t` timesteps and `n` atoms. You need the following arrays: - position array, of shape `(t,n,3)` - velocity array, of shape `(t,n,3)` - - cell array, of shape `(t,3,3)` only diagonal matrices (orthorombic cells) are supported at the moment, or if a lammps formated cell is provided `(t,6)` The lammps format simply list the low and high coordinates of the orthorombic cell, as in the header of each timestep that you find in the lammps trajetory format (shown in [command line interface](#command-line-interface) section ) + - cell array, of shape `(t,3,3)` or if a lammps formated cell is provided `(t,6)` for orthorombic and `(t,9)` for triclinic. The lammps format simply list the low and high coordinates for each dimension and the tilts factors as described below - types array, of shape `(n)` (integer array) In general no particular units of measure are required, and the output will reflect the units that you used in the input. The calculations that the program does are reported exactly in the following sections. From those formulas you can deduce the units of the output given the units that you used in the input. -Then you must decide if you want that the coordinates are rewrapped inside the cell or not. At the moment only orthorombic cells are supported in all calculations but those that need only unwrapped coordinates, like MSD. +Then you must decide if you want that the coordinates are rewrapped around the center of the cell or not. This is not equivalent to wrapping the coordinates inside the cell for the triclinic case, but generates a compact list of positions suitable for an efficient calculation of the minimum image distance. + +The lammps format for the cell is `[x_lo, x_hi, y_lo, y_hi, z_lo, z_hi, xy, xz, yz]`, as described in the [lammps documentation](https://docs.lammps.org/Howto_triclinic.html). -The lammps format for the cell is `[x_lo, x_hi, y_lo, y_hi, z_lo, z_hi]`: you have to provide only the coordinates boundaries. +If the plain cell vectors are provided in the cell matrix and this matrix is not diagonal, a QR decomposition is performed to get a triangular cell matrix and the achieve the desidered internal format. In this case all velocities and positions vector are rotated with the rotation matrix Q, that can be obtained with the function `get_rotation_matrix()`. The syntax for creating the object is ``` @@ -290,12 +308,14 @@ analisi_traj = pyanalisi.Trajectory(positions_array, velocity_array, types_array, box_array, - use_matrix_or_lammps_cell_format, - wrap_atomic_coordinates) + input_box_format_id, + wrap_atomic_coordinates, + save_Q_rotation_matrix +) ``` -where `use_matrix_or_lammps_cell_format` is `True` if usual matrix format for the cell is given and `False` if a lammps formatted cell is provided and `wrap_atomic_coordinates` is `True` if you want to wrap all the atomic coordinates inside the cell. +where `input_box_format_id` is one of `pyanalisi.BoxFormat.CellVectors`, `pyanalisi.BoxFormat.LammpsOrtho`, `pyanalisi.BoxFormat.LammpsTriclinic` and describe the format of the array `box_array`. If `wrap_atomic_coordinates` is `True` the code will wrap all the atomic coordinates around the center of the cell (that does not mean inside the cell in the triclinc case). This makes the code for computing the minimum image distance more efficient if the atoms were far away out of the cell, but invalidates all the calculations were the atoms are not supposed to be wrapped back inside the cell. -You can write a LAMMPS bynary trajectory (that can be used by the command line interface with mpi, for example) by calling +You can write a LAMMPS binary trajectory (that can be used by the command line interface with mpi, for example) by calling ``` analisi_traj.write_lammps_binary('output_path', start_timestep, end_timestep) ``` @@ -313,7 +333,8 @@ where `start_timestep` is the first timestep index to dump (indexes start from 0 import pyanalisi analisi_traj = pyanalisi.Trajectory(pos, vel, types, box, True, # matrix format for the box array - False # don't wrap the coordinates + False, # don't wrap the coordinates + False # not interested in Q matrix ) analisi_traj.write_lammps_binary("output_filename.bin" , 0, # starting timestep @@ -322,7 +343,7 @@ where `start_timestep` is the first timestep index to dump (indexes start from 0 ``` -#### LAMMPS binary trajectory interface +### LAMMPS binary trajectory interface This interface is a little more complicated, since it was designed for computing block averages of very big files. It can read the same files that the command line program reads. The object is created with @@ -370,7 +391,7 @@ The `header_array` object must describe the columns that are stored in the bidim ## MSD Given a trajectory where is the atomic index and is the timestep index, defining the center of mass position of the atomic species at the timestep as -

+

where is the number of atoms of the specie , the code computes the following

@@ -419,7 +440,7 @@ In general the object msd_calculation supports the buffer protocol interface, so ## Green-Kubo - Given vector time series of length , , , + Given vector time series of length , , , implements an expression equivalent to the following formula:

but with the trapezoidal rule in place of the sums marked with . Note that  is a matrix. To get the correct units of measure, you have still to multiply all the quantities but the s by the integration timestep. is the number of timesteps on which the code runs the average. diff --git a/README.pdf b/README.pdf index ab68ee125..acef8c7a3 100644 Binary files a/README.pdf and b/README.pdf differ diff --git a/README_.md b/README_.md index a9e4d6159..92a7b9cac 100644 --- a/README_.md +++ b/README_.md @@ -69,10 +69,16 @@ analisi_traj = pyanalisi.Trajectory( pos, #shape (ntimesteps, natoms, 3) vel, #same shape as pos types, #shape (natoms) - box, #shape (ntimesteps, 3,3) or (ntimesteps, 6) - True, # if True, box for a single frame is 3,3, - # if False is 6 - False # don't apply pbc + box, #shape (ntimesteps, 3,3) + # or (ntimesteps, 6) + # or (ntimesteps, 9) + pyanalisi.BoxFormat.CellVectors, + # input box format is + # matrix of cell vectors + False, # don't wrap atoms around the center of + # the cell + False # don't save rotation matrix that is used + # internally if the cell is triclinic ) #do the calculation that you want @@ -266,22 +272,34 @@ Where meaningful, the following arguments are shared by all calculation performe You can create a trajectory python object to be used in this library in two ways: - start from python arrays generated by other code - use a LAMMPS binary file that you have on the filesystem. This is the same file that is used by the command line interface. + +to access the positions, velocities and cell data you can use in both the python buffer protocol interface and the lammps binary one the functions `get_positions_copy()`, `get_velocities_copy()` and `get_box_copy()`. Note that each call of these functions allocates more memory, as needed. + +### Internal format used to store the cell information + +Internally the format used for storing the cell information is: + +`[x_low, y_low, z_low, lx/2, ly/2, lz/2, xy, xz, yz]` + +and is accessible by using the python function `get_box_copy()` common to the trajectory objects. Note that internally the first cell vector is always in the same direction of the x axis, the second one is on the xy plane while the third has an arbitrary direction. This is equivalent to requiring that the cell matrix is triangular. If necessary, this is achieved by doing a QR decomposition of the input cell matrix and then rotating everything with the Q matrix. -#### using Python arrays: the buffer protocol interface +### using Python arrays: the buffer protocol interface You must have 4 arrays. In general the interface supports any object that supports python's buffer protocol. This include, among others, numpy arrays. Suppose you have a trajectory of `t` timesteps and `n` atoms. You need the following arrays: - position array, of shape `(t,n,3)` - velocity array, of shape `(t,n,3)` - - cell array, of shape `(t,3,3)` only diagonal matrices (orthorombic cells) are supported at the moment, or if a lammps formated cell is provided `(t,6)` The lammps format simply list the low and high coordinates of the orthorombic cell, as in the header of each timestep that you find in the lammps trajetory format (shown in [command line interface](#command-line-interface) section ) + - cell array, of shape `(t,3,3)` or if a lammps formated cell is provided `(t,6)` for orthorombic and `(t,9)` for triclinic. The lammps format simply list the low and high coordinates for each dimension and the tilts factors as described below - types array, of shape `(n)` (integer array) In general no particular units of measure are required, and the output will reflect the units that you used in the input. The calculations that the program does are reported exactly in the following sections. From those formulas you can deduce the units of the output given the units that you used in the input. -Then you must decide if you want that the coordinates are rewrapped inside the cell or not. At the moment only orthorombic cells are supported in all calculations but those that need only unwrapped coordinates, like MSD. +Then you must decide if you want that the coordinates are rewrapped around the center of the cell or not. This is not equivalent to wrapping the coordinates inside the cell for the triclinic case, but generates a compact list of positions suitable for an efficient calculation of the minimum image distance. + +The lammps format for the cell is `[x_lo, x_hi, y_lo, y_hi, z_lo, z_hi, xy, xz, yz]`, as described in the [lammps documentation](https://docs.lammps.org/Howto_triclinic.html). -The lammps format for the cell is `[x_lo, x_hi, y_lo, y_hi, z_lo, z_hi]`: you have to provide only the coordinates boundaries. +If the plain cell vectors are provided in the cell matrix and this matrix is not diagonal, a QR decomposition is performed to get a triangular cell matrix and the achieve the desidered internal format. In this case all velocities and positions vector are rotated with the rotation matrix Q, that can be obtained with the function `get_rotation_matrix()`. The syntax for creating the object is ``` @@ -290,12 +308,14 @@ analisi_traj = pyanalisi.Trajectory(positions_array, velocity_array, types_array, box_array, - use_matrix_or_lammps_cell_format, - wrap_atomic_coordinates) + input_box_format_id, + wrap_atomic_coordinates, + save_Q_rotation_matrix +) ``` -where `use_matrix_or_lammps_cell_format` is `True` if usual matrix format for the cell is given and `False` if a lammps formatted cell is provided and `wrap_atomic_coordinates` is `True` if you want to wrap all the atomic coordinates inside the cell. +where `input_box_format_id` is one of `pyanalisi.BoxFormat.CellVectors`, `pyanalisi.BoxFormat.LammpsOrtho`, `pyanalisi.BoxFormat.LammpsTriclinic` and describe the format of the array `box_array`. If `wrap_atomic_coordinates` is `True` the code will wrap all the atomic coordinates around the center of the cell (that does not mean inside the cell in the triclinc case). This makes the code for computing the minimum image distance more efficient if the atoms were far away out of the cell, but invalidates all the calculations were the atoms are not supposed to be wrapped back inside the cell. -You can write a LAMMPS bynary trajectory (that can be used by the command line interface with mpi, for example) by calling +You can write a LAMMPS binary trajectory (that can be used by the command line interface with mpi, for example) by calling ``` analisi_traj.write_lammps_binary('output_path', start_timestep, end_timestep) ``` @@ -313,7 +333,8 @@ where `start_timestep` is the first timestep index to dump (indexes start from 0 import pyanalisi analisi_traj = pyanalisi.Trajectory(pos, vel, types, box, True, # matrix format for the box array - False # don't wrap the coordinates + False, # don't wrap the coordinates + False # not interested in Q matrix ) analisi_traj.write_lammps_binary("output_filename.bin" , 0, # starting timestep @@ -322,7 +343,7 @@ where `start_timestep` is the first timestep index to dump (indexes start from 0 ``` -#### LAMMPS binary trajectory interface +### LAMMPS binary trajectory interface This interface is a little more complicated, since it was designed for computing block averages of very big files. It can read the same files that the command line program reads. The object is created with @@ -371,7 +392,7 @@ The `header_array` object must describe the columns that are stored in the bidim Given a trajectory $\bf ^ix_t$ where $i\in\{1,\dots,N_{atoms}\}$ is the atomic index and $t$ is the timestep index, defining the center of mass position of the atomic species $j$ at the timestep $t$ as $$ -^{j}cm_t=\frac{1}{N_{j}}\sum_{i|type(i)=j}^i{\bf x}_{t} +^{j}cm_t=\frac{1}{N_{j}}\sum_{i|type(i)=j}{\bf x}_{t} $$ where $N_j$ is the number of atoms of the specie $j$, the code computes the following diff --git a/lib/include/traiettoriabase.h b/lib/include/traiettoriabase.h index 1b9b19289..ae064a84e 100644 --- a/lib/include/traiettoriabase.h +++ b/lib/include/traiettoriabase.h @@ -164,6 +164,10 @@ class TraiettoriaBase { double get_charge(unsigned int i){if (i void pbc_wrap(ssize_t idx) { double * c = buffer_scatola+buffer_scatola_stride*idx; diff --git a/lib/src/traiettoria_numpy.cpp b/lib/src/traiettoria_numpy.cpp index c0e1dde23..6025bed74 100644 --- a/lib/src/traiettoria_numpy.cpp +++ b/lib/src/traiettoria_numpy.cpp @@ -86,7 +86,7 @@ Traiettoria_numpy::Traiettoria_numpy(pybind11::buffer &&buffer_pos_, buffer_scatola_stride = 6; triclinic=false; std::vector >> cells_qr; // first step, rotation matrix - if (matrix_box== BoxFormat::Lammps_ortho || matrix_box==BoxFormat::Lammps_triclinic){ //nothing to do; maybe here we could do a copy, but maybe not + if (matrix_box== BoxFormat::Lammps_ortho || matrix_box==BoxFormat::Lammps_triclinic){ //convert the format in the internal one, a little more convenient for min image algorithm if (matrix_box==BoxFormat::Lammps_triclinic) { buffer_scatola_stride = 9; triclinic=true; diff --git a/pyanalisi/src/pyanalisi.cpp b/pyanalisi/src/pyanalisi.cpp index 850621ac5..c897e787b 100644 --- a/pyanalisi/src/pyanalisi.cpp +++ b/pyanalisi/src/pyanalisi.cpp @@ -193,9 +193,74 @@ void gk(py::module & m, std::string typestr){ } +template +T& trajectory_common_interfaces(T&&t) { + return t.def("get_positions_copy", [](Tk & t) { + double * foo=nullptr; + if (t.posizioni(0,0) == nullptr) { + return pybind11::array_t(); + } + long nts=t.get_nloaded_timesteps(); + long nat=t.get_natoms(); + foo = new double[nts*nat*3]; + std::memcpy(foo,t.posizioni(0,0),sizeof (double)*nts*nat*3); + pybind11::capsule free_when_done(foo, [](void *f) { + double *foo = reinterpret_cast(f); + std::cerr << "freeing memory @ " << f << "\n"; + delete[] foo; + }); + return pybind11::array_t( + {{nts,nat,3}}, //shape + {3*nat*sizeof (double),3*sizeof(double),sizeof(double)}, + foo, + free_when_done + );}) + .def("get_velocities_copy", [](Tk & t) { + double * foo=t.velocita(0,0); + if (foo == nullptr) { + return pybind11::array_t(); + } + long nts=t.get_nloaded_timesteps(); + long nat=t.get_natoms(); + foo = new double[nts*nat*3]; + std::memcpy(foo,t.velocita(0,0),sizeof (double)*nts*nat*3); + pybind11::capsule free_when_done(foo, [](void *f) { + double *foo = reinterpret_cast(f); + std::cerr << "freeing memory @ " << f << "\n"; + delete[] foo; + }); + return pybind11::array_t( + {{nts,nat,3}}, //shape + {3*nat*sizeof (double),3*sizeof(double),sizeof(double)}, + foo, + free_when_done + );}) + .def("get_box_copy", [](Tk & t) { + double * foo=t.scatola(0); + if (foo == nullptr) { + return pybind11::array_t(); + } + long nts=t.get_nloaded_timesteps(); + long nb=t.get_box_stride(); + foo = new double[nts*nb]; + std::memcpy(foo,t.scatola(0),sizeof (double)*nts*nb); + pybind11::capsule free_when_done(foo, [](void *f) { + double *foo = reinterpret_cast(f); + std::cerr << "freeing memory @ " << f << "\n"; + delete[] foo; + }); + return pybind11::array_t( + {{nts,nb}}, //shape + {nb*sizeof (double),sizeof(double)}, + foo, + free_when_done + );}); +} + PYBIND11_MODULE(pyanalisi,m) { #ifdef BUILD_MMAP - py::class_(m,"Traj", py::buffer_protocol()) + trajectory_common_interfaces>( + py::class_(m,"Traj", py::buffer_protocol())) .def(py::init(),R"begend( Parameters ---------- @@ -271,66 +336,7 @@ PYBIND11_MODULE(pyanalisi,m) { foo, free_when_done );}) - .def("get_positions_copy", [](Traiettoria & t) { - double * foo=nullptr; - if (t.posizioni(0,0) == nullptr) { - return pybind11::array_t(); - } - long nts=t.get_nloaded_timesteps(); - long nat=t.get_natoms(); - foo = new double[nts*nat*3]; - std::memcpy(foo,t.posizioni(0,0),sizeof (double)*nts*nat*3); - pybind11::capsule free_when_done(foo, [](void *f) { - double *foo = reinterpret_cast(f); - std::cerr << "freeing memory @ " << f << "\n"; - delete[] foo; - }); - return pybind11::array_t( - {{nts,nat,3}}, //shape - {3*nat*sizeof (double),3*sizeof(double),sizeof(double)}, - foo, - free_when_done - );}) - .def("get_velocities_copy", [](Traiettoria & t) { - double * foo=t.velocita(0,0); - if (foo == nullptr) { - return pybind11::array_t(); - } - long nts=t.get_nloaded_timesteps(); - long nat=t.get_natoms(); - foo = new double[nts*nat*3]; - std::memcpy(foo,t.velocita(0,0),sizeof (double)*nts*nat*3); - pybind11::capsule free_when_done(foo, [](void *f) { - double *foo = reinterpret_cast(f); - std::cerr << "freeing memory @ " << f << "\n"; - delete[] foo; - }); - return pybind11::array_t( - {{nts,nat,3}}, //shape - {3*nat*sizeof (double),3*sizeof(double),sizeof(double)}, - foo, - free_when_done - );}) - .def("get_box_copy", [](Traiettoria & t) { - double * foo=t.scatola(0); - if (foo == nullptr) { - return pybind11::array_t(); - } - long nts=t.get_nloaded_timesteps(); - long nb=t.get_box_stride(); - foo = new double[nts*nb]; - std::memcpy(foo,t.scatola(0),sizeof (double)*nts*nb); - pybind11::capsule free_when_done(foo, [](void *f) { - double *foo = reinterpret_cast(f); - std::cerr << "freeing memory @ " << f << "\n"; - delete[] foo; - }); - return pybind11::array_t( - {{nts,nb}}, //shape - {nb*sizeof (double),sizeof(double)}, - foo, - free_when_done - );}) + ; @@ -366,7 +372,8 @@ PYBIND11_MODULE(pyanalisi,m) { return number of timesteps read )begend"); - py::class_(m,"Trajectory") + trajectory_common_interfaces>( + py::class_(m,"Trajectory")) .def(py::init(),R"lol( Parameters ---------- @@ -407,66 +414,6 @@ PYBIND11_MODULE(pyanalisi,m) { foo, free_when_done );}) - .def("get_positions_copy", [](Traiettoria_numpy & t) { - double * foo=t.posizioni(0,0); - if (foo == nullptr) { - return pybind11::array_t(); - } - long nts=t.get_ntimesteps(); - long nat=t.get_natoms(); - foo = new double[nts*nat*3]; - std::memcpy(foo,t.posizioni(0,0),sizeof (double)*nts*nat*3); - pybind11::capsule free_when_done(foo, [](void *f) { - double *foo = reinterpret_cast(f); - std::cerr << "freeing memory @ " << f << "\n"; - delete[] foo; - }); - return pybind11::array_t( - {{nts,nat,3}}, //shape - {3*nat*sizeof (double),3*sizeof(double),sizeof(double)}, - foo, - free_when_done - );}) - .def("get_velocities_copy", [](Traiettoria_numpy & t) { - double * foo=t.velocita(0,0); - if (foo == nullptr) { - return pybind11::array_t(); - } - long nts=t.get_ntimesteps(); - long nat=t.get_natoms(); - foo = new double[nts*nat*3]; - std::memcpy(foo,t.velocita(0,0),sizeof (double)*nts*nat*3); - pybind11::capsule free_when_done(foo, [](void *f) { - double *foo = reinterpret_cast(f); - std::cerr << "freeing memory @ " << f << "\n"; - delete[] foo; - }); - return pybind11::array_t( - {{nts,nat,3}}, //shape - {3*nat*sizeof (double),3*sizeof(double),sizeof(double)}, - foo, - free_when_done - );}) - .def("get_box_copy", [](Traiettoria_numpy & t) { - double * foo=t.scatola(0); - if (foo == nullptr) { - return pybind11::array_t(); - } - long nts=t.get_ntimesteps(); - long nb=t.get_box_stride(); - foo = new double[nts*nb]; - std::memcpy(foo,t.scatola(0),sizeof (double)*nts*nb); - pybind11::capsule free_when_done(foo, [](void *f) { - double *foo = reinterpret_cast(f); - std::cerr << "freeing memory @ " << f << "\n"; - delete[] foo; - }); - return pybind11::array_t( - {{nts,nb}}, //shape - {nb*sizeof (double),sizeof(double)}, - foo, - free_when_done - );}) ; py::enum_(m, "BoxFormat", py::arithmetic()) .value("Invalid", Traiettoria_numpy::BoxFormat::Invalid) diff --git a/svgs/0042e6a739d97acc385edba86cca9bf8.svg b/svgs/0042e6a739d97acc385edba86cca9bf8.svg index 3e65102cb..81f852914 100644 --- a/svgs/0042e6a739d97acc385edba86cca9bf8.svg +++ b/svgs/0042e6a739d97acc385edba86cca9bf8.svg @@ -1,10 +1,10 @@ - + - - - + + + - + diff --git a/svgs/0c0d2559a0357c70d0d2e3f54ec979e4.svg b/svgs/0c0d2559a0357c70d0d2e3f54ec979e4.svg index 06c0b591b..d2dcf2997 100644 --- a/svgs/0c0d2559a0357c70d0d2e3f54ec979e4.svg +++ b/svgs/0c0d2559a0357c70d0d2e3f54ec979e4.svg @@ -1,44 +1,44 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -68,15 +68,15 @@ - + - + - + @@ -87,7 +87,7 @@ - + @@ -122,12 +122,12 @@ - + - + @@ -150,15 +150,15 @@ - + - + - + @@ -167,7 +167,7 @@ - + diff --git a/svgs/0e45672d84ee21e1464939301cc46b43.svg b/svgs/0e45672d84ee21e1464939301cc46b43.svg index 0e7f34767..dbca51da5 100644 --- a/svgs/0e45672d84ee21e1464939301cc46b43.svg +++ b/svgs/0e45672d84ee21e1464939301cc46b43.svg @@ -1,21 +1,21 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + diff --git a/svgs/0e51a2dede42189d77627c4d742822c3.svg b/svgs/0e51a2dede42189d77627c4d742822c3.svg index 494512b09..ee886abdd 100644 --- a/svgs/0e51a2dede42189d77627c4d742822c3.svg +++ b/svgs/0e51a2dede42189d77627c4d742822c3.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/1069af11f835cf7996677118283e621d.svg b/svgs/1069af11f835cf7996677118283e621d.svg deleted file mode 100644 index 058ed08ab..000000000 --- a/svgs/1069af11f835cf7996677118283e621d.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/svgs/1154b2711344812ed220c9c2cb9fdc49.svg b/svgs/1154b2711344812ed220c9c2cb9fdc49.svg index 0022be234..05b63c36f 100644 --- a/svgs/1154b2711344812ed220c9c2cb9fdc49.svg +++ b/svgs/1154b2711344812ed220c9c2cb9fdc49.svg @@ -1,11 +1,11 @@ - + - - - - + + + + - + diff --git a/svgs/16000f6ee652afc9c9c2e4300018fc97.svg b/svgs/16000f6ee652afc9c9c2e4300018fc97.svg index d65e18869..02d8b7f2e 100644 --- a/svgs/16000f6ee652afc9c9c2e4300018fc97.svg +++ b/svgs/16000f6ee652afc9c9c2e4300018fc97.svg @@ -1,12 +1,12 @@ - + - - - - - + + + + + - + diff --git a/svgs/168f1aff83bb74b9c5f70ae822348485.svg b/svgs/168f1aff83bb74b9c5f70ae822348485.svg index e1fecc427..db5e9a763 100644 --- a/svgs/168f1aff83bb74b9c5f70ae822348485.svg +++ b/svgs/168f1aff83bb74b9c5f70ae822348485.svg @@ -1,53 +1,53 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -61,7 +61,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -120,7 +120,7 @@ - + @@ -137,7 +137,7 @@ - + diff --git a/svgs/16fd8b4eda8830c33d24fbf02c914e8f.svg b/svgs/16fd8b4eda8830c33d24fbf02c914e8f.svg index a4fc94540..a0bf78bd4 100644 --- a/svgs/16fd8b4eda8830c33d24fbf02c914e8f.svg +++ b/svgs/16fd8b4eda8830c33d24fbf02c914e8f.svg @@ -1,21 +1,21 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + diff --git a/svgs/179637dd5a919e5e8305e3b17e5a3f98.svg b/svgs/179637dd5a919e5e8305e3b17e5a3f98.svg index 08fdccfe9..cf988e883 100644 --- a/svgs/179637dd5a919e5e8305e3b17e5a3f98.svg +++ b/svgs/179637dd5a919e5e8305e3b17e5a3f98.svg @@ -1,34 +1,34 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -39,7 +39,7 @@ - + diff --git a/svgs/1a60f096b735c3e3bae490620b576fc8.svg b/svgs/1a60f096b735c3e3bae490620b576fc8.svg index cca0202b5..ea0137abb 100644 --- a/svgs/1a60f096b735c3e3bae490620b576fc8.svg +++ b/svgs/1a60f096b735c3e3bae490620b576fc8.svg @@ -1,14 +1,14 @@ - + - - - - - - - + + + + + + + - + diff --git a/svgs/21fd4e8eecd6bdf1a4d3d6bd1fb8d733.svg b/svgs/21fd4e8eecd6bdf1a4d3d6bd1fb8d733.svg index b5167e854..5ae1de16c 100644 --- a/svgs/21fd4e8eecd6bdf1a4d3d6bd1fb8d733.svg +++ b/svgs/21fd4e8eecd6bdf1a4d3d6bd1fb8d733.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/2b241d102e574b95a855c128779eafc0.svg b/svgs/2b241d102e574b95a855c128779eafc0.svg index d0bf4df9f..9b8dc822c 100644 --- a/svgs/2b241d102e574b95a855c128779eafc0.svg +++ b/svgs/2b241d102e574b95a855c128779eafc0.svg @@ -1,35 +1,35 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/svgs/2dffde5e18cde45e1794c82325eef7bb.svg b/svgs/2dffde5e18cde45e1794c82325eef7bb.svg index 30c48bac9..45a50cbbb 100644 --- a/svgs/2dffde5e18cde45e1794c82325eef7bb.svg +++ b/svgs/2dffde5e18cde45e1794c82325eef7bb.svg @@ -1,34 +1,34 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -37,7 +37,7 @@ - + diff --git a/svgs/2e22eb5d0b0553029f9b63efc7b27688.svg b/svgs/2e22eb5d0b0553029f9b63efc7b27688.svg index 0f8b2be54..579c639c7 100644 --- a/svgs/2e22eb5d0b0553029f9b63efc7b27688.svg +++ b/svgs/2e22eb5d0b0553029f9b63efc7b27688.svg @@ -1,12 +1,12 @@ - + - - - - - + + + + + - + diff --git a/svgs/2f2322dff5bde89c37bcae4116fe20a8.svg b/svgs/2f2322dff5bde89c37bcae4116fe20a8.svg index c9a1411e3..6ac239672 100644 --- a/svgs/2f2322dff5bde89c37bcae4116fe20a8.svg +++ b/svgs/2f2322dff5bde89c37bcae4116fe20a8.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/341122b6a0b79a1002ddaadb4be1f5dc.svg b/svgs/341122b6a0b79a1002ddaadb4be1f5dc.svg index 24666a08f..56e12a7b5 100644 --- a/svgs/341122b6a0b79a1002ddaadb4be1f5dc.svg +++ b/svgs/341122b6a0b79a1002ddaadb4be1f5dc.svg @@ -1,13 +1,13 @@ - + - - - - - - + + + + + + - + diff --git a/svgs/36b5afebdba34564d884d347484ac0c7.svg b/svgs/36b5afebdba34564d884d347484ac0c7.svg index b550e9b05..d772fbca6 100644 --- a/svgs/36b5afebdba34564d884d347484ac0c7.svg +++ b/svgs/36b5afebdba34564d884d347484ac0c7.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/36c1aeba203f707a20a8a19715dff5bc.svg b/svgs/36c1aeba203f707a20a8a19715dff5bc.svg index f3db33b72..7f30333c7 100644 --- a/svgs/36c1aeba203f707a20a8a19715dff5bc.svg +++ b/svgs/36c1aeba203f707a20a8a19715dff5bc.svg @@ -1,11 +1,11 @@ - + - - - - + + + + - + diff --git a/svgs/3dabeef25aa17a14cbe93b2a1a3372f7.svg b/svgs/3dabeef25aa17a14cbe93b2a1a3372f7.svg index f85f85e72..728b3ea41 100644 --- a/svgs/3dabeef25aa17a14cbe93b2a1a3372f7.svg +++ b/svgs/3dabeef25aa17a14cbe93b2a1a3372f7.svg @@ -1,25 +1,25 @@ - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + diff --git a/svgs/3ef98fe3db393644cede24e594d556d5.svg b/svgs/3ef98fe3db393644cede24e594d556d5.svg index ece5c4061..2c21877bf 100644 --- a/svgs/3ef98fe3db393644cede24e594d556d5.svg +++ b/svgs/3ef98fe3db393644cede24e594d556d5.svg @@ -1,15 +1,15 @@ - + - - - - - - - - + + + + + + + + - + diff --git a/svgs/40a509fd1a7316439f1607d512f059a5.svg b/svgs/40a509fd1a7316439f1607d512f059a5.svg index aa992c87a..e7198d066 100644 --- a/svgs/40a509fd1a7316439f1607d512f059a5.svg +++ b/svgs/40a509fd1a7316439f1607d512f059a5.svg @@ -1,10 +1,10 @@ - + - - - + + + - + diff --git a/svgs/4b650efe36e9b5341bf3ca60aff67dcf.svg b/svgs/4b650efe36e9b5341bf3ca60aff67dcf.svg index 7c8de3c5a..89fe2eb97 100644 --- a/svgs/4b650efe36e9b5341bf3ca60aff67dcf.svg +++ b/svgs/4b650efe36e9b5341bf3ca60aff67dcf.svg @@ -1,12 +1,12 @@ - + - - - - - + + + + + - + diff --git a/svgs/4cc129af69c969f6e93ce3ec90587d2e.svg b/svgs/4cc129af69c969f6e93ce3ec90587d2e.svg index fa49a20ab..70edc0645 100644 --- a/svgs/4cc129af69c969f6e93ce3ec90587d2e.svg +++ b/svgs/4cc129af69c969f6e93ce3ec90587d2e.svg @@ -1,12 +1,12 @@ - + - - - - - + + + + + - + diff --git a/svgs/4f4f4e395762a3af4575de74c019ebb5.svg b/svgs/4f4f4e395762a3af4575de74c019ebb5.svg index d36cb544e..e627da0aa 100644 --- a/svgs/4f4f4e395762a3af4575de74c019ebb5.svg +++ b/svgs/4f4f4e395762a3af4575de74c019ebb5.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/5748d094c0cc1c4f6cab2f1906cccb2c.svg b/svgs/5748d094c0cc1c4f6cab2f1906cccb2c.svg index 77dbcf337..59222eb92 100644 --- a/svgs/5748d094c0cc1c4f6cab2f1906cccb2c.svg +++ b/svgs/5748d094c0cc1c4f6cab2f1906cccb2c.svg @@ -1,23 +1,23 @@ - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + diff --git a/svgs/575bfed20f98976cb4eb301ca9ff8312.svg b/svgs/575bfed20f98976cb4eb301ca9ff8312.svg index e51f7e7a3..42d411431 100644 --- a/svgs/575bfed20f98976cb4eb301ca9ff8312.svg +++ b/svgs/575bfed20f98976cb4eb301ca9ff8312.svg @@ -1,12 +1,12 @@ - + - - - - - + + + + + - + diff --git a/svgs/58038ea2478f4b7921bfee4e82035dbd.svg b/svgs/58038ea2478f4b7921bfee4e82035dbd.svg index a4f4fcbc3..3b1f0737f 100644 --- a/svgs/58038ea2478f4b7921bfee4e82035dbd.svg +++ b/svgs/58038ea2478f4b7921bfee4e82035dbd.svg @@ -1,23 +1,23 @@ - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + @@ -47,7 +47,7 @@ - + diff --git a/svgs/5f8096da90fe7f742b4614ecdcaf33f6.svg b/svgs/5f8096da90fe7f742b4614ecdcaf33f6.svg index 7179b788f..62c318c39 100644 --- a/svgs/5f8096da90fe7f742b4614ecdcaf33f6.svg +++ b/svgs/5f8096da90fe7f742b4614ecdcaf33f6.svg @@ -1,13 +1,13 @@ - + - - - - - - + + + + + + - + diff --git a/svgs/63bb9849783d01d91403bc9a5fea12a2.svg b/svgs/63bb9849783d01d91403bc9a5fea12a2.svg index 853335889..8d781cbf2 100644 --- a/svgs/63bb9849783d01d91403bc9a5fea12a2.svg +++ b/svgs/63bb9849783d01d91403bc9a5fea12a2.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/6ea8ff937f14aa2a3e0622a395dee889.svg b/svgs/6ea8ff937f14aa2a3e0622a395dee889.svg index 2051051ce..12cec2c21 100644 --- a/svgs/6ea8ff937f14aa2a3e0622a395dee889.svg +++ b/svgs/6ea8ff937f14aa2a3e0622a395dee889.svg @@ -1,13 +1,13 @@ - + - - - - + + + + - + - + \ No newline at end of file diff --git a/svgs/77a3b857d53fb44e33b53e4c8b68351a.svg b/svgs/77a3b857d53fb44e33b53e4c8b68351a.svg index 12297cbb2..d000c3de6 100644 --- a/svgs/77a3b857d53fb44e33b53e4c8b68351a.svg +++ b/svgs/77a3b857d53fb44e33b53e4c8b68351a.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/77a68d5c8eea72cbfc44afccff1db2d1.svg b/svgs/77a68d5c8eea72cbfc44afccff1db2d1.svg index ef7b194cd..dc0f4a486 100644 --- a/svgs/77a68d5c8eea72cbfc44afccff1db2d1.svg +++ b/svgs/77a68d5c8eea72cbfc44afccff1db2d1.svg @@ -1,14 +1,14 @@ - + - - - - - - - + + + + + + + - + diff --git a/svgs/7ded6b2994b505ccc139d8bee7e8cef1.svg b/svgs/7ded6b2994b505ccc139d8bee7e8cef1.svg index f4ce71918..0282b86fd 100644 --- a/svgs/7ded6b2994b505ccc139d8bee7e8cef1.svg +++ b/svgs/7ded6b2994b505ccc139d8bee7e8cef1.svg @@ -1,24 +1,24 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + diff --git a/svgs/7e5a4eb9cf494cd7ab77c9102b9e5450.svg b/svgs/7e5a4eb9cf494cd7ab77c9102b9e5450.svg index b7ebb3efd..127f6d82f 100644 --- a/svgs/7e5a4eb9cf494cd7ab77c9102b9e5450.svg +++ b/svgs/7e5a4eb9cf494cd7ab77c9102b9e5450.svg @@ -1,11 +1,11 @@ - + - - - - + + + + - + diff --git a/svgs/7ea990c3d2fab85fabaa40d4f36644d8.svg b/svgs/7ea990c3d2fab85fabaa40d4f36644d8.svg index 3a8b301cf..612eff28d 100644 --- a/svgs/7ea990c3d2fab85fabaa40d4f36644d8.svg +++ b/svgs/7ea990c3d2fab85fabaa40d4f36644d8.svg @@ -1,14 +1,14 @@ - + - - - - - - - + + + + + + + - + diff --git a/svgs/82e473be44804d79b6439eb860647d42.svg b/svgs/82e473be44804d79b6439eb860647d42.svg index 7efb86bb3..671882de5 100644 --- a/svgs/82e473be44804d79b6439eb860647d42.svg +++ b/svgs/82e473be44804d79b6439eb860647d42.svg @@ -1,10 +1,10 @@ - + - - - + + + - + diff --git a/svgs/8379d82223552fdbdfd98783823c755b.svg b/svgs/8379d82223552fdbdfd98783823c755b.svg index 956895c21..a4e17348e 100644 --- a/svgs/8379d82223552fdbdfd98783823c755b.svg +++ b/svgs/8379d82223552fdbdfd98783823c755b.svg @@ -1,12 +1,12 @@ - + - - - - - + + + + + - + diff --git a/svgs/8520326519dfeaca6a867a16e6c56fd7.svg b/svgs/8520326519dfeaca6a867a16e6c56fd7.svg index 9d2ab6671..b1c136660 100644 --- a/svgs/8520326519dfeaca6a867a16e6c56fd7.svg +++ b/svgs/8520326519dfeaca6a867a16e6c56fd7.svg @@ -1,22 +1,22 @@ - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + @@ -36,7 +36,7 @@ - + diff --git a/svgs/89ebf178c4461aec4cd4651cafb867ab.svg b/svgs/89ebf178c4461aec4cd4651cafb867ab.svg index a2d54e026..c7ae62e5e 100644 --- a/svgs/89ebf178c4461aec4cd4651cafb867ab.svg +++ b/svgs/89ebf178c4461aec4cd4651cafb867ab.svg @@ -1,41 +1,41 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -47,7 +47,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -135,7 +135,7 @@ - + diff --git a/svgs/8eb543f68dac24748e65e2e4c5fc968c.svg b/svgs/8eb543f68dac24748e65e2e4c5fc968c.svg index f701cb19c..3f9429f10 100644 --- a/svgs/8eb543f68dac24748e65e2e4c5fc968c.svg +++ b/svgs/8eb543f68dac24748e65e2e4c5fc968c.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/9442d407594839d38f91ad3d2deb134e.svg b/svgs/9442d407594839d38f91ad3d2deb134e.svg index fda4015c7..ac51fd308 100644 --- a/svgs/9442d407594839d38f91ad3d2deb134e.svg +++ b/svgs/9442d407594839d38f91ad3d2deb134e.svg @@ -1,10 +1,10 @@ - + - - - + + + - + diff --git a/svgs/948f531991fcec35915fa196d15d6c93.svg b/svgs/948f531991fcec35915fa196d15d6c93.svg index c18b0b1ef..dcf57bd53 100644 --- a/svgs/948f531991fcec35915fa196d15d6c93.svg +++ b/svgs/948f531991fcec35915fa196d15d6c93.svg @@ -1,14 +1,14 @@ - + - - - - - - - + + + + + + + - + diff --git a/svgs/979acf5a19e3998a4d36c700f47a8a93.svg b/svgs/979acf5a19e3998a4d36c700f47a8a93.svg index 2a915b5eb..607f52d89 100644 --- a/svgs/979acf5a19e3998a4d36c700f47a8a93.svg +++ b/svgs/979acf5a19e3998a4d36c700f47a8a93.svg @@ -1,30 +1,30 @@ - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/svgs/995aad7488ee6146d6b411759a5db052.svg b/svgs/995aad7488ee6146d6b411759a5db052.svg index 603d756e3..b463a9afd 100644 --- a/svgs/995aad7488ee6146d6b411759a5db052.svg +++ b/svgs/995aad7488ee6146d6b411759a5db052.svg @@ -1,11 +1,11 @@ - + - - - - + + + + - + diff --git a/svgs/9c46ade8e39f77cf4db90ff1e0f72236.svg b/svgs/9c46ade8e39f77cf4db90ff1e0f72236.svg index cce73316c..74d8fe7d6 100644 --- a/svgs/9c46ade8e39f77cf4db90ff1e0f72236.svg +++ b/svgs/9c46ade8e39f77cf4db90ff1e0f72236.svg @@ -1,20 +1,20 @@ - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/svgs/9dd4c0a065698518e075c4a3f2428ba9.svg b/svgs/9dd4c0a065698518e075c4a3f2428ba9.svg index 4dd128a18..530392b8f 100644 --- a/svgs/9dd4c0a065698518e075c4a3f2428ba9.svg +++ b/svgs/9dd4c0a065698518e075c4a3f2428ba9.svg @@ -1,13 +1,13 @@ - + - - - - - - + + + + + + - + diff --git a/svgs/a35d9ea85439dede6d90c9f53db8be8c.svg b/svgs/a35d9ea85439dede6d90c9f53db8be8c.svg index 341c11329..6004103ba 100644 --- a/svgs/a35d9ea85439dede6d90c9f53db8be8c.svg +++ b/svgs/a35d9ea85439dede6d90c9f53db8be8c.svg @@ -1,14 +1,14 @@ - + - - - - - - - + + + + + + + - + diff --git a/svgs/a3a094dfc4263aa79479f7a66c9c8a1a.svg b/svgs/a3a094dfc4263aa79479f7a66c9c8a1a.svg index 0c3536f1f..910b45618 100644 --- a/svgs/a3a094dfc4263aa79479f7a66c9c8a1a.svg +++ b/svgs/a3a094dfc4263aa79479f7a66c9c8a1a.svg @@ -1,31 +1,31 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/svgs/a6b2ca117874a8471ddab2b11814ebde.svg b/svgs/a6b2ca117874a8471ddab2b11814ebde.svg index a1970b585..377b03ebd 100644 --- a/svgs/a6b2ca117874a8471ddab2b11814ebde.svg +++ b/svgs/a6b2ca117874a8471ddab2b11814ebde.svg @@ -1,14 +1,14 @@ - + - - - - - - - + + + + + + + - + diff --git a/svgs/b09723ed7a995d2e7a5f91d4b69e91a3.svg b/svgs/b09723ed7a995d2e7a5f91d4b69e91a3.svg index 5319e0900..32bf16ed5 100644 --- a/svgs/b09723ed7a995d2e7a5f91d4b69e91a3.svg +++ b/svgs/b09723ed7a995d2e7a5f91d4b69e91a3.svg @@ -1,14 +1,14 @@ - + - - - - - - - + + + + + + + - + diff --git a/svgs/bcd81920696e26093495d90eb4cd7b1b.svg b/svgs/bcd81920696e26093495d90eb4cd7b1b.svg index 7e159fb95..ada4898e6 100644 --- a/svgs/bcd81920696e26093495d90eb4cd7b1b.svg +++ b/svgs/bcd81920696e26093495d90eb4cd7b1b.svg @@ -1,10 +1,10 @@ - + - - - + + + - + diff --git a/svgs/bf032e59612f5135c5425a8a0c07f2f7.svg b/svgs/bf032e59612f5135c5425a8a0c07f2f7.svg index 7497adedd..cc784c3ef 100644 --- a/svgs/bf032e59612f5135c5425a8a0c07f2f7.svg +++ b/svgs/bf032e59612f5135c5425a8a0c07f2f7.svg @@ -1,10 +1,10 @@ - + - - - + + + - + diff --git a/svgs/c745b9b57c145ec5577b82542b2df546.svg b/svgs/c745b9b57c145ec5577b82542b2df546.svg index dd7b80a01..0faec9c48 100644 --- a/svgs/c745b9b57c145ec5577b82542b2df546.svg +++ b/svgs/c745b9b57c145ec5577b82542b2df546.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/cd779299413189940523acc73b2c31da.svg b/svgs/cd779299413189940523acc73b2c31da.svg index dcf0170b2..0a85affaa 100644 --- a/svgs/cd779299413189940523acc73b2c31da.svg +++ b/svgs/cd779299413189940523acc73b2c31da.svg @@ -1,24 +1,24 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + diff --git a/svgs/cdcac8939f3840cd8cddf40059a4cf58.svg b/svgs/cdcac8939f3840cd8cddf40059a4cf58.svg index 6ef9bdd37..703c2c0f4 100644 --- a/svgs/cdcac8939f3840cd8cddf40059a4cf58.svg +++ b/svgs/cdcac8939f3840cd8cddf40059a4cf58.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/d26f972e4392a750678405391a6a77c7.svg b/svgs/d26f972e4392a750678405391a6a77c7.svg index e46444698..e99b889ba 100644 --- a/svgs/d26f972e4392a750678405391a6a77c7.svg +++ b/svgs/d26f972e4392a750678405391a6a77c7.svg @@ -1,12 +1,12 @@ - + - - - - - + + + + + - + diff --git a/svgs/d30a65b936d8007addc9c789d5a7ae49.svg b/svgs/d30a65b936d8007addc9c789d5a7ae49.svg index a5b5057da..682372682 100644 --- a/svgs/d30a65b936d8007addc9c789d5a7ae49.svg +++ b/svgs/d30a65b936d8007addc9c789d5a7ae49.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/dabaca28551d4a5f720bd5103eb4a5da.svg b/svgs/dabaca28551d4a5f720bd5103eb4a5da.svg index 109c71568..2bf220a3a 100644 --- a/svgs/dabaca28551d4a5f720bd5103eb4a5da.svg +++ b/svgs/dabaca28551d4a5f720bd5103eb4a5da.svg @@ -1,30 +1,30 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + @@ -39,9 +39,9 @@ - + - + @@ -53,9 +53,9 @@ - + - + diff --git a/svgs/e17d8a1279f0bfa5b92c35f05c242243.svg b/svgs/e17d8a1279f0bfa5b92c35f05c242243.svg index 533a5d30d..27e384f7e 100644 --- a/svgs/e17d8a1279f0bfa5b92c35f05c242243.svg +++ b/svgs/e17d8a1279f0bfa5b92c35f05c242243.svg @@ -1,15 +1,15 @@ - + - - - - - - - - + + + + + + + + - + diff --git a/svgs/e2c65f38f063936d351de3aa6b418190.svg b/svgs/e2c65f38f063936d351de3aa6b418190.svg index cd3493014..4ff8634e9 100644 --- a/svgs/e2c65f38f063936d351de3aa6b418190.svg +++ b/svgs/e2c65f38f063936d351de3aa6b418190.svg @@ -1,11 +1,11 @@ - + - - - - + + + + - + diff --git a/svgs/ea9309e975a6f8aa8582bb0e7e8f93f9.svg b/svgs/ea9309e975a6f8aa8582bb0e7e8f93f9.svg index bf0678660..b85f0c879 100644 --- a/svgs/ea9309e975a6f8aa8582bb0e7e8f93f9.svg +++ b/svgs/ea9309e975a6f8aa8582bb0e7e8f93f9.svg @@ -1,26 +1,26 @@ - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + diff --git a/svgs/ef6d9536520a15dcbc2f9d92fbe52e9c.svg b/svgs/ef6d9536520a15dcbc2f9d92fbe52e9c.svg index 21566ecf2..ffee89610 100644 --- a/svgs/ef6d9536520a15dcbc2f9d92fbe52e9c.svg +++ b/svgs/ef6d9536520a15dcbc2f9d92fbe52e9c.svg @@ -1,11 +1,11 @@ - + - - - - + + + + - + diff --git a/svgs/f34d038041b002c0270cb552072d9188.svg b/svgs/f34d038041b002c0270cb552072d9188.svg index d3b25094f..2bcd3bf01 100644 --- a/svgs/f34d038041b002c0270cb552072d9188.svg +++ b/svgs/f34d038041b002c0270cb552072d9188.svg @@ -1,29 +1,29 @@ - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/svgs/f9c4988898e7f532b9f826a75014ed3c.svg b/svgs/f9c4988898e7f532b9f826a75014ed3c.svg index e0574975c..53648f1ba 100644 --- a/svgs/f9c4988898e7f532b9f826a75014ed3c.svg +++ b/svgs/f9c4988898e7f532b9f826a75014ed3c.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/svgs/fb6fd8b28a21787d6b119a3f059a9bd3.svg b/svgs/fb6fd8b28a21787d6b119a3f059a9bd3.svg index 4543f8000..ff135838f 100644 --- a/svgs/fb6fd8b28a21787d6b119a3f059a9bd3.svg +++ b/svgs/fb6fd8b28a21787d6b119a3f059a9bd3.svg @@ -1,39 +1,39 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -45,7 +45,7 @@ - + @@ -69,7 +69,7 @@ - + @@ -109,7 +109,7 @@ - + diff --git a/svgs/fb97d38bcc19230b0acd442e17db879c.svg b/svgs/fb97d38bcc19230b0acd442e17db879c.svg index cd0df3da8..8cd4334ae 100644 --- a/svgs/fb97d38bcc19230b0acd442e17db879c.svg +++ b/svgs/fb97d38bcc19230b0acd442e17db879c.svg @@ -1,9 +1,9 @@ - + - - + + - + \ No newline at end of file diff --git a/tests/cpp_regression_data/pbc_1 b/tests/cpp_regression_data/pbc_1 new file mode 100644 index 000000000..293dab5d4 Binary files /dev/null and b/tests/cpp_regression_data/pbc_1 differ diff --git a/tests/cpp_regression_data/pbc_2 b/tests/cpp_regression_data/pbc_2 new file mode 100644 index 000000000..f3e83e95c Binary files /dev/null and b/tests/cpp_regression_data/pbc_2 differ