converted to XeLaTeX & more Intro
This commit is contained in:
parent
8b87f599ec
commit
95c55e3c15
@ -1,11 +1,11 @@
|
||||
all: ma.md bibma.bib template.tex settings/abkuerzungen.tex settings/commands.tex settings/environments.tex settings/hyphenation.tex settings/packages.tex files/titlepage.tex files/erklaerung.tex
|
||||
pandoc -s -N --template=template.tex ma.md -o ma.tex
|
||||
rm -f ma.pdf ma.aux ma.idx ma.lof ma.log ma.lot ma.out ma.tdo ma.toc ma.bbl ma.blg ma.loa
|
||||
pdflatex -interaction batchmode ma.tex || true
|
||||
xelatex -interaction batchmode ma.tex || true
|
||||
bibtexu ma
|
||||
pdflatex -interaction batchmode ma.tex || true
|
||||
xelatex -interaction batchmode ma.tex || true
|
||||
while test `cat ma.log | grep -e "\(Rerun to get citations correct\)" | wc -l` -gt 0 ; do \
|
||||
rm ma.log && (pdflatex -interaction batchmode ma.tex || true) \
|
||||
rm ma.log && (xelatex -interaction batchmode ma.tex || true) \
|
||||
done
|
||||
rm -f ma.aux ma.idx ma.lof ma.lot ma.out ma.tdo ma.toc ma.bbl ma.blg ma.loa
|
||||
# rm -f ma.log
|
||||
|
@ -1,6 +1,9 @@
|
||||
10x10x10 3x variablität errechnen
|
||||
- variablität soll sich unterscheiden -> Plot
|
||||
- Punkte in der Mitte tragen nichts zur Parametrisierung bei, da zu weit weg
|
||||
4x5x4, 4x4x7 100x rechnen + plotten
|
||||
|
||||
4x4x5, 7x4x4 100x rechnen + plotten
|
||||
- 1. done, 2. rechnet
|
||||
|
||||
1D-Fall noch 7x4, 4x7 und 7x7 als hochauflösendes.
|
||||
- done
|
||||
|
@ -87,3 +87,31 @@ doi = {10.1137/0111030},
|
||||
URL = {https://doi.org/10.1137/0111030},
|
||||
eprint = {https://doi.org/10.1137/0111030}
|
||||
}
|
||||
@article{minai2006complex,
|
||||
title={Complex engineered systems: A new paradigm},
|
||||
author={Minai, Ali A and Braha, Dan and Bar-Yam, Yaneer},
|
||||
journal={Complex engineered systems: Science meets technology},
|
||||
pages={1--21},
|
||||
year={2006},
|
||||
publisher={Springer},
|
||||
url={https://www.researchgate.net/profile/Yaneer_Bar-Yam/publication/225104044_Complex_Engineered_Systems_A_New_Paradigm/links/59107f20a6fdccbfd57eb84d/Complex-Engineered-Systems-A-New-Paradigm.pdf}
|
||||
}
|
||||
@article{wagner1996complex,
|
||||
title={COMPLEX ADAPTATIONS AND THE EVOLUTION OF EVOLVABILITY},
|
||||
author={WAGNER, GUNTER P and ALTENBERG23, LEE},
|
||||
journal={Evolution},
|
||||
volume={50},
|
||||
number={3},
|
||||
pages={967--976},
|
||||
year={1996},
|
||||
url={http://arep.med.harvard.edu/pdf/Wagner96.pdf},
|
||||
}
|
||||
@inproceedings{richter2015evolvability,
|
||||
title={Evolvability of representations in complex system engineering: a survey},
|
||||
author={Richter, Andreas and Botsch, Mario and Menzel, Stefan},
|
||||
booktitle={Evolutionary Computation (CEC), 2015 IEEE Congress on},
|
||||
pages={1327--1335},
|
||||
year={2015},
|
||||
organization={IEEE},
|
||||
url={http://www.graphics.uni-bielefeld.de/publications/cec15.pdf}
|
||||
}
|
||||
|
@ -2,11 +2,10 @@
|
||||
\thispagestyle{empty}
|
||||
\vspace*{\stretch{1}}
|
||||
\noindent
|
||||
{\huge Erklärung}\\[1cm]
|
||||
{\huge Declaration of own work(?)}\\[1cm]
|
||||
I hereby declare that this thesis is my own work and effort. Where other sources of information have been used, they have been acknowledged.
|
||||
blah blah
|
||||
|
||||
\\[2cm]
|
||||
\improvement[inline]{write proper declaration..}
|
||||
%\\[2cm]
|
||||
Bielefeld, den \today\hspace{\fill}
|
||||
\parbox[t]{5cm}{\dotfill\\ \centering Stefan Dresselhaus}
|
||||
\vspace*{\stretch{3}}
|
||||
|
75
arbeit/ma.md
75
arbeit/ma.md
@ -24,20 +24,54 @@ Unless otherwise noted the following holds:
|
||||
# Introduction
|
||||
|
||||
\improvement[inline]{mehr Motivation, Ziel der Arbeit, Wieso das ganze?\newline
|
||||
Wieso untersuchen wir das überhaupt?\newline
|
||||
Wieso untersuchen wir das überhaupt? \cmark \newline
|
||||
Aufbau der Arbeit? \xmark \newline
|
||||
Mehr Bilder}
|
||||
|
||||
In this Master Thesis we try to extend a previously proposed concept of
|
||||
predicting the evolvability of \acf{FFD} given a
|
||||
Deformation-Matrix\cite{anrichterEvol}. In the original publication the author
|
||||
used random sampled points weighted with \acf{RBF} to deform the mesh and
|
||||
defined three different criteria that can be calculated prior to using an
|
||||
evolutional optimization algorithm to asses the quality and potential of such
|
||||
optimization.
|
||||
Many modern industrial design processes require advanced optimization methods
|
||||
do to the increased complexity. These designs have to adhere to more and more
|
||||
degrees of freedom as methods refine and/or other methods are used. Examples for
|
||||
this are physical domains like aerodynamic (i.e. drag), fluid dynamics (i.e.
|
||||
throughput of liquid) -- where the complexity increases with the temporal and
|
||||
spatial resolution of the simulation -- or known hard algorithmic problems in
|
||||
informatics (i.e. layouting of circuit boards or stacking of 3D-objects).
|
||||
Moreover these are typically not static environments but requirements shift over
|
||||
time or from case to case.
|
||||
|
||||
Evolutional algorithms cope especially well with these problem domains while
|
||||
addressing all the issues at hand\cite{minai2006complex}. One of the main
|
||||
concerns in these algorithms is the formulation of the problems in terms of a
|
||||
genome and a fitness function. While one can typically use an arbitrary
|
||||
cost-function for the fitness-functions (i.e. amount of drag, amount of space,
|
||||
etc.), the translation of the problem-domain into a simple parametric
|
||||
representation can be challenging.
|
||||
|
||||
The quality of such a representation in biological evolution is called
|
||||
*evolvability*\cite{wagner1996complex} and is at the core of this thesis.
|
||||
However, there is no consensus on how *evolvability* is defined and the meaning
|
||||
varies from context to context\cite{richter2015evolvability}.
|
||||
|
||||
As we transfer the results of Richter et al.\cite{anrichterEvol} from using
|
||||
\acf{RBF} as a representation to manipulate a geometric mesh to the use of
|
||||
\acf{FFD} we will use the same definition for evolvability the original author
|
||||
used, namely *regularity*, *variability*, and *improvement potential*. We
|
||||
introduce these term in detail in Chapter \ref{sec:intro:rvi}.
|
||||
|
||||
In the original publication the author used random sampled points weighted with
|
||||
\acf{RBF} to deform the mesh and showed that the mentioned criteria of
|
||||
*regularity*, *variability*, and *improvement potential* correlate with the quality
|
||||
and potential of such optimization.
|
||||
|
||||
We will replicate the same setup on the same meshes but use \acf{FFD} instead of
|
||||
\acf{RBF} to create a deformation and evaluate if the evolution-criteria still
|
||||
work as a predictor given the different deformation scheme.
|
||||
\acf{RBF} to create a local deformation near the control points and evaluate if
|
||||
the evolution-criteria still work as a predictor given the different deformation
|
||||
scheme, as suspected in \cite{anrichterEvol}.
|
||||
|
||||
## Outline of this thesis
|
||||
|
||||
\improvement[inline]{Kapitel vorstellen, Inhalt? Ziel?}
|
||||
|
||||
# Background
|
||||
|
||||
## What is \acf{FFD}?
|
||||
\label{sec:intro:ffd}
|
||||
@ -150,6 +184,7 @@ optimization has one more advantage as you get bad solutions fast, which refine
|
||||
over time.
|
||||
|
||||
## Criteria for the evolvability of linear deformations
|
||||
\label{sec:intro:rvi}
|
||||
|
||||
### Variability
|
||||
|
||||
@ -286,7 +321,7 @@ To solve this we derive partially, like before:
|
||||
$$
|
||||
\begin{array}{rl}
|
||||
\displaystyle \frac{\partial Err_x}{\partial u} & p^{*}_x - \displaystyle \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot {c_{ijk}}_x \\
|
||||
= & \displaystyle - \sum_i \sum_j \sum_k N'_i(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot {c_{ijk}}_x
|
||||
= & \displaystyle - \sum_i \sum_j \sum_k N'_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot {c_{ijk}}_x
|
||||
\end{array}
|
||||
$$
|
||||
|
||||
@ -302,10 +337,17 @@ J(Err(u,v,w)) =
|
||||
\end{array}
|
||||
\right)
|
||||
$$
|
||||
|
||||
\unsure[inline]{Should I add an informal complete derivative?\newline
|
||||
Like leaving out Sums & $i,j,k$-Indices to make obvious what derivative belongs
|
||||
where in what case?}
|
||||
$$
|
||||
\scriptsize
|
||||
=
|
||||
\left(
|
||||
\begin{array}{ccc}
|
||||
- \displaystyle \sum_{i,j,k} N'_{i}(u) N_{j}(v) N_{k}(w) \cdot {c_{ijk}}_x &- \displaystyle \sum_{i,j,k} N_{i}(u) N'_{j}(v) N_{k}(w) \cdot {c_{ijk}}_x & - \displaystyle \sum_{i,j,k} N_{i}(u) N_{j}(v) N'_{k}(w) \cdot {c_{ijk}}_x \\
|
||||
- \displaystyle \sum_{i,j,k} N'_{i}(u) N_{j}(v) N_{k}(w) \cdot {c_{ijk}}_y &- \displaystyle \sum_{i,j,k} N_{i}(u) N'_{j}(v) N_{k}(w) \cdot {c_{ijk}}_y & - \displaystyle \sum_{i,j,k} N_{i}(u) N_{j}(v) N'_{k}(w) \cdot {c_{ijk}}_y \\
|
||||
- \displaystyle \sum_{i,j,k} N'_{i}(u) N_{j}(v) N_{k}(w) \cdot {c_{ijk}}_z &- \displaystyle \sum_{i,j,k} N_{i}(u) N'_{j}(v) N_{k}(w) \cdot {c_{ijk}}_z & - \displaystyle \sum_{i,j,k} N_{i}(u) N_{j}(v) N'_{k}(w) \cdot {c_{ijk}}_z
|
||||
\end{array}
|
||||
\right)
|
||||
$$
|
||||
|
||||
With the Gauss-Newton algorithm we iterate via the formula
|
||||
$$J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)$$
|
||||
@ -319,6 +361,9 @@ linear equations.
|
||||
- Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
||||
- => DM-FFD?
|
||||
|
||||
|
||||
# Scenarios for testing evolvability criteria using \acf{FFD}
|
||||
|
||||
## Test Scenario: 1D Function Approximation
|
||||
|
||||
### Optimierungszenario
|
||||
|
BIN
arbeit/ma.pdf
BIN
arbeit/ma.pdf
Binary file not shown.
@ -148,18 +148,60 @@ Unless otherwise noted the following holds:
|
||||
|
||||
\chapter{Introduction}\label{introduction}
|
||||
|
||||
In this Master Thesis we try to extend a previously proposed concept of
|
||||
predicting the evolvability of \acf{FFD} given a
|
||||
Deformation-Matrix\cite{anrichterEvol}. In the original publication the
|
||||
author used random sampled points weighted with \acf{RBF} to deform the
|
||||
mesh and defined three different criteria that can be calculated prior
|
||||
to using an evolutional optimization algorithm to asses the quality and
|
||||
potential of such optimization.
|
||||
\improvement[inline]{mehr Motivation, Ziel der Arbeit, Wieso das ganze?\newline
|
||||
Wieso untersuchen wir das überhaupt? \cmark \newline
|
||||
Aufbau der Arbeit? \xmark \newline
|
||||
Mehr Bilder}
|
||||
|
||||
Many modern industrial design processes require advanced optimization
|
||||
methods do to the increased complexity. These designs have to adhere to
|
||||
more and more degrees of freedom as methods refine and/or other methods
|
||||
are used. Examples for this are physical domains like aerodynamic
|
||||
(i.e.~drag), fluid dynamics (i.e.~throughput of liquid) -- where the
|
||||
complexity increases with the temporal and spatial resolution of the
|
||||
simulation -- or known hard algorithmic problems in informatics
|
||||
(i.e.~layouting of circuit boards or stacking of 3D-objects). Moreover
|
||||
these are typically not static environments but requirements shift over
|
||||
time or from case to case.
|
||||
|
||||
Evolutional algorithms cope especially well with these problem domains
|
||||
while addressing all the issues at hand\cite{minai2006complex}. One of
|
||||
the main concerns in these algorithms is the formulation of the problems
|
||||
in terms of a genome and a fitness function. While one can typically use
|
||||
an arbitrary cost-function for the fitness-functions (i.e.~amount of
|
||||
drag, amount of space, etc.), the translation of the problem-domain into
|
||||
a simple parametric representation can be challenging.
|
||||
|
||||
The quality of such a representation in biological evolution is called
|
||||
\emph{evolvability}\cite{wagner1996complex} and is at the core of this
|
||||
thesis. However, there is no consensus on how \emph{evolvability} is
|
||||
defined and the meaning varies from context to
|
||||
context\cite{richter2015evolvability}.
|
||||
|
||||
As we transfer the results of Richter et al.\cite{anrichterEvol} from
|
||||
using \acf{RBF} as a representation to manipulate a geometric mesh to
|
||||
the use of \acf{FFD} we will use the same definition for evolvability
|
||||
the original author used, namely \emph{regularity}, \emph{variability},
|
||||
and \emph{improvement potential}. We introduce these term in detail in
|
||||
Chapter \ref{sec:intro:rvi}.
|
||||
|
||||
In the original publication the author used random sampled points
|
||||
weighted with \acf{RBF} to deform the mesh and showed that the mentioned
|
||||
criteria of \emph{regularity}, \emph{variability}, and \emph{improvement
|
||||
potential} correlate with the quality and potential of such
|
||||
optimization.
|
||||
|
||||
We will replicate the same setup on the same meshes but use \acf{FFD}
|
||||
instead of \acf{RBF} to create a deformation and evaluate if the
|
||||
evolution-criteria still work as a predictor given the different
|
||||
deformation scheme.
|
||||
instead of \acf{RBF} to create a local deformation near the control
|
||||
points and evaluate if the evolution-criteria still work as a predictor
|
||||
given the different deformation scheme, as suspected in
|
||||
\cite{anrichterEvol}.
|
||||
|
||||
\section{Outline of this thesis}\label{outline-of-this-thesis}
|
||||
|
||||
\improvement[inline]{Kapitel vorstellen, Inhalt? Ziel?}
|
||||
|
||||
\chapter{Background}\label{background}
|
||||
|
||||
\section{\texorpdfstring{What is \acf{FFD}?}{What is ?}}\label{what-is}
|
||||
|
||||
@ -281,6 +323,8 @@ you get bad solutions fast, which refine over time.
|
||||
\section{Criteria for the evolvability of linear
|
||||
deformations}\label{criteria-for-the-evolvability-of-linear-deformations}
|
||||
|
||||
\label{sec:intro:rvi}
|
||||
|
||||
\subsection{Variability}\label{variability}
|
||||
|
||||
In \cite{anrichterEvol} variability is defined as
|
||||
@ -424,7 +468,7 @@ To solve this we derive partially, like before:
|
||||
\[
|
||||
\begin{array}{rl}
|
||||
\displaystyle \frac{\partial Err_x}{\partial u} & p^{*}_x - \displaystyle \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot {c_{ijk}}_x \\
|
||||
= & \displaystyle - \sum_i \sum_j \sum_k N'_i(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot {c_{ijk}}_x
|
||||
= & \displaystyle - \sum_i \sum_j \sum_k N'_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot {c_{ijk}}_x
|
||||
\end{array}
|
||||
\]
|
||||
|
||||
@ -440,12 +484,18 @@ J(Err(u,v,w)) =
|
||||
\frac{\partial Err_z}{\partial u} & \frac{\partial Err_z}{\partial v} & \frac{\partial Err_z}{\partial w}
|
||||
\end{array}
|
||||
\right)
|
||||
\] \[
|
||||
\scriptsize
|
||||
=
|
||||
\left(
|
||||
\begin{array}{ccc}
|
||||
- \displaystyle \sum_{i,j,k} N'_{i}(u) N_{j}(v) N_{k}(w) \cdot {c_{ijk}}_x &- \displaystyle \sum_{i,j,k} N_{i}(u) N'_{j}(v) N_{k}(w) \cdot {c_{ijk}}_x & - \displaystyle \sum_{i,j,k} N_{i}(u) N_{j}(v) N'_{k}(w) \cdot {c_{ijk}}_x \\
|
||||
- \displaystyle \sum_{i,j,k} N'_{i}(u) N_{j}(v) N_{k}(w) \cdot {c_{ijk}}_y &- \displaystyle \sum_{i,j,k} N_{i}(u) N'_{j}(v) N_{k}(w) \cdot {c_{ijk}}_y & - \displaystyle \sum_{i,j,k} N_{i}(u) N_{j}(v) N'_{k}(w) \cdot {c_{ijk}}_y \\
|
||||
- \displaystyle \sum_{i,j,k} N'_{i}(u) N_{j}(v) N_{k}(w) \cdot {c_{ijk}}_z &- \displaystyle \sum_{i,j,k} N_{i}(u) N'_{j}(v) N_{k}(w) \cdot {c_{ijk}}_z & - \displaystyle \sum_{i,j,k} N_{i}(u) N_{j}(v) N'_{k}(w) \cdot {c_{ijk}}_z
|
||||
\end{array}
|
||||
\right)
|
||||
\]
|
||||
|
||||
\unsure[inline]{Should I add an informal complete derivative?\newline
|
||||
Like leaving out Sums & $i,j,k$-Indices to make obvious what derivative belongs
|
||||
where in what case?}
|
||||
|
||||
With the Gauss-Newton algorithm we iterate via the formula
|
||||
\[J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)\]
|
||||
and use Cramers rule for inverting the small Jacobian and solving this
|
||||
@ -463,6 +513,10 @@ system of linear equations.
|
||||
=\textgreater{} DM-FFD?
|
||||
\end{itemize}
|
||||
|
||||
\chapter{\texorpdfstring{Scenarios for testing evolvability criteria
|
||||
using
|
||||
\acf{FFD}}{Scenarios for testing evolvability criteria using }}\label{scenarios-for-testing-evolvability-criteria-using}
|
||||
|
||||
\section{Test Scenario: 1D Function
|
||||
Approximation}\label{test-scenario-1d-function-approximation}
|
||||
|
||||
|
@ -131,25 +131,6 @@
|
||||
\newcommand{\myquote}[1]{\glqq{}#1\grqq{}} % richtige Anfuehrungszeichen: ,, Bla ''
|
||||
% \newcommand{\str}[1]{{\tt{}#1}} % einheitliche formatierung fuer zeichenketten
|
||||
|
||||
% ##### draft #####
|
||||
\newcommand{\ignore}[1]{}
|
||||
\newcommand\info[1]{\marginpar{\begin{center}#1\end{center}}}
|
||||
\newcommand\note{\marginpar{\begin{center}$\longleftarrow$\end{center}}}
|
||||
\newcommand\picmis[1]{$$\boxed{\mbox{\ttfamily picture #1}}$$}
|
||||
%Todo am Rand notieren
|
||||
\begin{comment}
|
||||
% DONE WITH \usepackage{todo}
|
||||
\newcommand{\todo}[1]{%
|
||||
\ensuremath{\bigstar}%
|
||||
\marginpar{%
|
||||
\begin{flushleft}%
|
||||
\vspace{-1.5\baselineskip}%
|
||||
{\small TODO\ \ensuremath{\bigstar}\\#1}%
|
||||
\end{flushleft}%
|
||||
}%
|
||||
}%
|
||||
\end{comment}
|
||||
|
||||
\newcommand\opdown[2]{\lower0.75em\hbox{$\stackrel{\displaystyle#1}{\scriptstyle#2}$}}
|
||||
\newcommand\toconv[2]{\;\lower0.5em\hbox{$\stackrel{\longrightarrow}{\scriptstyle#1\to#2}$}}
|
||||
\newcommand\wildcard[1]{\fbox{\ttfamily Platzhalter: #1}}
|
||||
@ -179,3 +160,6 @@
|
||||
\newcommandx{\info}[2][1=]{\todo[linecolor=OliveGreen,backgroundcolor=OliveGreen!25,bordercolor=OliveGreen,#1]{\textbf{Info:} #2}}
|
||||
\newcommandx{\improvement}[2][1=]{\todo[linecolor=violet,backgroundcolor=violet!25,bordercolor=violet,#1]{\textbf{Improvement:} #2}}
|
||||
\newcommandx{\thiswillnotshow}[2][1=]{\todo[disable,#1]{#2}}
|
||||
|
||||
\renewcommand\cmark{\textcolor{OliveGreen}{\ding{51}}}
|
||||
\renewcommand\xmark{\textcolor{Maroon}{\ding{55}}}
|
||||
|
@ -1,3 +1,4 @@
|
||||
\usepackage[dvipsnames]{xcolor}
|
||||
\usepackage{acronym} % acronym list and writing acronyms full length exactly once
|
||||
% \usepackage{amsfonts}
|
||||
\usepackage{amsmath} %\align
|
||||
@ -15,7 +16,7 @@
|
||||
\usepackage{color} %\colorbox
|
||||
\usepackage{dsfont} %\mathds
|
||||
\usepackage{draftwatermark}
|
||||
\SetWatermarkLightness{0.95} % default: 0.8
|
||||
\SetWatermarkLightness{0.9} % default: 0.8
|
||||
\usepackage{epigraph}
|
||||
% \usepackage{euler} % euler: uni, eucal: baake, ohne: standard
|
||||
\usepackage{eucal} % euler calligraphy
|
||||
@ -36,11 +37,11 @@
|
||||
\usepackage{mathtools}
|
||||
\usepackage{multirow}
|
||||
\usepackage{nicefrac}
|
||||
\usepackage[numbers,square,sort=none]{natbib}
|
||||
\newcommand*{\refname}{References}
|
||||
\usepackage[numbers,square,sort]{natbib}
|
||||
\usepackage{patchcmd}
|
||||
%\usepackage[draft]{pdfpages}
|
||||
\usepackage{pdfpages}
|
||||
\usepackage{pifont}
|
||||
%\usepackage{pst-all} % PSTricks-Grafikerstellung
|
||||
%\usepackage{pstricks}
|
||||
%\usepackage{qtree} % baum
|
||||
@ -62,7 +63,6 @@
|
||||
\usepackage{verbatim} % \begin{comment} \end{comment}
|
||||
\usepackage{wrapfig}
|
||||
% \usepackage{wasysym}
|
||||
\usepackage[pdftex,dvipsnames]{xcolor}
|
||||
\usepackage{xspace} % intelligent \makro_ whitespace
|
||||
\usepackage{xargs} % use more than one optional parameter in new commands
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user